Jawaban:
xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'
Perintah xdpyinfo
menampilkan berbagai informasi tentang server X Anda. Itu menulis banyak hal ke output standar tetapi kita hanya perlu baris dimulai dengan kata dimensions
, jadi kita gunakan grep
. Akhirnya kita gunakan sed
untuk membersihkan hasilnya.
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:
Xaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f1)
Yaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f2)
Keluaran:
Xaxis = 1280
Yaxis = 1024
Minus dekorasi jendela (kurang lebih):
MaxRes=$(($Xaxis-5))"x"$(($Yaxis-25))
Keluaran:
MaxRes = 1275x999
Yang merupakan resolusi maksimal untuk rDesktop tanpa layar penuh.
Perintah akhir:
rdesktop -u $User -P -z -5 -g $MaxRes $Host &
Sejauh ini berfungsi dengan baik tetapi saya belum diuji secara menyeluruh.
Contoh lain adalah untuk screencast dengan avconv
:
avconv -f x11grab -r 15 -s `xrandr --current | grep '*' | uniq | awk '{print $1}'` -i :0.0 -c:v libx264 ./output.mp4
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)
########################################### ## Saya menggunakan ini dengan Program Perekaman Video. # ukuran jendela - opsi root - informasi tentang jendela root layar echo $ (xwininfo -root | grep 'geometry' | awk '{print $ 2;}') # output (s): 1024x768 + 0 + 0 # tinggi x lebar + x + y posisi. ###################### ## Manual Referensi ## man xwininfo
xwininfo -root|sed '/Height/!d;s/.* //'
untuk tinggi dan xwininfo -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 dari
Dua alternatif yang memungkinkan dihasilkan dengan menggabungkan jawaban @ user31752 dan @ eliezer-e-vargas
Regex yang lebih sederhana:
$ xrandr --current | sed -n 's/.* connected \([0-9]*\)x\([0-9]*\)+.*/\1x\2/p'
1440x900
atau menggunakan cut:
$ xrandr --current | grep ' connected ' | cut -d ' ' -f 3 | cut -d '+' -f 1
1440x900
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
$ xrandr --current
Screen 0: minimum 320 x 200, current 1440 x 900, maximum 8192 x 8192
LVDS1 connected 1440x900+0+0 (normal left inverted right x axis y axis) 331mm x 207mm
1440x900 59.90*+ 59.89
1360x768 59.80 59.96
1152x864 60.00
1024x768 60.00
800x600 60.32 56.25
640x480 59.94
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
Seperti dalam jawaban yang diterima tetapi tidak terlalu rumit:
xdpyinfo | grep dimensions
Contoh output:
dimensions: 1366x768 pixels (361x203 millimeters)
Standar vesa menyediakan metode cara membaca resolusi layar monitor.
Extended Identification Display Data (EDID ): Standar ini mendefinisikan format data untuk membawa informasi konfigurasi, memungkinkan penggunaan tampilan yang optimal.
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
sudo apt install edid-decode
Kemudian baca edid
file tersebut
edid-decode /sys/class/drm/card0-eDP-1/edid
baca-edid
Instal dengan
sudo apt install read-edid
Kemudian baca via i2c layar monitor data dan parsing
sudo get-edid | parse-edid
Hexdump data edid
Jika edid-tools tidak diinstal, Anda dapat membuang file edid
hex, misalnya:
hd /sys/class/drm/card0-eDP-1/edid
Untuk mengenkripsi file hex ini, lihat wiki atau unduh spesifikasi edid .
$( )
sintaks (yaituDIMENSIONS=$(xdpyinfo ...
). Kemudian gunakansed
lagi untuk mendapatkan keduanya:WIDTH=$(echo $DIMENSIONS | sed -r 's/x.*//')
danHEIGHT=$(echo $DIMENSIONS | sed -r 's/.*x//')
.