Mon setup Arch Linux + Hyprland
Février 2026
L'objectif
Après avoir monté un cluster K3s sur Raspberry Pi, configuré ArgoCD en GitOps et déployé une stack média complète, il me manquait un poste de travail à la hauteur. C'est un problème chez moi, je préfère perdre du temps dans mes projet afin d'être à l'aise et satisfait dans le milieu où je travail. A ce moment là j'ai pas mal parlé avec des amis sur les nouveauté wayland et hyprland. Ayant travaillé sur un Arch Linux avec I3 que j'avais déjà configuré de A à Z mais supprimé entièrement depuis le temps. J'ai décidé de remonter mon Dell XPS 13 de zéro avec Arch Linux et un environnement Wayland entièrement personnalisé.
L'idée : un desktop minimal, rapide et beau, où chaque composant est choisi et configuré à la main.

Le matériel
| Composant | Détail |
|---|---|
| Machine | Dell XPS 13 |
| CPU | Intel Core i7-8550U @ 1.80GHz |
| GPU | Intel UHD Graphics 620 |
| RAM | 16 Go |
| Stockage | NVMe 468 Go |
| Écran | 1920x1080 (AU Optronics) |
Architecture du desktop
Voici la stack complète, du boot à l'écran :
┌─────────────────────────────────────────────────────┐
│ GRUB │
│ Space Isolation theme │
├─────────────────────────────────────────────────────┤
│ SDDM │
│ SilentSDDM (theme ken + Parachute) │
├─────────────────────────────────────────────────────┤
│ Hyprland (Wayland) │
│ ┌──────────────────────────────────────────────┐ │
│ │ eww bar │ │
│ │ CPU | RAM | Temp · App - Titre · Vol | 🔋│ │
│ ├──────────────────────────────────────────────┤ │
│ │ │ │
│ │ swww (Gavarnie3.jpg) │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Ghostty │ │ Brave │ │ │
│ │ │ + fastfetch │ │ │ │ │
│ │ │ + p10k │ │ │ │ │
│ │ └─────────────┘ └─────────────┘ │ │
│ └──────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────┤
│ hyprlock (écran de verrouillage) │
│ PipeWire + WirePlumber (audio) │
│ sunsetr (filtre lumière bleue) │
└─────────────────────────────────────────────────────┘
Installation de base : Arch Linux
Pourquoi Arch ?
- Rolling release : toujours à jour, pas de mise à niveau majeure
- Minimaliste : on installe uniquement ce qu'on veut
- AUR : accès à pratiquement tous les logiciels Linux existants
- Documentation : le wiki Arch est la meilleure doc Linux qui existe
Les paquets essentiels
# Système de base
pacman -S base linux linux-firmware intel-ucode
# Wayland + Hyprland
pacman -S hyprland hyprlock hyprpaper xdg-desktop-portal-hyprland
# Audio
pacman -S pipewire pipewire-pulse wireplumber
# Terminal et shell
pacman -S ghostty zsh
# Utilitaires
pacman -S grim slurp wl-clipboard nautilus eza zoxide fzf
Hyprland : le compositeur Wayland
Hyprland est un compositeur Wayland tiling avec des animations fluides et une configuration en texte. Version installée : 0.54.2.
Configuration
La config Hyprland est éclatée en plusieurs fichiers dans ~/.local/share/dotfiles/default/hypr/conf/ :
hypr/conf/
├── autostart.conf # Programmes au démarrage
├── laptop-keybindings.conf # Raccourcis clavier
├── desktop-keybindings.conf
└── ...
Autostart
# ~/.local/share/dotfiles/default/hypr/conf/autostart.conf
exec-once = ~/.local/share/dotfiles/bin/check-uwsm
exec-once = eww open bar
exec-once = swww-daemon && swww img /home/nocob/Images/Gavarnie3.jpg
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
Raccourcis clés
| Raccourci | Action |
|---|---|
Super + Q |
Ouvrir le terminal (Ghostty) |
Super + B |
Ouvrir le navigateur (Brave) |
Super + W |
Fermer la fenêtre |
Super + L |
Verrouiller l'écran |
Super + R |
Lanceur d'applications (Walker) |
Super + 1-9 |
Changer de workspace |
Super + Shift + S |
Screenshot (sélection de zone) |
Print Screen |
Screenshot plein écran |
Super + Ctrl + N |
Toggle filtre lumière bleue |
Super + Ctrl + W |
Changer de fond d'écran |
Fn Volume |
Volume jusqu'à 200% |
La barre : eww (Elkowar's Wacky Widgets)
J'ai remplacé Waybar par eww pour avoir un contrôle total sur le design. eww utilise un langage de config maison (Yuck) et du SCSS pour le style.
Design
Le concept : des pilules flottantes transparentes sur un fond transparent, sans barre visible.
| Pakage | CPU | RAM | Temp · App — Titre fenêtre · WiFi | Vol 110% | 🔋 17% | 18:30 | power |

Les pilules
Chaque widget est encapsulé dans une pilule avec :
- Fond semi-transparent (
rgba(60, 70, 80, 0.8)) - Bords arrondis (
border-radius: 14px) - Icônes Nerd Font colorées par catégorie
| Widget | Icône | Couleur | Click |
|---|---|---|---|
| CPU | | Bleu | Ouvre btop |
| RAM | Vert | Ouvre btop | |
| Température | | Jaune | - |
| Fenêtre active | - | Blanc | - |
| Réseau | | Vert | nmtui-connect |
| Volume | | Accent | Toggle mute |
| Batterie | / | Vert/Rouge | - |
| Horloge | | Accent | - |
| Power | | Rouge | Menu power |
Scripts
Chaque widget est alimenté par un script shell dans ~/.config/eww/scripts/ :
- volume : écoute PipeWire via
pactl subscribe, émet du JSON en temps réel - network : écoute
nmcli monitorpour les changements réseau - activewindow : récupère le titre via
hyprctl activewindow -javec fallback polling - workspaces : écoute le socket IPC Hyprland via
socat
Batterie intelligente
L'icône de batterie change dynamiquement :
- En charge : icône (batterie avec éclair)
- Sur batterie : icône de niveau ( à , 11 niveaux)
- Batterie faible (<20%) : animation clignotante rouge
- Mise à jour toutes les 5 secondes
Fond d'écran : swww
J'ai initialement utilisé hyprpaper mais il avait un bug où l'image ne s'affichait pas au démarrage (le process tournait mais rien à l'écran). Après de nombreux essais (chemins absolus, symlinks, relances), j'ai basculé sur swww qui fonctionne parfaitement.
# Changer le fond d'écran avec une transition
swww img ~/Images/Gavarnie3.jpg --transition-type fade --transition-duration 1
Le fond est configuré dans l'autostart Hyprland et persiste au reboot.
Écran de verrouillage : hyprlock
A la base je voulais le même qu'au démarrage (sddm) mais apparement pas compatible pour lock le pc. Donc j'ai basculé pour un écran de verrouillage qui utilise un style inspiré de MrVivekRajan/Hyprlock-Styles (Style-1), adapté avec :
- Image de fond : photo personnelle
- Panneau sombre semi-transparent à droite (
rgba(0,0,0,0.55), 450px) - Avatar circulaire avec bordure blanche
- Horloge grande (40px) en Red Hat Display
- Date sous l'horloge
- Champ de saisie avec placeholder et icône cadenas
- Message d'accueil "Welcome!" en haut
Tout est aligné à droite pour créer un contraste avec l'image de fond.
Je suis incapable de faire une capture d'écrans quand il est vérouillé désolé.
# ~/.config/hypr/hyprlock.conf
background {
path = ~/.config/hypr/background.jpg
blur_passes = 0
contrast = 0.8916
brightness = 0.8172
}
shape {
size = 450, 1080
color = rgba(0, 0, 0, 0.55)
halign = right
}
Écran de connexion : SDDM + SilentSDDM
Pour l'écran de login, j'utilise SDDM avec le thème SilentSDDM en variante "ken" (rouge et blanc).
Installation
# Le thème est installé dans /usr/share/sddm/themes/silent/
# La config pointe vers le bon thème :
# /usr/share/sddm/themes/silent/metadata.desktop → ConfigFile=configs/ken.conf
Point important : GreeterEnvironment
SilentSDDM nécessite que le GreeterEnvironment soit configuré dans /etc/sddm.conf.d/kde_settings.conf :
[General]
GreeterEnvironment=QML2_IMPORT_PATH=/usr/share/sddm/themes/silent/components/
Sans ça, le thème ne charge pas correctement et on se retrouve avec l'image par défaut.
Fond d'écran personnalisé
Le fond d'écran SDDM est indépendant du fond d'écran du bureau. Pour le changer :
sudo cp ~/Images/Parachute.jpg /usr/share/sddm/themes/silent/backgrounds/
sudo sed -i 's|background = ".*"|background = "Parachute.jpg"|g' \
/usr/share/sddm/themes/silent/configs/ken.conf
GRUB : Space Isolation
Le bootloader utilise le thème Space Isolation, inspiré du jeu Alien: Isolation. C'est un thème de l'espace, j'aime beaucoup l'espace.
# Installation
git clone https://github.com/callmenoodles/space-isolation.git /tmp/space-isolation
sudo cp -r /tmp/space-isolation/1920x1080 /boot/grub/themes/space-isolation
# Configuration
GRUB_THEME="/boot/grub/themes/space-isolation/theme.txt"
GRUB_GFXMODE=1920x1080
sudo grub-mkconfig -o /boot/grub/grub.cfg
Le catalogue complet des thèmes GRUB est disponible sur Gorgeous-GRUB.
Terminal : Ghostty + Zsh + Powerlevel10k
Ghostty
Ghostty est un terminal GPU-accéléré, léger et rapide. Configuration dans ~/.config/ghostty/config :
font-family = "CaskaydiaMono Nerd Font"
font-size = 12
background-opacity = 0.8
cursor-style = "block"
copy-on-select = clipboard # Selection = copie auto
keybind = ctrl+shift+c=copy_to_clipboard
keybind = ctrl+v=paste_from_clipboard
keybind = ctrl+c=unbind # Ctrl+C = signal d'interruption
Zsh + Powerlevel10k
Le shell utilise Zsh avec :
- Powerlevel10k : prompt rapide et informatif
- oh-my-zsh : framework de plugins
- Plugins : git, sudo, archlinux, zsh-autosuggestions, fast-syntax-highlighting
- zoxide : navigation rapide dans les dossiers (
zau lieu decd) - fzf : recherche floue
Fastfetch au démarrage
À chaque ouverture de terminal, fastfetch affiche le logo Arch Linux avec les infos système :

# ~/.zshrc (avant p10k instant prompt)
if [[ $(tty) == *"pts"* ]]; then
fastfetch
fi
La config fastfetch utilise un layout custom avec des icones Nerd Font et un cadre en box-drawing :
╭───────────╮
│ distro │ Arch Linux
│ kernel │ 6.19.6-arch1-1
│ wm │ Hyprland
│ term │ ghostty
│ shell │ zsh 5.9
│ cpu │ Intel i7-8550U
│ disk │ 16G / 468G (4%)
│ memory │ 4.0G / 15.5G
│ uptime │ 2h 30m
├───────────┤
│ colors │ ● ● ● ● ● ● ● ●
╰───────────╯
Aliases utiles
alias ls='eza -lh --group-directories-first'
alias ll='eza -al --group-directories-first'
alias lt='eza -a --tree --level=2'
alias pf='fastfetch'
Audio : PipeWire
L'audio est géré par PipeWire + pipewire-pulse (compatibilité PulseAudio) + WirePlumber (gestionnaire de sessions).
Point important
Sur Arch avec Hyprland, pipewire-pulse n'est pas toujours installé par défaut. Sans lui, les touches de volume ne fonctionnent pas (swayosd-client échoue à se connecter à PulseAudio).
pacman -S pipewire-pulse
systemctl --user enable --now pipewire-pulse.service pipewire-pulse.socket
Volume à 200%
Les touches Fn sont configurées pour monter jusqu'à 200% :
binde = , XF86AudioRaiseVolume, exec, swayosd-client --output-volume +5 --max-volume 200
binde = , XF86AudioLowerVolume, exec, swayosd-client --output-volume -5 --max-volume 200
Filtre lumière bleue : sunsetr
sunsetr est un filtre de lumière bleue automatique pour Wayland. Il ajuste la température de couleur de l'écran en fonction de l'heure.
# Toggle avec Super+Ctrl+N
# Ou manuellement :
sunsetr-toggle
Le service systemd est activé pour démarrer automatiquement avec la session, l'aventage c'est qu'on ne le remarque pas.
Screenshots : grim + slurp
Les captures d'écran utilisent grim (capture) et slurp (sélection de zone) :
| Raccourci | Action |
|---|---|
Print Screen |
Capture plein écran → presse-papier |
Shift + Print Screen |
Sélection de zone → presse-papier |
Super + Shift + S |
Sélection de zone → presse-papier |
Les screenshots sont copiés directement dans le presse-papier via wl-copy.
Arborescence des fichiers de configuration
~/.config/
hypr/
hyprlock.conf # Écran de verrouillage
hyprpaper.conf # (ancien, remplacé par swww)
background.jpg # Image de fond lockscreen
avatar.jpg # Photo de profil lockscreen
eww/
eww.yuck # Config de la barre (widgets)
eww.scss # Styles / couleurs
scripts/ # Scripts des widgets
volume, network, bluetooth, music,
activewindow, workspaces, powermenu
ghostty/
config # Config du terminal
~/.local/share/dotfiles/
default/
hypr/conf/
autostart.conf # Programmes au démarrage
laptop-keybindings.conf # Raccourcis clavier
zshrc/
aliases # Aliases shell
init # Init shell (plugins, fastfetch)
config/
fastfetch/configs/
config-default.jsonc # Config fastfetch
bin/
sunsetr-toggle # Toggle filtre lumière bleue
sddm-theme # Script changement thème SDDM
/usr/share/sddm/themes/silent/
metadata.desktop # Config active du thème SDDM
configs/ # Variantes (ken, nord, rei...)
backgrounds/ # Images de fond
/etc/default/grub # Config GRUB
/boot/grub/themes/space-isolation/ # Theme GRUB
Stack complète des outils
| Catégorie | Outil | Rôle |
|---|---|---|
| Compositeur | Hyprland 0.54.2 | Window manager Wayland tiling |
| Barre | eww 0.5.0 | Barre de statut personnalisable |
| Terminal | Ghostty 1.3.0 | Émulateur de terminal GPU |
| Shell | Zsh 5.9 + P10k | Shell avec prompt informatif |
| Fond d'écran | swww 0.11.2 | Gestionnaire de wallpaper Wayland |
| Lock screen | hyprlock 0.9.2 | Écran de verrouillage |
| Login | SDDM 0.21.0 | Display manager |
| Bootloader | GRUB | Avec thème Space Isolation |
| Audio | PipeWire 1.6.1 | Serveur audio moderne |
| OSD | SwayOSD 0.3.0 | Overlay volume/luminosité |
| Nuit | sunsetr 0.11.1 | Filtre lumière bleue |
| Lanceur | Walker 2.15.2 | Lanceur d'applications |
| Navigateur | Brave / Zen | Navigation web |
| Fichiers | Nautilus 49.4 | Gestionnaire de fichiers |
| Screenshots | grim + slurp | Capture d'écran |
| Fetch | fastfetch 2.60.0 | Infos système au démarrage |
Leçons apprises
hyprpaper vs swww
hyprpaper 0.8.3 avait un bug où le wallpaper ne s'affichait pas au démarrage malgré un process fonctionnel. Après de nombreux essais (symlinks, chemins absolus, service systemd vs exec-once, kill + relance), la solution a été de passer à swww qui a fonctionné du premier coup.
PipeWire et les touches de volume
Sur une installation fraîche, les touches de volume peuvent ne pas fonctionner. Il faut s'assurer que pipewire-pulse est installé et que le service tourne. Sans la couche de compatibilité PulseAudio, les outils comme swayosd-client et pactl ne peuvent pas contrôler le volume.
SDDM et GreeterEnvironment
Les thèmes SDDM complexes comme SilentSDDM nécessitent un GreeterEnvironment correct dans la config. Si le QML2_IMPORT_PATH n'est pas configuré, le thème se charge partiellement et affiche l'image par défaut au lieu du thème choisi.
Powerlevel10k et fastfetch
Le "instant prompt" de Powerlevel10k redirige stdout, ce qui empêche fastfetch de s'afficher. La solution : lancer fastfetch avant le bloc instant prompt dans ~/.zshrc.