Der wmctrl
Programm ist genau das, wonach Sie suchen (sudo apt-get install wmctrl
). Sie können den wmctrl -a "AppTitle"
verwenden Befehl, um die App nach vorne zu bringen. wmctrl -l
listet alle verfügbaren Fenster auf, daher sollte es einfach sein, ein Shell-Skript zu schreiben, das überprüft, ob Ihr Programm läuft, und es entweder startet oder in den Vordergrund bringt. Dann können Sie das einfach an eine Tastenkombination binden.
Speichern Sie zuerst das folgende Skript irgendwo, ich verwende /home/jtb/code/bringToFront
. Es benötigt zwei Argumente, das erste ist das, was Sie am Terminal eingeben würden, um das Programm zu starten, das zweite ist eine Teilzeichenfolge des Titels des Programmfensters. Wenn der Titel keine konstante eindeutige Zeichenfolge enthält, müssen Sie etwas mehr Arbeit aufwenden, um das Programmfenster zu finden.
#!/bin/bash
if [ `wmctrl -l | grep -c "$2"` != 0 ]
then
wmctrl -a "$2"
else
$1 &
fi
-
Führen Sie mit dem Skript in Ihrem aktuellen Verzeichnis
chmod +x bringToFront
aus um das Skript ausführbar zu machen. Stellen Sie dann sicher, dass es funktioniert; Um Firefox zu starten/fokussieren, könnten Sie./bringToFront firefox "Mozilla Firefox"
ausführen . -
Jetzt müssen wir eine Tastenkombination binden. Führen Sie
gconf-editor
aus und navigieren Sie in der Ordnerstruktur nach links zu/apps/metacity/keybinding_commands
. -
Doppelklicken Sie auf die erste
command
mit einem leeren Wert, wahrscheinlichcommand_1
. Geben Sie den vollständigen Pfad zum Skript ein und geben Sie die beiden Parameter an, z./home/jtb/code/bringToFront firefox Firefox
. -
Wählen Sie im Bedienfeld auf der linken Seite
global_keybindings
aus , der nächste Ordner nach oben. Finden Sierun
Eintrag, der dem gerade definierten Befehl entspricht, wahrscheinlichrun_command_1
. Doppelklicken Sie darauf und geben Sie die Tastenkombination ein, die Sie verwenden möchten. Setzen Sie die Modifikatoren in spitze Klammern, z.<Ctrl><Alt>F
.
Jetzt Steuerung + Alt + F bringt Ihr Firefox-Fenster in den Vordergrund oder startet es, falls es noch nicht läuft.
Hier ist eine andere Möglichkeit, dies mit xdotools
zu tun . Der Popup-Prozess wird von der Befehlszeile erkannt, die ausgegeben wird, um ihn auszuführen (keine PID-Datei oder eindeutiger Fenstertitel erforderlich).
#!/bin/bash
cmd="[email protected]"
# command line to be run. Note that the resulting
# process will hold this in /proc/PID/cmdline
pid=`pgrep -nf "^$cmd$"`
# most recent process having "$cmd" in /proc/PID/cmdline
if [ -z "$pid" ]; then # no pid
exec $cmd
# run command
else
winid=`xdotool search --all --pid $pid --onlyvisible | head -1`
# first visible window owned by pid
xdotool windowactivate $winid
# give window focus
fi