Tự động chuyển đổi hiển thị trên lenovo docking và linux


8

Tôi có một thinkpad lenovo với nvidia Optimus và một loạt trạm nối mini 3 .

Tôi muốn rằng trong khi gắn, nó sẽ tự động chuyển sang màn hình ngoài nếu có thể và nếu tôi mở khóa, nó sẽ tự động chuyển sang màn hình LCD thinkpad.

Điều này cũng sẽ hoạt động trên giai đoạn khởi động vì ở đó tôi phải nhập mật khẩu cho đĩa được mã hóa (dm-crypt).

Tôi đã thử cách sau nhưng không được:

Tôi đã tạo một tệp /etc/acpi/thinkpad-undock.sh(+ chmod a+x thinkpad-undock.sh) chứa các dòng sau:

#!/bin/sh
xrandr --output LVDS-1 --auto --output DP-5.8 --off

Và cũng /etc/acpi/thinkpad-dock.sh

#!/bin/sh
prime-select nvidia # ensures that nvidia card is selected
xrandr --output LVDS-1 --off --output DP-5.8 --auto

Và một lần nữa chmod a+x thinkpad-dock.sh.

Thực hiện cả hai kịch bản làm việc bằng tay.

Hơn tôi đã tạo hai tệp để xử lý các sự kiện:

thinkpad-dock-lenovo

event=ibm/hotkey LEN0068:00 00000080 00004010
action=/etc/acpi/thinkpad-dock.sh

và cũng thinkpad-undock-lenovo

event=ibm/hotkey LEN0068:00 00000080 00004011
action=/etc/acpi/thinkpad-undock.sh

Sau đó, tôi tải lại daemon acpi với /etc/init.d/acpid reload. Tuy nhiên nếu tôi cập cảng hoặc tháo khóa máy tính xách tay thì không có gì.

Tôi đã nhận được số sự kiện ở trên bằng cách thực hiện acpi_listenvà sau đó cắm và tháo máy tính xách tay.

Vì vậy, có bất kỳ ý tưởng về cách làm cho nó hoạt động.

Có thể vấn đề được giải quyết bởi một số môi trường máy tính để bàn, ví dụ như kde, nhưng tôi đang sử dụng xmonad và tuy nhiên, như đã chỉ ra ở trên, nó sẽ hoạt động ngay cả trên giai đoạn khởi động độc lập với môi trường máy tính để bàn.

Tôi đang chạy Ubuntu 16.04 với phiên bản kernel 4.4.0-22.

Tôi cũng đã cố gắng thêm một quy tắc udev như sau nhưng nó không hoạt động:

ENV{EVENT}=="undock", KERNEL=="dock.0", SUBSYSTEM=="platform", RUN+="disper -s"
ENV{EVENT}=="dock", KERNEL=="dock.0", SUBSYSTEM=="platform", RUN+="disper -s"

Tôi chỉ nhận thấy rằng tập tin dockluôn có giá trị 0, bất kể máy tính xách tay được neo hay không khóa.

Câu trả lời:


0

Tập lệnh của bạn không đặt biến môi trường HIỂN THỊ. Nó sẽ giống như thế này:

#!/bin/sh
export DISPLAY=:0
xrandr --output LVDS-1 --auto --output DP-5.8 --off

Cảm ơn. Tôi đã thử nó nhưng nó không hoạt động. Tôi cũng không thấy lý do tại sao điều này sẽ là sai lầm vì tập lệnh hoạt động (có và không có câu lệnh xuất) nếu tôi thực thi trực tiếp. Tôi đoán rằng kịch bản không được thực thi bởi acpid.
sinh viên

0

Tôi đã có may mắn với việc thiết lập cả hai DISPLAYXAUTHORITYcũng như thêm một giấc ngủ nhỏ, vd

export DISPLAY=:0
export XAUTHORITY=/home/user/.Xauthority
sleep 3
xrandr ...

0

Tôi có một thiết lập tương tự, tuy nhiên tôi không bao giờ theo đuổi giải pháp phản ứng với dock. Đó là một điều thú vị.

Thay vào đó, những gì tôi làm là sử dụng trình quản lý hiển thị của Gnome để đặt màn hình LCD thành 'tắt' và màn hình ngoài là màn hình chính. Bằng cách này bất cứ khi nào tôi đặt máy tính xách tay xuống dock, nó sẽ chuyển sang màn hình bên ngoài. Khi tôi nâng nó lên, nó sẽ quay trở lại màn hình LCD.

Có cái này trên bàn điều khiển (khởi động cài đặt dm-crypt) cũng hoạt động nhưng nó có những sắc thái của nó. Nếu nắp được đóng, tôi đặt máy tính xách tay lên dock và bật nó lên, nó sẽ tự động khởi động trên màn hình ngoài (mọi thứ, bao gồm cả màn hình BIOS, rất nhiều). Nếu nắp được mở, nó sẽ chỉ trao đổi sau khi đăng nhập vào GDM.

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.