LINUX.ORG.RU

Избранные сообщения Kuzy

Эмулятор 21го века

Форум — Talks

https://blog.davetcode.co.uk/post/21st-century-emulator/

Затравка - каждая инструкция в отдельном Docker контейнере

 , , ,

vertexua
()

c++ шаблон zip-like итератора?

Форум — Development

В python есть крайне полезные функции zip, enumerate, range. Мне нужно что-то подобное для cpp/cuda (c++17). Если c range и enumerate более менее понятно, то как реализовать zip не соображу. Семантически это должно быть variadic template

template<typename t, typename... ts>
class zip : zip<ts...>{
	zip(t arg, ts... args);
	struct iterator;
	begin() -> iterator;
	end()   -> iterator;
};
Где итератор возвращает кортеж ссылок на элементы что с контейнерами можно было работать как:
for(auto [x,y,z] : zip(xs,ys,zs))
Рекурсивное наследование должно быть ограничено тривиальным случаем одного аргумента. Но, кажется, я думаю не в правильную сторону, в частности, не соображу как рекурсивно вывести тип возвращаемых итератором кортежей:
using ret_type = tuple<decltype(begin(declval<t>())), decltype(???)>

$cast AntonI, может у вас кто такое делал?

 , ,

thunar
()

NixOS + i3 + KDE - plasma - akonadi

Галерея — Скриншоты

Вот, что получается, если некоторое время потратить на настройку nixos. Мне нравится KDE, я люблю тайлинг, и поэтому решил сделать вот такую смесь. Получилось по мнению некоторых «тяжело», по мнению других «неудобно» (жду вашего мнения), но тем не менее меня всё устраивает, а благодаря NixOS + home-manager одна и та же конфигурация оказывается на всех моих машинах автоматически, каждый день в 19:00 (Да, совсем вся, включая приложения, сервисы, темы, расширения и даже список доступных хостов в Dolphin и SSH).

( читать дальше... )

>>> Просмотр (1920x1080, 320 Kb)

 , , ,

balsoft
()

luastatus v0.5.0

Новости — Open Source
Группа Open Source

Вышла новая версия luastatus, универсального генератора данных для панелей состояния, поддерживающего i3bar, dwm, lemonbar и др. Программа написана на C и распространяется под лицензией GNU LGPL v3.

Большинство генераторов данных для панелей состояния тайловых WM либо обновляют информацию по таймеру (например, conky), либо требуют сигнал для перерисовки (например, i3status). Панели же в составе окружений рабочего стола, как правило, обновляют информацию мгновенно и автоматически, как и luastatus.

luastatus позволяет пользователю определять логику обработки данных от плагинов, написанных на Си и поставляющихся с luastatus, с помощью виджетов, написанных на Lua. Также виджеты могут обрабатывать события, такие как щелчки по панели состояния.

( читать дальше... )

>>> Страница проекта на GitHub

>>> Страница релиза

 , , , ,

shdown
()

Релиз Ventoy 1.0.13

Новости — Open Source
Релиз Ventoy 1.0.13
Группа Open Source

Ventoy — это инструмент с открытым исходным кодом для создания загрузочного USB-накопителя для ISO-файлов. С ним вам не нужно форматировать диск снова и снова, вам просто нужно скопировать iso файл на USB диск и загрузить его. Вы можете скопировать несколько iso-файлов и выбрать необходимый в меню загрузки. Поддерживаются и Legacy BIOS, и UEFI режимы. Протестировано 260+ ISO-файлов (список).

В этом релизе:

  • Добавлена поддержка образов WinPE типа «N-в-одном»;

  • Добавлен плагин «menu_alias», позволяющий задать псевдоним для конкретного ISO-файла;

  • В плагине «theme» добавлена возможность задания режима дисплея;

  • Добавлен вызов меню загрузки с локального диска по клавише F4;

  • Добавлен режим отладки по клавише F5;

  • Обход ограничений, присущих некоторым Legacy BIOS;

  • Различные оптимизации и исправления ошибок, расширен список поддерживаемых ISO-файлов.

>>> Подробности

 , , ,

cocucka
()

C++ сумма элементов двухмерного массива

Форум — Development

Такой вопрос. Можно ли как-нибудь красиво и по-функциональному (без циклов) посчитать сумму элементов двумерного вектора? (На C++)

Для одномерного все просто:

s = std::accumulate(v.begin(), v.end(), 0);

А вот с двумерным я не разобрался/не нагуглил

 

yuscompactal
()

Реальные вопросы на собеседовании

Форум — Development

Задавайте только реальные вопросы с собеседования. Кто хочет может отвечать на эти вопросы, задавший вопрос должен ответить зачтено или нет и провести разбор ответа, указать на ошибки и недостатки в ответе. Если зачета никто не получил в течении недели, автор вопроса сам дает ответ. Остальные естественно тоже могут участвовать в обсуждениях.

 

Lzzz
()

Про статическую типизацию и безопасный доступ к памяти

Форум — Development

 , , ,

RazrFalcon
()

Переехал на кучу утилит переписаных на Rust

Форум — Talks

Тег «угадай автора по заголовку».

Q: Зачем?

A: Ради эксперимента, повысится комфорт пользования терминалом или нет.

Q: Причем тут Rust?

A: Ни при чем, но из-за нативности и отсутствия GC на нем толпа людей побежала переписывать что ни попадя. С таким же успехом можно было бы и npm install, но тормозило бы. Ближе opam install или go get

Теперь мой терминал по истине свистит и пердит. Даю список если кому надо.

  • alacritty - GPU ускоренный терминал.
  • alias cat=bat- cat с хорошей подсветкой синтаксиса и нумерацией строк и пейджером.
  • broot - навигатор по каталогам, который одновременно показывает дерево, но адекватно себя ведет с громадными каталогами, показывая их по чуть-чуть.
  • dust - утилита для исследования места занимаемого каталогами, сортирует деревья файлов начиная с самых больших каталогов.
  • alias ls="exa -l --group-directories-first" ls с хорошими дефолтами, tree встроено.
  • rip Утилита для удаления файлов с разными удобными фичами и восстановлением
  • hors "How do I parse float in javascript?" - находит короткий ответ в интернетах и отвечает. Чуть лучше работает чем оригинал - howdoi.
  • mdcat - cat для Markdown, для отображения удобочитаемой формы документа. Ссылки делает сносками.
  • alias grep=rg - очень быстрый и удобный grep
  • starship - shell command prompt, показывает кучу полезной информации в зависимости от контекста, например git branch если в репозитории, версии софта и ЯП если в каталогах с сорцами, hostname если зайти по ssh.
  • tokei - сборщик статистики по ЯП и строкам кода в деревьях исходников.
  • hyperfine - бенчмарк утилита, time на стероидах.
  • tldr- сокращенная версия man, показывает как чем пользоваться в примерах, а не выдавая полную справку. Страницы поддерживаются сообществом для громадного количества утилит. Изначальный проект - https://tldr.sh/
  • topgrade - универсальная утилита обновления. При запуске пытается обновить все что видит - системные пакеты, vim пакеты и так далее.
  • runiq - быстрый sort | uniq с разными алгоритмами внутри.
  • fd - быстрый и удобный find, удобно чтобы не вспоминать заковыристые ключи
  • fselect - поисковик файлов с SQL-like языком запросов
  • sd - как sed, только интуитивный
  • i3status-rs - Сразу i3status+i3blocks. Плюс батарейки к i3blocks, которые как я понял автор решил убрать.
  • onefetch - Вроде neofetch, но для сорцов. Просто запустите эту штуку с корня любого git репа, клонированого локально
  • wasmtime - JIT runtime для WASI стандарта. Пускалка WebAssembly приложений.
  • scriptisto - «shebang-интерпретатор» для компилируемых языков, прозрачно собирает и кеширует нативные сборки кода

Что не зашло совсем

Все вышеперечисленое ставится через cargo install <package_name> (кроме alacritty), название смотрите на страницах. Сам cargo и Rust ставятся через

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

P.S. Призываю остальных взять ЯП вашей секты и поставить такой эксперимент и отписаться. Да-да, расскажите как вы пользовались ls на Java. Пользователей emacs прошу не беспокоить

 , , ,

vertexua
()

Посоветуйте, что почитать / посмотреть по нейросеткам

Форум — Development

А конкретнее - хочу понять, как распознавать изображения и «понимать», что на них есть.

Я в этом полный никто, поэтому хочется что-то без заумных высказываний, понять которые можно только имея какой-то багаж знаний в этой области.

И да, хочется без привязки к python и TensorFlow, потому что писать буду, вероятей всего, не на них, а на всеми-не-любимой java и Deeplearning4J.

 deeplearning4j, image recognition, , ,

bvn13
()

GLSL демка/игра (играть онлайн)

Форум — Games

Играть тут https://danilw.github.io/Castle-game/ccgame.html

Видео https://youtu.be/lNXTFvTDOAo

исходники https://github.com/danilw/Castle-game

бинарники linux(gcc) linux(clang) Windows(VS2017)
для линукса запускайте так
LD_LIBRARY_PATH=. ./ccgame

доделал таки, используется box2d для физики остальное на GLSL

 , ,

missxu
()

Описание алгоритма генерации 2d теней на GLSL

Форум — Development

может кому интересно будет, коротко опишу

описываю то что использовалось в этой демке GLSL демка/игра (играть онлайн)

Что в итоге:
1. генерация теней для «любого количества объектов» от 1 источника света имеет одинаковую нагрузку (неважно тени для 1 или 10000 объектов строим)
2. количество источников света ограничено высотой экрана(читай ниже про ограничения) (чем больше источников света те медленнее)

Реальное применение и нагрузка на GPU:
при 1-20 источниках света нагрузка шейдера 10-20% от мощности GPU(к примеру нагрузка блума+FXAA 30%)
такая нагрузка практически не заметна в любой игре и никак не влияет на производительность прочих шейдеров
на gt750 я создавал 200 источников света и ФПС падал до 30 со 100% нагрузкой

Сразу проблемы и ограничения
1. точность расчетов фреймбуферов, баги/ограничения/оптимизации драйверов, по прежнему в Nvidia видеокартах существует баг «неполной генерации фреймбуфера» из за чего многие шейдеры работают неправильно (он есть и в этом шейдере но не критичен(из за особенностей алгоритма))
два года назад этот алгоритм построения теней не работал на половине видеокарт
2. из за цикла отрисовки света, чем больше источников света тем медленнее
3. так как используется карта объектов в виде «кадра»(определенного размера), то и тени можно построить только для объектов на этом кадре(к примеру тени генерируемые на CPU темже box2d будут видны тени объектов за экраном, в случае с шейдером будет только кусок градиента освещения лампы вне экрана но теней не будет)
4. тени от мелких объектов(меньше шага) будут неправильными, для мелких объектов надо строить полноценную SDF карту, при sdf равном размеру объекта не выйдет ничего

SDF- это simple distance field, если экран весь черного цвета(0) то объекты на экране будут градиентом от 0 до 1(белого) градиент по форме объекта вот так https://www.shadertoy.com/view/lsKfDh (нажмите левую кнопку мыши увидите SDF)

Описание алгоритма:
код для примера https://www.shadertoy.com/view/lsyBzw
0. Кто не знает как работают шейдеры- код «шейдера» запускается на каждом пикселе одновременно для всех пикселей на экране(для размера фреймфуфера), входные данные для каждого пикселя это значения из uniform(передаваемые вашей программой(там разреение экрана/текстуры и что угодно что пошлете)) и номер текущего пикселя (x,y)(fragcoord на shadertoy), результат работы шейдера- цвет(4 цифры RGBA) текущего пикселя для которого он был запущен
1. объекты рисуются в BufB, по дефолту размер объекта чуть больше его размера, если уменьшить чтоб 1:1 было то скорость поворота теней от не круглых объектов будет не равномерной(но это можно если нужно)
2. в BufA в цикле(функция MarchShadow) составляется «карта теней» для каждого источника света, номер источника света=номеру пикселя y в bufA
все «шейдеры» на первом по высоте пикселе запустят построение карты для первого источника света, на втором для второго и тд
каждый шейдер по ширине запустит «лучь» в направление от своего пикселя

опишу на примере
размер буфера 1920*1080(экрана)
запуск шейдеров для y=0, x=(с)0(по)1920 это все шейдеры по 1 строке пикселей на экране
Важно понимать-Каждый пиксель(программа шейдер на пикселе) запускает ОДИН лучь в одну сторону он не кастует лучи во все стороны по кругу(не запутайтесь)
по кругу лучи идут суммарно со всех пикселей(шейдеров) на строке y=0 x=0->1920

1. берется угол текущего пикселя vec2 dir = vec2(cos(a), sin(a));
2. функции MarchShadow(light.origin, dir); передается light.origin- положение источника света(на экране 100,100 к примеру), dir-угол
3. MarchShadow в цикле берет float ds = Scene(dir * d - orig); Scene() возврящает значение красного канала буфера BufB для координаты (dir * d - orig)
в начале цикла d=0, тоесть первая точка «луча света»=позиции источника света light.origin
4. следующая координата d+=значению прошлого шага
и пока шаг>0(не уперлись в объект, шагать некуда) продолжаем цикл

как это работает на практике
в BufB значение красного канала по умолчанию 0.45 значения объектов это угасание канала до 0(градиент)
для 0 итерации цикла в MarchShadow
допустим у нас light.origin в позиции где нет объектов
функция Scene возвращает return texture(iChannel1,1.-uv).r/30.;
это 0,45/30=.01500
d += .01500;(d было 0)
для 1 итерации
d определяет величину следующего шага для взятия значения с текстуры объектов
у нас 1920 пикселей ширина экрана, шаг .01500, это 1920*.01500=28.80000 пикселей
это фактически минимальный размер объекта в текущем варианте когда SDF чуть больше или равен размеру объекта
также так как у меня MAX_STEPS=68 то это .01500*68=1.02000
1920*1.02000=1958.40000 это больше чем размер экрана, такого шага хватает чтоб охватить весь экран
можно сделать размер шага меньше поставив в строке 30 BufB вместо /30. деление на 50
размер шага станет 0,5/50=.01000 это 1920*.01000=19.20000 умножить на 68 щагов =1305.60000 этого не хватит на веь экран и нарисуется темный круг(где лучь закончится) в таком радиусе от источника света, поставьте сами убедитесь

если первый шаг был в точке (100,100) пикселей(координата orig), то этот будет в точке (100+28.80000*(уголX),100+28.80000*(уголY)) (угол=dir)
и функция Scene() вернет значение пикселя по этой новой координате
если объект есть то значение будет около нуля(так как градиент) и оно сравниться с if(ds < EPS) и выйдет из функции считая что это конец луча(ударились в объект)
для 2 итерации цикла
d будет .01500(с 0 итерации)+.01500(с 1)=.03000 и следущая точка (100+(1920*.03000)*(dirX),100+(1920*.03000)*(dirY))
и так далее

еще более наглядно смотрите эту картинку https://i.imgur.com/RvaJ6Cr.png
ds(зеленым цветом на картинке)- величина следущего шага, это значения пикселя в BufB по координатам dir * d - orig
где dir(фиолетовый)- угол
d(бирюзовый)- значение текущего шага
orig(красный)- координата точки света
желтым направление хода луча

Дальше в буфере Image строятся тени функцией MixLights, тень банально накручивается по кругу с уменьшением яркости тени в зависимости от расстояния
Тень в буфере bufA выглядит так https://i.imgur.com/awoqYyI.png (тут пять источников света и пара объектов, высота фреймбуфера 5 пикселей) https://i.imgur.com/fUYwgNt.png (помоему сотня источников света и куча объектов,высота=количеству источников света)

Зачем же нужен качественный SDF- потому что идет d += ds; и имея качественный(больше размера объекта в разы) градиент-чем ближе к объекту тем величина шага будет уменьшаться что повышает точность тени и формы объекта
если SDF отсутствует(SDF равен форме объекта тоесть сразу 0 без градиента) тоо будет так https://youtu.be/386lNQABEVM для объектов круглой формы проблемы такой не будет(только размер кругов должен быть больше размера шага)
шаг будет всегда одинаковый поэтому он «проскакивает» положение объекта темболее треугольной формы из за этого тени прыгают
если сделаь шаг меньше(начиная с 18 секунды видео) прыгать станет меньше но количества шагов не хватит на весь экран, а увеличивать количество шагов- это значит нагрузка возрастет в разы
у меня размер SDF чуть больше размера объекта вот так выглядит https://i.imgur.com/53pWq3H.png

в чем суть и «фишки»- генерация всех теней от 1 источника света занимает количество шейдеров равное (ширине экрана, 1 пиксель высоты) что в тыщи раз быстрее в сравнении с «неправильными» 2д-тенями шейдерами(где генерируется «тень» в каждый пиксель)

ссылки используемого https://gist.github.com/mattdesl/5286905 описание алгоритма на английском, реализация на shadertoy через SDF https://www.shadertoy.com/view/XsK3RR

Очевидные оптимизации- помимо того что для статических объектов можно строить идеальный SDF,только для динамических нужно маленькие формы
в Opengl3+ есть возможность через блум улучшать карту объектов как тут к примеру написали http://prideout.net/archive/bloom/#Sneaky
в OpenglES и webgl2 все очень ограничено, пишите шейдеры для всего как говориться в оффдоке GLES (без серьезных потерь производительности никак)

 

missxu
()

Что с вами не так?

Форум — Talks

Кто-то может рассказать с чего всё началось?

https://image.ibb.co/k742qG/0.jpg

 ,

int64
()

GLSL игра без текстур

Форум — Games

сделал небольшую «демку»(игрой сложно назвать) видео демонстрация https://youtu.be/lVCIEaFEMO4
в живую пробовать https://danilw.github.io/cputests/wasm/sgame/normal/sgame.html
лучшее качество шума(пять итераций вместо трех) https://danilw.github.io/cputests/wasm/sgame/best/sgame.html
на виндовсе могут быть баги в прошлой ссылке, пофикшено для виндовс юзеров тут https://danilw.github.io/cputests/wasm/sgame/best_wfix/sgame.html

исходники https://github.com/danilw/cputests

управление F на весь экран, WASD движения, ПРОБЕЛ отклеиться от планеты, 1/2 или прокрутка мыши масштаб(во время паузы можно сильнее масштабировать), левая/правая кнопка мыши атака, R сбросить масштабирование, P пауза

описание простая игра работает на С++ или wasm не используются текстуры
без зависимостей (glut glew ничего больше) 2к строк на С++ и столькоже на GLSL (оригинальный свой исходник glsl опубликую через неделю от сегодня)

Производительость не на «лучшем» качестве(первая ссылка) дает 60ФПС почти всегда на всех 2-3 летних картах в виндовсе проседания ФПС до двух раз по сравнению с Линуксом(это чисто из за отсутствия врапера в брауере в линуксе)

проверено на Нвидии на Вин/Лин работает

 , , ,

missxu
()

«sandbox» для объекта

Форум — Development

Можно ли в С++ объект заставить использовать только отведённую под него область памяти, чтобы кроме него в эту память никто не мог писать, чтобы потом можно было этот объект скопировать/загрузить обратно вместе со всеми его потрохами (включая содержимое областей памяти, выделенных по указателям)?

 

wstorm
()

Релиз alpha-версии консольного vk

Галерея — Скриншоты

vk-cli - консольный клиент (ncurses) для социальной сети vk.com, написан полностью на D. Уже есть в AUR, .deb в процессе, линк на github.

( читать дальше... )

>>> Просмотр (1920x1080, 1618 Kb)

 ,

HaCk3D
()

XMonad и dzen2 очень затюнены :)

Галерея — Скриншоты

Не нашел нормальной панели для х-монады, в итоге взял дзен2 в качестве бекэнда для рендеренга (по ходу дела нашел 2 бага, пофиксил их но похоже его никто не поддерживает, уже больше года висит PR), добавил самописных виджетов. На первом робочем столе флоутинг лейаут для скайпа и прочих мессанджеров. Все иконки из шрифтов и реагируют на клики. На скрине емакс с частью конфига х-монады. Железяка макбук-про-ретина.

>>> Просмотр (2560x1600, 595 Kb)

 , , ,

pasl
()

R и с чем это есть

Форум — Science & Engineering

Здравствуйте, уважаемые пользователи ЛОР! Очень нужен ваш совет. Я сам занимаюсь психологией и у нас в ходу статистика. Некоторые мои прошаренные коллеги используют R для анализа моделей в исследованиях. Собственно, мне стало тоже очень интересно как я могу использовать этот инструмент. Однако ни одного прошаренного товарища, разбирающегося в R у меня нет. Поэтому вопрос к вам - посоветуйте пожалуйста литературу, которая могла бы мне помочь в изучении, учитывая, что я совершенно новичок в этом. Заранее большое спасибо за любые советы!

 ,

kirich
()

Я познаю мир

Форум — Science & Engineering

В этом треде мы помогаем лоровцам получше понять и разобраться во всяких интересных математических концепциях. Кто-то до сих пор не понимает почему на ноль делить таки нельзя; кому-то нравятся аналогии «на пальцах» вида детерминант — ориентированный объём, ковектор — (n-1)-мерная плоскость; кому-то будет интересно узнать, что из алгебраической топологии, интеграл это всего-навсего произведение цепи на коцепь. А кто-то до сих пор не знает что такое тензор; возможно, не всем известно, что механику, электродинамику, теорию относительности и квантовую теорию поля можно локально вывести из наикрасивейшего лагранжева формализма; зачем нужны алгебры Ли; что такое ковариантная производная; в чём отличии гомологий от гомотопий, ну и так далее.

Заметьте, это не тред ответов на вопросы вида «почему небо голубое» — за этим идите в гугл; это не тред выполнения за вас домашних заданий — решайте сами; это не тред споров с фриками — игнорируйте их; это тред добра и просвещения. Однако в идеале вы уже должны иметь представление о математике и физике хотя бы на уровне первого-второго курса. Здесь так же можно просить и рекомендовать литературу, можно посылать в английскую википедию, можно и нужно объяснять как можно проще и доступнее (пускай и совсем неформально). Главное, чтобы у зашедшего лоровца появился интерес и желание учиться.

 , ,

mix_mix
()

Red Flat Awesome

Галерея — Скриншоты

Примерно год назад решил попробовать awesome. Хотелось чего-то максимально кастомизируемого, но более монолитного и системонезависимого. Данный wm показался интересным в этом плане, так что вооружившись напильником попытался сделать на его основе годное, согласно своим представлениям, окружение.

Еще скриншоты: традиционный с окнами[1] и все остальные[2][3][4][5][6][7].

На панели можно увидеть

  • Модифицированный taglist на самописных виджетах.
  • Набор индикаторов: иконка меню и оповещалка об обновлениях в одном, раскладка клавиатуры, регулятор громкости, почта, кастомный layoutbox. На громкости висит простенький виджет для моего любимого exaile[2], layoutbox умеет меню выбора режима тайлинга[2].
  • Сильно перепиленный tasklist[4][5]. Приложения обозначаются трехбуквенными алиасами, окна одного класса группируются в один значок. При наведении подсказка с полным именем или списком группы, по правой кнопке менюшка управления окном.
  • Специальный виджет для минитрея, точками обозначено количество приложений в трее. По клику/хоткею является собственно сам минитрей.
  • Индикаторы ресурсов - выдрал код из vicious и прикрутил свои визуалы. Была задумка сделать нескучные всплывающие виджеты с системной инфой, как раньше было у меня в доке, но энтузиазм закончился уже на первом, показывающем топ процессов[3]. Даже его не допилил до конца, память отображает криво.
  • Часы.

Виджеты на рабочем столе - перенес свои луа скрипты от коньков на базу awesome. Тут нет готовых датчиков, но на помощь снова приходит vicious. В целом средствами осома такие штуки пилить даже удобнее, ибо тру модульность и интерактивность. Зависимые от сети вещи подключены через модификацию asyncshell. Может быть имело смысл все через него пускать, но поздновато осознал насколько это нужная и полезная штука, лень переделывать.

Для пущего уюта установил uselessgap тайлинг от Lain. Сделал активные грани экрана. Немного переписал awful.menu, добавив автоскрытие, возможность вставлять неиндексируемые элементы(заголовки, разделители), автоматическую расстановку хоткеев и еще по мелочи[2][4]. На базе menubar запилил запускалку приложений[3] в стиле synapse, очень нравится такой визуал. Сильно скучал по классическому альттабу, даже накостылял кое-что, но потом некто Joren Heit выкатил няшный Familiar Alt Tab. Скрестив его и свои наработки получил такую переключалку[5][6]. Адским костылем с помощью asyncshell и rsvg-convert прикрутил адекватное масштабирование векторных иконок, заодно добавив смену цвета на лету. Сделал подсказку по хоткеям[7], как сами знаете где, с интерактивной подсветкой (пока без модификаторов).

Многое еще нужно допиливать, но надежда завершить все это и нормально оформить изрядно подтаяла за прошедшее время, так что решил вбросить то что есть, в сыром виде. Все скрипты можно посмотреть здесь. Пользуясь случаем, хочу поблагодарить unlog1c за его конфиги, некоторые вещи откровенно позаимствовал оттуда.

Awesome 3.5.6, compton, тема gtk - Boje, иконки ACYL, шрифты play и prototype.

>>> Просмотр (1920x1080, 123 Kb)

 ,

Worron
()