我有一个带有nvidia optimus的联想ThinkPad和一个迷你坞站系列3。
我希望在对接时,它应尽可能自动切换到外部显示器,如果我将其取消对接,则应自动切换到ThinkPad LCD。
这也应该在引导阶段起作用,因为在此必须输入加密磁盘(dm-crypt)的密码。
我尝试了以下操作,但不起作用:
我创建了一个文件/etc/acpi/thinkpad-undock.sh
(+ chmod a+x thinkpad-undock.sh
),其中包含以下几行:
#!/bin/sh
xrandr --output LVDS-1 --auto --output DP-5.8 --off
并且 /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
再来一次chmod a+x thinkpad-dock.sh
。
手动执行两个脚本都可以。
比我创建了两个文件来处理事件:
thinkpad-dock-lenovo
event=ibm/hotkey LEN0068:00 00000080 00004010
action=/etc/acpi/thinkpad-dock.sh
并且 thinkpad-undock-lenovo
event=ibm/hotkey LEN0068:00 00000080 00004011
action=/etc/acpi/thinkpad-undock.sh
然后,我向acpi守护进程重新加载了/etc/init.d/acpid reload
。但是,如果我停靠或取消停靠笔记本电脑,它什么也不做。
通过执行acpi_listen
然后停放和取消停放笔记本电脑,我得到了上面的事件编号。
因此,关于如何使其工作有任何想法。
也许该问题已通过某些桌面环境(例如kde)解决,但我正在使用xmonad,尽管如此,如上所述,它甚至可以在启动阶段独立于桌面环境工作。
我正在使用内核版本4.4.0-22运行ubuntu 16.04。
我也尝试添加udev规则,如下所示,但它不起作用:
ENV{EVENT}=="undock", KERNEL=="dock.0", SUBSYSTEM=="platform", RUN+="disper -s"
ENV{EVENT}=="dock", KERNEL=="dock.0", SUBSYSTEM=="platform", RUN+="disper -s"
我只是注意到dock
,无论便携式计算机是对接还是未对接,文件始终为0。