xrandr: resolución forzada al inicio en Linux con Xfce y xdg

LINUXSISTEMAS OPERATIVOS
xrandr

Entre los escritorios podemos encontrar: GNOME, KDE, Cinnamon, Unity, Xfce, LXQt, Pantheon, Deepin, Enlightenment, entre otros. Si no sabes que escritorio estas usando puedas ejecutar el siguiente comando y te lo dirá:

$ ls /usr/bin/*session

/usr/bin/dbus-run-session /usr/bin/xfce4-session

Actualmente los equipos que tenemos tienen como gestor de sesión LightDM (Display Manager) con escritorios basados en Xfce. Si no sabes que Display Manager estas usando, puedes verlo con:

$ systemctl status display-manager.service

 lightdm.service - Light Display Manager
   Loaded: loaded (/lib/systemd/system/lightdm.service; indirect; vendor preset: enabled)
   Active: active (running) since Fri 2024-11-29 08:21:25 CET; 3h 36min ago
     Docs: man:lightdm(1)
  Process: 1381 ExecStartPre=/bin/sh -c [ "$(basename $(cat /etc/X11/default-display-manager 2>/dev/null))" = "lightdm" ] (code=exited, status=0/SUCCESS)
 Main PID: 1390 (lightdm)
    Tasks: 5 (limit: 4915)
   CGroup: /system.slice/lightdm.service
           ├─ 1390 /usr/sbin/lightdm
           └─30070 /usr/lib/xorg/Xorg -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch

Al tener una variedad muy heterogénea de dispositivos de proyección, a veces, no cuadran las resoluciones. Es aquí cuando entra la magia de forzar la resolución que queramos, incluso podemos crear resoluciones nuevas que no vengan por defecto. Para ello utilizamos «xrandr«.

En una sesión activa, ejecutaremos desde una terminal xrandr para comprobar las salidas con sus interfaces correspondientes, ya que podemos tener varias VGA, HDMI o DISPLAYPORT. También veremos las resoluciones soportadas y la que está actualmente en uso:

xrandr

Nos crearemos un script que nos cambia la resolución. Podemos ejecutarlo cuando lo necesitemos o cargarlo al inicio de sesión.

$ nano /usr/bin/resolucion.sh && chmod +x /usr/bin/resolucion.sh

#!/bin/sh

test -e  $HOME/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml  &&  rm  $HOME/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml

HDMI=$(xrandr | grep " connected" | grep HDMI | cut -d" " -f1)
VGA=$(xrandr | grep " connected" | grep VGA | cut -d" " -f1)
xrandr --output $VGA --mode 1280x800 --pos 0x0 --rotate normal --output $HDMI --mode 1280x800 --pos 0x0 --rotate normal --same-as $VGA

exit 0

Para cargarlo al inicio de sesión, nos crearemos un archivo .desktop en «/etc/xdg/autostart/»

$ nano /etc/xdg/autostart/resolucion.desktop

[Desktop Entry]
Version=1
Type=Application
Name=Resolucion
Exec=/usr/bin/resolucion.sh
Icon=/usr/share/pixmaps/icon.png
Terminal=false
StartupNotify=false
Name[es]=Resolucion

Si queremos añadir nuevas resoluciones:

xrandr --newmode "1280x1024"  60.00  1024 1280 1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
xrandr --addmode $VGA 1280x1024
xrandr --addmode $HDMI 1920x1080
xrandr --output $VGA --mode 1280x1024
xrandr --output $HDMI --mode 1920x1080