Awesome (кто-нибудь использует?)
Модератор: Модераторы разделов
-
- Сообщения: 46
- ОС: Gentoo
Re: Awesome
Запускаю так. Но ничего не работает
mygmail = widget({ type = "textbox" })
mygmail_t = awful.tooltip(mygmail)
vicious.register(mygmail, vicious.widgets.gmail,
function (widget, args)
mygmail_t:set_text(args["{subject}"])
return 'gmail: <span color="white" weight="bold">'..args["{count}"]..'</span>'
end, 127)
Есть странное подозрение что где то должны фигурировать логин и пасс
[Gentoo on Asus EEEPC 901]
-
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: Awesome
ну да. виджет телепатическими способностями забыли наделить (:
у меня вот так настроено:
Код: Выделить всё
$ grep "User data" -A2 ~/.config/awesome/vicious/gmail.lua
-- User data
local user = "login" -- Todo:
local pass = "passw0rd" -- * find a safer storage
The more you believe you don't do mistakes, the more bugs are in your code.
-
- Сообщения: 271
- ОС: Debian, Ubuntu, Mint
Re: Awesome
Код: Выделить всё
$ awesome -v
awesome v3.4.5 (Close To You)
• Build: May 14 2010 22:01:59 for i686 by gcc version 4.4.4 (buildd@rothera)
• D-Bus support: ✔
перестала работать
Код: Выделить всё
awful.key({ modkey, }, "w", function () mainmenu:show(true) end),
даже не знаю, куда копать
-
- Сообщения: 390
- ОС: gentoo
Re: Awesome
Код: Выделить всё
awful.key({ modkey, }, "w", function () mainmenu:show(keygrabber=true) end),
В 4.3.8 работает. Может в конфиге ошибка раньше и это не применяется?
UPD: Отличие в 'keygrabber=' может быть?
-
- Сообщения: 390
- ОС: gentoo
Re: Awesome
Хочу вертикальный wibox с горизонтальным текстом.
Закоментировал в awful/wibox.lua
Код: Выделить всё
-- if position == "left" then
-- w.orientation = "north"
-- elseif position == "right" then
-- w.orientation = "south"
-- end
в rc.lua
Код: Выделить всё
filler = widget({ type = "textbox" })
filler.text = ' \n'
filtab = {}
for i=0,35,1 do
table.insert(filtab,filler)
end
mywibox_vert[s].widgets = {
layout = awful.widget.layout.vertical.flex,
mylauncher,
mylayoutbox[s],
unpack(filtab),
}
Соответственно 35 надо будет сменить на другое число после добавления других виджетов.
Это конечно очень костыльно.
Есть ли вариант лучше? Идеально если не комментировать то, что замениться при обновлении. Но хотя бы как рассчитать число filler'ов автоматом?
-
- Сообщения: 271
- ОС: Debian, Ubuntu, Mint
Re: Awesome
liaonau писал(а): ↑07.01.2011 21:33Код: Выделить всё
awful.key({ modkey, }, "w", function () mainmenu:show(keygrabber=true) end),
В 4.3.8 работает. Может в конфиге ошибка раньше и это не применяется?
UPD: Отличие в 'keygrabber=' может быть?
странно, но заработало только
Код: Выделить всё
awful.key({ modkey, }, "w", function () mainmenu:show({keygrabber=true}) end),
т е с фигурными скобками в простых скобках
-
- Администратор
- Сообщения: 5343
- ОС: Gentoo
Re: Awesome
Stanislav Potapchik писал(а): ↑08.01.2011 22:42liaonau писал(а): ↑07.01.2011 21:33Код: Выделить всё
awful.key({ modkey, }, "w", function () mainmenu:show(keygrabber=true) end),
В 4.3.8 работает. Может в конфиге ошибка раньше и это не применяется?
UPD: Отличие в 'keygrabber=' может быть?
странно, но заработало только
Код: Выделить всё
awful.key({ modkey, }, "w", function () mainmenu:show({keygrabber=true}) end),
т е с фигурными скобками в простых скобках
Так lua и не допускает знака равенства в круглых скобках. Только в фигурных.
a(b=c) - некорректно
a({b=c}) - корректно
a{b=c} - корректно
Круглые скобки - это передача набора параметров, разделённых запятыми. Ни больше, ни меньше.
Фигурные - таблица, которая может состоять как из простого массива (элементы через запятую), так и ассоциативного (со знаком равенства). При вызове функции эта таблица будет передана как _один_ параметр.
Мануал по Lua
-
- Сообщения: 390
- ОС: gentoo
Re: Awesome
Stanislav Potapchik писал(а): ↑08.01.2011 22:42странно, но заработало только … с фигурными скобками в простых скобках
Прошу прощения, это я при копировании такой блок текста выделил без скобок и вставил в тот код, который вы написали.
-
- Сообщения: 271
- ОС: Debian, Ubuntu, Mint
Re: Awesome
подскажите, как сделать переключение на открываемое приложение в другом теге.
-
- Сообщения: 390
- ОС: gentoo
Re: Awesome
Stanislav Potapchik писал(а): ↑09.01.2011 12:31попробую повторить вопрос, пока отвечают.
подскажите, как сделать переключение на открываемое приложение в другом теге.
Если что-то помечается при запуске определенным тегом (вы об этом?):
Код: Выделить всё
rule = { class = "Firefox" },
properties = { tag = tags[1][2] } },
Тогда
Код: Выделить всё
{ rule = { class = "Firefox" },
properties = { tag = tags[1][2], switchtotag = true } },
-
- Сообщения: 390
- ОС: gentoo
Re: Awesome
Код: Выделить всё
require "lxp"
local file = "/var/tmp/weather/weather.xml"
local forecast = {}
local inside_forecast = false
local c = 0
local function add_data (table, name, attrs)
local name = name
local table = table
name = string.lower(name)
if not (name == 'forecast') then
table[name] = {}
table = table[name]
end
for _, v in ipairs(attrs) do
table[v] = attrs[v]
end
end
callbacks = {
StartElement = function (parser, name, attributes)
if (name == 'FORECAST') then
inside_forecast = true
c = c + 1
forecast[c] = {}
end
if (inside_forecast) then
add_data(forecast[c], name, attributes)
end
end,
EndElement = function (parser, name, attributes)
if (name == 'FORECAST') then inside_forecast = false end
end,
}
p = lxp.new(callbacks)
for l in io.lines(file) do
p:parse(l)
end
p:close()
for c, fc in ipairs(forecast) do
for k, v in pairs(fc) do
if not (type(v) == 'table') then
print(c..':'..k..'->'..v)
else
for a, b in pairs(v) do
print(c..':'..k..'->'..a..'=>'..b)
end
end
end
end
Но очень уж лень писать все эти if …(precipitation == 10) then 'без осадков'…
-
- Сообщения: 266
- ОС: Gentoo
Re: Awesome
К примеру, у меня ncmpcpp должен открытся в urxvtc на третьем теге, но сам urxvtc не должен быть к нему привязан.
-
- Администратор
- Сообщения: 5343
- ОС: Gentoo
Re: Awesome
urxvt можно запустить с указанием другого имени приложения:
(man urxvt) писал(а):-name name
Specify the application name under which resources are to be obtained, rather than the default executable file name. Name should not contain `.' or `*' characters. Also sets the icon
and title name.
и привязать urxvt со спец-именем к одному тегу, а со стандартным именем - к другому.
-
- Сообщения: 266
- ОС: Gentoo
Re: Awesome
Спасибо, какраз то, что нужно. Не знал о такой функции urxvt
-
- Сообщения: 90
- ОС: Debian GNU/LInux 6.0 64-bit
Re: Awesome
Код: Выделить всё
{ rule_any = {class = {"Gimp","Inkscape"}}, properties = { tag = tags[1][5], switchtotag = true } }
однако же ни чего не бижит, то есть вообще ни чего приложения хоть и запущенные, а не присваиваются к тагам, стало быть косячина в коде ( в этой строчке, хотя хз ). В примере из документации
есть еще свойство instance может его надо указать тоже? Если да то что это за instance такой?
пример из доки
Код: Выделить всё
-- To match multiple clients to a rule one need to use slightly different syntax:
{ rule_any = { class = { "MPlayer", "Nitrogen" }, instance = { "xterm" } }, properties = { floating = true } }
кусок из моего конфига
Код: Выделить всё
awful.rules.rules = {
-- All clients will match this rule.
{ rule = { },
properties = { border_width = beautiful.border_width,
border_color = beautiful.border_normal,
focus = true,
keys = clientkeys,
buttons = clientbuttons } },
{ rule = { class = "Emacs" },
properties = { tag = tags[1][2], switchtotag = true } },
-- { rule = { class = "Gimp" }, properties = { tag = tags[1][5], switchtotag = true } },
-- { rule = { class = "Inkscape" }, properties = { tag = tags[1][5], switchtotag = true } },
-- строка полсе добаления, которой Awesome ведёт себя некоректно
{ rule_any = {class = {"Gimp","Inkscape"}}, properties = { tag = tags[1][5], switchtotag = true } },
{ rule = { class = "Iceweasel" },
properties = { tag = tags[1][1], switchtotag = true } },
}
Версия awsome:3.4.6-1
-
- Сообщения: 298
- ОС: Debian 8.0 Jessie
Re: Awesome
Хотелось бы видеть несколько вариантов, включая тот, который не требует доустановки интерпретируемых языов и дополнительных либ.
В частности интересует вывод обновляемых данных, таких, как время.
-
- Сообщения: 390
- ОС: gentoo
Re: Awesome
Вот так в lua:
Код: Выделить всё
local f = io.popen("команда")
local res = f:read("*a")
f:close()
Это собственно и делает
Код: Выделить всё
awful.util.pread("команда")
В частности интересует вывод обновляемых данных, таких, как время.
Проще всего использовать библиотеку виджетов с готовым таймером, например vicious.
Код: Выделить всё
mydate = widget({ type = "textbox" })
vicious.register(mydate, vicious.widgets.date, "%a %d %b %H:%M")
-
- Сообщения: 298
- ОС: Debian 8.0 Jessie
Re: Awesome
liaonau писал(а): ↑29.01.2011 12:56
Вот так в lua:
Код: Выделить всё
local f = io.popen("команда") local res = f:read("*a") f:close()
Это собственно и делает
Код: Выделить всё
awful.util.pread("команда")
В частности интересует вывод обновляемых данных, таких, как время.
Проще всего использовать библиотеку виджетов с готовым таймером, например vicious.
Код: Выделить всё
mydate = widget({ type = "textbox" }) vicious.register(mydate, vicious.widgets.date, "%a %d %b %H:%M")
А как все это взаимосвязано?
Где (в каких файлах) и что (какие функции) должно находиться?
Ведь должно быть указано, что откуда брать ( include ) или куда экспортировать.
-
- Сообщения: 390
- ОС: gentoo
Re: Awesome
Распаковываете http://git.sysphere.org/vicious/snapshot/v...us-2.0.2.tar.gz в .config/awesome/, там есть уже готовые виджеты, например date или volume, если вам надо другой — по аналогии с готовыми делаете свой и вносите его в .config/awesome/vicious/widgets/init.lua
В .config/awesome/rc.lua:
Код: Выделить всё
require("vicious")
…
myvol = widget({ type = "textbox" })
vicious.register(myvol, vicious.widgets.volume, '<span fgcolor="#8888ff">'.."$1%"..'</span>', 10, "Master")
10 — интервал обновления, Master — параметр передаваемый виджету. $1 — стандартно — первое возвращенное виджетом значение (уровень звука).
-
- Сообщения: 298
- ОС: Debian 8.0 Jessie
Re: Awesome
Если я запускаю awesome в первый раз то создается только файл .awesomerc
в системе установлены такие пакеты:
Код: Выделить всё
ii liblua5.1-0 5.1.3-1 Simple, extensible, embeddable programming language
ii lua5.1 5.1.3-1 Simple, extensible, embeddable programming language
-
- Сообщения: 390
- ОС: gentoo
Re: Awesome
.awesomerc у меня нет т.к. в awesome используется стандарт xdg (.config/awesome/…)
У вас, вероятно, awesome 2 (debian stable). У меня 3.4.9. В awesome разработчики постоянно меняют API даже с минорными релизами.
-
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: Awesome
yandex.lua
Код: Выделить всё
---------------------------------------------------
-- Licensed under the GNU General Public License
-- * (c) 2011, sledopit <jabber sledopit@jabber.ru>
---------------------------------------------------
-- {{{ Grab environment
local type = type
local tonumber = tonumber
local io = { popen = io.popen }
local setmetatable = setmetatable
local string = { match = string.match }
-- }}}
-- Yandex: provides count of new e-mail on Yandex
module("vicious.yandex")
-- {{{ Yandex widget type
local function worker(format, warg)
local mail = {
["{count}"] = 0,
["{color}"] = "#aaaaaa"
}
-- Here you need to enter your token and login
-- for details about yandex API look at http://pdd.yandex.ru/help/section72/
local token = "вставить_ваш_токен_сюда"
local login = "вставить_ваш_логин_сюда"
-- Get info from the Yandex
local f = io.popen("wget --no-check-certificate -qO - \"https://pddimp.yandex.ru/get_mail_info.xml?token="..token.."&login="..login.."\"")
for line in f:lines() do
mail["{count}"] = --some
tonumber(string.match(line, "<ok new_messages=\"([%d]+)\"/>")) or mail["{count}"]
if mail["{count}"] > 0 then
mail["{color}"] = "red"
end
end
f:close()
return mail
end
-- }}}
setmetatable(_M, { __call = function(_, ...) return worker(...) end })
Код: Выделить всё
require("vicious.yandex")
Код: Выделить всё
yandex = widget({ type = 'textbox' })
vicious.register(yandex,vicious.widgets.yandex, '<span color="${color}">ya.mail ${count}</span>', 300)
The more you believe you don't do mistakes, the more bugs are in your code.
-
- Сообщения: 93
- ОС: Ubuntu
Re: Awesome
humppalaki писал(а): ↑25.01.2011 21:59Хочу оптимизировать правило для тагов согласно этой доке, для одних и тех же правил, но разных клиентов, можно пользовать инструкцию rule_any дописал такой код в rc.lua для таблицы правил:
Код: Выделить всё
{ rule_any = {class = {"Gimp","Inkscape"}}, properties = { tag = tags[1][5], switchtotag = true } }
однако же ни чего не бижит, то есть вообще ни чего приложения хоть и запущенные, а не присваиваются к тагам, стало быть косячина в коде ( в этой строчке, хотя хз ).
То же самое.
В стандартном rc.lua есть такие строки:
Код: Выделить всё
-- { rule = { class = "Firefox" },
-- properties = { tag = tags[1][2] } },
Если их раскомментировать и перезапустить awesome, то окно firefox перемещается на второй тег, но если вместо Firefox написать Gajim (или gajim), например, то ничего не происходит.
Не знаю что и думать. Может классы клиентов где-то отдельно прописаны и нельзя тупо добавить правило для произвольного клиента?
-
- Администратор
- Сообщения: 5343
- ОС: Gentoo
-
- Сообщения: 93
- ОС: Ubuntu
Re: Awesome
Теперь я знаю, для того чтобы узнать класс окна, нужно
1 ввести в терминале:
Код: Выделить всё
xprop | grep -i class
2 появившимся прицелом клацнуть на нужное окно;
3 посмотреть в выводе значение WM_CLASS.
Не подскажете как быть с окнами DownThamAll (программа закачки, дополнение firefox)? Очень напрягает, что его окна появляются не как floating.
Класс окна — WM_CLASS(STRING) = "Toplevel", "Firefox"
Пробовал записывать в rc.lua
Код: Выделить всё
{ rule = { class = "Toplevel", "Firefox" },
properties = { floating = true } },
не знаю, можно ли так. В любом случае, не сработало.
-
- Сообщения: 390
- ОС: gentoo
Re: Awesome
По WM_NAME получится? Какое имя у окна?
Moses писал(а): ↑23.07.2011 18:26Код: Выделить всё
{ rule = { class = "Toplevel", "Firefox" }, properties = { floating = true } },
не знаю, можно ли так. В любом случае, не сработало.
«class = a, b» — справа множественное присваивание, слева одна переменная. Это аналогично «class = a», т.е. "Firefox" просто отбросится.
-
- Сообщения: 93
- ОС: Ubuntu
Re: Awesome
Код: Выделить всё
$ xprop | grep -i name
WM_LOCALE_NAME(STRING) = "uk_UA.UTF-8"
WM_ICON_NAME(STRING) = "DownThemAll! - Make Your Selection"
_NET_WM_ICON_NAME(UTF8_STRING) = "DownThemAll! - Make Your Selection"
WM_NAME(STRING) = "DownThemAll! - Make Your Selection"
_NET_WM_NAME(UTF8_STRING) = "DownThemAll! - Make Your Selection"
moses@moses:/usr/share/awesome/themes/ambiance$ xprop | grep -i name
WM_LOCALE_NAME(STRING) = "uk_UA.UTF-8"
WM_ICON_NAME(STRING) = "DownThemAll! - Make Your Selection"
_NET_WM_ICON_NAME(UTF8_STRING) = "DownThemAll! - Make Your Selection"
WM_NAME(STRING) = "DownThemAll! - Make Your Selection"
_NET_WM_NAME(UTF8_STRING) = "DownThemAll! - Make Your Selection"
Не получается. Пробовал "DownThemAll! - Make Your Selection", "DownThemAll!", "DownThemAll".
-
- Сообщения: 93
- ОС: Ubuntu
Re: Awesome
Все получилось, спасибо. Я в rc.lua продолжал писать class, а надо было, в данном случае, name.
Код: Выделить всё
{ rule = { name = "DownThemAll!" },
properties = { floating = true } },
{ rule = { name = "Add Downloads" },
properties = { floating = true } },
Еще вопрос. Не складывается у меня с виджетами vicious.
Делал, как написано тут.
Код: Выделить всё
$ git clone http://git.sysphere.org/vicious
Код: Выделить всё
$ sudo mv vicious $XDG_CONFIG_HOME/awesome/
Да, тут я не понял, у меня содержимое vicious переместилось в $XDG_CONFIG_HOME/awesome, а я думал что оно будет в $XDG_CONFIG_HOME/awesome/vicious. Впрочем, и так не работает.
В начале rc.lua прописал
Код: Выделить всё
require("vicious")
Сразу за строками
Код: Выделить всё
-- Create a systray
mysystray = widget({ type = "systray" })
добавил
Код: Выделить всё
-- Initialize widget
memwidget = widget({ type = "textbox" })
-- Register widget
vicious.register(memwidget, vicious.widgets.mem, "$1% ($2MB/$3MB)", 13)
-- Initialize widget
datewidget = widget({ type = "textbox" })
-- Register widget
vicious.register(datewidget, vicious.widgets.date, "%b %d, %R", 60)
-- Initialize widget
cpuwidget = awful.widget.graph()
-- Graph properties
cpuwidget:set_width(50)
cpuwidget:set_background_color("#494B4F")
cpuwidget:set_color("#FF5656")
cpuwidget:set_gradient_colors({ "#FF5656", "#88A175", "#AECF96" })
-- Register widget
vicious.register(cpuwidget, vicious.widgets.cpu, "$1")
После перезапуска awesome изменений, как вы поняли, не наблюдаю. Где ошибся?
-
- Сообщения: 93
- ОС: Ubuntu
Re: Awesome
-
- Сообщения: 93
- ОС: Ubuntu
Re: Awesome
Код: Выделить всё
-- Initialize widget
memwidget = widget({ type = "textbox" })
-- Register widget
vicious.register(memwidget, vicious.widgets.mem, "$1% ($2MB/$3MB)", 13)
Сначала я его объявляю (инициализирую), а потом, в разделе «Add widgets to the wibox - order matters» регистрирую (последняя строка). Не работает. Зато если, при регистрации, вместо этой строки писать просто название виджета (memwidget), то все работает (к сожалению, только с этим виджетом).