Я пытаюсь выяснить, как запустить приложение с графическим интерфейсом как другой пользователь, который вошел в систему в интерактивном режиме в графическом сеансе этого пользователя.
Например, скажем, у меня есть два пользователя, foo и bar. Оба вошли в систему, но текущий интерактивный пользователь foo. Я хотел бы запустить Calculator.app в качестве пользовательской "панели", чтобы при быстром переключении пользователя на панель я обнаружил, что окно калькулятора открыто в сеансе панели.
Вот что я попробовал, это не работает:
sudo -u bar /Applications/Calculator.app/Contents/MacOS/Calculator
Это запускает Calculator.app как панель, но окно открывается в графическом сеансе foo.
sudo -u bar osascript -e "tell application \"Calculator\" to activate"
Тот же эффект.
sudo -u bar open "/Applications/Calculator.app"
Запускает калькулятор как foo, а не как bar.
launchctl asuser [uid of bar] [any of the above commands]
Тот же эффект.
Есть ли способ сделать это? Я готов принять всевозможные возможные решения, включая сценарии bash, AppleScript, написание программы Core Foundation или Cocoa и так далее. В моей ситуации любая программа или скрипт может выполняться как любой пользователь, включая root.
Примечание. Я знаю, что возможно использование удаленных событий Apple, но я не могу использовать это, поскольку в ситуации, когда я пытаюсь это сделать, у меня нет гарантии, что «Удаленные события Apple» будут включены в настройках «Общий доступ».
Любая помощь будет принята с благодарностью!
open
команду, используяSSH
?