Ich benutze die SelfControl App.
Gibt es eine Möglichkeit, es immer zum Laufen zu bringen?
Ich benutze die SelfControl App.
Gibt es eine Möglichkeit, es immer zum Laufen zu bringen?
Antworten:
Ja. Öffnen Sie einfach die Systemeinstellungen im /Applications
Ordner, wählen Sie "Konten" und wählen Sie mit Ihrem Benutzernamen in der Liste links die Registerkarte "Anmeldeelemente". Ziehen Sie SelfControl entweder per Drag & Drop in die Liste oder klicken Sie auf die Schaltfläche "+" und navigieren Sie zu seiner Position.
Dann wird SelfControl immer gestartet, wenn Sie sich anmelden.
Sie müssen Daniel Jalkuts Usable Keychain Scripting herunterladen und installieren, um schnell und sicher auf Ihr Administratorkennwort zugreifen zu können, um SelfControl zu aktivieren.
Öffnen Sie Keychain Access.app . Erstellen Sie ein neues Passwort, indem Sie Cmd-N eingeben oder zu Datei »Neues Passwortelement ... gehen. Geben Sie unter Name des Schlüsselbundelements 'SelfControl' ein. Geben Sie im nächsten Feld einen beliebigen Kontonamen ein und geben Sie im Feld Kennwort das Kennwort für Ihr Benutzerkonto ein (das Kennwort, mit dem Sie in OS X alles authentifizieren würden). Klicken Sie auf "Hinzufügen", und Sie sollten jetzt ein neues Anwendungskennwort mit dem Titel "SelfControl" in Ihrem Schlüsselbund haben.
Fügen Sie den folgenden Inhalt (ursprünglich von hier ) in ein neues Fenster von AppleScript Editor.app ein :
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
Wir haben hier defaultTime
1440 (dh 24 Stunden) eingestellt, damit Sie SelfControl automatisch für die maximale Zeit starten können.
Speichern Sie diese Datei jetzt im AppleScript-Editor irgendwo, indem Sie auf Datei »Speichern klicken , z. B. /Users/your-username/SelfControl.scpt
in unserem Home-Ordner. Erinnere dich an diesen Weg.
Öffnen Sie dann Ihren bevorzugten Texteditor oder die Property List Editor.app , die mit den Mac OS X Dev-Tools auf Snow Leopard geliefert oder in Xcode auf Lion integriert ist.
Fügen Sie in beiden Fällen den folgenden Inhalt ein, aber stellen Sie sicher, dass Sie den Pfad zum Skript entsprechend ändern (es ist nicht der, an den wir uns oben erinnert haben):
<?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>
Speichern Sie diese Datei mit der .plist
Erweiterung unter /Users/your-username/Library/LaunchAgents/my.selfcontrol.launcher.plist
. Wenn der Bibliotheksordner ausgeblendet ist, können Sie den Finder öffnen, drücken CmdShiftGund einfügen ~/Library
, um ihn zu öffnen.
Öffnen Sie zum Schluss ein Terminal und führen Sie Folgendes aus:
launchctl load ~/Library/LaunchAgents/my.selfcontrol.launcher.plist
Dadurch wird launchd angewiesen, das AppleScript zu öffnen und SelfControl alle vierundzwanzig Stunden vierundzwanzig Stunden lang zu starten.
Da es ~/Library/LaunchAgents
drin ist, wird es automatisch geladen, wenn Sie sich anmelden. Wenn Sie Ihren Computer zurückhaben möchten, ersetzen Sie load
den obigen Befehl durch unload
und warten Sie, bis die verbleibende SelfControl-Zeit abgelaufen ist.
Sie können den SelfControl-Block problemlos für eine beliebige Zeitspanne erstellen. Obwohl wir keine "unendliche" Einstellung anbieten, kann ein einjähriger Block den größten Teil des gleichen Zwecks erfüllen. Und Sie können es dann jederzeit neu starten. Um bis zu einem Jahr zu blockieren, schließen Sie zuerst SelfControl , öffnen Sie dann Terminal und führen Sie die folgenden Befehle aus:
defaults write org.eyebeam.SelfControl MaxBlockLength -int 31556900
defaults write org.eyebeam.SelfControl BlockLengthInterval -int 432000
Öffnen Sie SelfControl erneut, und der Schieberegler reicht bis zu einem Jahr (in Intervallen von 5 Tagen). Sie können diesen Trick mit jeder Blocklänge und jedem Blockintervall ausführen, obwohl unsere Anzeige derzeit keine Jahre ausführt - diese Länge wird wahrscheinlich stattdessen in Tagen oder Wochen angezeigt.
Weitere Informationen finden Sie in diesem Artikel in unserem Wiki. Beachten Sie jedoch, dass wir keinen Support bieten können, wenn Sie Ihren Computer im Terminal vermasseln. Dies ist also nur für Pro-Benutzer. Weitere Informationen zu solchen Optimierungen werden irgendwann auf unserer neuen Website verfügbar sein .
Hier ist ein kleines Dienstprogramm, mit dem Sie SelfControl planen können: https://github.com/andreasgrill/auto-selfcontrol Mit diesem Dienstprogramm können Sie ganz einfach einen Zeitplan erstellen, der täglich von 12 bis 23.59 Uhr ausgeführt wird. Dieses Dienstprogramm verwendet direkt die Befehlszeilen-API von SelfControl und muss Ihr Administratorkennwort nicht in einer Datei speichern.
Eine andere Möglichkeit besteht darin, einen Cronjob zur Selbstkontrolle einzurichten. Dies muss vom Terminal aus von jemandem mit Administratorrechten durchgeführt werden. Um dies zuerst zu tun, geben Sie ein
id -u $USER
und erinnere dich an die Nummer, Sag XXXX
. Öffnen Sie anschließend die Root-Crontab-Datei mit
sudo crontab -e
Sie werden aufgefordert, Ihr Kennwort einzugeben. Dies funktioniert nur über ein Administratorkonto. Fügen Sie nun die folgenden Zeilen hinzu (die ersten beiden Zeilen sind Kommentare zur Erläuterung der letzten Zeile):
# 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
Wo XXXX
ist die Nummer, die Sie im ersten Schritt erhalten haben? Wenn Sie die Selbststeuerung von Montag bis Freitag automatisch von 8:30 Uhr aus ausführen möchten, ist der Start der Crontab-Linie
30 10 * * 1-5 /Applications/...
Sie können beliebig viele Crontab-Zeilen hinzufügen, um beliebige Befehle zu unterschiedlichen Zeiten auszuführen. Übrigens bearbeiten Sie die Crontab-Datei standardmäßig mit vi , sodass Sie sie beispielsweise mit speichern können ZZ
.
Der Vorteil der Ausführung von Selfcontrol als Root-Cronjob besteht darin, dass auf diese Weise bereits "Administratorrechte" (Root-Zugriff) vorhanden sind und kein Administratorkennwort angegeben werden muss. Selfcontrol wird mit den aktuellen Einstellungen ausgeführt. Sie können diese entweder mit der Selfcontrol-App oder über die Befehlszeile mit anzeigen
defaults read org.eyebeam.SelfControl
In ähnlicher Weise können Sie die Einstellungen mit ändern defaults write ...
, um sicherzustellen, dass die Selbststeuerung mit den gewünschten Einstellungen ausgeführt wird, indem Sie der Einrichtung der Selbststeuerung unmittelbar vor dem Start einen weiteren Cronjob hinzufügen. Zum Beispiel das Hinzufügen der Zeile
59 22 * * * /usr/bin/defaults write org.eyebeam.SelfControl BlockDuration 420
legt die Dauer der Selbststeuerung auf 7 Stunden um 22:59 Uhr pro Tag fest.
sudo crontab -e
und ersetzen Sie dann alles in <>
s im Folgenden:30 10 * * 1-5 sudo -H -u <your_username> /usr/bin/defaults write org.eyebeam.SelfControl BlockDuration <length_in_minutes> && /Applications/SelfControl.app/Contents/MacOS/org.eyebeam.SelfControl <user_id_number> --install