Gibt es eine Möglichkeit, Fenster über eine Verknüpfung von der Windows-Leiste aus zu öffnen?

Gibt es eine Möglichkeit, Fenster über eine Verknüpfung von der Windows-Leiste aus zu öffnen?

Gibt es eine Möglichkeit, Fenster mithilfe einer Tastenkombination über die Fensterleiste zu öffnen? Zum Öffnen des ersten Fensters links drücken Sie beispielsweise Strg+1 und zum Öffnen des zweiten Fensters links Strg+2.

Ich verwende derzeit xfce4, aber wenn dies unter xfce4 nicht möglich ist, gibt es eine andere Desktopumgebung, die dies zulässt?

Da ich mehrere Fenster derselben Anwendung geöffnet habe, suche ich nicht nach Sortierschnitten, die sich auf die Anwendung beziehen, sondern, wie ich weiter unten sage, auf das Fenster.

Antwort1

Mit einem kleinen Skript und einem kleinen Eingriff in Ihr System lässt sich das genau so einrichten, wie Sie es beschreiben.

Zutaten

  1. wmctrl; es muss möglicherweise installiert werden.
  2. Das folgende Skript
  3. xprop, um die Fenstereigenschaften abzurufen. Dies ist bereits auf Ihrem System installiert.
  4. Einstellungsänderungen in den Xfce-Panel-Einstellungen
  5. Zusätzliche Tastaturkürzel

Wie stellt man das ein

  • Installieren wmctrl:

    sudo apt-get install wmctrl
    
  • Erstellen Sie ein Verzeichnis ~/bin( /home/<yourname>/bin). Kopieren Sie das folgende Skript in eine leere Datei, speichern Sie es unter panel_navigate(ohne Erweiterung) in ~/binundausführbar machen.

  • Ändern Sie die Panel-Einstellungen:
    Gehen Sie zu Einstellungen-Manager > "Panel" > "Elemente" (Registerkarte) > "Fenster-Schaltflächen" >

    • "Sortierreihenfolge" > Wählen Sie:Zeitstempel
    • „Fenstergruppierung“ > Auswahl: „Nie“
    • Stellen Sie sicher, dass "Fenster aus allen Arbeitsbereichen oder Ansichtsfenstern anzeigen"unangekreuzt

    Bildbeschreibung hier eingeben

  • Tastaturkürzel hinzufügen:
    Gehen Sie zum Einstellungsmanager > „Tastaturkürzel“ > „Anwendungskürzel“ und wählen Sie „Hinzufügen“. Fügen Sie den Befehl hinzu:

    panel_navigate 1
    

    Stellen Sie es auf die Tastenkombination Ctrl+1

    Bildbeschreibung hier eingeben

  • Nun können Sie wählen:

    • Wiederholen Sie diesen Vorgang, um panel_navigate 2unter Ctrl+ hinzuzufügen 2, und so weiter (bis 9)

    (Option speichern)oder(wenn Sie keine Angst davor haben, Konfigurationsdateien manuell zu bearbeiten):

    • Sie können die Datei bearbeiten:

      ~/.config/xfce4/xfconf/xfce-perchanel-xml/xfce4-keyboard-shortcuts.xml
      

      in der die Tastaturkürzel (in xfce) gespeichert sind. Öffnen Sie die Datei mit mousepadund suchen Sie nach einer Zeile wie:

      <property name="&lt;Primary&gt;1" type="string" value="panel_navigate 1"/>
      

      Kopieren Sie die Zeile, fügen Sie sie in die nächste Zeile ein (Einfügen) und ändern Sie beide Vorkommen von 1 in 2, sodass Sie Folgendes erhalten:

      <property name="&lt;Primary&gt;1" type="string" value="panel_navigate 1"/>
      <property name="&lt;Primary&gt;2" type="string" value="panel_navigate 2"/>
      

    und so weiter..

    Stellen Sie sicher, dass der Einzug genau der gleiche ist. Wiederholen Sie den Vorgang bis 9.

Melden Sie sich ab und wieder an, dann sollte es funktionieren:

Ctrl+1

Bildbeschreibung hier eingeben

Ctrl+3

Bildbeschreibung hier eingeben

Und so weiter...

Das Drehbuch

#!/usr/bin/env python3

import subprocess
import sys

def get_value(command):
    return subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8").strip()

def run_command(command):
    subprocess.Popen(["/bin/bash", "-c", command])

current_workspace = [l for l in get_value("wmctrl -d").splitlines() if l.split(" ")[2] == "*"][0][0]
wlist_ids = [item.split()[0:4] for item in get_value("wmctrl -l").splitlines()]
relevant = [item for item in wlist_ids if item[1] == current_workspace]
panel = []
for item in relevant:
    data = get_value("xprop -id "+item[0])
    if ("_TYPE_NORMAL" in data, "TYPE_DIALOG" in data).count(True) == 1:
        panel.append(item)
try:
    window = panel[int(sys.argv[1])-1][0]
    run_command("wmctrl -ia "+window)
except IndexError:
    pass

Erläuterung

Die Lösung ist opportunistisch. Mir ist aufgefallen, dass die Fensterliste, die mit dem Befehl aufgerufen wird wmcrl -l, nach dem Alter der Fenster sortiert ist. Indem ich das XFCE-Panel dasselbe tun lasse (Einstellungen), stimmen beide Reihenfolgen perfekt überein. Das Skript erstellt eine Fensterliste, filtert die „echten“, sichtbaren Fenster heraus (mit xprop) und wechselt mit dem Befehl zu einem ausgewählten Fenster panel_navigate, wobei die Nummer des Fensters (von links nach rechts) als Argument dient.

Probleme

Mir ist eine Ausnahme aufgefallen: Die IDLE-Fenster (Python-Interpreter) haben die PID 0 und ihre Eigenschaften können nicht von "erforscht" werden xprop. Die Fenster erscheinen nicht in der Fensterliste und werden vom Skript übersprungen.

Notiz

Obwohl die Tastenkombination Ctrl+ <number>beim Testen keine Fehler verursacht hat, kann sie mit einigen Anwendungen in Konflikt geraten. Es kann sicherer sein, (z. B.) Ctrl+ Alt+ zu wählen.1

Antwort2

Nicht sicher, ob es sich um die gleiche Anwendung handelt, aber in Unitykönnen Sie mit zwischen Anwendungen wechseln super+number, wie zum Beispiel super + 1= erstes Element im Launcher, super + 2= zweites Element im Launcher, super + n= n-tes Element im Launcher. Dies hilft auch dabei, jedes im Launcher platzierte Element zu öffnen, z. B. wenn Nautilus das erste Element im Launcher ist, super + 1wird der Nautilus-Dateimanager geöffnet.

verwandte Informationen