Есть ли способ ограничить частоту запуска приложения?

На моем телефоне я наслаждаюсь новой настройкой под названием MailStop, единственной целью которой является ограничение моего рефлекса слишком частой проверки моей почты. Я установил запрет на запуск почтового приложения в течение пяти часов после того, как я его уже запустил. Это сильно повлияло на мои злоупотребления при проверке почты. Я могу остановиться и вспомнить, что слишком часто проверяю его каждый раз, когда пытаюсь открыть его в эти часы.

Есть и другие способы ограничить злоупотребление почтовым приложением с помощью этого приложения, но мой вопрос такой же, как и в заголовке: есть ли способ ограничить частоту запуска приложения на Mac?

Предложите сократить объяснение, чтобы сделать его более кратким. Например, «Я слишком часто использую Mail.app. Есть ли способ ограничить его запуск не чаще одного раза в n часов в Mac OS X?»

Ответы (4)

Вы можете сделать это с помощью AppleScript:

1. Откройте редактор AppleScript.

2. Вставьте следующий код:

свойство appName : "Почта"
свойство minSecsBetweenLaunches : 600 -- секунд
свойство checkEvery : 5 -- секунд

-- НЕ ИЗМЕНЯЙТЕ ПОСЛЕ ЭТОЙ СТРОКИ, ЕСЛИ НЕ УВЕРЕНЫ --

свойство lastSeenOpen : ""
свойство lastMailState: ""

в бегах
    праздный
конец пробега

на холостом ходу
    мой чек()
    return checkEvery -- проверять каждые n секунд
конец бездействия

на чеке()
    скажите приложению «Finder», чтобы установить имена процессов в имена процессов
    если (lastMailState равно ""), то
        -- Первый забег
        установите для lastMailState значение (processes_names содержит appName)
        если lastMailState то
            установить lastSeenOpen на текущую дату
        конец, если
    еще
        если (processes_names содержит appName), то
            если (lastMailState ложно), то
                -- Приложение только что запущено
                установить для lastMailState значение true
                если (lastSeenOpen не "") то
                    -- Уже запущено, проверьте, разрешен ли запуск
                    установить timeLeft в minSecsBetweenLaunches - ((текущая дата) - lastSeenOpen)
                    если (timeLeft > 0), то
                        скажите приложению appName, чтобы выйти
                        активировать
                        отобразить диалоговое окно «Подождите» & timeLeft & «сек. перед открытием» & appName & «снова».
                    конец, если
                конец, если
            конец, если
            установить lastSeenOpen на текущую дату
        еще
            если (lastMailState истинно), то
                -- Приложение просто закрылось
                установить для lastMailState значение false
            конец, если
        конец, если
    конец, если
окончание проверки

3. Настройте параметры

Первые 3 строки скрипта можно редактировать под свои нужды. По умолчанию каждые 5 секунд проверяйте, не открывалась ли почта в течение 10 минут (что составляет 600 секунд).

4. Создайте приложение

Меню «Файл» > «Экспорт»

  • Выберите название приложения и место назначения
  • выберите экспортировать как приложение
  • поставьте галочку "оставаться открытым..."

5. Спрятаться от дока

В Finder найдите приложение, которое вы только что экспортировали, затем щелкните его правой кнопкой мыши и выберите «Показать содержимое пакета». Затем откройте «Info.plist» папки «Содержание» в TextEdit и перед последним </ dict> файла вставьте:

<key>LSBackgroundOnly</key>
<строка>1</строка>

Для информации, после редактирования конец моего файла выглядит так:

[...]
        <string>журнал событий</string>
    </дикт>
    <key>LSBackgroundOnly</key>
    <строка>1</строка>
</дикт>
</plist>

И сохранить, конечно.

6. Установите свое приложение в качестве элемента автозагрузки

Системные настройки > Пользователи > ...

Это ваша оригинальная работа? Мне показалось, что я видел этот сценарий в ответе на другой похожий вопрос.
Да, моя работа. Конечно, некоторые части можно найти в другом месте, например, как скрыть приложение AppleScript из дока или как определить, запущено ли приложение. Но я написал этот код, чтобы ответить на ваш вопрос.
Госмонд… неужели это имеет значение?

Для кого-то было бы довольно легко написать приложение для управления утилитами в OS X, и похоже, что кто-то уже это сделал. Взгляните на блокировщик приложений Mac. Он имеет детализацию для каждого приложения и ограничение по расписанию. В настоящее время у него нет возможности ограничить приложение X запусками в час / в день.

Я отправил этот запрос функции разработчику по электронной почте:

Feb. 20, 2013
Can you add the ability to limit an application to launching  x number of 
times per hour, per day, or per week?  And, related, to limit an app to 
launching *no more than* once every x hours, days, or weeks?

Получил такой ответ:

Feb. 21, 2013
I have had a few other requests along the same lines. Perhaps it would be 
a good idea to add this kind of functionality. As Mac App Blocker has 
progressed over the past year, it has become more feature rich and, 
possibly a little more complicated. As it is, we're trying to fulfill 
more requests while keeping the app simple to use. I like your idea and I 
would like to add something to MAB for these types of options.
I will definitely add this to our growing list of feature requests.
Hopefully, we'll get this added in a (near) future release.

Ken
<censored>@<censored>.com
KnewSense, LLC

Проверьте это приложение через 6 месяцев или год, возможно, оно будет добавлено.


Крайние варианты могут включать заливку клавиатуры эпоксидной смолой, надевание наручников на проблемного пользователя или отключение питания от сети в здании.

Но они всегда могли получить другое устройство ввода, перейти в другое здание или, если на них наручники, управлять iPad своим лицом. Единственное реальное решение: удалить записи MX из конфигурации DNS его почтового хоста.
Я поддерживал связь с Кеном, и, похоже, это последняя версия.

Да, это называется Сила воли 1.0. :-)

Серьезно, единственное, о чем я могу думать, это Родительский контроль, который может ограничивать определенные действия по времени суток, но я не думаю, что это то, что вам нужно. Вероятно, есть другие приложения, предназначенные для ограничения активности детей на Mac, которые могут иметь более тонкие элементы управления.

В той же строке, что и @Kick-McElhearn, вы можете настроить родительский контроль, чтобы иметь несколько окон для проверки электронной почты, и вы можете сообщить людям, отправляющим вам электронную почту, что вы на самом деле применяете эти окна.