2 votes

Ouvrir une nouvelle fenêtre d'application via la ligne de commande

Contexte

Si vous avez besoin d'une nouvelle fenêtre d'une application, vous pouvez Cliquez à droite sur l'application dans le dock et cliquez New Window . C'est très fastidieux et cela fait perdre un temps précieux. J'aimerais avoir un raccourci pour cela.

Actuellement, j'utilise iCanHazShortcut qui permet d'exécuter des commandes de terminal à partir de raccourcis. J'utilise actuellement open /Applications/Firefox.app --new (Exemple). Cela ouvre une nouvelle instance d'une application. Je n'aurais généralement aucun problème avec cela si cela ne paralysait pas le dock et l'ensemble du gestionnaire de fenêtres au fil du temps. Donc :

Question

Comment ouvrir une nouvelle fenêtre d'une application avec une commande de terminal ?

Contraintes :

  • Si aucune application n'est en cours d'exécution, la commande doit bien sûr créer une instance de l'application.
  • Je ne cherche pas une réponse spécifique pour mon exemple Firefox en haut, mais une approche générique (parce que j'ouvre plusieurs applications différentes par des raccourcis).

0 votes

Voulez-vous un autre raccourci pour chacun l'application ? Vous devriez être en mesure de créer un service en utilisant simplement l'AppleScript dans la réponse ci-dessous, puis en créant un raccourci clavier pour cela, sans applications tierces ou sans configurer de nouvelles commandes Terminal.

0 votes

Nous avons probablement des définitions très différentes de "fastidieux" et de "temps précieux". Ouvrir ou naviguer vers Terminal, saisir plus de 10 caractères est fastidieux dans mon vocabulaire. Surtout quand on peut utiliser Spotlight pour ouvrir n'importe quelle application en entrant quelques caractères au début de son nom et si l'application est déjà ouverte, il suffit d'ajouter cmd + n après l'activation de la fenêtre de l'application.

4voto

David Anderson Points 30783

Ajoutez la ligne suivante à votre ~/.zshrc fichier. (Ou, votre ~/.bashrc si vous utilisez bash). Si le fichier n'existe pas, alors créez le fichier.

openwin() { osascript -e "tell application \"$1\" to activate" -e 'tell application "System Events" to keystroke "n" using command down'; }

La prochaine fois que vous ouvrirez une fenêtre de Terminal, vous pourrez utiliser la fonction ci-dessus pour envoyer la combinaison de touches + N à l'application spécifiée. Par exemple, pour ouvrir une nouvelle fenêtre dans Firefox, entrez ce qui suit.

openwin firefox

Pour Microsoft Edge, saisissez l'un des éléments suivants.

openwin "microsoft edge"
openwin microsoft\ edge

La combinaison de touches + N est la solution par défaut dans la plupart des applications pour ouvrir une nouvelle fenêtre.

Lors de la première utilisation de la fonction ci-dessus, vous devrez peut-être effectuer les opérations suivantes.

  • Autorisez l'application Terminal à envoyer des événements Apple à System Events. Cette autorisation se trouve sous Automatisation, dans l'onglet Confidentialité du volet Sécurité et confidentialité de l'application Préférences système.
  • Autoriser osascript pour envoyer des frappes au clavier. Ceci est autorisé en ajoutant le Terminal dans l'onglet Confidentialité du volet Sécurité et confidentialité de l'application Préférences système.

Une alternative à l'utilisation d'une fonction serait d'installer un script. Cela aurait l'avantage d'être personnalisable. Ci-dessous un exemple de script qui est nommé openwin .

#!/bin/zsh
pgrep -i -x -q -U $UID "$1"
result=$? # If application is running then result will equal 0.
script=()
case ${1:l} in
mail)
    script+=(-e "tell application \"$1\" to activate")
    if [[ result -eq 0 ]]; then
        script+=(-e 'tell application "System Events" to keystroke "n" using {command down, option down}')
    fi;;

"microsoft word")
    script+=(-e "tell application \"$1\" to activate")
    script+=(-e 'tell application "System Events" to keystroke "n" using command down');;

*)
    script+=(-e "tell application \"$1\" to activate")
    if [[ result -eq 0 ]]; then
        script+=(-e 'tell application "System Events" to keystroke "n" using command down')
    fi
esac
if [[ $#script -ne 0 ]]; then
    #printf "%s '%s'\n" $script # <-- Just for debugging.
    osascript $script
fi

Voici les commandes pour installer le script. Ici, je suppose que /usr/local/bin est déjà dans votre PATH variable.

sudo mkdir -p /usr/local/bin
sudo cp openwin /usr/local/bin
sudo chown root:wheel /usr/local/bin/openwin
sudo chmod a+x /usr/local/bin/openwin

La valeur par défaut de l'exemple script est d'activer l'application, puis d'envoyer la commande + N uniquement si l'application est déjà en cours d'exécution.

L'exemple script comporte les personnalisations suivantes.

  • Pour l'application Mail, le + alt + N est envoyée au lieu de la combinaison de touches par défaut + N .
  • Pour l'application Microsoft Word, le + N est envoyée, que l'application soit en cours d'exécution ou non.

Références

0 votes

Génial ! Note : Je n'ai pas pu utiliser la fonction openwin dans la commande iCanHazShortcut . J'avais besoin d'écrire la commande complète pour chaque application que j'essayais d'ouvrir. Par exemple osascript -e "tell application \"firefox\" to activate" -e 'tell application "System Events" to keystroke "n" using command down'; .

0 votes

@DarkTrick La version script de cette réponse devrait fonctionner pour iCanHazShortcut.

0 votes

Pas de référence future : Ces commandes mènent à ouverture de deux fenêtres de l'application dans certains cas (peut-être, s'il n'a pas déjà commencé).

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X