Bagaimana cara mengetahui resolusi layar saya dari skrip shell?
ubuntu
gnome
xorg
resolution
dave4420
sumber
sumber
$( )
sintaks (yaituDIMENSIONS=$(xdpyinfo ...
). Kemudian gunakansed
lagi untuk mendapatkan keduanya:WIDTH=$(echo $DIMENSIONS | sed -r 's/x.*//')
danHEIGHT=$(echo $DIMENSIONS | sed -r 's/.*x//')
.xdpyinfo
mencetak pesan kesalahan jika tidak dapat mengakses informasi, jadi pengalihan kesalahan ke/dev/null
. Untuk alasan ini Anda mungkin ingin menambahkan pengalihan kesalahan:xdpyinfo 2> /dev/null
. Jadi, piple penuh terlihat seperti ini:xdpyinfo 2> /dev/null | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'
. Ini akan membuat skrip Anda lebih solid.xdpyinfo | grep dimensions
akan memberi Anda resolusi total, jika Anda memiliki beberapa monitor, itu akan menjadi jumlah dari semuanya.xrandr --current
akan memberi Anda resolusi untuk setiap monitor.Saya menggunakan potongan ini untuk menemukan resolusi maksimum yang mungkin untuk rDesktop tanpa pergi ke layar penuh:
Keluaran:
Minus dekorasi jendela (kurang lebih):
Keluaran:
Yang merupakan resolusi maksimal untuk rDesktop tanpa layar penuh.
Perintah akhir:
Sejauh ini berfungsi dengan baik tetapi saya belum diuji secara menyeluruh.
Contoh lain adalah untuk screencast dengan
avconv
:sumber
xdpyinfo: Unable to open display "".
rdesktop [other_args] -g $(xrandr --current | grep '*' | uniq | awk '{print $1}')
.xrandr --current | grep '*' | awk -v line="$SCREEN" 'NR==line{print $1}' | cut -d 'x' -f1
jika Anda ingin menentukan layar (dengan pengaturan multi-monitor) (SCREEN
diindeks 1)Anda bisa menggunakan
xrandr -q
perintah. Dari sana Anda dapat membuat skrip shell jika diperlukan.Untuk informasi lebih lanjut tentang perintah buka di sini atau ketik man xrandr
sumber
sumber
xwininfo -root|sed '/Height/!d;s/.* //'
untuk tinggi danxwininfo -root|sed '/Width/!d;s/.* //'
lebar.xdpyinfo
akan melakukannya, dengan beberapa penguraian. Ini memberi banyak info yang kemudian harus Anda gali nomor layar, dan dimensi darisumber
Dua alternatif yang memungkinkan dihasilkan dengan menggabungkan jawaban @ user31752 dan @ eliezer-e-vargas
Regex yang lebih sederhana:
atau menggunakan cut:
Penggunaan
grep '*' | uniq
dari @ eliezer-e-vargas mendapatkan garis yang berbeda (mis. "1440x900 59.90 * + 59.89") dari output xrandr, sedangkan grep 'terhubung' mendapatkan yang sederhana (mis. "LVDS1 terhubung 1440x900 + 0 + 0 ..... ").Penggunaan regex oleh @ user31752 bagus, jadi baris yang saya gunakan membutuhkan regex yang lebih sederhana, atau dapat diganti dengan perintah cut yang lebih sederhana.
Contoh output xrandr
sumber
Seperti dalam jawaban yang diterima tetapi tidak terlalu rumit:
Contoh output:
sumber
Membaca Data Layar Monitor
Standar vesa menyediakan metode cara membaca resolusi layar monitor.
Monitor biasanya mendukung banyak resolusi dan penyegaran. Tentu saja seseorang akan lebih memilih yang maksimum (fisik).
Untuk membaca data monitor ini, cobalah salah satu dari solusi ini:
edid-decode
Jika tidak diinstal, ketikkan
Kemudian baca
edid
file tersebutbaca-edid
Instal dengan
Kemudian baca via i2c layar monitor data dan parsing
Hexdump data edid
Jika edid-tools tidak diinstal, Anda dapat membuang file
edid
hex, misalnya:Untuk mengenkripsi file hex ini, lihat wiki atau unduh spesifikasi edid .
sumber