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

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


person ziiweb    schedule 28.07.2012    source источник
comment
удерживайте Alt, нажимая вкладку несколько раз.   -  person Daniel    schedule 28.07.2012
comment
@Daniel спасибо, но он переключается только между двумя приложениями   -  person ziiweb    schedule 28.07.2012


Ответы (7)


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

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

person Christopher Corley    schedule 29.07.2012
comment
Это наверняка действительно работает. Возможно, вам придется перезапустить awesome или запустить kill -s SIGHUP $ (что потрясающе), чтобы заставить его работать. - person ; 12.09.2012
comment
Я только начал использовать awesome. Очень полезный совет по настройке, спасибо! - person Ciges; 16.01.2014
comment
Первое решение точно такое же, как по умолчанию для modkey+j и modkey+k. - person blueyed; 01.03.2014

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

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

person blueyed    schedule 02.03.2014
comment
@ChristopherCorley Отлично. У меня есть много локальных незафиксированных модификаций, которые готовятся, например. использование on-top во время циклирования и наличие обратных вызовов для установки непрозрачности нетекущих окон. Дайте мне знать в проблемах Github, если вы что-то упустили и т. д. - person blueyed; 13.05.2015
comment
Фантастика! ИМО, Alt-Tab по умолчанию в awesomewm не очень хорош, и этот модуль это исправляет :) - person drgibbon; 29.09.2016

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

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

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

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

person Dave    schedule 27.02.2013

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

person ziiweb    schedule 28.07.2012
comment
Что хорошо в Alt + Tab в большинстве оконных менеджеров, так это то, что он циклически переключает окна в том порядке, в котором они были в последний раз сфокусированы. Mod + j в Awesome, с другой стороны, циклически переключает окна в заранее определенном порядке, что не так полезно для меня. - person Jim Garrison; 09.09.2012
comment
@JimGarrison Смотрите мой ответ. Для этого я создал модуль: github.com/blueyed/awesome-cyclefocus. - person blueyed; 05.03.2014

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

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

person Brian C.    schedule 09.12.2016

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

person sa7    schedule 15.12.2017

Я должен сказать, что мне потребовалось некоторое время, чтобы установить правильную конфигурацию, чтобы получить поведение, которое я искал: циклическое переключение ВСЕХ окон, включая (особенно!) свернутые, на ВСЕХ тегах, без их поднятия или фокусировки и с предварительным просмотром. или извещение.

  • Редактирование потрясающей конфигурации (приведенной выше): будет циклически проходить только неминимизированные окна.
  • awesome_alttab устарело
  • awesome-switcher для потрясающего 3.5
  • цикл-фокус : Наконец-то! У меня это заработало только после того, как закомментировал строку 102, но не путем замены пустым cycle_filters в rc.lua

awesome-cyclefocus/init.lua :

cycle_filters = {
  --function(c, source_c) return not c.minimized end,  --luacheck: no unused args
},

rc.lua

 cyclefocus.key({ "Mod1", }, "Tab", {
          show_clients = false,
          focus_clients = false,
 }),
person Flint    schedule 05.05.2021