Как автоматически переключать мониторы с помощью моего ноутбука
11
У меня Dell Precision M4300 с Dell Dock PRO1X под управлением Ubuntu Natty.
Когда ноутбук установлен в док-станцию, ЖК-дисплей выключен, и я использую два внешних монитора, однако при отсоединении ноутбука он не переключается на экран ноутбука. То же самое происходит, когда я подключаю ноутбук, он не переключается на внешние мониторы.
Если я перезагружу ноутбук, он выберет правильную настройку, но не будет автоматически менять мониторы при работающей Ubuntu.
Я наконец собрал полную настройку скрипта, которая будет определять мое состояние дока и автоматически переключать мониторы.
Первым делом я избавился от своего Xorg.conf, поскольку он вызвал больше проблем, которые он решил. Так как я использую NVDIA карту я в конце концов обнаружил , что использование disper был лучшим способом пойти. Я раньше обесценивал его, так как его стандартные команды не могли выполнить мою настройку двойного просмотра, но потом я обнаружил, что могу создать собственный метамод для использования с disper.
Чтобы создать собственный метамод, я использовал значения, хранящиеся в Xorg.conf, вместе с предыдущим тестированием с nv-control-dpy и xrandr в качестве руководства. Этот метамод и другие значения twinview были добавлены в файл, который можно передать для рассеивания через стандартный ввод .
Из-за наличия мониторов разных размеров с Twinview мне нужно использовать XCreateMouseVoid , как описано в этом вопросе .
Ниже приведена полная разбивка скриптов и файлов с их содержимым.
#!/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
Установите только для исполняемого пользователем файла: chmod 700 ~/.export_x_info
Затем поместите его в Startup Applications:
Name: X Environment Variables
Command: /home/your_user/.export_x_info
Если вы не перезапустите компьютер, вам нужно запустить ~ / .export_x_info, чтобы создать файл .Xdbus.
Создайте правило udev, которое будет запускаться при событии дока:
Имя сценария: /etc/udev/rules.d/81-dell-dock.rules
#!/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
Создайте скрипт расстыковки (измените your_user в соответствии с вашим именем пользователя):
$ cat /sys/devices/platform/dock.0/docked cat: /sys/devices/platform/dock.0/docked: No such file or directory
Вы можете использовать autorandr .
Смотрите также:
источник