Conseguir que tu aplicación responda específicamente a un usuario que hace clic en su icono del dock es difícil. Una tarea más sencilla es conseguir que tu aplicación responda al adquirir el foco donde antes pertenecía a otra aplicación, es decir, siempre que tu aplicación pase a primer plano, lo que ocurrirá al hacer clic en el icono del dock.
He comentado fuertemente el script a continuación para guiarte a través de lo que es relevante. Todo lo que he dejado sin comentar o no he hecho referencia específicamente en los comentarios debe ser dejado solo y donde está, a menos que esté seguro de que sabe lo que está haciendo.
Obviamente, esto no hará mucho si simplemente se ejecuta desde dentro de script Editor así que incorpore esto al código AppleScript de su aplicación (o, mejor dicho, incorpore el código AppleScript de su aplicación a esto), guárdelo y ejecute el applet. Si no realiza ninguna modificación, cuando se guarde como applet, verá aparecer una notificación cada 10 segundos que le indicará que la aplicación se está ejecutando. "al ralentí..." y, cada vez que se enfoque la aplicación, aparecerá un cuadro de diálogo que le informará de que "Enfoque adquirido". .
-----------------------------------------------------------|
on run
_init()
# Your startup code goes here, which will
# execute once when your application runs
# e.g.
# do shell script "/path/to/start-script.sh"
end run
on idle
# Any code you need to run repeatedly can
# go here. Otherwise, you can delete this
# entire handler
# The following line is test code:
display notification "idling..."
# The return value is how often (in seconds)
# this handler will be called
return 10
end idle
on activate
# Insert code you want to execute whenever
# your application receives focus, e.g.
#
# tell application "System Events" to ¬
# open folder "~/Path/To/Folder/"
# The following line is test code:
display dialog "Focus acquired."
end activate
on quit
global |@|
|@|'s removeObserver:me
# Any other clean-up code that needs to
# execute just before your application
# exits should go here, e.g.
# do shell script "/path/to/quit-script.sh"
continue quit
end quit
-----------------------------------------------------------|
# PRIVATE HANDLERS:
use framework "Foundation"
use framework "AppKit"
use scripting additions
property |@| : a reference to my NSWorkspace's ¬
sharedWorkspace's notificationCenter
on _init()
"NSWorkspaceDidActivateApplicationNotification"
|@|'s addObserver:me selector:("_notify:") ¬
|name|:result object:(missing value)
idle
end _init
to _notify:notification
local notification
if my id = the notification's userInfo()'s ¬
NSWorkspaceApplicationKey's ¬
bundleIdentifier() as text ¬
then activate me
end _notify:
-----------------------------------------------------------|
0 votos
Hacer clic específicamente en el icono del dock es bastante difícil de implementar. Sin embargo, como hacer clic en el icono del dock también activaría o enfocaría tu aplicación, es algo que puede implementarse de forma relativamente sencilla.
0 votos
Me alegro de que sea sencillo. ¿Alguna pista sobre cómo ponerlo en práctica?