Estoy intentando descubrir cómo lanzar 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 "barra" de usuario, de modo que cuando cambio rápidamente de barra a barra, encuentro que la ventana de la Calculadora está abierta en la sesión de la barra.
Esto es lo que he intentado 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 la Calculadora como foo, no barra.
launchctl asuser [uid of bar] [any of the above commands]
Mismo efecto.
¿Hay alguna manera de lograr esto? Estoy dispuesto a entretener a todo tipo de soluciones posibles, incluyendo bash scripting, AppleScript, escribir un programa de Core Foundation o Cocoa, y así sucesivamente. En mi situación, cualquier programa o secuencia de comandos podría ejecutarse como cualquier usuario, incluida la raíz.
Nota: Soy consciente de que es posible usar Apple Events remotos, pero no puedo usar eso ya que en la situación que estoy tratando de hacer esto no tengo ninguna garantía de que "Remote Apple Events" esté habilitado en Compartir preferencias.
Cualquier ayuda sería muy apreciada!