awesome: Alt + tab просто переключается между двумя приложениями
Я только что установил awesome как мой wm. Когда я делаю Alt + tab с помощью awesome, он просто переключает два приложения, невозможно активировать другие..есть идеи?
6 ответов
по умолчанию клиент устанавливает фокус на предыдущее окно с фокусом. Когда вы alt + tab и он меняет окна, предыдущее окно теперь является исходным окном. Следовательно, он циклически между двумя окнами.
чтобы исправить это, вам нужно будет изменить следующее:
в rc по умолчанию.lua, раздел, который контролирует окно велоспорт выглядит следующим образом:
awful.key({ modkey, }, "Tab",
function ()
awful.client.focus.history.previous()
if client.focus then
client.focus:raise()
end
end),
цикл через все окна, а не только предыдущего, изменить над кодом к следующему:
awful.key({ modkey, }, "Tab",
function ()
-- awful.client.focus.history.previous()
awful.client.focus.byidx(-1)
if client.focus then
client.focus:raise()
end
end),
awful.key({ modkey, "Shift" }, "Tab",
function ()
-- awful.client.focus.history.previous()
awful.client.focus.byidx(1)
if client.focus then
client.focus:raise()
end
end),
это будет цикл через окна, когда вы нажмете Alt+Tab
, и в обратном порядке при нажатии Alt+Shift+Tab
. (Две строки, начинающиеся с --
- это комментарии, поэтому они не влияют на результат.)
цикл через каждый клиент на теге, даже свернутые, вы можете найти эту функцию полезной:
awful.key({ modkey, }, "Tab",
function ()
for c in awful.client.iterate(function (x) return true end) do
client.focus = c
client.focus:raise()
end
end),
обратите внимание, что ни одно из этих решений не рассматривает историю вообще, а вместо этого будет переключитесь на окно, которое имело фокус в последнее время (т. е. не учитывает порядок, в котором окна имели фокус).
Я создал модуль для этого: https://github.com/blueyed/awesome-cyclefocus
Он поддерживает различные способы Alt-Tab
(см. README) и может быть легко настроен по своему вкусу с помощью фильтров, которые применяются во время езды на велосипеде через окна, например, для фильтрации только окон с тем же классом WM или на том же экране/теге.
Я сделал что-то подобное с моей настройкой, которую Крис предоставил в своем решении. Однако вместо того, чтобы переключать фокус через все окна, он фактически циклирует их через главный и ведомый стек. Другими словами, все они заметно вращаются на экране:
awful.key({ modkey, "Shift" }, "Tab",
function ()
awful.client.cycle(false)
awful.client.focus.byidx(0,awful.client.getmaster()) -- Added 2013-03-01
end),
awful.key({ modkey, }, "Tab",
function ()
awful.client.cycle(true)
awful.client.focus.byidx(0,awful.client.getmaster()) -- Added 2013-03-01
end),
Мне все еще нужно немного настроить это, так как я хотел бы сосредоточиться (по крайней мере, кажется) на главном окне на протяжении всей операции цикла. Я все еще знакомлюсь с удивительным Lua API, когда я нашел ужасно.клиент.цикл, который делает это так легко. :)
Я решил, что я просто подключусь к этому текущему решению, так как это один из первых ресурсов, которые я исследовал, который обратился к моему аналогичному вопросу. Надеюсь, это поможет.
по умолчанию связывает Mod + Tab циклы между последними двумя используемыми приложения. Я искал Mod + j или Mod + k (обратный порядок).
существует библиотека для awesome под названием awesome-switcher-preview. Это реализует поведение alt-tab аналогично тому, что вы ожидаете от других операционных систем и оконных менеджеров. Он циклически проходит через окна в том порядке, когда они были недавно сфокусированы. Он циклически проходит через всех клиентов в выбранном наборе тегов для экрана. Он включает в себя минимизированный клиент. Я попытки не испортить историю до выбора. Я не сильно изменяю стек. Удержание alt вниз сохраняет предварительный просмотр / Alt-tab switcher up.
вы можете получить его здесь: https://github.com/berlam/awesome-switcher-preview
другой вариант-использование отдельного приложения 3-й участник: https://github.com/sagb/alttab