2010-05-12 3 views
7

Est-il possible d'utiliser un AppleScript pour accéder aux éléments de menu qui apparaissent lorsque vous cliquez avec le bouton droit sur une icône du Dock?Accéder à l'icône du Dock avec le bouton droit de la souris avec AppleScript

Plus précisément, voici ce que je veux faire:

utiliser Google Chrome comme navigateur Web sur Mac OS X Snow Leopard. Je suis un accro du raccourci clavier, et j'utilise QuickSilver pour créer des raccourcis clavier pour tout ce que je peux. L'une des choses les plus courantes que je fais est d'ouvrir une nouvelle fenêtre de navigateur Web. Mais j'utilise fréquemment les espaces pour partitionner mes tâches sur lesquelles je travaille actuellement, et lorsque j'ouvre un navigateur Web ou une page Web avec un déclencheur QuickSilver, les espaces basculent vers le dernier espace sur lequel j'ai utilisé Chrome et ouvrent un nouvel onglet, souvent me distrait pendant des heures parce que cela m'amène à un espace différent et donc une tâche différente. Je peux résoudre ce problème en cliquant avec le bouton droit sur l'icône Google Chrome et en cliquant sur l'option "Nouvelle fenêtre", qui ouvre une nouvelle fenêtre sur l'espace actuel. Mais en AppleScript, pour faire n'importe quoi avec Google Chrome, la première chose que je dois faire est de l'activer, ce qui me ramène au problème original! Quelqu'un peut-il penser à une solution à ce problème, AppleScript ou autre? C'est devenu un problème sérieux. Lorsque j'ai utilisé Firefox, j'ai résolu le problème en changeant un élément de préférence qui disait «Toujours ouvrir les liens contextuels dans une nouvelle fenêtre» ou quelque chose comme ça, ce qui était une sorte de marteau, mais ça a marché. Je peux toujours revenir à Firefox, mais je pensais que je poserais ma question ici en premier. Quelqu'un avec des idées?

+0

Je viens de trouver ce tout en recherchant des exemples AppleScript de clic droit - pour exactement la même raison que vous . –

Répondre

3

Pour ceux qui sont intéressés, je pense que j'ai une solution de travail raisonnable à ce problème, mais cela ne nécessite pas un clic droit sur les icônes de la station d'accueil. Tout d'abord, vous devez décocher "Lors du passage à une application, basculez vers un espace avec des fenêtres ouvertes pour l'application" dans la sous-fenêtre des préférences Spaces des Préférences Système. Ensuite, je l'ai écrit le AppleScript suivant:

tell application "Google Chrome" to activate 

tell application "System Events" 
    tell process "Google Chrome" 
     try 
      set var to get name of window 1 
     on error 
      set var to "no window exists!!!" 
     end try 
    end tell 
end tell 

if var is "no window exists!!!" then 
    tell application "System Events" 
     tell process "Google Chrome" 
      click menu item "New Window" of menu "File" of menu bar 1 
     end tell 
    end tell 
else 
    tell application "System Events" 
     tell process "Google Chrome" 
      click menu item "New Tab" of menu "File" of menu bar 1 
     end tell 
    end tell 
end if 

Je lance ce AppleScript à l'aide Spark, ce qui me permet d'assigner une touche de raccourci.

Il est un peu lent, en particulier lorsque le système est sous charge, mais ne prend généralement pas plus d'une seconde à fonctionner. Cela évite aussi le problème que j'avais avec Firefox, où je finirais avec des dizaines de fenêtres ouvertes à la fin de la journée.

+0

Je n'avais jamais vu cette option sur le volet pref avant (caché en bas) - tellement cool. –

3

Les builds Chromium nightly contiennent désormais le support AppleScript, ce qui devrait se faire rapidement dans Chrome. Cela signifie que vous pouvez faire:

tell application "Chromium" 
    make new window 
    activate 
end tell 
+0

merci pour les heads up! J'espère que cela fera bientôt la version stable; Je ne suis pas beaucoup pour les nightlies sur quelque chose d'aussi fondamental qu'un navigateur Web. –

14

Je ne sais pas si vous êtes toujours intéressé, mais ...

tell application "Dock" 
    activate 
end tell 
tell application "System Events" 
    tell process "Dock" 
     set frontmost to true 
     activate 
     tell list 1 
      perform action "AXShowMenu" of UI element "Google Chrome" 
      delay 1 
      repeat 4 times -- count number of items to the one you want 
       key code 126 -- up arrow 
       -- key code 125 -- down arrow 
      end repeat 
      delay 1 
      repeat 2 times 
       key code 36 -- return key 
      end repeat 
     end tell 
    end tell 
end tell 
+0

en fait, très utile. Merci –

+0

pas de problème. Je devais faire quelque chose de similaire pour le travail et quand je faisais des recherches, je suis tombé sur votre question mais je n'étais pas sûr si vous la regarderiez toujours. – George

+0

Nice! Cela m'a aidé à contrôler Wimp, une application Adobe Air qui n'exporte pas ses éléments de menu vers Quicksilver à moins que ce soit l'application la plus en avant. –

Questions connexes