Awesome (кто-нибудь использует?)

ion, dwm, wmii, awesome, xmonad и другие

Модераторы: broom, aim

liaonau
Сообщения: 390
ОС: gentoo

Re: Awesome

Сообщение liaonau » 24.10.2012 18:34

Так вы же сами уже нагуглили ответ. Сменить версию xkbcomp с 1.2.4 на, скажем, 1.2.3.
Спасибо сказали:

Moses
Сообщения: 93
ОС: Ubuntu

Re: Awesome

Сообщение Moses » 24.10.2012 23:40

В том-то и дело, что этот пакет в Убунту не сам по себе, а входит в состав пакета x11-xkb-utils. Я пробовал его установить от 12.04 (поскольку там у меня все работало). Установить установил, но нарвался на конфликты с зависимостями, плюс проблему не решил. Даже не смог проверить какой там в результате xkbcomp у меня стал, поскольку xkbcomp -v или чего-то похожего в опциях не было.
Спасибо сказали:

Moses
Сообщения: 93
ОС: Ubuntu

Re: Awesome

Сообщение Moses » 26.10.2012 21:50

Еще вопрос. Останавливаю компьютер командой pm-hibernate или pm-suspend (выполняется от рута). Как повесить выполнение данной команды на сочетание клавиш, например mod4 + F10?
Спасибо сказали:

Аватара пользователя
SLEDopit
Модератор
Сообщения: 4665
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Awesome

Сообщение SLEDopit » 26.10.2012 22:25

Moses писал(а):
26.10.2012 21:50
Еще вопрос. Останавливаю компьютер командой pm-hibernate или pm-suspend (выполняется от рута). Как повесить выполнение данной команды на сочетание клавиш, например mod4 + F10?
Точно так же как и любой другой хоткей. Просто 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.
Спасибо сказали:

liuch
Сообщения: 5
ОС: Debian GNU/Linux testing

Re: Awesome

Сообщение liuch » 08.12.2012 20:59

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 - подбирал. Ничего не прыгает.
Спасибо сказали:

liaonau
Сообщения: 390
ОС: gentoo

Re: Awesome

Сообщение liaonau » 13.12.2012 21:51

Вопрос ответ на который отрицателен для Lua в целом, но все же:
Есть ли способ обрабатывать асинхронные обратные вызовы, например для событий pulseaudio? В чистом Lua нельзя — для этого нужен отдельный поток, который будет использовать lua_State, который может быть изменен во время этого главным потоком.

Собственно, хочу чтобы виджет громкости в wibox обновлялся не раз в пару секунд, а по событию. Ну и виджеты громкости отдельных приложений (sink_inputs для pulseaudio). Может у awesome есть C API, позволяющее этого добиться (я не разбирался пока когда и как awesome вызывает Lua)?

Иначе придется сделать отдельный демон, взаимодействующий с awesome через dbus. Интересно, кстати, как реализована обработка dbus событий, это же что-то похожее на то, что мне нужно.
Спасибо сказали:

liuch
Сообщения: 5
ОС: Debian GNU/Linux testing

Re: Awesome

Сообщение liuch » 18.12.2012 14:28

Посмотрите как реализован индикатор раскладки. В вике есть код. Там как раз используется dbus. Событие отправляет kbdd. http://awesome.naquadah.org/wiki/Keyboard_layouts_with_kbdd
dbus, думаю, будет оптимальный вариант.
Спасибо сказали:

liaonau
Сообщения: 390
ОС: gentoo

Re: Awesome

Сообщение liaonau » 19.12.2012 18:57

Я видел его код до этого, спасибо. На сколько я понимаю их исходников, awesome слушает только system и session шины, а pulseaudio имеет встроенный dbus сервер.

Поэтому в данном случае кроме индикатора надо написать собственно отправителя. Назвал pulsecron по аналогии с используемым уже мной mpdcron — который постоянно подключен к pulseaudio и по событиям вызывает команды, например, awesome-client. Еще сделал C библиотеку для получения/установки громкости, а то парсить вывод pacmd мне кажется более громоздким вариантом.

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

Как динамически уничтожать и создавать виджеты и помещать их в wibox?
На таблицу в конфиге wibox[s].widgets = {...} почему-то не оказывает никакого воздействия table.remove.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:

liuch
Сообщения: 5
ОС: Debian GNU/Linux testing

Re: Awesome

Сообщение liuch » 19.12.2012 20:53

liaonau писал(а):
19.12.2012 18:57
Я видел его код до этого, спасибо. На сколько я понимаю их исходников, awesome слушает только system и session шины, а pulseaudio имеет встроенный dbus сервер.
Не пользуюсь пульсой, не в курсе.

liaonau писал(а):
19.12.2012 18:57
Как динамически уничтожать и создавать виджеты и помещать их в wibox?
На таблицу в конфиге wibox[s].widgets = {...} почему-то не оказывает никакого воздействия table.remove.

На счет создания не знаю, но там, похоже, и со скрытием не все глядко. Есть функция wibox:set_widget(), но она на моей версии wm так и не заработала, похоже что пранируется в более новых версиях awesome чем те, что сейчас в debian.
Может сдесь найдете для себя ответы: http://www.mail-archive.com/awesome-devel@...g/msg06710.html

Я в awesome недавно, потому могу ошибаться или чего то не знать, лучше перепроверьте :)
Спасибо сказали:

vsdfn
Сообщения: 147
ОС: Windows,Linux,BSD

Re: Awesome

Сообщение vsdfn » 23.12.2012 07:34

Как настроить количество мозаик в тэге ? К примеру мне нужно 4 равных по размеру мозаики(и не более) на определенном тэге. Это возможно ? Если да, то можно ссылку на мануал как это все делается ?
Спасибо сказали:

liaonau
Сообщения: 390
ОС: gentoo

Re: Awesome

Сообщение liaonau » 23.12.2012 09:28

vsdfn писал(а):
23.12.2012 07:34
Как настроить количество мозаик в тэге ? К примеру мне нужно 4 равных по размеру мозаики(и не более) на определенном тэге. Это возможно ? Если да, то можно ссылку на мануал как это все делается ?

Это возможно. 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.

Не утверждаю, что это наиболее оптимальный вариант. Но, мне кажется, должно работать.
Спасибо сказали:

liaonau
Сообщения: 390
ОС: gentoo

Re: Awesome

Сообщение liaonau » 23.12.2012 09:41

liuch писал(а):
19.12.2012 20:53
похоже, и со скрытием не все глядко.

Проверил — в 3.4.13 работает переменная_виджета.visible = false. Точно, спасибо, так проще чем image = nil.

table.remove не работает на wibox.widgets на сколько я понял потому, что widgets это прокси таблица с недоступной для изменения метатаблицей, настоящая таблица хранится как upvalue в C фунциях, вызываемых метаметодами __index и __newindex. nil или другой виджет присвоить получается, а просто убрать — нет. Покопаю дальше.
Спасибо сказали:

liaonau
Сообщения: 390
ОС: gentoo

Re: Awesome

Сообщение liaonau » 23.12.2012 10:11

liaonau писал(а):
23.12.2012 09:28
Убрать обратный вызов withcurrent сигнала "manage"

awful.rules добавляет свой обработчик для "manage" вместо withcurrent. Возможно надо будет заменить или изменить его.
Спасибо сказали:

vsdfn
Сообщения: 147
ОС: Windows,Linux,BSD

Re: Awesome

Сообщение vsdfn » 26.12.2012 23:58

как убрать дочерние плавающие окна ? К примеру я открыл xfburn, стал записывать болванку. Открылось окно с прогрес-баром. Оно не тилится:)
Спасибо сказали:

lazhu
Сообщения: 70
ОС: FreeBSD 9-STABLE / clang 3.3

Re: Awesome

Сообщение lazhu » 29.12.2012 14:00

vsdfn писал(а):
26.12.2012 23:58
как убрать дочерние плавающие окна ? К примеру я открыл xfburn, стал записывать болванку. Открылось окно с прогрес-баром. Оно не тилится:)

Прописать правило для инстанса, типа такого: { rule = { class = "xfburn", instance = "progress_bar" }, properties = { floating = false} }
Инстанс можно подглядеть xprop'ом - первый параметр WM_CLASS
Спасибо сказали:

Аватара пользователя
daedalus
Сообщения: 127
Статус: толстый полярный лис
ОС: Gentoo-hardened

Re: Awesome

Сообщение daedalus » 29.12.2012 17:56

Поставил на днях сию штуку, ибо тайлинговый WM это то, что я искал. Сейчас сижу разбираюсь с LUA. И подскажите еще, почему у меня при запуске xcompmgr авесом запускается на дефолтном конфиге (из /etc/xdg/awesome), а не том, что у меня в домашней директории, композитный менеджер запускаю через .xinitrc

Код: Выделить всё

exec xcompmgr &
exec awesome


сейчас первая строка у меня закоменчена. потому что с ней происходит загрузка дефолтного конфига. Куда копать?

Код: Выделить всё

--- /dev/brain
+++ /dev/ass
Спасибо сказали:

vsdfn
Сообщения: 147
ОС: Windows,Linux,BSD

Re: Awesome

Сообщение vsdfn » 30.01.2013 21:09

вопрос №1: у меня при awful.layout.suit.max.fullscreen не все приложения разворачиваются на весь экран. К примеру при запуске gvim внизу видно полоску панели шириной в 10 пикселей. Как это исправить ?
вопрос №2: видел делают вывод dmesg & tail -f /var/log/messages в отдельные панели на рабочем столе. Это здоровски видеть на каждом рабочем столе логи! Как это сделать ?
Спасибо сказали:

liaonau
Сообщения: 390
ОС: gentoo

Re: Awesome

Сообщение liaonau » 30.01.2013 22:53

vsdfn писал(а):
30.01.2013 21:09
вопрос №1: у меня при awful.layout.suit.max.fullscreen не все приложения разворачиваются на весь экран. К примеру при запуске gvim внизу видно полоску панели шириной в 10 пикселей. Как это исправить ?

Такое еще с терминалами вроде 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 = { --[[ну или сюда]] },
}

vsdfn писал(а):
30.01.2013 21:09
вопрос №2: видел делают вывод dmesg & tail -f /var/log/messages в отдельные панели на рабочем столе. Это здоровски видеть на каждом рабочем столе логи! Как это сделать ?

А что в данном случае понимается под панелями? Всплывающие напоминания (мне кажется, что будет раздражать, но это легко сделать с помощью naughty) или еще что-то? Формализма ради надо сказать что в awesome в общем-то нет рабочих столов. Теги это немного другое. Логи, кстати, можно выводить в корневое окно X без помощи оконного менеджера с помощью conky.
Единственное что, при использовании тайловых wm совсем не часто видишь корневое окно. Обычно клиенты закрывают весь экран.
Спасибо сказали:

vsdfn
Сообщения: 147
ОС: Windows,Linux,BSD

Re: Awesome

Сообщение vsdfn » 31.01.2013 01:29

Как запустить приложение из коммандной строки на определенном таге ?
Спасибо сказали:

vsdfn
Сообщения: 147
ОС: Windows,Linux,BSD

Re: Awesome

Сообщение vsdfn » 12.02.2013 01:33

Как же всетаки из коммандной строки запустить приложение на определенном тэге ? Уж очень надо!:)
Спасибо сказали:

lazhu
Сообщения: 70
ОС: FreeBSD 9-STABLE / clang 3.3

Re: Awesome

Сообщение lazhu » 12.02.2013 07:37

vsdfn писал(а):
12.02.2013 01:33
Как же всетаки из коммандной строки запустить приложение на определенном тэге ? Уж очень надо!:)

awful.util.spawn_with_shell("<shell> -ic <cmd>")
Спасибо сказали:

vsdfn
Сообщения: 147
ОС: Windows,Linux,BSD

Re: Awesome

Сообщение vsdfn » 13.02.2013 01:58

lazhu писал(а):
12.02.2013 07:37
vsdfn писал(а):
12.02.2013 01:33
Как же всетаки из коммандной строки запустить приложение на определенном тэге ? Уж очень надо!:)

awful.util.spawn_with_shell("<shell> -ic <cmd>")


нет:)
Проблема: имеются проекты, которые открываются gvim -S session.vim. Нужно сделать так, чтобы проекты открывались в нужном теге, допустим проект а1 - в первом теге а2 - во втором теге. А сам гвим открывался где угодно собственно говоря.
Спасибо сказали:

lazhu
Сообщения: 70
ОС: FreeBSD 9-STABLE / clang 3.3

Re: Awesome

Сообщение lazhu » 13.02.2013 23:20

vsdfn писал(а):
13.02.2013 01:58
lazhu писал(а):
12.02.2013 07:37
vsdfn писал(а):
12.02.2013 01:33
Как же всетаки из коммандной строки запустить приложение на определенном тэге ? Уж очень надо!:)

awful.util.spawn_with_shell("<shell> -ic <cmd>")


нет:)
Проблема: имеются проекты, которые открываются gvim -S session.vim. Нужно сделать так, чтобы проекты открывались в нужном теге, допустим проект а1 - в первом теге а2 - во втором теге. А сам гвим открывался где угодно собственно говоря.

так в чем проблема? у всех этих окошек нет ни одного уникального свойства, чтобы назначить тег?
Спасибо сказали:

vsdfn
Сообщения: 147
ОС: Windows,Linux,BSD

Re: Awesome

Сообщение vsdfn » 14.02.2013 00:46

Может кто-то дать скелет виджета vicious, который будет возвращать типа:

Код: Выделить всё

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 =)
Спасибо сказали:

vsdfn
Сообщения: 147
ОС: Windows,Linux,BSD

Re: Awesome

Сообщение vsdfn » 16.02.2013 00:38

Как сделать размер вкладок свернутых окон в панели фиксированного размера ? Неудобно, что два окна и они занимают всю доступную ширину панели.
Спасибо сказали:

vsdfn
Сообщения: 147
ОС: Windows,Linux,BSD

Re: Awesome

Сообщение vsdfn » 23.03.2013 20:26

lazhu писал(а):
13.02.2013 23:20
vsdfn писал(а):
13.02.2013 01:58
lazhu писал(а):
12.02.2013 07:37
vsdfn писал(а):
12.02.2013 01:33
Как же всетаки из коммандной строки запустить приложение на определенном тэге ? Уж очень надо!:)

awful.util.spawn_with_shell("<shell> -ic <cmd>")


нет:)
Проблема: имеются проекты, которые открываются gvim -S session.vim. Нужно сделать так, чтобы проекты открывались в нужном теге, допустим проект а1 - в первом теге а2 - во втором теге. А сам гвим открывался где угодно собственно говоря.

так в чем проблема? у всех этих окошек нет ни одного уникального свойства, чтобы назначить тег?


Да, нет. К примеру я хочу назначить шестой тег под вывод сообщений. iostat, htop и другие. Хотел бы сделать четыре терминала, которые бы при загрузке запускались на определенном теге, чтобы их постоянно не открывать
Спасибо сказали:

noprint
Сообщения: 32

Re: Awesome

Сообщение noprint » 24.03.2013 12:05

Например , htop
rc.lua:

Код: Выделить всё

{ rule = { instance = "htop" },
                                  properties = {  tag = tags[1][6]    } },


команда:

Код: Выделить всё

 urxvt -name htop -e htop
Спасибо сказали:

Аватара пользователя
SLEDopit
Модератор
Сообщения: 4665
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Awesome

Сообщение SLEDopit » 10.06.2013 15:58

Что-то никак не могу найти ничего дельного, может кто-нибудь подскажет:

Есть ли какой-нибудь интерфейс для управления 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.
Спасибо сказали:

Аватара пользователя
SLEDopit
Модератор
Сообщения: 4665
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Awesome

Сообщение SLEDopit » 16.06.2013 13:17

SLEDopit писал(а):
10.06.2013 15:58
Есть ли какой-нибудь интерфейс для управления 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.
Спасибо сказали:

vsdfn
Сообщения: 147
ОС: Windows,Linux,BSD

Re: Awesome

Сообщение vsdfn » 20.06.2013 20:01

1) как сделать так, чтобы при
а. awful.layout.suit.max
б. когда окно одно
убрать border

2) как сделать так, чтобы при mod + tab показывался последний посещенный тэг ? очень удобно книгу к примеру читаешь и на втором теге гвим. Щелкнул на 1 и на 8 тег и переходишь по ним по mod+tab(эта фича из dwm).

3) xft font можно использовать в theme.lua ? И если да, то как.
Спасибо сказали: