Yet another tiling extension

Vor einiger Zeit habe ich ja bereits auf Shellshape hingewiesen. Die Kombination aus Gnome-Shell Extension und Mutter-Ersatz bringt echtes Tiling auf den Gnome-Desktop. Zum alltäglichen Einsatz konnte ich mich dann aber doch nicht durchringen: Die starke Unterscheidung der beiden Modi “Tiling” und “Floating” sprach mich nicht sonderlich an und die vielen Tastenkürzel um die jeweiligen Tiles zu vergrößern, zu verkleinern, zu verschieben und zu tauschen fand ich auch nicht übermäßig intuitiv.

Tiling mit gTile

Tiling mit gTile

gTile
Auf der neuen Gnome3-Extension-Seite bin ich dann noch auf gTile gestoßen. Diese Erweiterung erlaubt ebenfalls das überlappungsfreie Anordnen der Fenster – allerdings wird hier das jeweils aktive Fenster durch eine kleine Dialog-Box auf dem Bildschirm angeordnet. Auch ein sehr schöner Ansatz, der etwas einsteigerfreundlicher wirkt, als die Shellshape-Variante.

Mir war aber eher nach einem Ansatz, wie ich ihn unter Ubuntu einmal mit Compiz umgesetzt hatte: Durch Tastenkombinationen wollte ich die Fenster schnell und flexibel beliebigen Ecken des Bildschirms zuweisen können. Durch mehrmaliges Tasten-Drücken – so die Überlegung – würden die Fenster dann in ihrer Ecke verschiedene Größen annehmen. Eine gute Gelegenheit, sich einmal näher mit den Gnome-Shell-Extensions zu befassen.

Ein mit KeyTiling erstelltes Layout

Die verschiedenen Fenster wurden hier bequem mit “KeyTiling” angeordnet.

KeyTiling
Herausgekommen ist dabei “KeyTiling“, eine einfache Gnome-Shell-Erweiterung, die das Arrangieren der Fenster mittels Tastenkombinationen erlaubt. Natürlich sind die damit erreichbaren Layouts letztlich begrenzt; für die meisten Anwendungsfälle sollte es aber genügen. Außerdem unterstützt KeyTiling mehrere Monitore und erlaubt es beispielsweise, ein Fenster schnell auf den nächsten Monitor zu packen und dort nach Wunsch auszurichten.

Die Erweiterung läuft stabil, hat aber noch einen kleinen Pferdefuß: Ich habe bisher nur die Funktion “Main.wm.setKeybindingHandler” gefunden, um globale Tastenkombinationen aus der Erweiterung heraus zu registrieren. Diese Funktion scheint aber auf bestimmte vordefinierte Kombinationen in “/apps/metacity/global_keybindings” beschränkt zu sein. Daher ist es mir bisher nicht gelungen, neue Kombinationen zu registrieren – ich musste bestehende Schlüssel überschreiben, namentlich die Schlüssel “run_command_[1-11]“. Das sollte in der Regel nicht schmerzen, weil benutzerdefinierte Tastenkürzel in Gnome3 diese Schlüssel gar nicht mehr berühren. Dennoch: Bei der Aktivierung der Erweiterung werden die fraglichen Tastenkürzel kurzer Hand überschrieben und auf “KeyTiling” umgebogen.

Außerdem könnten die Fenstergrößen Anlass zur Kritik geben. Momentan nehmen die Fenster in den Ecken wahlweise 1/3, 1/2 oder 2/3 der Bildschirms ein. Eine strikte Aufteilung in Vierteln wäre sicher sinnvoller bezüglich der Kombinationsmöglichkeiten – die resultierende Fenstergröße fand ich aber nicht sonderlich günstig für meinen Bildschirm. Eine Aufteilung in Sechstel würde noch mehr Freiheiten bei der Anordnung der Fenster ermöglichen – dazu müsste der Nutzer aber bis zu 30 Mal eine bestimmte Tastenkombination drücken – nicht gerade erstrebenswert.

Schließlich scheint es in bestimmten Fällen Probleme mit der Positionierung der Fenster zu geben – eventuell ist dies auf Sekundärbildschirme beschränkt, die keine obere Leiste haben, ganz sicher bin ich mir da noch nicht.

Wie auch immer: Dieses kurze und nicht sonderlich unterhaltsame Video zeigt, wie verschiedene Fenster auf dem Desktop angeordnet werden und mittels mehrfacher Tastendrücke unterschiedliche Größen annehmen.

Von echtem Tiling kann, wie ihr seht, keine Rede sein – “KeyTiling” ist eher eine Hilfe, um Fenster nebeneinander anzuordnen.

Die Tastenkombinationen
Zur Zeit sind alle Tastenkombinationen fest im Script eingebaut. Sie können dort aber relativ leicht angepasst werden. Die Belegung stellt sich dabei wie folgt dar:

  • <Control><Alt>KP_1: Fenster unten links anordnen.
  • <Control><Alt>KP_2: Fenster unten anordnen.
  • <Control><Alt>KP_3: Fenster unten rechts anordnen.
  • <Control><Alt>KP_4: Fenster links anordnen.
  • <Control><Alt>KP_5: Fenster auf anfängliche Position und Größe zurück setzen.
  • <Control><Alt>KP_6: Fenster rechts anordnen.
  • <Control><Alt>KP_7: Fenster oben links anordnen.
  • <Control><Alt>KP_8: Fenster oben anordnen.
  • <Control><Alt>KP_9: Fenster oben rechts anordnen.
  • <Control><Alt>KP_0: Zwischen Vollbild- und Normalmodus hin- und herschalten.
  • <Control><Alt>KP_Enter: Fenster auf den nächsten Monitor verschieben.

Wer KeyTiling einmal testen möchte, kann es über Github beziehen. Für Rückmeldungen und Tipps – besonders bzgl. einer besseren Hotkey-Schnittstelle – bedanke ich mich schonmal.

Kommentar schreiben

11 Kommentare.

  1. Hi Daniel,

    schonmal eine geile Sache – ich habe das compiz plugin unter gnome2 immer gerne verwendet. Schön dass das jemand für gnome3 umsetzt.

    Ich benutze das tiling vorallem zum Programmieren um die terminals vernünftig anordnen zu können. Daher hab ich die folgenden Kritikpunkte:
    - Ich würde die Fenster in der ganzen Bildschirmlänge bei druck von 4,5 und 6 anordnen. Denn eigentlich mögchte keiner so kleine Fenster wie sie beim ersten druck angezeigt werden.
    - Bei der jetzigen config bekomme ich es nicht hin ein Fenster in der Mitte über die gesamte Bildschirmlänge gehen zu lassen.

    Das wars eigtl. auch schon ;) Auf jedenfall schonmal ein schöner Ansatz!

    Grüße
    Simon

  2. Hallo,

    danke für die Rückmeldung. Die Tastenzugehörigkeiten und Größen-Reihenfolgen kann man egtl. relativ unkompliziert in der Erweiterung selbst ändern. Ich glaube auch nicht, dass ich da noch eine Konfigurationsmöglichkeit nachschieben werde – der Aufwand lohnt mMn nicht.

    Was den zweiten Punkt angeht: Da hast du Recht, vermutlich wird “initial position” auf die KP_0 wandern, KP_5 wird für die mittlere Anordnung zuständig sein und eine neuen Tasten-Kombi kümmert sich um den Vollbild-Switch. Guter Hinweis!

    lG

    dsn

  3. kartoffelsalat

    Hallo,
    ich mag diese Erweiterung durchaus. Einen Bug habe ich aber gefunden (den gTile auch hat). Wenn man ein Fenster mit der Maus rechts oder links auf die Hälfte des Bildschirms zieht, kann man es auch nur mit der Maus wieder in eine andere Größe bekommen.
    Desweiteren würde ich gerne die Größen ändern – du sagtest, dass das relativ leicht in der Erweiterung geht, ich verstehe aber nicht, welche Zahl wofür steht – eine kleine Dokumentation dazu wäre super.
    Außerdem würde ich die Erweiterung auch gerne auf meinem Laptop nutzen, der hat nur leider kein Numpad – wie kann ich z.b. das Rechteck L-9-ß-Ä einstellen, ich habe es nicht hingekriegt.
    Denkst Du im Übrigen darüber nach, die Erweiterung auf die offizielle Extensions-Homepage zu stellen?
    GRuß, kartoffelsalat

  4. Hallo,

    stimmt, der Fehler mit den “halbierten” Fenstern an der Seite, war mir bisher gar nicht aufgefallen. Wüsste jetzt so spontan auch nicht, welches Attribut da gesetzt wird…

    Die Zahlen (const V_STEPS_TOP = new Array(5, 2.5, 1.6666, 1.25); const V_STEPS_MIDDLE = new Array(5, 1.6666, 1);) sind gewissermaßen Divisoren der Bildschirmhöhe. Fenster am Rand (oben oder unten) haben also 4 verschiedene Höhen: h/5, h/2.5, h/1.666 und h/1.25). Befindet sich das Fenster in der Mitte (also links-mitte, mitte oder rechts-mitte), hat es drei Größen: h/5, h/1.666 und h/1 (also die volle Bildschirmhöhe).

    Bei der Wahl der Divisoren muss man auf sinnvolle Werte achten – sonst lassen sich die Fenster nicht vernünftig anordnen.

    Eigene Tasten kannst du in der Funktion enable() definieren. Dort habe ich zur Zeit eine Schleife, die die numerischen Kürzel schnell setzen kann. Für deinen Zweck kannst du ja Einzelaufrufe nehmen:

    client.set_string(APPS_KEY+”run_command_1″, “l” );
    client.set_string(APPS_KEY+”run_command_2″, “ö” );
    .
    .
    .
    client.set_string(APPS_KEY+”run_command_7″, “9″ );
    client.set_string(APPS_KEY+”run_command_9″, “ß” );

    Ich weiß aber nicht, ob die Tastenkürzel so korrekt sind, kann gut sein, dass es statt “ö” und “ß” andere Namen für diese Tasten gibt.

    Auf die offizielle GNOME-Extensions-Seite wollte ich die Erweiterung schon einstellen, sie wird dort aber nicht akzeptiert, weil ich ungefragt Tastenkürzel setze bzw. überschreibe. Da die GNOME-Shell-API meines Erachtens keine andere vernünftige Art zulässt, Tastenkürzel global zu definieren, sehe ich aber keine Möglichkeit, diesen Kritikpunkt abzustellen, ohne größeren Aufwand zu betreiben. Wenn es in den kommenden Versionen also keine gescheite Schnittstelle gibt, Tastenkürzel gescheit zu registrieren, wird es diese Extension also nicht auf der offiziellen Seite geben. *gnarfmurmel*

    Vielen Dank für deine Rückmeldung!

  5. Erweiterungen für die Gnome-Shell | danielnoegel.de - pingback on 16. Februar 2012 um 09:15
  6. Ich würde jetzt gerne Flattrn können dafür. Das fehlen von Compiz Grid ist bzw. war für mich ein essentieller Grund, nicht auf Gnome3 upzudaten.

    Vielen Dank!

  7. Link-Ecke #52 | campino2k - pingback on 17. Februar 2012 um 12:39
  8. Oscar alias xpenguin

    Das ist doch nicht euer Ernst, oder etwa doch? Solch ein Heiden-Aufwand, mit dem ein Ein- oder Umsteiger ohnehin völlig überfordert wäre, um dieses Pseudo-GNOME nicht einmal halb so konfigurabel hinzubekommen wie das echte GNOME? Und dann gehört ihr wahrscheinlich zu denen, die dann bloggen, GNOME 2 sei angeblich veraltet… Ach ja, wie “schön” und “modern” und “fortschrittlich” die merkwürdigen Erfinungen der Linux-Gurus doch sein können…
    Gruß von Oscar, dem Realisten xtremetux@gmx.de

  9. Mit deiner Erlaubnis werde ich das System, das ich benutze und mit dem ich gut klar komme (GNOME3) auch weiterhin durch Spielereien ergänzen, die vielleicht nicht unbedingt massenmarkttauglich sind, mir meinen individuellen Arbeitsalltag aber erleichtern.

    Ich weiß gar nicht, was dieses Schimpfen auf “echtes”, “pseudo” oder “gutes” Gnome soll. Wenn es dir nicht gefällt, nutze es doch einfach nicht? Hinzu kommt, dass du in der Sache auch einfach Unrecht hast, da Compiz (mit seiner Tiling-Erweiterung) ja nun eben nicht integraler Bestandteil von GNOME2 ist und so gesehen auch irgendwann eine Spielerei war, die irgendwer sich mal geleistet hat. Mit deiner Logik müsstest du GNOME3 doch eher loben, weil sowas wie die Compiz-Tiling-Funktion nun möglich ist, ohne aufgeblähte, schwer zu erlernende Zusatzsoftware zu installieren? Eine schmale Erweiterung – das war es… :)

  10. 12.04 ist da. | campino2k - pingback on 27. September 2012 um 21:22

Kommentar schreiben


Hinweis - Du kannst dies benutzenHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Trackbacks und Pingbacks: