# 13-04-2022 ⚙ External monitor with laptop I installed an external monitor connected to my laptop. Since I'm on archlinux I needed to configure almost two things: screen and keyboards. I wanted that screen stay poweron when I close the laptop and switch to the correct layout for the external keyboard (pure key pro). ## Configure ACPI `handle.sh` script One easy way is to install acpi and setup script in `/etc/acpi/handler.sh`. One major issue I faced was that randr need `.Xauthority` of the current session user to work and acpi script handle.sh run as root. So I added this adapted script I originally found on internet : --- ```bash function GetXuser() { #Guess the user logged on server $1 w -huf|grep " $1 "|cut -d " " -f 1|head -n 1 } export DISPLAY=:0 export USER=$(GetXuser $DISPLAY) export XAUTHORITY=/home/$(GetXuser $DISPLAY)/.Xauthority ``` --- Here piece of code I used to set screen and keyboard on lid events: --- ```bash button/lid) case "$3" in close) logger 'LID closed' if [ $(ls /sys/class/drm/*/status | xargs cat | grep -c "^connected") -gt 1 ] then logger 'More than one screen' logger "$DISPLAY - $XAUTHORITY" export WINIT_X11_SCALE_FACTOR=1.33 xrandr --output eDP1 --off --output HDMI1 --auto --mode 1920x1080 --set "Broadcast RGB" "Full" sudo -H -u $USER bash -c "~/share/bin/switch-keyboard-layout.sh" else logger 'One screen' systemctl suspend fi ;; open) logger 'LID opened' if [ $(ls /sys/class/drm/*/status | xargs cat | grep -c "^connected") -gt 1 ] then logger 'More than one screen' xrandr --output HDMI1 --auto --mode 1920x1080 --set "Broadcast RGB" "Full" --primary --output eDP1 --mode 1440x900 --left-of HDMI1 sudo -H -u $USER bash -c "~/share/bin/switch-keyboard-layout.sh" else logger 'One screen' xrandr --output eDP1 --mode 1440x900 sudo -H -u $USER bash -c "~/share/bin/switch-keyboard-layout.sh" #systemctl suspend fi ;; ``` --- Keyboard part is not tested yet, still a WIP and I will update this entry as soon as I progress ! # TODO * [ ] started to have some udev rules to detect screen plug but not much success to get the event launch the monitor script * [ ] change layout keyboard on plugin via udev rules