Xfce mit Kde Plasma 5: Wie kann man neu erstellten Fenstern automatisch den Fokus geben?

Xfce mit Kde Plasma 5: Wie kann man neu erstellten Fenstern automatisch den Fokus geben?

Ich verwende Xfce mit Kde Plamsa5 als Fenstermanager. Ich kann die Xfce-Fenstereinstellungen nicht mehr öffnen, dafür aber die KDE-Systemeinstellungen. Ich kann keine Option finden, um automatisch auf neu erstellte Fenster zu fokussieren.

Wenn ich ein neues Fenster öffne, bleibt der Fokus auf dem vorherigen Fenster, aber ich möchte, dass das neue Fenster automatisch angehoben und fokussiert wird.

Antwort1

Es handelt sich um die „Fokus-Diebstahl-Verhinderung“ in den Kwin-Fenstereinstellungen. Wenn sie auf „mittel“ eingestellt ist, erhalten neu geöffnete Fenster automatisch den Fokus.

Antwort2

Die saubere Lösung

Ich verwende kein Plasma und kann daher nicht herausfinden, was das Problem verursacht. Es muss nicht erklärt werden, dass die Beseitigung der Ursache die „sauberste“ Lösung wäre.

Wenn das unmöglich erscheint und Sie diese Kombination verwenden möchten, können Sie jedoch das unten stehende Pflaster verwenden, damit es funktioniert. Die Lösung ist ein extrem „leichtes“ Hintergrundskript, das neu erstellte Fenster im Auge behält und sie öffnet, wenn sie erscheinen.

Wie benutzt man

  1. Das Skript verwendetwmctrl

    sudo apt-get install wmctrl
    
  2. Kopieren Sie das folgende Skript in eine leere Datei und speichern Sie es unterraise_window.py

  3. Testen Sie es von einem Terminal mit dem folgenden Befehl:

    python3 /path/to/raise_window.py
    

    Öffnen Sie einige Anwendungen und prüfen Sie, ob deren Fenster automatisch geöffnet werden.

  4. Wenn alles einwandfrei funktioniert, fügen Sie es zu Ihren Startanwendungen hinzu: Dash > Startanwendungen > Befehl hinzufügen.

Das Drehbuch

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

verwandte Informationen