LINUX.ORG.RU

Awesome. Автоматическая установка layout.

 , , ,


1

2

Привет, ЛОР.
Решил попробовать что-то тайловое. И остановился(пока) на awesome. И сразу встал такой вопрос.
Как запускать определённые приложения на определённых тегах и с определённой разметкой(?)
Например:

----------------
|xxxxyyyyyyyyyy|
|xxxxyyyyyyyyyy|
|xxxxyyyyyyyyyy|
|xxxxzzzzzzzzzz|
|xxxxzzzzzzzzzz|
|xxxxzzzzzzzzzz|
----------------

x - какой-нибудь IM
y - какой-нибудь браузер
z - какой-нибудь видеоплеер
А конкретно сделать так, что бы при запуске этого IM(например из меню) он сразу открывался в нужном теге и нужного размера.

Гуглить пытался, но я даже не представляю, как составить правильно запрос, поэтому не получилось.

★★★★

Последнее исправление: yacuken (всего исправлений: 1)
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 = "MPlayer" },
      properties = { floating = false } },
    { rule = { class = "pinentry" },
      properties = { floating = true } },
    { rule = { class = "gimp" },
      properties = { floating = true } },
    -- Set Firefox to always map on tags number 2 of screen 1.
    -- { rule = { class = "Firefox" },
    --   properties = { tag = tags[1][2] } },
    { rule = { class = "Lxterminal"}, 
	properties = { tag = tags[1][2] } },
    { rule = { class = "Wine"},
        properties = { tag = tags[1][6] } },
    { rule = { class = "Steam"},
        properties = { tag = tags[1][6] } },
    { rule = { class = "sun-awt-X11-XFramePeer"},
        properties = { tag = tags[1][3] } },
    { rule = { class = "Pidgin"},
        properties = { tag = tags[1][4] } },
    { rule = { class = "Skype"},
        properties = { tag = tags[1][4] } },
    { rule = { class = "Audacious"},
        properties = { tag = tags[1][5] } },
    { rule = { class = "Opera"}, 
        properties = { tag = tags[1][1] } },
}

Моё, например.

NeverLoved ★★★★★
()
Последнее исправление: NeverLoved (всего исправлений: 1)
Ответ на: комментарий от Medar

Вот сюда надо сначала.

https://awesome.naquadah.org/wiki/Understanding_Rules

Если надо по-русски:

http://archlinux.org.ru/forum/topic/11748/?page=1#post-111477

Через быстрый поиск доскроллить до «11. Назначение ролей приложениям»

Только перевод вызывает вопросы, если там вместо «правила» переведено как «роли».

jeuta ★★★★
()
Ответ на: комментарий от jeuta

Спасибо. Крайне познавательно. Буду разбираться. Но беглый осмотр так и не дал ответа на главную желаемую фичу. Запукс приложения на определённой позиции. IM клиент на всю высоту монитора, слева. Браузер в верхней половине оставшейся части. Видео плеер в нижней.

Хотя может я смотрел слишком бегло?

yacuken ★★★★
() автор топика
Ответ на: комментарий от yacuken

Я делаю так:

for s = 1, screen.count() do
      -- Each screen has its own tag table.
   tags[s] = awful.tag(tags.names, s, tags.layout)
end
awful.tag.setproperty(tags[1][5], "mwfact", 0.22)
-- }}}

-- ... --
   { rule = { instance = "vacuum" },
     properties = { tag = tags[1][5] } },

   { rule = { instance = "vacuum", role = "MainWindow" } ,
     callback = awful.client.setmaster },
-- ... --
«vacuum» это мой IM-клиент.

При запуске он отправляется на 5й тэг 1ого монитора, а окно с WM_WINDOW_ROLE(STRING) = «MainWindow» становится главным

Этому тэгу присваивается по умолчанию awful.layout.suit.tile.left (тебе, наверное, нужен .right)

Получаем примерно то, что ты хотел. Можно добавить такое правило для плеера:

   { rule = { instance = "smplayer" },
     properties = { tag = tags[1][5] } },

jeuta ★★★★
()
Последнее исправление: jeuta (всего исправлений: 1)
Ответ на: комментарий от jeuta

чорт, я думал тебе в верхней половине нужно окно чата im-клиента. если клиент однооконный, то просто:

   { rule = { instance = "vacuum" },
     properties = { tag = tags[1][5] },
     callback = awful.client.setmaster },

   { rule = { instance = "firefox" },
     properties = { tag = tags[1][5] } },

   { rule = { instance = "smplayer" },
     properties = { tag = tags[1][5] } },

Но простого способа сделать браузер вверху, а плеер внизу я не знаю. Зависит от порядка запуска. Кто раньше, тот и сверху...

А вообще, я проще делаю. У меня всё так, как в предыдущем сообщении, только браузер и плеер в отдельных тэгах, и если мне надо, я включаю одновременно несколько тегов и настраиваю вручную клавиатурой или мышью.

jeuta ★★★★
()
Последнее исправление: jeuta (всего исправлений: 1)
Ответ на: комментарий от jeuta

Я сейчас тоже мышкой и клавой растаскиваю. Просто меня зацепила такая идея. Например тег 1 - work. В нём vim/emacs/etc, mc и urxvt. На своих местах. Как мне удобно, как я привык. И на каком теге я бы ни находился mc запустится на теге work. И именно в той части дисплея, к которой я привык.

Слез с композитных менеджеров ради этого (:

yacuken ★★★★
() автор топика

Это типичный статический тайлинг. В awesome тайлинг динамический. Не самый подходящий wm из всего набора тайловых менеджеров для этого. Такое легко было сделать, скажем, в ion3.

liaonau
()
Ответ на: комментарий от yacuken

Ну а как ты поступишь, когда надо будет открыть второй mc для других целей?

Проще один раз всё открыть как надо и потом делать hibernate :)

jeuta ★★★★
()
Ответ на: комментарий от jeuta

Тогда я воспользуюсь тегом etc, который для того и был оставлен с флоат

yacuken ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.