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

10381
Mark

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

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

7

4 ответа на вопрос

7
Scott

Да. Просто откройте Системные настройки из /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 на 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 имеет ограничение в 24 часа на включение его функциональности. Это, наверное, более актуально ..? Daniel Beck 13 лет назад 0
Справедливо, но я не думаю, что отрицательное голосование - разумный ответ на оригинальный постер, задающий двусмысленный вопрос. Scott 13 лет назад 0
Я не понизил и не знаю, кто сделал, хотя это разумное предположение после моего комментария. Жаль, что downvoter не удосужился прокомментировать себя. Upvote за отредактированный ответ, явно намного лучше. Daniel Beck 13 лет назад 0
В этом случае я буду выступать против людей, отказывающихся от голосования, не оставляя объяснений! Scott 13 лет назад 2
Рад это слышать, Марк. \ * дует малина на даунотер \ * Scott 13 лет назад 0
@ Скотт Я не знаю, почему понизился, но ваши инструкции были немного техническими для новых пользователей (как указано в ответе с просьбой дать разъяснения по этому самому вопросу). Я пытался улучшить ваш пост - не стесняйтесь повторять это. slhck 11 лет назад 0
Используемые сценарии цепочки для ключей, кажется, сломаны в 10.11 El Capitan Justin Maxwell 7 лет назад 0
6
Charlie Stigler

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

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

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

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

Разве год не должен быть 525600 минут? А 5-дневный интервал 7200? reynoldsnlp 8 лет назад 0
3
Andreas

Here is a small utility that helps to schedule SelfControl: https://github.com/andreasgrill/auto-selfcontrol With this you could easily create a schedule to run daily from 12am to 11.59pm. This utility directly uses the command line API of SelfControl and doesn't need to store your admin password in a file.

Почему это было отклонено? Это великолепно. Justin Maxwell 7 лет назад 1
1
Andrew

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

id -u $USER 

и помните номер, Say 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 каждый день.

или `sudo crontab -e` и затем замените все в` <> `s следующим образом:` 30 10 * * 1-5 sudo -H -u / usr / bin / defaults write org.eyebeam.SelfControl BlockDuration && /Applications/SelfControl.app/Contents/MacOS/org.eyebeam.SelfControl --install` reynoldsnlp 6 лет назад 0