10 votes

Peut-on créer un raccourci pour basculer la visibilité de la barre de menus (qui persisterait, comme celle du dock) ?

Je peux choisir dans les Préférences Système que la barre de menus soit toujours visible ou cachée avec un affichage automatique (l'affichage automatique étant affiché au survol ou affiché par focus par raccourci clavier).

Mais quand je travaille, je veux que la barre de menus soit toujours visible. Et quand je recrée, je veux qu'elle soit généralement cachée.

J'aime que avec le dock je peux appuyer sur commandeoptiond pour afficher ou cacher le dock, et il reste affiché ou caché jusqu'à ce que j'appuie à nouveau sur le même raccourci.

J'aimerais que la barre de menus fonctionne de la même manière. Est-il possible de créer un tel raccourci d'une manière ou d'une autre?

3voto

user3439894 Points 52496

Vous avez demandé, "Est-il possible de créer un raccourci pour basculer la visibilité de la barre de menu (qui persisterait, comme celle du dock) ?" et la réponse courte est, oui.

Cependant, la réponse plus détaillée est que, bien qu'il soit techniquement et nativement possible de créer un flux de travail de Service Automator auquel un raccourci clavier est attribué pour masquer/afficher la barre de menu dans OS X 10.11 et plus récent, y compris le macOS actuel, cela n'est pas sans ses problèmes.

  • Vous devriez attribuer au Service Automator un raccourci clavier qui n'interfère pas avec un raccourci existant dans chaque application qui pourrait être au premier plan lorsque vous déclenchez le raccourci clavier du service.
  • Chaque application qui est au premier plan lorsque le raccourci clavier du service est déclenché devrait être ajoutée à Préférences Système > Sécurité & Confidentialité > Confidentialité > Accessibilité, afin que le raccourci clavier du service fonctionne.

Une solution possible au deuxième point ci-dessus serait s'il y a une application tierce qui peut être configurée globalement pour déclencher le flux de travail du Service Automator (ou le code AppleScript en tant que script ou application AppleScript ne utilisant pas un Service Automator). Cela pourrait inclure des applications comme Alfred, FastScripts, Karabiner, Karabiner-Elements, Keyboard Maestro, etc., et n'ayant pas testé ces applications tierces dans ce scénario particulier, je ne peux que vous inviter à les explorer.

Alors, que diriez-vous d'une application AppleScript que vous pourriez placer dans le Dock, afin qu'elle soit facilement accessible à cliquer, qui permettrait de basculer l'état de la barre de menu ? Vous n'auriez qu'à ajouter cette application AppleScript à Préférences Système > Sécurité & Confidentialité > Confidentialité > Accessibilité, pour qu'elle fonctionne.

A défaut d'une application tierce ou d'un Service Automator et tout simplement en tant qu'application AppleScript, vous avez un raccourci clavier intégré via Spotlight, en appuyant sur espace et les premiers caractères du nom que vous avez donné à l'application AppleScript, puis appuyez sur entrer. Par exemple, nommez-le tmb.app pour basculer la barre de menu, alors vous appuyez sur espacetmentrer pour déclencher l'application AppleScript. Après tout, je doute que vous ayez déjà une application nommée tm installée.

Cependant, cela aussi n'est pas sans problèmes potentiels en ce sens qu'il repose sur le Scriptage d'Interface Utilisateur (UI Scripting), ce qui signifie qu'il doit ouvrir Préférences Système pour accéder aux paramètres généraux et cocher la case "Masquer et afficher automatiquement la barre de menu" et fermer Préférences Système. Cela signifie qu'une fois que vous avez déclenché l'application, vous devez la laisser s'exécuter et ne pas voler manuellement le focus depuis Préférences Système pendant que les événements de Scriptage d'Interface Utilisateur ont lieu. En d'autres termes, vous devez arrêter le multitâche pendant quelques secondes.

En partie, l'un des problèmes en utilisant AppleScript et/ou le Scriptage d'Interface Utilisateur pour masquer/afficher la barre de menu est qu'il n'est pas aussi élégant que de masquer le Dock avec son raccourci clavier intégré, mais c'est tout de même faisable.

Tout cela étant dit, voici le code AppleScript, qui peut être utilisé dans un script/application AppleScript, un Service Automator, ou éventuellement une application tierce, qui permettra de basculer l'état de la barre de menu dans OS X 10.11 et plus récent via le Scriptage d'Interface Utilisateur.


tell application "Préférences Système"
    reveal pane id "com.apple.preference.general"
    delay 1
    tell application "Événements Système"
        click checkbox "Masquer et afficher automatiquement la barre de menu" of window "Général" of process "Préférences Système"
    end tell
    quit
end tell

Remarquez qu'il n'y a pas de vérification d'erreur pour s'assurer que ce code fonctionne sous OS X 10.11 et plus récent, donc ne tentez pas de l'utiliser dans des versions d'OS X antérieures à 10.11. Notez également que la valeur de la commande delay peut nécessiter d'être ajustée selon les conditions de fonctionnement de votre système.

3voto

Guest Points 11
  1. Création d'une application avec Automator en utilisant ce code AppleScript de "@ user3439894". Vous pouvez essayer de régler le délai à 0.1 qui a fonctionné pour moi.

    tell application "Préférences Système"
        révéler le volet id "com.apple.preference.general"
        retard 1
        tell application "Événements Système"
            cliquez sur la case à cocher "Masquer et afficher automatiquement la barre des menus" de la fenêtre "Général" du processus "Préférences Système"
        end tell
        quitter
    end tell
  2. Création d'un raccourci clavier pour l'application et assignation à cmd-ctrl-9. Fonctionne parfaitement.

Instructions ici: https://appleinsider.com/articles/18/03/14/how-to-create-keyboard-shortcuts-to-launch-apps-in-macos-using-automator

1voto

wch1zpink Points 6067

Apportant quelques ajustements mineurs au code original de la réponse de l'utilisateur 3439894. Exécuter ce code révisé ne mettra pas l'application Préférences Système au premier plan.

tell application "Préférences Système"
    révéler le volet id "com.apple.preference.general"
end tell
tell application "Événements Système" to tell processus "Préférences Système" to tell fenêtre "Général"
    cliquer sur la case à cocher "Masquer et afficher automatiquement la barre de menus" 
end tell
délai 1
quitter l'application "Préférences Système"

Dans certains commentaires à ma réponse, il a été souligné que l'endroit où j'ai la commande de délai dans mon script, fait échouer le script. Sur mon système, ce script fonctionne.

entrer la description de l'image ici

Cependant, ce script sur mon système ne fonctionnera pas si je mets la commande de délai avant l'événement système.

entrer la description de l'image ici

1voto

user3439894 Points 52496

Je publie ceci comme une deuxième réponse au lieu de modifier ma réponse d'origine car cette nouvelle version de l'exemple AppleScript accommode les problèmes soulevés avec l'utilisation de la commande delay et où elle était placée dans le code présenté par wch1zpink et moi-même entre nos versions du code.

Le nouveau code enveloppe une valeur beaucoup plus petite pour la commande delay dans une boucle repeat, ce qui rend le code global plus rapide tout en accommodant la différence de synchronisation en fonction des spécifications du système de l'ordinateur sur lequel il est exécuté. De plus, en raison de l'utilisation du Scripting UI, les deux boucles repeat garantissent que les éléments de l'interface utilisateur soient disponibles ou aient été modifiés respectivement avant de procéder dans le code.

Ce code a été testé sous macOS High Sierra et a fonctionné comme une application AppleScript, un service Automator, tel que décrit dans ma réponse d'origine, et comme un fichier .scpt AppleScript déclenché par FastScripts avec un raccourci clavier assigné, comme avec le service Automator.

Exemple AppleScript code:

if running of application "Préférences Système" then
    try
        tell application "Préférences Système" to quit
    on error
        do shell script "killall 'Préférences Système'"
    end try
end if

repeat while running of application "Préférences Système" is true
    delay 0.01
end repeat

tell application "Préférences Système" to ¬
    reveal pane id "com.apple.preference.general"

tell application "Événements Système"

    repeat until exists checkbox ¬
        "Masquer et afficher automatiquement la barre de menu" of ¬
        window "Général" of process "Préférences Système"
        delay 0.01
    end repeat

    set cbVal to value of checkbox ¬
        "Masquer et afficher automatiquement la barre de menu" of ¬
        window "Général" of process "Préférences Système"

    click checkbox "Masquer et afficher automatiquement la barre de menu" of ¬
        window "Général" of process "Préférences Système"

    repeat until cbVal is not (value of checkbox ¬
        "Masquer et afficher automatiquement la barre de menu" of ¬
        window "Général" of process "Préférences Système")
        delay 0.01
    end repeat

    Faites défiler selon besoin pour voir le <em>code</em> complet.


Note : L'exemple AppleScript code n'est qu'un exemple et, en dehors de la manipulation d'erreur incluse, ne contient pas de manipulation d'erreur supplémentaire qui pourrait être appropriée. Il incombe à l'utilisateur d'ajouter toute manipulation d'erreur qui pourrait être appropriée, nécessaire ou souhaitée. Consultez l'instruction try et l'instruction error dans le Guide du langage AppleScript. Voir également, Travailler avec des erreurs.

Remarquez également que je ne suis pas affilié à <strong>Red Sweater Software</strong>, le développeur de <strong>FastScripts</strong>, juste un utilisateur satisfait de leur produit.

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