Cree un método abreviado de teclado para cambiar rápidamente de usuario en Mac OS X

16

¿Cómo se crea un método abreviado de teclado que activa el cambio rápido de usuario (es decir, abre la ventana de inicio de sesión) en Mac OS X Snow Leopard?

Estoy tratando de emular la combinación de teclado Windows Start + L, que extraño de mi tiempo usando Windows.

Brian Willis
fuente
Si bien smalltown no soluciona su respuesta, puede consultar esto: macosxhints.com/article.php?story=20050706194219822 o eso: artofgeek.com/2009/09/08/…
cregox

Respuestas:

7

Para 10.6 Snow Leopard, uno puede agregar fácilmente un Servicio usando Automator, y luego asignar cualquier atajo de teclado usando Preferencias del Sistema. Ver Cambio rápido de usuario / Menú Apple? para detalles.

Arjan
fuente
7

Si está en la CLI, podría tener el siguiente alias configurado para cambiar rápidamente:

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

fuente
Esto y fastscripts y el automatizador hacen que el trabajo rápido de necesitar una CLI sea útil.
bmike
4

Uso BetterTouchTool para mucho más que solo esto, pero una de las acciones que le permite hacer es "Mostrar la pantalla de inicio de sesión" (que es diferente de cerrar sesión y dejarlo en la pantalla de inicio de sesión). Lo uso TODO EL TIEMPO para bloquear mi máquina cuando la dejo por largos períodos de tiempo ... Aquí hay una captura de pantalla:

ingrese la descripción de la imagen aquí

Levi Figueira
fuente
4

Estrictamente hablando, Command+Option + Q lo desconectará (con el mensaje "¿Está seguro?").

Pero no veo ninguna forma de activar un cambio rápido de usuario a través del teclado. Ahora podría escribir un script AppleScript, que podría asociar con una pulsación de tecla. Por ejemplo, vea esto para detalles de implementación.

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
fuente
@Benjamin, es Command + Shift + Q
notnoop
2

Según Király en Apple Support Discussions, dice que esta combinación funciona:

... Esto se puede hacer con Automator y Spark:

Abra Automator, seleccione Ejecutar script de shell y pegue esto (todo en una línea):

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

Archivo -> Guardar como ... -> seleccione "Guardar como aplicación" y guarde la aplicación en un lugar conveniente. Luego use Spark para asignar un atajo de teclado para abrir esa aplicación.

Yo uso Automator y Spark para cambiar a la ventana de inicio de sesión y luego apago mi Mac cuando presiono control-F13 ...

Acerca del software Spark 3.0b9 :

Spark es un administrador de accesos directos potente y fácil. Con Spark puede crear teclas de acceso rápido para iniciar aplicaciones y documentos, ejecutar AppleScript, controlar iTunes y más ... También puede exportar e importar su biblioteca de teclas de acceso rápido o guardarla en formato HTML para imprimirla. Spark es gratis, ¡así que úsalo sin moderación!

Josh Lee
fuente
PD: También puede ver qué pasa con otros scripts sugeridos: • AppleScript: Account Switcher Applet macosxautomation.com/applescript/accountswitcher/index.html
Esta respuesta es demasiado grande y bastante confusa de leer, y realmente no necesitas Spark al menos para Snow Leopard. Simplemente cree eso en Automator as a Service y agregue un acceso directo a él en Preferencias del sistema. Agregaré una respuesta yo mismo si no arreglas la tuya, chico pequeño. ;)
cregox
1

Una forma ligeramente diferente de hacerlo, con beneficios de seguridad adicionales (o molestias dependiendo de su punto de vista), es

  1. use el protector de pantalla para bloquear la computadora (lo que permite al usuario cambiar desde la pantalla de bloqueo)
  2. use "hot-mouse-corners" para habilitar la activación rápida del bloqueo / protector de pantalla

Para hacer esto, debe ajustar la siguiente configuración en su aplicación de Preferencias del Sistema:

  • Bajo Exposé & Spaces, en la Exposépestaña, defina uno de los Active Screen CornersdeStart Screen Saver .
  • En Securityla Generalpestaña, marque la opción de Require password ... after sleep or screen saver begins(es posible que desee elegir immediatelydel menú desplegable).

Tendrá que hacer lo último en cada cuenta (desafortunadamente no hay una configuración global para esto).

Luego, puede mover el mouse a la esquina apropiada de la pantalla para bloquear la computadora (iniciando el protector de pantalla). Cuando alguien presiona una tecla / mueve el mouse, se le pedirá que inicie sesión y puede cambiar de usuario desde allí.

drfrogsplat
fuente
1

Si el deseo es bloquear (como Window-L en Windows), entonces hay una solución muy simple ... configure su protector de pantalla para bloquear la pantalla (requiere inicio de sesión) y use ctrl-shift-eject (abajo a la izquierda dos teclas + arriba a la derecha) llave). Esto bloquea tu pantalla.

user51303
fuente
1

Para cambiar a un usuario específico, invoco un script que encontré en los comentarios de un artículo de hints.macworld.com . Tuve problemas con él, así que lo modifiqué para ver si funcionaba. La contraseña se almacena en el llavero, por lo que no tiene que preocuparse por almacenar la contraseña de inicio de sesión en texto sin cifrar. Puedes encontrar la esencia aquí .

--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 la pantalla de inicio de sesión, tengo otro script. Puedes encontrar la esencia aquí

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

Ambas secuencias de comandos están en mi catálogo de mercurio. Cambiar entre cuentas de usuario es cuestión de unos segundos.

oschrenk
fuente