ฉันกำลังพยายามหาวิธีเปิดแอปพลิเคชัน 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 ไม่ใช่แถบ
launchctl asuser [uid of bar] [any of the above commands]
ผลเหมือนกัน
มีวิธีใดบ้างที่จะทำให้สิ่งนี้สำเร็จ? ฉันยินดีที่จะให้ความบันเทิงทุกรูปแบบของการแก้ปัญหาที่เป็นไปได้รวมถึง bash scripting, AppleScript, การเขียนโปรแกรม Core Foundation หรือ Cocoa เป็นต้น ในสถานการณ์ของฉันโปรแกรมหรือสคริปต์ใด ๆ สามารถดำเนินการในฐานะผู้ใช้ใด ๆ รวมถึงรูท
หมายเหตุ: ฉันทราบว่าเป็นไปได้ที่จะใช้เหตุการณ์ Apple ระยะไกล แต่ฉันไม่สามารถใช้งานได้เนื่องจากในสถานการณ์ที่ฉันพยายามทำสิ่งนี้ฉันไม่รับประกันว่าจะมีการเปิดใช้งาน "กิจกรรม Apple ระยะไกล" ในการตั้งค่าการแชร์
ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก!
open
คำสั่งSSH
ใช่ไหม