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


11

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

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

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

Я використовую Ubuntu 14.04 та Unity.


Під точки зору ви маєте на увазі Робочу область?
Тім

Відповіді:


7

Натхненний відповіддю Піно, я виявив брудний трюк, щоб виконати це: утримуйте 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, а потім клавішу вище вкладки. У висновку шукайте такий рядок (keysym 0x60, grave). Значення keyym - це значення, яке вам потрібно у рядку (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: Перемикання між усіма вікнами програм у всіх вікнах перегляду


5

Використання загального розчину 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 (детальну інформацію див. у розділі коментарів)

Шановний @Glutanimate, після того як він -lпереходить на вікна на інших робочих просторах.
Кадір

@Kadir Це дивно. Це не в моїй системі. Якщо у вас є деякий час, чи бажаєте ви розмістити вихід wmctrl -xlна такий сайт, як pastebin.com, і зв’язати його тут?
Glutanimate

Шановний @Glutanimate, ось це: pastebin.com/iJBAZ5a7
Кадір

@Kadir Дякую! Схоже, Unity / Compiz не виставляє інформацію про робочу область належним чином, тому wmctrl має проблеми зі збиранням її (тому у другому стовпці ви бачите лише нулі; це повинні бути номери робочої області). Не маю уявлення, чи це помилка, чи вона створена таким чином. Я цього не помічав, бо використовував LXDE. Я додам відповідь до відповіді.
Glutanimate

4

Відкрийте термінал і введіть таку команду:

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

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

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


Я хочу зберегти властивість Alt-`, яка перемикається між вікнами програми у поточному вікні перегляду. Мені потрібна ще одна клавіша швидкого доступу, як Ctrl-Alt-`, яка переключатиметься між вікнами програми у всіх вікнах перегляду.
Кадір

1
@Kadir На жаль, властивість dconf не дозволить спільно існувати обом конфігураціям. Це одна чи інша поведінка.
Sylvain Pineau
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.