Комбинация клавиш для переключения между окнами приложения во всех окнах просмотра
Alt-` используется для переключения между окнами приложения в текущем окне просмотра в Unity.
Есть ли другая комбинация клавиш для переключения между окнами приложения во всех окнах просмотра?
Я не хочу изменять поведение по умолчанию Alt-`, который переключается между окнами приложения в текущем окне просмотра.
Я использую Ubuntu 14.04 и Unity.
3 ответа
Вдохновленный ответом Пино, я нашел подвох, чтобы сделать это: удерживайте Alt + ` для переключения между окнами приложения в одном окне просмотра и (например) Alt + 1 для переключения между окнами приложения во всех окнах просмотра.
Небольшой косметический недостаток заключается в том, что отзывчивость немного менее точна, поскольку для изменения настроек требуется доля секунды. Однако на практике вы вряд ли заметите.
устанавливать
xdotool
:sudo apt-get install xdotool
Скопируйте следующий фрагмент в пустой файл и сохраните его как
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
установить комбинацию клавиш для запуска скрипта:
System Preferences > Keyboard > Shortcuts > Custom Shortcuts
, Я выбираю Alt + 1, так как он близок к другому.Теперь вы можете использовать Alt + 1 для переключения между всеми окнами (например) gedit:
или Alt + ` для переключения между окнами gedit только рабочей области:
нота:
В скрипте ключ над вкладкой установлен в
key 0x60
, Это может быть иначе на других lauyouts. Если это не сработает, запустите в терминалеxev
, затем нажмите Return, затем клавишу над вкладкой. В выводе ищите строку как(keysym 0x60, grave)
, Значение keysym - это значение, которое вам нужно в строке (script-):xdotool keydown alt key 0x60
Значения
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
Затем включите параметр " Переключение между окнами во всех рабочих пространствах" на вкладке " Переключатель":