Encendiendo y apagando pantallas con D-Bus
Tengo un monitor CRT para ver vídeo con buen contraste. Para todo lo demás utilizo monitores LCD, así que no los necesito todos a la vez. Quería alternar el encendido/apagado entre unos y otros por comando.

X11 proporciona xrandr
, pero me encontré con gnome-randr, un script Python con la misma sintaxis pero que emplea D-Bus y por lo tanto funciona también en Wayland.
Guardé gnome-randr.py
como /opt/bin/gnome-randr
, marcándolo como ejecutable y añadiendo /opt/bin
al PATH
.
Podemos listar los monitores ejecutando sin parámetros:
[j@localhost ~]$ gnome-randr
global scale is set; ignoring per monitor scales
max-screen-size: 16384x16384
layout-mode: logical
global-scale-required: yes
supports-mirroring: yes
supports-changing-layout-mode: no
logical monitor 0:
x: 0 y: 0, scale: 1.0, rotation: normal, primary: yes
associated physical monitors:
DP-1 EV2455
logical monitor 1:
x: 1920 y: 0, scale: 1.0, rotation: normal, primary: no
associated physical monitors:
DP-2 EV2455
logical monitor 2:
x: 3840 y: 0, scale: 1.0, rotation: normal, primary: no
associated physical monitors:
HDMI-1 EV2455
DP-1 ENC EV2455 0x03b6f96f
1920x1200 59.95*+ [x1.0+, x2.0]
1920x1080 59.96 60.00 59.94 59.93 [x1.0+, x2.0]
[...]
DP-2 ENC EV2455 0x0418f769
1920x1200 59.95*+ [x1.0+, x2.0]
1920x1080 59.96 60.00 59.94 59.93 [x1.0+, x2.0]
[...]
HDMI-1 ENC EV2455 0x01c245e6
1920x1200 59.95*+ [x1.0+, x2.0]
1920x1080 59.96 60.00 50.00 59.94 59.93 [x1.0+, x2.0]
[...]
HDMI-2 SNY CPD-E220E 4634585
1024x768 85.00+ 150.09 120.07 75.03 70.07 60.00 [x1.0+, x2.0]
1920x1200 59.88 59.95 [x1.0+, x2.0]
[...]
Seleccionamos el monitor con --output
seguido de la interfaz (DP-<numero>, HDMI-<numero>
…), seguido de las opciones (--off
para apagar, --auto
para encender con resolución y frecuencia por defecto). Por ejemplo, en mi caso, para dejar sólo el CRT encendido:
gnome-randr --output HDMI-2 --auto --output DP-1 --off --output DP-2 --off --output HDMI-1 --off
Para mayor comodidad, podemos crear alias en .bashrc
. He llamado al comando anterior solocrt
, y he añadido algunos más:
# User specific aliases and functions
alias solocrt='gnome-randr --output HDMI-2 --auto --output DP-1 --off --output DP-2 --off --output HDMI-1 --off'
alias apagarcrt='gnome-randr --output HDMI-2 --off'
alias apagarlcd='gnome-randr --output DP-1 --off --output DP-2 --off --output HDMI-1 --off'
alias encendercrt='gnome-randr --output HDMI-2 --auto'
alias encenderlcd='gnome-randr --output DP-1 --auto --output DP-2 --auto --output HDMI-1 --auto'
Cargamos los cambios:
[j@localhost ~]$ source ~/.bashrc
Podemos ver otras opciones aparte de las ya mencionadas --off
y --auto
:
gnome-randr --help
Los cambios de gnome-randr
son temporales. Por ejemplo, tras suspender, se recuperarán las configuraciones de /var/lib/gdm/.config/monitors.xml
(antes de logueo) y ~/.config/monitors.xml
(después de logueo). Durante la secuencia de encendido y apagado del ordenador se encienden todos, y no he visto forma de controlarlo.