Создайте сочетание клавиш для быстрого переключения пользователей в Mac OS X


16

Как создать сочетание клавиш, которое активирует быстрое переключение пользователей (т.е. вызывает окно входа в систему) в Mac OS X Snow Leopard?

Я пытаюсь эмулировать комбинацию клавиш Windows Start + L, которая мне не хватает из-за моего времени использования Windows.


хотя smalltown не исправляет его ответ, вы можете проверить это: macosxhints.com/article.php?story=20050706194219822 или что: artofgeek.com/2009/09/08/…
cregox

Ответы:



7

Если вы находитесь в CLI, вы можете настроить следующий псевдоним для быстрого переключения:

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

Это и fasttscripts и automator делают быструю работу с CLI под рукой.
bmike

4

Я использую BetterTouchTool гораздо больше, чем просто это, но одно из действий, которые оно позволяет вам выполнить, - «Показать экран входа в систему» ​​(что отличается от выхода из системы и оставления вас на экране входа в систему). Я использую его ВСЕ ВРЕМЯ, чтобы заблокировать свою машину, когда я оставляю ее на продолжительное время ... Вот скриншот:

введите описание изображения здесь


4

Строго говоря, Command+ Option+ Q выйдет из вас (с подсказкой «Вы уверены»).

Но я не вижу способа вызвать быстрое переключение пользователя с помощью клавиатуры. Теперь вы можете написать сценарий AppleScript, который вы можете связать с нажатием клавиши. Например, посмотрите это для деталей реализации.

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

@ Бенджамин, это Command + Shift + Q
notnoop

2

Согласно Király в Apple Support Discussions, он говорит, что эта комбинация работает:

... Это можно сделать с помощью Automator и Spark:

Откройте Automator, выберите Run Shell Script и вставьте его (все в одну строку):

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

Файл -> Сохранить как ... -> выберите «Сохранить как приложение» и сохраните приложение в удобном месте. Затем используйте Spark, чтобы назначить сочетание клавиш, чтобы открыть это приложение.

Я использую Automator и Spark, чтобы переключиться в окно входа в систему, а затем перехожу в режим сна, когда я нажимаю control-F13 ...

О программном обеспечении Spark 3.0b9 :

Spark - это мощный и простой менеджер ярлыков. С помощью Spark вы можете создавать горячие клавиши для запуска приложений и документов, выполнять AppleScript, командовать iTunes и т. Д. Вы также можете экспортировать и импортировать свою библиотеку горячих клавиш или сохранить ее в формате HTML, чтобы распечатать. Spark бесплатен, поэтому используйте его без модерации!


PS: Вы также можете увидеть, что случилось с другими предлагаемыми сценариями, которые уже существуют: • AppleScript: апплет переключения

Этот ответ слишком большой и довольно запутанный для чтения, и вам не нужен Spark, по крайней мере, для Snow Leopard. Просто создайте его в Automator как службе и добавьте ярлык для него в Системных настройках. Я сам добавлю ответ, если ты не исправишь свой, маленький город, чувак. ;)
cregox


1

Немного другой способ сделать это, с дополнительными преимуществами безопасности (или неприятности в зависимости от вашей точки зрения), заключается в

  1. используйте экранную заставку для блокировки компьютера (что позволяет пользователю переключаться с экрана блокировки)
  2. используйте "горячие углы мыши", чтобы включить быструю блокировку / активацию заставки

Для этого вам необходимо настроить следующие параметры в приложении «Системные настройки»:

  • Под Exposé & Spaces, в Exposéзакладке, установите один из ваших Active Screen Cornersк Start Screen Saver.
  • При Securityв Generalзакладке, проверьте вариант Require password ... after sleep or screen saver begins(вы можете выбрать immediatelyиз выпадающего списка).

Вы должны будете сделать последнее для каждой учетной записи (к сожалению, для этого нет глобальных настроек).

Затем вы можете переместить указатель мыши в соответствующий угол экрана, чтобы заблокировать компьютер (запустив заставку). Когда кто-то нажимает клавишу / перемещает мышь, ему будет предложено войти в систему и оттуда переключать пользователей.


1

Если вы хотите заблокировать (как Window-L в Windows), то есть очень простое решение ... установите заставку для блокировки экрана (требуется вход в систему) и используйте ctrl-shift-eject (слева внизу две клавиши + вверху справа) ключ). Это блокирует ваш экран.


1

Чтобы переключиться на конкретного пользователя, я вызываю скрипт, который нашел в комментариях к статье hints.macworld.com . У меня были проблемы с этим, поэтому я настроил его, чтобы получить, если на работу. Пароль хранится в связке ключей, поэтому вам не нужно беспокоиться о сохранении пароля для входа в открытый текст. Вы можете найти суть здесь .

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

Чтобы просто вызвать экран входа в систему, у меня есть другой скрипт. Вы можете найти суть здесь

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

Оба сценария находятся в моем ртутном каталоге. Переключение между учетными записями пользователей происходит за несколько секунд.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.