maisvendoo |
|
Темы:
68
Сообщения:
1143
Участник с: 10 октября 2012
|
serkhay Стрелка секундная идет
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
serkhay |
|
Темы:
24
Сообщения:
304
Участник с: 06 июня 2012
|
maisvendooСоздаете рядом с rc.lua файл с именем, например, conky.lua, а в самом rc.lua пишете require ("conky") |
serkhay |
|
Темы:
24
Сообщения:
304
Участник с: 06 июня 2012
|
maisvendooА почему бы ее не обновлять раз в секунду, а не в 0.1 секунды?) Да я понимаю, это все красиво, но все эти красивости только процессор жрут, хотя вам наверное это не так важно) |
maisvendoo |
|
Темы:
68
Сообщения:
1143
Участник с: 10 октября 2012
|
serkhay Интервал обновления в обновления в 1 секунду сильно не уменьшает потребление ресурсов. Вернее вообще не уменьшает. serkhay Беда современной компьютерной индустрии, в частности игровой - ориентация на мощное железо, без оглядки на оптимизацию кода. Канеш оптимизация денег стоит, тем не менее можно накрутить такого что и intel core i7 почувствует :) serkhay Спасибо, сделал так P.S.: Ну вот, виджеты, сделаные на связке lua + conky заменены на соответствующие по функционалу awesome-виджеты. Теперь надо написать заметку о том как и что делалось поподробнее
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
maisvendoo |
|
Темы:
68
Сообщения:
1143
Участник с: 10 октября 2012
|
Awesome WM: анимированный виджет на рабочем столе: аналоговые часы Итак, из содержания топика вполне понятна следующая проблема, которую необходимо обсудить. Проблема состояла в том, что уж очень хотелось реализовать часики, успешно работавшие у меня ещё в Openbox-е, но не с помощью связки conky + lua, а используя лишь Lua и средства, предоставляемые самим Awesome. Как оказалось, задача вполне решаемая, тому есть многочисленные примеры Однако авторы примеров скромно отмалчиваются от подробностей реализации. Ссылки приведенные на ЛОРе, а так же проницательность serkhay помогли написать этот небольшой гайд. 1. Создаем wibox Нам необходим контейнер для виджетов, который спокойненько размещался бы на рабочем столе, не перекрывал и не сдвигал бы другие окна. С помощью serkhay удалось установить что для создания такого wibox необходитмо использовать модуль wibox, а не awful.wibox, как это делается при создании главной панели awesome. Достаточно такого кода для реализации задуманного2. Использование cairo в виджетах Для рисования в conky использовалась библиотека cairo, тот же подход необходимо было реализовать и тут, хотя бы для того чтобы быстро перенести уже имеющийся код часиков. Как оказалось, в Awe-вики довольно доходчиво и с примером объяснена методика скрещивания виджета с cairo. Для начала необходим специальный виджет
Этот виджет должен иметь две функции, как я понял они являюются функциями обратного вызова (callback) Первая, fit(widget, width, height) позволяет определить размеры виджета, в вики об этом как-то путанно написано, я сделал у себя так
Вторая, draw(widget, wibox, cr, width, height), выполняет собственно отрисовку часов
Обе callback-функции обязательно должны присутствовать. Собственно в функцию draw awesome передает
3. Размещаем виджет на экране Виджет добавляем в wibox, созданный нами заранее
4. "А почему они стоят на месте???!!!" А потому, что мы не сказали нашему WM с какой частотой обновлять изображение часов. Для периодического обновления виджета надо создать таймер. Методика, кстати подсмотрена в /usr/share/awesome/lib/awful/widget/textclock.lua
Связываем с ним вызов функции перерисовки wibox
Запускаем таймер
После добавления такого кода часы начнут тикать :) Заключение Полный исходник сабжа clock.lua Результат вот :) Успехов Вам! P.S.: Огромное спасибо serkhay за помощь при создании гайда :)
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
vadik |
|
Темы:
57
Сообщения:
5495
Участник с: 17 августа 2009
|
maisvendoo, сделайте в стартовом сообщении что-то типа оглавления (название+ссылка), чтоб ваши хаутушки не терялись среди обсуждений. |
maisvendoo |
|
Темы:
68
Сообщения:
1143
Участник с: 10 октября 2012
|
vadik Сделал, хорошая идея. Вообще слегка откорректирвал структуру треда
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
maisvendoo |
|
Темы:
68
Сообщения:
1143
Участник с: 10 октября 2012
|
Поскольку заметок прибавилось, вперемешку с обсуждением их, решено навести порядок в блоге. Пост про автозагрузку перенесен вниз, вместо него добавлено ОГЛАВЛЕНИЕ Список автозагрузки средствами Awesome Те кто пользуются Awesome WM наверняка знают о существующей в нем возможности быстрого перезапуска графической оболочки, при изменении настроек в rc.lua, без закрытия открытых в данный момент окон. Что и говорить, удобная фишка, особенно при наладке awesome и, особенно, для новичков. Возникает, однако проблема с приложениями стоящими в автозагрузке - если не принимать специальных мер, при перезапуске среды они будут продублированны, что может привести к разным непредсказуемым вещам, да и просто неприятно и неудобно. Выходит так из-за того, что автозагрузка в awesome реализована в том же самом скрипте rc.lua, который отправляется на выполнения при старте/рестарте WM. Гугление дает несколько вариантов решения данной проблемы, главный из которых - написание скрипта run_once.sh
который грепает вывод команды ps c целью поиска уже запущенного процесса и в случае нахождения оного не запускает новую копию. Выполняемая команда передается ему в качестве параметра. Какой недостаток в данном подходе? А если необходимо реализовать в автозапуске что-то подобное скриншоту три одинаковых терминала через такой run_once.sh уже не запустить, то есть скрипт надо существенно модифицировать. Поэтому было принято решение реализовать все средствами Lua прямо в скрипте rc.lua Для начала был создан файл ~/.config/awesome/autostart.lst такого вида
Это - команды, предназначенные для автозапуска. Далее, где-нибудь в начале скрипта rc.lua пишем такое
Теперь можно реализовать автозагрузку, например так
И, самое главное - действия при перезапуске awesome, у меня висящие на Mod4 + Ctrl + R
Теперь, чтобы добавить/убрать команду в список автозапуска достаточно отредактировать файл autostart.lst, не заботясь о действиях awesome по корректной обработке этих команд.
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
valera_cr |
|
Темы:
1
Сообщения:
418
Участник с: 12 января 2013
|
maisvendooПочему это? Попробовал - в rc.lua: awful.util.spawn_with_shell("run_once urxvt -e htop") awful.util.spawn_with_shell("run_once urxvt -e mc") awful.util.spawn_with_shell("run_once urxvt") Все три запускаются. |
maisvendoo |
|
Темы:
68
Сообщения:
1143
Участник с: 10 октября 2012
|
valera_cr У меня последний не стартует почему-то
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |