I3 - Installation und Konfiguration

From Manjaro Linux
Jump to: navigation, search

Übersicht

I3-scrot3.png
I3-scrot1.png
I3-scrot2.png


i3 ist ein in C geschriebener dynamischer Fenstermanager für das X Window System. Er unterstützt Tiling, Stacking und dynamische Fensterlayouts. i3 wurde von Grund auf neu geschrieben und steht unter der BSD-Lizenz. Entwickelt wird das Projekt aktiv seit 2009 von Michael Stapelberg. Das Ziel war einen alternativen Window-Manager für Power-User und Entwickler zu schreiben, dabei wurden einige Aspekte von wmii zum Vorbild und zur Zielsetzung herangezogen. Der Sourcecode wurde unter die BSD-Lizenz gestellt. Der i3 stellt mehrere Arbeitsräume (Workspace) zur Verfügung. Der Anwender ist nicht an eine feste Anzahl, etwa 2 oder 4, gebunden, sondern kann beliebig viele nutzen. Verlässt der Anwender einen Workspace, der keine Fenster – oder keine Fenster mehr – enthält, dann wird dieser Workspace sofort automatisch geschlossen. Dadurch hat der Anwender den Vorteil, dass er aktuell immer nur so viele Workspaces hat wie er gerade braucht und nicht mehr.


Unterschiede zu anderen Tiling Window Managern

Die i3-Konfigurationsdatei ist in Klarschrift (Plain text) verfasst und kann durch den Anwender ohne Kenntnisse einer Programmiersprache bearbeitet werden. Einige Window-Manager (wie DWM, awesome, XMonad, …) ordnen die Fenster nach bestimmten Verfahren an, bei I3 ordnet der Nutzer seine Fenster komplett selbst an. Dies wird unter Zuhilfenahme verschiedener Layouts für bestimmte Abschnitte ermöglicht. Hierzu gehört zum Beispiel eine horizontale wie auch vertikale Anordnung, aber auch das Zusammenfassen mehrerer Fenster in eine Tab-Struktur (wie sie häufig in Browsern angetroffen wird).

I3 verwaltet die Fenster in einer Baumstruktur mit sog. Containern. Diese Struktur bietet dem User die Fenster horizontal als auch vertikal zu teilen. Die Container werden default geteilt, aber sie können auch in einem tabbed- oder stacked-Layout dargestellt werden. Weiterhin kann jedes Paket in einem sog. Floating Modus bedient werden. Somit stehen dem Anwender viele Möglichkeiten zur Verfügung seine Programme auf dem Bildschirm darzustellen.

Installation

I3 kann über eine Manjaro-Net-Installation aufgesetzt werden, kann aber auch auf jede bestehende Installation aufgesetzt werden. Installiert werden sollte die I3 Packet Gruppe aus den offiziellen Repositories. Das Paket beinhaltet den Windows Manager i3-wm, i3status welche Informationen in der Statusbar zur Verfügung stellt und i3lock, ein einfacher Screen locker

sudo pacman –S i3

Weiterhin arbeitet i3 mit dem Paket dmenu als Applikationsstarter zusammen. Dieses sollte auch installiert sein

sudo pacman –S dmenu

Zusätzlich wird für den ersten Start noch ein Terminal benötigt, z.B. xterm oder terminator


Konfiguration

Damit i3 reibungslos funktioniert müssen folgende Schritte vorab durchgeführt werden:

1. Es muss ein Konfigurationsverzeichnis angelegt werden

2. Die .xinitrc muss angepasst werden


Anlage des Konfigurationsverzeichnisses
mkdir ~/.i3
Anpassen der .xinitrc

Um i3 über startx starten zu können, ist die .xinitrc zu editieren, diese sollte den folgenden Eintrag enthalten:

Unter systemd
exec i3

Wenn stattdessen i3 mit einer log-Datei gestartet werden soll, muss folgendes in die xinitrc eingetragen sein exec i3 -V >> ~/.i3/i3log-$(date +'%F-%k-%M-%S') 2>&1

WICHTIG für NVIDIA-Nutzer

I3 bietet sich sehr gut für den Einsatz auf Dual-Monitor-Konfigurationen an. Hierzu muss dann i3 mit folgendem Parameter gestartet werden

exec i3 --force-xinerama
Unter openrc
exec ck-launch-session dbus-launch i3


Wenn stattdessen i3 mit einer log-Datei gestartet werden soll, muss folgendes in die xinitrc eingetragen sein

exec ck-launch-session dbus-launch --sh-syntax --exit-with-session i3 -V -d all > ~/.i3/i3log-$(date +'%F-%k-%M-%S') 2>&1


Anwendungsstarter

I3 benutzt als Applikationsstarter das Paket dmenu und wird standardmäßig mit der Tastenkombination $mod+d aufgerufen.


I3 – Der erste Start

I3 start.png

Nach dem erstem Start sieht der Bildschirm wie folgt aus: Mit ENTER wird automatisch die Config-Datei für I3 im Ordner ~/.i3 angelegt.

Im nächsten Schritt wird bestimmt, welche Tastaturbelegung für die Ausführung von Befehlen benutzt wird.

Zur Auswahl stehen

WIN = Super-Taste und ALT-Taste


Die Super-Taste

I3 Tastenauswahl.png

Wir gehen in diesem Wiki weiter von der SUPER-Taste aus.

Nach der Auswahl steht der Anwender in i3


Die Statusbar wird angezeigt.



I3 anpassen – die Config-Datei

Um I3 anpassen zu können, muss ein Terminal gestartet werden

MOD4 (SUPER-Taste) + ENTER

Im Verzeichnis ~/.i3 befindet sich die Datei config

Die Config-Datei ist in viele Bereiche aufgeteilt.

HINWEIS Unter I3 wird eine Befehlsfolge immer mit dem Befehl bindsym eingeleitet und zum ausführen wird der Befehl exec benötigt

I3 config file

set $mod Mod4

Hiermit wird definiert welche Taste benutzt wird um Befehlssequenzen einzuleiten (hier Mod4 = SUPER-Taste)


Starte ein Terminal

bindsym $mod+Return exec i3-sensible-terminal

An dieser Stelle schaut I3 in folgender Reihenfolge nach welches Terminal installiert ist und startet es entsprechend

urxvt

rxvt

terminator

Eterm

aterm

xterm

gnome-terminal

roxterm

xfce4-terminal


Wenn mehrere Terminals installiert sind und ein bestimmtes Terminal default gestartet werden soll, muss der Befehl wie folgt lauten

bindsym $mod+Return exec terminator

I3 bietet keine Möglichkeit floating Windows oder Container über Icons zu schließen. Dieses wird ausschließlich mit der Tastatur durchgeführt. Seit der Version 4.9 wird auch eine Aktion mit der Maus unsterstützt


kill focused window

Bindsym $mod+Shift+q kill

schließt das aktuelle Fenster

Gleiche Aktion mit der Maus

bindsym –release buton2 kill

schließt das aktuelle Fenster mit der mittleren Maustaste


Aufruf von dmenu

bindsym $mod+d exec dmenu_run

Hier kann der Aufruf von dmenu angepasst werden

Beispiel

bindsym $mod+d exec dmenu_run -i -b -l '10' -nb '#000000' -nf '#ffffff' -sb '#008700'


change focus

In diesem Bereich kann der Anwender festlegen mit welchen Tastenkombinationen er sich durch die Container bzw. floating Windows bewegt

bindsym $mod+j focus left
bindsym $mod+k focus down
bindsym $mod+l focus up
bindsym $mod+odiaeresis focus right


alternatively, you can use the cursor keys:

bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right

Die zweite Auswahl ist einfacher zu bedienen und wird eigentlich default benutzt.


move focused window

Die diversen Container können auf dem Workplace verschoben werden. Hierzu dienen default folgende Befehle

bindsym $mod+Shift+j move left
bindsym $mod+Shift+k move down
bindsym $mod+Shift+l move up
bindsym $mod+Shift+odiaeresis move right


alternatively, you can use the cursor keys:

bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right

Auch hier gilt, diese Tastenkombinationen werden default von der Mehrzahl der User benutzt


I3 splitting window.png

Wie bereits oben erwähnt, verwaltet I3 die Container in einer Baumstruktur. Somit kann der User die einzelnen Container horizontal und auch vertikal teilen um neue Container zu erstellen. Das hört sich etwas schwierig an, ist es aber gar nicht. Wie im u.a. Bild zu sehen ist, können Container in beiden Richtungen (horizontal & vertikal) ausgerichtet gestartet bzw. verwaltet werden. Hierzu dienen folgende Befehlszeilen

split in horizontal orientation

bindsym $mod+h split h


split in vertical orientation

bindsym $mod+v split v



Manchmal ist es notwendig bzw. von Vorteil einen bestimmten Container in den Vollbildmodus zu versetzen


enter fullscreen mode for the focused container

bindsym $mod+f fullscreen

Auf jedem Workspace können beliebige Container in 3 verschiedene Layouts versetzt werden

stacking

tabbed

toggle split

Hierzu dienen folgende Befehlsfolgen

change container layout (stacked, tabbed, toggle split)

bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split

Layout stacking

Layout stacking.png


Layout tabbed

Layout tabbed.png


Layout toggle split

Layout toggle.png


Was unter I3 sehr gut ist, jeder Container kann auch in einen sog. Floating Modus versetzt werden.

toggle tiling / floating

bindsym $mod+Shift+space floating toggle
Floating.png

Um sich zwischen den floating Windows mit der Tastaur bewegen zu können, bzw. den einzelnen Windows den Focus geben zu können, wird folgende Tastaturkombination default benutzt

change focus between tiling / floating windows

bindsym $mod+space focus mode_toggle


Einzelne Container oder floating Windows können auf diverse Workspaces verschoben werden oder der Anwender kann diverse Workspaces eröffnen. Dazu sind default folgendende Befehle hinterlegt

switch to workspace – Ein Workspace aufrufen

bindsym $mod+1 workspace 1
bindsym $mod+2 workspace 2
bindsym $mod+3 workspace 3
bindsym $mod+4 workspace 4
bindsym $mod+5 workspace 5
bindsym $mod+6 workspace 6
bindsym $mod+7 workspace 7
bindsym $mod+8 workspace 8
bindsym $mod+9 workspace 9
bindsym $mod+0 workspace 10

move focused container to workspace – der aktuelle container wird auf Workspace verschoben

bindsym $mod+Shift+1 move container to workspace 1
bindsym $mod+Shift+2 move container to workspace 2
bindsym $mod+Shift+3 move container to workspace 3
bindsym $mod+Shift+4 move container to workspace 4
bindsym $mod+Shift+5 move container to workspace 5
bindsym $mod+Shift+6 move container to workspace 6
bindsym $mod+Shift+7 move container to workspace 7
bindsym $mod+Shift+8 move container to workspace 8
bindsym $mod+Shift+9 move container to workspace 9
bindsym $mod+Shift+0 move container to workspace 10


Damit nicht jedes Mal I3 beendet werden muss um Änderungen an der config umzusetzen, kann dieses mit dieser Befehlsfolge default durchgeführt werden

reload the configuration file

bindsym $mod+Shift+c reload

bzw.

restart i3 inplace (preserves your layout/session, can be used to upgrade i3)

bindsym $mod+Shift+r restart

Default kann i3 nicht „runtergefahren“ werden. Es bietet ausschließlich die Möglichkeit I3 zu beenden (wir erklären weiter unten wie es komfortabler geht). Dieses wird über die i3nagbar gelöst. I3nagbar dient dazu i3 spezifische Abfragen abzuarbeiten – siehe separaten Teil -

exit i3 (logs you out of your X session)

bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"

Der Anwender bekommt folgenden Hinweis auf dem Monitor

I3 nagbar.png

Wird jetzt „Yes, exit I3“ ausgeführt, steht der Anwender in der Shell und kann mit

sudo poweroff

Manjaro sauber beenden

Container können in der Größe verändert werden. Hierzu dient der Befehl mod+r

An dieser Stelle kommt eine weitere Funktion von I3 zum Tragen. Diverse Kommandos können in einen sog. „mode“ versetzt werden. Nach dem Aufruf wartet I3 auf diverse Befehle die abgearbeitet werden können. Einen Mode-Befehlszyklus wird immer in {} eingepflegt.


resize window (you can also use the mouse for that)

I3 resize.png


mode "resize" {
        # These bindings trigger as soon as you enter the resize mode
        # Pressing left will shrink the window’s width.
        # Pressing right will grow the window’s width.
        # Pressing up will shrink the window’s height.
        # Pressing down will grow the window’s height.
        bindsym j resize shrink width 10 px or 10 ppt
        bindsym k resize grow height 10 px or 10 ppt
        bindsym l resize shrink height 10 px or 10 ppt
        bindsym odiaeresis resize grow width 10 px or 10 ppt

        # same bindings, but for the arrow keys
        bindsym Left resize shrink width 1 px or 1 ppt
        bindsym Down resize grow height 1 px or 1 ppt
        bindsym Up resize shrink height 1 px or 1 ppt
        bindsym Right resize grow width 1 px or 1 ppt

        # back to normal: Enter or Escape
        bindsym Return mode "default"
        bindsym Escape mode "default"
}

bindsym $mod+r mode "resize"

Dieser Ablauf erkären wir an anderer Stelle bzgl. „reboot, poweoff etc“ genauer.

Die Statusbar im unteren Bereich wird default geladen

# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
   status_command i3status
}

Tipps für I3

Programme im autostart

Wie unter jedem DE und WM können auch unter I3 Pakete über autostart gestartet werden. Jedes Programm wird einzeln mit der Befehlsfolge exec –-no-startup-id eingeleitet. Auch Scripte können somit aufgerufen werden

Beispiel

#Ausführen von Programmen beim Start
exec --no-startup-id nitrogen –restore
exec --no-startup-id ~/.dropbox-dist/dropboxd
exec --no-startup-id nm-applet
exec --no-startup-id urxvt
exec --no-startup-id ~/scripte/update.sh


Wallpaper unter i3 nutzen

Unter I3 kann default kein Wallpaper eingerichtet werden, dieses muss über ein Zusatzpaket erfolgen. Die Pakete Nitrogen oder feh können hierzu gut genutzt werden

sudo pacman -S nitrogen
sudo pacman -S feh

um nitrogen zu nutzen wird in der I3 config im Bereich Autostart folgender Eintrag genutzt

exec -no-startup-id nitrogen –restore

für feh gibt es 2 Möglichkeiten

a) über i3 config im Autostart-Bereich

exec -no-startup-id feh --bg-center <path>/<image>.png 

b) fest in der .xinitrc

feh --bg-center /pfad/zur/bilddatei &
Das Verhalten der Fenster und deren Rahmen festlegen

Unter I3 kann das Verhalten der einzelnen Fenster auf verschiedene Arten festgelegt werden

a) Wie soll ein Fenster default aussehen? Mit Rahmen oder ohne?

hide_edge_borders yes/none

b) Voreinstellung der Ausrichtung (horizontal/vertikal)

#default Fenster-Einstellungen
default_orientation horizontal

c) Minimale Größe eines floating Windows

#Einstellungen für neue floating Fenster
floating_minimum_size 175 x 100

d) Die einzelnen Fenster können mit oder auch ohne Rahmen dargestellt werden. Dieses wird unter I3 wie folgt angesteuert

#Verhalten der Fenster und deren Rahmen
bindsym $mod+u border none
bindsym $mod+y border 1pixel (der Pixelwert ist frei definierbar)
bindsym $mod+n border normal
Die Schrift der Fenstertitel festlegen

Schriften für die Fenstertitel werden mit dem Befehl font pango: in der Config festgelegt

#Schrift Einstellungen der Fenstertitel
font pango:Droid Sans 9
Ein Scratchpad unter I3 nutzen

Oft ist notwendig Informationen an bestimmten Stellen zur Verfügung zu stellen, eine Man muss gelesen werden und stört manchmal bei der Umsetzung. Hierzu kann sich unter I3 ein Scratchpad mit folgenden Befehlszeilen eingerichtet werden:

#Fenster zu einem Scratchpad
bindsym $mod+Shift+minus move scratchpad
#Zeige das scratcpad window
bindsym $mod+minus scratchpad show

Das Scratchpad kann jederzeit mit Mod+Shift+Leertaste wieder in seinen Ursprungszustand versetzt werden.

Pakete über Tastaturkombinationen starten

Jedes Paket kann über eine individuelle Tastenkombination gestartet werden. Hier ist nur zu beachten, dass I3 immer das führende System ist, d.h. eine Tastenkombination F11 zum starten eines Programms zu nutzen führt im Browser dazu, dass dieser nicht in den Vollbildmodus versetzt wird, sondern immer das I3-Kommando ausgeführt wird

# Starte Programe über Tastaurkombination
bindsym $mod+b exec dwb
bindsym $mod+t exec thunar
Pakete im floating Modus starten & deren Größe/Verhalten festlegen

Viele Pakete lassen sich im floating Modus besser bedienen. Diese Pakete haben auch manchmal weiterführende Unterfenster. Damit diese auch gleich in den floating Modus versetzt werden, wird unter I3 mit der class-Variable gearbeitet. Gleichzeitig kann festgelegt werden, ob das Fenster einen Rahmen oder Border haben soll, es im stacking oder tabbed-Modus gestartet werden soll. Hierzu ein paar Beispiele

#Einstellungen für spezielle Programme
for_window [class="(?i)vlc"] floating enable border normal
for_window [class="(?i)virtualbox"] floating enable border normal
for_window [class="(?i)claws-mail"] floating enable border normal
for_window [class="mplayer"] floating disable border none

Das „?i“ bedeutet, dass I3 alle Unterfenster genauso verarbeitet wie das Hauptfenster

Pakete im Terminal starten und deren Position fest definieren

I3 bietet die variablen Workspaces. Somit können Programme auch fest auf einem WS verankert werden. Dieses kann z.B. für Terminalprogramme gut genutzt werden und diese übersichtlich auf dem WS plaziert werden. Im ersten Schritt wird festgelegt für welche Programme das Gültigkeit haben soll. Dieses erfolgt wieder über die Class-Variable.

Beispiel

#Einstellungen Fensterverhalten für bestimmte Programme im Terminal
for_window [class="Alpine"] floating enable border none
for_window [class="calcurse"] floating enable border none
for_window [class="newsbeuter"] floating enable border none
for_window [class="weechat"] floating enable border none

Anschließend werden den einzelnen Variablen Starter zugeweisen. Die Beispiele werden mit dem Terminalpaket Terminator dargestellt

#Starter für Progs im Terminal
bindsym $mod+F2 exec terminator --geometry=1600x975+40+40 --class weechat
bindsym $mod+F3 exec terminator --geometry=800x450+850+40 -x "./alpine-notify.sh" --class Alpine
bindsym $mod+F4 exec terminator --geometry=800x450+850+530 -x "./cal.sh" --class calcurse
bindsym $mod+F5 exec terminator --geometry=800x945+15+40 --class newsbeuter
Steuerung der Lautstärke (ALSA)

Lautstärke wird unter I3 mit Hilfe von dem Programm amixer umgesetzt wenn ALSA genutzt wird

# Alsa-Steuerung & Lautstärke einstellen
bindsym XF86AudioRaiseVolume exec amixer set Master 1%+
bindsym XF86AudioLowerVolume exec amixer set Master 1%-

Wenn die Tastatur keine Sondertasten hat müssen die Einträge XF86… entsprechend anderen Tasten zugewiesen werden

Steuerung der Bildschirmhelligkeit

Hier gilt das Gleiche wie bei der Steuerung der Lautstärke

#Steuerung der Helligkeit
bindsym XF86MonBrightnessUp exec xbacklight +10
bindsym XF86MonBrightnessDown exec xbacklight -10
Bildschirmphotos durchführen

Bildschirmphotos können unter I3 mit jedem Capture-Programm umgesetzt werden. Hierzu muss dieses auch nur mit einer Tastaturkombination aufgerufen werden. Unter I3 bietet sich das kleine Terminalprogramm scrot an

bindsym Print exec scrot -e 'mv $f ~/Bilder/' --silent --quality 50


Farben der Fenster definieren

I3 unterstützt farbige Fenster. Dieses betrifft aber nur die einzelnen Terminal-Container und die der Statusleiste. Alle anderen Farben der Pakete (z.B. firefox) werden über ein GTK-Design gesteuert mit z.B. Lxappearance.

Es gibt 4 verschiedene Arten von Fenstern

focused – das aktuell genutzte focused_inactive – das aktuell genutzte im Wartezustand unfocused – ein offenes Fenster ohne Fokus urgent – Fenster in denen Aktionen ablaufen und ein Hinweis wichtig ist

         Beispiel eine Mail kommt in claws-Mail rein
#Farben für die Fenster
# class			        border		background	text		indicator
client.focused		        #2D2D2D	        #2D2D2D	        #ffffff		#2e9ef4
client.focused_inactive 	#333333	        #5f676a	        #ffffff		#484e50
client.unfocused		#333333 	#222222 	#888888	        #292d2e
client.urgent			#2f343a	        #008700	        #ffffff		#008700

Hier können die Farbwerte dem genutzten GTK-Design entsprechend angepasst werden.

I3 Statusbar einrichten

Die i3 Statusbar bietet dem I3-Anwender die Möglichkeit sich bestimmte Informationen anzeigen zu lassen wie z.B. CPU-Temperatur, Größe HOME-Verzeichnis, WLAN. Gleichzeitig werden in der Statusleiste die Schalter für die einzelnen Workspaces angezeigt. Diese können mit der Maus angeklickt werden oder über die zugewiesenen Tastaturkombinationen angesprochen werden. Weiterhin werden in dieser Bar auch die Systemtray-Icons der einzelnen Programme wie z.B. nm-applet, dropbox etc angezeigt.

Die Statusleiste wird an 2 Stellen gepflegt.

1. in der i3 config hier werden Farben, Schrift und die Position bzw. der eigentliche Aufruf der i3Statusbar eingerichtet. Weiterführende Informationen bietet die sehr gute Man. In diesem Beispiel sind einige Farbwerte mit „#“ auskommentiert. Der Anwender muss für sich allein entscheiden, was er alles farbig darstellen möchte.

bar {
colors {
        # Gesamte Farbgebung einstellen
        background #000000
        #statusline #00d7d7
        statusline #767676
        separator  #666666

        # Type              border  background font
        #focused_workspace  #008700 #008700    #ffffff
        #active_workspace   #333333 #5f676a    #ffffff
        #inactive_workspace #000000 #000000    #888888
        urgent_workspace   #aa0000 #990000     #ffffff
    }
    # i3bar position
    mode dock
    hidden_state hide
    modifier Mod1
    status_command i3status
    position bottom
    #position top
    #tray_output none
    font pango:Droid Sans, Icons 9
}

2. in der eigentlichen i3status.conf

Default nutzt I3 immer die Datei /etc/i3status.conf. Damit der I3-Anwender seine eigene nutzen kann, muss diese in sein HOME-Verzeichnis kopiert werden.

cp /etc/i3statusbar.conf  ~/.i3statusbar.conf

Anschließend kann diese mit einem Editor entsprechend den Bedürfnissen des Anwenders angepasst werden. Das Manual ist sehr gut dokumentiert „man i3status“.

I3 über Script beenden

I3 biete wie bereits oben erwähnt keine Möglichkeit den PC sauber herunterzufahren bzw. seinen PC in den suspend bzw. hibernate-Modus zu versetzen. Hierzu wurde ein Script vo Arch-Usern entwickelt, das sowohl unter systemd als auch unter openRC nutzbar ist.

In der i3-Config werden folgende Informationen eingetragen:

# Power control script - a useful replacement for the normal i3 exiting keybind.
# https://wiki.archlinux.org/index.php/i3#Shutdown.2C_reboot.2C_lock_screen
set $mode_system System (1) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (d) shutdown
mode "$mode_system" {
bindsym 1 exec --no-startup-id ~/scripte/i3exit lock, mode "default"
bindsym e exec --no-startup-id ~/scripte/i3exit logout, mode "default"
bindsym s exec --no-startup-id ~/scripte/i3exit suspend, mode "default"
bindsym h exec --no-startup-id ~/scripte/i3exit hibernate, mode "default"
bindsym r exec --no-startup-id ~/scripte/i3exit reboot, mode "default"
bindsym d exec --no-startup-id ~/scripte/i3exit shutdown, mode "default"
# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+x mode "$mode_system"

Dann muss ein ausführbares Script i3exit erstellt werden. In diesem Beispiel liegt es im Ordner „scripte“.


Für systemd

#!/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

Anschließend chmod +x i3exit

Für OpenRC

#!/bin/sh
lock() {
    i3lock
}

case "$1" in
    lock)
        lock
        ;;
    logout)
        i3-msg exit
        ;;
    suspend)
        lock && dbus-send --system --print-reply --type=method_call --reply-timeout=2000 --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend
        ;;
    hibernate)
        lock && dbus-send --system --print-reply --type=method_call --reply-timeout=2000 --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Hibernate
        ;;
    reboot)
        dbus-send --system --print-reply --type=method_call --reply-timeout=2000 --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
        ;;
    shutdown)
        dbus-send --system --print-reply --type=method_call --reply-timeout=2000 --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
        ;;
    *)
        echo "Usage: $0 {lock|logout|suspend|hibernate|reboot|shutdown}"
        exit 2
esac

exit 0

Anschließend chmod +x i3exit

Der eigentliche Aufruf unter I3 erfolgt dann mit Mod+x

Eigenes RUN-Menü nutzen

Unter I3 kann auch ein kleines Script genutzt werden umd schnell ein Paket zu starten. Die Farbe und die Position ist leider fest im I3-code verankert und kann nicht eingestellt werden. Hierzu wird in der I3-Config folgendes eingetragen:

#RUN-Menü aufrufen
bindsym $mod+p exec --no-startup-id i3-input -F 'exec %s' -P 'Auführen: '
Springen von Workspace zu Workspace mit oder ohne Container

Manchmal kommt es vor, dass auf einem Workspace gearbeitet wird und mal schnell auf einen Workspace umgeschaltet werden muss incl. dem aktuellen Fenster. Hierzu erfolgt in der I3 config folgende Einträge:

# springen von Workspace zu workspace mit oder ohne container
workspace_auto_back_and_forth yes
bindsym $mod+z workspace back_and_forth
bindsym $mod+Shift+z move container to workspace back_and_forth; workspace back_and_forth

Weiterführende Pakete

I3 kann mit weiterführenden Programmen aufgewertet werden.

Anwendungstarter

rofi - http://davedavenport.github.io/rofi/

j4-dmenu-desktop - http://www.j4tools.org/


Desktop-Notification

Dunst - http://www.j4tools.org/

twmn - https://github.com/sboli/twmn


Statusbar – Alternativen

conky - http://i3wm.org/docs/user-contributed/conky-i3bar.html

j4-status - http://www.j4tools.org/

i3blocks - https://github.com/vivien/i3blocks

i3pystatus - https://github.com/enkore/i3pystatus

i3situation - https://github.com/HarveyHunt/i3situation

Siehe auch

Beitrag im Forum https://de.manjaro.org/index.php?topic=2907.msg24513#msg24513