Sawfish: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „<h1 id="firstHeading" class="firstHeading">Sawfish</h1> <h2><span class="editsection"></span> <span class="mw-headline"> Einführung </span></h2> Sawfish ist ein…“)
 
(Syntax bereinigt -.-)
Zeile 1: Zeile 1:
<h1 id="firstHeading" class="firstHeading">Sawfish</h1>
+
== Einführung ==
<h2><span class="editsection"></span> <span class="mw-headline"> Einführung </span></h2>
 
  
 
Sawfish ist ein weitgehend anpassbarer Fenstermanager. In früheren Gnome-Versionen war er mal der Standard-Fenstermanager, wurde aber aufgrund des Rückzugs eines wichtigen Betreuers des Projekts, und weil damit seine Zukunft ungewiss war, abgelöst. Inzwischen wird Sawfish aber wieder betreut. Hier soll es aber nur um die Benutzung als eigenständigen Fenstermanager gehen.
 
Sawfish ist ein weitgehend anpassbarer Fenstermanager. In früheren Gnome-Versionen war er mal der Standard-Fenstermanager, wurde aber aufgrund des Rückzugs eines wichtigen Betreuers des Projekts, und weil damit seine Zukunft ungewiss war, abgelöst. Inzwischen wird Sawfish aber wieder betreut. Hier soll es aber nur um die Benutzung als eigenständigen Fenstermanager gehen.
<h2>Installation</h2>
+
== Installation ==
Sawfish gibt es im [extra]-Repositorium. Man kann ihn also einfach mit
+
Sawfish ist im [extra]-Repositorium enthalten. Man kann ihn also einfach mit
<pre>
+
# pacman -S sawfish
# pacman -S sawfish
 
</pre>
 
 
installieren.
 
installieren.
<h2>Sawfish starten</h2>
+
== Sawfish starten ==
Wenn man X mittels '''startx''' startet, schreibt man  
+
Wenn X mittels '''startx''' gestartet wird, schreibt man  
<pre>
+
exec sawfish
exec sawfish
 
</pre>
 
 
an das Ende der <code>~/.xinitrc</code>. Bei Benutzung von Displaymanagern verfahre man ...
 
an das Ende der <code>~/.xinitrc</code>. Bei Benutzung von Displaymanagern verfahre man ...
  
<h2>Anpassung</h2>
+
== Anpassung ==
 
Zum Einen bringt Sawfish ein Menü mit, und darin einen Unterpunkt '''Anpassen'''. Das Menü erhält man durch Klick mit der mittleren Maustaste  auf den Hintergrund. Änderungen, die man über dieses Menü macht, landen in der Datei <code>~/.sawfish/custom</code>.
 
Zum Einen bringt Sawfish ein Menü mit, und darin einen Unterpunkt '''Anpassen'''. Das Menü erhält man durch Klick mit der mittleren Maustaste  auf den Hintergrund. Änderungen, die man über dieses Menü macht, landen in der Datei <code>~/.sawfish/custom</code>.
  
<h3>Themes</h3>
+
=== Themes ===
 
Themes kann man im eingedeutschten Sawfish mit Hilfe des Unterpunktes '''Aussehen''' im Menü '''Anpassen''' ändern. Reichen die mitgelieferten Themes nicht aus, kann man [http://sawfish.wikia.com/wiki/Themes auf der Sawfish-Wiki-Seite] weitere bekommen.
 
Themes kann man im eingedeutschten Sawfish mit Hilfe des Unterpunktes '''Aussehen''' im Menü '''Anpassen''' ändern. Reichen die mitgelieferten Themes nicht aus, kann man [http://sawfish.wikia.com/wiki/Themes auf der Sawfish-Wiki-Seite] weitere bekommen.
 
   
 
   
<h3>Lisp-Code</h3>
+
=== Lisp-Code ===
 
Zum Anderen kann man im gegebenenfalls anzulegenden Verzeichnis <code>~/.sawfish/lisp</code> auch eigene oder heruntergeladene Lisp-Dateien ablegen, die dann über die Datei <code>~/.sawfishrc</code> oder <code>~/.sawfish/rc</code> einbinden kann.
 
Zum Anderen kann man im gegebenenfalls anzulegenden Verzeichnis <code>~/.sawfish/lisp</code> auch eigene oder heruntergeladene Lisp-Dateien ablegen, die dann über die Datei <code>~/.sawfishrc</code> oder <code>~/.sawfish/rc</code> einbinden kann.
  
Als Beispiel soll hier die automatische Erstellung eines Menüs aufgezeigt werden. Die Anregung stammt aus dem englischsprachigen Archlinux-Wiki. Da Archlinux von Haus aus keinen Menügenerator für Sawfish bietet, muss man sich behelfen, z.B. mit dem von xfce4.
+
Als Beispiel soll hier die automatische Erstellung eines Menüs aufgezeigt werden. Die Anregung stammt aus dem englischsprachigen Arch Linux-Wiki. Da Arch Linux von Haus aus keinen Menügenerator für Sawfish bietet, muss man sich behelfen, z.B. mit dem von xfce4.
  
 
Dazu sind die folgenden Schritte notwendig:
 
Dazu sind die folgenden Schritte notwendig:
 
* Falls nicht schon geschehen, das Verzeichnis <code>~/.sawfish/lisp/</code> anlegen.
 
* Falls nicht schon geschehen, das Verzeichnis <code>~/.sawfish/lisp/</code> anlegen.
 
*  Folgende Pakete installieren:
 
*  Folgende Pakete installieren:
<pre>
+
pacman -S libxslt archlinux-xdg-menu
pacman -S libxslt archlinux-xdg-menu
 
</pre>
 
 
* Die xml-Vorlage '''xfce4-menu-to-sawfish.xslt''' (siehe unten) unter diesem Namen abspeichern.
 
* Die xml-Vorlage '''xfce4-menu-to-sawfish.xslt''' (siehe unten) unter diesem Namen abspeichern.
  
<pre>
+
xdg_menu --format xfce4 --root-menu /etc/xdg/menus/arch-applications.menu | xsltproc \
xdg_menu --format xfce4 --root-menu /etc/xdg/menus/arch-applications.menu | xsltproc \
+
xfce4-menu-to-sawfish.xslt - > ~/.sawfish/lisp/arch-menu.jl
xfce4-menu-to-sawfish.xslt - > ~/.sawfish/lisp/arch-menu.jl
+
ausführen.  
</pre> ausführen.  
 
 
Dabei sollte eine Datei <code>~/.sawfish/lisp/arch-menu.jl</code> entstehen.  
 
Dabei sollte eine Datei <code>~/.sawfish/lisp/arch-menu.jl</code> entstehen.  
  
 
* Diese ist jetzt noch einzubinden, indem man die Datei <code>~/.sawfishrc</code> anlegt und folgendes hineinschreibt:
 
* Diese ist jetzt noch einzubinden, indem man die Datei <code>~/.sawfishrc</code> anlegt und folgendes hineinschreibt:
<pre>
+
;;; sawfish configuration file
;;; sawfish configuration file
+
; 1. Load defaults
; 1. Load defaults
+
(require 'sawfish-defaults)
(require 'sawfish-defaults)
+
; 2. Load autogenerated arch-menu
; 2. Load autogenerated arch-menu
+
(require 'arch-menu)
(require 'arch-menu)
+
; 3. Replace Sawfish's apps-menu with ours
; 3. Replace Sawfish's apps-menu with ours
+
(setq apps-menu arch-menu)
(setq apps-menu arch-menu)
 
</pre>
 
 
* Sawfish neu starten
 
* Sawfish neu starten
  
 
'''xfce4-menu-to-sawfish.xslt'''
 
'''xfce4-menu-to-sawfish.xslt'''
  
<pre><nowiki>
+
<?xml version="1.0" encoding="UTF-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
+
<xsl:stylesheet version="1.0"
<xsl:stylesheet version="1.0"
+
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
  <xsl:output method="text"/>
  <xsl:output method="text"/>
+
  <xsl:strip-space elements="*"/>
  <xsl:strip-space elements="*"/>
+
  <xsl:param name="terminal">urxvt</xsl:param>
  <xsl:param name="terminal">urxvt</xsl:param>
+
  <xsl:template name="indent">
  <xsl:template name="indent">
+
    <xsl:text>
    <xsl:text>
+
</xsl:text>
</xsl:text>
+
    <xsl:for-each select="ancestor-or-self::*">
    <xsl:for-each select="ancestor-or-self::*">
+
      <xsl:text>  </xsl:text>
      <xsl:text>  </xsl:text>
+
    </xsl:for-each>
    </xsl:for-each>
+
  </xsl:template>
  </xsl:template>
+
  <xsl:template match="/">
  <xsl:template match="/">
+
    <xsl:text>;;; Arch applications menu for Sawfish, generated from xfce4 menu
    <xsl:text>;;; Arch applications menu for Sawfish, generated from xfce4 menu
+
(defvar arch-menu nil)
(defvar arch-menu nil)
+
(setq arch-menu '(</xsl:text>
(setq arch-menu '(</xsl:text>
+
    <xsl:apply-templates/>
    <xsl:apply-templates/>
+
    <xsl:text>))
    <xsl:text>))
+
</xsl:text>
</xsl:text>
+
  </xsl:template>
  </xsl:template>
+
  <xsl:template match="menu[.//app]">
  <xsl:template match="menu[.//app]">
+
    <xsl:call-template name="indent"/>
    <xsl:call-template name="indent"/>
+
    <xsl:text>("</xsl:text>
    <xsl:text>("</xsl:text>
+
    <xsl:value-of select="@name"/>
    <xsl:value-of select="@name"/>
+
    <xsl:text>"</xsl:text>
    <xsl:text>"</xsl:text>
+
    <xsl:apply-templates/>
    <xsl:apply-templates/>
+
    <xsl:text>)</xsl:text>
    <xsl:text>)</xsl:text>
+
  </xsl:template>
  </xsl:template>
+
  <xsl:template match="app">
  <xsl:template match="app">
+
    <xsl:call-template name="indent"/>
    <xsl:call-template name="indent"/>
+
    <xsl:text>(&quot;</xsl:text>
    <xsl:text>(&quot;</xsl:text>
+
    <xsl:value-of select="@name"/>
    <xsl:value-of select="@name"/>
+
    <xsl:text>&quot; (system &quot;</xsl:text>
    <xsl:text>&quot; (system &quot;</xsl:text>
+
    <xsl:if test="@term='true'">
    <xsl:if test="@term='true'">
+
      <xsl:copy-of select="$terminal"/>
      <xsl:copy-of select="$terminal"/>
+
      <xsl:text> -e </xsl:text>
      <xsl:text> -e </xsl:text>
+
    </xsl:if>
    </xsl:if>
+
    <xsl:value-of select="@cmd"/>     
    <xsl:value-of select="@cmd"/>     
+
    <xsl:text> &amp;&quot;))</xsl:text>
    <xsl:text> &amp;&quot;))</xsl:text>
+
  </xsl:template>
  </xsl:template>
+
</xsl:stylesheet>
</xsl:stylesheet>
 
</nowiki></pre>
 
  
 
'''Achtung: xml-Code wird im Wiki nicht korrekt dargestellt. Lass euch den Quellcode anzeigen und kopieret diesen.'''
 
'''Achtung: xml-Code wird im Wiki nicht korrekt dargestellt. Lass euch den Quellcode anzeigen und kopieret diesen.'''

Version vom 20. August 2009, 21:09 Uhr

Einführung

Sawfish ist ein weitgehend anpassbarer Fenstermanager. In früheren Gnome-Versionen war er mal der Standard-Fenstermanager, wurde aber aufgrund des Rückzugs eines wichtigen Betreuers des Projekts, und weil damit seine Zukunft ungewiss war, abgelöst. Inzwischen wird Sawfish aber wieder betreut. Hier soll es aber nur um die Benutzung als eigenständigen Fenstermanager gehen.

Installation

Sawfish ist im [extra]-Repositorium enthalten. Man kann ihn also einfach mit

# pacman -S sawfish

installieren.

Sawfish starten

Wenn X mittels startx gestartet wird, schreibt man

exec sawfish

an das Ende der ~/.xinitrc. Bei Benutzung von Displaymanagern verfahre man ...

Anpassung

Zum Einen bringt Sawfish ein Menü mit, und darin einen Unterpunkt Anpassen. Das Menü erhält man durch Klick mit der mittleren Maustaste auf den Hintergrund. Änderungen, die man über dieses Menü macht, landen in der Datei ~/.sawfish/custom.

Themes

Themes kann man im eingedeutschten Sawfish mit Hilfe des Unterpunktes Aussehen im Menü Anpassen ändern. Reichen die mitgelieferten Themes nicht aus, kann man auf der Sawfish-Wiki-Seite weitere bekommen.

Lisp-Code

Zum Anderen kann man im gegebenenfalls anzulegenden Verzeichnis ~/.sawfish/lisp auch eigene oder heruntergeladene Lisp-Dateien ablegen, die dann über die Datei ~/.sawfishrc oder ~/.sawfish/rc einbinden kann.

Als Beispiel soll hier die automatische Erstellung eines Menüs aufgezeigt werden. Die Anregung stammt aus dem englischsprachigen Arch Linux-Wiki. Da Arch Linux von Haus aus keinen Menügenerator für Sawfish bietet, muss man sich behelfen, z.B. mit dem von xfce4.

Dazu sind die folgenden Schritte notwendig:

  • Falls nicht schon geschehen, das Verzeichnis ~/.sawfish/lisp/ anlegen.
  • Folgende Pakete installieren:
pacman -S libxslt archlinux-xdg-menu
  • Die xml-Vorlage xfce4-menu-to-sawfish.xslt (siehe unten) unter diesem Namen abspeichern.
xdg_menu --format xfce4 --root-menu /etc/xdg/menus/arch-applications.menu | xsltproc \
xfce4-menu-to-sawfish.xslt - > ~/.sawfish/lisp/arch-menu.jl

ausführen. Dabei sollte eine Datei ~/.sawfish/lisp/arch-menu.jl entstehen.

  • Diese ist jetzt noch einzubinden, indem man die Datei ~/.sawfishrc anlegt und folgendes hineinschreibt:
;;; sawfish configuration file
; 1. Load defaults
(require 'sawfish-defaults)
; 2. Load autogenerated arch-menu
(require 'arch-menu)
; 3. Replace Sawfish's apps-menu with ours
(setq apps-menu arch-menu)
  • Sawfish neu starten

xfce4-menu-to-sawfish.xslt

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text"/>
  <xsl:strip-space elements="*"/>
  <xsl:param name="terminal">urxvt</xsl:param>
  <xsl:template name="indent">
    <xsl:text>
</xsl:text>
    <xsl:for-each select="ancestor-or-self::*">
      <xsl:text>  </xsl:text>
    </xsl:for-each>
  </xsl:template>
  <xsl:template match="/">
    <xsl:text>;;; Arch applications menu for Sawfish, generated from xfce4 menu
(defvar arch-menu nil)
(setq arch-menu '(</xsl:text>
    <xsl:apply-templates/>
    <xsl:text>))
</xsl:text>
  </xsl:template>
  <xsl:template match="menu[.//app]">
    <xsl:call-template name="indent"/>
    <xsl:text>("</xsl:text>
    <xsl:value-of select="@name"/>
    <xsl:text>"</xsl:text>
    <xsl:apply-templates/>
    <xsl:text>)</xsl:text>
  </xsl:template>
  <xsl:template match="app">
    <xsl:call-template name="indent"/>
    <xsl:text>("</xsl:text>
    <xsl:value-of select="@name"/>
    <xsl:text>" (system "</xsl:text>
    <xsl:if test="@term='true'">
      <xsl:copy-of select="$terminal"/>
      <xsl:text> -e </xsl:text>
    </xsl:if>
    <xsl:value-of select="@cmd"/>    
    <xsl:text> &"))</xsl:text>
  </xsl:template>
</xsl:stylesheet>

Achtung: xml-Code wird im Wiki nicht korrekt dargestellt. Lass euch den Quellcode anzeigen und kopieret diesen.