Ekran çözünürlüğümü bir kabuk betiğinden nasıl bulurum?


Yanıtlar:


54
xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'

Komut xdpyinfo, X sunucunuzla ilgili çeşitli bilgileri görüntüler. Standart çıktıya birçok şey yazar, ancak sadece kelimesi ile başlayan satıra ihtiyaç duyarız dimensions, bu yüzden kullanırız grep. Sonunda sedsonucu temizlemek için kullanıyoruz .


X ve y ekseni boyutuna ayrı olarak ihtiyacınız varsa, aşağıdakileri yapabilirsiniz. İlk olarak, yukarıdaki komutun sonucunu $( )sözdizimini (yani DIMENSIONS=$(xdpyinfo ...) kullanarak bir değişkene koyun . Sonra sedikisini almak için tekrar kullanın: WIDTH=$(echo $DIMENSIONS | sed -r 's/x.*//')ve HEIGHT=$(echo $DIMENSIONS | sed -r 's/.*x//').
mneri

xdpyinfobilgiye erişemiyorsa bir hata mesajı yazdırır, bu nedenle hata yönlendirmesine /dev/null. Bu nedenle bir hata yeniden yönlendirme eklemek isteyebilirsiniz: xdpyinfo 2> /dev/null. Yani, tam piple şöyle görünür: xdpyinfo 2> /dev/null | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'. Bu, komut dosyanızı daha sağlam hale getirecek.
mneri

28

xdpyinfo | grep dimensionsToplam çözünürlüğü size verecektir, eğer birden fazla monitörünüz varsa, hepsinin toplamı olacaktır. xrandr --currentHer monitör için size çözünürlük verecek.

Bu snippet'i rDesktop için tam ekrana gitmeden mümkün olan maksimum çözünürlüğü bulmak için kullanıyorum:

Xaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f1)

Yaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f2)

Çıktı:

Xaxis = 1280
Yaxis = 1024

Eksi pencereleri dekorasyonu (az çok):

MaxRes=$(($Xaxis-5))"x"$(($Yaxis-25))

Çıktı:

MaxRes = 1275x999

Tam ekran gitmeden rDesktop için maksimum çözünürlük.

Bitiş komutu:

rdesktop -u $User -P -z -5 -g $MaxRes $Host &

Şimdiye kadar iyi çalışıyor ama ben yine de tam olarak test etmedim.

Başka bir örnek ile screencast içindir avconv:

avconv -f x11grab -r 15 -s `xrandr --current | grep  '*' | uniq | awk '{print $1}'` -i :0.0 -c:v libx264 ./output.mp4

diyor kixdpyinfo: Unable to open display "".
Kra 9'a

Değiştirilebilecek modları nasıl buluyorsunuz?
CMCDragonkai

Pencere dekorasyonu (vb.) İçin çıkartmanız gerekmiyorsa, bunu tek bir astarda yapabilirsiniz rdesktop [other_args] -g $(xrandr --current | grep '*' | uniq | awk '{print $1}').
c24,

Birden fazla monitörün toplamı değil. Tüm monitörleri içeren bir sınırlayıcı kutunun boyutları.
Dennis Williamson,

xrandr --current | grep '*' | awk -v line="$SCREEN" 'NR==line{print $1}' | cut -d 'x' -f1Bir ekran belirtmek istiyorsanız (çoklu monitör kurulumuyla) ( SCREEN1 indeksli)
SapuSeven

5

xrandr -qKomutu kullanabilirsiniz . Bu sayede gerekirse bir kabuk betiği oluşturabilirsiniz.

Komut hakkında daha fazla bilgi için buraya gidin veya man xrandr yazın.


2
#############################################
## Bunu Video Kayıt Programında kullanıyorum.
# pencere boyutu - kök seçeneği - ekranın kök penceresindeki bilgiler
echo $ (xwininfo -root | grep 'geometri' | awk '{print $ 2;}')
# çıkış (lar): 1024x768 + 0 + 0
# yükseklik x genişlik + x + y konumları.
######################
## Referans Kılavuzu ##
adam xwininfo

xwininfo -root|sed '/Height/!d;s/.* //'Boy ve xwininfo -root|sed '/Width/!d;s/.* //'genişlik için kullandım .
tatlı

1

xdpyinfoBazı ayrıştırma ile yapacak. Daha sonra ekran numarasını kazmanız gerekecek birçok bilgi verir ve


1

@ User31752 ve @ eliezer-e-vargas cevaplarını birleştiren iki olası alternatif

Daha basit bir regex:

$ xrandr --current | sed -n 's/.* connected \([0-9]*\)x\([0-9]*\)+.*/\1x\2/p'
1440x900

veya kesme kullanarak:

$ xrandr --current | grep ' connected ' | cut -d ' ' -f 3 | cut -d '+' -f 1
1440x900

grep '*' | uniq@ Eliezer-e-vargas'ın kullanımı farklı bir hat (ör. "1440x900 59.90 * + 59.89") xrandr çıktısı alırken, 'bağlı' sıkıntısı basit bir tane (ör. "LVDS1 1440x900 + 0 + 0 bağlanır. ..... ").

Regex'in @ user31752 tarafından kullanılması gayet güzel, bu yüzden kullandığım satır daha basit bir regex gerektiriyor veya daha basit bir kesme komutunun yerine kullanılabilir.

Örnek xrandr çıkışı

$ 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)

Birisinin Eliezer E. Vargas'ın cevabındakiler yerine bu komutları kullanması için herhangi bir sebep var mı ?
Scott

Lütfen bu bilgiyi cevabınıza göre düzenleyin .
Scott

0

Kabul edilen cevaplarda olduğu gibi, ancak daha az karmaşık:

xdpyinfo | grep dimensions

Çıktı örneği:

dimensions:    1366x768 pixels (361x203 millimeters)

0

Monitör Ekran Verilerini Okuma

Vesa standardı, monitör ekranı çözünürlüğünün nasıl okunacağına ilişkin bir yöntem sunar.

Genişletilmiş Ekran Tanımlama Verileri (EDID ): Bu standart, yapılandırma bilgilerini taşımak ve ekranların optimum şekilde kullanılmasını sağlamak için veri formatlarını tanımlar.

Bir monitör genellikle birden çok çözünürlüğü destekler ve yeniler. Elbette biri maksimum (fiziksel) olanı tercih edecektir.

Bu monitör verisini okumak için aşağıdaki çözümlerden birini deneyin:

  • EDID-kod çözme

    Takılı değilse, yazın

    sudo apt install edid-decode
    

    Sonra ediddosyayı oku

    edid-decode /sys/class/drm/card0-eDP-1/edid
    
  • salt EDID

    İle yükleyin

    sudo apt install read-edid 
    

    Ardından i2c ile ekran izleme verisini okuyun ve ayrıştırın

    sudo get-edid | parse-edid
    
  • Düzenlenen verileri Hexdump

    Eğer edid-tools kurulu değilse, edidhex dosyasını çöpe atabilirsiniz , örneğin:

    hd /sys/class/drm/card0-eDP-1/edid
    

    Bu hex dosyasını şifrelemek için wiki'ye bakın veya edid teknik özelliklerini indirin .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.