7 votes

Remplacement de CGSession --suspend ?

J'avais l'habitude de faire en sorte que mon iMac affiche son écran de verrouillage à partir de scripts du shell. C'était très simple :

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

Dans MacOS Big Sur, /User.menu/ ne se trouve pas à cet endroit, et je ne trouve pas de fichier nommé CGSession. Quelle est la ligne de commande équivalente dans Big Sur ? J'aimerais éviter d'utiliser le privilège Root pour cette tâche.

2voto

user3439894 Points 52496

Menu.utilisateur n'est qu'un des nombreux éléments manquants sur MacOS Big Sur , à savoir Batterie.menu , Bluetooth.menu , Horloge.menu , Affiche.le.menu , Ejecter.menu , IrDA.menu , UniversalAccess.menu , Menu.utilisateur et Volume.menu .

En supposant que vous n'avez pas modifié la valeur par défaut du système raccourci clavier pour Écran de verrouillage , Q , les éléments suivants commande en Terminal verrouille l'écran :

osascript -e 'tell app "System Events" to key code 12 using {control down, command down}'

La première fois que j'ai exécuté cette commande il a échoué et deux boîtes de dialogue se sont affichées, la première étant :

Terminal wants access

Après avoir cliqué sur OK Le second l'a été :

Accessibility Access (Events)

Cliquer Ouvrir les préférences du système m'a emmené à Préférences du système > Sécurité et vie privée > Vie privée > Accessibilité où j'ai coché la case Terminal après avoir déverrouillé le volet.

J'ai ensuite exécuté le commande à nouveau en Terminal et l'écran s'est verrouillé.

Après avoir déverrouillé l'écran, j'ai créé un fichier shell script como lockscreen en /usr/local/bin , par exemple

cd /usr/local/bin
sudo nano lockscreen

Le texte suivant a été ajouté code :

#!/bin/zsh

osascript -e 'tell app "System Events" to key code 12 using {control down, command down}'

Ensuite, il a appuyé sur X suivi de Y et ensuite Entrer et de revenir à l'invite :

sudo chmod +x lockscreen

J'ai ensuite exécuté le lockscreen commande et cela a également fonctionné, sans qu'il soit nécessaire d'apporter des modifications supplémentaires à la sécurité. Il fonctionne également lorsqu'il est appelé à partir d'autres shell scripts .


Nota: Si vous préférez utiliser un osascript shebang au lieu de zsh utiliser ce qui suit code :

#!/usr/bin/osascript

tell application "System Events" to key code 12 using {control down, command down}

1voto

Bwaxxlo Points 111

À titre d'information, j'utilise une solution de contournement qui ne suspend pas exactement la session, mais qui met l'ordinateur portable en veille. Dans mon flux de travail, cela aboutit à la même chose puisque les deux fois, j'arrive à l'écran de verrouillage. L'avantage de mettre l'ordinateur en veille est qu'il est plus économe en énergie, car je préfère qu'il se mette en veille lorsque je m'en éloigne.

alias lock="pmset sleepnow" dans mon .bashrc / .zshrc fichier. Autre possibilité, pmset displaysleepnow permet d'obtenir un comportement assez similaire à celui de la CGSession -suspend a fait.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X