Berikut ini adalah pertanyaan lain yang menurut saya perlu saya ketahui:
-
Dari Sesi non X? (artinya root tidak login ke X)
-
Jika beberapa orang masuk di X, dapatkah saya mendeteksi secara otomatis siapa yang ada di layar mana, dan dengan demikian secara terprogram mendeteksi layar mana yang saya perlukan untuk meluncurkan aplikasi?
-
Bisakah saya meluncurkan aplikasi sebagai pengguna? ( ok saya 99,999% yakin ini adalah ya )
-
Bisakah saya mendeteksi jika pengguna grup X masuk ke X?
Jawaban yang Diterima:
Untuk meluncurkan program grafis di desktop pengguna, Anda perlu menemukan dua hal:tampilan desktop pengguna (alamat) dan cookie otorisasi apa yang digunakan (kata sandi).
Perintah berikut harus mencantumkan tampilan lokal tempat pengguna masuk (satu per baris) di sebagian besar uni:
who | awk -v user="$target_user" '$1 == user && $2 ~ "^:" {print $2}'
Menemukan cookie otorisasi sedikit lebih sulit. Anda harus mencari file cookie pengguna, yaitu ~/.Xauthority
secara default (yang Anda butuhkan hanyalah lokasi file cookie, Anda tidak perlu mengekstrak cookie darinya). Itu bekerja pada banyak sistem, tetapi tidak semua; itu tergantung pada manajer tampilan dan bagaimana pengaturannya, dan khususnya Gdm (default pada Ubuntu) tidak menggunakan lokasi default terakhir saya melihat. Saya tidak dapat memikirkan cara portabel untuk mengetahui file cookie X yang sebenarnya. Cara paling akurat untuk mengetahuinya adalah dengan mengetahui pid dari proses X dan mencari argumen ke -auth
pilihan. Cara lain adalah menemukan proses yang berjalan di server X itu dan mengambil XAUTHORITY
variabel lingkungan. Jika Anda kesulitan menemukan file cookie, lihat Membuka jendela pada layar X jarak jauh (mengapa “Tidak dapat membuka tampilan”)?
Setelah Anda memiliki kedua informasi, letakkan tampilan yang dipilih di DISPLAY
variabel lingkungan, file cookie otoritas X yang dipilih di XAUTHORITY
variabel lingkungan, dan Anda sudah siap. Tidak masalah pengguna apa yang menjalankan program; gabungkan dengan su
jika Anda suka.