Tastenkombination zum Wechseln zwischen den Fenstern einer Anwendung in allen Ansichtsfenstern

11

Alt- `wird verwendet, um zwischen den Fenstern einer Anwendung im aktuellen Ansichtsfenster in Unity 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- nicht ändern `, das zwischen den Fenstern einer Anwendung im aktuellen Ansichtsfenster wechselt.

Ich benutze Ubuntu 14.04 und Unity.

Kadir
quelle
Mit Standpunkt meinen Sie Arbeitsbereich?
Tim
2
@ Tim siehe askubuntu.com/questions/44102/…
Jacob Vlijm

Antworten:

7

Inspiriert von Pineaus Antwort fand ich einen schmutzigen Trick, um dies zu erreichen: Behalten Sie Alt+ `beim Wechseln zwischen Anwendungsfenstern in einem Ansichtsfenster und (zum Beispiel) Alt+ beim Wechseln zwischen Anwendungsfenstern in 1allen Ansichtsfenstern.

Ein kleiner kosmetischer Nachteil ist, dass die Reaktionsfähigkeit etwas ungenauer ist, da die Einstellungen einen Bruchteil einer Sekunde benötigen, um sich zu ändern. In der Praxis werden Sie es jedoch kaum bemerken.

  1. installieren xdotool:

    sudo apt-get install xdotool
    
  2. Kopieren Sie den folgenden Abschnitt in eine leere Datei und speichern Sie ihn 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
    
  3. Legen Sie eine Tastenkombination fest, um das Skript auszuführen : System Preferences > Keyboard > Shortcuts > Custom Shortcuts. Ich wähle Alt+ 1, da es nahe am anderen liegt.

    Jetzt können Sie entweder Alt+ verwenden 1, um zwischen allen Fenstern von (zum Beispiel) gedit zu wechseln:

    Geben Sie hier die Bildbeschreibung ein

    oder Alt+ `, um zwischen gedit-Fenstern nur des richtigen Arbeitsbereichs zu wechseln:

    Geben Sie hier die Bildbeschreibung ein

Hinweis:

  1. Im Skript ist der Schlüssel über dem auf Tabgesetzt key 0x60. Dies kann bei anderen Lauyouts anders sein. Falls es nicht funktioniert, führen Sie es in einem Terminal aus xevund drücken Sie Returndann die Taste über der Registerkarte. 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
    
  2. Die Werte sleep 0.2und sleep 1das Skript funktionieren auf meinem System einwandfrei, können jedoch für schnellere Systeme optimiert werden (reduzieren).

Mehr Optionen

Ebenso können Sie eine Tastenkombination festlegen, um zwischen allen Anwendungsfenstern in allen Ansichtsfenstern zu wechseln. Das Skript wäre dann:

#!/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 zum Beispiel Alt+ Qdafür einstellen, haben Sie eine schöne Auswahl aller Optionen:

Alt+ ` Wechseln Sie im aktuellen Ansichtsfenster zwischen den Fenstern der aktuellen Anwendung

Alt+ 1 Wechseln Sie in allen Ansichtsfenstern zwischen den Fenstern der aktuellen Anwendung

Alt+ Tab Wechseln Sie zwischen allen Anwendungsfenstern im aktuellen Ansichtsfenster

Alt+ Q Wechseln Sie in allen Ansichtsfenstern zwischen allen Anwendungsfenstern

Geben Sie hier die Bildbeschreibung ein

Alt+ Tab: Wechseln Sie zwischen allen Anwendungsfenstern im aktuellen Ansichtsfenster

Geben Sie hier die Bildbeschreibung ein

Alt+ Q: Wechseln Sie zwischen allen Anwendungsfenstern in allen Ansichtsfenstern

Jacob Vlijm
quelle
5

Generische Lösung mit wmctrl


Überblick

Das folgende Skript sollte mit allen EWMH-kompatiblen Fenstermanagern kompatibel sein (z. B. xfwm4, openbox, kwin, compiz ...). Es verwendet wmctrlund xprop, das installiert werden kann mit:

sudo apt-get install x11-utils wmctrl

Installation

Kopieren Sie die folgende Passage und speichern Sie sie als 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 einer beliebigen Stelle (vorzugsweise in Ihrem PFAD, z . B. /usr/local/binoder ~/bin).

Verwendung

Verwenden Sie das Tastaturkürzelmenü Ihres Fenstermanagers, um simple-window-switchereinen Hotkey Ihrer Wahl zuzuweisen . Mit den folgenden Parametern können Sie das Verhalten des Skripts steuern:

  • -g: globale Fensterumschaltung (über alle Arbeitsbereiche hinweg)
  • -l: lokale Fensterumschaltung (aktueller Arbeitsbereich); funktioniert möglicherweise nicht mit Unity / Compiz (weitere Informationen finden Sie im Kommentarbereich)
Glutanimat
quelle
Lieber @Glutanimate, nachdem -lauch in anderen Arbeitsbereichen zu Windows gewechselt wurde .
Kadir
@ Kadir Das ist seltsam. Es ist nicht auf meinem System. Wenn Sie etwas Zeit haben, wären Sie bereit, die Ausgabe wmctrl -xlauf einer Website wie pastebin.com zu veröffentlichen und hier zu verlinken?
Glutanimate
Lieber @Glutanimate, hier ist es: pastebin.com/iJBAZ5a7
Kadir
@ Kadir Danke! Es sieht so aus, als ob Unity / Compiz die Arbeitsbereichsinformationen nicht richtig verfügbar macht, sodass wmctrl Probleme hat, sie abzurufen (deshalb sehen Sie in der zweiten Spalte nur Nullen, dies sollten die Arbeitsbereichsnummern sein). Keine Ahnung, ob das ein Fehler ist oder ob es so konzipiert wurde. Ich habe das nicht bemerkt, weil ich LXDE verwendet habe. Ich werde der Antwort eine Notiz hinzufügen.
Glutanimate
4

Ö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 die Option Zwischen Fenstern in allen Arbeitsbereichen wechseln auf der Registerkarte Umschalter:

Geben Sie hier die Bildbeschreibung ein

Sylvain Pineau
quelle
Ich möchte die Eigenschaft von Alt-`beibehalten, die zwischen den Fenstern einer Anwendung im aktuellen Ansichtsfenster wechselt. Ich benötige eine weitere Verknüpfung wie Strg-Alt-`, mit der in allen Ansichtsfenstern zwischen den Fenstern einer Anwendung gewechselt wird.
Kadir
1
@Kadir Leider erlaubt die Eigenschaft dconf nicht, dass beide Konfigurationen gleichzeitig existieren. Es ist das eine oder andere Verhalten.
Sylvain Pineau