Estoy usando OS X y quiero saber si hay algún mensaje no leído en mi Mail.app? Quiero poner ese número en mi indicador de shell.
¿Cómo lo hago?
Estoy usando OS X y quiero saber si hay algún mensaje no leído en mi Mail.app? Quiero poner ese número en mi indicador de shell.
¿Cómo lo hago?
Respuestas:
Primero, configure su solicitud para realizar sustituciones como se explica aquí: ¿ Obtener función en PS1 (Zsh)?
Simplemente agregue lo siguiente en su .zshrcarchivo.
setopt PROMPT_SUBST
Luego, busque un AppleScript que cuente su correo no leído, por ejemplo, este de Geeklets de Matt Swain . Descargue el .scptarchivo y colóquelo en algún lugar, por ejemplo ~/Scripts/mail_count.scpt.
Tenga en cuenta que Mail.app debe estar ejecutándose para que todo esto funcione. En su .zshrc, cree una función que llame al AppleScript:
function mail_count {
osascript ~/Scripts/mail_count.scpt
}
Finalmente, redefina su solicitud en función de la nueva función. El siguiente sería el enfoque más básico, pero siéntase libre de agregar sus propias variables según sea necesario:
PROMPT='$(mail_count) '
Si no desea meterse con su solicitud o usar uno de los estilos oh-my-zsh, o incluso el promptinitmódulo, también puede usar la precmd()función, en la que define cualquier cosa que deba ejecutarse antes de ejecutar otro comando . En ese caso, no necesitarías la PROMPT_SUBSTopción.
precmd() {
mail_count
}
Cualquiera que sea el método que utilice, su recuento de correo no leído se generará en texto sin formato. Si desea cambiar los mensajes, eche un vistazo a la fuente del .scptarchivo y modifíquelo en consecuencia.

unread count of every mailboxcomo se explica aquí .
set output_string to ""
tell application "Mail"
set Unread_Count to unread count of inbox
if Unread_Count is 0 then
set output_string to ""
else if Unread_Count is 1 then
set output_string to "1 message"
else
set output_string to ("" & (get Unread_Count) & " messages")
end if
end tell
return output_string
Encontré esto más eficiente.