Наконец-то я собрал полную настройку скрипта, которая обнаружит мой статус док-станции и автоматически переключит мониторы.
Первое, что я сделал, это избавиться от моего Xorg.conf, поскольку он вызвал больше проблем, которые он решил. Поскольку я использую карту nvdia, я в конце концов обнаружил, что использовать дисперс - лучший способ пойти. Я отказался от этого раньше, так как его стандартные команды не смогли выполнить мою настройку dualview, но потом я обнаружил, что могу создать собственный метамод для использования с диспером.
Чтобы создать настраиваемый метаданный, я использовал значения, хранящиеся в Xorg. conf вместе с предыдущим тестированием с помощью disper и disper в качестве руководства. Этот метамод и другие значения двойного просмотра были добавлены в файл, который может быть передан в disper через stdin.
Из-за наличия мониторов разного размера с Twinview мне нужно использовать XCreateMouseVoid, как описано в этом вопросе.
Ниже приведена полная разбивка скриптов и файлов с их содержимым.
#!/bin/bash
echo "Mouse Void"
/opt/XCreateMouseVoid/XCreateMouseVoid 0 1112 1280 88 &
/opt/XCreateMouseVoid/XCreateMouseVoid 0 0 1280 88 &
chmod +x ~/.mousevoid Создать файл настроек Disper: Имя файла: ~/.disperDocked [ f2] Создайте сценарий сеанса экспорта dbus: Имя скрипта: ~/.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
Установите только для пользователя: chmod 700 ~/.export_x_info Затем поместите его в приложения для запуска: Name: X Environment Variables
Command: /home/your_user/.export_x_info
Если вы не перезапустите, вам нужно запустить ~ / .export_x_info, чтобы создать Файл .Xdbus Создайте правило udev, которое будет работать с событием док-станции: Имя скрипта: /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 Создайте скрипт, связанный с правилом udev: Имя скрипта: /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
[ f18] Создайте сценарий отмены (измените your_user в соответствии с вашим именем пользователя): Имя скрипта: /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 Создайте сценарий дока (измените your_user в соответствии с вашим именем пользователя): Имя скрипта: /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 Чтобы отладить скрипты док-станции, вы должны активировать ведение журнала отладки udev:
udevadm control --log-priority=debug
Затем открыть disper в средстве просмотра файлов журнала
nVidia Readme: XCreateMouseV oid , X Параметры конфигурации question Disper PPA nv-control-dpy Ubuntu Forum - Un / Dock Scripts Thinkwiki udevadm
Бруно, на данный момент есть действительно открытый запрос функции:
https://bugs.launchpad.net/juju/+bug/893184
Вы можете создайте файл yaml прямо сейчас, чтобы установить эти параметры, на этой странице это объясняется:
https://bugs.launchpad.net/juju/+bug/893184 [!d4 ]
В основном, чтобы сделать то, о чем говорит ваш пример, сохраните его как local.yaml:
service-name:
key: "value"
key2: "value2"
И затем сделайте
juju deploy charm-name service-name --config local.yaml
Вы также можете установить параметры сразу после развертывания (до того, как устройство будет работать) с
juju set service-name key=value key2=value2