Ich versuche herauszufinden, ob es einen äquivalenten Befehlszeilen-Einzeiler gibt, der die exakt identische Funktionalität der Menüoption „Bildschirm sperren“ nachbildet, die über die Schlüsselbund-App in OS X 10.6 verfügbar ist
Ich kenne alle "üblichen" Lösungen (Schlaf-/Bildschirmschonereinstellungen, um bei der Reaktivierung ein Passwort zu verlangen), aber diese sind für mich nicht geeignet.
Diese Möglichkeit kenne ich auch:
/System/Library/CoreServices/Menu\ Extras/user.menu/Contents/Resources/CGSession -suspend
was für mich auch nicht geeignet ist.
Die perfekte Funktionalität ist die Option "Bildschirm sperren", aber ich habe noch keinen eleganten Weg gefunden, sie zu nennen.
Im Moment rufe ich über Automator an, was nicht elegant ist!
Ich habe viel über dieses Thema gelesen und bin der Meinung, dass noch niemand den „Heiligen Gral“ gefunden hat, aber ich habe mich gefragt, ob sich das geändert haben könnte.
In OS X 10.9 und höher:
pmset displaysleepnow
Dieser Befehl selbst bewirkt nur, dass das Display in den Ruhezustand versetzt wird, was zu einem schwarzen Bildschirm führt. Indem Sie Ihren Computer so konfigurieren, dass unmittelbar nach dem Ruhezustand ein Passwort erforderlich ist, fungiert dieser Einzeiler als Befehl zum „Sperren des Computers“. Die Einstellung ist unter Systemeinstellungen > Sicherheit & Datenschutz > Allgemein verfügbar .
Screen Lock
( System Preferences > Security & Privacy > Require password...
). Und natürlich können Sie den Zustand nicht erreichen Screen Lock
, wenn Sie ihn ausgeschaltet haben. Ansonsten funktioniert es einwandfrei und viel schneller als der albern platzierte Schlüsselbund-Menüeintrag.pmset displaysleepnow
ist eine viel bessere Lösung, als sich um das Abmelden zu streiten.Hinweis: Diese Lösung ist insofern einzigartig, als sie die Statusfunktion der Menüleiste der Schlüsselbundverwaltung verwendet, aber Sie müssen die Option nicht aktivieren Show keychain status in menu bar
, wie dies bei den AppleScript-Methoden der Fall ist.
Auch dafür habe ich nach einer Lösung gesucht. Heute hatte ich nur etwas Zeit zum Herumspielen und habe einen Weg gefunden, die Funktionalität programmgesteuert tatsächlich aus dem Schlüsselbund-Menü-Plugin aufzurufen. Diese Lösung funktioniert einwandfrei, solange Apple die relevanten Teile im Schlüsselbund-Menü-Plugin nicht ändert. Sie können eine kleine Binärdatei zum Sperren Ihres Bildschirms erstellen, indem Sie diese in Ihr Terminal einfügen ...
# Do our work in the temporary directory that gets cleaned on boot
cd /tmp
# Create the source file
cat > main.m <<END_OF_FILE
#import <objc/runtime.h>
#import <Foundation/Foundation.h>
int main () {
NSBundle *bundle = [NSBundle bundleWithPath:@"/Applications/Utilities/Keychain Access.app/Contents/Resources/Keychain.menu"];
Class principalClass = [bundle principalClass];
id instance = [[principalClass alloc] init];
[instance performSelector:@selector(_lockScreenMenuHit:) withObject:nil];
return 0;
}
END_OF_FILE
# Compile the source file
clang -framework Foundation main.m -o lockscreen
Führen Sie das Programm aus, indem Sie Folgendes eingeben:
./lockscreen
instance method '-_lockScreenMenuHit:' not found
, aber die Lockscreen-Anwendung funktioniert trotzdem. Beim Doppelklicken wird jedoch ein Terminalfenster geöffnet, bevor der Bildschirm gesperrt wird. Nach dem Entsperren müssen Sie das Fenster manuell schließen. Gibt es eine Möglichkeit, dieses Fenster automatisch zu schließen?Ich verwende Alfred →
Der universelle Hotkey ermöglicht es mir, ihn über eine Tastatur zu aktivieren.
AKTUALISIERUNG: 2019.
Der Sperrbildschirm für den Schlüsselbund ist in der aktuellen Version von MacOS Mojave & High Sierra nicht mehr verfügbar.
Apple hat jetzt einen Sperrbildschirm-Menüpunkt im Apple-Menü hinzugefügt. Dies hat die Standard-Tastaturkürzel crtl + cmd + Q
------------- Alte Antwort für vorheriges Betriebssystem unten --------------
Die Antwort von @Bart Arondson geht auf die Verwendung einiger Tastencodes ein, um im Menü des Schlüsselbund - Sperrbildschirms zu navigieren.
Alle Tastencodes können mithilfe von GUI-Skripten umgangen werden, um die Menüelemente tatsächlich direkt zu treffen.
Die Verwendung von Tastencodes zum Navigieren in Menüs kann ein Glücksfall sein. Und so sehr ich GUI-Skripting nicht mag, weil es auch Hit and Miss sein kann, imho ist es in diesem Fall weniger Hit and Miss.
Dieser Applescript-Code: (aktualisiert am 18.05.2016, bezogen von Using AppleScript to lock screen , bestätigte Arbeit in El Capitan)
tell application "System Events" to tell process "SystemUIServer"
tell (menu bar item 1 of menu bar 1 where description is "Keychain menu extra")
click
click menu item "Lock Screen" of menu 1
end tell
end tell
Kann in einer Automator-Aktion „Applescript ausführen“ in einem Automator-Dienst-Workflow verwendet werden.
Anschließend geben Sie dem Dienst eine Tastenkombination. Auf die übliche Weise in The Keyboard Shortcuts.
Der Service:
tell application "System Events" to tell process "SystemUIServer" to click (first menu bar item of menu bar 1 whose description is "Keychain menu extra") tell application "System Events" to click (menu item "Lock Screen" of menu 1 of menu bar item 1 of menu bar 1 of application process "SystemUIServer")
Einfacher Alias. Fügen Sie dies zu Ihrem bashrc hinzu
alias afk="osascript -e 'tell application \"System Events\" to keystroke \"q\" using {command down,control down}'"
Geben afk
Sie Ihr Terminal ein, um es auszuführen.
Stellen Sie die Einstellungen so ein, dass der Bildschirm gesperrt wird, wenn der Bildschirmschoner aktiv ist.
Dann können Sie diesen Terminalbefehl verwenden, um den Bildschirmschoner zu starten.
/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine
Soweit ich das beurteilen kann, ist dies genau das, was der Menüpunkt Schlüsselbund tut.
Ich denke, die Antwort auf Ihre Frage lautet: "Nein, es gibt keine Befehlszeilenmethode, um dies zu tun."
Da dies ein Menüleistenelement ist, können Sie mit Keyboard Maestro oder einem ähnlichen Tool nicht einfach darauf zugreifen.
Wenn Sie jedoch einer Lösung mit einer Drittanbieter-App nicht abgeneigt sind, können Sie dies mit QuickLock tun.
Es ist eine kostenlose (Spenden akzeptiert) App, mit der Sie eine Tastenkombination zuweisen können, um den Bildschirm zu sperren. Es gibt auch ein Menüleistenelement, auf das Sie klicken können, um den Bildschirm zu sperren.
Mit der App können Sie ein Passwort festlegen (getrennt von Ihrem Kontopasswort).
Es erfordert kein Passwort mit Bildschirmschoner, es ist alles völlig getrennt.
Sie können ein Video davon in Aktion unter http://www.youtube.com/watch?v=SBHwykPB19o sehen
ps Wenn der Bildschirm gesperrt ist, geben Sie Ihr Passwort ein, um ihn zu entsperren. Ich war verwirrt, weil ich erwartet hatte, ein Passwortfeld zu sehen. Da ist gar nichts. Sie geben nur das Passwort ein.
pps Ich habe das nur für ein paar Minuten benutzt, also kann es einige andere Probleme damit geben, die mir nicht bekannt sind, aber es scheint die Rechnung zu erfüllen.
Der Mac ist nicht darauf ausgelegt, Ihnen eine solche Option zu bieten. In diesem Artikel wird jedoch eine Problemumgehung mit QuickSilver erläutert. Obwohl ich nicht verstehen kann, warum Ihnen die Lösung, die Apple nativ anbietet, nicht gefällt, wünsche ich Ihnen viel Glück beim Finden einer Lösung.
Eine schnelle Möglichkeit, Ihren Computer über die Befehlszeile mit Hilfe von AppleScript in den Ruhezustand zu versetzen, ist
osascript -e 'tell application "Finder" to sleep'
Das sperrt Ihren Bildschirm nicht, es sei denn, Sie haben es so eingestellt, dass sofort ein Passwort erforderlich ist, was ich nicht gerne mache. Ich notiere es nur für die Nachwelt.
Ich habe den oben von jnk geposteten Code verwendet. Dann habe ich appify verwendet, um daraus eine OS X-App zu machen, mathiasbynens.be/notes/shell-script-mac-apps . Dann habe ich Quicksilver verwendet, um meine eigene Tastenkombination zuzuweisen (ich habe cmd+L gewählt). Das Terminal öffnet/bleibt nicht offen (wie einige besorgt waren), wie ich es eingerichtet habe, weil ich stattdessen eine OS X-App starte.
Ich bin auch auf dieses Problem gestoßen. /System/Library/CoreServices/Menu\ Extras/user.menu/Contents/Resources/CGSession -suspend
bewirkt, dass das System alle Aufgaben aussetzt, anstatt den Bildschirm zu sperren.
JordanBtucker war auf dem richtigen Weg, hier ist die vollständige Funktion, die ich verwende:
lockscr() {
if [ "$(defaults read com.apple.screensaver askForPasswordDelay 2>/dev/null)" ]; then
local Olddelay="$(defaults read com.apple.screensaver askForPasswordDelay)"
defaults write com.apple.screensaver askForPasswordDelay -int 0 && \
pmset displaysleepnow
defaults write com.apple.screensaver askForPasswordDelay -int "${Olddelay}"
else
defaults write com.apple.screensaver askForPasswordDelay -int 0 && \
pmset displaysleepnow
defaults delete com.apple.screensaver askForPasswordDelay
fi;
}
Dadurch behält der Benutzer seine eigenen Einstellungen bei, sperrt aber den Bildschirm sicher :)
defaults write com.apple.screensaver askForPassword -bool TRUE
und defaults write com.apple.screensaver askForPasswordDelay -int 10
Dies sind meine Standardwerte. Nun verhält sich das obige Skript wie beschrieben.Unter 10.14.6 Mojave starte ich die Bildschirmschoner-Engine stattdessen mit diesem Befehl:
/System/Library/CoreServices/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine
Bearbeiten: Stellen Sie sicher, dass Sie die Einstellungen so einstellen, dass der Bildschirm gesperrt wird, wenn der Bildschirmschoner in den Systemeinstellungen aktiv ist, und dass das Passwort sofort angefordert wird.
Ich verwende BetterTouchTool für diesen Zweck und habe „Zum Anmeldebildschirm wechseln“ (was der Sperrbildschirm ist) eine Tastenkombination zugewiesen: erfüllt nicht die Befehlszeilenanforderung, kann Ihnen aber dennoch hilfreich sein.
Ich bin mir nicht ganz sicher, ob ich dein Problem hier verstehe. Wenn Sie ein Passwort für den Bildschirmschoner benötigen, wird die Ausführung von Prozessen nicht gestoppt oder Sie werden daran gehindert, aus der Ferne auf Ihren Mac zuzugreifen. Ich habe diese Option eingestellt (mit ControlPlane, um sie bei der Arbeit zu aktivieren und zu Hause zu deaktivieren) und ich hatte noch nie, dass das System sich weigerte, auf eine Remotedesktop-, VNC- oder SSH-Verbindung zu reagieren. In allen Fällen, in denen GUI-Zugriff erforderlich ist, muss ich nur das Passwort eingeben; SSH verwendet ein Schlüsselpaar, sodass kein Passwort angefordert wird. Wenn Sie nicht möchten, dass Apps in den Energiesparmodus wechseln, stellen Sie sicher, dass die Energieeinstellungen des Systems so eingestellt sind, dass das System nicht in den Energiesparmodus wechselt, bevor Sie zurückkehren. Stellen Sie einfach das Sleep-Timeout auf eine lange Verzögerung ein. Wenn Sie einfach nicht lästig sein möchten, ein Passwort einzugeben, wenn Sie vor dem Computer sitzen und arbeiten,
Ich benutze Strg-Shift-Eject, um den Bildschirm zu sperren. Es ist schnell, einfach und es funktioniert. Dies ist die integrierte Methode zum Sperren des Bildschirms. Wahrscheinlich wird sich niemand eine Alternative einfallen lassen, nur weil das Replizieren der bereits in das Betriebssystem integrierten Funktionen ein wenig zu überflüssig ist, als dass irgendjemand viel Zeit in die Verfolgung investieren könnte.
Soweit ich das beurteilen kann, gibt es in Schlüsselbund in 10.8 ohnehin keine Option zum Sperren des Bildschirms, sodass Ihre bevorzugte Lösung bei einem Upgrade nicht mehr vorhanden sein wird. Bearbeiten: Ich habe dies in den Schlüsselbundeinstellungen nicht bemerkt; Ja, es ist immer noch da in 10.8.
Wenn Sie Automator dafür verwenden, können Sie das Skript nicht einfach als App packen und eine Hotkey-Kombination zuweisen oder es für den schnellen Zugriff im Dock lassen?
Genau wie der Fragesteller suchte ich nach einer Möglichkeit, den Schlüsselbund-Sperrbildschirm schnell zu verwenden.
Durch die Kombination des Wissens aus einem alten Mac OS X-Hinweis und etwas Applescripting kam ich auf Folgendes:
Befolgen Sie zunächst die Schritte aus dem verknüpften Mac OS X-Hinweis , um eine Tastenkombination für die Schlüsselbund-Sperrbildschirmfunktion hinzuzufügen.
Für mich (auf 10.8.4) hat dies das Problem nicht gelöst, da ich ctrl+ drücken musste F8, um den Fokus auf die Statusleiste zu verschieben, drücken down, um die Schlüsselbund-Menüleiste zu öffnen, und dann ctrl+ drücken F9, um den Bildschirm zu sperren. Ich habe diesen Prozess mit dem folgenden Applescript automatisiert:
# Press ^F8
tell application "System Events"
key code 100 using control down
end tell
# Press "down"
tell application "System Events"
key code 125
end tell
# Press ^F9
tell application "System Events"
key code 101 using control down
end tell
Öffnen Sie Automator, erstellen Sie einen neuen Dienst, fügen Sie ein Run Applescript
Modul hinzu, kopieren Sie den obigen Code und speichern Sie den Automator-Dienst unter einem gewünschten Namen. Gehen Sie nun in den Systemeinstellungen zu Tastaturkürzel und fügen Sie ein Tastaturkürzel für den frisch erstellten Automator-Dienst hinzu. Ich habe meine auf ctrl+ cmd+ gesetzt L.
Drücken Sie jetzt die Tastenkombination in einer beliebigen App und Ihr Bildschirm wird sofort gesperrt.
Für diejenigen, die sich fragen, warum nicht einfach andere Methoden verwenden, hier ist meine Meinung dazu:
Schneller Benutzerwechsel/Sperrbildschirm
Mit dieser Methode werde ich von meinem WPA2-Unternehmensnetzwerk abgemeldet. Das ist nicht gut, da das erneute Verbinden manchmal Ewigkeiten dauert.
Bildschirmschoner + Passwort
Repliziert die Funktionalität , aber das bedeutet, dass, wenn mein Laptop für einige Zeit inaktiv ist, während ich daneben eine Zeitung lese, der Bildschirm gesperrt wird, wenn ich ihn wieder verwenden möchte. Dies ist unerwünscht. Die Kopplung dieser Methode mit einer Hot-Corner hat den Nebeneffekt, dass unerfahrene Mac-Benutzer die Hot-Corner versehentlich auslösen könnten, was zu einer Bildschirmsperre führt. Manchmal stieß ich auch versehentlich auf eine heiße Ecke, die meinen Arbeitsablauf erheblich verzögerte.
Apps von Drittanbietern
Diese sind alle in Ordnung, aber warum eine Drittanbieter-App ausführen, wenn sie nativ im Betriebssystem verfügbar ist?
Ab 2021 finde ich die folgende Lösung am "richtigsten":
Wie in der Antwort von markhunte erwähnt, enthält das Apple-Menü einen Eintrag, um „Bildschirm sperren“ mit der Tastenkombination zu initiieren:controlcommandQ
Also simuliere ich das Drücken dieser Tastenkombination:
osascript -e 'tell application "System Events" to keystroke "q" using {control down, command down}'
Vorteile:
Bearbeiten: Ich habe gerade gesehen, dass die Antwort von Aritro Paul diesen Befehl bereits enthält (in Form eines Alias). Ich hoffe, meine Ausarbeitung ist dennoch hilfreich.
Ich verwende die Bildschirmschoner-Passworteinstellung mit einem Tastendruck (Strg+Umschalt+Eject) auf 10.6.8, und soweit ich sehen kann, macht es dasselbe wie das Sperrbildschirmelement aus dem Taskleistensymbol für den Schlüsselbundzugriff.
Ich weiß, dass dies einigen anderen Antworten ähnlich ist, aber anstelle der "heißen Ecke" wird ein Tastendruck verwendet, was für mich bequemer ist.
Diese Lösung ist hier ausführlicher beschrieben, von dort habe ich sie: http://osxdaily.com/2011/01/17/lock-screen-mac/
Benutze es jetzt seit mehreren Jahren ohne Probleme.
Nun, kombinieren Sie einfach zwei der obigen Antworten. Führen Sie diesen Befehl aus:
open -a /System/Library/Frameworks/ScreenSaver.framework//Versions/A/Resources/ScreenSaverEngine.app
Nachdem Sie die Sicherheits- und Datenschutzeinstellungen so eingestellt haben, dass Sie sofort nach einem Passwort gefragt werden. Erstellen Sie einen Alias für Ihre Shell, wenn Sie den Befehl einfacher ausführen möchten.
FWIW, ich verstehe Ihre Situation und habe selbst nach einer guten Lösung dafür gesucht. Ich bin auf diesen Thread gestoßen, weil ich nach einer etwas schnelleren Methode gesucht habe, als ich mir schließlich ausgedacht habe. Ich habe mir etwas ausgedacht, das, obwohl es nicht genau das ist, was ich gehofft hatte, funktioniert und ein akzeptabler Kompromiss ist. Ich verwende dieselbe Art von GUI-Skriptbefehlen wie @markhunte zeigt (etwas andere Struktur, aber dieselbe Idee), aber anstatt alles nur in einen Automator-Dienst-Workflow zu platzieren, habe ich es in ein .app-Bundle aufgeteilt, das mit Platypus erstellt wurde. Ich habe dies getan, weil ich bei meinen Reisen und Tests festgestellt habe, dass Automator-Dienste unter bestimmten Bedingungen sehr langsam laufen. Wenn Ihr Mac unter irgendeiner Art von Stress steht, dh ein Festplatten-Scan läuft, eine A/V-Software etwas tut, Mail E-Mails herunterlädt usw., Das Betriebssystem scheint die Dienste nach hinten zu schieben. Dies hat den Effekt, dass es mehrere Sekunden dauert, bis der Workflow ausgeführt wird (manchmal) und gelegentlich sogar mehrere Sekunden, bevor die GUI-Befehle im Dienst ausgeführt werden. Ziemlich ärgerlich, wenn Sie versuchen, Ihren Bildschirm "schnell" zu sperren, und das dauert 10 Sekunden!
Eine eigenständige "App" hat auch den Vorteil, dass Sie buchstäblich Dutzende verschiedener Apps von Drittanbietern verwenden können, um sie auszuführen, oder einfach Spotlight oder einen Automator-Dienst verwenden, um die App zu starten. Jeder von ihnen funktioniert. Das schnellste, das ich gefunden habe, ist ein altes Dienstprogramm namens Spark, das auf wundersame Weise sogar in 10.8.4 noch funktioniert. Frag mich nicht, wie es seit der letzten Entwicklung von 10.4 war! Spark finden Sie hier - Spark
Zusätzlich zu all dem habe ich das Problem der manchmal langsamen GUI-Befehle bekämpft, indem ich CocoaDialog gebündelt und zuerst aufgerufen habe, wenn die App ausgeführt wird, um eine kleine schwebende Blase in der Mitte des Bildschirms anzuzeigen, die darauf hinweist, dass ein Sperrbildschirm stattfindet. Normalerweise erfolgt die Sperre direkt danach, aber wenn es eine Verzögerung gibt, gibt dies zumindest ein visuelles "Feedback", dass Sie die richtigen Tasten gedrückt haben. Ich habe es auch zur Selbstheilung gemacht - wenn "Zugriff auf Hilfsgeräte aktivieren" nicht aktiviert ist, werden Sie mit einem Dialog benachrichtigt und können es sofort aktivieren. Es wird auch sicherstellen, dass das Schlüsselbundzugriffsmenü in der Menüleiste angezeigt wird, da dies eine Voraussetzung ist oder das GUI-Skripting fehlschlägt.
Ctrl- Shift- ⏏ Eject(auf älteren Macs),
Ctrl- Shift- ⌽ Power(auf neueren Macs)
Matthias Riegler
Benutzer40433
Ɱark Ƭ
Benutzer40433
Tyler Muford
Benutzer40433
dstarh
Benutzer44136
rogerpack