Gibt es eine Möglichkeit, Fenster mithilfe einer Tastenkombination über die Fensterleiste zu öffnen? Zum Öffnen des ersten Fensters links drücken Sie beispielsweise Strg+1 und zum Öffnen des zweiten Fensters links Strg+2.
Ich verwende derzeit xfce4, aber wenn dies unter xfce4 nicht möglich ist, gibt es eine andere Desktopumgebung, die dies zulässt?
Da ich mehrere Fenster derselben Anwendung geöffnet habe, suche ich nicht nach Sortierschnitten, die sich auf die Anwendung beziehen, sondern, wie ich weiter unten sage, auf das Fenster.
Antwort1
Mit einem kleinen Skript und einem kleinen Eingriff in Ihr System lässt sich das genau so einrichten, wie Sie es beschreiben.
Zutaten
wmctrl
; es muss möglicherweise installiert werden.- Das folgende Skript
xprop
, um die Fenstereigenschaften abzurufen. Dies ist bereits auf Ihrem System installiert.- Einstellungsänderungen in den Xfce-Panel-Einstellungen
- Zusätzliche Tastaturkürzel
Wie stellt man das ein
Installieren
wmctrl
:sudo apt-get install wmctrl
Erstellen Sie ein Verzeichnis
~/bin
(/home/<yourname>/bin
). Kopieren Sie das folgende Skript in eine leere Datei, speichern Sie es unterpanel_navigate
(ohne Erweiterung) in~/bin
undausführbar machen.Ändern Sie die Panel-Einstellungen:
Gehen Sie zu Einstellungen-Manager > "Panel" > "Elemente" (Registerkarte) > "Fenster-Schaltflächen" >- "Sortierreihenfolge" > Wählen Sie:Zeitstempel
- „Fenstergruppierung“ > Auswahl: „Nie“
- Stellen Sie sicher, dass "Fenster aus allen Arbeitsbereichen oder Ansichtsfenstern anzeigen"unangekreuzt
- "Sortierreihenfolge" > Wählen Sie:Zeitstempel
Tastaturkürzel hinzufügen:
Gehen Sie zum Einstellungsmanager > „Tastaturkürzel“ > „Anwendungskürzel“ und wählen Sie „Hinzufügen“. Fügen Sie den Befehl hinzu:panel_navigate 1
Stellen Sie es auf die Tastenkombination Ctrl+1
Nun können Sie wählen:
- Wiederholen Sie diesen Vorgang, um
panel_navigate 2
unter Ctrl+ hinzuzufügen 2, und so weiter (bis 9)
(Option speichern)oder(wenn Sie keine Angst davor haben, Konfigurationsdateien manuell zu bearbeiten):
Sie können die Datei bearbeiten:
~/.config/xfce4/xfconf/xfce-perchanel-xml/xfce4-keyboard-shortcuts.xml
in der die Tastaturkürzel (in
xfce
) gespeichert sind. Öffnen Sie die Datei mitmousepad
und suchen Sie nach einer Zeile wie:<property name="<Primary>1" type="string" value="panel_navigate 1"/>
Kopieren Sie die Zeile, fügen Sie sie in die nächste Zeile ein (Einfügen) und ändern Sie beide Vorkommen von 1 in 2, sodass Sie Folgendes erhalten:
<property name="<Primary>1" type="string" value="panel_navigate 1"/> <property name="<Primary>2" type="string" value="panel_navigate 2"/>
und so weiter..
Stellen Sie sicher, dass der Einzug genau der gleiche ist. Wiederholen Sie den Vorgang bis 9.
- Wiederholen Sie diesen Vorgang, um
Melden Sie sich ab und wieder an, dann sollte es funktionieren:
Ctrl+1
Ctrl+3
Und so weiter...
Das Drehbuch
#!/usr/bin/env python3
import subprocess
import sys
def get_value(command):
return subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8").strip()
def run_command(command):
subprocess.Popen(["/bin/bash", "-c", command])
current_workspace = [l for l in get_value("wmctrl -d").splitlines() if l.split(" ")[2] == "*"][0][0]
wlist_ids = [item.split()[0:4] for item in get_value("wmctrl -l").splitlines()]
relevant = [item for item in wlist_ids if item[1] == current_workspace]
panel = []
for item in relevant:
data = get_value("xprop -id "+item[0])
if ("_TYPE_NORMAL" in data, "TYPE_DIALOG" in data).count(True) == 1:
panel.append(item)
try:
window = panel[int(sys.argv[1])-1][0]
run_command("wmctrl -ia "+window)
except IndexError:
pass
Erläuterung
Die Lösung ist opportunistisch. Mir ist aufgefallen, dass die Fensterliste, die mit dem Befehl aufgerufen wird wmcrl -l
, nach dem Alter der Fenster sortiert ist. Indem ich das XFCE-Panel dasselbe tun lasse (Einstellungen), stimmen beide Reihenfolgen perfekt überein. Das Skript erstellt eine Fensterliste, filtert die „echten“, sichtbaren Fenster heraus (mit xprop
) und wechselt mit dem Befehl zu einem ausgewählten Fenster panel_navigate
, wobei die Nummer des Fensters (von links nach rechts) als Argument dient.
Probleme
Mir ist eine Ausnahme aufgefallen: Die IDLE-Fenster (Python-Interpreter) haben die PID 0 und ihre Eigenschaften können nicht von "erforscht" werden xprop
. Die Fenster erscheinen nicht in der Fensterliste und werden vom Skript übersprungen.
Notiz
Obwohl die Tastenkombination Ctrl+ <number>
beim Testen keine Fehler verursacht hat, kann sie mit einigen Anwendungen in Konflikt geraten. Es kann sicherer sein, (z. B.)
Ctrl+ Alt+ zu wählen.1
Antwort2
Nicht sicher, ob es sich um die gleiche Anwendung handelt, aber in Unity
können Sie mit zwischen Anwendungen wechseln super+number
, wie zum Beispiel super + 1
= erstes Element im Launcher, super + 2
= zweites Element im Launcher, super + n
= n-tes Element im Launcher. Dies hilft auch dabei, jedes im Launcher platzierte Element zu öffnen, z. B. wenn Nautilus das erste Element im Launcher ist, super + 1
wird der Nautilus-Dateimanager geöffnet.