Dapatkan resolusi tampilan dari baris perintah untuk Linux Desktop

32

Saya mencari metode pelaporan resolusi tampilan. Saya ingin mengatur skrip untuk diluncurkan rdesktop, dan saya ingin meluncurkannya pada beberapa mesin dengan resolusi berbeda, jadi saya ingin cara untuk menentukannya secara dinamis.

Barton Chittenden
sumber
unix.stackexchange.com/questions/2672/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

37

Gunakan perintah xrandr. Tanpa argumen apa pun, ini menampilkan resolusi yang tersedia dan yang saat ini (dengan tanda bintang), misalnya:

$ xrandr | fgrep '*'
Diego Woitasen
sumber
Bisakah Anda menambahkan beberapa contoh output ke jawabannya? Dan saya kira xrandr |g grep \*apa masalahnya?
Ehtesh Choudhury
11

Solusi alternatif: xdpyinfo | grep dimensions. xdpyinfolebih tua dari xrandr, jadi mungkin lebih portabel jika Anda menggunakan distribusi yang sangat lama atau beberapa server X yang berbeda.

liori
sumber
2
Memang, tetapi beberapa pengaturan (semua?) Multi-monitor muncul sebagai satu layar xdpyinfosementara xrandrdengan benar menyebutkan layar dan resolusi mereka. Ini mungkin atau mungkin bukan masalah tergantung pada konteksnya.
Stéphane Gourichon
Catatan: sementara xdpyinfotampaknya melaporkan dimensi yang benar dalam piksel, ini melaporkan resolusi yang salah (DPI). Misalnya pada monitor saya dengan dimensi 3840x2160 (asli dan aktual) dan ukuran 708mm x 399mm seperti yang dilaporkan oleh xrandr, xdpyinfomengatakan bahwa resolusinya adalah 96x96 titik per inci.
Ruslan
7

Anda bisa mendapatkan resolusi horizontal dan vertikal menggunakan perintah berikut:

xdpyinfo | grep dimensions | awk '{print $2}' | awk -Fx '{print $1, $2}'

atau, dalam bentuk yang lebih ringkas (seperti yang disarankan oleh Peter.O dalam komentar ini ):

xdpyinfo | awk -F'[ x]+' '/dimensions:/{print $3, $4}' 

Untuk exmaple, pada layar 1600x900 ini akan menghasilkan output berikut:

1600 900

Anda kemudian dapat menempatkan nilai-nilai ke dalam variabel-variabel terpisah menggunakan perintah:

read RES_X RES_Y <<<$(xdpyinfo | awk -F'[ x]+' '/dimensions:/{print $3, $4}')

Tampilkan nilai-nilai variabel di atas menggunakan perintah:

echo $RES_X, $RES_Y

Pada layar 1600x900, outputnya adalah:

1600, 900
crayzeewulf
sumber
1
xdpyinfo | awk -F '[x] +' '/ dimensi: / {print $ 3, $ 4}'
Peter.O
@ Peter.O, terima kasih. Ini adalah bentuk perintah yang ringkas dan bagus. Saya sudah memperbarui jawabannya.
crayzeewulf
Memang, tetapi beberapa pengaturan multi-monitor (semua?) Muncul sebagai satu layar di xdpyinfo sementara xrandr dengan benar menyebutkan layar dan resolusi mereka. Ini mungkin atau mungkin bukan masalah tergantung pada konteksnya.
Stéphane Gourichon
5

Saya seharusnya terlihat sedikit lebih keras sebelum memposting. xrandrakan mengulang pengaturan tampilan saat ini, jika tidak diberikan argumen lain.

Secara default, ini akan membuang semua pengaturan tampilan yang mungkin, ini dapat difilter sebagai berikut:

xrandr | egrep '^[^ ]|[0-9]\*\+'
Barton Chittenden
sumber
1

Bersihkan xrandroutput untuk penggunaan imagemagick

xrandr |grep \* |awk '{print $1}'
Serge Stroobandt
sumber