Próbuję wymyślić, jak uruchomić aplikację GUI jako inny użytkownik zalogowany interaktywnie, w sesji graficznej tego użytkownika.
Powiedzmy, że mam dwóch użytkowników, foo i bar. Oba są zalogowane, ale obecny użytkownik interaktywny to foo. Chciałbym uruchomić Calculator.app jako „pasek” użytkownika, aby po szybkim przełączeniu użytkownika na pasek znajdowałem okno kalkulatora w sesji paska.
Oto, co próbowałem, to nie działa:
sudo -u bar /Applications/Calculator.app/Contents/MacOS/Calculator
To uruchamia Calculator.app jako pasek, ale okno otwiera się w sesji graficznej foo.
sudo -u bar osascript -e "tell application \"Calculator\" to activate"
Ten sam efekt.
sudo -u bar open "/Applications/Calculator.app"
Uruchamia kalkulator jako foo, a nie pasek.
launchctl asuser [uid of bar] [any of the above commands]
Ten sam efekt.
Czy jest jakiś sposób na osiągnięcie tego? Jestem gotów zająć się wszelkimi możliwymi rozwiązaniami, w tym skryptami bash, AppleScript, pisaniem programu Core Foundation lub Cocoa i tak dalej. W mojej sytuacji każdy program lub skrypt może być uruchamiany jak każdy użytkownik, w tym root.
Uwaga: Zdaję sobie sprawę, że jest to możliwe przy użyciu zdalnych zdarzeń Apple, ale nie mogę tego użyć, ponieważ w tej sytuacji próbuję to zrobić, nie mam gwarancji, że „Zdalne zdarzenia Apple” zostaną włączone w preferencjach udostępniania.
Każda pomoc byłaby bardzo mile widziana!
open
poleceniaSSH
?