J'ai trouvé quelques options qui devraient couvrir la plupart des applications. L'une de ces options pourrait être utilisée pour créer un flux de travail Automator afin de rendre l'exécution du script plus pratique.
Option 1 : Commande Terminal
La commande open
peut être utilisée pour ouvrir une application en utilisant l'option -a
. Vous pouvez ajouter l'option -g
pour ouvrir l'application sans la mettre au premier plan. Cela ne fonctionne pas pour Slack ou Google Chrome. Je soupçonne que c'est parce qu'ils sont des applications multiplateformes construites différemment et ne sont pas des citoyens macOS parfaits. Cette solution est préférable si elle fonctionne pour l'application désirée.
open -g -a "Microsoft Word"
Option 2 : AppleScript
Vous pouvez utiliser AppleScript pour activer une application et la masquer si elle n'était pas déjà en cours d'exécution. L'application se lancera et volera toujours le focus, mais le script retardera un court laps de temps pour garantir que l'application se lance avant de tenter de la masquer. Ce n'est certainement pas une solution parfaite, mais ça marche.
set appName to "Slack"
-- Vérifier si l'application est en cours d'exécution
set appIsRunning to l'application appName is running
-- Activer l'application
tell l'application appName to activate
if not appIsRunning then
-- Si l'application n'est pas en cours d'exécution, retarder puis masquer l'application
delay 1 -- augmenter cette valeur si nécessaire
tell l'application "Finder" to set visible of process appName to false
else
-- Si l'application est en cours d'exécution, compter le nombre de fenêtres.
tell l'application "System Events" to tell le processus appName to set windowCount to count of fenêtres
-- Si aucune fenêtre n'est ouverte, en ouvrir une nouvelle.
if windowCount = 0 then
-- Commande pour ouvrir une fenêtre ici. Je n'ai pas pu en trouver une pour Slack
end if
end if
Voir cette réponse pour plusieurs commandes pour ouvrir de nouvelles fenêtres si nécessaire.
0 votes
Je rencontre toujours ce problème en 2021 avec Slack.. La réponse actuelle n'est pas vraiment idéale.
0 votes
@MattPengelly c'est une application Electron, elles font toutes ça.