¿Existe alguna herramienta que permita:
- recuerde la configuración actual de RandR (posición, orientación, resolución, etc.) por monitor,
- ¿Aplicar automáticamente la última configuración buena conocida tan pronto como se conecte la pantalla, sin necesidad de perder el tiempo con applets o xrandr(1)?
Las configuraciones tendrían que aplicarse por usuario y por pantalla.
Si no existe tal herramienta en la naturaleza, me gustaría armar una yo mismo, pero por lo que puedo ver, no hay forma de saber si se ha conectado un monitor. ¿Tengo que sondear con xrandr -q? de vez en cuando para averiguar si una salida estaba conectada o desconectada, o hay una forma más eficiente de hacerlo? ¿Se puede ajustar udev para que haga precisamente eso?
Respuesta aceptada:
Estoy usando este script simple (hecho en casa) que sigue sondeando RandR y cambia entre LVDS1 y VGA1 cuando VGA se conecta/desconecta. (Para HDMI salidas, en el siguiente archivo de script, cambie todos los VGA1
a HDMI1
)
Es una solución sucia, pero funciona bien.
Está personalizado para mi configuración:lo más probable es que necesite cambiar los nombres de salida de RandR (LVDS1
y VGA1
) y, a diferencia de mí, probablemente estará bien con su modo predeterminado RandR para VGA.
#!/bin/bash
# setting up new mode for my VGA
xrandr --newmode "1920x1080" 148.5 1920 2008 2052 2200 1080 1089 1095 1125 +hsync +vsync
xrandr --addmode VGA1 1920x1080
# default monitor is LVDS1
MONITOR=LVDS1
# functions to switch from LVDS1 to VGA and vice versa
function ActivateVGA {
echo "Switching to VGA1"
xrandr --output VGA1 --mode 1920x1080 --dpi 160 --output LVDS1 --off
MONITOR=VGA1
}
function DeactivateVGA {
echo "Switching to LVDS1"
xrandr --output VGA1 --off --output LVDS1 --auto
MONITOR=LVDS1
}
# functions to check if VGA is connected and in use
function VGAActive {
[ $MONITOR = "VGA1" ]
}
function VGAConnected {
! xrandr | grep "^VGA1" | grep disconnected
}
# actual script
while true
do
if ! VGAActive && VGAConnected
then
ActivateVGA
fi
if VGAActive && ! VGAConnected
then
DeactivateVGA
fi
sleep 1s
done
Pasos completos:
-
Coloque el script anterior (
homemadeMonitor.sh
) en su directorio preferido -
Haga que el archivo .sh sea ejecutable escribiendo el siguiente comando en la terminal
chmod +x homemadeMonitor.sh
-
Ejecute el archivo .sh
./homemadeMonitor.sh