Awesome: alt + tab просто переключается между двумя приложениями - программирование
Подтвердить что ты не робот

Awesome: alt + tab просто переключается между двумя приложениями

Я только что установил awesome как мой wm. Когда я делаю alt + tab, используя awesome, он просто переключает два приложения, невозможно активировать других. Любая идея?

4b9b3361

Ответ 1

По умолчанию клиент устанавливает фокус на предыдущее окно с фокусом. Когда вы добавили 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),

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

Ответ 2

Я создал для этого модуль: https://github.com/blueyed/awesome-cyclefocus

Он поддерживает различные методы Alt-Tab (см. README) и может быть легко настроен по своему вкусу с помощью фильтров, которые применяются при циклическом переходе через окна, например. для фильтрации только окон с тем же классом WM или на одном экране/теге.

Ответ 3

Я сделал что-то подобное с моей настройкой, которую Крис предоставил в своем решении. Тем не менее, вместо того, чтобы сфокусировать фокус через все окна, он фактически переводит их через главный и подчиненный стек. Другими словами, все они заметно поворачиваются на экране:

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),

Мне по-прежнему нужно немного подкорректировать это, так как я хочу, чтобы фокус (по крайней мере, по-видимому) оставался в главном окне на протяжении всего цикла. Я все еще знаком с API Awesome Lua, когда нашел aweful.client.cycle, что делает его настолько легким.:)

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

Ответ 4

В по умолчанию привязка циклов Mod + Tab между двумя последними используемыми Приложения. Я искал Mod + j или Mod + k (обратный порядок).

Ответ 5

Есть библиотека для awesome, которая называется awesome-switcher-preview. Это реализует поведение alt-tab, подобное тому, что вы ожидаете в других операционных системах и оконных менеджерах. Он циклически перебирает окна в том порядке, в котором они были недавно сфокусированы. Он перебирает всех клиентов в выбранном вами теге для экрана. Включает в себя свернутых клиентов. Он пытается не испортить историю, пока не будет сделан выбор. Это не сильно меняет стек. Удерживая нажатой клавишу alt, удерживайте переключатель предварительного просмотра/переключения вкладок вверх.

Вы можете получить его здесь:https://github.com/berlam/awesome-switcher-preview

Ответ 6

Другой вариант - использование автономного стороннего приложения: https://github.com/sagb/alttab