Ich habe versucht, dies mit einem zweiten Konto (das ist das Administratorkonto) und der Kindersicherung zu erreichen, aber es schien, dass dies nicht möglich ist.
Ich weiß, dass es einige Programme gibt, die Sie herunterladen können, die Ihnen dabei helfen (Cold Turkey zum Beispiel). Aber es wäre viel einfacher, wenn ich dies nur mit Tools tun könnte, die bereits auf macOS verfügbar sind.
Sie können dies mit zwei integrierten Tools tun:
Mit Gatekeeper können wir „Regeln“ erstellen, mit denen Sie Apps blockieren/aktivieren können. Anhand Ihres Beispiels können wir eine Liste von Apps erstellen, die nur freitags ausgeführt werden dürfen:
spctl --add --label "FridayApps" /Applications/SomeApp.app
Der Vorteil davon ist, dass Sie mehrere Apps mit demselben Label hinzufügen und mit einem einzigen Befehl aktivieren/deaktivieren können:
sudo spctl --disable --label "FridayApps" <---- For Saturday thru Thursday
sudo spctl --enable --label "FridayApps" <---- For Friday
Dazu benötigen Sie ein einfaches Skript zum Aktivieren/Deaktivieren der Apps, und Sie müssen dieses als Daemon ausführen (benötigt sudo
Privilegien), sodass es sich in /Library/LaunchDaemons
.
Ich habe die Namenskonvention com.user.FridayApps.plist
und FridayApp.sh
für das Skript verwendet.
Bash-Skript:
#!/bin/bash
DOW=$(date +%u) # Sets the Day of Week; 5 = Friday
TOD=$(date +%T) # Sets the time of Day
start="12:00:00" # Sets start time
end="23:59:00" # Sets end time
if [ $DOW -eq 5 ]
then
if [[ "$TOD" > "${start}" && "$TOD" < "${end}" ]]
then
/usr/sbin/spctl --enable --label "FridayApps"
fi
else
/usr/sbin/spctl --disable --label "FridayApps"
fi
Launchd.plist
<?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>com.user.FridayApps</string>
<key>ProgramArguments</key>
<array>
<string>/User/MyName/script/location/FridayApps.sh</string>
</array>
<key>StartCalendarInterval</key>
<!-- Weekdays are 1 - 5; Sunday is 0 and 7 -->
<array>
<dict>
<key>Weekday</key>
<integer>5</integer>
<key>Hour</key>
<integer>12</integer>
<key>Minute</key>
<integer>01</integer>
</dict>
<dict>
<key>Weekday</key>
<integer>6</integer>
<key>Hour</key>
<integer>00</integer>
<key>Minute</key>
<integer>00</integer>
</dict>
</array>
</dict>
<key>RunAtLoad</key>
<true/>
</plist>
##Load the `.plist`
sudo launchctl load com.user.FridayApps.plist
Was hier passiert, sind zwei Dinge:
launchd
führt ein Skript zweimal aus. Einmal zum Einschalten und ein anderes Mal zum Ausschaltenspctl -a /Applications/AppName.app
teilt Ihnen mit, ob es aktiviert oder deaktiviert ist. Ich habe ein Benachrichtigungsskript geschrieben, das auf dem Kontext einer Textdatei basiert – es ist nicht zu schwer, es für diese Anwendung zu ändern: apple.stackexchange.com/q/257541/119271Im folgenden Tutorial werden Sie Folgendes tun:
Öffnen Sie dies im Skripteditor und exportieren Sie es als schreibgeschützte Anwendung und stellen Sie sicher, dass es geöffnet bleibt, nachdem der Run-Handler nicht aktiviert ist
Befolgen Sie nach dem Exportieren diese Anleitung, um zu verhindern, dass es im Dock angezeigt wird.
# Block Apps Based on Day By Josh Brown
# Last Modified: Aug 23 2018
on run
if checkDay("Friday") then
do shell script "sudo profiles remove -forced -identifier com.company.macos.blockapps"
else
do shell script "sudo profiles install forced -path /path/to/the.mobileconfig"
end if
end run
on checkDay(myDay)
set currentDay to weekday of (get current date)
if (currentDay as string) is (myDay as string) then
return true
else
return false
end if
end checkDay
Verwenden
<key>pathBlackList</key>
<array>
<string>/path/to/an.app</string>
<string>/path/to/asecond.app</string>
</array>
um zu steuern, welche Apps blockiert werden sollen.
Speichern Sie Folgendes in einer Datei mit der Erweiterung.mobileconfig
<?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>PayloadIdentifier</key>
<string>com.company.macos.blockapps</string>
<key>PayloadRemovalDisallowed</key>
<true/>
<key>PayloadScope</key>
<string>System</string>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>9c24d6b3-6233-4a08-a48d-9068f4f76cf0</string>
<key>PayloadOrganization</key>
<string>Company Name</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadDisplayName</key>
<string>Block Apps In User Folder</string>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadType</key>
<string>com.apple.applicationaccess.new</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadIdentifier</key>
<string>MCXToProfile.9c24d6b3-6233-4a08-a48d-9068f4f76cf0.alacarte.customsettings.2476221c-1870-4f3e-8c52-52386029c4cf</string>
<key>PayloadEnabled</key>
<true/>
<key>PayloadUUID</key>
<string>2476221c-1870-4f3e-8c52-52386029c4cf</string>
<key>PayloadDisplayName</key>
<string>Blocks all apps in the ~/ directory./string>
<key>familyControlsEnabled</key>
<true/>
<key>pathBlackList</key>
<array>
<string>/path/to/an.app</string>
<string>/path/to/asecond.app</string>
</array>
</dict>
</array>
</dict>
</plist>
Hinweis: Sie müssen dazu Administrator sein.
Speichern Sie die folgende Datei unter/Library/LaunchDaemons/
<?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>com.PlzUpvoteMy.answer</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/open</string>
<string>-W</string>
<string>**/path/to/application.app**</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartCalendarInterval</key>
<!--- Creds to @Allan for Calendar Interval -->
<!-- Weekdays are 1 - 5; Sunday is 0 and 7 -->
<array>
<dict>
<key>Weekday</key>
<integer>5</integer>
<key>Hour</key>
<integer>12</integer>
<key>Minute</key>
<integer>01</integer>
</dict>
<dict>
<key>Weekday</key>
<integer>6</integer>
<key>Hour</key>
<integer>00</integer>
<key>Minute</key>
<integer>00</integer>
</dict>
</array>
<key>UserName</key>
<string>**UserToBlock**</string>
</dict>
</plist>
Ändern Sie die Berechtigungen mit dem folgenden Befehl:
sudo chown root:wheel /Library/LaunchDaemons/com.MyName.plist
Hinweis: Sie müssen dazu Administrator sein.
Um den Daemon zu starten, verwenden Sie diesen Befehl:
sudo launchctl load /Library/LaunchDaemons/com.MyName.plist
Das Programm sucht alle 5 Sekunden nach den Apps und schließt sie, wenn sie ausgeführt werden.
Verwenden Sie diesen Befehl, um den Daemon zu stoppen
sudo launchctl unload /Library/LaunchDaemons/com.MyName.plist
JBis
John Smith
JBis