Apakah mungkin untuk memilih tampilan X yang menjalankan instance program?

10

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.

vfclists
sumber
kemungkinan duplikat dari Apa DISPLAY =: 0,0 sebenarnya artinya?
slm

Jawaban:

15

Program X tahu sesi X mana yang seharusnya mereka ajak bicara dengan melihat DISPLAYvariabel lingkungan.

Pertama, Anda perlu mencari tahu apa DISPLAYyang diatur dalam sesi X di mana Anda ingin program Anda dijalankan. Lakukan ini dengan mengeluarkan perintah echo $DISPLAYdi dalam terminal-X dalam sesi X itu. Biasanya mendapatkan sesuatu seperti :0.0yang dikeluarkan.

Katakanlah Anda ingin memulai program baik xclockprogram sesi X Anda di mana DISPLAYadalah :0.0, tetapi Anda ingin melakukan hal ini di konsol. Anda kemudian tekan Alt-Ctrl-F1 untuk beralih ke konsol itu, dan kemudian ketik:

DISPLAY=:0.0 xclock   # variables set w/ a command are local to that command

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.0sebelum perintah berarti bahwa xclockjendela akan selalu muncul di sesi X yang sama.

Bahkan - terlepas dari kenyataan bahwa program X melihatnya - tidak ada yang istimewa tentang DISPLAYvariabel. Biasanya ketika Anda memulai program dari terminal X, mereka memulai di tempat yang tepat karena DISPLAYtelah ditetapkan untuk Anda.

Alih-alih menggunakan perintah di atas, Anda juga dapat membaginya menjadi dua dengan pengaturan pertama DISPLAY, dan kemudian menjalankan xclock. Dalam hal ini DISPLAYpengaturan akan bertahan sampai Anda menutup shell itu, dan semua program X berikutnya dimulai dari sana akan terbuka di sesi X yang sama dengan xclock.

                      # variables set w/o a command are local to the shell,
export DISPLAY=:0.0   # unless exported
xclock
zrajm
sumber
1
Perhatikan bahwa bit terakhir tidak akan berfungsi kecuali Anda mengekspor variabel shell ke lingkungan terlebih dahulu.
Ignacio Vazquez-Abrams
Saya pikir DISPLAYakan ditetapkan untuk mengekspor secara default, karena diimpor oleh shell (bekerja di kedua zshdan dashbagi saya tanpa menggunakan export). Tapi, ya, jika Anda tidak bisa menjalankan versi dua baris, coba ganti DISPLAY=:0.0dengan export DISPLAY=:0.0.
zrajm
1

Biasanya, program klien X menggunakan DISPLAYvariabel lingkungan untuk mengetahui tampilan server X mana yang harus dihubungkan. Beberapa program juga menerima parameter baris perintah ( -displayatau yang serupa) yang dapat digunakan untuk mengganti DISPLAYvariabel lingkungan.

Laszlo Valko
sumber