©
. Document créé le 8 août 2010 , mis à jour le 11 août 2011.Qu'importe le flacon, pourvu qu'on ait l'ivresse. Alfred de Musset
Accueil du site > Astuces > MacOSX > Sonner l’heure système (et les quarts d’heure)
Exemple AppleScript : sonner l’heure et les quarts d’heure de l’heure système.
Horloge.app illustre :
L’applet Horloge.app est composée d’un script compagnon calculer.scpt qui doit être recopié dans le répertoire Scripts d’ Horloge.app enregistrée sous forme d’application.
Pour ouvrir le répertoire de Horloge.app, cliquer droit sur son icône et choisir Afficher le contenu du paquet.
Le code AppleScript de calculer.scpt, largement commenté :
(*
au_quart()
Calcul du quart-d'heure suivant le temps actuel.
@return: le nombre de secondes entre
le temps actuel et le prochain quart d'heure.
*)
on au_quart()
set maintenant to current date
set minuts to minutes of maintenant
set secondes to seconds of maintenant
if ((minuts mod 15) = 0) then
-- dans un quart d'heure
set plus_tard to 15
else
-- le quart suivant
set quart to (minuts / 15)
set iquart to (quart as integer)
if (iquart < quart) then
set iquart to (iquart + 1)
end if
set plus_tard to ((15 * iquart) - minuts)
end if
-- résultat à envoyer en secondes
set plus_tard to (plus_tard * minutes) - secondes
return (plus_tard)
end au_quart
(*
@return: string heure minute seconde
sec: int, décallage en secondes
*)
on heure_minutes(sec)
set maintenant to (current date) + sec
set heures to hours of maintenant
set minuts to minutes of maintenant
set secondes to seconds of maintenant
return (heures & ":" & minuts & ":" & secondes)
end heure_minutes
Pour appeler le script compagnon calculer.scpt, il faut lui attribuer un pointeur (handler), dans le style :
set path_script to path to resource "calculer.scpt" in directory "Scripts"
set calculer to load script path_script
Pour appeler la fonction au_quart() contenue dans ce script, réaliser un appel du style :
set ma_variable to au_quart() of calculer
Curiosité : la commande AppleScript quit ne quitte pas l’application compilée. Un quit me ou tell me to quit n’ont pas l’effet escompté. L’application Horloge.app est enregistrée avec l’option Rester en arrière plan. Ce qui explique peut-être celà ? A noter que return empêche la poursuite du script, mais l’icône d’ Horloge.app reste aussi dans le dock. Si quelqu’un a l’explication, le forum en bas de page lui tend les bras.
Pour forcer à quitter Horloge.app, seule solution a priori (mais j’en doute), c’est l’envoi d’un kill via le système.
Consulter le source AppleScript ci-dessous pour en savoir plus.
L’icône cloche.icns a été dessinée sous Illustrator CS5. En voici le fichier :
et la version au format svgz, enveloppée dans un ZIP (pour empêcher SPIP de l’interpréter) :
Pour créer l’icône au format ICNS :
Le code AppleScript de Horloge.app (main.scpt), largement commenté :
(*
Sonner l'heure
(et les quarts d'heure)
Sun Aug 8 16:19:47 CEST 2010
© 2010 - Christian Paulus
Licence GPL3
http://www.quesaco.org/Sonner-l-heure-systeme-et-les-quarts-d-heure
*)
(*
Vous pouvez choisir le son :
- mettre en commentaire le son actuel
en placant '--' en début de ligne
- décommenter le son souhaité en
retirant '--' en début de ligne
*)
--property son : "coucou_suisse_gauche.mp3"
-- property son : "coucou_gauche.mp3"
property son : "clochette_gauche.mp3"
--property son : "clochette_droite.mp3"
property version : 1.0
property name : "Horloge"
on idle
try
-- la clochette est dans le Resource du bundle
set bell to path to resource son in directory "Sounds"
on error
display dialog "Le fichier son " & ¬
(quoted form of son) & ¬
" est manquant."
-- Quitter
-- arrête le process, mais pas l'appli qui reste dans le dock
--return (false)
-- n'arrête pas
--tell me to quit
-- ça non plus
-- delay 0.5
-- tell application "System Events" to key code 0 using {command down}
-- delay 1
-- commande radicale!
-- à condition de ne pas renommer l'appli ;-)
set pid to do shell script ("ps x |grep 'Horloge.app/Contents/MacOS/applet'")
set pid to first word of pid as integer
if (pid > 1024) then do shell script ("kill " & pid)
end try
-- chemin au format POSIX pour transmettre à afplay
set bell to (POSIX path of bell)
-- charger le script compagnon
set calculer to path to resource "calculer.scpt" in directory "Scripts"
set calculer to load script calculer
-- quelle heure est-il ?
set maintenant to current date
set heures to hours of maintenant
set minuts to minutes of maintenant
-- tracer dans /var/log/system.log
do shell script "logger " & my name & " start @ " & ¬
heure_minutes(0) of calculer
-- faut-il sonner ?
if ((minuts mod 15) = 0) then
if (minuts = 0) then
-- heure : nombre de coups = heures (max 12)
if (heures ≤ 12) then
set nb_coups to heures
else
set nb_coups to (heures - 12)
end if
else
-- 1/4 et 1/2 heure : 1 coup
set nb_coups to 1
end if
do shell script "logger " & my name & ¬
" ring " & nb_coups & " times."
-- préparer le ligne de commande pour jouer le son
set tinter to ""
repeat nb_coups times
set tinter to tinter & ¬
"afplay " & (quoted form of bell) & ";"
end repeat
-- lancer la commande dans un shell
do shell script tinter
end if
do shell script "logger " & my name & " end @ " & ¬
heure_minutes(0) of calculer
-- calculer le quart d'heure suivant
set revenir to au_quart() of calculer
do shell script "logger " & my name & ¬
" will be back in " & revenir & " seconds @ " & ¬
heure_minutes(revenir) of calculer
-- la valeur renvoyée en secondes
-- pour le gestionnaire idle
return (revenir)
end idle
Et enfin l’applet finale, prête à l’emploi :
A noter que vous pouvez ajouter vos propres sons de cloche :
Les forums sont fermés.