Está en: » Artículos »

Activar/desactivar una salida de vídeo en KDE Plasma 6 Wayland

Activar/desactivar una salida de vídeo en KDE Plasma 6 Wayland

TV

Tengo una TV 4k de 55″ conectada al pc pero no siempre la voy a utilizar como monitor adicional ya que habrá veces que esté apagada y otras reproduciendo por su cuenta de forma independiente (tiene android TV).

La cuestión es que para activarla y desactivar la salida rápidamente en KDE Plasma 6 con wayland, podemos hacer uso de kscreen-doctor

Para empezar, configura las pantallas todas encendidas. Una vez lo tengas, en una consola vamos a ejecutar «kscreen-doctor -o» para que nos muestre la configuración:

miguel@principal:~$ kscreen-doctor -o
Output: 1 DP-1
        enabled
        connected
        priority 1
        DisplayPort
        Modes:  1:1280x800@60!  2:2560x1600@60*  3:1280x720@60
        4:1024x768@60  5:800x600@60  6:640x480@60
        7:1024x768@60  8:1280x720@60 
        Geometry: 1300,2160 2560x1600
        Scale: 1
        Rotation: 1
        Overscan: 0
        Vrr: incapable
        RgbRange: unknown
        HDR: incapable
        Wide Color Gamut: incapable
        ICC profile: none
        Color profile source: EDID
        Brightness control: supported, set to 100%
Output: 2 HDMI-A-1
        enabled
        connected
        priority 3
        HDMI
        Modes:  9:1920x1080@60!  10:4096x2160@60  11:4096x2160@60
        12:4096x2160@50  13:4096x2160@24  14:4096x2160@24
        15:3840x2160@60*  16:3840x2160@60  17:3840x2160@50
        18:3840x2160@30  19:3840x2160@30  20:3840x2160@25
        Geometry: 0,0 3840x2160
        Scale: 1
        Rotation: 1
        Overscan: 0
        Vrr: incapable
        RgbRange: unknown
        HDR: disabled
        Wide Color Gamut: disabled
        ICC profile: none
        Color profile source: sRGB
        Brightness control: supported, set to 84%
Output: 3 DP-3
        enabled
        connected
        priority 2
        DisplayPort
        Modes:  69:1680x1050@60*!  70:1280x1024@60  71:1440x900@60
        72:1280x800@60  73:1280x720@60  74:1024x768@60
        Geometry: 3860,2120 1050x1680
        Scale: 1
        Rotation: 2
        Overscan: 0
        Vrr: incapable
        RgbRange: unknown
        HDR: incapable
        Wide Color Gamut: incapable
        ICC profile: none
        Color profile source: EDID
        Brightness control: supported, set to 100%

Aquí se muestran 3 monitores que tengo conectados (incluyendo la TV).

Para desactivar la TV, bastaría con hacer un «output.SALIDA.disable» de la salida. En mi caso:

kscreen-doctor output.HDMI-A-1.disable

Para volver a activarla no valdría con un simple «output.SALIDA.enable» ya que al desactivarla, plasma automáticamente reorganiza las posiciones partiendo de la 0,0 (ejes x,y) de la pantalla que corresponda y precisamente la 0,0 es la TV así que habría que especificar todas las posiciones tal y como se muestra en la salida:

kscreen-doctor output.HDMI-A-1.enable \
output.HDMI-A-1.mode.3840x2160@60 \
output.HDMI-A-1.position.0,0 \
output.DP-1.position.1300,2160 \
output.DP-3.position.3860,2120

Con esto, activamos la pantalla, establecemos su resolución (si te fijas es la que tiene un asterisco en la salida anterior 15:3840×2160@60*) y establecemos las posiciones de todas las pantallas tal y como se detallan en «Geometry» de cada una.

Podemos añadir cambios en resoluciones o demás parámetros para personalizarlo al gusto. Hay algunos ejemplos en la ayuda:

miguel@principal:~$ kscreen-doctor --help-all
Usage: kscreen-doctor [options] [output.<name>.<setting> output.<name>.setting [...]]
kscreen-doctor allows to change the screen setup from the command-line.

Setting the output configuration is done in an atomic fashion, all settings
are applied in a single command.
kscreen-doctor can be used to enable and disable outputs, to position screens,
change resolution (mode setting), etc.. You should put all your options into 
a single invocation of kscreen-doctor, so they can all be applied at once.

Usage examples:

   Show output information:
   $ kscreen-doctor -o
   Output: 1 eDP-1 enabled connected Panel Modes: Modes: 1:800x600@60 [...] Geometry: 0,0 1280x800
   Output: 70 HDMI-2 enabled connected  HDMI Modes: 1:800x600@60 [...] Geometry: 1280,0 1920x1080

   Disable the hdmi output, enable the laptop panel and set it to a specific mode
   $ kscreen-doctor output.HDMI-2.disable output.eDP-1.mode.1 output.eDP-1.enable

   Position the hdmi monitor on the right of the laptop panel
   $ kscreen-doctor output.HDMI-2.position.1280,0 output.eDP-1.position.0,0

   Set resolution mode
   $ kscreen-doctor output.HDMI-2.mode.1920x1080@60 

   Set scale (note: fractional scaling is only supported on wayland)
   $ kscreen-doctor output.HDMI-2.scale.2 

   Set rotation (possible values: none, left, right, inverted)
   $ kscreen-doctor output.HDMI-2.rotation.left 

   Set HDR mode (possible values: enable, disable)
   $ kscreen-doctor output.HDMI-2.hdr.enable

   Set SDR brightness (possible values: 100-1000)
   $ kscreen-doctor output.HDMI-2.sdr-brightness.300

   Set wide color gamut mode (possible values: enable, disable)
   $ kscreen-doctor output.HDMI-2.wcg.enable

   Set ICC profile path
   $ kscreen-doctor output.HDMI-2.iccprofile."/path/to/profile.icc"


Options:
  -h, --help                           Displays help on commandline options.
  --help-all                           Displays help, including generic Qt
                                       options.
  -i, --info                           Show runtime information: backends,
                                       logging, etc.
  -j, --json                           Show configuration in JSON format
  -o, --outputs                        Show outputs
  -d, --dpms <off>                     Display power management (wayland only)
  -l, --log <comment>                  Write a comment to the log file
  --dpms-excluded <connector>          Do not apply the dpms change to the
                                       output with said model names
  --qmljsdebugger <value>              Activates the QML/JS debugger with a
                                       specified port. The value must be of
                                       format port:1234[,block]. "block" makes
                                       the application wait for a connection.
  --platform <platformName[:options]>  QPA plugin. See QGuiApplication
                                       documentation for available options for
                                       each plugin.
  --platformpluginpath <path>          Path to the platform plugins.
  --platformtheme <theme>              Platform theme.
  --plugin <plugin>                    Additional plugins to load, can be
                                       specified multiple times.
  --qwindowgeometry <geometry>         Window geometry for the main window,
                                       using the X11-syntax, like 100x100+50+50.
  --qwindowicon <icon>                 Default window icon.
  --qwindowtitle <title>               Title of the first window.
  --reverse                            Sets the application's layout direction
                                       to Qt::RightToLeft (debugging helper).
  --session <session>                  Restores the application from an earlier
                                       session.

Arguments:
  config                               Specific output settings are separated
                                       by spaces, each setting is in the form of
                                       output.<name>.<setting>[.<value>]
                                       For example:
                                       $ kscreen-doctor output.HDMI-2.enable \ 
                                                      output.eDP-1.mode.4 \ 
                                                     
                                       output.eDP-1.position.1280,0
                                       Multiple settings are passed in order to                                       have kscreen-doctor apply these settings
                                       in one go.

Para facilitarme las cosas, me he creado un script que lanzo con un simple click con el plasmoid lanzamiento rápido.

El script ~/bin/scripts/toggle-tv-screen.sh:

#!/bin/bash

output=$(kscreen-doctor -o | grep -A 2 "HDMI-A-1")

if echo "$output" | grep -q "enabled" && echo "$output" | grep -q "connected"; then
	kscreen-doctor output.HDMI-A-1.disable
	kdialog --title 'TV Sony desactivada' --icon 'tv' --passivepopup "TV desactivada" 2
else
	kscreen-doctor output.HDMI-A-1.enable output.HDMI-A-1.mode.3840x2160@60 output.HDMI-A-1.position.0,0 output.DP-1.position.1300,2160 output.DP-3.position.3860,2120
	kdialog --title 'TV Sony activa' --icon 'tv' --passivepopup "Activando TV" 2
fi

Básicamente lo que hace es comprobar si la salida HDMI-A-1 está «enabled» y «conected» y en cada caso la desactiva o la vuelve a activar y nos manda una notificación pasiva (no persistente) de 2 segundos.

No olvides dar permisos de ejecución en consola (chmod +x ~/bin/scripts/toggle-tv-screen.sh) o botón derecho, propiedades, permisos y activar «Permitir la ejecución del archivo como programa».

Luego he creado un archivo ~/bin/scripts/toggle-tv-screen..desktop

[Desktop Entry]
Comment[es_ES]=Activa o desactiva la pantalla TV
Comment=Activa o desactiva la pantalla TV
Exec=/home/miguel/bin/scripts/toggle-tv-screen.sh
GenericName[es_ES]=Activa pantalla TV
GenericName=Activa pantalla TV
Icon=tv
MimeType=
Name[es_ES]=activa-tv-screen
Name=enable-tv-screen
StartupNotify=true
Terminal=false

 

Ya sólo queda añadir un plasmoid «Lanzamiento rápido» y arrastrar sobre el el archivo toggle-tv-screen.desktop

Se nos muestra con el icono seleccionado (TV en mi caso) y con un simple click, activamos o desactivamos la salida a TV.

Comentarios

Deje su comentario

Previsualización de comentario
  1. Anónimo dice: