Wie kann ich SelfControl immer zum Laufen bringen?

7

Ich benutze die SelfControl App.

Gibt es eine Möglichkeit, es immer zum Laufen zu bringen?

Kennzeichen
quelle

Antworten:

7

Ja. Öffnen Sie einfach die Systemeinstellungen im /ApplicationsOrdner, 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.

Kennwort zum Schlüsselbund hinzufügen

Ö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.

Erstellen Sie das AppleScript

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 defaultTime1440 (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.scptin unserem Home-Ordner. Erinnere dich an diesen Weg.

Erstellen Sie den Start-Eintrag

Ö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 .plistErweiterung 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.

Laden Sie den Starteintrag

Ö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/LaunchAgentsdrin ist, wird es automatisch geladen, wenn Sie sich anmelden. Wenn Sie Ihren Computer zurückhaben möchten, ersetzen Sie loadden obigen Befehl durch unloadund warten Sie, bis die verbleibende SelfControl-Zeit abgelaufen ist.

Scott
quelle
SelfControl ist für die Aktivierung seiner Funktionalität auf 24 Stunden begrenzt. Das ist wahrscheinlich relevanter ..?
Daniel Beck
Fair genug, aber ich denke nicht, dass eine Ablehnung eine vernünftige Antwort auf das Originalplakat ist, das eine mehrdeutige Frage stellt.
Scott
Ich habe nicht abgelehnt und weiß nicht, wer das getan hat, obwohl es nach meinem Kommentar eine vernünftige Annahme ist. Schade, dass der Downvoter sich nicht die Mühe gemacht hat, sich zu äußern. Upvote für die bearbeitete Antwort, deutlich besser.
Daniel Beck
2
In diesem Fall werde ich gegen Leute schimpfen, die abstimmen, ohne eine Erklärung zu hinterlassen!
Scott
Freut mich das zu hören, Mark. * bläst Himbeere bei Downvoter *
Scott
7

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 .

Charlie Stigler
quelle
Sollte ein Jahr nicht 525600 Minuten sein? Und ein 5-Tage-Intervall 7200?
reynoldsnlp
3

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.

Andreas
quelle
1
Warum wurde dies abgelehnt? Es ist toll.
Justin Maxwell
1

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 XXXXist 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.

Andrew
quelle
oder sudo crontab -eund 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
reynoldsnlp