Kysymys:
Kuinka voin laukaista ilmoituskeskuksen ilmoituksen AppleScript- tai shell-komentosarjalta?
Nathan Greenstein
2012-07-25 23:57:06 UTC
view on stackexchange narkive permalink

Haluaisin mielelläni hyödyntää 10.8: n Notification Center -ominaisuuksia kirjoittamissani AppleScripts- ja shell-skripteissä.

Voinko käyttää sisäänrakennettua komentoa tai kolmannen osapuolen kirjastoa käytetäänkö joko AppleScript- tai shell-komentosarjassa?

Ihannetapauksessa ilmoituksen tyyppiä ja kuvaketta voidaan hallita, mutta jopa pelkkä kyky käynnistää perusbanneri osakekuvakkeella (mutta mukautetulla tekstillä) olisi arvostettu .

http://stackoverflow.com/questions/24606225/redirected-to-applescript-editor-on-clicking-apple-notification
Kaksitoista vastused:
#1
+460
grg
2013-12-29 19:46:11 UTC
view on stackexchange narkive permalink

Mavericks ja uudemmat versiot, voit tehdä tämän käyttämällä AppleScriptin 'näyttöilmoitusta':

  näytä ilmoitus "Lorem ipsum dolor sit amet" otsikolla "Otsikko"  

Siinä kaikki - kirjaimellisesti niin yksinkertaista! Ei tarvita 3 rd -puolueen kirjastoa tai sovellusta, ja se on täysin kannettava käytettäväksi muissa järjestelmissä. 10.9-ilmoitus ylhäällä, 10.10 DP keskellä, 10.10 alareunassa.

AppleScript voidaan suorittaa komentotulkista käyttämällä / usr / bin / osascript:

  osascript -e 'näyttää ilmoituksen "Lorem ipsum dolor sit amet" otsikolla "Otsikko"'  

Voit myös muokata hälytystä edelleen lisäämällä…

  • alaotsikko

    Liitä 'alaotsikko' ja sen jälkeen merkkijono tai muuttuja, joka sisältää tekstityksen.

      näytä ilmoitus "viesti" otsikolla "otsikko" alaotsikko "alaotsikko"  

    Yllä oleva esimerkki tuottaa seuraavan ilmoituksen:

  • ääni

    Liitä 'äänen nimi', jota seuraa ilmoituksen kanssa toistettavan äänen nimi.

      näytä ilmoitus "viesti" äänen nimi "Äänen nimi"  

    Kelvolliset äänenimet ovat äänien nimiä, jotka sijaitsevat…

    • ~ / Library / Sounds
    • / System / Library / Äänet

Lähetysilmoitukset voidaan kääriä s komentorivin komentosarja. Seuraava koodi voidaan suorittaa terminaalissa ja se lisää komentosarjan tiedostoon / usr / local / bin (täytyy olla olemassa, lisää tiedostoon $ PATH) nimeltään notify.

  cd / usr / local / bin && echo -e "#! / bin / bash \ n / usr / bin / osascript -e \" näyttöilmoitus \\\ "\ $ * \\\" \ "" > ilmoita && x ilmoita; cd -  

Tämä on komentosarja, jonka yllä oleva lisää ilmoitettavaksi.

  #! / bin / bash / usr / bin / osascript -e "näytä ilmoitus \" $ * \ ""  

Nyt saat ilmoituksen näkyviin:

  ilmoita Lorem ipsum dolor sit ametsleep 5; ilmoita Hidas-komento valmis  
Mikä on `näyttämisen` polku? Minulla on Mavericks, mutta en löydä sitä. Kiitos!
@ceilingcat Voisitteko selventää mitä tarkoitat? Mikä ei toimi?
Sain `-bash: display: komentoa ei löydy` Polkuni on kuitenkin eräänlainen mutkikas, joten olisi mukavaa tietää tarkalleen missä` display` sijaitsee.
@ceilingcat Tämä on AppleScript. Suorita se Terminalissa käyttämällä osascriptia (katso vastaus).
Ainoa ongelma `` ilmoitusilmoituksessa '' on se, että kun napsautat sitä, avoin tiedosto -valintaikkuna tulee näkyviin.
@ ɹoƃı Mitään ei tapahdu, kun napsautan sitä 10.10. Mavericks-juttu.
Onko mahdollista saada ilmoituksen ponnahdusikkuna olemassa ikuisesti (ei piilota automaattisesti N sekunnin jälkeen), kunnes käyttäjä on nimenomaisesti napsauttanut sitä?
Kuinka lisätään aikaraja ilmoituksen olemassaololle ruudulla?
Pari kysymystä - 1. Voinko lisätä tiettyjä toimintoja ilmoituksen napsautuksella?Sano, että haluan suorittaa tietyn komentotiedoston.Olen Yosemiten kanssa, ja se käynnistää tiedostoselaimen.2. Kuinka voin mukauttaa ilmoitusta lisävaihtoehdoilla, kuten näyttää painike sivussa sen päällä, kuten mitä tapahtuu, kun seuraava iTunes-kappale toistetaan automaattisesti ja ilmoitus ilmestyy kyseisestä kappaleesta, tai kun napsautat ilmoitusta, kunsinulla on uusi viesti, kaksi vaihtoehtoa tulee esiin - Lähetetäänkö ja Perutaanko?
Mikään, mitä olen löytänyt, ei osoita, että toimintaa olisi mahdollista hallita (mitä tapahtuu, kun napsautat ilmoitusta).http://macosxautomation.com/mavericks/notifications/01.html on kätevä, FYI.
Hyvät naiset ja herrat, tunti tutkimuksen jälkeen Internetissä olen oppinut, kuinka annan ilmoitusikkunan pysyä, kunnes käyttäjä hylkää sen! Sitä ohjasi itse asiassa Järjestelmäasetusten asetus, eikä jokin parametri kirjoitetussa komentosarjassa. Näiden kahden kuvan pitäisi selittää kaikki http://i.imgur.com/cNOqFyX.jpg http://i.imgur.com/i8oyoan.jpg Pidä hauskoja kavereita ja kiitos @grgarside upeasta vastauksesta.
Huomaa, että tekstin on oltava lainausmerkeissä.Yksittäiset lainaukset eivät toimi.Joten jos tarvitset muuttujaa tekstiin, et voi kirjoittaa `` display ... '$ mytext' ... "` `, mutta tarvitset vältettyjä lainausmerkkejä:` `näytä ilmoitus \" $ mytext \ "..." ".
`näyttöilmoitus` ei toimi minulle El Capitanissa, vaikka` näyttöhälytys` toimii hyvin.[Asiakirjat] (https://developer.apple.com/library/mac/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html#//apple_ref/doc/uid/TP40000983-CH216-SW224) väittävät molemmat työt.Onko mitään käsitystä tästä?
Kuten Vic Jang mainitsi, mutta ei selittänyt selkeästi, voit muuttaa asetuksia ilmoitusten esitystavaksi valitsemalla Järjestelmäasetukset> Ilmoitukset> Komentosarjaeditori> Vaihda "Bannerit" "Alerts".Tällä tavoin voit ainakin napsauttaa "Sulje" sen sijaan, että näet Avaa tiedosto -valintaikkunan, kun hylkäät ilmoituksen.
@Dan Ilmoituksen napsauttaminen ei ole * koskaan * hylkäystoiminto, minkä vuoksi komentosarjaeditori käynnistetään napsauttamalla.Voit ohittaa bannerin pyyhkäisemällä kahdella sormella samalla, kun viet sen päälle.Voin tutkia vaihtoehtoja, jos minulla on jossakin vaiheessa aikaa.
mukautettu kuva ilmoitusta varten?
Näyttää siltä, että "äänen nimi" ei salli sinun enää toistaa mukautettuja ääniä kansiossa ~ / Library / Sounds.Kukaan tietää korjauksen?MacOS 10.13.2: n käyttö.
#2
+99
Steve Moser
2012-07-26 01:19:48 UTC
view on stackexchange narkive permalink

terminal-notifier

README-tiedostosta:

terminal-notifier on komentorivityökalu Mac OS X: n käyttäjäilmoitusten lähettämiseen , jotka ovat saatavilla Mac OS X 10.8 -käyttöjärjestelmässä.

Se on tällä hetkellä pakattuna sovelluspakettina, koska NSUserNotification ei toimi Foundation-työkalulla. tutka: // 11956694

Kicker käyttää tätä työkalua näyttämään tiedostojärjestelmän muutoksista johtuvien komentojen tilan. (v3.0.0)

Lataa

Valmiit binäärit, jotka on allekirjoitettu koodilla ja käyttövalmiina, ovat saatavana lataukset -osiosta.

Käyttö

$ ./terminal-notifier.app/Contents/MacOS/terminal-notifier ryhmätunnus lähettäjän nimi viesti [paketin tunnus]

Päätelaite-ilmoittajan käyttämiseksi sinun on kutsuttava binaari sisällä sovelluspaketti.

Ensimmäinen argumentti määrittää ryhmän, johon ilmoitus kuuluu. Kaikissa ryhmissä vain yksi ilmoitus näytetään koskaan korvaamalla aiemmin lähetetyt ilmoitukset. Esimerkkejä ovat: lähettäjän prosessitunnus, joka kattaa ilmoitukset ainutlaatuisella prosessilla, tai nykyinen työhakemisto, joka kattaa projektin ilmoitukset.

Toinen ja kolmas argumentti kuvaavat itse ilmoitusta ja ovat sen otsikko. ja "viesti". Voit esimerkiksi ilmoittaa ilmoituksen lähettäjälle käyttäjälle määrittämällä lähettäjän nimen otsikoksi.

Neljäs ja viimeinen argumentti on valinnainen. Se määrittää, mikä sovellus tulisi aktivoida, kun käyttäjä napsauttaa ilmoitusta. Oletusarvoisesti tämä aktivoi Terminal.app-sovelluksen käynnistääksesi uuden sovelluksen, määritä sen sijaan sovelluksen nipputunnus. Esimerkiksi käynnistääksesi Safari.app-sovelluksen käytä: com.apple.Safari.

Suloinen, hieno kirjasto! Haluaisitko nähdä sen päivitettynä ohjaamalla kuvaketta ja hälytys vs. banneri, mutta ehdottomasti hyödyllinen. Kiitos linkistä! http://i.imgur.com/tsCeK.png
Upea pieni sovellus, loin kantoraketin ja laitoin hakemistoon / usr / local / bin, jotta voin käyttää sitä missä tahansa terminaalista jne. Launcher-komentosarja: #! / Bin / bash cd /Applications/terminal-notifier.app/Contents/ MacOS ./terminal-notifier $ *
Launcher on hyödyllinen, jos muutat sitä hieman, se toimii välilyönnillä lainatun tekstin kanssa: #! / Bin / bashcd /Applications/terminal-notifier.app/Contents/MacOS ./terminal-notifier "$ @"
#3
+36
Vic Jang
2015-11-07 06:36:45 UTC
view on stackexchange narkive permalink

Haluan vain lisätä muistiinpanon @ grgarside -vastaukseen, koska tiedän, että monet ihmiset haluavat ilmoituksen ponnahdusikkunan, joka voidaan hylätä vain napin painalluksella.

Comparison

Löysin sinulle ratkaisun:

Sitä ohjasi itse asiassa Järjestelmäasetusten asetus eikä jokin parametri kirjoitetussa komentosarjassa. Näiden kahden kuvan pitäisi selittää kaikki.

Kiitos @grgarside erinomaisesta vastauksesta.

System Preference

Huomaa, että tietty sovellus vaihtelee.`Script Editor 'on vain` Script Editor.app` ja `osascript`.Palvelun työnkulussa se on `` Automator Runner ''.Kun se on `` Automator.app '' -sovelluksessa, se on `` Automator ''.
Minusta on ärsyttävää, että jos napsautan banneria, se tuo esiin Script Editor -sovelluksen.Haluaisin, että se vain katoaa napsautuksella, mutta tämä viesti osoittaa, että voit viedä hiiren sen päälle ja ohjauslevy pyyhkäisemällä oikealle, jotta se menee pois hiljaa: http://osxdaily.com/2012/09/05/dismiss-Ilmoitukset-os-x-pyyhkäise nopeasti /
@JoshuaGoldberg Kiitos, että lisäsit sen!Huomasin, että eräänä päivänä intuitiivisesti, mikä on yksi asia, josta pidän Mac OS X: ssä, se toimii samalla tavalla kuin odotat sen toimivan :)
#4
+23
Gerry
2012-09-20 18:25:15 UTC
view on stackexchange narkive permalink

Voit nyt tehdä tämän Growl2: n kanssa ( saatavana App Storesta). Asenna Growl ja ota käyttöön "OS X -ilmoitukset" (kuvakaappaus)

enter image description here

Lisäksi sinun on asennettava GrowlNotify komentorivityökalulle Growl-ilmoitusten lähettämistä varten. Voit ladata tämän työkalun ilmaiseksi lataussivulta.

Voit nyt luoda Growl-ilmoituksia komentoriviltä, ​​jotka välitetään edelleen Ilmoituskeskukseen. Esimerkiksi:

  growlnotify -n "My App" -m "Hello world"  

enter image description here

Huomaa, että tällä hetkellä ei näytä olevan mahdollista muuttaa sovelluskuvaketta.

Hyvä lähestymistapa, varsinkin jos murina on jo asennettu.
Luulen, että saatat pystyä käyttämään vaihtoehtoa - --ikon polku / kohteeseen / icon.png` kuvakkeille.
Vanhentunut / ei enää ylläpidetty?Viimeisin päivitys oli macos 10.9 * mavericks *
#5
+17
Arc
2015-05-14 17:23:09 UTC
view on stackexchange narkive permalink

@grgarside: n ratkaisu on mukava, mutta se on haavoittuvainen komentosarjojen injektoinnille, mikä voi olla merkittävä tietoturvaongelma, kun sitä käytetään esimerkiksi näytä lokitiedoston sisältö tai jotain vastaavaa.

Tämän pitäisi olla turvallisempaa:

  #! / bin / bashX = "$ * "/ usr / bin / osascript -e" näyttää ilmoitusjärjestelmän määritteen "X"  
tämä on mielenkiintoista, mutta voisitko kuvata skenaarion, jossa järjestelmässäni käyttämäni komentosarja, joka on vain käyttäjän suorittama, on haavoittuvainen komentosarjan injektoinnille?
Jos näytät käyttäjän sisältöä, joka ei ole sinulta, olet haavoittuva.Esimerkiksi, jos suoritat tämän järjestelmässä, jossa on julkinen verkkopalvelin, tai kun jotkut sovellukset kirjaavat merkkijonoja, jotka se on saanut lukemastasi ja näyttämästäsi verkosta, esim.selain, postiohjelma tai Twitter-asiakas.Siinä voi olla "merkkijonon ja lauseen lopettamiseksi, sitten koodi ja sitten merkkijono uudelleen.
okei, se on totta.Minun on vain vaikea kuvitella koskaan asettavan sisältöä verkkolomakkeista ilmoituksiini, mutta mielipiteesi on otettu huomioon.
Ehkä haluat vain sanoa jotain, jolla on "Minulla on" laser "ilman, että sinulle kerrotaan, että sinulla on syntaksivirhe" lainaamalla "sanojasi.Pakenemisen avulla voit: `` skripti '', minulla on "laser" ''
Myönnä ääntä, koska turvallisuus on aina hyvä pitää mielessä.Joku voisi kopioida pasta-ratkaisuja ja käyttää niitä tavoilla, joita ratkaisun lähettäjä ei ollut ottanut huomioon.
Pelasin juuri sen kanssa;tuo idiooma näyttää paenneen vain yhden lainauksen.Onko olemassa "globaalia" versiota?
Vaihdosta puuttui vinoviiva @EdwardFalk.Pitäisi toimia nyt.
Jos haluat käyttää pakenemista, sinun on myös pakenettava \ -> \\, muuten \ "tulee \\" ja voit puhkeata.Vaihdoin esimerkin käyttämään ympäristömuuttujaa sen sijaan.
#6
+17
vjeantet
2015-12-24 21:29:53 UTC
view on stackexchange narkive permalink

Pyysin äskettäin pääte-ilmoittajaa rakentamaan komentorivityökalun ilmoitushälytysten (toiminnoilla) ja vastaustyyppihälytysten näyttämiseen.

Käytän sitä komentosarjojeni ja golang-sovellusten kanssa saadakseni interaktiivisia vastauksia käyttäjiä.

https://github.com/vjeantet/alerter

enter image description here

Ilmeisesti myös vanhentunut / hylätty.
Näyttää elävältä ja hyvin nyt.
#7
+14
mivk
2013-01-21 15:59:17 UTC
view on stackexchange narkive permalink

Koska Growl ei ole ilmainen eikä päätelaite-ilmoittaja ole käytettävissä versiota 10.8 edeltävissä järjestelmissä, käytän yleensä cocoaDialogia. Se on ilmainen ja avoimen lähdekoodin, joten voit todennäköisesti levittää sitä myös komentosarjojesi mukana.

Jos et tarvitse paljon mukautuksia, voit käyttää myös AppleScriptin näyttöilmoitusta johon voit soittaa myös kuoresta, kuten muut ovat jo maininneet.

Mutta ole varovainen, että AppleScript näyttää vaativan lainausmerkkejä. Joten jos tarvitset muuttujia, tämä ei toimi :

  osascript -e "näytä ilmoitus '$ text' otsikolla '$ title'" #WRONG  

Sinun on käytettävä vältettyjä lainausmerkkejä. Tämä on ruma mutta toimii :

  osascript -e "näyttöilmoitus \" $ text \ "otsikolla \" $ title \ ""  
Tämä toimii myös: `` osascript -e '' -ilmoitus "Lorem ipsum dolor sit amet" otsikolla "Otsikko" ''
Myös vanhentunut.Linkki tuottaa "GitHub Pages -sivustoa ei ole täällä."
#8
+12
Steve
2017-12-01 04:27:59 UTC
view on stackexchange narkive permalink

(Tämä on vaihtoehtoinen toteutus @ grgarsiden erinomaisen vastauksen perusteella.)

AppleScript voidaan tulkita suoraan lisäämällä osascript shebang-riville.

  #! / usr / bin / osascript

juoksussa argv
    jos argvin pituus = 1, niin
        näytä ilmoitus (argv: n kohta 1) otsikolla "Ilmoitus"
    muuten, jos argvin pituus > 1 sitten
        näytä ilmoitus (kohde argv) otsikolla (kohde argv)
    muu
        palauta "<message> vaaditaan \ nKäyttö: ilmoita <message> [<title>]"
    loppu Jos
loppuajo
 

Tallenna tämä nimellä Ilmoita jonnekin polkusi, esim. / usr / local / bin / Ilmoita , ja tee siitä suoritettava ( chmod + x ilmoita ). Se hyväksyy viestin ja valinnaisen otsikon. Jos kummallakin on välilyönti, kääri se lainausmerkkeihin, jotta kuori tulkitsee sen yhtenä argumenttina.

  $ ilmoita "Lorem ipsum dolor sit amet" "Testausilmoitukset"
 
Näin vältetään injektiohyökkäykset, joille kaikki muut vastaukset ovat alttiita
#9
+8
JayCrossler
2014-10-15 01:13:00 UTC
view on stackexchange narkive permalink

Tässä on hieno, jota käytän ruby-komentosarjassa OS X: ssä (jotta voin käynnistää komentosarjan ja saada päivityksen silloinkin, kun olen poistunut ikkunasta):

  cmd = % Q | osascript -e '-ilmoitus "Palvelin palautettiin" otsikolla "Lähetetty päivitys"' | järjestelmä (cmd)  
wow ... joten ketju on jotain User -> Ruby -> Shell -> AppleScript -> Objective-C -> Assembly -> CPU?
#10
+6
ronald8192
2017-10-24 13:47:09 UTC
view on stackexchange narkive permalink

Vaihtoehto:

Kohdassa .bash_profile :

  function _sys_notify () {
    paikallinen ilmoitus_command = "näytä ilmoitus \" $ 2 \ "otsikolla \" $ 1 \ ""
    osascript -e "$ notification_command"
}
alias sys-notice = "_ sys_notify $ 1 $ 2"
 

Käytä komentoa: sys-notice "title" "message"

#11
+5
nishanthshanmugham
2018-01-01 12:05:13 UTC
view on stackexchange narkive permalink

Virallinen dokumentaatio

https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/DisplayNotifications.html

Kopioimalla teksti tähän, jos asiakirja siirretään tai poistetaan.

Jos haluat näyttää ilmoituksen, anna näyttöilmoituskomennolle merkkijono näytettäväksi. Voit vaihtoehtoisesti antaa arvot otsikon, tekstityksen ja äänen nimen parametreille, jotta saat lisätietoja ja äänihälytyksen ilmoituksen ilmestyessä.

  näyttää ilmoituksen "Kaikki grafiikat on muunnettu." otsikolla "Oma graafinen käsittelyskripti" alaotsikolla "Käsittely on valmis". äänen nimi "Sammakko"
 

HUOMAUTUS

Kun olet käyttänyt komentosarjaa ilmoituksen näyttämiseen, komentosarja tai komentosarjaeditori (jos komentosarja suoritetaan komentosarjaeditorissa) lisätään ilmoitussovellusten luetteloon kohdassa Järjestelmäasetukset> Ilmoitukset. Siellä voit määrittää vaihtoehtoja, kuten näyttääkö ilmoitukset ilmoituksina vai bannereina.

Napsauttamalla Näytä-painiketta hälytystyylisessä ilmoituksessa avautuu sovellus, joka näytti ilmoituksen. Komentosarjasovelluksen tapauksessa sovelluksen avaaminen käynnistää uudelleen komentosarjan ajon käsittelijän, mikä saattaa aiheuttaa komentosarjan käsittelyn aloittamisen toisen kerran. Pidä tämä mielessä ja lisää tarvittaessa komentosarjaasi koodi tämän tilanteen käsittelemiseksi.

#12
+3
Kevin
2019-08-02 17:12:18 UTC
view on stackexchange narkive permalink

Kiitos, tarvitsin juuri tätä joillekin käyttäjäskripteille.Tein pienen muutoksen lisätäksesi tekstityksen ja äänen.Jos arvoa ei anneta, se ohitetaan.

  function _sys_notify () {
paikallinen ilmoitus_command = "näytä ilmoitus \" $ 2 \ "otsikolla \" $ 1 \ "alaotsikko \" $ 3 \ "äänen nimi \" $ 4 \ ""
osascript -e "$ notification_command"
}

alias sys-notice = "_ sys_notify $ 1 $ 2 $ 3 $ 4"
 

Käytä äänenä äänen tiedostonimeä ilman tiedostotunnistetta / System / Library / Sounds.Esimerkiksi, jos haluat käyttää tiedostoa Ping.aiff, käytä Ping for $ 4



Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...