Utwórz skrót klawiaturowy do szybkiego przełączania użytkowników w Mac OS X.

16

Jak utworzyć skrót klawiaturowy, który aktywuje szybkie przełączanie użytkowników (tzn. Wyświetla okno logowania) w systemie Mac OS X Snow Leopard?

Próbuję emulować kombinację klawiszy Start + L systemu Windows, której brakuje mi w moim systemie Windows.

Brian Willis
źródło
podczas gdy smalltown nie naprawia swojej odpowiedzi, możesz to sprawdzić: macosxhints.com/article.php?story=20050706194219822 lub że: artofgeek.com/2009/09/08/…
cregox

Odpowiedzi:

7

Jeśli korzystasz z interfejsu CLI, możesz ustawić następujący alias do szybkiego przełączania:

alias switch='/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend'

źródło
To oraz skrypty i automatyzator sprawiają, że potrzebna jest szybka obsługa interfejsu CLI.
bike
4

Używam BetterTouchTool do znacznie więcej niż tylko tego, ale jedną z czynności, które pozwala ci wykonać, jest „Pokaż ekran logowania” (który różni się od wylogowania i pozostawienia cię na ekranie logowania). Używam go CAŁY CZAS, aby zablokować maszynę, gdy zostawiam ją na dłuższy czas… Oto zrzut ekranu:

wprowadź opis zdjęcia tutaj

Levi Figueira
źródło
4

Ściśle mówiąc, Command+ Option+ Q wyloguje Cię (z pytaniem „Czy jesteś pewien”).

Ale nie widzę żadnego sposobu, aby uruchomić szybką zmianę użytkownika za pomocą klawiatury. Teraz możesz napisać skrypt AppleScript, który możesz skojarzyć z naciśnięciem klawisza. Na przykład zobacz to, aby uzyskać szczegółowe informacje na temat implementacji.

set thePassword to "password"
set N to name of (info for (path to me))
set AppleScript's text item delimiters to (".")
set N to first text item of N
set AppleScript's text item delimiters to ""
set N to do shell script "/usr/bin/id -u " & N
do shell script "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -switchToUserID " & N
tell application "System Events"
    tell process "SecurityAgent" to set value of text field 1 of group 1 of window 1 to thePassword
    click button 2 of window 1 of application process "SecurityAgent"
end tell
Benjamin Schollnick
źródło
@Benjamin, It's Command + Shift + Q
notopop
2

Według Király w Apple Support Discussions mówi, że ta kombinacja działa:

... Można to zrobić za pomocą Automatora i Spark:

Otwórz Automator, wybierz Uruchom skrypt powłoki i wklej to (wszystkie w jednym wierszu):

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

Plik -> Zapisz jako ... -> wybierz „Zapisz jako aplikację” i zapisz aplikację w dogodnym miejscu. Następnie użyj Spark, aby przypisać skrót klawiaturowy, aby otworzyć tę aplikację.

Korzystam z Automatora i Spark'a, aby przejść do okna logowania, a następnie przełączam komputer Mac w tryb uśpienia po naciśnięciu klawisza Control-F13 ...

Informacje o oprogramowaniu Spark 3.0b9 :

Spark to potężny i łatwy w obsłudze menedżer skrótów. Za pomocą Spark możesz tworzyć Klawisze skrótów, aby uruchamiać aplikacje i dokumenty, uruchamiać AppleScript, sterować iTunes i nie tylko ... Możesz także eksportować i importować bibliotekę Klawiszy skrótów lub zapisać ją w formacie HTML, aby wydrukować. Spark jest darmowy, więc używaj go bez moderacji!

Josh Lee
źródło
PS: Możesz także zobaczyć, co tam jest z innymi sugerowanymi skryptami, które już istnieją: • AppleScript: Aplet przełącznika konta macosxautomation.com/applescript/accountswitcher/index.html
Ta odpowiedź jest zdecydowanie za duża i dość myląca, by ją czytać, i tak naprawdę nie potrzebujesz Sparka przynajmniej dla Snow Leoparda. Po prostu utwórz go w Automatorze jako usługę i dodaj do niego skrót w Preferencjach systemowych. Sam dodam odpowiedź, jeśli nie naprawisz swojego, koleś. ;)
cregox
1

Nieco innym sposobem na zrobienie tego, z dodatkowymi korzyściami bezpieczeństwa (lub irytacjami w zależności od twojego punktu widzenia), jest

  1. użyj wygaszacza ekranu, aby zablokować komputer (umożliwiając użytkownikowi przełączanie z ekranu blokady)
  2. użyj „gorących rogów myszy”, aby umożliwić szybką aktywację blokady / wygaszacza ekranu

Aby to zrobić, musisz dostosować następujące ustawienia w aplikacji Preferencje systemowe:

  • W Exposé & Spacesobszarze na Exposékarcie ustaw jedną z nich Active Screen Cornersna Start Screen Saver.
  • Pod Securityw Generalzakładce sprawdzić opcję Require password ... after sleep or screen saver begins(możesz wybrać immediatelyz listy rozwijanej).

Będziesz musiał zrobić to drugie na każdym koncie (niestety nie ma globalnego ustawienia tego).

Następnie możesz przenieść mysz do odpowiedniego rogu ekranu, aby zablokować komputer (uruchamiając wygaszacz ekranu). Gdy ktoś naciśnie klawisz / poruszy myszką, zostanie poproszony o zalogowanie się i będzie mógł zmieniać użytkowników.

drfrogsplat
źródło
1

Jeśli chcesz zablokować (jak Windows-L w Windows), istnieje bardzo proste rozwiązanie. Ustaw wygaszacz ekranu tak, aby blokował ekran (wymaga zalogowania) i użyj ctrl-shift-eject (lewy dolny dwa klawisze + górny prawy górny klucz). Spowoduje to zablokowanie ekranu.

użytkownik51303
źródło
1

Aby przejść do konkretnego użytkownika, wywołuję skrypt znaleziony w komentarzach do artykułu hints.macworld.com . Miałem z tym problemy, więc poprawiłem go, aby dostać się do pracy. Hasło jest przechowywane w pęku kluczy, więc nie musisz się martwić o zapisanie hasła logowania w postaci zwykłego tekstu. Istotę można znaleźć tutaj .

--This script MUST be named "Switch to User.scpt", where User is the name of the user to switch to.
--You must first make a password item (a.k.a. a key) for the other user's password using Keychain Access, and call it "", where "user" is the other user's name and with the description "User Login". The script assumes that you make this key in your login.keychain, which is the default one.
--The first time you run this script, you will be prompted to allow Keychain Scripting to access the password of the key.
--This script requires "Enable access for assistive devices" to be enabled in the Universal Access system preference pane.

set username to word -1 of my findReplace(".scpt", "", (path to me as text))

-- Invoke Fast User Switching. The `id -ur username` part gets the uid number that corresponds to the username and substitutes it at the end of the CGSession command
do shell script "/System/Library/CoreServices/'Menu Extras'/User.menu/Contents/Resources/CGSession -switchToUserID `id -ur " & username & "`"

-- Use universal access to enter the text and to click the button
tell application "System Events"
    repeat
        if (do shell script "stat -f %Su /dev/console") is username then exit repeat

        -- Get the password for the username
        try
            set pswd to (do shell script "security find-generic-password -g -s \"" & username & "\" -D \"User Login\" 2>&1 1>/dev/null | sed -e 's/password: \"//' -e 's/\"//'")
        on error
            exit repeat
        end try

        if exists window 1 of application process "SecurityAgent" then
            tell process "SecurityAgent" to set value of text field 1 of window 1 to pswd
            key code 36
            exit repeat
        else
            tell application "SecurityAgent" to quit
            do shell script "/System/Library/CoreServices/'Menu Extras'/User.menu/Contents/Resources/CGSession -switchToUserID `id -ur " & username & "`"
        end if
    end repeat
end tell

on findReplace(findText, replaceText, sourceText)
    set ASTID to AppleScript's text item delimiters
    set AppleScript's text item delimiters to findText
    set sourceText to text items of sourceText
    set AppleScript's text item delimiters to replaceText
    set sourceText to sourceText as text
    set AppleScript's text item delimiters to ASTID
    return sourceText
end findReplace

Aby wywołać ekran logowania, mam inny skrypt. Istotę można znaleźć tutaj

do shell script "'/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession' -suspend"

Oba skrypty znajdują się w moim katalogu Quicksilver. Przełączanie między kontami użytkowników to kwestia kilku sekund.

oschrenk
źródło