Wenn Sie das folgende Skript ausführen, wird das gnome-calculator
Programm (oder eine andere Anwendung, siehe "Hinweise") gestartet. Warten Sie, bis das entsprechende Fenster angezeigt wird, und starten Sie es.
Das Drehbuch
#!/usr/bin/env python3
import subprocess
import time
app = "gnome-calculator"
subprocess.Popen([app])
t = 0
while t < 20:
try:
# wait for the application's pid
pid = subprocess.check_output(["pgrep", "-f", app]).decode("utf-8").strip()
except subprocess.CalledProcessError:
pass
else:
try:
# read the window list
w_data = subprocess.check_output(["wmctrl", "-lp"]).decode("utf-8").splitlines()
# find the window of the found pid
window = [w.split()[0] for w in w_data if pid in w][0]
# raise it and terminate the script
subprocess.Popen(["wmctrl", "-ia", window])
break
except IndexError:
pass
time.sleep(0.5)
t = t + 1
Wie benutzt man
Das Skript muss wmctrl
die Fensterliste lesen und das Fenster öffnen:
sudo apt-get install wmctrl
- Kopieren Sie das Skript in eine leere Datei und speichern Sie es unter
raise_window.py
Teste es mit dem Befehl:
python3 /path/to/raise_window.py
Wenn alles funktioniert, fügen Sie den Befehl einer Tastenkombination hinzu: Wählen Sie: Systemeinstellungen> "Tastatur"> "Tastenkombinationen"> "Benutzerdefinierte Tastenkombinationen". Klicken Sie auf das "+" und fügen Sie den Befehl hinzu:
python3 /path/to/raise_window.py
Anmerkungen
Um eine Endlosschleife zu verhindern (z. B. wenn die Anwendung aus irgendeinem Grund nicht ausgeführt wird), wartet das Skript zehn Sekunden und wird dann trotzdem beendet. Wenn Sie die Zeit verlängern möchten, ändern Sie den Wert in der Zeile:
while t < 20
( 20
= 20
* 0.5
Sekunden)
Wie bereits erwähnt, können Sie das Skript verwenden, um das Verhalten einer Anwendung, die nicht von selbst ausgelöst wird, zu "korrigieren", indem Sie die Zeile ändern:
app = "gnome-calculator"
eine andere Anwendung ausführen ( app = "<application>"
) oder:
Alternativ können Sie das Skript für verschiedene Anwendungen verwenden:
Ersetzen Sie die Zeile:
app = "gnome-calculator"
durch:
app = sys.argv[1]
und füge im Kopfteil des Skripts (direkt unter dem shebang) hinzu:
import sys
Führen Sie dann das Skript mit dem folgenden Befehl aus:
python3 raise_window.py <application>
Erläuterung
Um ein Fenster zu öffnen, können Sie den folgenden Befehl verwenden:
wmctrl -ia <window_id>
oder
wmctrl -a <window_name>
(vorausgesetzt es wmctrl
ist installiert)
Da der Fenstername möglicherweise nicht eindeutig ist, ist die ID zu verwenden , bevorzugt. Der Trick besteht dann darin, zu warten, bis die PID der Anwendung angezeigt wird, und dies mit dem folgenden Befehl zu testen:
pgrep -f <application>
Wenn der Befehl eine Ausgabe hat, bedeutet dies, dass die Anwendung eine PID hat und ausgeführt wird. Als Nächstes müssen Sie mit dem folgenden Befehl überprüfen, ob die Anwendung (bereits) ein Fenster hat:
wmctrl -lp
die eine Liste von Fenstern, deren Fenster-ID und die entsprechende (Anwendungs-) PID ausgibt.
Wenn es eine Übereinstimmung zwischen der gefundenen PID und den Fenstern in der Liste gibt, müssen wir unser Fenster erhöhen. Wir können die Fenster-ID aus der Fensterzeile in der Liste analysieren, die wir anschließend verwenden, um das Fenster mit dem folgenden Befehl zu öffnen:
wmctrl -ia <window_id>