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


16

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

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


enquanto smalltown não corrige sua resposta, você pode verificar isso: macosxhints.com/article.php?story=20050706194219822 ou aquele: artofgeek.com/2009/09/08/…
cregox

Respostas:



7

Se você estiver na CLI, poderá ter o seguinte alias configurado para alternar rapidamente:

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

Isso, fastscripts e automator, facilitam o trabalho de precisar de uma CLI à mão.
bmike

4

Eu uso o BetterTouchTool para muito mais do que isso, mas uma das ações que ele permite é "Mostrar a tela de login" (que é diferente de sair e deixá-lo na tela de login). Eu o uso o tempo todo para bloquear minha máquina quando a deixo por longos períodos de tempo ... Aqui está uma captura de tela:

insira a descrição da imagem aqui


4

A rigor, Command+ Option+Q fará o seu logout (com o prompt "Você tem certeza").

Mas não vejo nenhuma maneira de acionar uma troca rápida de usuário via teclado. Agora você pode escrever um script AppleScript, que pode ser associado a um pressionamento de tecla. Por exemplo, consulte isso para obter detalhes da 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

@Benjamin, It's Command + Shift + Q
notnoop 17/11/2009

2

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

... Isso pode ser feito com o Automator e o Spark:

Abra o Automator, selecione Executar Script do Shell e cole neste (tudo em uma linha):

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

Arquivo -> Salvar como ... -> selecione "Salvar como aplicativo" e salve o aplicativo em um local conveniente. Em seguida, use o Spark para atribuir um atalho de teclado para abrir o aplicativo.

Uso o Automator e o Spark para alternar para a janela de login e, em seguida, coloco meu Mac em suspensão quando pressiono control-F13 ...

Sobre o software Spark 3.0b9 :

O Spark é um gerenciador de atalhos poderoso e fácil. Com o Spark, você pode criar teclas de atalho para iniciar aplicativos e documentos, executar AppleScript, comandar o iTunes e muito mais ... Você também pode exportar e importar sua biblioteca de teclas de atalho ou salvá-la no formato HTML para imprimi-la. O Spark é gratuito, portanto, use-o sem moderação!


PS: Você também pode ver o que há com outros scripts sugeridos por aí: • AppleScript: Applet de alternador de

Essa resposta é muito grande e bastante confusa para ler, e você realmente não precisa do Spark pelo menos para o Snow Leopard. Basta criar isso no Automator como um serviço e adicionar um atalho nas Preferências do Sistema. Vou acrescentar uma resposta se você não consertar a sua, cara de cidade pequena. ;)
cregox 13/04/10


1

Uma maneira ligeiramente diferente de fazer isso, com benefícios adicionais de segurança (ou aborrecimentos, dependendo do seu 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 rápida do bloqueio / proteção de tela

Para fazer isso, você precisa ajustar as seguintes configurações no aplicativo Preferências do sistema:

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

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

Em seguida, 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 será solicitado a fazer login e poderá trocar de usuário a partir daí.


1

Se o desejo é bloquear (como o Window-L no Windows), existe uma solução muito simples. Configure o protetor de tela para bloquear a tela (exija logon) e use ctrl-shift-eject (duas teclas à esquerda e duas à esquerda) chave). Isso bloqueia sua tela.


1

Para mudar para um usuário específico, chamo um script que encontrei nos comentários de um artigo hints.macworld.com . Como tive problemas, ajustei-o para conseguir trabalhar. A senha é armazenada no chaveiro, para que você não precise se preocupar em armazenar a 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 chamar 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 do quicksilver. Alternar entre contas de usuário é uma questão de alguns segundos.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.