Комбинация клавиш для переключения между окнами приложения во всех окнах просмотра

Alt-` используется для переключения между окнами приложения в текущем окне просмотра в Unity.

Есть ли другая комбинация клавиш для переключения между окнами приложения во всех окнах просмотра?

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

Я использую Ubuntu 14.04 и Unity.

3 ответа

Решение

Вдохновленный ответом Пино, я нашел подвох, чтобы сделать это: удерживайте Alt + ` для переключения между окнами приложения в одном окне просмотра и (например) Alt + 1 для переключения между окнами приложения во всех окнах просмотра.

Небольшой косметический недостаток заключается в том, что отзывчивость немного менее точна, поскольку для изменения настроек требуется доля секунды. Однако на практике вы вряд ли заметите.

  1. устанавливать xdotool:

    sudo apt-get install xdotool
    
  2. Скопируйте следующий фрагмент в пустой файл и сохраните его как switch.sh

    #!/bin/bash
    
    dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport false
    sleep 0.2
    xdotool keydown alt key 0x60
    dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport true
    sleep 1
    
  3. установить комбинацию клавиш для запуска скрипта: System Preferences > Keyboard > Shortcuts > Custom Shortcuts, Я выбираю Alt + 1, так как он близок к другому.

    Теперь вы можете использовать Alt + 1 для переключения между всеми окнами (например) gedit:

    введите описание здесь

    или Alt + ` для переключения между окнами gedit только рабочей области:

    введите описание здесь

нота:

  1. В скрипте ключ над вкладкой установлен в key 0x60, Это может быть иначе на других lauyouts. Если это не сработает, запустите в терминале xev, затем нажмите Return, затем клавишу над вкладкой. В выводе ищите строку как (keysym 0x60, grave), Значение keysym - это значение, которое вам нужно в строке (script-):

    xdotool keydown alt key 0x60
    
  2. Значения sleep 0.2 а также sleep 1 заставить скрипт нормально работать на моей системе, но они могут быть оптимизированы для более быстрых систем (уменьшите).

Больше вариантов

Точно так же вы можете установить комбинацию клавиш для переключения между всеми окнами приложения во всех окнах просмотра, в которых сценарий будет:

#!/bin/bash

dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport false
sleep 0.2
xdotool keydown alt key 0xff09
dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport true
sleep 1

Если вы установите для этого, например, Alt + Q, у вас есть хороший набор всех опций:

Alt + ` Переключение между окнами текущего приложения в текущем окне просмотра

Alt + 1 Переключение между окнами текущего приложения во всех окнах просмотра

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

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

введите описание здесь

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

введите описание здесь

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

Универсальное решение с использованиемwmctrl


обзор

Следующий скрипт должен быть совместим со всеми EWMH-совместимыми оконными менеджерами (например, xfwm4, openbox, kwin, compiz...). Оно использует wmctrl а также xprop, который может быть установлен с:

sudo apt-get install x11-utils wmctrl

Монтаж

Скопируйте и сохраните следующий отрывок как simple-window-switcher:

#!/bin/bash

# based on a script by Robert Steiniger
# (http://lars.st0ne.at/blog/switch%20between%20windows%20within%20the%20same%20application)

Usage="
  Title:        simple-window-switcher 0.1
  Description:  switch between all windows of active application
  Author:       Copyright Glutanimate 2014 (https://github.com/Glutanimate)
  License:      GNU GPLv3
  Usage:        $(basename "$0") [-g|-l|-h]
                -g: global window switching (across all workspaces)
                -l: local window switching (current workspace)
                -h: display this help message

                If no argument is provided window switching will be set to global.
"

while getopts "lgh" OPTIONS; do
  case $OPTIONS in
    l ) Fields="3-4"
        ;;
    g ) Fields="4"
        ;;
    h ) echo "$Usage"
        exit 0
        ;;
   \? ) echo "$Usage"
        exit 1
        ;;
  esac
done

ActiveWinID="$(xprop -root | sed -n 's/_NET_ACTIVE_WINDOW(WINDOW): window id # 0x//p')"
# fields 3-4: <desktop number> <window class>
ActiveWinClass="$(wmctrl -xl | grep "$ActiveWinID" | cut -d" " -f${Fields})"
WindowList="$(wmctrl -xl | grep "$ActiveWinClass" | cut -d" " -f1)"
NextWindow="$(echo "$WindowList" | grep -A1 "$ActiveWinID" | sed -n 2p)"

if [[ -z "$NextWindow" ]]; then
  NextWindow="$(echo $WindowList | head -n 1)"
fi

wmctrl -i -a "$NextWindow"

Пометьте скрипт как исполняемый и сохраните его где угодно (желательно в вашей переменной PATH, например /usr/local/bin или же ~/bin).

использование

Используйте меню сочетаний клавиш вашего оконного менеджера для назначения simple-window-switcher на горячую клавишу по вашему выбору. Вы можете использовать следующие параметры для управления поведением скрипта:

  • -g: глобальное переключение окон (во всех рабочих пространствах)
  • -l: локальное переключение окон (текущее рабочее пространство); может не работать с Unity/Compiz (см. раздел комментариев для получения дополнительной информации)

Откройте терминал и введите следующую команду:

dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport false

В качестве альтернативы вы можете установить Unity Tweak Tool:

sudo apt-get install unity-tweak-tool
unity-tweak-tool

Затем включите параметр " Переключение между окнами во всех рабочих пространствах" на вкладке " Переключатель":

введите описание здесь

Другие вопросы по тегам