Anrock 22.12.2010 08:39
Есть проблема! — [SOLVED] Автозапуск приложений в awesome с раскидыванием по тегам.
Нужно чтобы при запуске awesome стартовало несколько приложений на разных экранах. То есть браузер на экране www, pcmanfm на экране files и несколько терминалов на экране terms.В awesome-wiki предложено добавить в конец rc.lua
Первый раз в параметре screen оставил числа, рассудив что указать там надо было номер экрана по счету. В итоге awesome создал еще 9 дефолтных экранов, запустив на них соответственно указанные приложения. "Ага" - подумал я и поменял порядковые номера на названия экранов - awesome теперь не создал левых экранов, но запустил все приложения прямо на первом. Подумал я еще немного и заключил названия экранов в кавычки - awesome опять создал пачку дефолтных экранов и вообще ничего не запустил.
На этом думалка заглохла, гуглилка тоже ничего особо не дала, бо у всех видимо все так работает.
Кто чего посоветует или, может быть, поделиться своим способом?
UPD. Решено с помощью rules, спасибо philosoft.
с Awesome без доков не разберёшься. Сначала почитай в офф. вики, что такое теги, как сделать так, чтобы программам присваивались теги, как сдалеать так, чтобы теги были с названиями, а не цифрами (стоит обратить внимание на shifty) и прочая, и прочая, и прочая. А потом просто запускай программы :)
Правила тебя спасут. Пример
Итого: огнелис всегда стартует на третьем теге, айсдав на 5м, гаджим на 2м, гвим на 1м и всё это на первом экранчике, mplayer стартует на текущем активном но он сразу становится floating window. Ну а после того, как правила написаны можно запускать приложения через вашу функцию или через
-- {{{ Rules
awful.rules.rules = {
{size_hints_honor = true },
-- All clients will match this rule.
{ rule = { },
properties = { border_width = beautiful.border_width,
border_color = beautiful.border_normal,
focus = true,
keys = clientkeys,
buttons = clientbuttons },
callback = awful.client.setslave },
{ rule = { class = "MPlayer" },
properties = { floating = true } },
-- Start windows as slave
-- Set Firefox to always map on tags number 3 of screen 1.
{ rule = { class = "Firefox" },
properties = { tag = tags<1><3> } },
{ rule = { class = "Icedove" },
properties = { tag = tags<1><5> } },
{ rule = { class = "Gvim" },
properties = { tag = tags<1><1> } },
{ rule = { class = "Gajim" },
properties = { tag = tags<1><2> } },
}
-- }}}
Итого: огнелис всегда стартует на третьем теге, айсдав на 5м, гаджим на 2м, гвим на 1м и всё это на первом экранчике, mplayer стартует на текущем активном но он сразу становится floating window. Ну а после того, как правила написаны можно запускать приложения через вашу функцию или через
awful.util.spawn_with_shell('mycoolprog')
А что не так?
philosoft дикое спасибо за конфиг, saver и Shtsh спасибо за то, что открыли глаза на изначально неправильный вопрос.
philosoft дикое спасибо за конфиг, saver и Shtsh спасибо за то, что открыли глаза на изначально неправильный вопрос.
да всё не так. какой смысл использовать в тайлинговом вм графическую обёртку для консольного приложения? это всё-равно, что поставить линукс для того, чтобы в нём на виртуалку поставить винду.
Ты не совсем прав. У gvim, как минимум, можно более няшные цветовые схемы подключать :) Ну, и ещё есть мелкие преимущества.
Хотя, если нужно просто конфиги подправить, то терминал + vim удобней
Хотя, если нужно просто конфиги подправить, то терминал + vim удобней
ну тоже ведь ерунда.. няшности-хреняшности и зачем-то awesome. Если уж так хочется всяких прибамабасов да красотулек - то юзать бы гном какой-нибудь или xfce..
да и цветовых схем в vim'е и без того предостаточно, куда уж больше-то?
да и цветовых схем в vim'е и без того предостаточно, куда уж больше-то?
Ты сейчас в links2 эти посты писал? Нафиг в awesome использовать chrome/ff/opera если есть links2?
Между chrome/ff/opera и links2 есть огромная функциональная разница. Между vim и gvim - разница в менюшечках и каких-то плюшечках.
И да, если бы links2 умел нормально показывать кириллицу, показывать всю графику и иметь удобные плагины, я бы пользовался им.
И да, если бы links2 умел нормально показывать кириллицу, показывать всю графику и иметь удобные плагины, я бы пользовался им.
Афтор во всём вопросе путает экраны и теги.
Экран (screen) — это, упрощённо, физический монитор, а тег (tag) — это уже именованный «ярлык» с символьным именем. Экраны у вас на столе (физическом, в реале), а теги — слева в верху (по-умолчанию).
Во фразе
следует заменить все слова «экран» на «тег». А вот пример запуска, который описан ниже, имеет в виду именно экраны которые screen, то есть правильно, туда номера писать надо.
Вообще афтор запутался. Надеюсь я ему хоть немного что-то прояснил. Теперь надо идти и читать awesome-вики до полного просветления, потому что я не могу сразу научить всему, что наработано долгими годами за awesome-ом.
Выше рекомендовали поюзать правила (rules), которые есть стандартный модуль awesome с некоторых пор. Покурите по ним доку, там всё достаточно просто (для начала). Ещё от себя могу порекомендовать shifty — стороннюю либу, которую надо будет доставить, но зато она даёт динамически создаваемые теги, автозапуск приложений при создании теги или переключении на него и прочие интересные плюшки.
Экран (screen) — это, упрощённо, физический монитор, а тег (tag) — это уже именованный «ярлык» с символьным именем. Экраны у вас на столе (физическом, в реале), а теги — слева в верху (по-умолчанию).
Во фразе
То есть браузер на экране www, pcmanfm на экране files и несколько терминалов на экране terms.
следует заменить все слова «экран» на «тег». А вот пример запуска, который описан ниже, имеет в виду именно экраны которые screen, то есть правильно, туда номера писать надо.
Вообще афтор запутался. Надеюсь я ему хоть немного что-то прояснил. Теперь надо идти и читать awesome-вики до полного просветления, потому что я не могу сразу научить всему, что наработано долгими годами за awesome-ом.
Выше рекомендовали поюзать правила (rules), которые есть стандартный модуль awesome с некоторых пор. Покурите по ним доку, там всё достаточно просто (для начала). Ещё от себя могу порекомендовать shifty — стороннюю либу, которую надо будет доставить, но зато она даёт динамически создаваемые теги, автозапуск приложений при создании теги или переключении на него и прочие интересные плюшки.
Ох, про теги-экраны уже сказали выше. Просмотрел, виноват =) Щас перечитал свой коммент, вышло как-то грубовато. Сорри, я не имел это в виду таким образом, день суматошный выдался. Пойду посплю, что-ли...
Печаль какая - в вики нету статьи про эти самые rules. И про теги тоже нет статьи. Или теги поддерживаются только в shifty?
например, так
-- {{{ Rules
awful.rules.rules = {
{ rule = { }, properties = {
focus = true, size_hints_honor = false,
keys = clientkeys, buttons = clientbuttons,
border_width = beautiful.border_width,
border_color = beautiful.border_normal }
},
{ rule = { class = "Firefox", instance = "Navigator" },
properties = { tag = tags<1><3> } },
{ rule = { class = "Emacs", instance = "emacs" },
properties = { tag = tags<1><2> } },
{ rule = { class = "Emacs", instance = "_Remember_" },
properties = { floating = true }, callback = awful.titlebar.add },
{ rule = { class = "Xmessage", instance = "xmessage" },
properties = { floating = true }, callback = awful.titlebar.add },
{ rule = { instance = "firefox-bin" },
properties = { floating = true }, callback = awful.titlebar.add },
{ rule = { name = "Alpine" }, properties = { tag = tags<1><4>} },
{ rule = { class = "Gajim.py" }, properties = { tag = tags<1><5>} },
{ rule = { class = "Akregator" }, properties = { tag = tags<1><8>} },
{ rule = { class = "Ark" }, properties = { floating = true } },
{ rule = { class = "Geeqie" }, properties = { floating = true } },
{ rule = { class = "ROX-Filer" }, properties = { floating = true } },
{ rule = { class = "Pinentry.*" }, properties = { floating = true } },
}
-- }}}
Я уж наковырял их в дефолтном конфиге. Найти бы список возможных опций в properties.
Хотя похоже я не прав, и в properties может лежать только что-то из этого списка
- floating
- tag
- switchtotag
- width
- height
- focus
- function
-- Кусок функции apply
for property, value in pairs(props) do
if property == "floating" then
aclient.floating.set(c, value)
elseif property == "tag" then
c:tags({ value })
c.screen = value.screen
elseif property == "switchtotag" and value and props.tag then
atag.viewonly(props.tag)
elseif property == "height" or property == "width" or
property == "x" or property == "y" then
local geo = c:geometry();
geo = value
c:geometry(geo);
elseif property == "focus" then
-- This will be handled below
elseif type(c) == "function" then
c(c, value)
else
c = value
end
end
только что-то из этого списка
Неа, maximized_horizontal там точно может лежать. Или разные версии?
Я в версии из гита смотрел. На канале мне что-то никто не спешит ответить. В рассылке спрашивать влом.
Я опять поспешил с выводами. Там может быть по сути всё что угодно. Если там находится что-то из перечисленнонго в предыдущем комментарии, то это обрабатывается особо (соответствующими функциями), иначе соответствующему свойству клиента присваевается соответствующее значение.
Зачем вы путаете всех? Это не экраны, а тэги и на них отображаются окна помеченные этими тэгами.
Экран (screen) - это грубо говоря монитор, если у вас их несколько, то они чаще всего нумеруются цифрами, а не именами...
Для вашей задачи читайте документацию по awesome, гугление (если не умеете) вам не поможет. В конфиге есть целый раздел с описанием того, какие приложения на каком тэге запускать (в дефолтном конфиге вроде даже есть пример с mplayer).