Benutzerdefinierte Hotkeys / Verknüpfungen zum Öffnen einer App

4356
Ivan

Ich kann mir nicht vorstellen, dass dies in das System eingebaut ist, aber ist es möglich, dies ohne großen Aufwand zu tun?

Angenommen, ich öffne ein bestimmtes Programm mit einem Hotkey, und wenn ich den Hotkey erneut drücke, wird das Programmfenster in den Vordergrund gebracht.

Ich möchte dies auf Ubuntu 9.04 tun.

Vielleicht mit D-Bus? Irgendwelche Experten?

Update : Hier ist was ich endete, falls es jemandem helfen würde:

#!/bin/bash if [ -f "/tmp/myterm.pid" ]; then WID=`cat /tmp/myterm.pid` xdotool windowactivate $WID if [ "$?" != "0" ]; then WID="" fi else WID=`xdotool search --title "UNIQUE TITLE" | head -1` fi  if [ "$WID" == "" ]; then /usr/bin/gnome-terminal --window-with-profile=MYPROFILE "$@" WID=`xdotool search --title "UNIQUE TITLE" | head -1` echo $WID > /tmp/myterm.pid else xdotool windowactivate $WID fi 

Sicher kann es vereinfacht werden, aber ich bin kein bashWiz. Damit mein Beispiel funktioniert, habe ich in Terminal ein benutzerdefiniertes Profil erstellt, das dem Fenster einen eindeutigen Titel zuweist, damit er später gefunden werden kann. Die Möglichkeiten sind endlos!

9
Bei dieser einfachen Aufgabe funktioniert die Methode von jtb besser, da xdotools manchmal X-Fehler ausgibt und wmctrl schneller ist. Ivan vor 14 Jahren 1

3 Antworten auf die Frage

9
jtb

Das wmctrlProgramm ist genau das, wonach Sie suchen ( sudo apt-get install wmctrl). Sie können den wmctrl -a "AppTitle"Befehl verwenden, um die App in den Vordergrund zu bringen. wmctrl -llistet alle verfügbaren Fenster auf, daher sollte es leicht sein, ein Shellskript zu schreiben, das überprüft, ob Ihr Programm ausgeführt wird, und es entweder startet oder in den Vordergrund stellt. Dann können Sie das einfach an eine Tastenkombination binden.

Speichern Sie zuerst das folgende Skript irgendwo /home/jtb/code/bringToFront. Es gibt zwei Argumente. Das erste ist das, was Sie am Terminal eingeben, um das Programm zu starten, das zweite ist ein Teil des Programmfenstertitels. Wenn der Titel keine konstante eindeutige Zeichenfolge enthält, müssen Sie ein wenig mehr arbeiten, um das Programmfenster zu finden.

#!/bin/bash if [ `wmctrl -l | grep -c "$2"` != 0 ]  then wmctrl -a "$2" else $1 & fi 
  1. Führen Sie das Skript in Ihrem aktuellen Verzeichnis aus, chmod +x bringToFrontum es ausführbar zu machen. Dann stellen Sie sicher, dass es funktioniert. Firefox starten / fokussieren, das Sie ausführen könnten ./bringToFront firefox "Mozilla Firefox".

  2. Jetzt müssen wir eine Tastenkombination binden. Führen Sie gconf-editordie Ordnerstruktur aus und navigieren Sie nach links zu /apps/metacity/keybinding_commands.

  3. Doppelklicken Sie auf den ersten commandmit einem leeren Wert, wahrscheinlich command_1. Geben Sie den vollständigen Pfad zum Skript ein und geben Sie die beiden Parameter an, z /home/jtb/code/bringToFront firefox Firefox.

  4. Wählen Sie im linken Bereich global_keybindingsden nächsten Ordner aus. Finden Sie den runEintrag, der wahrscheinlich dem gerade definierten Befehl entspricht run_command_1. Doppelklicken Sie darauf und geben Sie die gewünschte Tastenkombination ein. Setzen Sie die Modifikatoren in spitze Klammern, z <Ctrl><Alt>F.

Jetzt Control+ Alt+ Fbringt Ihr Firefox-Fenster nach vorne oder startet es, falls es noch nicht läuft.

Ja, das habe ich vor ein paar Minuten herausgefunden, aber ich bin mit xdotool gegangen. Vielen Dank! Ivan vor 14 Jahren 0
Ich habe vergessen zu erwähnen, dass ich auch die globalen Abkürzungen und Befehle in gconf verwendet habe, um den Effekt vollständig zu erreichen (die Quake-Konsole eines armen Mannes!). Ivan vor 14 Jahren 0
Ah ja, ich habe xdotool selbst nicht benutzt, aber es sieht so aus, als würde es Ihnen mehr Flexibilität geben. Guter Punkt zu Gconf. Da dies nicht selbstverständlich ist, kann ich die Antwort genauso bearbeiten, um weitere Details für alle anderen Personen anzugeben, die dies tun möchten. jtb vor 14 Jahren 0
Poort Man's Quake-Konsole? Du meinst wie Tilda? http://freshmeat.net/projects/tilda prestomation vor 14 Jahren 0
Ja, ich benutze auch Tilda, aber ich arbeite in der Woche an mehreren Projekten. Ich öffne für jedes einzelne Projekt drei oder vier Registerkarten. Das schnelle Umschalten auf die Projektkonsole ("Arbeitsbereich"), ohne Tilda zu stören, ist für mich sehr nützlich. Ivan vor 14 Jahren 0
Süss. Liebe das Ich suchte nach etwas Ähnlichem, um Guake zu ersetzen - ich wollte diese Funktionalität, ohne all meine Fensterdekorationen zu verlieren. Fordi vor 8 Jahren 0
3
etuardu

Hier ist eine andere Möglichkeit, dies zu tun xdotools. Der Popup-Vorgang wird von der Befehlszeile erkannt, die zur Ausführung ausgegeben wurde (keine PID-Datei oder eindeutiger Fenstertitel erforderlich).

#!/bin/bash  cmd="$@" # 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 
0

Dank dafür. Ich verwende eine modifizierte Version, um ein Fensterkürzel-Skript zu erstellen, das auch das Durchlaufen mehrerer Instanzen unterstützt. Wenn Sie interessiert sind:

http://somanov.wordpress.com/2009/12/02/window-shortcuts-for-linux-desktops/

Prost :)