2014-07-07 7 views
9

Sto usandoreindirizzato a editor di AppleScript su cliccando notifica mela

osascript -e 'display notification "Lorem ipsum dolor sit amet" with title "Title"' 

per visualizzare le notifiche in Mac. Tuttavia, facendo clic sulla notifica, mi sto reindirizzando all'editor di meleScript. È possibile per me reindirizzare l'utente a un URL o aprire una directory facendo clic sulla notifica che viene generata?

risposta

0

quindi sì, c'è un modo per fare quello che vuoi

ecco un tutorial here

questa è una versione semplificata che fa quello che ti piace, ma è necessario salvarlo come un'applicazione e trascinare un file su di esso.

on open theItems 
    display notification "Open stackoverflow ?" with title "Stackoverflow" 
    delay 2 
end open 

on run 

    tell application "Safari" 
     tell window 1 
      set current tab to (make new tab with properties {URL:"http://www.stackoverflow.com"}) 
     end tell 
    end tell 
end run 
+0

Non vorrei usare questa versione semplificata. Dovendo trascinare un file su una goccia per attivare la notifica, sicuramente non otterrà ciò che desidera. Non riesco a pensare a nessuna situazione che sarebbe utile. Si desidera semplicemente un gestore di esecuzione che invii una notifica a meno che non venga rilevato dalla selezione della notifica e, in tal caso, avviare una directory o un URL. – jweaks

+0

Non sono sicuro di come richiedere le notifiche iniziali. Tuttavia, questa risposta mostra come utilizzare l'evento click di una notifica sul display – mcgrailm

+0

Bene, tranne che non "mostra come utilizzare l'evento click di un display non", a meno che non si avvii la notifica trascinando un file su un gocciolina. L'OP desidera l'avvio a livello di codice, come indicato con la chiamata osascript.Ma, può modificare quello da macosxautomation per farlo, ma tutto deve essere nel gestore di esecuzione. – jweaks

4

Il gestore di esecuzione viene chiamato solo se lo script viene salvato come app, preferibilmente un'app di soggiorno. In ogni caso, l'app deve essere ancora in esecuzione quando qualcuno fa clic sulla notifica. Non otterrai questo comportamento da una semplice stringa osascript.

È possibile ottenere un file di script compilato (che può memorizzare le proprietà in modo persistente), ma sarà comunque necessario distinguere tra l'evento di esecuzione che si verifica quando si esegue lo script e l'evento di esecuzione che viene chiamato quando qualcuno fa clic sulla notifica.

Posso suggerire un paio di soluzioni qui.

  • utilizzare una libreria python per sparare le notifiche e dimenticare AppleScript/OSA. Potete trovare alcune informazioni, e varie soluzioni a questo link StackOverflow: Python post osx notification

  • Impostare un soggiorno aperto AppleScript app come una sorta di 'Notification Server' e inviare un messaggio a che (possibilmente con osascript , a meno che non sia possibile inviare un evento Apple raw al "server" di python) quando si desidera impostare alcuni rapporti di notifica. Questo è complicato e sembra troppo complesso, rispetto al mio primo suggerimento. In particolare, potrebbe essere ancora necessario fare confusione con le impostazioni sulla privacy (specialmente se su Mavericks o successivi) per consentire a OSAscript di accedere agli eventi di sistema.

Qui ci sono un paio di link che possono guidare l'utente con quest'ultimo approccio, ma ho davvero cosa il primo suggerimento ti porterà ulteriormente, con un minor numero di lacrime:

http://jacobsalmela.com/bash-script-enable-access-assistive-devices-programmatically-os-x-mavericks-10-9-x-simulate-keystrokes/

http://support.apple.com/kb/HT6026?viewlocale=en_US&locale=en_US

+0

Anche questo potrebbe essere utile: https://github.com/alloy/terminal-notifier – brennanyoung