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.
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.
Jawaban:
Gunakan perintah xrandr
. Tanpa argumen apa pun, ini menampilkan resolusi yang tersedia dan yang saat ini (dengan tanda bintang), misalnya:
$ xrandr | fgrep '*'
xrandr |g grep \*
apa masalahnya?
Solusi alternatif: xdpyinfo | grep dimensions
. xdpyinfo
lebih tua dari xrandr
, jadi mungkin lebih portabel jika Anda menggunakan distribusi yang sangat lama atau beberapa server X yang berbeda.
xdpyinfo
sementara xrandr
dengan benar menyebutkan layar dan resolusi mereka. Ini mungkin atau mungkin bukan masalah tergantung pada konteksnya.
xdpyinfo
tampaknya 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
, xdpyinfo
mengatakan bahwa resolusinya adalah 96x96 titik per inci.
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
Saya seharusnya terlihat sedikit lebih keras sebelum memposting. xrandr
akan 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]\*\+'
xrandr
output untuk penggunaan imagemagickxrandr |grep \* |awk '{print $1}'