AwesomeWM
awesome ist ein für „Power User“ konzipierter Windowmanager. AwesomeWM wird mittels LUA in der Datei ~/.config/awesome/rc.lua konfiguriert.
Ein Kernelement von Awesome ist der „tag“: sozusagen ein virtueller Bildschirm. Für jeden Tag kann ein anderes Regelwerk festgelegt werden, anhand dessen die Fenster in diesem Tag angeordnet werden (Floating, Maximiert, Tiling, Spiral, ...).
Im Folgenden möchte ich beschreiben, wie ich Awesome Tags auf einem Laptop eingerichtet habe, der abwechselnd mit einem oder 2 angeschlossenen Bildschirmen betrieben wird.
Grundgedanken
Ich möchte für bestimmte Aufgaben separate tags nutzen. Bei mir wären das:
- main
- Mein Hauptfenster, enthält typischerweise Terminalfenster; Layout: Spiral
- comm
- Kommunikation (mail, chat, ...); auch hier Terminalfenster (für mutt, profanity, ...); Layout ebenfalls Spiral
- www
- Firefox; Layout: Maximized
- office
- LibreOffice, PDF- und PostScript-Viewer; Layout Maximized
- misc
- Verschiedenes; Layout Floating
Je nachdem, ob ein 2. Monitor angeschlossen ist, sollen die www und office Tags auf dem 2. Monitor angezeigt werden.
Konfiguration
Für das Anlegen dieser Tags habe ich in der Datei ~/.config/awesome/rc.lua innerhalb der Funktion die mittels connect_for_each_screen registriert wird, die folgenden Einstellungen vorgenommen:
local l = awful.layout.suit -- -- Each screen has its own tag table. if screen:count() == 1 then awful.tag.add('main', { layout = l.spiral, screen = s, selected = true } ) awful.tag.add( 'comm', { layout = l.spiral, screen = s } ) awful.tag.add( 'www', { layout = l.max, screen = s } ) awful.tag.add( 'office', { layout = l.max, screen = s } ) awful.tag.add( 'misc', { layout = l.floating, screen = s } ) else if s.index == 1 then awful.tag.add( 'main', { layout = l.spiral, screen = s, selected = true }) awful.tag.add( 'comm', { layout = l.spiral, screen = s } ) awful.tag.add( 'misc', { layout = l.floating, screen = s } ) else awful.tag.add( 'www', { layout = l.max, screen = s, selected = true } ) awful.tag.add( 'office', { layout = l.max, screen = s } ) end end
Außerdem habe ich am Ende der rc.lua-Datei noch Regeln festgelegt, die dafür sorgen, dass bestimmte Fenster in bestimmten Tags angezeigt werden:
if screen:count() == 1 then table.insert( awful.rules.rules, { rule = { instance = "Navigator" }, properties = { tag = "www", screen = 1 } } ) table.insert( awful.rules.rules, { rule = { instance = "libreoffice" }, properties = { tag = "office", screen = 1 } } ) table.insert( awful.rules.rules, { rule = { instance = "gv" }, properties = { tag = "office", screen = 1 } } ) else table.insert( awful.rules.rules, { rule = { instance = "Navigator" }, properties = { tag = "www", screen = 2 } } ) table.insert( awful.rules.rules, { rule = { instance = "libreoffice" }, properties = { tag = "office", screen = 2 } } ) table.insert( awful.rules.rules, { rule = { instance = "gv" }, properties = { tag = "office", screen = 2 } } ) end