Xrandr e udev: configurare un monitor esterno in automatico: differenze tra le versioni

m
verificata
mNessun oggetto della modifica
m (verificata)
Riga 1: Riga 1:
{{Versioni compatibili|Wheezy|Jessie}}
{{Versioni compatibili|Buster}}
==Introduzione==
==Introduzione==
Questa guida si propone di spiegare come usare <code>udev</code> e <code>xrandr</code> per configurare in automatico uno o più monitor quando si collegano alla VGA, DVI o HDMI.
Questa guida si propone di spiegare come usare <code>udev</code> e <code>xrandr</code> per configurare in automatico uno o più monitor quando si collegano alla VGA, DVI o HDMI.


Normalmente per configurare un monitor esterno si utilizza xrandr. Seguendo le seguenti istruzioni sarete in grado di farlo una tantum e dalla volta successiva in poi in maniera automatica, possibilmente scegliendo la configurazione a seconda del monitor che si attacca.
Normalmente per configurare un monitor esterno si utilizza <code>xrandr</code>. Seguendo le seguenti istruzioni sarete in grado di farlo una tantum e dalla volta successiva in poi in maniera automatica, possibilmente scegliendo la configurazione a seconda del monitor che si attacca.


Per raggiungere questo scopo, si userà [[udev]], che attiverà uno [[script]] al collegamento (o scollegamento) di un monitor. Questo script, tramite l'[http://en.wikipedia.org/wiki/Extended_display_identification_data edid] riconosce univocamente il monitor esterno. A questo punto con una serie di if, possiamo configurare a piacere il nostro monitor.
Per raggiungere questo scopo, si userà [[udev]], che attiverà uno [[script]] al collegamento (o scollegamento) di un monitor. Questo script, tramite l'[http://en.wikipedia.org/wiki/Extended_display_identification_data edid] riconosce univocamente il monitor esterno. A questo punto con una serie di if, possiamo configurare a piacere il nostro monitor.
Riga 41: Riga 41:


==Regola udev==
==Regola udev==
Il punto interessante è che udev si accorge quando si collega (o scollega) un monitor ad una porta (per esempio VGA). A questo punto si crea una regola udev che lancia uno script. Quindi bisogna creare il file <code>/etc/udev/rules.d/90-monitor.rules</code>
Il punto interessante è che udev si accorge quando si collega (o scollega) un monitor ad una porta (per esempio VGA). A questo punto si crea una regola udev che lancia uno script. Quindi bisogna creare il file <code>/etc/udev/rules.d/90-monitor.rules</code>.
 
Per esempio con [[nano]] e [[privilegi di amministrazione]]:
<pre>
# nano /etc/udev/rules.d/90-monitor.rules
</pre>
E scrivere:
<pre>
<pre>
ACTION=="change", SUBSYSTEM=="drm", RUN+="/usr/local/sbin/monitor.sh"
ACTION=="change", SUBSYSTEM=="drm", RUN+="/usr/local/sbin/monitor.sh"
</pre>
</pre>
Poi salvare (con <code>Ctrl-o</code>) e uscire (con <code>Ctrl-x</code>).
Questa regola attiverà lo script <code>/usr/local/sbin/monitor.sh</code> ad ogni collegamento o scollegamento di un cavo esterno.
Questa regola attiverà lo script <code>/usr/local/sbin/monitor.sh</code> ad ogni collegamento o scollegamento di un cavo esterno.


Riga 52: Riga 60:
#! /bin/bash
#! /bin/bash


UNI=stringa esadecimale contenente l'edid dello schermo
UNI="stringa esadecimale contenente l'edid dello schermo"
VGA=/sys/class/drm/card0/card0-VGA-1/
VGA="/sys/class/drm/card0/card0-VGA-1/"


export DISPLAY=:0.0
export DISPLAY=":0.0"


# esci se Xorg non è attivo
# esci se Xorg non è attivo
pidof /usr/bin/X > /dev/null 2>&1 || exit 0
pidof /usr/lib/xorg/Xorg > /dev/null 2>&1 || exit 0


if [[ "`cat $VGA\status`" == "connected" ]]
if [[ "$(cat -- "$VGA"status)" == "connected" ]]
then
then
   xrandr --output LVDS1 --primary --output VGA1 --auto;
   xrandr --output LVDS1 --primary --output VGA1 --auto;
   EDID=`cat $VGA\edid | hexdump -v -e '"" "%X" '`;
   EDID=$(cat $VGA\edid | hexdump -v -e '"" "%X" ');
   if [[ "$UNI" == "$EDID" ]]
   if [[ "$UNI" == "$EDID" ]]
   then
   then
Riga 99: Riga 107:
|Estesa_da=
|Estesa_da=
|Verificata_da=
|Verificata_da=
: [[Utente:HAL 9000|HAL 9000]] 17:05, 10 mag 2015 (CEST)
: [[Utente:HAL 9000|HAL 9000]] 15:43, 21 set 2019 (CEST)
|Numero_revisori=1
|Numero_revisori=1
}}
}}
3 581

contributi