Я сделал ваш вопрос моей задачей на сегодня, и мне удалось получить рабочую версию. Будьте осторожны, это довольно хакерский! Насколько я знаю, нет другого способа сделать это. Тем более, что есть проблема в применении правил.
Что мы делаем? При выполнении Mod4 + r
мы сохраняем текущий выделенный тег в список. При применении правил к появившимся окнам мы выталкиваем соответствующий тег из списка. Нам нужна функция Once, потому что в awesome на данный момент есть ошибка, и она дважды применяет правила к окну. Мы должны исключить наш эмулятор терминала (и все другие программы, которые мы запускаем с привязкой клавиш), потому что в противном случае он открывается в теге, где мы в последний раз нажимали Mod4 + r
.
Вам нужны следующие функции в вашем rc.lua.
local rule_count = 0 local tag_count = 0 local run_tag = {} local function once() if rule_count == 1 then rule_count = 0 else rule_count = 1 end return rule_count end local function get_run_tag() if once() == 1 then if tag_count > 0 then tag_count = tag_count - 1 return table.remove(run_tag) else return "1" end end end local function push_run_tag(tag) table.insert(run_tag, tag) tag_count = tag_count + 1 end
Затем найдите следующую часть в вашем rc.lua:
{ rule_any = }, properties = { titlebars_enabled = false } -- or true },
И добавьте несколько строк, чтобы они выглядели так:
{ rule_any = }, except_any = { class = { "Termite" }}, properties = { titlebars_enabled = false, tag = function() return get_run_tag() end} },
Вы должны заменить Termite
консольный эмулятор, с которого вы обычно начинаете Mod4 + return
. В дополнение к этому вам нужно добавить каждую программу в таблицу классов, которую вы хотите начать с привязки клавиш.
Тогда ищите Mod4 + r
привязку ключа. На данный момент ему должно понравиться это:
awful.key({ modkey }, "r", awful.screen.focused().mypromptbox:run() ),
Измените это так, чтобы это выглядело так:
awful.key({ modkey }, "r", function () awful.screen.focused().mypromptbox:run() push_run_tag(awful.screen.focused().selected_tag.name) end, ),
Буду признателен за лучшие решения!
PS: это не будет работать для приложений, таких как Steam, потому что он всплывает несколько окон. Первый получает правильный тег. Следующее нерестится на теге "1".