Estou tentando descobrir como iniciar um aplicativo GUI como outro usuário conectado interativamente, na sessão gráfica do usuário.
Por exemplo, digamos que eu tenha dois usuários, foo e bar. Ambos estão conectados, mas o usuário interativo atual é foo. Gostaria de iniciar o Calculator.app como usuário "bar", para que, quando eu mudo rapidamente para o bar, descubro que a janela Calculadora está aberta na sessão do bar.
Aqui está o que eu tentei que não funciona:
sudo -u bar /Applications/Calculator.app/Contents/MacOS/Calculator
Isso inicia o Calculator.app como barra, mas a janela é aberta na sessão gráfica do foo.
sudo -u bar osascript -e "tell application \"Calculator\" to activate"
O mesmo efeito.
sudo -u bar open "/Applications/Calculator.app"
Inicia a Calculadora como foo, não como barra.
launchctl asuser [uid of bar] [any of the above commands]
O mesmo efeito.
Existe alguma maneira de conseguir isso? Estou disposto a oferecer todo tipo de solução possível, incluindo scripts de bash, AppleScript, criação de um programa Core Foundation ou Cocoa e assim por diante. Na minha situação, qualquer programa ou script pode ser executado como qualquer usuário, incluindo o root.
Nota: Estou ciente de que é possível usar o Apple Events remoto, mas não posso usá-lo, pois, na situação em que estou tentando fazer isso, não tenho garantia de que o "Apple Remote Events" será ativado nas preferências de compartilhamento.
Qualquer ajuda seria muito apreciada!
open
comando usandoSSH
?