2

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

Например, я обычно хочу, чтобы мой браузер (dwb) в теге 2 использовал следующее правило:

awful.rules.rules = {
    [...]
    { rule = { class = "Dwb" }, properties = { tag = tags[1][2] } },
}

Но когда я создаю браузер для сеанса отладки, я хочу, чтобы он появлялся в другом теге (вместе с моей IDE), скажем, в теге 3.

Как я могу запустить программу из командной строки, чтобы ее клиент (ы) появлялся в теге, указанном в качестве параметра?

1 ответ1

2

Вы можете создать функцию и использовать ее через замечательный клиентский инструмент.

Сначала создайте функцию и добавьте ее в свой файл rc.lua:

function spawn(command, class, tag, test)
local test = test or "class"
local callback
callback = function(c)
    if test == "class" then
        if c.class == class then
            awful.client.movetotag(tag, c)
            client.disconnect_signal("manage", callback)
        end
    elseif test == "instance" then
        if c.instance == class then
            awful.client.movetotag(tag, c)
            client.disconnect_signal("manage", callback)
        end
    elseif test == "name" then
           if string.match(c.name, class) then
               awful.client.movetotag(tag, c)
            client.disconnect_signal("manage", callback)
        end
    end
end
client.connect_signal("manage", callback)
awful.util.spawn_with_shell(command)
end

Затем перезапустите ваш удивительный сеанс (обычно через Ctrl+Super+r).

Затем, как если бы вы писали правило, выберите способ идентифицировать клиента (окно) для перемещения. Вы можете сделать это по классу, по экземпляру или по имени. Используйте xprop для получения информации о windows, также смотрите этот FAQ.

Наконец, создайте простой скрипт bash:

#!/usr/bin/env bash
cat <<EOF | awesome-client
spawn("/usr/bin/firefox", "Firefox", tags[1][1], "class")
EOF

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

Надеюсь это поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .