Как я могу заставить SelfControl работать всегда?

Я использую приложение SelfControl.

Есть ли способ заставить его всегда работать?

4 ответа

Решение

Да. Просто откройте Системные настройки из /Applications выберите "Учетные записи" и, выделив свое имя пользователя в списке слева, выберите вкладку "Элементы входа". Либо перетащите SelfControl в список, либо нажмите кнопку "+" и перейдите к его местоположению.

Затем SelfControl всегда запускается при входе в систему.


Вам нужно будет скачать и установить сценарий использования цепочки ключей Daniel Jalkut, чтобы быстро и безопасно получить доступ к паролю администратора, чтобы активировать SelfControl.

Добавить пароль в брелок

Откройте брелок Access.app. Создайте новый пароль, введя Cmd-N или выбрав Файл "Новый элемент пароля... В поле" Имя элемента цепочки для ключей "введите" SelfControl ". Укажите имя учетной записи в следующем поле и в поле "Пароль" введите пароль для своей учетной записи (пароль, который вы будете использовать для аутентификации в OS X). Нажмите "Добавить", и теперь у вас должен быть новый пароль приложения под названием "SelfControl" в вашей цепочке для ключей.

Создайте AppleScript

Вставьте следующее содержимое (изначально отсюда) в новое окно AppleScript Editor.app:

on run argv
 set defaultTime to 1440

 try
  set myTime to item 1 of argv as number
 on error
  set myTime to defaultTime
 end try

 tell application "Usable Keychain Scripting"
  tell current keychain
   set myPass to (password of first generic item ¬
    whose name contains "SelfControl")

   -- eliminate invisible characters, or "gremlins," from password
   set x to quoted form of myPass
   set myPass to do shell script "echo " & x & " | perl -pe 's/[^[:print:]]//g'"
  end tell
 end tell

 tell application "SelfControl" to activate

 tell application "System Events"
  tell process "SelfControl"
   tell slider of window "SelfControl" to set value to myTime
   click button "Start" of window "SelfControl"
  end tell
  tell window 1 of process "SecurityAgent"
   with timeout of 15 seconds
    repeat
     set tryAgain to false
     try
      set value of text field 2 of scroll area 1 of group 1 to myPass
     on error
      delay 1
      set tryAgain to true
     end try
     if not tryAgain then exit repeat
    end repeat
    click button 2 of group 2
   end timeout
  end tell
 end tell
end run

Мы установили defaultTime до 1440 (то есть 24 часа), чтобы вы могли автоматически запускать SelfControl в течение максимального времени.

Теперь из редактора AppleScript сохраните этот файл где-нибудь, нажав Файл "Сохранить, например /Users/your-username/SelfControl.scpt, который будет в нашей домашней папке. Запомни этот путь.

Создать запись запуска

Затем откройте ваш любимый текстовый редактор или Property List Editor.app, который поставляется с инструментами Mac OS X Dev на Snow Leopard или интегрирован в Xcode на Lion.

В любом случае, вставьте следующее содержимое, но обязательно измените путь к сценарию соответствующим образом (это не тот, который мы помнили выше):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>my.selfcontrol.launcher</string>
    <key>ProgramArguments</key>
    <array>
        <string>osascript</string>
        <string>/Users/your-username/SelfControl.scpt</string>
    </array>
    <key>StartInterval</key>
    <integer>86400</integer>
    <key>RunAtLoad</key>
    <false/>
    <key>KeepAlive</key>
    <false/>
</dict>
</plist>

Сохраните этот файл с .plist расширение под /Users/your-username/Library/LaunchAgents/my.selfcontrol.launcher.plist, Если папка "Библиотека" скрыта, вы можете открыть Finder, нажать CmdShiftG и вставить ~/Library чтобы открыть это.

Загрузить запись запуска

Наконец, откройте терминал и запустите:

launchctl load ~/Library/LaunchAgents/my.selfcontrol.launcher.plist

Это скажет launchd открыть AppleScript и запустить SelfControl в течение двадцати четырех часов каждые двадцать четыре часа.

Так как это в ~/Library/LaunchAgents он будет загружен автоматически при входе в систему. Если вы хотите, чтобы ваш компьютер вернулся, замените load в приведенной выше команде с unload, затем дождитесь истечения оставшегося времени SelfControl.

Вы можете легко сделать блок SelfControl на любой промежуток времени, который вам нужен - хотя мы не предлагаем "бесконечную" настройку, я думаю, что годичный блок достигает большинства той же цели. И вы всегда можете перезапустить его тогда. Чтобы заблокировать на срок до года, сначала закройте SelfControl, затем откройте терминал и выполните следующие команды:

defaults write org.eyebeam.SelfControl MaxBlockLength -int 31556900
defaults write org.eyebeam.SelfControl BlockLengthInterval -int 432000

Снова откройте SelfControl, и ползунок продлится до года (с 5-дневными интервалами). Вы можете сделать этот трюк с любой длиной блока и интервалом, хотя наш дисплей в настоящее время не использует годы - он, вероятно, будет отображать эту длину в днях или неделях.

Для получения дополнительной информации см. Эту статью в нашей вики. Однако обратите внимание, что мы не сможем оказать поддержку, если вы испортите свой компьютер в Терминале, так что это только для профессиональных пользователей. Более подробная информация о таких настройках в конечном итоге будет доступна на нашем новом веб-сайте.

Вот небольшая утилита, которая помогает планировать SelfControl: https://github.com/andreasgrill/auto-selfcontrol С ее помощью вы можете легко создавать расписание для ежедневного запуска с 12:00 до 23.59. Эта утилита напрямую использует API командной строки SelfControl и не требует сохранения пароля администратора в файле.

Другой вариант - настроить cronjob для самоконтроля. Это должно быть сделано из терминала кем-то с правами администратора. Для этого сначала наберите

id -u $USER

и запомни номер, скажи XXXX, Затем откройте корневой файл crontab с помощью

sudo crontab -e

Вам будет предложено ввести пароль, и он будет работать только из учетной записи администратора. Теперь добавьте следующие строки (первые две строки - комментарии, объясняющие последнюю строку):

# Cron syntax: minute hour day_of_month month day_of_week <command>
# Run self-control at 11pm every day for user XXXX = $(id -u $USER)
0 23 * * * /Applications/SelfControl.app/Contents/MacO/org.eyebeam.SelfControl XXXX --install

где XXXX это число, которое вы получили на первом этапе. Если вы хотите автоматически запускать самоконтроль с 8:30 с понедельника по пятницу, тогда начало строки crontab будет

30 10 * * 1-5 /Applications/...

Вы можете добавить столько строк crontab, сколько захотите, чтобы запланировать выполнение произвольных команд в разное время. Кстати, по умолчанию вы будете редактировать файл crontab, используя vi, поэтому вы можете сохранить файл, используя ZZ, например.

Преимущество запуска Selfcontrol в качестве корневого cronjob состоит в том, что таким образом у него уже есть "права администратора" (root-доступ), и нет необходимости давать ему пароль администратора. Самоконтроль будет работать с текущими настройками. Вы можете увидеть их либо с помощью приложения самоконтроля, либо из командной строки, используя

defaults read org.eyebeam.SelfControl

Точно так же вы можете изменить настройки, используя defaults write ...Таким образом, вы можете убедиться, что самоконтроль работает с нужными настройками, добавив еще один cronjob для настройки самоконтроля непосредственно перед его запуском. Например, добавив строку

59 22 * * * /usr/bin/defaults write org.eyebeam.SelfControl BlockDuration 420

установит продолжительность самоконтроля до 7 часов в 22:59 каждый день.

Другие вопросы по тегам