Alt– `wird verwendet, um in Unity zwischen den Fenstern einer Anwendung im aktuellen Ansichtsfenster zu wechseln.
Gibt es eine andere Tastenkombination, um in allen Ansichtsfenstern zwischen den Fenstern einer Anwendung zu wechseln?
Ich möchte das Standardverhalten von Alt- `, also das Wechseln zwischen den Fenstern einer Anwendung im aktuellen Ansichtsfenster, nicht ändern.
Ich verwende Ubuntu 14.04 und Unity.
Antwort1
Inspiriert durch Pineaus Antwort habe ich einen schmutzigen Trick gefunden, um dies zu bewerkstelligen: Halten Sie Alt+ `gedrückt, um zwischen Anwendungsfenstern in einem Ansichtsfenster zu wechseln, und (zum Beispiel) Alt+ 1, um zwischen Anwendungsfenstern in allen Ansichtsfenstern zu wechseln.
Ein kleiner kosmetischer Nachteil ist, dass die Reaktionsfähigkeit etwas ungenauer ist, da die Einstellungen nur den Bruchteil einer Sekunde zum Ändern benötigen. In der Praxis wird man davon allerdings kaum etwas merken.
Installieren
xdotool
:sudo apt-get install xdotool
Kopieren Sie das folgende Skript in eine leere Datei und speichern Sie es unter
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
Legen Sie eine Tastenkombination zum Ausführen des Skripts fest:
System Preferences > Keyboard > Shortcuts > Custom Shortcuts
. Ich wähle Alt+ 1, da es dem anderen am nächsten liegt.Jetzt können Sie mit Alt+ 1zwischen allen Fenstern von (beispielsweise) gedit wechseln:
oder Alt+ `, um zwischen Gedit-Fenstern nur des aktuellen Arbeitsbereichs zu wechseln:
Notiz:
Im Skript Tabist die Taste über dem auf gesetzt
key 0x60
. Dies kann bei anderen Layouts anders sein. Falls es nicht funktioniert, führen Sie es in einem Terminal ausxev
, drücken Sie dann Returnund dann die Taste über der Tabulatortaste. Suchen Sie in der Ausgabe nach einer Zeichenfolge wie(keysym 0x60, grave)
. Der Keysym-Wert ist der Wert, den Sie in der (Skript-)Zeile benötigen:xdotool keydown alt key 0x60
Mit den Werten von
sleep 0.2
undsleep 1
funktioniert das Skript auf meinem System einwandfrei, sie müssen jedoch möglicherweise für schnellere Systeme optimiert werden (reduzieren).
Mehr Optionen
Ebenso können Sie eine Tastenkombination festlegen, um zwischen allenAnwendungsfensterAnalle AnsichtsfensterDas Skript würde dann lauten:
#!/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
Wenn Sie hierfür beispielsweise Alt+ festlegen Q, erhalten Sie einen schönen Satz aller Optionen:
Alt+ ` Wechseln zwischenaktuelle AnwendungFenster anaktuelles Ansichtsfenster
Alt+ 1 Wechseln zwischenaktuelle AnwendungFenster analle Ansichtsfenster
Alt+ Tab Wechseln zwischenalle AnwendungenFenster anaktuelles Ansichtsfenster
Alt+ Q Wechseln zwischenalle AnwendungenFenster analle Ansichtsfenster
Alt+ Tab: Wechseln zwischen allen Anwendungsfenstern aufaktuelles Ansichtsfenster
Alt+ Q: Wechseln zwischen allen Anwendungsfenstern in allen Ansichtsfenstern
Antwort2
Generische Lösung mitwmctrl
Überblick
Das folgende Skript sollte mit allen kompatibel seinEWMH-konformFenstermanager (z. B. xfwm4, openbox, kwin, compiz ...). Es verwendet wmctrl
und xprop
, die mit folgenden Programmen installiert werden können:
sudo apt-get install x11-utils wmctrl
Installation
Kopieren und speichern Sie den folgenden Abschnitt unter 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"
Markieren Sie das Skript als ausführbar und speichern Sie es an einem beliebigen Ort (vorzugsweise in Ihrem PATH, z. B. /usr/local/bin
oder ~/bin
).
Verwendung
Verwenden Sie das Tastenkürzelmenü Ihres Fenstermanagers, um simple-window-switcher
einen Hotkey Ihrer Wahl zuzuweisen. Sie können die folgenden Parameter verwenden, um das Verhalten des Skripts zu steuern:
-g
: globales Fenster-Umschalten (über alle Arbeitsbereiche hinweg)-l
: lokales Fensterwechseln (aktueller Arbeitsbereich); funktioniert möglicherweise nicht mit Unity/Compiz (weitere Informationen finden Sie im Kommentarbereich)
Antwort3
Öffnen Sie ein Terminal und geben Sie den folgenden Befehl ein:
dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport false
Alternativ können Sie das Unity Tweak Tool installieren:
sudo apt-get install unity-tweak-tool
unity-tweak-tool
Aktivieren Sie dann dieWechseln Sie zwischen Fenstern auf allen ArbeitsbereichenOption im Switcher-Tab: