Jika ada beberapa X Windows yang berjalan pada suatu sistem, apakah mungkin mendapatkan program untuk dijalankan pada jendela tertentu? Bagaimana Anda mengidentifikasi Window dan menjalankan program di sana?
Saya berasumsi bahwa saya memiliki izin apa pun yang diperlukan untuk menjalankan program semacam itu.
Jawaban:
Program X tahu sesi X mana yang seharusnya mereka ajak bicara dengan melihat
DISPLAY
variabel lingkungan.Pertama, Anda perlu mencari tahu apa
DISPLAY
yang diatur dalam sesi X di mana Anda ingin program Anda dijalankan. Lakukan ini dengan mengeluarkan perintahecho $DISPLAY
di dalam terminal-X dalam sesi X itu. Biasanya mendapatkan sesuatu seperti:0.0
yang dikeluarkan.Katakanlah Anda ingin memulai program baik
xclock
program sesi X Anda di manaDISPLAY
adalah:0.0
, tetapi Anda ingin melakukan hal ini di konsol. Anda kemudian tekan Alt-Ctrl-F1 untuk beralih ke konsol itu, dan kemudian ketik:Kemudian Anda kembali ke X dengan menekan Alt-Ctrl-F7 atau Alt-Ctrl-F8 (atau mungkin beberapa tombol F lainnya, tergantung pada rasa Linux Anda) dan menonton wallclock cantik baru yang Anda miliki di sana.
Sebenarnya Anda bisa mengeksekusi perintah di atas dalam shell apa pun pada mesin yang sama (melalui SSH, dalam sesi X apa pun, pada konsol apa pun, dll.) - fakta bahwa Anda menentukan
DISPLAY=:0.0
sebelum perintah berarti bahwaxclock
jendela akan selalu muncul di sesi X yang sama.Bahkan - terlepas dari kenyataan bahwa program X melihatnya - tidak ada yang istimewa tentang
DISPLAY
variabel. Biasanya ketika Anda memulai program dari terminal X, mereka memulai di tempat yang tepat karenaDISPLAY
telah ditetapkan untuk Anda.Alih-alih menggunakan perintah di atas, Anda juga dapat membaginya menjadi dua dengan pengaturan pertama
DISPLAY
, dan kemudian menjalankanxclock
. Dalam hal iniDISPLAY
pengaturan akan bertahan sampai Anda menutup shell itu, dan semua program X berikutnya dimulai dari sana akan terbuka di sesi X yang sama denganxclock
.sumber
DISPLAY
akan ditetapkan untuk mengekspor secara default, karena diimpor oleh shell (bekerja di keduazsh
dandash
bagi saya tanpa menggunakanexport
). Tapi, ya, jika Anda tidak bisa menjalankan versi dua baris, coba gantiDISPLAY=:0.0
denganexport DISPLAY=:0.0
.Biasanya, program klien X menggunakan
DISPLAY
variabel lingkungan untuk mengetahui tampilan server X mana yang harus dihubungkan. Beberapa program juga menerima parameter baris perintah (-display
atau yang serupa) yang dapat digunakan untuk menggantiDISPLAY
variabel lingkungan.sumber