Lispelnder Sägefisch

Der Fenstermanager Sawfish

15.06.2011 Ein Urgestein der Fenstermanager ist wieder da: Sawfish verzichtet auf 3D-Schnickschnack und lässt sich dafür bis ins Detail den eigenen Bedürfnissen anpassen.

Um die Jahrtausendwende startete John Harper die Entwicklung eines neuen Fenstermanagers namens Sawmill. Er sollte möglichst leichtgewichtig daherkommen, sich gleichzeitig aber auch flexibel erweitern lassen. Schon waren einige Versionen der Sägemühle erschienen, da tauchte ein Namenskonflikt mit einem kommerzielles Programm auf. Um einem Rechtsstreit aus dem Weg zu gehen, entschied man sich für eine Umbenennung in Sawfish. Auf diesen Sägefisch wurde schließlich auch das Gnome-Projekt aufmerksam, das ihn lange Zeit als Unterbau für den gleichnamigen Desktop nutzte.

Mit Gnome 2.2 musste Sawfish dann aber dem noch heute in der Gnome-2-Serie verwendeten Metacity weichen. Daher stellte der Erfinder John Harper die Betreuung von Sawfish ein. In der Folge dümpelte das Projekt lange vor sich hin, bis sich schließlich 2007 Janek Kozicki und später Christopher Bratusek des verwaisten Klassikers annahmen. Dank vieler weiterer Mitstreiter folgt seitdem in relativ kurzen Abständen eine neue Version nach der anderen. Insbesondere seit dem letzten Jahr hat das Projekt wieder unglaublich an Fahrt aufgenommen.

Nach wie vor bringt Sawfish [1] extrem wenig Gewicht auf die Waagschale, bietet zudem extrem flexible Einstellungsmöglichkeiten und lässt sich dank Themes verschiedene Optiken überstülpen. Der Fenstermanager basiert in weiten Teilen auf einer Skriptsprache, die sich stark an der klassischen Programmiersprache Lisp anlehnt. Das ermöglicht, bei Bedarf alle wichtigen Funktionen schnell auszutauschen oder zu erweitern. Auch lässt sich jede von Sawfish angebotene Funktion mit einer beliebigen Taste oder Tastenkombination verknüpfen beziehungsweise auslösen. Für jedes Ereignis, wie etwa das Verschieben eines Fensters, darf der Benutzer selbst festlegen, was dabei passieren soll.

Woher nehmen?

Gründe gibt es also genug, Sawfish einmal auf dem heimischen PC auszuprobieren. Der Weg dorthin erweist sich derzeit allerdings teilweise noch als recht steinig. Zwar liegt Sawfish vielen Distributionen fix und fertig bei, durch die enorme Entwicklungsgeschwindigkeit schlummern in den Repositories allerdings meist nur angestaubte Pakete.

Dennoch sollten Sie im Zweifelsfall lieber den Paketmanager zücken und zur etwas älteren Repo-Version greifen: Eine manuelle Installation von Sawfish aus den Quellpaketen verursacht reichlich Aufwand – siehe Kasten "Installation per Hand". In den meisten Distributionen genügt es, das Paket sawfish zu installieren und die dabei automatisch ebenfalls ausgewählten Kollegen zu akzeptieren. Unter OpenSuse 11.4 müssen Sie erst noch das Main Repository (Contrib) aus den Community/Gemeinschafts-Repositories aktivieren (in Yast im Bereich Software unter Software-Repositories und Hinzufügen).

Nach dem Einrichten der Software steht Sawfish im Anmeldebildschirm als alternativer Fenstermanager zur Auswahl. Bei Gnomes Anmeldemanager GDM klicken Sie erst auf Ihren Namen an und entscheiden sich dann in der entsprechenden Ausklappliste am unteren Bildschirmrand für Sawfish (Abbildung 1). Bei KDM des KDE-Projekts klicken Sie links unten auf Sitzungsart und wählen dann Sawfish. Dieser Weg über den Anmeldebildschirm bietet gleichzeitig den Vorteil, dass Sie bei Nichtgefallen mit der nächsten Anmeldung wieder zurück zum gewohnten Gnome- oder KDE-Desktop gelangen.

Abbildung 1

Abbildung 1: Bei den meisten Distributionen, die Sawfish in ihren Repositories mitbringen, schaltet man im Anmeldebildschirm bequem auf den alternativen Fenstermanager um.

Taucht Sawfish nicht im Anmeldebildschirm auf (beispielsweise weil Sie ihn selbst übersetzt und installiert haben), wird etwas Handarbeit notwendig. Am schnellsten zum gewünschten Ziel führt die Holzhammermethode, bei der man mit einem Texteditor die Datei ~/.xinitrc anlegt und in ihr folgende Befehle platziert:

xterm&
sawfish

Nach dem Speichern, sowie Ab- und erneuten Anmelden, startet dann automatisch Sawfish. Um ihn wieder loszuwerden, müssen Sie lediglich die oben genannte Datei löschen (im Notfall über ein Rettungssystem). Unter OpenSuse 11.4 kam es in unseren Tests übrigens immer mal wieder zu Problemen: War der KDE-Desktop bei der Installation ausgewählt, stürzte Sawfish immer mal wieder komplett ab, GDM aus Gnome startete Sawfish nicht, sondern kehrte immer wieder direkt zum Anmeldebildschirm zurück.

Installation per Hand

Möchten Sie die neueste Sawfish-Version verwenden, müssen Sie diese in aller Regel aus dem Quellcode übersetzen. Da der Fenstermanager aus drei Einzelteilen besteht, fallen dabei gleich mehrere Handgriffe an.

Zunächst installieren Sie über Ihren Paketmanager den C-Compiler, die Programme make, makeinfo, automake und autoconf, sowie die Entwicklerpakete zu Imlib, GTK+2, GNU DBM, GNU GMP, Libffi und Libreadline. Unter Ubuntu wären das beispielsweise die Pakete make, automake, texinfo, libimlib2-dev, libgtk2.0-dev, libgdm-dev, libgmp3-dev, libffi-dev, libreadline6-dev sowie alle vom Paketmanager zusätzlich noch vorgeschlagenen Abhängigkeiten.

Laden Sie nun von der Sawfish-Homepage [1] aus dem Bereich Download zunächst die aktuelle Version der Bibliothek Librep herunter und entpacken Sie das dabei erhaltene Archiv auf die Festplatte. Laut Installationsanleitung reicht es jetzt eigentlich aus, in einem Terminalfenster in das entstandene Librep-Verzeichnis zu wechseln und dort folgende drei Befehle aufzurufen

./configure
make
sudo make install

Die zu Redaktionsschluss aktuelle Version 0.92.0 erforderte allerdings, das ./configure gegen ./autogen.sh auszutauschen.

Sobald Librep fehlerfrei übersetzt und installiert wurde, angeln Sie sich das Rep-gtk-Archiv von der Sawfish-Homepage, entpacken es auf der Festplatte und übersetzen seinen Inhalt ebenfalls mittels des oben aufgeführten Dreisatzes. Zu guter Letzt wiederholen Sie die Prozedur abschließend noch mit dem Paket sawfish.

Gähnende Leere?

Nach dem Start von Sawfish sehen Sie sehr wahrscheinlich erst einmal nur einen leeren Bildschirm mit einem einsamen Mauszeiger. Das ist kein Bug, sondern ein Feature: Als bewusst einfach gehaltener Fenstermanager kümmert sich Sawfish von Haus aus ausschließlich um das Zeichnen, Vergrößern und Verkleinern von einzelnen Fenstern. Er verzichtet somit auf die zahlreichen Zusatzprogramme, die in kompletten Desktop-Managern beispielsweise ein schickes Startmenü oder Symbole zum An- und Abmelden anbieten.

Klicken Sie jetzt einmal mit der mittleren Maustaste irgendwo auf das Hintergrundbild. Bei einer Zweitastenmaus drücken Sie linke und rechte Maustaste gleichzeitig. Es erscheint das sogenannte Wurzelmenü, über das Sie unter anderem alle installierten und von Sawfish erkannten Programme erreichen (Abbildung 2).

Abbildung 2

Abbildung 2: Das kleine Wurzelmenü fungiert unter Sawfish als zentrale Anlaufstelle, um Programme zu starten und die Einstellungen zu verändern.

Integrationshilfe

Da Sawfish nur die Fenster verwaltet, kann man es mit beliebigen weiteren Zusatzprogrammen aufpeppen. Beispielsweise allen nützlichen Anwendungen aus Gnome oder KDE. Sawfish dient dann unter dem Strich als Ersatz für die dort eigentlich eingesetzten Fenstermanager namens Metacity (Gnome 2) beziehungsweise KWin (KDE).

Um Gnome ab Version 2.24 Sawfish als Fenstermanager unterzuschieben, rufen Sie in einem Terminalfenster gconf-editor auf, öffnen desktop | gnome | session | required_components und ersetzen dort neben windowmanager in der Spalte Wert den vorhandenen Text gegen sawfish (Abbildung 3). Nach einer Neuanmeldung werkelt Sawfish anstelle von Metacity als Fenstermanager. Der Start der Gnome-Komponenten kann dabei ein paar Sekunden dauern.

Bei KDE 4 reicht es aus, die Systemeinstellungen aufzurufen, dort die Standard-Komponenten zu aktivieren, zum Bereich Window Manager zu wechseln, den Punkt Einen anderen Fenstermanager verwenden anzukreuzen und aus der Liste Sawfish zu wählen. Nach einer Neuanmeldung ersetzt Sawfish das ansonsten genutzte KWin. Taucht der Punkt nicht wie erwartet in den Systemeinstellungen auf, müssen Sie zuvor noch den Befehl kde4-config --install data aufrufen, dem ausgespuckten Verzeichnis /ksmserver/windowmanager/ anhängen und in das so entstandene Verzeichnis die im Sawfish-Quellcode-Archiv enthaltene Datei sawfish-ksm.desktop kopieren.

Hat der Distributor bereits eine solche Heirat vorgenommen, ist unter Umständen das Wurzelmenü über die Mitteltaste gesperrt. In diesem Fall erreichen Sie die Sawfish-Einstellungen, indem Sie ein Terminalfenster öffnen, dort sawfish-config eintippen und die Eingabetaste drücken. In älteren Sawfish-Versionen firmierte das Hilfswerkzeug übrigens noch als sawfish-ui.

Mittlerweile ist die Integration in Gnome beziehungsweise KDE nicht mehr ganz unproblematisch – insbesondere dann, wenn der Distributor eigene Änderungen vorgenommen hat, wie beispielsweise Canonical unter Ubuntu. Mit dem modernen Gnome 3 kommt Sawfish überhaupt nicht zurecht.

Weitere nützliche Zusatzwerkzeuge von Drittherstellern, die mit dem kleinen Fenstermanager harmonieren, listet die Sawfish-Homepage etwas versteckt unter [5] auf.

Abbildung 3

Abbildung 3: Durch Bestücken der Einstellung windowmanager mit sawfish schieben Sie Gnome 2 Sawfish als Fenstermanager unter.

Frisiersalon

Über Anpassen | Sawfish-Einstellungen erreichen Sie ein kleines Fenster, das die Grundeinstellungen des Fenstermanagers kompakt zusammenfasst (Abbildung 4). Hier dürfen Sie unter anderem die Optik wechseln und an der Tastaturbelegung schrauben. Ein Doppelklick links in der Baumdarstellung auf den gewünschten Bereich genügt – schon dürfen Sie auf der rechten Seite an den entsprechenden Einstellungen drehen.

Abbildung 4

Abbildung 4: In den Sawfish-Einstellungen tauschen Sie unter anderem die Optik der Fensterrahmen aus.

Um beispielsweise das Aussehen der Fensterrahmen zu verändern, doppelklicken Sie auf Erscheinungsbild und wählen dann über die Ausklappliste Vorgegebener Rahmenstil ein anderes Thema. Sawfish wendet die Auswahl sofort an. Weitere Optiken finden Sie unter anderem im Themes-Bereich auf der Sawfish-Homepage [2]. Von dort laden Sie einfach einen der Tarballs herunter und entpacken diesen in das versteckte Verzeichnis ~/.sawfish/themes. Gegebenenfalls müssen Sie dieses Verzeichnis erst noch anlegen. Nach einem Neustart des Einstellungsfensters steht es dann in der Ausklappliste zur Auswahl.

Das Aktivieren eines Themes schaltet unter Umständen spezielle Einstellungen frei. Sie erreichen diese in der Liste links unterhalb von Aussehen hinter dem Namen des Themes. Besonders viele Stellschrauben bietet hier das mitgelieferte mxflat, das gleichzeitig demonstriert, was Sawfish so alles mit den Fensterrahmen anstellen kann.

So dürfen Sie beispielsweise beliebige Informationen in die Titelleiste packen. Ein Beispiel dafür sehen Sie, wenn Sie unter Sawfish | Aussehen | mxflat | title | basic einen Haken vor customize title string setzen. Die Fenster zeigen dann in ihrer Titelleiste ihre aktuelle Größe, ihre Position auf dem Bildschirm sowie die Nummer des Displays, auf dem sie laufen – und zwar jeweils immer die aktuellen Werte (Abbildung 5).

Abbildung 5

Abbildung 5: Sawfish erlaubt es auch, die Titelleiste mit beliebigen Informationen zu beschriften. Das Theme Mxflat nutzt dies aus und bestückt die Leiste mit den im Eingabefeld title string hinterlassenen Variablen.

Die im Einstellungsfenster angebotenen Animationen bieten nicht ganz das Erwartete: Schicke 3D-Effekte wie die Konkurrenten Compiz oder KWin kennt Sawfish nicht. Bei den hier angebotenen Stellschrauben geht es vielmehr darum, ob die Fenster beim Verschieben nur mit ihrem Rahmen erscheinen sollen. Das sparte zur Jahrtausendwende noch Rechenzeit – heute können Sie die Einstellungen belassen.

Tippse

Interessanter erscheinen da schon die Tastenkombinationen. Um den wenigen Vorgaben eine neue hinzuzufügen, klicken Sie auf den gleichnamigen Knopf und im neuen Fenster auf Erfassen. Dann drücken dann auf der Tastatur die entsprechende Tastenkombination, wie beispielsweise [Strg]+[B]. Übrigens sind Sie hier nicht nur auf die Tastatur beschränkt, sondern dürfen auch einen Mausknopf hinzunehmen. Die gewählte Kombination trägt Sawfish in Form eines Kürzels in das Eingabefeld Taste.

Aus der langen Liste darunter suchen Sie sich dann die passende Aktion aus. Browser etwa ruft den voreingestellten Webbrowser auf. Sobald Sie einen Punkt in der Liste markieren, erscheint eine kurze Beschreibung im unteren Teil, je nach Befehl nebst weiteren Einstellmöglichkeiten. Im Fall des Browseraufrufs übergeben Sie beispielsweise im Feld URL optional eine Internetadresse, die der Browser automatisch aufrufen soll (Abbildung 6).

Abbildung 6

Abbildung 6: Mit diesen Einstellungen ruft die Tastenkombination [Strg]+[B] zukünftig den voreingestellten Browser auf, der direkt die Seiten von Google ansteuert.

TIPP

Welchen Webbrowser Sawfish aktiviert, legen Sie im Bereich Verschiedenes | External Applications fest. Hier definieren Sie auch noch ein paar weitere Standardanwendungen.

Die dann per OK angelegte Tastenkombination gilt grundsätzlich überall, wie die Ausklappliste Zusammenhang am oberen Rand der Liste mit der Einstellung Global verkündet. Wenn Sie eine Tastenkombination nur für eine bestimmte Situation anlegen möchten, müssen Sie diese erst hier auswählen. Dabei gilt die Regel, dass globale Einstellungen speziellere überschreiben.

Stellen Sie hier beispielsweise Maximize button ein und fügen dann ein Tastenkürzel hinzu, das bei einem rechten Mausklick den Browser aufruft, genügt in Zukunft ein Rechtsklick auf die Maximieren-Schaltfläche des Fensterrahmens, um den Internetbrowser zu starten.

Ferngesteuert

Sawfish kann auf bestimmte Ereignisse reagieren und dann anhand vorgegebener Regeln automatisch bestimmte Aktionen ausführen. Auf diese Weise lässt sich beispielsweise ein Browserfenster nach dem Aufruf mit einem individuellen Theme belegen und gleichzeitig auf die Bildschirmgröße aufblasen. Um das zu erreichen, muss einfach nur eine entsprechende Regel her. Diese legen Sie in den Sawfish-Einstellungen im Bereich Windows-Rules fest. Hier fügen Sie über die entsprechende Schaltfläche eine neue Regel hinzu, woraufhin das neue Fenster aus Abbildung 7 erscheint. In ihm klicken Sie die Regel bequem mit der Maus zusammen.

Abbildung 7

Abbildung 7: Mit dieser Regel erhalten alle Fenster mit dem Namen Mozilla Firefox automatisch das Theme Gradient und werden horizontal maximiert.

In den oberen Ausklapplisten teilen Sie Sawfish mit, auf welche (Text-)Muster er achten soll. Im Beispiel soll etwas passieren, sobald ein Fenster mit dem Namen Mozilla Firefox erscheint. Wählen Sie daher in der linken oberen Ausklappliste Name und tippen Sie rechts daneben den Mozilla Firefox ein. Was Sawfish machen soll, wenn es ein Fenster mit diesem Namen entdeckt, legen Sie im unteren Bereich fest. Für das Beispiel finden Sie die relevanten Aktionen auf dem Register Aussehen.

Um dem Browserfenster eine andere Optik zuzuweisen, haken Sie Rahmenstil an und wählen aus der Ausklappliste ein passendes Theme. Darüber hinaus soll das Fenster direkt Maximiert erscheinen. Setzen Sie folglich noch einen Haken vor den gleichnamigen Punkt und entscheiden sich in der Ausklappliste für eine entsprechende Methode.

Sobald Sie die Regel mit OK endgültig angelegt haben und Firefox startet, erscheint sein Fenster im gewünschten Anstrich und in voller Bildschirmgröße.

Blick unter die Haube

Die Regeln und Einstellungen, die Sie im Einstellungsfenster vorgenommen haben, übersetzt das Programm automatisch in passende Befehle der Programmiersprache Lisp, die Sawfish dann direkt ausführt. Gleichzeitig landen die Befehle in der versteckten Datei ~/.sawfish/custom, die der Fenstermanager beim nächsten Start auswertet.

Eigene Lisp-Befehle gehören in die Datei ~/.sawfishrc oder alternativ ~/.sawfish/rc. Die darin geparkten Anweisungen wertet Sawfish ebenfalls beim Start aus. Um das dort hineingehörende, kryptische Gebräu zu verstehen, benötigt man allerdings Lisp-Kenntnisse. Dann lässt sich Sawfish jedoch hemmungslos flexibel an die eigenen Bedürfnisse anpassen und, basierend auf den mitgebrachten Grundfunktionen, um weitere Features erweitern. Es lassen sich sogar bestehende Funktionalitäten durch eigenen Programmcode ersetzen.

Listing 1 zeigt ein ganz kleines Beispiel für eine eigene ~/.sawfishrc-Datei. Zeilen mit einem Semikolon ignoriert Sawfish, sie dienen somit als Kommentare. Die zweite Zeile aktiviert die Chronik-Funktion. Sawfish erinnert sich damit an die Position und Größe der Fenster. Öffnet man sie später erneut, erscheinen Sie genau dort, wo man sie zuletzt geschlossen hatte. Was sich Sawfish genau merken soll, steuern Sie im Systemmenü des Fensters (je nach Theme auch mit einem Rechtsklick auf das Schließen-Symbol zu erreichen) hinter dem Punkt Chronik. Die vierte Zeile legt schließlich noch ein zusätzliches Tastenkürzel fest. Demnach holt ein Druck auf [Strg]+[B] ein Terminalfenster hervor.

Listing 1

; Chronik aktivieren
(require 'sawfish.wm.ext.window-history)
; Tastenkuerzel einrichten
(bind-keys global-keymap "C-b" '(system "xterm &"))

Wer Lisp spricht, findet unter [3] eine umfangreiche Programmierreferenz. Eine ganze Reihe von Beispielskripten gibt es zudem unter [4].

Fazit

Man merkt Sawfish noch an vielen Stellen an, dass es einige Jahre im Dornröschenschlaf lag. Verspielte 3D-Effekte etwa dürfen Sie nicht erwarten, erhalten dafür aber im Gegenzug einen extrem flexiblen Fenstermanager. Das Verhalten und Aussehen der Fenster lässt sich bis ins kleinste Detail individuell anpassen. Dieser Artikel konnte dabei nur einen kleinen Teil der Möglichkeiten vorstellen.

So lassen sich Fenster in Sawfish in ein gemeinsames packen – ein Wechsel erfolgt dann über Registerkarten, ähnlich den Tabs in einem Browser. Natürlich kennt der Fenstermanager auch Arbeitsflächen und Desktops, die größer als der eigentliche Bildschirm sind (Stichwort "Viewport"). Die meisten Änderungen lassen sich bequem über das Fenster für die Sawfish-Einstellungen vornehmen, für umfangreichere Umbaumaßnahmen benötigen Sie allerdings Lisp-Kenntnisse.

Angesichts der übermächtigen Konkurrenz durch KDE, Gnome, XFCE und Konsorten wird Sawfish vermutlich nicht mehr seinen zur Jahrtausendwende erzielten Verbreitungsgrad erreichen. Für programmierfreudige Anwender, die einen kleinen schlanken Desktop suchen, den man schrankenlos den eigenen Bedürfnissen anpassen kann, ist Sawfish jedoch mehr als einen Blick wert. 

Tip a friend    Druckansicht beenden Bookmark and Share
Kommentare