Xfce com Kde Plasma 5: Como dar foco automaticamente às janelas recém-criadas?

Xfce com Kde Plasma 5: Como dar foco automaticamente às janelas recém-criadas?

Estou usando o Xfce com Kde Plamsa5 como gerenciador de janelas. Não consigo mais abrir as configurações da janela do Xfce, mas sim as configurações do sistema do KDE. Não consigo encontrar uma opção para focar automaticamente nas janelas recém-criadas.

Quando abro uma nova janela, o foco permanece na janela em que estava antes, mas quero que a nova janela seja levantada e focada automaticamente.

Responder1

É "prevenção contra roubo de foco" nas configurações da janela Kwin. Se estiver definido como “médio”, as janelas recém-abertas recebem o foco automaticamente.

Responder2

A solução limpa

Eu não uso plasma, então não posso investigar a causa do problema. Não há necessidade de explicar que eliminar a causa seria a solução “mais limpa”.

Se isso parece impossível e você deseja usar essa combinação, você pode usar o curativo abaixo para fazer funcionar. A solução é um script de fundo extremamente “leve”, ficando de olho nas janelas recém-criadas, elevando-as caso apareçam.

Como usar

  1. O roteiro usawmctrl

    sudo apt-get install wmctrl
    
  2. Copie o script abaixo em um arquivo vazio e salve-o comoraise_window.py

  3. Faça um teste e execute-o em um terminal pelo comando:

    python3 /path/to/raise_window.py
    

    Abra alguns aplicativos e veja se suas janelas são levantadas automaticamente.

  4. Se tudo funcionar bem, adicione-o aos seus aplicativos de inicialização: Dash > Aplicativos de inicialização > Adicione o comando.

O roteiro

#!/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)

informação relacionada