5

Я использую OS X, и я хочу знать, есть ли какие-либо непрочитанные сообщения в моем Mail.app? Я хочу указать этот номер в командной строке.

Как мне это сделать?

2 ответа2

5

Сначала настройте запрос на выполнение подстановок, как описано здесь: Получить функцию в 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 и измените его соответствующим образом.

2
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

Я нашел это наиболее эффективным.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .