Takılı Olmayan Ekranları Devre Dışı Bırakma (xrandr)


17

Evdeyken kullandığım iki video çıkışlı bir dizüstü bilgisayarım var (HDMI1, VGA1). Onları etkinleştirmek için şunu yaparım:

xrandr --output HDMI1 --right-of LVDS1 --auto
xrandr --output LVDS1 --off
xrandr --output VGA1 --right-of HDMI1 --auto

İşe gitmek istediğimde dizüstü bilgisayarımı alıyorum ama önce aşağıdakileri çalıştırıyorum:

xrandr --output VGA1 --off
xrandr --output LVDS1 --left-of HDMI1 --auto
xrandr --output HDMI1 --off

Ve sonra bu dizüstü bilgisayar ekranımı olması gerektiği gibi aktif bırakıyor.

Karşılaştığım sorun, bazen bilgisayarımı çalışmaya başlamadan önce iki ekranı devre dışı bırakmayı hatırlamıyorum. Geldiğimde, çeşitli kombinasyonları deniyorum --outputve --offekranımı yeniden etkinleştiremiyorum.

Bu xrandrgörüntülenen hiçbir şey ile çalışan olsun çıktı :

Screen 0: minimum 320 x 200, current 3840 x 1080, maximum 8192 x 8192
LVDS1 connected (normal left inverted right x axis y axis)
   1366x768       60.0 +
   1024x768       60.0··
   800x600        60.3     56.2··
   640x480        59.9··
VGA1 disconnected 1920x1080+1920+0 (normal left inverted right x axis y axis) 0mm x 0mm
HDMI1 disconnected 1920x1080+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
DP1 disconnected (normal left inverted right x axis y axis)
  1920x1080 (0x4c)  148.5MHz
        h: width  1920 start 2008 end 2052 total 2200 skew    0 clock   67.5KHz
        v: height 1080 start 1084 end 1089 total 1125           clock   60.0Hz

Denediğim hemen hemen her komut şunu döndürür:

xrandr: Configure crtc 2 failed
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  21 (RRSetCrtcConfig)
  Serial number of failed request:  40
  Current serial number in output stream:  40

İki monitör CRTC'lerinden vazgeçmiyor gibi görünüyor ve donanımım sadece 2'yi desteklediğinden, bu monitörleri takıp devre dışı bırakana kadar kilitli.

Yanıtlar:


11

Tüm yapılandırmanızı aşağıdaki gibi tek bir komuta koyabilirsiniz:

xrandr --output VGA1 --off --output HDMI1 --off --output LVDS1 --left-of HDMI1 --auto

ve bu işi yapmalıdır, ayrıca yazma zor bir komut (uzun süre), şu anda bağlı olan ekranları test eden ve istediğiniz kurulumu yapan bir komut dosyası oluşturabilirsiniz. (bir tuş kısayoluna ekleyebilirsiniz)

if [ -z `xrandr --query | grep "HDMI1 connected"` ]
then
    xrandr --output DP2 --off --output DP1 --off --output HDMI2 --off \
        --output HDMI1 --off \
        --output LVDS1 --mode 1366x768 --pos 0x0 --rotate normal \
        --output VGA1 --off
else
    xrandr --output DP2 --off --output DP1 --off --output HDMI2 --off \
        --output HDMI1 --mode 1920x1080 --pos 0x0 --rotate normal --primary \
        --output LVDS1 --off --output VGA1 --off
fi

süslü bir senaryo değil ama sizin için işe yarayabilir.


1

Maalesef bir ekranın fişi çekildiğinde oluşturulan bir olay yok gibi görünüyor. komut dosyası anketi xrandr oldukça ağırdır, ancak / sys / class / drm / * / status içine bakabilir ve bu dosyaları yoklayabilir, ardından durum 'bağlı' durumdan başka bir şeye değiştiğinde (veya tamamen kaybolduğunda) gerekli xrandr eylemini gerçekleştirebilirsiniz.


1

Bunun çok eski bir iş parçacığı olduğunu biliyorum, ancak monitörleri açıp kapatmak ve daha sonra bağlantılarını kesmek hakkındaki bilgileri kullanarak sorunu nasıl çözdüğümü paylaşmak istedim. Autorandr adlı bir program kullandım ve ekranımı iki monitörle kurdumautorandr --save docked . Sonra o kullanılmış xrandr --output VGA --off, sonra Monitörümü fişten ardından autorandr --save mobile. Autorandr, ne taktığınıza veya çıkardığınıza bağlı olarak otomatik olarak farklı modlar arasında geçiş yapar. Umarım bu tökezleyen herkese yardımcı olur! Ayrıca bu benim ilk gerçek cevabım gibi, daha net olması için herhangi bir şeyi değiştirip değiştiremeyeceğimi bana bildirin.

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.