Apa variabel lingkungan $ DISPLAY?

75

Saya baru mengenal shell scripting. Saya tidak mengerti apa $DISPLAYvariabel lingkungan itu.

Saya memiliki Ubuntu 13.10 dan saya menggunakan /bin/bashshell. Saya punya dua monitor.

Pertanyaan:

  1. Perintah echo $DISPLAYakan mencetak :0.0pada mesin saya (pada kedua monitor). Apa artinya ini?

  2. Dalam kasus apa $DISPLAYvariabel akan kosong atau NULL?

  3. Apakah ada artikel atau tutorial tentang ini?

Chandrayya GK
sumber
Hari ini echo $DISPLAYsedang mencetak :0BUKAN:0.0
Chandrayya GK
periksa ini akan membantu jika ada kesalahan atau kesalahan: askubuntu.com/questions/432610/…
Maythux

Jawaban:

86

Kata ajaib dalam sistem X window adalah DISPLAY. Tampilan terdiri dari (disederhanakan) dari:

  • keyboard,
  • seekor tikus
  • dan sebuah layar.

Tampilan dikelola oleh program server, yang dikenal sebagai server X. Server berfungsi menampilkan kemampuan ke program lain yang terhubung dengannya.

Server jarak jauh tahu di mana ia harus mengarahkan lalu lintas jaringan X melalui definisi variabel lingkungan DISPLAY yang umumnya menunjuk ke server Tampilan X yang terletak di komputer lokal Anda.

Nilai variabel lingkungan tampilan adalah:

hostname:D.S

dimana:

hostname adalah nama komputer tempat server X berjalan. Nama host yang dihilangkan berarti localhost.

D adalah nomor urut (biasanya 0). Ini dapat bervariasi jika ada beberapa layar yang terhubung ke satu komputer.

S adalah nomor layar. Tampilan sebenarnya dapat memiliki beberapa layar. Biasanya hanya ada satu layar di mana 0 adalah default.

Contoh nilai

localhost:4
google.com:0
:0.0

hostname:D.Sberarti layar S pada tampilan D nama host host; server X untuk tampilan ini mendengarkan pada port TCP 6000 + D.

host/unix:D.Sberarti layar S pada tampilan D host host; server X untuk tampilan ini mendengarkan pada soket domain UNIX /tmp/.X11-unix/XD (sehingga hanya dapat dijangkau dari host).

:D.S setara dengan host / unix: DS, di mana host adalah nama host lokal.

: 0,0 berarti bahwa kita berbicara tentang layar pertama yang terpasang pada tampilan pertama Anda di host lokal Anda

Baca lebih lanjut di sini dan di sini dan di sini .

Dari halaman manual X (7):

Dari perspektif pengguna, setiap server X memiliki nama tampilan formulir:

hostname: displaynumber.screennumber

Informasi ini digunakan oleh aplikasi untuk menentukan bagaimana ia harus terhubung ke server dan layar mana yang harus digunakan secara default (pada layar dengan beberapa monitor):

nama host Nama host menentukan nama mesin yang terhubung secara fisik dengan layar. Jika nama host tidak diberikan, cara paling efisien untuk berkomunikasi ke server pada mesin yang sama akan digunakan. displaynumber Frasa "display" biasanya digunakan untuk merujuk pada koleksi monitor yang berbagi keyboard dan pointer yang umum (mouse, tablet, dll.). Sebagian besar workstation cenderung hanya memiliki satu keyboard, dan karenanya, hanya satu tampilan. Namun, sistem multi-pengguna yang lebih besar, sering memiliki beberapa tampilan sehingga lebih dari satu orang dapat melakukan pekerjaan grafis sekaligus. Untuk menghindari kebingungan, setiap tampilan pada mesin diberi nomor tampilan (mulai 0) ketika X server untuk tampilan itu dimulai. Nomor tampilan harus selalu diberikan dalam nama tampilan. screennumber Beberapa monitor berbagi satu keyboard dan pointer di antara dua atau lebih monitor. Karena setiap monitor memiliki set windows sendiri, setiap layar diberi nomor layar (mulai dari 0) ketika server X untuk tampilan itu dimulai. Jika nomor layar tidak diberikan, layar 0 akan digunakan.

Maythux
sumber
Saat ini $ DISPLAY akan menjadi nol atau BLANK.
Chandrayya GK
Dalam keadaan normal ini tidak boleh terjadi kecuali ada masalah di layar Anda .. Sebagian besar restart manajer tampilan Anda akan menyelesaikan masalah. Tapi ini bukan tindakan standar.
Maythux
@ChandrayyaGK Sebagai contoh, ketika saya tidak menggunakan lingkungan desktop seperti GNOME atau KDE, tetapi langsung masuk dengan TTY (seperti /dev/tty1), saya mendapatkan yang kosong $DISPLAY.
Franklin Yu
@Maythux Kadang-kadang jumlah layar tampaknya dihilangkan ketika berada 0. GNOME saya memberikan :0untuk $DISPLAY.
Franklin Yu
10

Jawaban yang ada gagal menjawab gambaran yang lebih luas.

Jika Anda tidak menggunakan lingkungan grafis (mis. Anda masuk pada konsol sistem tanpa jendela dll; atau Anda masuk dari jarak jauh dari terminal hanya teks di atas SSH atau serupa, seperti dari komputer Windows yang menjalankan Putty) maka tidak ada GUI yang terlibat, dan DISPLAYbiasanya tidak disetel. Satu-satunya cara Anda berkomunikasi dengan komputer adalah baris perintah (meskipun mungkin ada cara untuk berputar ke sesi GUI jika Anda tahu caranya).

Jika Anda masuk pada konsol dengan antarmuka grafis (pada Ubuntu, biasanya penyapa GDM digunakan) atau menggunakan terminal grafis (seperti dari komputer Windows yang menjalankan eXceed atau mobaX, atau perangkat lunak desktop jarak jauh seperti klien VNC) DISPLAYvariabel diatur oleh program yang mengelola sesi grafis Anda untuk menunjukkan kepada klien grafis yang terhubung dengan perangkat I / O.

Secara tradisional, GUI pada komputer Ubuntu menjalankan X.org, sebuah implementasi X11, meskipun baru-baru ini, pengganti modern yang disebut Mir diperkenalkan oleh Canonical; dan bahkan lebih baru-baru ini, saya percaya Mir akan ditinggalkan demi proyek lain dengan tujuan yang secara umum mirip yang disebut Wayland . Penggantian ini dimaksudkan untuk mengurangi kompleksitas tumpukan X11 penuh, yang tidak akan DISPLAYkita bahas di sini - mereka mematuhi konvensi yang sama , yang setelah semua yang kita bahas di sini.

Pada X11, bagian host DISPLAYbisa menjadi server jarak jauh, dan Anda akan menggunakan komputer Ubuntu Anda sebagai "terminal grafis" untuk mengakses file dan program di server jauh itu (dalam hal ini komputer Anda adalah "server" yang melayani keyboard , mouse, dan satu atau lebih perangkat tampilan ke program "klien" yang berjalan di server ... jarak jauh). Lebih umum, server X11 (atau Mir, atau Wayland) dan program klien (manajer desktop dan berbagai klien grafis seperti browser web, klien email, program kalender, dll) semuanya berjalan di komputer Anda. Ini ditunjukkan oleh bagian "server" dari DISPLAYnilai, yang dalam kasus terakhir biasanya kosong (yang menyiratkan nilai default, localhost).

Server X11 dapat menjalankan satu atau beberapa sesi grafis - misalnya, login konsol Anda dan sesi VNC jarak jauh dapat berjalan pada saat yang sama. Dalam hal ini (jika dikelola oleh instance server X11 yang sama) Anda memiliki lebih dari satu "tampilan" dalam istilah X11. Dalam praktiknya, satu sesi (satu peristiwa login dan instance desktop muncul dari ini) adalah satu tampilan di X11.

Satu tampilan seperti itu dapat memiliki satu layar atau lebih. Secara tradisional, ini berarti satu monitor, meskipun arsitektur aslinya memiliki beberapa sifat yang kurang menguntungkan seperti ketidakmampuan untuk memindahkan jendela dari satu layar ke layar lainnya. Add-on seperti Xinerama dan Xrandr semakin memperkeruh situasi ke titik di mana satu layar sering menghubungkan banyak monitor dengan berbagai cara.

Jika Anda telah bermain dengan sistem multi-monitor, Anda mungkin menemukan bahwa Anda dapat mengatur monitor dengan berbagai cara dan berakhir dengan area persegi di mana monitor Anda menampilkan beberapa bagiannya dan bagian lain tidak ditugaskan ke monitor mana pun. Ini adalah "layar" yang dibuat X11, dan jika Anda memiliki lebih dari satu kartu tampilan, Anda dapat memiliki beberapa layar ini, masing-masing ditugaskan untuk satu atau lebih monitor (atau secara teori, berjalan tanpa monitor; Xvfb mengeksploitasi ini untuk memungkinkan Anda menjalankan X11 tanpa monitor, cukup memetakan GUI ke wilayah memori untuk tujuan apa pun).

tripleee
sumber
Mir memang telah ditinggalkan bersama dengan Unity. Untuk waktu yang lama, lightdm daripada gdm adalah default, tetapi mungkin bagian dari jawaban Anda telah menjadi benar lagi seperti sebelum pendakian Unity! Saya menggunakan MATE, jadi saya tidak bisa memeriksa dengan sepele ...
Zanna
Saya menjalankan Linux dari konsol (tanpa windows) dan itu menjelaskan semuanya. Masuk akal sebenarnya: p
Jean-Francois T.
3

Dari https://help.ubuntu.com/community/EnvironmentVariables :

Variabel- DISPLAY

Contoh Nilai:

:0.0
localhost:10.0
terminal01:0.0

Untuk apa ini?

Variabel ini digunakan untuk menunjukkan ke aplikasi grafis di mana untuk menampilkan antarmuka pengguna grafis yang sebenarnya, nilainya terdiri dari 3 bagian: Nama host diikuti oleh titik dua (:), nomor tampilan diikuti oleh titik (.) Dan layar jumlah.

Bagian nama host dapat digunakan untuk memiliki output grafis yang dikirim ke mesin jarak jauh melalui jaringan. Itu bisa dihilangkan ketika output dimaksudkan untuk X server berjalan pada mesin lokal. Nomor tampilan memungkinkan memilih di antara beberapa server X yang berjalan pada mesin yang sama (Ubuntu menggunakan beberapa server X untuk mengaktifkan beberapa sesi desktop grafis).

Meskipun nomor layar digunakan untuk memilih di antara beberapa layar fisik yang dikelola oleh server X yang sama, jarang ada yang diatur selain "0" saat ini. Mengatur nilai variabel lingkungan "DISPLAY" secara manual jarang dibutuhkan saat ini karena dapat secara otomatis dan cerdas disesuaikan oleh banyak aplikasi seperti "GDM" dan "SSH" saat dibutuhkan.

Pandya
sumber
3

echo $ DISPLAY akan mencetak: 0,0 pada mesin saya (pada Kedua monitor). Apa ini artinya?

: 0,0 berarti tampilan nomor 0 dan nomor layar 0

Dalam hal mana $ DISPLAY akan kosong atau NULL?

Jika terjadi kesalahan dalam $ DISPLAY Anda dan ini tidak terjadi secara normal

Apakah ada artikel atau tutorial tentang ini?

Beberapa tutorial dan sumber dapat ditemukan di sini:

Komunitas
sumber