Gibt es eine Möglichkeit, Tastenkombinationen für bestimmte geöffnete Fenster in Gnome festzulegen?

8

Ich benutze Ubuntu 10.10 und habe immer Windows geöffnet:

Browser, Konsole, Vim und Skype. Ich möchte bestimmte Tastenkombinationen für diese Fenster festlegen. Gibt es eine Möglichkeit zum Beispiel:

Win-C = Google Chrome
Win-T = terminal
Win-S = Skype

Ich möchte Hotkeys verwenden, um zwischen diesen Fenstern zu wechseln.

RusAlex
quelle
nicht, dass Sie in der Einheit die meisten Win + [irgendetwas] -Kombinationen nicht verwenden können, da sie mehrere davon stehlen (z. B. Win + t, Papierkorb öffnen) und es keine Möglichkeit gibt, dies zu überschreiben oder zu ändern. berichtet über diesen Fehler, der keine Liebe hat bugs.launchpad.net/unity/+bug/823142
gcb

Antworten:

7

Dies ist mit einem Python-Skript möglich. Für das Skript müssen python-wnck und python-gtk installiert sein, damit es funktioniert, obwohl ich denke, dass diese sowieso standardmäßig installiert sind.

Kopieren Sie diese und fügen Sie sie in einen Texteditor ein und speichern Sie sie an einem sinnvollen Ort (z. B. switch.py ​​in Ihrem Home-Ordner):

#!/usr/bin/env python2
import wnck
import gtk
import sys
import time

screen = wnck.screen_get_default()

while gtk.events_pending():
    gtk.main_iteration()

windows = screen.get_windows()

for w in windows:
    if len(sys.argv) > 1:
        if w.get_application().get_name() == sys.argv[1]:
            w.activate(int(time.time()+1))
            break
    else:
        print("Application name of window with title " + repr(w.get_name()) + " is " + repr(w.get_application().get_name()))

Sie können die Tastenkombination dann einrichten, indem Sie Tastaturkürzel öffnen (System-> Einstellungen-> Tastaturkürzel).

Klicken Sie auf Hinzufügen, um eine neue Verknüpfung zu erstellen.

Geben Sie hier die Bildbeschreibung ein

Verwenden Sie den Befehl bash -c 'python ~/switch.py Terminal'(dies setzt voraus, dass Sie ihn als switch.py ​​in Ihrem Home-Ordner gespeichert haben). Ersetzen Sie 'Terminal' durch den Anwendungsnamen des Fensters, zu dem Sie wechseln möchten. Führen Sie python ~/switch.pyin einem Terminal die Anwendungsnamen der aktuell geöffneten Fenster aus .

Geben Sie hier die Bildbeschreibung ein

Sie können dieser Aktion dann Ihre bevorzugte Tastaturkombination zuweisen.

dv3500ea
quelle
Wie kann ich einen Fensternamen für GVIM ermitteln? Ich habe Verknüpfungen mit Ihrem Skript für mein Chrome und Terminal eingerichtet, aber ich kann es nicht für GVIM einrichten.
RusAlex
Ich verstehe es als "Vim". (Laufen python ~/switch.pysollte Ihnen eine Liste mit so etwas wie geben Application name of window with title '[No Name] - GVIM' is 'Vim')
dv3500ea
funktioniert bei mir nicht Vielleicht haben Sie ein Skript, um einen Fensternamen zu bestimmen? =)
RusAlex
1
Wenn Sie python ~/switch.pyohne Argumente ausführen , werden alle Fenster aufgelistet und der Titel und der Anwendungsname werden angezeigt.
dv3500ea
Wow das ist gut. Aber es scheint, dass das Skript nur ein Fenster zeigt und es nicht fokussiert. Vielleicht können einige Skriptänderungen helfen?
RusAlex
4

Wenn Sie ein vorhandenes Paket bevorzugen, gibt es wmctrl, das viele verschiedene Fenstermanager unterstützt:

Das Tool bietet Befehlszeilenzugriff auf fast alle in der EWMH-Spezifikation definierten Funktionen. Es kann zum Beispiel verwendet werden, um Informationen über den Fenstermanager abzurufen, eine detaillierte Liste von Desktops und verwalteten Fenstern abzurufen, Desktops zu wechseln und deren Größe zu ändern, Fenster im Vollbildmodus, immer über oder klebrig zu machen und zu aktivieren, Schließen, Verschieben, Ändern der Größe, Maximieren und Minimieren.

Es installieren:

sudo apt-get install wmctrl

Vorhandene Fenster auflisten:

wmctrl -l

Und Karte:

wmctrl -a <WIN>

zu einer Tastenkombination.

ooi
quelle
3

Dies ist in Kubuntu (kwin) möglich ... Klicken Sie auf die Titelleiste einer Anwendung und wählen Sie "Erweitert-> Fensterverknüpfung". Ich weiß, dass Ihre Frage nicht genau beantwortet wird - ich bin gespannt, ob Gnome / Unity dies auch kann.

user20304
quelle
Ja, es scheint, als wäre es nur in
KDE
0

Die folgende Anpassung des Codes von @ dv3500ea hat bei mir funktioniert, einschließlich der Einstellung des Fokus:

#!/usr/bin/env python2
import wnck
import gtk
import sys
import time

screen = wnck.screen_get_default()

while gtk.events_pending():
    gtk.main_iteration()

windows = screen.get_windows()

for w in windows:
    if len(sys.argv) > 1:
        if w.get_application().get_name() == sys.argv[1]:
            w.activate(gtk.gdk.x11_get_server_time(gtk.gdk.get_default_root_window()))
            break
    else:
        print("Application name of window with title " + repr(w.get_name()) + " is " + repr(w.get_application().get_name()))
Michael Palm
quelle