Lenovo Thinkpad T420, monitores externos Mini Dock 3, regras do udev e um script disfuncional… (Ubuntu 18.04, com o i3 WM)

0

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?

    
por Joshua Gould 04.06.2018 / 18:14

0 respostas