Jeżeli nie pasuje Ci samo wspomniane przez @imrika „put displays to sleep” wywołane skrótem ⌃⇧⏏, ponieważ to nadal implikuje konieczność ustawienia hasła na „natychmiast” po wygaszeniu ekranu, jak również będzie powodować jego żądanie po uruchomieniu wygaszacza, ani też nie zadowoli Cię shell script
/System/Library/CoreServices/Menu\ Extras/user.menu/Contents/Resources/CGSession -suspend
gdyż to wyrzuci Cię do ekranu logowania z zawieszeniem sesji (czyli muzyka przestanie być odtwarzana), to może sugestia @pedrosa podpięta do globalnej usługi systemowej stworzonej w Automatorze oraz zdefiniowany skrót klawiszowy ją wywołujący? Sam korzystam i nie narzekam.
A robi się to tak: otwierasz Automator (znajdziesz przez Spotlight, oczywiście, lub w katalogu Programy), wybierasz pod „typ dokumentu” „Usługa”, u góry z roletki należy wybrać, że Usługa otrzymuje „brak danych wejściowych” w „dowolnym programie”, następnie w okienku wyszukiwania czynności w Bibliotece czynności po lewej stronie wpisujesz „apple…”, odnajdujesz czynność „Uruchom AppleScript” i przeciągasz na puste pole po prawej. Zaznaczasz linię tekstu (* Your script goes here *) i w jej miejsce wklejasz:
tell application "System Events" to tell process "SystemUIServer"
tell (menu bar item 1 of menu bar 1 where description is "Menu dodatkowe pęku kluczy")
click
click menu item "Zablokuj ekran" of menu 1
end tell
end tell
(zakładam, że używasz polskiego języka w systemie; jeżeli jakiegokolwiek innego, znajdziesz odnośne tłumaczenia po ścieżce /Applications/Utilities/Keychain Access.app/Contents/Resources/Keychain.menu/Contents/Resources/[kod języka].lproj/MenuExtra.strings).
Zachowujesz sobie usługę pod nazwą, jaka Ci się tylko wymarzy (choć chyba najlogiczniej jest „Blokada ekranu” lub podobnie). Zostanie ona zapisana w katalogu ~/Library/Services.
Pozostaje tylko otworzyć Preferencje systemowe > Klawiatura > Skróty > Usługi > w „Ogólne” odnaleźć usługę o nadanej przed chwilą nazwie i wybrać do niej skrót klawiszowy wygodny dla Ciebie, a nie kolidujący z żadnym już istniejącym (ja używam F17, bo taki już ze mnie ironista, ale może to być np ⌃⌘Z czy co kto lubi).
Tutaj niewielkie zastrzeżenie: z powodu zabezpieczeń – zdaniem niektórych, aż przesadnych – wprowadzonych do nowszych systemów Apple, każda aplikacja, z poziomu której będziesz używał tego skrótu klawiszowego, musi być dodana do listy w Preferencje systemowe > Ochrona i prywatność > Prywatność > Dostępność > Pozwól poniższym programom sterować komputerem. Inaczej polecenie nie zadziała.
Jest też kolejna alternatywa, której nie próbowałem jeszcze, bo nie miałem potrzeby, jako że podane powyżej rozwiązanie mi działa, ale jest. Polega na stworzeniu binarki wykorzystującej wspomnianą funkcjonalność aplikacji Dostęp do pęku kluczy. Kod:
# 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
Uruchomienie za pomocą komendy:
./lockscreen
[źródło – proszę zapoznać się z zastrzeżeniami w komentarzach pod odpowiedzią].
Skrót również można utworzyć analogicznie, robiąc z tego usługę z użyciem czynności „Uruchom skrypt powłoki”, albo bezpośrednio w Terminalu, stosując aliasy, jak ktoś ma chęć się geekowo pobawić