Polecenie blokady ekranu One-Liner

62

Próbuję dowiedzieć się, czy istnieje jakiś równoważny liniowy wiersz poleceń, który replikuje dokładnie identyczną funkcjonalność opcji menu „Blokuj ekran” dostępnej za pośrednictwem aplikacji pęku kluczy w OS X 10.6

Jestem świadomy wszystkich „zwykłych” rozwiązań (preferencje trybu uśpienia / wygaszacza ekranu, które wymagają hasła przy ponownej aktywacji), ale nie są one dla mnie odpowiednie.

Mam również świadomość tej opcji:

/System/Library/CoreServices/Menu\ Extras/user.menu/Contents/Resources/CGSession -suspend

co też nie jest dla mnie odpowiednie.

Idealną funkcjonalnością jest opcja „Zablokuj ekran”, ale nie znalazłem jeszcze eleganckiego sposobu, aby to nazwać.

W tej chwili dzwonię za pośrednictwem Automatora, co nie jest eleganckie!

Dużo czytałem na ten temat i rozumiem, że nikt jeszcze nie znalazł „świętego Graala”, ale zastanawiałem się, czy to mogło się zmienić.

użytkownik40433
źródło
Jak dzwonisz za pomocą Automatora?
Matthieu Riegler,
3
Co jest złego w ustawianiu preferencji bezpieczeństwa, aby wymagały hasła, gdy wygaszacz ekranu jest aktywny, a następnie używania gorącego rogu do aktywacji wygaszacza ekranu? To szybkie i eleganckie, ale powiedziałeś, że nie podoba ci się to rozwiązanie.
Ɱark Ƭ
3
Jest to sugestia pragmatyczna, którą wypróbowywałem i wyłączałem przez wiele lat użytkowania, ale natura moich wzorców pracy oznacza, że ​​przeszkadza to> 80% czasu. Potrzebuję zdolności do (fizycznego) reagowania na żądania inżynieryjne i sytuacje awaryjne i natychmiastowego blokowania ekranu, ale również zdalnego dostępu do skrzynki, przy jednoczesnym zachowaniu wszystkich istniejących połączeń i zadań w tle.
user40433,
1
Re: „gdzie jest menu blokady ekranu w pęku kluczy” Otwórz preferencje pęku kluczy ... preferencje ... pokaż na pasku menu! Odp: „Co to robi?” Blokuje ekran! Poza tym myślę, że dość dokładnie wyjaśniłem moje wymagania (i moją niechęć do „rozwiązań”, które zdaniem niektórych ludzi spełniają moje wymagania, ale nie są).
user40433 30.01.2013
1
Zobacz także stackoverflow.com/questions/1976520/…
rogerdpack

Odpowiedzi:

50

W OS X 10.9 i nowszych:

pmset displaysleepnow

Samo to polecenie powoduje tylko uśpienie wyświetlacza, co powoduje czarny ekran. Konfigurując komputer tak, aby wymagał hasła natychmiast po uśpieniu, ten jednowarstwowy działa jako polecenie „zablokuj komputer”. Preferencje są dostępne w Preferencjach systemowych> Bezpieczeństwo i prywatność> Ogólne .

Źródło: Jak zablokować ekran na MacBooku Air?

jordanbtucker
źródło
9
tylko dla kompletności, działa to tylko wtedy, gdy w preferencjach systemowych włączona jest opcja „Wymagaj hasła po uśpieniu lub uruchomieniu wygaszacza ekranu”
Hofi
1
Wydaje się to najbardziej równoważne z CTRL + SHIFT + Eject.
Jan Kyu Peblik,
Nie jest to równoważne z elementem paska menu Brelok. Nie blokuje ekranu; tylko uśpienie komputera.
Radon Rosborough,
1
@RadonRosborough Nie, to nie powoduje uśpienia komputera . Powoduje uśpienie wyświetlacza. Jeśli zdalnie uzyskasz dostęp do zablokowanego komputera Mac, wszystko działa. To może być najkrótsza i najszybsza odpowiedź, ponieważ nie przechodzi ona przez wszystkie wolne GUI pęku kluczy lub powolne GUI Findera.
dan
Jest to znacznie lepsze rozwiązanie niż stara i źle umieszczona pozycja menu Brelok 👏🏻.
dan
41

Uwaga: To rozwiązanie jest wyjątkowe, ponieważ wykorzystuje funkcję stanu paska menu Dostęp do pęku kluczy, ale nie wymaga włączenia tej Show keychain status in menu baropcji, tak jak robią to metody AppleScript.

Szukałem również rozwiązania tego problemu. Dzisiaj miałem trochę czasu na zabawę i znalazłem sposób, aby programowo wywołać funkcjonalność z wtyczki menu pęku kluczy. To rozwiązanie działa idealnie, dopóki Apple nie zmieni odpowiednich części we wtyczce menu pęku kluczy. Możesz utworzyć mały plik binarny do blokowania ekranu, wklejając go do terminala ...

# 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

Uruchom program, wpisując:

./lockscreen
mrArkwright
źródło
Czy możesz wyjaśnić, jak z tego korzystać? Czy mogę skopiować i wkleić to do przepływu pracy Automatora? A może zrobisz z niego skrypt jabłkowy? W tej chwili trudno zrobić coś z odpowiedzią.
Saaru Lindestøkke
1
Jest to prosty program Celu C. Skopiuj go do pliku o nazwie main.m. Następnie uruchom „clang -framework Foundation main.m -o lockscreen”, aby skompilować program. „./lockscreen” uruchamia program i blokuje ekran.
mrArkwright,
Próbowałem, działa zgodnie z opisem. Kompilacja generuje jedno ostrzeżenie instance method '-_lockScreenMenuHit:' not found, ale aplikacja blokady ekranu działa mimo to. Jednak po dwukrotnym kliknięciu otwiera okno terminala, zanim zablokuje ekran. Po odblokowaniu musisz ręcznie zamknąć okno. Czy istnieje sposób na automatyczne zamknięcie tego okna?
Saaru Lindestøkke
6
Zebrałem aplikację OS X: Lock Screen.app na podstawie tej odpowiedzi i czyjąś pracę, jak wyszczególniono w linku, po prostu otacza ten kod i dodaje piękną ikonę, dzięki czemu możemy go uruchomić bezpośrednio, dziękuję.
Mengdi Gao,
1
To nie działa już w wersji 10.13, ponieważ MenuExtra zostało usunięte. To działa zamiast tego: stackoverflow.com/a/26492632/368409
Lloeki
15

Używam Alfreda →

wprowadź opis zdjęcia tutaj

Uniwersalny skrót pozwala mi aktywować go za pomocą klawiatury.

Vaibhav Bajpai
źródło
Niesamowite! Czy uniwersalny skrót jest wbudowany lub stanowi część pakietu zasilania?
Dan Rosenstark,
1
Jest wbudowany ...
Vaibhav Bajpai
2
Niestety nie o to chodzi - zamyka także połączenie internetowe, a blokada menu pęku kluczy nie.
Marcin Bobowski
W Launchbar znajduje się również odpowiednik : „Blokada ekranu”
William Turrell
Nie jest to równoważne z elementem menu Brelok. Nie uśpia komputera, a także odtwarza denerwującą animację.
Radon Rosborough,
15

AKTUALIZACJA: 2019.

Blokada ekranu pęku kluczy nie jest już dostępna w aktualnej wersji systemu MacOS Mojave i High Sierra.

Apple dodało teraz pozycję menu blokady ekranu w menu Apple. Domyślny skrót klawiaturowy to crtl + cmd + Q

wprowadź opis zdjęcia tutaj


------------- Stara odpowiedź dla poprzedniego systemu operacyjnego poniżej --------------

Odpowiedź @Bart Arondson wymaga użycia niektórych kodów kluczowych do poruszania się po menu Blokada pęku kluczy.

Wszystkie kody kluczy można ominąć za pomocą skryptów GUI, aby faktycznie trafić bezpośrednio w pozycje menu.

Używanie kodów kluczowych do poruszania się po menu może być niemożliwe. I o ile nie lubię skryptów GUI, ponieważ można je również trafiać i tracić imho, w tym przypadku jest mniej trafień.

Ten kod AppleScript: (zaktualizowano 18.05.2016, pochodzi z Korzystanie z AppleScript do blokowania ekranu , potwierdzono działanie w 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

Może być użyty w akcji Automatora „Uruchom Applescript” w przepływie pracy usługi Automatora.

wprowadź opis zdjęcia tutaj

Następnie dajesz tej usłudze skrót klawiaturowy. W zwykły sposób w Skrótach klawiszowych.

wprowadź opis zdjęcia tutaj

Usługi:

wprowadź opis zdjęcia tutaj

markhunte
źródło
Działa to doskonale dla tego, czego potrzebowałem, dziękuję!
nictrix
możesz także uruchomić polecenie terminalu z automatora, więc tego użyłem. wydawało się bardziej „eleganckie” :). bardzo fajne rozwiązanie!
Sorin Buturugeanu
3
Używałem tego rozwiązania przez długi czas, ale odkąd osX El Captain już nie działa :(.
Marcin Bobowski,
Nadal na to patrzę. Wygląda jednak na to, że menu nie zgłasza się po kliknięciu następnego elementu. Uruchomienie tych dwóch linii działa, ale jest powolne. 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")
markhunte
8

Ustaw preferencje, aby blokować ekran, gdy wygaszacz ekranu jest aktywny.

Panel preferencji bezpieczeństwa i prywatności

Następnie możesz użyć tego polecenia terminala, aby uruchomić wygaszacz ekranu.

/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine

O ile wiem, dokładnie to robi element menu pęku kluczy.

Ɱark Ƭ
źródło
Dziękuję za komentarz, ale z tym zbyt długo walczyłem i staram się znaleźć alternatywę.
user40433
1
Dla jasności i kompletności, powyższe rzeczywiście uruchamia wygaszacz ekranu, ale nie robi tego, co oferuje funkcja menu „Blokuj ekran”.
user40433
1
Następnie musisz sprecyzować, czego dokładnie szukasz.
Ɱark Ƭ
Hmmm ... nie jestem pewien, czy mogę być bardziej konkretny lub zwięzły niż akapit początkowy w moim pierwotnym pytaniu!
user40433
1
Miałem okazję przetestować 10.6.8. W tym systemie operacyjnym monitor jest wyłączony, a sesja jest zablokowana. Znalazłem programowy sposób, aby to zrobić, ale nie jest on wbudowany.
Ɱark Ƭ
3

Myślę, że odpowiedź na twoje pytanie brzmi: „Nie, nie ma na to sposobu z linii poleceń”.

Ponieważ jest to element paska menu, nie jest to coś, do czego można łatwo uzyskać dostęp za pomocą Keyboard Maestro lub innego podobnego narzędzia.

Jeśli jednak nie sprzeciwisz się rozwiązaniu korzystającemu z aplikacji innej firmy, QuickLock pozwoli ci to zrobić.

Jest to darmowa (akceptowana darowizny) aplikacja, która pozwala przypisać skrót klawiaturowy do zablokowania ekranu. Istnieje również element paska menu, który można kliknąć, aby zablokować ekran.

Aplikacja pozwala ustawić hasło (niezależne od hasła do konta).

Nie wymaga użycia hasła do wygaszacza ekranu, wszystko jest całkowicie osobne.

Możesz zobaczyć wideo z tego działania w akcji na http://www.youtube.com/watch?v=SBHwykPB19o

ps, gdy ekran jest zablokowany, wpisz hasło, aby je odblokować. Byłem zdezorientowany, ponieważ spodziewałem się zobaczyć pole hasła. Nie ma żadnego. Po prostu wpisz hasło.

pps Używałem tego tylko przez kilka minut, więc mogą być z tym inne problemy, o których nie wiem, ale wydaje się, że pasują do rachunku.

TJ Luoma
źródło
Dziękuję za Twój wkład ... chociaż nie to, czego chciałem szukać (uwielbiam metody open source i DIY!), Wygląda bardzo interesująco i wydaje się oferować funkcjonalność, której potrzebuję, choć w aplikacji innej firmy. Przyjrzę się temu bliżej. Dzięki!
user40433,
Chciałbym też znaleźć sposób, aby to zrobić, ale nie sądzę, że istnieje.
TJ Luoma,
wydaje się martwy ...
rogerdpack,
3

Mac nie został zaprojektowany, aby zapewnić taką opcję. Jednak w tym artykule wyjaśniono obejście problemu za pomocą QuickSilver. Chociaż nie rozumiem, dlaczego nie podoba Ci się rozwiązanie oferowane przez Apple, życzę powodzenia w znalezieniu rozwiązania.

bispymusic
źródło
3

Szybkim sposobem na uśpienie komputera za pomocą wiersza polecenia za pomocą AppleScript jest

osascript -e 'tell application "Finder" to sleep'

To nie blokuje ekranu, chyba że masz ustawione, aby wymagać natychmiastowego hasła, czego nie lubię. Po prostu zauważam to dla potomności.

Bruno Bronosky
źródło
3

Łatwy alias. Dodaj to do swojego bashrc

alias afk="osascript -e 'tell application \"System Events\" to keystroke \"q\" using {command down,control down}'"

wpisz afkswój terminal, aby wykonać.

Aritro Paul
źródło
2

Użyłem kodu opublikowanego powyżej przez jnk. Następnie użyłem appify, aby przekształcić go w aplikację OS X, mathiasbynens.be/notes/shell-script-mac-apps . Następnie użyłem Quicksilver do przypisania własnego skrótu klawiaturowego (wybrałem cmd + L). Terminal nie otwiera się / pozostaje otwarty (jak niektórzy się martwili) z tym, jak go skonfigurowałem, ponieważ zamiast tego uruchamiam aplikację OS X.

  1. Postępuj zgodnie z powyższą odpowiedzią: jnk, Lock Screen Command One-Liner
  2. Użyj appify, aby przekształcić ją w aplikację OS X, klikając powyższy link w moim podsumowaniu.
  3. Zainstaluj Quicksilver.
  4. Użyj Quicksilver, aby przypisać skrót klawiaturowy do uruchomienia nowej aplikacji. Jest pod „Wyzwalacze”. Lubię Quicksilver, ponieważ uwielbiam używać skrótów klawiaturowych / skrótów klawiszowych do uruchamiania aplikacji i stron internetowych w systemie OS X.
jbrock
źródło
1

Wpadłem również na ten problem. /System/Library/CoreServices/Menu\ Extras/user.menu/Contents/Resources/CGSession -suspendpowoduje zawieszenie przez system wszystkich zadań zamiast blokowania ekranu.

JordanBtucker był na dobrej drodze, oto pełna funkcja, której używam:

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;
}

To pozwala zachować własne ustawienia, ale bezpiecznie blokuje ekran :)

jorvi
źródło
W High Sierra wartości te nie są już ustawiane przez interfejs użytkownika. Jeśli jednak ustawisz je ręcznie, interfejs użytkownika je uszanuje. defaults write com.apple.screensaver askForPassword -bool TRUEi defaults write com.apple.screensaver askForPasswordDelay -int 10 to są moje wartości domyślne. Teraz powyższy skrypt będzie działał zgodnie z opisem.
Sean Perry
0

W tym celu używam BetterTouchTool i przypisałem skrót klawiaturowy do „Przełącz na ekran logowania” (który jest ekranem blokady): nie spełnia wymagań wiersza poleceń, ale i tak może ci pomóc.

skrót klawiaturowy w BetterTouchTool, aby zablokować ekran

iolsmit
źródło
Dzięki za pomoc i sugestie. Wraz z QuickLock wspomnianym powyżej przez @TJLuoma BetterTouchTool (chociaż nie jest to metoda, którą postanowiłem znaleźć) wydaje się bardzo zbliżać do moich celów funkcjonalnych. Przyjrzę się temu bliżej ... dzięki.
user40433
0

Nie jestem pewien, czy rozumiem twój problem tutaj. Jeśli potrzebujesz hasła do wygaszacza ekranu, nie spowoduje to zatrzymania procesów ani zablokowania dostępu do komputera Mac. Mam tę opcję ustawioną (używając ControlPlane do aktywacji w pracy i dezaktywacji w domu) i nigdy nie miałem systemu, który odmówił odpowiedzi na połączenie z pulpitem zdalnym, VNC lub SSH. We wszystkich przypadkach, w których wymagany jest dostęp do GUI, wystarczy wprowadzić hasło; SSH używa pary kluczy, więc hasło nie jest wymagane. Jeśli nie chcesz, aby aplikacje były w trybie uśpienia, upewnij się, że ustawienia zasilania systemu są takie, że nie przejdzie ono w tryb uśpienia przed powrotem. Po prostu ustaw długi czas spania. Jeśli po prostu nie chcesz wprowadzać hasła, gdy siedzisz przed komputerem i pracujesz,

Używam ctrl-shift-eject do blokowania ekranu. Jest szybki, prosty i działa. Jest to wbudowany sposób blokowania ekranu. Nikt raczej nie wymyśli alternatywy po prostu dlatego, że replikacja funkcji już zaimplementowanych w systemie operacyjnym jest trochę zbyteczna, aby ktokolwiek mógł poświęcić na to dużo czasu.

O ile mogę stwierdzić, w Keychain w 10.8 nie ma opcji „blokady ekranu”, więc preferowane rozwiązanie nie będzie istnieć, jeśli kiedykolwiek zaktualizujesz. Edycja: Nie zauważyłem tego w preferencjach pęku kluczy; tak, wciąż tam jest w 10.8.

Jeśli używasz do tego Automatora, czy nie możesz po prostu spakować skryptu jako aplikacji i przypisać kombinację klawiszy skrótu lub pozostawić go w Docku, aby uzyskać szybki dostęp?

dr.nixon
źródło
Ctrl-shift-eject naprawdę wchodzi w tryb „szybkiej zmiany użytkownika”. Co najmniej jedno rozwiązanie VPN (to, którego muszę użyć do celów zawodowych) nie lubi tego i rozłącza VPN, gdy to robię, kończąc wszelkie podstawowe sesje, z którymi mogłem się połączyć. Chociaż mogę po prostu ponownie połączyć się z moją sesją VPN po odblokowaniu komputera, może to potrwać ponad minutę i dlatego nie działa opcja „szybka”. Dlatego nie jest to, IMO, dokładne rozwiązanie tego pytania.
Jon V
0

Podobnie jak pytający, szukałem sposobu na szybkie użycie blokady ekranu pęku kluczy.

Łącząc wiedzę ze starej wskazówki Mac OS X i niektórych skryptów jabłkowych, wymyśliłem:

Najpierw wykonaj kroki z połączonej wskazówki Mac OS X, aby dodać skrót klawiaturowy do funkcji blokady ekranu pęku kluczy.

Dla mnie (w wersji 10.8.4) nie rozwiązało to problemu, ponieważ musiałem nacisnąć ctrl+, F8aby przesunąć fokus na pasek stanu, nacisnąć, downaby otworzyć pasek menu pęku kluczy, a następnie nacisnąć ctrl+, F9aby zablokować ekran. Zautomatyzowałem ten proces za pomocą następującego skryptu Apple:

# 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

Otwórz Automator, utwórz nową usługę, dodaj Run Applescriptmoduł, skopiuj i wklej powyższy kod i zapisz usługę Automator pod żądaną nazwą. Teraz przejdź do Skrótów klawiszowych w Preferencjach systemowych i dodaj skrót klawiaturowy do świeżo utworzonej usługi Automator. Ustawiłem mój na ctrl+ cmd+ L.

Teraz naciśnij skrót klawiaturowy w dowolnej aplikacji, a ekran zostanie natychmiast zablokowany.

Dla tych, którzy zastanawiają się, dlaczego nie skorzystać z innych metod, oto moja opinia na ich temat:

  • Szybkie przełączanie / blokowanie ekranu użytkownika
    Dzięki tej metodzie wylogowuję się z mojej korporacyjnej sieci WPA2. Nie jest to dobre, ponieważ ponowne łączenie czasem zajmuje wieki.

  • Wygaszacz ekranu + hasło
    Replikuje funkcjonalność, ale oznacza to, że jeśli mój laptop będzie nieaktywny przez jakiś czas, gdy czytam papier obok niego, ekran zostanie zablokowany, gdy będę chciał go ponownie użyć. To jest niepożądane. Połączenie tej metody z „gorącym rogiem” ma taki efekt uboczny, że niedoświadczeni użytkownicy komputerów Mac mogą przez przypadek uruchomić ten „gorący narożnik”, co prowadzi do zablokowania ekranu. Czasem też trafiam przypadkiem w gorący kącik, co znacznie utrudnia mi pracę.

  • Aplikacje innych firm
    Wszystko w porządku, ale po co uruchamiać aplikację trzeciej części, jeśli jest natywnie dostępna w systemie operacyjnym?

Saaru Lindestøkke
źródło
0

W wersji 10.14.6 Mojave uruchamiam silnik wygaszacza ekranu za pomocą tego polecenia:

/System/Library/CoreServices/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine

Akash Agarwal
źródło
Ale się nie zablokowało. Nacisnąłem klawisz, który się otworzył. Czy możesz przeczytać komentarze innych odpowiedzi dotyczące „wymagaj hasła natychmiast po…” w preferencjach systemu i odpowiednio je zaktualizować?
ankii
-1

Używam ustawienia hasła wygaszacza ekranu z naciśnięciem klawisza (Ctrl + Shift + Eject) na 10.6.8, i z tego co widzę, robi to samo co element Zablokuj ekran z ikony paska zadań Dostęp do pęku kluczy.

Wiem, że jest to podobne do niektórych innych odpowiedzi, ale zamiast „gorącego rogu” używa naciśnięcia klawisza, co jest dla mnie wygodniejsze.

To rozwiązanie jest opisane bardziej szczegółowo tutaj, skąd go mam: http://osxdaily.com/2011/01/17/lock-screen-mac/

Używam tego od kilku lat bez problemów.

nwinkler
źródło
1
Dzięki, ale niestety wymaga to, aby opcja „wymagała wygaszacza ekranu po powrocie ze stanu uśpienia lub wygaszacza ekranu” jest zaznaczona i, jak wspomniano wcześniej, nie chcę tego angażować.
user40433 30.01.2013
-1

Po prostu połącz dwie powyższe odpowiedzi. Uruchom to polecenie:

open -a /System/Library/Frameworks/ScreenSaver.framework//Versions/A/Resources/ScreenSaverEngine.app

Po ustawieniu preferencji Bezpieczeństwo i prywatność, aby natychmiast poprosić o hasło. Utwórz alias dla swojej powłoki, jeśli chcesz, aby komenda była łatwiejsza do wykonania.

Kirk McElhearn
źródło
3
Tak, ale, jak wspomniano powyżej, nie chcę mieć preferencji dotyczących bezpieczeństwa i prywatności, aby zawsze wymagały hasła natychmiast. Właśnie dlatego funkcjonalność polecenia Blokuj ekran (szczególnie) jest tak fajna - zapewnia poziom bezpieczeństwa, którego wymagam całkowicie ad hoc.
user40433
-1

FWIW, rozumiem twoją sytuację i sam szukałem tego rozwiązania. Natknąłem się na ten wątek, ponieważ szukałem nieco szybszej metody niż to, co ostatecznie wymyśliłem. Wymyśliłem coś, co, choć nie do końca to, na co liczyłem, działa i jest akceptowalnym kompromisem. Używam tego samego rodzaju skryptów GUI, co pokazuje @markhunte (nieco inna struktura, ale ten sam pomysł), ale zamiast po prostu umieścić to wszystko w przepływie pracy usługi Automator, podzieliłem go na pakiet .app zbudowany z Platypus. Zrobiłem to, ponieważ podczas moich podróży i testów zauważyłem, że usługi Automatora działają bardzo wolno pod pewnymi warunkami. Jeśli komputer Mac znajduje się pod jakimkolwiek stresem, np. Podczas skanowania dysku, oprogramowania A / V robi coś, Mail ściąga wiadomości e-mail itp., wydaje się, że system operacyjny przesuwa usługi na koniec linii. Ma to wpływ na to, że zajmuje kilka sekund, zanim przepływ pracy zostanie uruchomiony (czasami), a czasami nawet kilka sekund przed uruchomieniem poleceń GUI w usłudze. Dość denerwujące, jeśli próbujesz „szybko” zablokować ekran i zajmuje to 10 sekund!

Posiadanie samodzielnej „aplikacji” ma również tę zaletę, że możesz uruchomić dosłownie dziesiątki różnych aplikacji innych firm lub po prostu użyć Spotlight lub usługi Automator do uruchomienia aplikacji. Każda z nich działa. Najszybsze, jakie znalazłem, to stare narzędzie o nazwie Spark, które w cudowny sposób działa nawet w wersji 10.8.4. Nie pytaj mnie, jak to się stało, odkąd był ostatnim wrogiem 10.4! Spark można znaleźć tutaj - Spark

Oprócz tego wszystkiego zwróciłem uwagę na to, że polecenia GUI czasami działają wolno, łącząc się w cocoaDialog i wywołując go jako pierwszy, gdy aplikacja uruchamia się, aby pokazać małą pływającą bańkę na środku ekranu, co wskazuje na blokadę ekranu. Zazwyczaj blokada następuje zaraz po, ale jeśli wystąpi opóźnienie, to przynajmniej daje wizualne „sprzężenie zwrotne”, że nacisnąłeś odpowiednie klawisze. Uaktywniłem też funkcję samoleczenia - jeśli opcja „Włącz dostęp do urządzeń pomocniczych” nie jest włączona, wyświetla ostrzeżenie w oknie dialogowym i umożliwia jej natychmiastowe włączenie. Sprawi to również, że menu dostępu do pęku kluczy jest wyświetlane na pasku menu, ponieważ jest to wymagane lub w przeciwnym razie skryptowe GUI kończy się niepowodzeniem.

Mike M.
źródło
-2

Ctrl- Shift- ⏏ Eject(na starszych komputerach Mac),
Ctrl- Shift- ⌽ Power(na nowszych komputerach Mac )

Nie ma za co.
źródło