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_listen
và 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 dock
luôn có giá trị 0, bất kể máy tính xách tay được neo hay không khóa.