Eu adoraria poder tirar proveito dos recursos do Notification Center da 10.8 no AppleScripts e nos scripts de shell que escrevo.
Existe um comando interno ou uma biblioteca de terceiros que eu possa usar em um script AppleScript ou shell?
Idealmente, o tipo e o ícone da notificação poderiam ser controlados, mas mesmo a capacidade de acionar um banner básico com um ícone de estoque (mas texto personalizado) seria apreciada.
terminal
applescript
mountain-lion
notification-center
command-line
Nathan Greenstein
fonte
fonte
Respostas:
Com o Mavericks e versões posteriores, você pode fazer isso usando a 'notificação de exibição' do AppleScript:
É isso - literalmente simples! Há 3 rd bibliotecas -party ou aplicativos necessária e é totalmente portátil para uso em outros sistemas. Notificação 10.9 na parte superior, 10.10 DP no meio, 10.10 na parte inferior.
O AppleScript pode ser executado a partir do shell usando / usr / bin / osascript:
Você também pode personalizar ainda mais o alerta adicionando…
uma legenda
Acrescente 'subtítulo' seguido da sequência ou variável que contém o subtítulo.
O exemplo acima produz a seguinte notificação:
som
Acrescente 'nome do som' seguido do nome de um som que será reproduzido juntamente com a notificação.
Nomes de sons válidos são os nomes dos sons localizados em…
~/Library/Sounds
/System/Library/Sounds
As notificações de postagem podem ser agrupadas como um script de linha de comando. O código a seguir pode ser executado no Terminal e adicionará um script a / usr / local / bin (deve existir, adicione a $ PATH) chamado
notify
.Este é o script que o acima irá adicionar para notificar.
Agora, para exibir uma notificação:
fonte
display notification
é que, quando você clica nele, a caixa de diálogo Abrir arquivo é exibida."display ... '$mytext' ..."
, mas necessidade escaparam aspas:"display notification \"$mytext\" ..."
.notificador de terminal
No README:
fonte
Eu só quero adicionar uma nota à resposta do @ grgarside, porque sei que muitas pessoas desejam ter um pop-up de notificação que só pode ser descartado com o clique do botão.
Encontrei a solução para você:
Na verdade, foi controlado por uma configuração na Preferência do sistema, em vez de algum parâmetro no script escrito. Essas duas imagens devem explicar tudo
Obrigado @grgarside pela ótima resposta.
fonte
Script Editor
é apenas paraScript Editor.app
eosascript
. Em um fluxo de trabalho de serviço, éAutomator Runner
. Quando dentroAutomator.app
, éAutomator
.Agora você pode fazer isso com o Growl2 ( disponível na App Store ). Instale o Growl e ative "OS X Notifications" (captura de tela)
Além disso, você precisará instalar o GrowlNotify para uma ferramenta de linha de comando para enviar notificações de Growl. Você pode baixar essa ferramenta gratuitamente na página de Download .
Agora você pode gerar notificações de Growl na linha de comando, que será encaminhada para o Centro de Notificações. Por exemplo:
Observe que atualmente não parece possível alterar o ícone do aplicativo.
fonte
--icon path/to/icon.png
para ícones.Recentemente, bifurquei o terminal-notifier para criar uma ferramenta de linha de comando para exibir alertas de notificação (com ações) e alertas de tipo de resposta.
Eu o uso com meus scripts de shell e aplicativos golang para obter respostas interativas dos usuários.
https://github.com/vjeantet/alerter
fonte
A solução do @grgarside é boa, mas é vulnerável à injeção de scripts, que pode ser um grande problema de segurança quando usado para, por exemplo, exibir o conteúdo do arquivo de log ou algo semelhante.
Isso deve ser mais seguro:
fonte
I have a "laser"
sem ser informado de que está tendo um erro de sintaxe ao "citar" suas "palavras". Com a fuga, você pode:script 'I have a "laser"'
Como o Growl não é gratuito e o notificador de terminal não está disponível nos sistemas anteriores à 10.8, eu costumo usar o cocoaDialog . É gratuito e de código aberto, portanto você provavelmente também pode distribuir junto com seus scripts.
Se você não precisar de muita personalização, também poderá usar os AppleScript,
display notification
que também podem ser chamados a partir do shell, como outros já mencionaram.Mas lembre-se de que o AppleScript parece exigir aspas duplas. Portanto, se você precisar de variáveis, isso não funcionará :
Você terá que usar aspas duplas. Isso é feio, mas funciona :
fonte
osascript -e 'display notification "Lorem ipsum dolor sit amet" with title "Title"'
(Esta é uma implementação alternativa baseada na excelente resposta do @ grgarside.)
AppleScript pode ser interpretado diretamente colocando
osascript
a linha shebang.Salve isso como
notify
em algum lugar do seu caminho, por exemplo/usr/local/bin/notify
, e torne-o executável (chmod +x notify
). Aceita uma mensagem e um título opcional. Se um tiver espaço em branco, coloque-o entre aspas para que o shell o interprete como um único argumento.fonte
Aqui está um que eu uso em um script ruby no OS X (para que eu possa iniciar um script e obter uma atualização mesmo depois de sair da janela):
fonte
Uma alternativa:
Em
.bash_profile
:Use o comando:
sys-notify "title" "message"
fonte
Documentação oficial
https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/DisplayNotifications.html
Copiando o texto aqui, caso o documento seja movido ou removido.
fonte
Obrigado, era exatamente o que eu precisava para alguns scripts de usuário. Fiz uma ligeira modificação para adicionar legenda e som. Se um valor não for fornecido, ele será ignorado.
Para o som, use um nome de arquivo de som sem a extensão de / System / Library / Sounds. Por exemplo, para usar o arquivo Ping.aiff, use Ping por US $ 4
fonte