i3
i3 ist ein durch wmii inspirierter Tiling-Windowmanager mit Floating-Support, der sich momentan noch stark in der Entwicklung befindet.
Installation
i3 ist als
i3
in community
verfügbar, und kann von dort
mittels Pacman
installiert werden.
pacman -S i3
# ein gut mit i3 zusammenarbeitender Launcher
pacman -S dmenu
Wenn man nur den Fenstermanager möchte, nimmt man stattdessen i3-wm. Wer die fortwährende Entwicklung benutzen möchte, findet das Paket i3-gitAUR im AUR.
Um i3 über startx
starten zu können, ist die xinitrc zu editieren, diese sollte den folgenden Eintrag enthalten.
exec i3
Wenn stattdessen i3 mit log gestartet werden soll, muss folgendes in die xinitrc
exec i3 -V >> ~/.i3/i3log-$(date +'%F-%k-%M-%S') 2>&1
Das log ist unter ~/.i3 zu finden.
Benutzer des Nvidia-Treibers in Kombination mit mehreren Ausgabegeräten für das Bildsignal sollten ferner die Option --force-xinerama
benutzen.
exec i3 --force-xinerama
Alternative: i3-gaps
i3-gaps ist ein fork von i3-wm. In Grunde genommen sind sie identisch, jedoch kann man bei i3-gaps, wie der Name schon sagt, Lücken zwischen den Fenstern erstellen. Das hört sich zuerst etwas befremdet an, jedoch kann man auf der Webseite von i3-gaps ein gutes Beispielbild erkennen. Die Einstellungen von i3-wm gibt's auch bei i3-gaps, somit muss man beim wechseln nichts verändern, sondern (man kann) eher etwas hinzufügen :). Sie können also einfach, wenn sie sich für i3-gaps entscheiden, dieser Anleitung folgen.
Konfiguration
Um die Konfiguration anpassen zu können ist es nötig die globale Konfiguration in den entsprechenden Unterordner des Benutzerverzeichnisses zu kopieren:
cp /etc/i3/config ~/.i3/config
Nun sollte man vor der Anpassung unbedingt die Manpage lesen, die sehr griffig die Konfigurationsmöglichkeiten erklärt.
man 1 i3
Um ein Desktop-Hintergrund zu setzten muss ein externes Programm genutzt werden.
Unter i3 User Guide findet man Details, wie die i3-config zu konfigurieren ist.
Anwendungsstarter
i3 benutzt dmenu als Anwendungsstarter, was per Default mit $mod+d
aufzurufen ist.
i3-wm beinhaltet i3-dmenu-desktop, ein Perl-Wrapper für dmenu, welcher die Desktop Einträge benutzt um eine Liste von allen installierten Anwendungen zu erstellen. Alternativ kann das Paket j4-dmenu-desktop-gitAUR benutzt werden, ein Ersatz für i3-dmenu-desktop, welcher um einiges schneller ist. Eine weitere Möglichkeit ist dmenu-extendedAUR. Es funktioniert wie dmenu ist aber um einige Funktionen erweitert.
Keybindings
In i3 werden Kommandos mit einem modifier key ausgeführt, welcher mit $mod
referenziert wird. Standardmäßig ist das die Alt
-Taste(Mod1); eine populäre Alternative ist Super
(Mod4).
Will man zum Beispiel für alle Shortcuts Super benutzen, geht es schnell mit einem einfachen Text-Editor die i3-config zu öffnen, und alle Mod1 durch Mod4 zu ersetzen.
i3 Reference Card und using i3 geben hier gute Hilfestellungen auf englisch.
Farbverwaltung
Die i3-config erlaubt die Konfiguration der Farbverzierungen. Die Syntax macht es unpraktisch Themes zu erstellen oder auszutauschen. Es gibt allerdings mehrere Projekte, die das Ganze einfacher gestalten und beinhaltet - von Usern beigetragene - Themes.
- i3-style — Modifiziert deine Config aus einem Theme, welches in einem JSON Object gespeichert wird. Für häufiges Bearbeiten der Farben designed.
https://github.com/acrisci/i3-style || nodejs-i3-styleAUR
- j4-make-config — Füge deine Config mit einer Sammlung von Themes oder Stücken von Configs zusammen.
https://github.com/okraits/j4-make-config || j4-make-config-gitAUR
i3bar
Als Ergänzung, um Arbeitsplatz-Informationen anzuzeigen, kann i3bar als Input oder Alternative für i3status dienen, so, wie im nächsten Abschnitt gezeigt. Zum Beispiel:
~/.config/i3/config bar { output LVDS1 status_command i3status position top mode hide workspace_buttons yes tray_output none font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 colors { background #000000 statusline #ffffff focused_workspace #ffffff #285577 active_workspace #ffffff #333333 inactive_workspace #888888 #222222 urgent_workspace #ffffff #900000 } }
Unter i3 User Guide gibt es mehr Informationen - auf englisch.
i3bar Alternativen
Einige User ziehen eventuell andere Panels - wie z.B. die von den regulären Desktops angebotenen - vor. Dies kann innerhalb von i3 erreicht werden, indem das Panel der Wahl während des Startens gestartet wird.
Für das xfce4-panel muss folgendes in ~/.config/i3/config eingefügt werden:
exec --no-startup-id xfce4-panel --disable-wm-check
Alternativ kann das Starten auch über die xinitrc geregelt werden.
xfce4-panel --disable-wm-check &
i3bar kann abgeschaltet werden, indem der bar{
}-Bereich in ~/.config/i3/config
auskommentiert wird.
i3status
Zuerst muss die default config in das Homeverzeichnis kopiert werden:
$ cp /etc/i3status.conf ~/.config/i3status/config
In der default config sind nicht alle plugins definiert, siehe man 1 i3status
für mehr Informationen
Hinweis: Die Beispiel config nutzt eth0 und wlan0 als Schnittstellen. Falls diese nicht passen, kann man mit Hilfe von ip link
die richtige Schnittstellen ermitteln.
Möglicherweise passen andere Sachen, wie zum Beispiel der Pfad für den Akku, ebenfalls nicht, siehe dafür unter man i3status
nach.
Ersatz für i3status
- conky — Extrem gut erweiterbares Tool zum Überwachen des Systems. In diesem Tutorial findet man Hilfe, wie man conky mit i3bar benutzt.
http://conky.sourceforge.net/ || conky
- i3blocks — Via Shellscripts erweiterbar.
https://github.com/vivien/i3blocks || i3blocksAUR
- i3pystatus — Erweiterbare Python 3 Statusbar mit vielen Plugins und Konfigurationsmöglichkeiten von Haus aus.
i3pystatus https://github.com/enkore/i3pystatus i3pystatus || i3pystatus-gitAUR
- i3situation — Eine weitere Python 3 Statusbar
https://github.com/HarveyHunt/i3situation || i3situation-gitAUR
- j4status — Unterstützt eine Statusleiste, konfigurierbar via Plugins, wurde in C geschrieben.
http://j4status.j4tools.org/ || j4status-gitAUR
Terminal Emulator
Standardmäßig wird, wenn $mod+Return
gedrückt wird, das i3-sensible-terminal
Script gestartet, welches ein Terminal aufruft. Siehe man i3-sensible-terminal
für Informationen darüber, in welcher Reihenfolge Terminals aufgerufen werden.
Wenn man stattdessen ein Terminal seiner Wahl starten möchte, muss folgende Zeile in der ~/.config/i3/config
bearbeitet werden:
bindsym $mod+Return exec i3-sensible-terminal
und zum Beispiel durch
bindsym $mod+Return exec urxvt
ersetzt werden.
Systemtray
Das Systemtray kann aktiviert werden, indem man einen der folgenden Werte in die ~/.config/i3/config
in den bar{
}-Abschnitt einträgt.
bar { tray_output primary }
für den Hauptbildschirm
oder
bar { tray_output LVDS1 }
für einen bestimmten Bildschirm.
Den richtigen Bildschirmnamen findet man leicht mit RandR heraus.
Soll die i3bar oben am Bildschirmrand platziert werden, muss man folgendes, ebenfalls in den bar{ }
-Bereich eingetragen:
position top
Lautstärke im Systemtray
Mit Hilfe folgenden Eintrages in die i3stats config
bekommt man eine Anzeige im Systemtray, welche die Lautstärke anzeigt.
order += "volume master"
volume master { format = "%volume" format_muted = "muted (%volume)" device = "default" mixer = "Master" mixer_idx = 0 }
NetworkManager im Systemtray
Möchte man den NetworkManager im Systemtray aktivieren, müssen folgende Dinge vorher bedacht worden sein:
- Der Networkmanager muss installiert und aktiviert worden sein.
- Es muss das Networkmanager-applet installiert sein.
Danach muss folgendes in die ~/.xinitrc eingetragen werden - vor exec i3
:
nm-applet --sm-disable &
Numlock aktivieren
Eine einfache und schnelle Möglichkeit Numlock zu aktivieren bietet numlockx
Multimedia Tasten
Selbstverständlich ist es auch in i3 möglich seine Multimedia Tasten zu benutzen.
Mit dem Befehl xev lässt sich der benötigte Keycode herausfinden.
Mit Xmodmap -pke lässt sich der passende Name des dazugehörigen Keycodes finden.
Hier ein beispielhafter Auszug aus meiner Config für Helligkeits-, sowie die Lautstärke-Tasten:
Hinweis: Für meine Config werden alsa-utils für die Musik und xbacklight für die Bildschirmhelligkeit benutzt.
#####Custom settings##### #Brightness Up/Down bindcode 232 exec xbacklight -10 bindcode 233 exec xbacklight +10 #Volume Up/Down bindcode 122 exec amixer -q set Master 5%- bindcode 123 exec amixer -q set Master 5%+ bindcode 121 exec amixer -q set Master toggle
Weitere Informationen sind im i3 User Guide zu finden.
Bildschirmschoner und Energieverwaltung
Mit DPMS kann man den Bildschirm abdunkeln, in den Ruhezustand bringen oder ausschalten. Folgendes in der ~/.config/i3/config
sorgt dafür, dass der Monitor sich nach 10 Minuten ausschaltet.
exec --no-startup-id xset dpms 600
Mit xss-lock-gitAUR kann eine Bildschirmsperre für die i3-Session angelegt werden.
xss-lock -- i3lock -i background_image &
Alternativ kann xautolock benutzt werden, um den Bildschirm nach einer gewissen Zeitspanne zu sperren.
xautolock -time 10 -locker i3lock &
Herunterfahren, Neustarten, Bildschirmsperre
In i3 gibt es keine Herunterfahr-, Neustart- oder Bildschirmsperr-Knöpfe. Es ist aber möglich sich Hotkeys dafür dafür einzurichten. Als erstes müssen wir ein Script dafür erstellen und unter dem Namen i3exit
speichern. Unbedingt dran denken die datei mit chmod +x ausführbar zu machen und irgendwo in dem $PATH platzieren. Das Script benötigt polkit, damit auch unprivilegierte User Zugriff auf die Systemverwaltung haben.
#!/bin/sh lock() { i3lock } case "$1" in lock) lock ;; logout) i3-msg exit ;; suspend) lock && systemctl suspend ;; hibernate) lock && systemctl hibernate ;; reboot) systemctl reboot ;; shutdown) systemctl poweroff ;; *) echo "Usage: $0 {lock|logout|suspend|hibernate|reboot|shutdown}" exit 2 esac exit 0
Hinweis:
- Wenn xss-lock-gitAUR benutzt wird, muss
xset s activate
aufgerufen werden um die Sperre zu aktivieren. - Mit xautolockAUR lautet der Befehl
xautolock -locknow
Jetzt müssen die folgenden Zeilen in die ~/.config/i3/config
eingefügt werden.
set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown mode "$mode_system" { bindsym l exec --no-startup-id i3exit lock, mode "default" bindsym e exec --no-startup-id i3exit logout, mode "default" bindsym s exec --no-startup-id i3exit suspend, mode "default" bindsym h exec --no-startup-id i3exit hibernate, mode "default" bindsym r exec --no-startup-id i3exit reboot, mode "default" bindsym Shift+s exec --no-startup-id i3exit shutdown, mode "default" # back to normal: Enter or Escape bindsym Return mode "default" bindsym Escape mode "default" } bindsym $mod+Pause mode "$mode_system"
Hier ist eine Liste weiterer Screenlocker