Então eu estou tentando configurar regras do udev para configurar automaticamente o meu DE / WM (que já estou usando no momento (agora é o i3, pode ter que ficar com isso um pouco ...) para configurar meus monitores externos ao encaixar (e voltam para a tela interna quando eu desacopla.
Eu encontrei este script e a regra do udev link
Eu modifiquei o script para corresponder à minha configuração e o que eu queria que acontecesse com os monitores ...
#! /bin/sh -e
# Save this file as /etc/sbin/thinkpad-dock.sh
# NB: you will need to modify the username and tweak the xrandr
# commands to suit your setup.
# wait for the dock state to change
sleep 1
username=jgould
#export IFS=$"\n"
14 if [[ "$ACTION" == "add" ]] ; then
DOCKED=1
logger -t DOCKING "Detected condition: docked"
17 elif [[ "$ACTION" == "remove" ]] ; then
DOCKED=0
logger -t DOCKING "Detected condition: un-docked"
#else
# logger -t DOCKING "Detected condition: unknown"
# echo Please set env var \$ACTION to 'add' or 'remove'
# exit 1
fi
case "$DOCKED" in
"0")
#undocked event
switch_to_local :0 ;;
"1")
#docked event
switch_to_external :0 ;;
esac
# invoke from XSetup with NO_KDM_REBOOT otherwise you'll end up in a KDM reboot loop
NO_KDM_REBOOT=0
for p in $*; do
case "$p" in
"NO_KDM_REBOOT") NO_KDM_REBOOT=1 ;;
"SWITCH_TO_LOCAL") DOCKED=0 ;;
esac
done
44 function switch_to_local {
export DISPLAY=:0
#export XAUTHORITY=$(find /var/run/kdm -name "A${DISPLAY}-*")
#export XAUTHORITY=/var/run/lightdm/sflaniga/xauthority
logger -t DOCKING "Switching off HDMI2/3 and switching on LVDS1"
su $username -c ' /usr/bin/xrandr --output HDMI-1 --off --output HDMI-2 --off --output HDMI-3 --off --output VGA-1 --off --output LVDS-1 --auto '
}
function switch_to_external {
export DISPLAY=:0
#export XAUTHORITY=/var/run/lightdm/sflaniga/xauthority
#export XAUTHORITY=$(find /var/run/kdm -name "A${DISPLAY}-*")
# The Display port on the docking station is on HDMI2 - let's use it and turn off local display
logger -t DOCKING "Switching off LVDS1 and switching on HDMI2/3"
su $username -c ' /usr/bin/xrandr --output LVDS-1 --off --output HDMI-1 --off --output HDMI-3 --auto --primary --output HDMI-2 --auto --left-of HDMI-3 '
}
#case "$DOCKED" in
# "0")
# #undocked event
# switch_to_local :0 ;;
# "1")
# #docked event
# switch_to_external :0 ;;
#esac
O script pode ser testado passando uma ação (adicionar ou remover, dependendo de como você está testando para /sbin/thinkpad.sh
jgould@Ash:~$ ACTION=remove /sbin/thinkpad-dock.sh
/sbin/thinkpad-dock.sh: 14: /sbin/thinkpad-dock.sh: [[: not found
/sbin/thinkpad-dock.sh: 17: /sbin/thinkpad-dock.sh: [[: not found
/sbin/thinkpad-dock.sh: 44: /sbin/thinkpad-dock.sh: function: not found
Esse é o resultado, mas o syslog fornece informações menos úteis (para mim, de qualquer forma):
Jun 3 23:52:33 Ash systemd-udevd[4521]: Process '/sbin/thinkpad-dock.sh' >failed with exit code 2. Jun 3 23:52:33 Ash systemd-udevd[4527]: Process '/sbin/thinkpad-dock.sh' >failed with exit code 2. Jun 3 23:52:33 Ash systemd-udevd[4524]: Process '/sbin/thinkpad-dock.sh' >failed with exit code 2. Jun 3 23:52:33 Ash systemd-udevd[4520]: Process '/sbin/thinkpad-dock.sh' >failed with exit code 2.
Eu tenho me enganado com isso nos últimos dias e tenho lido sobre as regras do udev e tenho certeza de que a parte está correta, o syslog diz que estamos mudando a direção correta quando encaixamos e desengatamos.
Estou perplexo com o que realmente está acontecendo ...
Alguma idéia?