Да, по хоткею вызывается gajim (правда у меня и ростер и чат в одном окне), floating и поверх всех остальных окон (только что проверил, поверх mplayer тоже работает), причем если он не был запущен до, этого то запускается (отпадает надобности пихать его в автостарт).
По поводу кол-ва тэгов проверил, ограничений нет, просто если их больше 9, то по стандартном у Win + Num не получится вызвать, но тут этого не требуется. Т.е. можно создать кучу скрытых тэгов для скрэтчпадов и на каждый такой тэг запихнуть нужное приложение (месенджер, плеер, и т.д.), после чего вызывать/прятать его по хоткею.
Правда в таком способе, опять же нужен отдельный тэг, но мне это не критично, а в остальном получается почти такой же скрэтчпад. Можно попробовать добавить скрытых тэгов в конец, специально для скрэтчпадов. Правда я не знаю, есть ли ограничение на кол-во тэгов?
Функция не моя, где взял уже не помню :-) Я там только поменял одну строчку, т.к. в оригинальной осуществлялся переход к тэгу с указанным приложением, а не включение его отображения на текущем…
Функция runorraise: function runorraise_smart(cmd, properties)
local clients = client.get()
for i, c in pairs(clients) do
if match(properties, c) then
local ctags = c:tags()
if table.getn(ctags) == 0 then
-- ctags is empty, show client on current tag
local curtag = awful.tag.selected()
awful.client.movetotag(curtag, c)
else
-- Otherwise, pop to first tag client is visible on
awful.tag.viewtoggle(ctags[1])
end
-- And then focus the client
client.focus = c
c:raise()
return
end
end
awful.util.spawn(cmd)
end
А я реализовывал похожую функциональность немного по-другому, без использования модуля scratch. Сделал отдельный floating-тэг im: { name = "im", layout = awful.layout.suit.floating, hide = false },
Затем прописал для Gajim следующие настройки, чтобы он запускался на тэге im поверх всего остального (упомянутая выше опция ontop): { rule = { class = "Gajim.py" },
properties = { floating = true, tag = tags[1][7], ontop = true } },
Затем биндим вызов Gajim на нужную нам клавишу/комбинацию: awful.key({"",""}, "XF86HomePage", function () runorraise("gajim", { class = "Gajim.py" }) end),
Для вызова используется функция runorraise, которая включает отображение тэга, на котором Gajim находится и дает ему (Gajim) фокус. Также функция запустит Gajim, если он не был запущен.
А протокол до конца открыли?
По поводу кол-ва тэгов проверил, ограничений нет, просто если их больше 9, то по стандартном у Win + Num не получится вызвать, но тут этого не требуется. Т.е. можно создать кучу скрытых тэгов для скрэтчпадов и на каждый такой тэг запихнуть нужное приложение (месенджер, плеер, и т.д.), после чего вызывать/прятать его по хоткею.
function runorraise_smart(cmd, properties)
local clients = client.get()
for i, c in pairs(clients) do
if match(properties, c) then
local ctags = c:tags()
if table.getn(ctags) == 0 then
-- ctags is empty, show client on current tag
local curtag = awful.tag.selected()
awful.client.movetotag(curtag, c)
else
-- Otherwise, pop to first tag client is visible on
awful.tag.viewtoggle(ctags[1])
end
-- And then focus the client
client.focus = c
c:raise()
return
end
end
awful.util.spawn(cmd)
end
{ name = "im", layout = awful.layout.suit.floating, hide = false },
Затем прописал для Gajim следующие настройки, чтобы он запускался на тэге im поверх всего остального (упомянутая выше опция ontop):
{ rule = { class = "Gajim.py" },
properties = { floating = true, tag = tags[1][7], ontop = true } },
Затем биндим вызов Gajim на нужную нам клавишу/комбинацию:
awful.key({"",""}, "XF86HomePage", function () runorraise("gajim", { class = "Gajim.py" }) end),
Для вызова используется функция runorraise, которая включает отображение тэга, на котором Gajim находится и дает ему (Gajim) фокус. Также функция запустит Gajim, если он не был запущен.