Я намагаюся розібратися, як запустити програму GUI як іншого користувача, який увійшов у систему інтерактивно, у графічному сеансі цього користувача.
Наприклад, скажіть, що у мене є два користувачі, 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]
Такий же ефект.
Чи є спосіб досягти цього? Я готовий розважати всіма можливими рішеннями, включаючи баш сценаріїв, AppleScript, написання програми Core Foundation або програми з какао тощо. У моїй ситуації будь-яка програма або сценарій може виконуватись як будь-який користувач, включаючи root.
Примітка. Я знаю, що це можливо за допомогою віддалених подій Apple, але я не можу це використовувати, оскільки в ситуації, яку я намагаюся зробити це, я не маю гарантії, що "Віддалені події Apple" будуть включені в налаштуваннях спільного доступу.
Будь-яка допомога буде дуже вдячна!
open
команду, використовуючиSSH
?