J'essaie de comprendre comment lancer une application GUI en tant qu'un autre utilisateur connecté de manière interactive, dans la session graphique de cet utilisateur.
Par exemple, disons que j'ai deux utilisateurs, foo et bar. Les deux sont connectés, mais l'utilisateur interactif actuel est foo. Je voudrais lancer Calculator.app en tant que "barre" de l'utilisateur, de sorte que lorsque je passe rapidement de l'utilisateur à la barre, je trouve que la fenêtre de la calculatrice est ouverte dans la session de la barre.
Voici ce que j'ai essayé qui ne fonctionne pas:
sudo -u bar /Applications/Calculator.app/Contents/MacOS/Calculator
Cela lance Calculator.app sous forme de barre, mais la fenêtre s'ouvre dans la session graphique de foo.
sudo -u bar osascript -e "tell application \"Calculator\" to activate"
Même effet.
sudo -u bar open "/Applications/Calculator.app"
Lance la calculatrice comme foo, pas bar.
launchctl asuser [uid of bar] [any of the above commands]
Même effet.
Existe-t-il un moyen d'y parvenir? Je suis prêt à envisager toutes sortes de solutions possibles, y compris les scripts bash, AppleScript, l'écriture d'un programme Core Foundation ou Cocoa, etc. Dans ma situation, n'importe quel programme ou script peut s'exécuter comme n'importe quel utilisateur, y compris root.
Remarque: je suis conscient qu'il est possible d'utiliser des événements Apple distants, mais je ne peux pas l'utiliser car dans la situation où j'essaie de le faire, je n'ai aucune garantie que les "événements Apple distants" seront activés dans les préférences de partage.
Toute aide serait grandement appréciée!
open
commande en utilisantSSH
?