Dizüstü bilgisayarımın bağlantı istasyonuyla monitörleri otomatik olarak değiştirme


11

Ubuntu Natty çalıştıran bir Dell Dock PRO1X içeren bir Dell Precision M4300'üm var.

Dizüstü bilgisayar yerleştirildiğinde LCD ekran kapalı ve iki harici monitör kullanıyorum ancak dizüstü bilgisayarını açtığımda dizüstü bilgisayar ekranına geçmiyor. Aynı şey dizüstü bilgisayarı taktığımda da oluyor, harici monitörlere geçmiyor.

Dizüstü bilgisayarı yeniden başlatırsam doğru kurulumu seçer, ancak Ubuntu çalışırken monitörleri otomatik olarak değiştirmez.

Benim xorg.conf

Yanıtlar:


10

Komut Dosyalarını Sabitle / Kaldır

Sonunda, dock durumumu algılayacak ve monitörleri otomatik olarak değiştirecek eksiksiz bir komut dosyası kurulumunu bir araya getirdim.

Yaptığım ilk şey Xorg.conf dosyamdan kurtulmaktı çünkü çözdüğü daha fazla soruna neden oldu. Bir nvdia kartı kullandığım için sonunda disper kullanmanın en iyi yol olduğunu gördüm . Standart komutları dualview kurulumuma ulaşamadığı için daha önce indirim yapmıştım, ancak daha sonra disper ile kullanmak için özel bir metamode oluşturabildiğimi buldum.

Özel meta modu oluşturmak için , bir kılavuz olarak nv-control-dpy ve xrandr ile yapılan önceki testlerle birlikte Xorg.conf içinde saklanan değerleri kullandım . Bu MetaMode ve diğer TwinView değerleri üzerinden Disper geçirilen bir dosyaya eklenmiştir Stdin .

Twinview ile farklı boyuttaki monitörlere sahip olduğum için , bu soruda açıklandığı gibi XCreateMouseVoid kullanmam gerekiyor .

Aşağıda, komut dosyalarının ve dosyaların içerikleriyle birlikte tam bir dökümü verilmiştir.


Kodlar

  1. XCreateMouseVoid komut dosyası oluşturun:

    Komut Dosyası Adı: ~/.mousevoid

    #!/bin/bash
    echo "Mouse Void"
    /opt/XCreateMouseVoid/XCreateMouseVoid 0 1112 1280 88 &
    /opt/XCreateMouseVoid/XCreateMouseVoid 0 0 1280 88 &
    

    chmod +x ~/.mousevoid

  2. Disper ayarları dosyası oluştur:

    Dosya adı: ~/.disperDocked

    backend: nvidia
    associated displays: CRT-0, DFP-0, DFP-1
    metamode: CRT-0: 1280x1024_60 @1280x1024 +0+88, DFP-1: 1920x1200 @1920x1200 +1280+0
    scaling: default, default, stretched
    xinerama info order: DFP-1, CRT-0, DFP-0
    
  3. Dışa aktarma dbus oturum komut dosyasını oluşturun:

    Komut Dosyası Adı: ~/.export_x_info

    #!/bin/bash
    # Export the dbus session address on startup so it can be used by any other environment
    sleep 5
    touch $HOME/.Xdbus
    chmod 600 $HOME/.Xdbus
    env | grep DBUS_SESSION_BUS_ADDRESS > $HOME/.Xdbus
    echo 'export DBUS_SESSION_BUS_ADDRESS' >> $HOME/.Xdbus
    # Export XAUTHORITY value on startup so it can be used by cron
    env | grep XAUTHORITY >> $HOME/.Xdbus
    echo 'export XAUTHORITY' >> $HOME/.Xdbus
    

    Yalnızca kullanıcı tarafından çalıştırılabilir olarak ayarla: chmod 700 ~/.export_x_info

    Ardından Başlangıç ​​Uygulamalarına koyun:

    Name: X Environment Variables
    Command: /home/your_user/.export_x_info
    

    Yeniden başlatmadığınız sürece .Xdbus dosyasını oluşturmak için ~ / .export_x_info çalıştırmanız gerekir

  4. Bir dock olayında çalışacak udev kuralını oluşturun:

    Komut Dosyası Adı: /etc/udev/rules.d/81-dell-dock.rules

    KERNEL=="dock.0", ACTION=="change", RUN+="/usr/local/sbin/dell-dock"

    chmod +x /etc/udev/rules.d/81-dell-dock.rules

  5. Udev kuralıyla ilişkili komut dosyasını oluşturun:

    Komut Dosyası Adı: /usr/local/sbin/dell-dock

    #!/bin/sh
    # wait for the dock state to change
    sleep 0.5
    DOCKED=$(cat /sys/devices/platform/dock.0/docked)
    case "$DOCKED" in
       "0")
           echo "Run UnDocking Script..."
            /usr/local/sbin/undock
            ;;
        "1") 
            echo "Run Docking Script..."
            /usr/local/sbin/dock
            ;;
    esac
    exit 0
    

    chmod +x /usr/local/sbin/dell-dock

  6. Çıkarma komut dosyasını oluşturun ( kullanıcı_adınızı kullanıcı adınızla eşleşecek şekilde değiştirin ):

    Komut Dosyası Adı: /usr/local/sbin/undock

    #!/bin/bash
    USER=your_user
    export HOME=/home/$USER
    source $HOME/.Xdbus
    export DISPLAY=:0
    echo "UnDocking Script"
    echo "Switch primary monitor"
    sudo -u $USER disper -s
    echo "Killall XCreateMouseVoid"
    pkill XCreate
    echo "Restart conky"
    pkill conky
    sudo -u $USER conky &
    

    chmod +x /usr/local/sbin/undock

  7. (Değiştir dok komut dosyası oluşturma your_user kullanıcı adınızı eşleşecek):

    Komut Dosyası Adı: /usr/local/sbin/dock

    #!/bin/bash
    USER=your_user
    export HOME=/home/$USER
    source $HOME/.Xdbus
    export DISPLAY=:0
    echo "Docking Script"
    echo "Switch to Dualview"
    sudo -u $USER disper -i < $HOME/.disperDocked
    echo "Start XCreateMouseVoid"
    pkill XCreate
    sudo -u $USER $HOME/.mousevoid
    echo "Restart conky"
    pkill conky
    sudo -u $USER conky &
    

    chmod +x /usr/local/sbin/dock


Hata ayıklama

Dock komut dosyalarında hata ayıklamak için udev hata ayıklama günlüğünü etkinleştirmeniz gerekir:

udevadm control --log-priority=debug

Sonra açık syslog içinde günlük dosyası Görüntüleyici


kaynaklar

nVidia Benioku: Yapılandırma Twinview , X Yapılandırma Seçenekleri
Autorandr
Disper PPA
nv-control-dpy
Ubuntu Forum - Komut Dosyalarını
/ Sabitle
Thinkwiki udevadm


Cas, bu konuda yaşadığım sorunu sormak için yayınınıza yorum yapmam önerildi: askubuntu.com/questions/68737/auto-switching-with-dock
Toby Joiner

Senaryo dell-dock.sh var mı?
Cas

1
Evet, bu dosya mevcut değil gibi görünüyor: $ cat /sys/devices/platform/dock.0/docked cat: /sys/devices/platform/dock.0/docked: No such file or directory
Toby Joiner

3

Autorandr kullanabilirsiniz .

Bağlantı ekran donanımını otomatik olarak algıla ve xrandr veya disper kullanarak uygun X11 kurulumunu yükle

Bağlı cihazlara göre otomatik olarak bir ekran yapılandırması seçin

Ayrıca bakınız:


Bu çözüm ağrısızdır ve harika çalışır.
groceryheist
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.