Skip to content

EndeavourOS + i3

Bron: endeavouros.com / i3wm.org / archlinux.wiki Auteur: Johan Beysen | Fox & Fish Cybersecurity


1. Wat is EndeavourOS?

EndeavourOS is een Arch-gebaseerde Linux distributie die Arch toegankelijk maakt zonder de handmatige installatiepijn — maar zonder de Arch-filosofie te verloochenen. Geen bloat, geen opinies over wat je moet installeren, gewoon een werkend Arch-systeem met een vriendelijk installatieprogramma (Calamares).

Kenmerken:

Aspect Detail
Base Arch Linux
Package manager pacman + yay (AUR)
Init systeem systemd
Releases Rolling release (nooit herinstalleren)
Community editie i3, XFCE, LXQT, Openbox, BSPWM, ...
Flagship Online installer met keuze van DE/WM

2. Wat is i3?

i3 is een tiling window manager — geen volledige desktop environment. Dat betekent: geen file manager die automatisch opent, geen systray out-of-the-box, geen muis-driven workflow. Alles werkt via keyboard shortcuts en configuratiebestanden.

2.1 Tiling vs Floating

Tiling (i3) Floating (GNOME/KDE)
Vensters Vullen het scherm automatisch Zweven vrij
Muis Optioneel Centraal
Productiviteit Hoog na leercurve Direct intuïtief
Configuratie Tekstbestand GUI
Geheugengebruik ~200-400MB 800MB - 2GB+

i3 vs i3-gaps

De EOS community editie levert i3-gaps (nu samengevoegd in i3 4.22+) — dit voegt gaps toe tussen vensters voor esthetiek. Standaard i3 heeft dit niet.

2.2 Basisconcepten

  • Workspace — virtueel bureaublad (1 t/m 10)
  • Container — elk venster zit in een container
  • Layout — splitsen horizontaal, verticaal of tabbed
  • Scratchpad — verborgen workspace voor tijdelijke vensters
  • Bar — statusbalk (i3bar of polybar)
  • Mod key — jouw modifier toets (standaard: Super/Win of Alt)

3. Configuratiebestand

# Locatie
~/.config/i3/config

# Herladen zonder uitloggen
$mod+Shift+r

# i3 herstarten (zwaardere refresh)
$mod+Shift+e  Restart

3.1 Mod Key Instellen

# In ~/.config/i3/config:
set $mod Mod4   # Super/Win toets (aanbevolen)
# set $mod Mod1 # Alt toets

3.2 Lettertype

font pango:JetBrainsMono Nerd Font 10
# of
font pango:monospace 10

4. Standaard Key Bindings

4.1 Vensters

Shortcut Actie
$mod+Enter Terminal openen
$mod+d App launcher (dmenu/rofi)
$mod+q Venster sluiten
$mod+f Fullscreen toggle
$mod+Shift+Space Floating toggle
$mod+Space Focus wisselen floating/tiling
$mod+h/j/k/l Focus wisselen (vim-stijl)
$mod+←/↓/↑/→ Focus wisselen (pijltjes)
$mod+Shift+h/j/k/l Venster verplaatsen
$mod+Shift+←/↓/↑/→ Venster verplaatsen (pijltjes)

4.2 Layout

Shortcut Actie
$mod+e Split toggle (horizontaal/verticaal)
$mod+s Stacked layout
$mod+w Tabbed layout
$mod+r Resize mode
$mod+a Focus parent container

4.3 Workspaces

Shortcut Actie
$mod+1 t/m $mod+0 Naar workspace 1-10
$mod+Shift+1 t/m $mod+Shift+0 Venster naar workspace
$mod+Tab Vorige workspace

4.4 Systeem

Shortcut Actie
$mod+Shift+r Config herladen
$mod+Shift+q i3 afsluiten
$mod+Shift+e Exit menu

5. Config Aanpassen

5.1 Terminal Instellen

# In ~/.config/i3/config:
set $terminal alacritty
# of: kitty, wezterm, xterm, urxvt

bindsym $mod+Return exec $terminal

5.2 App Launcher

# Rofi (aanbevolen boven dmenu)
bindsym $mod+d exec --no-startup-id rofi -show drun -show-icons

# Rofi ook voor window switching
bindsym $mod+Tab exec --no-startup-id rofi -show window

# dmenu (standaard, minimalist)
bindsym $mod+d exec --no-startup-id dmenu_run

5.3 Autostart

# Apps starten bij login
exec --no-startup-id nm-applet                    # NetworkManager icon
exec --no-startup-id picom                        # Compositor
exec --no-startup-id feh --bg-scale ~/wallpaper.jpg  # Wallpaper
exec --no-startup-id dunst                        # Notificaties
exec --no-startup-id xset r rate 300 50           # Keyboard repeat rate
exec --no-startup-id numlockx on                  # Numlock aan

# exec vs exec_always
# exec          → enkel bij eerste start
# exec_always   → ook na $mod+Shift+r (config reload)
exec_always --no-startup-id picom --config ~/.config/picom/picom.conf

5.4 Workspace Indeling

# Workspaces benoemen
set $ws1  "1: "
set $ws2  "2: "
set $ws3  "3: "
set $ws4  "4: "
set $ws5  "5: "

# Vensters automatisch naar workspace sturen
assign [class="firefox"]    $ws2
assign [class="Code"]       $ws3
assign [class="discord"]    $ws5
assign [class="Spotify"]    $ws5

Class van een venster vinden

xprop | grep WM_CLASS
# Klik dan op het venster

5.5 Gaps (spaties tussen vensters)

# In ~/.config/i3/config:
gaps inner 8
gaps outer 4

# Per workspace
workspace $ws1 gaps inner 0   # Geen gaps op workspace 1

# Smart gaps (geen gaps als slechts 1 venster)
smart_gaps on
smart_borders on

5.6 Floating Vensters

# Specifieke apps altijd floating
for_window [class="Pavucontrol"] floating enable
for_window [class="Nm-connection-editor"] floating enable
for_window [title="File Transfer*"] floating enable
for_window [window_role="pop-up"] floating enable
for_window [window_role="bubble"] floating enable

# Floating venster centreren
for_window [class="Pavucontrol"] move position center

5.7 Kleuren

# Venster border kleuren
# class                 border  backgr  text    indicator child_border
client.focused          #4c7899 #285577 #ffffff #2e9ef4   #285577
client.focused_inactive #333333 #5f676a #ffffff #484e50   #5f676a
client.unfocused        #333333 #222222 #888888 #292d2e   #222222
client.urgent           #2f343a #900000 #ffffff #900000   #900000

# Borderdikte
default_border pixel 2
default_floating_border pixel 2

5.8 Eigen Shortcuts

# Screenshots
bindsym Print exec --no-startup-id scrot ~/Screenshots/%Y-%m-%d_%H%M%S.png
bindsym $mod+Print exec --no-startup-id scrot -s ~/Screenshots/%Y-%m-%d_%H%M%S.png

# Volume
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5%
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5%
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle

# Helderheid
bindsym XF86MonBrightnessUp exec --no-startup-id brightnessctl set +5%
bindsym XF86MonBrightnessDown exec --no-startup-id brightnessctl set 5%-

# Lock screen
bindsym $mod+l exec --no-startup-id i3lock -c 000000

# File manager
bindsym $mod+shift+f exec --no-startup-id thunar

# Browser
bindsym $mod+shift+b exec --no-startup-id firefox

6. Statusbalk — i3bar vs Polybar

6.1 i3bar (ingebouwd)

bar {
    status_command i3status
    position top
    font pango:JetBrainsMono Nerd Font 10

    colors {
        background #282828
        statusline #ebdbb2
        separator  #504945

        focused_workspace  #458588 #458588 #282828
        active_workspace   #282828 #3c3836 #ebdbb2
        inactive_workspace #282828 #282828 #a89984
        urgent_workspace   #cc241d #cc241d #282828
    }
}

~/.config/i3status/config:

general {
    colors = true
    interval = 5
}

order += "wireless _first_"
order += "ethernet _first_"
order += "memory"
order += "cpu_usage"
order += "battery all"
order += "tztime local"

wireless _first_ {
    format_up = "W: (%quality at %essid) %ip"
    format_down = "W: down"
}

memory {
    format = "RAM: %used / %total"
    threshold_degraded = "10%"
}

cpu_usage {
    format = "CPU: %usage"
}

battery all {
    format = "%status %percentage %remaining"
}

tztime local {
    format = "%d-%m-%Y %H:%M:%S"
}

6.2 Polybar (aanbevolen)

Polybar is krachtiger en meer customiseerbaar dan i3bar.

# Installeren
sudo pacman -S polybar
# of via yay als niet in repos
yay -S polybar
# Config locatie
~/.config/polybar/config.ini

# Starten (voeg toe aan i3 config)
exec_always --no-startup-id ~/.config/polybar/launch.sh

~/.config/polybar/launch.sh:

#!/bin/bash
killall -q polybar
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
polybar main &

Basis polybar config:

[colors]
background = #282828
foreground = #ebdbb2
primary    = #458588
alert      = #cc241d

[bar/main]
monitor = ${env:MONITOR:}
width = 100%
height = 28
background = ${colors.background}
foreground = ${colors.foreground}
font-0 = JetBrainsMono Nerd Font:size=10
modules-left   = i3 xwindow
modules-center = date
modules-right  = pulseaudio memory cpu battery

[module/i3]
type = internal/i3
format = <label-state> <label-mode>
label-focused         = %name%
label-focused-padding = 2
label-unfocused       = %name%
label-unfocused-padding = 2
label-urgent          = %name%
label-urgent-padding  = 2

[module/date]
type = internal/date
interval = 1
date = %d-%m-%Y
time = %H:%M:%S
label = %date%  %time%

[module/pulseaudio]
type = internal/pulseaudio
label-volume =  %percentage%%
label-muted  = 婢 muted

[module/memory]
type = internal/memory
interval = 2
label =  %percentage_used%%

[module/cpu]
type = internal/cpu
interval = 2
label =  %percentage%%

[module/battery]
type = internal/battery
battery = BAT0
adapter = AC
label-charging    =  %percentage%%
label-discharging =  %percentage%%
label-full        =  Full

7. Compositor — Picom

Picom zorgt voor transparantie, schaduwen en animaties.

sudo pacman -S picom

~/.config/picom/picom.conf:

# Schaduwen
shadow = true
shadow-radius = 10
shadow-offset-x = -10
shadow-offset-y = -10
shadow-opacity = 0.5
shadow-exclude = [
    "class_g = 'i3-frame'",
    "_GTK_FRAME_EXTENTS@:c"
];

# Transparantie
inactive-opacity = 0.9
active-opacity = 1.0
frame-opacity = 1.0
inactive-opacity-override = false

# Blur (vereist picom fork met blur support, bijv. picom-jonaburg)
blur-method = "dual_kawase"
blur-strength = 5
blur-background = true

# Animaties (picom-jonaburg)
transition-length = 150
transition-pow-x = 0.1
transition-pow-y = 0.1
transition-pow-w = 0.1
transition-pow-h = 0.1
size-transition = true

# Backend
backend = "glx"
vsync = true
# Starten
exec_always --no-startup-id picom --config ~/.config/picom/picom.conf -b

8. Essentiële Tools voor i3

# App launcher
sudo pacman -S rofi

# Notificaties
sudo pacman -S dunst

# Wallpaper
sudo pacman -S feh
sudo pacman -S nitrogen    # GUI alternatief

# Lock screen
sudo pacman -S i3lock
yay -S i3lock-color        # Meer opties

# Screenshot
sudo pacman -S scrot
sudo pacman -S flameshot    # GUI alternatief

# Clipboard manager
sudo pacman -S xclip
sudo pacman -S clipmenu

# Volume
sudo pacman -S pavucontrol  # GUI
sudo pacman -S pamixer       # CLI

# Helderheid
sudo pacman -S brightnessctl

# Network applet
sudo pacman -S network-manager-applet

# File manager
sudo pacman -S thunar        # Lichtgewicht
sudo pacman -S ranger        # TUI (terminal)

9. EOS Package Management

9.1 pacman

# Volledig systeem updaten
sudo pacman -Syu

# Pakket installeren
sudo pacman -S pakket

# Verwijderen (+ ongebruikte deps)
sudo pacman -Rs pakket

# Zoeken
pacman -Ss zoekterm

# Info
pacman -Si pakket           # Repository
pacman -Qi pakket           # Geïnstalleerd

# Verweesde pakketten opruimen
sudo pacman -Rns $(pacman -Qdtq)

# Cache opruimen
sudo pacman -Sc             # Verwijder niet-geïnstalleerde
sudo paccache -r            # Bewaar 3 versies (pacman-contrib)

# Welk pakket levert dit bestand?
pacman -Qo /usr/bin/i3

# Alle bestanden van pakket
pacman -Ql i3-wm

9.2 yay (AUR Helper)

# Installeren (indien nog niet aanwezig op EOS)
sudo pacman -S --needed git base-devel
git clone https://aur.archlinux.org/yay.git
cd yay && makepkg -si

# Gebruik — zelfde syntax als pacman + AUR
yay -Syu                    # Update alles incl. AUR
yay -S pakket               # Installeren (ook AUR)
yay -Ss zoekterm            # Zoeken incl. AUR
yay -Yc                     # Verweesde AUR pakketten verwijderen

9.3 EOS Specifieke Tools

# EOS update tool (GUI)
eos-update

# Mirrors updaten
eos-rankmirrors

# Welcome app
eos-welcome

# EOS log bekijken
eos-log-tool

10. Theming & Rice

10.1 GTK Thema

# Installeren
sudo pacman -S lxappearance    # GUI configuratie
sudo pacman -S nwg-look        # Wayland alternatief

# Populaire thema's
yay -S catppuccin-gtk-theme-mocha
yay -S gruvbox-dark-gtk
yay -S dracula-gtk-theme
sudo pacman -S arc-gtk-theme
sudo pacman -S materia-gtk-theme

# Icons
sudo pacman -S papirus-icon-theme
yay -S catppuccin-papirus-folders

10.2 Lettertypen

# Nerd Fonts (voor icons in terminal/polybar)
sudo pacman -S ttf-jetbrains-mono-nerd
sudo pacman -S ttf-hack-nerd
sudo pacman -S ttf-firacode-nerd
yay -S nerd-fonts-complete    # Alle Nerd Fonts

# Emoji
sudo pacman -S noto-fonts-emoji
sudo pacman -S ttf-twemoji

10.3 Terminal Thema (Alacritty)

~/.config/alacritty/alacritty.toml:

[colors.primary]
background = "#1e1e2e"
foreground = "#cdd6f4"

[colors.normal]
black   = "#45475a"
red     = "#f38ba8"
green   = "#a6e3a1"
yellow  = "#f9e2af"
blue    = "#89b4fa"
magenta = "#f5c2e7"
cyan    = "#94e2d5"
white   = "#bac2de"

[font.normal]
family = "JetBrainsMono Nerd Font"
style  = "Regular"

[font]
size = 11.0

10.4 Rofi Thema

# Thema selecteren
rofi-theme-selector

# Config locatie
~/.config/rofi/config.rasi

# Catppuccin thema installeren
yay -S rofi-lbonn-git   # Wayland versie

~/.config/rofi/config.rasi:

configuration {
    modi: "drun,run,window";
    show-icons: true;
    icon-theme: "Papirus-Dark";
    font: "JetBrainsMono Nerd Font 12";
}

@import "~/.config/rofi/catppuccin-mocha.rasi"

11. Multi-Monitor

# Monitors detecteren
xrandr

# Monitor instellen
xrandr --output HDMI-1 --auto --right-of eDP-1

# In i3 config:
exec --no-startup-id xrandr --output HDMI-1 --auto --right-of eDP-1

# Workspace aan monitor koppelen
workspace $ws1 output eDP-1
workspace $ws2 output eDP-1
workspace $ws3 output HDMI-1
workspace $ws4 output HDMI-1

# arandr = GUI voor xrandr
sudo pacman -S arandr

# autorandr — auto-detectie van monitor setups
sudo pacman -S autorandr
autorandr --save home
autorandr --save werk
autorandr --change   # auto wisselen

12. Dotfiles Beheren

Dotfiles zijn je configuratiebestanden. Ze bijhouden in Git maakt herstel na herinstallatie triviaal.

# Methode 1: Bare Git Repository (aanbevolen)
git init --bare $HOME/.dotfiles
alias config='git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
config config --local status.showUntrackedFiles no

# Gebruik
config add ~/.config/i3/config
config add ~/.config/alacritty/alacritty.toml
config add ~/.config/polybar/config.ini
config commit -m "Voeg i3 en alacritty config toe"
config push

# Op nieuw systeem herstellen
git clone --bare <jouw-repo-url> $HOME/.dotfiles
alias config='git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
config checkout

# Methode 2: Symlinks met stow
sudo pacman -S stow
cd ~/dotfiles
stow i3          # Maakt symlinks vanuit dotfiles/i3/ naar ~/.config/i3/
stow alacritty

Welke bestanden?

~/.config/i3/config
~/.config/polybar/
~/.config/alacritty/
~/.config/rofi/
~/.config/picom/
~/.config/dunst/
~/.config/ranger/
~/.bashrc of ~/.zshrc
~/.config/starship.toml

13. Probleemoplossing

13.1 i3 Start Niet

# Log bekijken
~/.local/share/i3/log
journalctl --user -u i3 -b

# Config syntax controleren
i3 -C   # Valideert config zonder te starten

13.2 Applicatie Crash / Hangt

# Venster forceren sluiten
$mod+Shift+q

# Of via terminal
xkill       # Cursor wordt X, klik op venster

13.3 Beeldscherm Issues

# Display info
xdpyinfo | grep dimensions
xrandr --listmonitors

# HiDPI schaling
echo 'Xft.dpi: 192' >> ~/.Xresources
xrdb ~/.Xresources

# In i3 config voor HiDPI:
exec --no-startup-id xrandr --dpi 192

13.4 Geluidskaart Issues

# PulseAudio herstarten
pulseaudio --kill && pulseaudio --start

# PipeWire status (moderne vervanger)
systemctl --user status pipewire
systemctl --user status wireplumber

# Beschikbare sinks
pactl list sinks short

14. Handige i3 Commando's via CLI

# i3-msg — stuur commando's naar i3
i3-msg workspace 3
i3-msg floating toggle
i3-msg fullscreen toggle
i3-msg layout tabbed
i3-msg exec firefox

# Boomstructuur bekijken
i3-msg -t get_tree | python3 -m json.tool | less

# Huidige workspace info
i3-msg -t get_workspaces | python3 -m json.tool

15. Minimale i3 Config (Startpunt)

# ~/.config/i3/config — clean startpunt

set $mod Mod4
set $terminal alacritty
set $browser firefox
set $files thunar

font pango:JetBrainsMono Nerd Font 10

# Floating modifier
floating_modifier $mod

# Borders
default_border pixel 2
default_floating_border pixel 2
gaps inner 8
gaps outer 0
smart_gaps on

# Basisshortcuts
bindsym $mod+Return exec $terminal
bindsym $mod+d exec rofi -show drun -show-icons
bindsym $mod+Shift+f exec $files
bindsym $mod+Shift+b exec $browser
bindsym $mod+q kill

# Focus
bindsym $mod+h focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l focus right
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right

# Verplaatsen
bindsym $mod+Shift+h move left
bindsym $mod+Shift+j move down
bindsym $mod+Shift+k move up
bindsym $mod+Shift+l move right

# Layout
bindsym $mod+e layout toggle split
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+f fullscreen toggle
bindsym $mod+Shift+space floating toggle

# Workspaces
bindsym $mod+1 workspace number 1
bindsym $mod+2 workspace number 2
bindsym $mod+3 workspace number 3
bindsym $mod+4 workspace number 4
bindsym $mod+5 workspace number 5
bindsym $mod+Shift+1 move container to workspace number 1
bindsym $mod+Shift+2 move container to workspace number 2
bindsym $mod+Shift+3 move container to workspace number 3
bindsym $mod+Shift+4 move container to workspace number 4
bindsym $mod+Shift+5 move container to workspace number 5

# Volume
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5%
bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5%
bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle

# Scherm
bindsym Print exec scrot ~/Screenshots/%Y%m%d_%H%M%S.png
bindsym $mod+l exec i3lock -c 000000

# i3 beheer
bindsym $mod+Shift+r restart
bindsym $mod+Shift+e exec i3-nagbar -t warning -m 'Afsluiten?' -B 'Ja' 'i3-msg exit'

# Resize mode
mode "resize" {
    bindsym h resize shrink width 5 px or 5 ppt
    bindsym j resize grow height 5 px or 5 ppt
    bindsym k resize shrink height 5 px or 5 ppt
    bindsym l resize grow width 5 px or 5 ppt
    bindsym Return mode "default"
    bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"

# Autostart
exec --no-startup-id nm-applet
exec --no-startup-id picom -b
exec --no-startup-id feh --bg-scale ~/wallpaper.jpg
exec_always --no-startup-id ~/.config/polybar/launch.sh

# Statusbalk
bar {
    status_command i3status
    position top
}

Fox & Fish Cybersecurity | Intern gebruik