web-dev-qa-db-fra.com

Comment puis-je créer un raccourci pour ouvrir la fenêtre d'une application si elle existe?

Je bascule constamment entre Sublime Text, Terminal et Chrome. Je voudrais lier un raccourci comme "Alt + 1" pour que mon terminal actuel et Google actuel Chrome s'ouvre.

À l'heure actuelle, chaque fois que je lance Google Chrome ou le terminal, il ouvre une nouvelle fenêtre. Une idée?

Merci !

3
Whatda Fock

La méthode dans la réponse de drizzle fonctionnera, mais a quelques inconvénients

  • Il y a un retard; en poussant le Super clé, vous devez attendre environ une seconde pour faire apparaître les chiffres.
  • L'ordre des éléments dans le lanceur peut changer, selon les applications que vous exécutez. Le nombre de Chrome pourrait alors être différent.

    enter image description here

Option alternative

Vous pourriez faites simplement avec la commande:

wmctrl -a chrome

ce qui soulèvera la première fenêtre trouvée avec "chrome" dans son nom. Cela ouvrirait cependant aussi la fenêtre dans laquelle j'écris maintenant (a firefox fenêtre, nommée: "Raccourci pour ouvrir Google Chrome actuel ...")

L'utilisation du pid de la fenêtre évitera cela. À mon avis, il est donc plus élégant de mettre la commande:

wmctrl -ia "$(wmctrl -lp | grep "$(pgrep chrome)" | tail -1 | awk '{ print $1 }')"

sous une touche de raccourci (Alt+1 fonctionnera), étant donné que vous auriez besoin d'installer wmctrl:

Sudo apt-get install wmctrl

Comment ajouter la commande à un raccourci

  1. Installez wmctrl

    Sudo apt-get install wmctrl
    
  2. créer un petit script (ouvrez un fichier vide, collez-y le script ci-dessous)

    #!/bin/bash
    wmctrl -ia "$(wmctrl -lp | grep "$(pgrep chrome)" | tail -1 | awk '{ print $1 }')"
    

    Enregistrez-le sous raise_chrome.sh

  3. Ajoutez le script à un raccourci; choisissez: Paramètres système> "Clavier"> "Raccourcis"> "Raccourcis personnalisés". Cliquez sur le "+" et ajoutez la commande:

    /bin/bash /path/to/raise_chrome.sh
    

    (par exemple) le raccourci Alt+1.

    N.B. Utilisez un chemin absolu, pas par ex. ~

Explication

La commande est en fait une "conversion" de celle-ci , et l'explication est similaire:

Dans la section:

"$(wmctrl -lp | grep "$(pgrep chrome)" | tail -1 | awk '{ print $1 }')"

la commande:

wmctrl -lp

liste toutes les fenêtres, y compris leur pid et window-id. Le résultat est canalisé vers

grep "$(pgrep chrome)"

qui filtre (répertorie) toutes les occurrences des fenêtres Chrome.

Alors,

tail -1

nous donnera le dernier élément de la liste, qui est la dernière fenêtre créée (puisque wmctrl répertorie les fenêtres par ordre chronologique).

awk '{ print $1 }'

enfin, nous donnera la première chaîne de la ligne (à partir de la sortie de wmctrl), qui est l'identifiant de la fenêtre.

La commande:

wmctrl -ia <window_id>

Augmentera alors la fenêtre dernière création de Chrome

Remarque

Inutile de dire que vous pouvez remplacer chrome dans la commande par une autre application (nom du processus) et les placer sous des combinaisons de touches distinctes.


ÉDITER

utiliser l'application comme argument

Puisque vous mentionnez Sublime Text, Terminal et Chrome, vous souhaiterez peut-être utiliser plusieurs raccourcis et exécuter le script avec l'application comme argument.

Faire cela

Utilisez le script avec une légère différence:

#!/bin/bash
app=$1
wmctrl -ia "$(wmctrl -lp | grep "$(pgrep "$app")" | tail -1 | awk '{ print $1 }')"

et l'exécuter ensuite avec les commandes sous les touches de raccourci:

sh /home/jacob/Bureaublad/raise.sh sublime_text
sh /home/jacob/Bureaublad/raise.sh gnome-terminal

et

sh /home/jacob/Bureaublad/raise.sh chrome
2
Jacob Vlijm

Vous pouvez utiliser alt-tab pour basculer rapidement entre les programmes.

Vous pouvez également utiliser le bouton Super (aka bouton Windows) comme ceci: Super + numéro. par exemple. Super + 3 ouvrira la troisième application dans votre lanceur d'applications. Pour identifier rapidement les numéros associés aux applications, appuyez et maintenez le bouton super.

0
drizzle