Я использую OS X, и я хочу знать, есть ли какие-либо непрочитанные сообщения в моем Mail.app? Я хочу указать этот номер в командной строке.
Как мне это сделать?
Я использую OS X, и я хочу знать, есть ли какие-либо непрочитанные сообщения в моем Mail.app? Я хочу указать этот номер в командной строке.
Как мне это сделать?
Сначала настройте запрос на выполнение подстановок, как описано здесь: Получить функцию в PS1 (Zsh)?
Просто добавьте следующее в ваш файл .zshrc
.
setopt PROMPT_SUBST
Затем найдите AppleScript, который считает вашу непрочитанную почту, например, от Geeklets by Matt Swain. Загрузите файл .scpt
и поместите его где-нибудь, например ~/Scripts/mail_count.scpt
.
Обратите внимание, что Mail.app должен быть запущен, чтобы все это работало. В вашем .zshrc
создайте функцию, которая вызывает AppleScript:
function mail_count {
osascript ~/Scripts/mail_count.scpt
}
Наконец, переопределите ваш запрос на основе новой функции. Следующее было бы самым основным подходом - но не стесняйтесь добавлять свои собственные переменные по мере необходимости:
PROMPT='$(mail_count) '
Если вы не хотите возиться с вашей строки или использовать один из о-мой-ЗШ стилей, или даже модуль promptinit
вы могли бы просто использовать функцию precmd()
в котором определяются все , что должно быть , прежде чем запускать другая команда выполнена. В этом случае вам не понадобится опция PROMPT_SUBST
.
precmd() {
mail_count
}
Какой бы метод вы ни использовали, ваш счетчик непрочитанных писем будет выводиться в виде простого текста. Если вы хотите изменить сообщения, взгляните на источник файла .scpt
и измените его соответствующим образом.
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
Я нашел это наиболее эффективным.