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

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

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

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

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

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

решение1

Вдохновленный ответом Пино, я нашел хитрый трюк, как это сделать: используйте 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. В скрипте клавиша над Tabустановлена ​​на key 0x60. В других макетах это может отличаться. Если это не сработает, запустите в терминале xev, затем нажмите Return, затем клавишу над tab. В выводе найдите строку типа (keysym 0x60, grave). Значение keysym — это значение, которое вам нужно в строке (script-):

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

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

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

#!/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: Переключение между всеми окнами приложений на всех экранах

решение2

Универсальное решение с использованием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 (см. раздел комментариев для получения дополнительной информации)

решение3

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

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

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

введите описание изображения здесь

Связанный контент