Xfce con Kde Plasma 5: ¿Cómo darle foco automáticamente a las ventanas recién creadas?

Xfce con Kde Plasma 5: ¿Cómo darle foco automáticamente a las ventanas recién creadas?

Estoy usando Xfce con Kde Plamsa5 como Administrador de ventanas. Ya no puedo abrir la configuración de la ventana de Xfce, excepto la configuración del sistema de KDE. No encuentro una opción para enfocarme automáticamente en las ventanas recién creadas.

Cuando abro una nueva ventana, el foco permanece en la ventana en la que estaba antes, pero quiero que la nueva ventana se abra y se enfoque automáticamente.

Respuesta1

Es "prevención de robo de foco" en la configuración de la ventana de Kwin. Si está configurado en "medio", las ventanas recién abiertas obtienen el foco automáticamente.

Respuesta2

La solución limpia

No uso plasma, por lo que no puedo investigar la causa del problema. No es necesario explicar que eliminar la causa sería la solución "más limpia".

Si eso parece imposible y desea usar esta combinación, puede usar el vendaje a continuación para que funcione. La solución es un script de fondo extremadamente "ligero", que vigila las ventanas recién creadas y las abre si aparecen.

Cómo utilizar

  1. El guión utilizawmctrl

    sudo apt-get install wmctrl
    
  2. Copie el siguiente script en un archivo vacío y guárdelo comoraise_window.py

  3. Pruébelo desde una terminal con el comando:

    python3 /path/to/raise_window.py
    

    Abra algunas aplicaciones y vea si sus ventanas se abren automáticamente.

  4. Si todo funciona bien, agréguelo a sus aplicaciones de inicio: Tablero > Aplicaciones de inicio > Agregar el comando.

La secuencia de comandos

#!/usr/bin/env python3
import subprocess
import time
import os

get = lambda cmd: subprocess.check_output(cmd).decode("utf-8").strip()
curr_1 = get(["wmctrl", "-l"]).splitlines()

while True:
    try:
        curr_2 = get(["wmctrl", "-l"]).splitlines()
        new = [w for w in curr_2 if not w in curr_1]
        for w in new:
            w = w.split()[0]
            command = "wmctrl -ia "+w
            subprocess.Popen(["/bin/bash", "-c", command])
    except:
        pass
    curr_1 = curr_2
    time.sleep(1)

información relacionada