Créer un raccourci clavier pour un changement rapide d'utilisateur sous Mac OS X

16

Comment créer un raccourci clavier qui active le changement rapide d'utilisateur (c.-à-d. Ouvre la fenêtre de connexion) dans Mac OS X Snow Leopard?

J'essaie d'émuler la combinaison de clavier Windows Start + L, ce qui me manque de mon temps avec Windows.

Brian Willis
la source
tandis que smalltown ne résout pas sa réponse, vous pouvez vérifier ceci: macosxhints.com/article.php?story=20050706194219822 ou que: artofgeek.com/2009/09/08/…
cregox

Réponses:

7

Si vous êtes sur l'interface CLI, vous pouvez définir l'alias suivant pour basculer rapidement:

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

la source
Cela et les scripts rapides et l'automate rendent le travail rapide d'avoir besoin d'une CLI à portée de main.
bmike
4

J'utilise BetterTouchTool pour bien plus que cela, mais l'une des actions qu'il vous permet de faire est de "Afficher l'écran de connexion" (ce qui est différent de la déconnexion et de vous laisser à l'écran de connexion). Je l'utilise TOUT LE TEMPS pour verrouiller ma machine lorsque je la laisse pendant de longues périodes… Voici une capture d'écran:

entrez la description de l'image ici

Levi Figueira
la source
4

À strictement parler, Command+ Option+ Q vous déconnectera (avec l'invite "Êtes-vous sûr").

Mais je ne vois aucun moyen de déclencher un changement rapide d'utilisateur via le clavier. Vous pouvez maintenant écrire un script AppleScript, que vous pouvez associer à une frappe. Par exemple, consultez ceci pour les détails d'implémentation.

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
la source
@Benjamin, It's Command + Shift + Q
notnoop
2

Selon Király dans Apple Support Discussions, il dit que cette combinaison fonctionne:

... Cela peut être fait avec Automator et Spark:

Ouvrez Automator, sélectionnez Run Shell Script et collez-le (le tout sur une seule ligne):

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

Fichier -> Enregistrer sous ... -> sélectionnez "Enregistrer sous application" et enregistrez l'application à un endroit pratique. Utilisez ensuite Spark pour attribuer un raccourci clavier pour ouvrir cette application.

J'utilise Automator et Spark pour passer à la fenêtre de connexion, puis mettre mon Mac en veille lorsque j'appuie sur Ctrl-F13 ...

À propos du logiciel Spark 3.0b9 :

Spark est un gestionnaire de raccourcis puissant et facile. Avec Spark, vous pouvez créer des raccourcis clavier pour lancer des applications et des documents, exécuter AppleScript, commander iTunes, etc. Vous pouvez également exporter et importer votre bibliothèque de raccourcis clavier ou l'enregistrer au format HTML pour l'imprimer. Spark est gratuit, alors utilisez-le sans modération!

Josh Lee
la source
PS: Vous pouvez également voir ce qui se passe avec les autres scripts suggérés déjà disponibles: • AppleScript: Account Switcher Applet macosxautomation.com/applescript/accountswitcher/index.html
Cette réponse est beaucoup trop grande et assez confuse à lire, et vous n'avez pas vraiment besoin de Spark au moins pour Snow Leopard. Créez-le simplement sur Automator as a Service et ajoutez-y un raccourci dans les Préférences Système. J'ajouterai moi-même une réponse si vous ne corrigez pas la vôtre, petit mec. ;)
cregox
1

Une façon légèrement différente de le faire, avec des avantages de sécurité supplémentaires (ou des ennuis en fonction de votre point de vue), consiste à

  1. utiliser l'économiseur d'écran pour verrouiller l'ordinateur (permettant à l'utilisateur de passer de l'écran de verrouillage)
  2. utiliser les "coins de souris chauds" pour activer le verrouillage rapide / l'activation de l'économiseur d'écran

Pour ce faire, vous devez ajuster les paramètres suivants dans votre application Préférences Système:

  • Sous Exposé & Spaces, dans l' Exposéonglet, définissez un de vos Active Screen Cornersà Start Screen Saver.
  • Sous Securityl' Generalonglet, cochez l'option de Require password ... after sleep or screen saver begins(vous pouvez choisir immediatelydans le menu déroulant).

Vous devrez effectuer cette dernière sur chaque compte (malheureusement, il n'y a pas de paramètre global pour cela).

Ensuite, vous pouvez déplacer votre souris dans le coin approprié de l'écran pour verrouiller l'ordinateur (en démarrant l'économiseur d'écran). Lorsque quelqu'un appuie sur une touche / déplace la souris, il est invité à se connecter et peut changer d'utilisateur à partir de là.

drfrogsplat
la source
1

Si le désir est de verrouiller (comme Window-L dans Windows), alors il y a une solution très simple .. configurez votre économiseur d'écran pour verrouiller l'écran (nécessite une connexion) et utilisez ctrl-shift-eject (en bas à gauche deux touches + en haut à droite) clé). Cela verrouille votre écran.

user51303
la source
1

Pour passer à un utilisateur spécifique, j'invoque un script que j'ai trouvé dans les commentaires d'un article hints.macworld.com . J'ai eu des problèmes avec ça alors je l'ai peaufiné pour me mettre au travail. Le mot de passe est stocké dans le trousseau, vous n'avez donc pas à vous soucier de stocker le mot de passe de connexion en texte clair. Vous pouvez trouver l'essentiel ici .

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

Pour simplement appeler l'écran de connexion, j'ai un autre script. Vous pouvez trouver l'essentiel ici

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

Les deux scripts sont dans mon catalogue quicksilver. Le basculement entre les comptes d'utilisateurs est une question de quelques secondes.

oschrenk
la source