Cách tự động chuyển đổi màn hình với dock máy tính xách tay của tôi


11

Tôi có Dell Precision M4300 với Dell Dock PRO1X chạy Ubuntu Natty.

Khi tôi đặt máy tính xách tay, màn hình LCD bị tắt và tôi sử dụng hai màn hình ngoài, tuy nhiên khi tôi tháo máy tính xách tay thì nó không chuyển sang màn hình máy tính xách tay. Điều tương tự cũng xảy ra khi tôi gắn laptop, nó không chuyển sang màn hình ngoài.

Nếu tôi khởi động lại máy tính xách tay, nó sẽ chọn thiết lập chính xác nhưng nó sẽ không tự động thay đổi màn hình khi Ubuntu chạy.

Xorg.conf của tôi

Câu trả lời:


10

Dock / UnDock Script

Cuối cùng tôi đã kết hợp một thiết lập tập lệnh hoàn chỉnh sẽ phát hiện trạng thái dock của tôi và tự động chuyển màn hình.

Điều đầu tiên tôi làm là loại bỏ Xorg.conf của mình vì nó gây ra nhiều vấn đề hơn mà nó đã giải quyết. Vì tôi đang sử dụng thẻ nvdia nên cuối cùng tôi thấy rằng sử dụng bộ phân tán là cách tốt nhất để sử dụng. Tôi đã giảm giá nó trước đây vì các lệnh tiêu chuẩn của nó không thể đạt được thiết lập dualview của tôi nhưng sau đó tôi thấy tôi có thể tạo một siêu dữ liệu tùy chỉnh để sử dụng với phân tán.

Để tạo siêu dữ liệu tùy chỉnh, tôi đã sử dụng các giá trị được lưu trữ trong Xorg.conf cùng với thử nghiệm trước đó với nv-control-dpyxrandr làm hướng dẫn. Siêu dữ liệu này và các giá trị song sinh khác đã được thêm vào một tệp có thể được chuyển qua để phân tán thông qua stdin .

Do có màn hình kích thước khác nhau với Twinview, tôi cần sử dụng XCreateMouseVoid , như được mô tả trong câu hỏi này .

Dưới đây là bảng phân tích đầy đủ các tập lệnh và tệp với nội dung của chúng.


Chữ viết

  1. Tạo tập lệnh XCreateMouseVoid:

    Tên tập lệnh: ~/.mousevoid

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

    chmod +x ~/.mousevoid

  2. Tạo tập tin cài đặt Disper:

    Tên tệp: ~/.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. Tạo tập lệnh phiên dbus xuất:

    Tên tập lệnh: ~/.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
    

    Chỉ đặt thành người dùng thực thi: chmod 700 ~/.export_x_info

    Sau đó đưa nó vào Ứng dụng khởi động:

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

    Trừ khi bạn khởi động lại, bạn cần chạy ~ / .export_x_info để tạo tệp .Xdbus

  4. Tạo quy tắc udev sẽ chạy theo sự kiện dock:

    Tên tập lệnh: /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. Tạo tập lệnh được liên kết với quy tắc udev:

    Tên tập lệnh: /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. Tạo tập lệnh mở khóa (thay đổi your_user để khớp với tên người dùng của bạn):

    Tên tập lệnh: /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. Tạo tập lệnh dock (thay đổi your_user để khớp với tên người dùng của bạn):

    Tên tập lệnh: /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


Gỡ lỗi

Để gỡ lỗi các tập lệnh dock, bạn phải kích hoạt ghi nhật ký gỡ lỗi udev:

udevadm control --log-priority=debug

Sau đó mở syslog trong Log File Viewer


Tài nguyên

nVidia Readme: Cấu hình Twinview , X Tùy chọn cấu hình
Autorandr
Disper PPA
nv-control-dpy
Diễn đàn Ubuntu - Un / Dock
ScScript
Thinkwiki udevadm


Cas, có ý kiến ​​rằng tôi nhận xét về bài đăng của bạn để hỏi về vấn đề mà tôi đang gặp phải với vấn đề này: askubfox.com/questions/68737/auto-switching-with-dock
Toby Joiner

Bạn có tập lệnh dell-dock.sh không?
Cas

1
Có, dường như tập tin đó không tồn tại: $ cat /sys/devices/platform/dock.0/docked cat: /sys/devices/platform/dock.0/docked: No such file or directory
Toby Joiner

3

Bạn có thể sử dụng autorandr .

Tự động phát hiện phần cứng hiển thị kết nối và tải thiết lập X11 phù hợp bằng xrandr hoặc disper

Tự động chọn cấu hình hiển thị dựa trên các thiết bị được kết nối

Xem thêm:


Giải pháp này là không đau và làm việc tuyệt vời.
tạp hóa
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.