Estoy tratando de descubrir cómo iniciar una aplicación GUI como otro usuario que ha iniciado sesión de forma interactiva, en la sesión gráfica de ese usuario.
Por ejemplo, digamos que tengo dos usuarios, foo y bar. Ambos están conectados, pero el usuario interactivo actual es foo. Me gustaría iniciar Calculator.app como usuario "barra", para que cuando el usuario cambie rápidamente a barra, encuentre que la ventana Calculadora está abierta en la sesión de barra.
Esto es lo que he probado que no funciona:
sudo -u bar /Applications/Calculator.app/Contents/MacOS/Calculator
Esto inicia Calculator.app como barra, pero la ventana se abre en la sesión gráfica de foo.
sudo -u bar osascript -e "tell application \"Calculator\" to activate"
Mismo efecto.
sudo -u bar open "/Applications/Calculator.app"
Inicia Calculator como foo, no bar.
launchctl asuser [uid of bar] [any of the above commands]
Mismo efecto.
¿Hay alguna forma de lograr esto? Estoy dispuesto a entretener todo tipo de soluciones posibles, incluidas las secuencias de comandos bash, AppleScript, escribir un programa Core Foundation o Cocoa, etc. En mi situación, cualquier programa o script podría ejecutarse como cualquier usuario, incluida la raíz.
Nota: Soy consciente de que es posible usar eventos remotos de Apple, pero no puedo usarlo ya que en la situación que estoy tratando de hacer esto no tengo garantía de que "Eventos remotos de Apple" esté habilitado en Compartir preferencias.
Cualquier ayuda sería muy apreciada!
open
comando usandoSSH
?