Crie um atalho de teclado para troca rápida de usuário no Mac OS X

14

Como você cria um atalho de teclado que ativa a troca rápida de usuário (por exemplo, abre a janela de login) no Mac OS X Snow Leopard?

Estou tentando emular a combinação de teclas Windows Start + L, que sinto falta do meu tempo usando o Windows.

    
por Brian Willis 21.09.2009 / 09:42

9 respostas

7

Para o 10.6 Snow Leopard, pode-se facilmente adicionar um serviço usando o Automator e, em seguida, atribuir qualquer atalho de teclado usando as Preferências do Sistema. Consulte Troca rápida de usuário / menu Apple? para obter detalhes.

    
por 24.09.2009 / 21:31
5

Se você estiver no CLI, poderá definir o seguinte alias para alternar rapidamente:

alias switch='/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend'
    
por 16.08.2010 / 05:50
3

Eu uso BetterTouchTool para muito mais do que isso, mas uma das ações que você pode fazer é "Mostrar o login Screen "(que é diferente de sair e deixar você na tela de login). Eu uso TODO O TEMPO para bloquear minha máquina quando a deixo por longos períodos ... Aqui está uma captura de tela:

    
por 24.06.2011 / 00:00
3

Estritamente falando, Comando + Opção + Q você sairá (com o aviso "Tem certeza").

Mas não vejo nenhuma maneira de acionar uma troca rápida de usuário via teclado. Agora você poderia escrever um script AppleScript, que você poderia associar a um pressionamento de tecla. Por exemplo, consulte este para detalhes de implementação.

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
    
por 21.09.2009 / 12:13
2

De acordo com Király nas discussões de suporte da Apple, ele diz que essa combinação funciona:

...This can be done with Automator and Spark:

Open Automator, select Run Shell Script, and paste in this (all on one line):

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

File -> Save As... -> select "Save as application" and save the app in a convenient spot. Then use Spark to assign a keyboard shortcut to open that app.

I use Automator and Spark to switch to the login window and then put my Mac to sleep when I press control-F13...

Sobre Software Spark 3.0b9 :

Spark is a powerful, and easy Shortcuts manager. With Spark you can create Hot Keys to launch applications and documents, execute AppleScript, command iTunes, and more... You can also export and import your Hot Keys library, or save it in HTML format to print it. Spark is free, so use it without moderation!

    
por 09.02.2010 / 09:20
1
por 21.09.2009 / 10:21
1

Uma maneira ligeiramente diferente de fazer isso, com benefícios adicionais de segurança (ou incômodos dependendo do ponto de vista), é

  1. use o protetor de tela para bloquear o computador (permitindo que o usuário alterne da tela de bloqueio)
  2. use "hot-mouse-corners" para ativar a ativação de bloqueio rápido / proteção de tela

Para fazer isso, você precisa ajustar as seguintes configurações em seu aplicativo Preferências do Sistema:

  • Abaixo de Exposé & Spaces , na guia Exposé , defina um dos seus Active Screen Corners a Start Screen Saver .
  • Abaixo de Security na guia General , marque a opção Require password ... after sleep or screen saver begins (você pode escolher immediately na lista suspensa).

Você terá que fazer o último em cada conta (infelizmente não há uma configuração global para isso).

Depois, você pode mover o mouse para o canto apropriado da tela para bloquear o computador (iniciando a proteção de tela). Quando alguém pressiona uma tecla / move o mouse, ele é solicitado a fazer login e pode alternar os usuários de lá.

    
por 16.08.2010 / 06:06
1

Se o desejo é travar (como o Window-L no Windows), então há uma solução muito simples ... configure seu protetor de tela para bloquear a tela (requer logon) e use ctrl-shift-eject (inferior esquerdo duas teclas + tecla mais à direita). Isso bloqueia sua tela.

    
por 29.07.2011 / 01:10
1

Para mudar para um usuário específico, invoco um script que encontrei nos comentários de um artigo do hints.macworld.com . Eu tive problemas com isso, então eu ajustei para conseguir trabalhar. A senha é armazenada no chaveiro, então você não precisa se preocupar com o armazenamento de senha de login em texto não criptografado. Você pode encontrar a essência aqui .

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

Para invocar a tela de login, tenho outro script. Você pode encontrar a essência aqui

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

Ambos os scripts estão no meu catálogo de quicksilver. Alternar entre contas de usuário é questão de alguns segundos.

    
por 19.03.2012 / 17:38