Awesome (кто-нибудь использует?)
Модератор: Модераторы разделов
-
- Сообщения: 390
- ОС: gentoo
Re: Awesome
Так вы же сами уже нагуглили ответ. Сменить версию xkbcomp с 1.2.4 на, скажем, 1.2.3.
-
- Сообщения: 93
- ОС: Ubuntu
Re: Awesome
В том-то и дело, что этот пакет в Убунту не сам по себе, а входит в состав пакета x11-xkb-utils. Я пробовал его установить от 12.04 (поскольку там у меня все работало). Установить установил, но нарвался на конфликты с зависимостями, плюс проблему не решил. Даже не смог проверить какой там в результате xkbcomp у меня стал, поскольку xkbcomp -v или чего-то похожего в опциях не было.
-
- Сообщения: 93
- ОС: Ubuntu
Re: Awesome
Еще вопрос. Останавливаю компьютер командой pm-hibernate или pm-suspend (выполняется от рута). Как повесить выполнение данной команды на сочетание клавиш, например mod4 + F10?
-
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: Awesome
Точно так же как и любой другой хоткей. Просто pm-suspend нужно запускать через sudo без пароля, предварительно настроив последний.
Код: Выделить всё
awful.key({ modkey, }, "F10", function () awful.util.spawn("sudo pm-suspend") end),
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
-
- Сообщения: 5
- ОС: Debian GNU/Linux testing
Re: Awesome
Moses писал(а): ↑28.07.2011 20:17Продолжаю монолог.
Понял, что проблема только с графическими виджетами. С текстовыми проблем нет. Ну да бог с ними, с графическими. Но у текстовых есть один досадный недостаток — если количество знаков отображаемой ими информации меняется, то один край строки виджетов начинает скакать туда-сюда. Есть ли способ задать постоянную ширину виджета? Пробовал как в графических использовать :set_width(), но не проканало.
У меня сделано так:
Код: Выделить всё
-- CPU widget
cpuwidget = widget({type = "textbox"})
cpuwidget.width = 40
vicious.register(cpuwidget, vicious.widgets.cpu,
function (widget, args)
local s = "☢"
local len = string.len(args[1])
if len == 1 then
s = s .. " " .. args[1]
elseif len == 2 then
s = s .. " " .. args[1]
elseif len >= 3 then
s = s .. " FL"
else
s = s .. " ??"
end
return s .. "%"
end)
Т.е. для отображения процентов выделено два знака, в случае 100 пишется FL (чтоб съэкономить место). cpuwidget.width = 40 - подбирал. Ничего не прыгает.
Спасибо сказали:
-
- Сообщения: 390
- ОС: gentoo
Re: Awesome
Вопрос ответ на который отрицателен для Lua в целом, но все же:
Есть ли способ обрабатывать асинхронные обратные вызовы, например для событий pulseaudio? В чистом Lua нельзя — для этого нужен отдельный поток, который будет использовать lua_State, который может быть изменен во время этого главным потоком.
Собственно, хочу чтобы виджет громкости в wibox обновлялся не раз в пару секунд, а по событию. Ну и виджеты громкости отдельных приложений (sink_inputs для pulseaudio). Может у awesome есть C API, позволяющее этого добиться (я не разбирался пока когда и как awesome вызывает Lua)?
Иначе придется сделать отдельный демон, взаимодействующий с awesome через dbus. Интересно, кстати, как реализована обработка dbus событий, это же что-то похожее на то, что мне нужно.
Есть ли способ обрабатывать асинхронные обратные вызовы, например для событий pulseaudio? В чистом Lua нельзя — для этого нужен отдельный поток, который будет использовать lua_State, который может быть изменен во время этого главным потоком.
Собственно, хочу чтобы виджет громкости в wibox обновлялся не раз в пару секунд, а по событию. Ну и виджеты громкости отдельных приложений (sink_inputs для pulseaudio). Может у awesome есть C API, позволяющее этого добиться (я не разбирался пока когда и как awesome вызывает Lua)?
Иначе придется сделать отдельный демон, взаимодействующий с awesome через dbus. Интересно, кстати, как реализована обработка dbus событий, это же что-то похожее на то, что мне нужно.
-
- Сообщения: 5
- ОС: Debian GNU/Linux testing
Re: Awesome
Посмотрите как реализован индикатор раскладки. В вике есть код. Там как раз используется dbus. Событие отправляет kbdd. http://awesome.naquadah.org/wiki/Keyboard_layouts_with_kbdd
dbus, думаю, будет оптимальный вариант.
dbus, думаю, будет оптимальный вариант.
-
- Сообщения: 390
- ОС: gentoo
Re: Awesome
Я видел его код до этого, спасибо. На сколько я понимаю их исходников, awesome слушает только system и session шины, а pulseaudio имеет встроенный dbus сервер.
Поэтому в данном случае кроме индикатора надо написать собственно отправителя. Назвал pulsecron по аналогии с используемым уже мной mpdcron — который постоянно подключен к pulseaudio и по событиям вызывает команды, например, awesome-client. Еще сделал C библиотеку для получения/установки громкости, а то парсить вывод pacmd мне кажется более громоздким вариантом.
Теперь есть индикатор общей громкости и отдельных указанных приложений.
Отсюда следует новый вопрос. Пока я создаю при запуске определенный набор виджетов с громкостью приложений, и просто делаю их пустыми, когда нет источника звука.
Как динамически уничтожать и создавать виджеты и помещать их в wibox?
На таблицу в конфиге wibox[s].widgets = {...} почему-то не оказывает никакого воздействия table.remove.
Поэтому в данном случае кроме индикатора надо написать собственно отправителя. Назвал pulsecron по аналогии с используемым уже мной mpdcron — который постоянно подключен к pulseaudio и по событиям вызывает команды, например, awesome-client. Еще сделал C библиотеку для получения/установки громкости, а то парсить вывод pacmd мне кажется более громоздким вариантом.
Теперь есть индикатор общей громкости и отдельных указанных приложений.
Отсюда следует новый вопрос. Пока я создаю при запуске определенный набор виджетов с громкостью приложений, и просто делаю их пустыми, когда нет источника звука.
Как динамически уничтожать и создавать виджеты и помещать их в wibox?
На таблицу в конфиге wibox[s].widgets = {...} почему-то не оказывает никакого воздействия table.remove.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Сообщения: 5
- ОС: Debian GNU/Linux testing
Re: Awesome
Не пользуюсь пульсой, не в курсе.
На счет создания не знаю, но там, похоже, и со скрытием не все глядко. Есть функция wibox:set_widget(), но она на моей версии wm так и не заработала, похоже что пранируется в более новых версиях awesome чем те, что сейчас в debian.
Может сдесь найдете для себя ответы: http://www.mail-archive.com/awesome-devel@...g/msg06710.html
Я в awesome недавно, потому могу ошибаться или чего то не знать, лучше перепроверьте
-
- Сообщения: 147
- ОС: Windows,Linux,BSD
Re: Awesome
Как настроить количество мозаик в тэге ? К примеру мне нужно 4 равных по размеру мозаики(и не более) на определенном тэге. Это возможно ? Если да, то можно ссылку на мануал как это все делается ?
-
- Сообщения: 390
- ОС: gentoo
Re: Awesome
Это возможно. shifty, например, создает tag.property "max_clients" и если создается max_clients+1 клиент, то он помещается в новый созданный тег. Но это shifty — он создает теги динамически. По умолчанию, если создается клиент (в вашем случае №5), то он помечается всеми текущими тегами. Это делает функция awful.tag.withcurrent.
Мне кажется, вам надо в общих чертах:
Убрать обратный вызов withcurrent сигнала "manage"
Код: Выделить всё
capi.client.remove_signal("manage", awful.tag.withcurrent)
Добавить вместо него свой callback. Схематично такой (см. withcurrent):
Код: Выделить всё
capi.client.add_signal("manage", function(c, startup)
if startup ~= true and c.sticky == false then
if #c:tags() == 0 then
ct = selectedlist(c.screen)
key = table.hasitem(ct, ваш_тег)
if key ~= nil and #ваш_тег:clients() >= 4 then
-- не метить клиент этим тегом
table.remove(ct, key)
-- если после этого ct пуста, то надо бы
-- на месте этого комментария
-- поместить в нее какой-нибудь тег
end
c:tags(ct)
end
end
end)
Выбрать для тега fair layout.
Не утверждаю, что это наиболее оптимальный вариант. Но, мне кажется, должно работать.
-
- Сообщения: 390
- ОС: gentoo
Re: Awesome
Проверил — в 3.4.13 работает переменная_виджета.visible = false. Точно, спасибо, так проще чем image = nil.
table.remove не работает на wibox.widgets на сколько я понял потому, что widgets это прокси таблица с недоступной для изменения метатаблицей, настоящая таблица хранится как upvalue в C фунциях, вызываемых метаметодами __index и __newindex. nil или другой виджет присвоить получается, а просто убрать — нет. Покопаю дальше.
-
- Сообщения: 390
- ОС: gentoo
-
- Сообщения: 147
- ОС: Windows,Linux,BSD
Re: Awesome
как убрать дочерние плавающие окна ? К примеру я открыл xfburn, стал записывать болванку. Открылось окно с прогрес-баром. Оно не тилится
-
- Сообщения: 70
- ОС: FreeBSD 9-STABLE / clang 3.3
Re: Awesome
Прописать правило для инстанса, типа такого: { rule = { class = "xfburn", instance = "progress_bar" }, properties = { floating = false} }
Инстанс можно подглядеть xprop'ом - первый параметр WM_CLASS
-
- Сообщения: 127
- Статус: толстый полярный лис
- ОС: Gentoo-hardened
Re: Awesome
Поставил на днях сию штуку, ибо тайлинговый WM это то, что я искал. Сейчас сижу разбираюсь с LUA. И подскажите еще, почему у меня при запуске xcompmgr авесом запускается на дефолтном конфиге (из /etc/xdg/awesome), а не том, что у меня в домашней директории, композитный менеджер запускаю через .xinitrc
сейчас первая строка у меня закоменчена. потому что с ней происходит загрузка дефолтного конфига. Куда копать?
Код: Выделить всё
exec xcompmgr &
exec awesome
сейчас первая строка у меня закоменчена. потому что с ней происходит загрузка дефолтного конфига. Куда копать?
Код: Выделить всё
--- /dev/brain
+++ /dev/ass
-
- Сообщения: 147
- ОС: Windows,Linux,BSD
Re: Awesome
вопрос №1: у меня при awful.layout.suit.max.fullscreen не все приложения разворачиваются на весь экран. К примеру при запуске gvim внизу видно полоску панели шириной в 10 пикселей. Как это исправить ?
вопрос №2: видел делают вывод dmesg & tail -f /var/log/messages в отдельные панели на рабочем столе. Это здоровски видеть на каждом рабочем столе логи! Как это сделать ?
вопрос №2: видел делают вывод dmesg & tail -f /var/log/messages в отдельные панели на рабочем столе. Это здоровски видеть на каждом рабочем столе логи! Как это сделать ?
-
- Сообщения: 390
- ОС: gentoo
Re: Awesome
Такое еще с терминалами вроде urxvt бывает часто. Это size hints клиента. Надо в таблице awful.rules.rules добавить size_hints_honor = false в properties для всех клиентов (это пустое правило rule = { }), ну или только для каких захотите клиентов — в таком случае используйте xprop, чтобы узнать class.
Код: Выделить всё
awful.rules.rules = {
-- All clients will match this rule.
{ rule = { },
properties = {
size_hints_honor = false,
--[[какие-то еще правила]] } },
-- { rule = { class = "Gvim" },
-- properties = { --[[ну или сюда]] },
}
А что в данном случае понимается под панелями? Всплывающие напоминания (мне кажется, что будет раздражать, но это легко сделать с помощью naughty) или еще что-то? Формализма ради надо сказать что в awesome в общем-то нет рабочих столов. Теги это немного другое. Логи, кстати, можно выводить в корневое окно X без помощи оконного менеджера с помощью conky.
Единственное что, при использовании тайловых wm совсем не часто видишь корневое окно. Обычно клиенты закрывают весь экран.
-
- Сообщения: 147
- ОС: Windows,Linux,BSD
Re: Awesome
Как запустить приложение из коммандной строки на определенном таге ?
-
- Сообщения: 147
- ОС: Windows,Linux,BSD
Re: Awesome
Как же всетаки из коммандной строки запустить приложение на определенном тэге ? Уж очень надо!:)
-
- Сообщения: 70
- ОС: FreeBSD 9-STABLE / clang 3.3
-
- Сообщения: 147
- ОС: Windows,Linux,BSD
Re: Awesome
нет
Проблема: имеются проекты, которые открываются gvim -S session.vim. Нужно сделать так, чтобы проекты открывались в нужном теге, допустим проект а1 - в первом теге а2 - во втором теге. А сам гвим открывался где угодно собственно говоря.
-
- Сообщения: 70
- ОС: FreeBSD 9-STABLE / clang 3.3
Re: Awesome
так в чем проблема? у всех этих окошек нет ни одного уникального свойства, чтобы назначить тег?
-
- Сообщения: 147
- ОС: Windows,Linux,BSD
Re: Awesome
Может кто-то дать скелет виджета vicious, который будет возвращать типа:
вида GPU:40 C
Сделал
and emerge -C conky =)
Код: Выделить всё
io.popen('nvidia-smi -q -d TEMPERATURE | grep Gpu | cut -c35-36')
вида GPU:40 C
Сделал
Код: Выделить всё
vicious = require("vicious")
-- {{{ Separator
--
separator = widget({ type = "textbox" })
separator.text = " ¦ "
--- }}}
---- Initialize widget
--cpuwidget = widget({ type = "textbox" })
---- Register widget
--vicious.register(cpuwidget, vicious.widgets.cpu, "| CPU: $1% | ")
-- {{{ CPU temperature
--thermalwidget = widget({ type = "textbox" })
--vicious.register(thermalwidget, vicious.widgets.thermal, "<span color='#cc9393'>CPU</span>:<span color='#cc9393'>$1°C</span>", 1, { "coretemp.0", "core"} )
-- }}}
-- {{{ CPU & GPU Temperatures
cputhermalwidget = widget({ type = "textbox" })
vicious.register(cputhermalwidget, vicious.widgets.thermal, "<span color='#cc9393'>CPU</span>:<span color='#cc9393'>$1°C</span>", 1, { "coretemp.0", "core"} )
gputhermalwidget = widget({ type = "textbox" })
function gpu_temp()
--or local cmd = 'nvidia-smi -q -d TEMPERATURE | grep Gpu | cut -c35-36'
local cmd = "nvidia-smi -q -d TEMPERATURE | grep Gpu | awk '{print $3}'"
local filedescriptor = io.popen(cmd)
local value = filedescriptor:read()
filedescriptor:close()
return {value}
end
vicious.register(gputhermalwidget, gpu_temp, "<span color='#cc9393'>GPU</span>:<span color='#cc9393'>$1°C</span>", 5)
-- }}}
-- {{{ Network usage widget
netwidget = widget({ type = "textbox" })
--neticon= widget({ type = "imagebox" })
--neticon.image = image(icons_dir .. "/net.png")
vicious.cache(vicious.widgets.net)
vicious.register(netwidget, vicious.widgets.net, '<span color="#CC9393">down:${eth0 down_kb}</span>' .. ' <span color="#7F9F7F">up:${eth0 up_kb}</span>', 2)
--netwidget:buttons(
--awful.util.table.join(
--awful.button({}, 1,
--function ()
--awful.util.spawn( terminal .. " -e wicd-curses")
--end),
--awful.button({}, 3,
--function ()
--awful.util.spawn( terminal .. " -e ethstatus -s 768")
--end)
--)
--)
-- }}}
and emerge -C conky =)
-
- Сообщения: 147
- ОС: Windows,Linux,BSD
Re: Awesome
Как сделать размер вкладок свернутых окон в панели фиксированного размера ? Неудобно, что два окна и они занимают всю доступную ширину панели.
-
- Сообщения: 147
- ОС: Windows,Linux,BSD
Re: Awesome
lazhu писал(а): ↑13.02.2013 23:20
так в чем проблема? у всех этих окошек нет ни одного уникального свойства, чтобы назначить тег?
Да, нет. К примеру я хочу назначить шестой тег под вывод сообщений. iostat, htop и другие. Хотел бы сделать четыре терминала, которые бы при загрузке запускались на определенном теге, чтобы их постоянно не открывать
-
- Сообщения: 32
Re: Awesome
Например , htop
rc.lua:
команда:
rc.lua:
Код: Выделить всё
{ rule = { instance = "htop" },
properties = { tag = tags[1][6] } },
команда:
Код: Выделить всё
urxvt -name htop -e htop
-
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: Awesome
Что-то никак не могу найти ничего дельного, может кто-нибудь подскажет:
Есть ли какой-нибудь интерфейс для управления awesome через консоль?
Интересующие действия: перезапустить, развернуть свёрнутое, переключить рабочий тэг / активное окно.
ззы. И кто как выходит из положения с тормозами из-за пропавшей сети и виджетами типа обновления почты? ( awesome однопоточный, и при отсуствии или плохой сети всякие curl'ы / wget'ы пытаются отвалиться по таймауту несколько секунд, что подвешивает awesome и не позволяет переключаться между тэгами / приложениями, хотя активное приложение работает без проблем ). даже в багтрекере у них был баг, но закрыли, ибо не пофиксить.
Есть ли какой-нибудь интерфейс для управления awesome через консоль?
Интересующие действия: перезапустить, развернуть свёрнутое, переключить рабочий тэг / активное окно.
ззы. И кто как выходит из положения с тормозами из-за пропавшей сети и виджетами типа обновления почты? ( awesome однопоточный, и при отсуствии или плохой сети всякие curl'ы / wget'ы пытаются отвалиться по таймауту несколько секунд, что подвешивает awesome и не позволяет переключаться между тэгами / приложениями, хотя активное приложение работает без проблем ). даже в багтрекере у них был баг, но закрыли, ибо не пофиксить.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
-
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: Awesome
Нашёл сам. Есть так называемый awesome-client из модуля awful.remote.
вот рестарт:
Код: Выделить всё
echo 'awesome.restart()' | awesome-client
предыдущий тэг
Код: Выделить всё
echo 'awful.tag.viewprev()' | awesome-client
ну и так далее. rc.lua в помощь.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
-
- Сообщения: 147
- ОС: Windows,Linux,BSD
Re: Awesome
1) как сделать так, чтобы при
а. awful.layout.suit.max
б. когда окно одно
убрать border
2) как сделать так, чтобы при mod + tab показывался последний посещенный тэг ? очень удобно книгу к примеру читаешь и на втором теге гвим. Щелкнул на 1 и на 8 тег и переходишь по ним по mod+tab(эта фича из dwm).
3) xft font можно использовать в theme.lua ? И если да, то как.
а. awful.layout.suit.max
б. когда окно одно
убрать border
2) как сделать так, чтобы при mod + tab показывался последний посещенный тэг ? очень удобно книгу к примеру читаешь и на втором теге гвим. Щелкнул на 1 и на 8 тег и переходишь по ним по mod+tab(эта фича из dwm).
3) xft font можно использовать в theme.lua ? И если да, то как.