Skip to content
L Luka Piplica
linux bspwm dotfiles customization nord

Gestaltung eines eleganten Nordic-Desktops: BSPWM-Anpassung auf Pop!_OS

Ein umfassender Leitfaden für ein minimalistisches, performantes Tiling-WM-Setup mit BSPWM, Polybar, Picom und ZSH auf Pop!_OS im eleganten Nordic-Stil.

L

Luka Piplica

10 Min. Lesezeit
Isometrisches GIF, das das Gehäuse eines Vintage-Computerbildschirms zeigt, das sich öffnet, um eine eingebaute mechanische Tastatur zu enthüllen.

Tiling-Fenstermanager (WMs) werden in der Unix-Community wegen ihres geringen Ressourcenverbrauchs, ihres extremen Anpassungspotenzials und ihrer Effizienz sehr geschätzt. Durch das Ersetzen traditioneller Desktop-Umgebungen durch eine tastaturgesteuerte Fensterverwaltung können Entwickler einen hochgradig optimierten Workflow erreichen.

Dieser Leitfaden beschreibt Schritt für Schritt die Konfiguration einer maßgeschneiderten Desktop-Umgebung auf Basis von Pop!_OS und BSPWM (Binary Space Partitioning Window Manager). Basierend auf der beliebten Nordic-Farbpalette kombiniert dieses Setup minimalistische Ästhetik mit leistungsstarker Funktionalität.


Workspace-Showcase

Hier ist eine visuelle Übersicht der fertigen Umgebung, auf der verschiedene angepasste System- und Terminal-Utilities laufen:

Kombinierte Ansicht der angepassten Nordic-Desktop-Umgebung


Kernarchitektur des Systems

Um diese Umgebung zu replizieren, ersetzen wir den Standard-GNOME-Desktop von Pop!_OS durch ein modulares Setup aus einzelnen Utilities. Die folgende Tabelle listet die technischen Spezifikationen der Umgebung auf:

KomponenteSoftware / ProjektBeschreibung
BetriebssystemPop!_OSDebian/Ubuntu-basierte, stabile Linux-Distribution
FenstermanagerBSPWMBinary-Space-Partitioning Tiling-Fenstermanager
Hotkey-DaemonSxhkdEinfacher X-Hotkey-Daemon
StatusleistePolybarSchneller und einfach zu bedienender Statusleisten-Generator
X-CompositorPicom (ibhagwan Fork)Compositor mit abgerundeten Ecken und Dual-Kawase-Blur
App-LauncherRofiEin Fensterwechsler, Anwendungsstarter und dmenu-Ersatz
Terminal-EmulatorAlacrittyGPU-beschleunigter Terminal-Emulator
Shell & ThemeZsh + Powerlevel10kInteraktive Hochleistungs-Shell-Umgebung
Visuelles DesignNordic Dark GTKSchlichtes, dunkles GTK-Theme, inspiriert von arktischen Farben
Icons & CursorFlattery Dark & Oreo BlueFlache Icons und elegante, moderne Cursor-Zeiger
HauptschriftartSource Code ProMonospaced-Schriftart, optimiert für beste Lesbarkeit beim Codieren

Schritt-für-Schritt-Installation & Kompilierung

Diese Anleitung setzt voraus, dass Sie mit einer Neuinstallation von Pop!_OS beginnen. Um eine absolute Kontrolle über die Abhängigkeiten und eine optimale Leistung zu gewährleisten, werden wir einige Kernkomponenten direkt aus dem Quellcode kompilieren.

1. Synchronisierung von Repositories & Systempaketen

Bevor Sie Abhängigkeiten herunterladen, stellen Sie sicher, dass Ihre lokale Paketdatenbank auf dem neuesten Stand ist und alle Basis-Systemprogramme vollständig aktualisiert sind:

sudo apt update
sudo apt upgrade -y

2. Installation und Konfiguration von BSPWM

BSPWM ist ein leichtgewichtiger Tiling-Fenstermanager, der Fenster als Blätter eines vollständigen Binärbaums darstellt.

Abrufen der Kern-Abhängigkeiten

Kompilieren und führen Sie BSPWM sicher aus, indem Sie die erforderlichen XCB- und Systembibliotheken installieren:

sudo apt install -y build-essential git vim xcb libxcb-util0-dev libxcb-ewmh-dev libxcb-randr0-dev libxcb-icccm4-dev libxcb-keysyms1-dev libxcb-xinerama0-dev libasound2-dev libxcb-xtest0-dev libxcb-shape0-dev

Kompilieren aus dem Quellcode

Klonen Sie das offizielle Repository, kompilieren Sie die Binärdatei und führen Sie eine systemweite Installation durch.

cd ~/Downloads
git clone https://github.com/baskerville/bspwm.git
cd bspwm
make
sudo make install

Konfigurationen initialisieren

Erstellen Sie die Verzeichnisstruktur für die Konfiguration und kopieren Sie das Standard-Initialisierungsskript:

mkdir -p ~/.config/bspwm
cp examples/bspwmrc ~/.config/bspwm/
chmod +x ~/.config/bspwm/bspwmrc
cd ..

3. Einrichtung des Simple X Hotkey Daemons (sxhkd)

Im Gegensatz zu anderen Tiling-Fenstermanagern verarbeitet BSPWM Tastatureingaben nicht direkt. Stattdessen verlässt es sich auf einen separaten Daemon, sxhkd, um Tastendrücke mit Befehlen zu verknüpfen.

Kompilieren von sxhkd

git clone https://github.com/baskerville/sxhkd.git
cd sxhkd
make
sudo make install

Konfigurieren von Tastaturkurzbefehlen

Erstellen Sie das Konfigurationsverzeichnis und stellen Sie die Beispiel-Hotkey-Definitionen bereit:

mkdir -p ~/.config/sxhkd
cp ../bspwm/examples/sxhkdrc ~/.config/sxhkd/
cd ..

Konfigurationshinweis: Wenn Sie ~/.config/sxhkd/sxhkdrc ändern, überprüfen Sie, ob der definierte Terminal-Emulator korrekt ist. Wenn Sie vor dem Wechsel in einer Standard-GNOME-Shell-Umgebung testen, passen Sie den standardmäßigen Terminal-Befehlsblock so an, dass gnome-terminal aufgerufen wird.


4. Kompilieren von Polybar für Statusanzeigen

Polybar ist ein hochgradig modulares Tool, das elegante, anpassbare Statusleisten generiert.

Abrufen der Build-Abhängigkeiten

sudo apt install -y cmake cmake-data pkg-config python3-sphinx libcairo2-dev libxcb1-dev libxcb-util0-dev libxcb-randr0-dev libxcb-composite0-dev python3-xcbgen xcb-proto libxcb-image0-dev libxcb-ewmh-dev libxcb-icccm4-dev libxcb-xkb-dev libxcb-xrm-dev libxcb-cursor-dev libasound2-dev libpulse-dev libjsoncpp-dev libmpdclient-dev libcurl4-openssl-dev libnl-genl-3-dev

Kompilieren und Installieren

git clone --recursive https://github.com/polybar/polybar
cd polybar
mkdir build
cd build
cmake ..
make -j$(nproc)
sudo make install
cd ../..

5. Kompilieren von Picom mit experimentellen Backends

Standard-Desktop-Umgebungen verwenden Composite-Systeme zur Verwaltung von Fenstern. Für BSPWM nutzen wir einen angepassten Fork von Picom (gepflegt von ibhagwan), der einen flüssigen Dual-Kawase-Blur, Transparenz für aktive Fenster und elegante, abgerundete Fensterecken unterstützt.

Abrufen der Abhängigkeiten

sudo apt install -y meson libxext-dev libxcb1-dev libxcb-damage0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-render-util0-dev libxcb-render0-dev libxcb-randr0-dev libxcb-composite0-dev libxcb-image0-dev libxcb-present-dev libxcb-xinerama0-dev libpixman-1-dev libdbus-1-dev libconfig-dev libgl1-mesa-dev libpcre2-dev libevdev-dev uthash-dev libev-dev libx11-xcb-dev

Generieren der Binärdatei mit Ninja

git clone https://github.com/ibhagwan/picom.git
cd picom
git submodule update --init --recursive
meson --buildtype=release . build
ninja -C build
sudo ninja -C build install
cd ..

6. Kern-Desktopkomponenten: Rofi & Alacritty

Nachdem die Kernarchitektur für die Fensterverwaltung installiert ist, holen wir uns unser Anwendungsmenü und die Haupt-Terminalumgebung:

sudo apt install -y rofi alacritty

Einrichten benutzerdefinierter Konfigurationen

Wir laden das vorkonfigurierte Dotfiles-Repository herunter, um unsere maßgeschneiderten Konfigurationen zu extrahieren:

git clone https://github.com/lukapiplica/nordic-bspwm-dotfiles
mkdir -p ~/.config/alacritty
cp nordic-bspwm-dotfiles/alacritty/alacritty.yml ~/.config/alacritty/

Tipp zur Hardwarebeschleunigung: Wenn bei älteren Grafikkarten oder in virtuellen Umgebungen der Fehler GLSL 3.30 is not supported auftritt, erzwingen Sie die Software-Rasterisierung, indem Sie die Desktop-Konfigurationsdatei von Alacritty anpassen:

sudo nano /usr/share/applications/com.alacritty.Alacritty.desktop

Ersetzen Sie die Zeile Exec=alacritty durch Exec=bash -c "LIBGL_ALWAYS_SOFTWARE=1 alacritty".


Feinschliff der Oberfläche & Tuning der Umgebung

Jetzt konfigurieren wir ZSH, Themes, Schriftarten, Hintergrundbilder und Sperrbildschirme, um die Ästhetik des Nordic-Workspace abzurunden.

1. Typografie & Schriftart-Caching

Fügen Sie die primäre Monospaced-Schriftart für die Codebasis hinzu, um eine korrekte Darstellung von Symbolen und Terminal-Glyphen zu gewährleisten:

sudo cp -r ~/Downloads/nordic-bspwm-dotfiles/Source_Code_Pro /usr/share/fonts/
fc-cache -fv

2. Setzen von Hintergrundbildern über feh

Um die Platzierung des Hintergrundbilds beim Login programmatisch zu steuern, installieren Sie das Kommandozeilen-Utility feh:

sudo apt install feh -y
mkdir -p ~/Wall
cp -r ~/Downloads/nordic-bspwm-dotfiles/Wallpapers/ ~/Wall/

Fügen Sie den Hintergrund-Startbefehl in Ihre bspwmrc ein, damit er bei der Initialisierung des Fenstermanagers ausgeführt wird:

echo 'feh --bg-fill $HOME/Wall/Wallpapers/wallpaper2.jpeg &' >> ~/.config/bspwm/bspwmrc

3. Aktivieren benutzerdefinierter Polybar-Themes

Exportieren Sie unsere angepassten Polybar-Setups und kopieren Sie die erforderlichen TrueType-Schriftarten, um die Symbole in der Statusleiste zu unterstützen:

mkdir -p ~/.config/polybar
cp -r ~/Downloads/nordic-bspwm-dotfiles/polybar/* ~/.config/polybar/
echo '~/.config/polybar/./launch.sh &' >> ~/.config/bspwm/bspwmrc
sudo cp ~/.config/polybar/fonts/* /usr/share/fonts/truetype/
fc-cache -fv

4. Optimierung der interaktiven Shell (ZSH & Powerlevel10k)

Wechseln Sie die Standard-Shell-Umgebung von der Standard-Bash zu ZSH und laden Sie anschließend das Oh-My-ZSH-Framework herunter:

sudo apt install zsh -y
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Anwenden des Powerlevel10k-Prompts

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

Ändern Sie die Umgebungskonfiguration:

  1. Öffnen Sie Ihr Terminal-Profil (nano ~/.zshrc).
  2. Setzen Sie die Zeile für das aktive Theme auf: ZSH_THEME="powerlevel10k/powerlevel10k".
  3. Speichern und schließen Sie die Datei. Führen Sie source ~/.zshrc aus oder geben Sie p10k configure ein, um den visuellen Einrichtungsassistenten zu starten.

5. Entwickeln in Vim: Integration des Nordic-Themes

Portieren Sie die Nordic-Farbmatrix nach Vim und installieren Sie das ästhetische Status-Utility Vim-Airline:

mkdir -p ~/.vim/colors
cp ~/Downloads/nordic-bspwm-dotfiles/nord.vim ~/.vim/colors/

Klonen Sie die Airline-Erweiterung:

git clone https://github.com/vim-airline/vim-airline.git ~/Downloads/vim-airline
cp -r ~/Downloads/vim-airline/* ~/.vim/

Aktivieren Sie die Konfigurationsregeln in Ihrem Editor-Profil:

echo 'colorscheme nord' >> ~/.vimrc
echo "let g:airline_theme='base16'" >> ~/.vimrc

6. Rofi-Anwendungsmenü-Anpassung

Kopieren Sie die Nord-Theme-Datei und konfigurieren Sie sie als primäre Benutzeroberfläche:

mkdir -p ~/.config/rofi/themes
cp ~/Downloads/nordic-bspwm-dotfiles/nord.rasi ~/.config/rofi/themes/
rofi-theme-selector

Theme-Aktivierung: Navigieren Sie innerhalb der Auswahl zum Nord theme, drücken Sie Enter für eine Vorschau und wenden Sie es global an, indem Sie Alt + a drücken.

Um Rofi als Standard-Anwendungsstarter zu binden, aktualisieren Sie Ihre Tastenkombinationen:

nano ~/.config/sxhkd/sxhkdrc

Ändern Sie die Tastenkombination zum Starten von Anwendungen von dmenu_run zu rofi -show drun.


Workspace-Produktivität & CLI-Utilities

Um eine voll funktionsfähige Entwicklungs-Workstation aufzubauen, installieren wir mehrere Kommandozeilenprogramme und visuelle Utilities, die unsere angepassten Workspaces füllen.

Nordic customized desktop displaying advanced system monitors and visualizers

Installation der benutzerdefinierten CLI-Suite

Installieren Sie moderne Visualisierer, System-Hardware-Monitore und Dateimanager über die Standard-Paketdepots:

# Systemmonitor (Htop)
sudo apt install htop -y

# Matrix-Regen-Bildschirmeffekt (Cmatrix)
sudo apt install cmatrix -y

# Minimalistischer Bildbetrachter (Sxiv)
sudo apt install sxiv -y

# Terminal-basierter Dateimanager (Ranger)
sudo apt install ranger -y

# Digitale Terminal-Uhr (Tty-clock)
sudo apt install tty-clock -y

Erweiterte Visualisierer & Systeminformations-Engines

CAVA (Console-based Audio Visualizer)

Kompilieren Sie CAVA, um Balken-Visualisierungen auf Basis von ALSA/PulseAudio-Eingangssignalen in Echtzeit zu generieren:

sudo add-apt-repository ppa:hsheth2/ppa -y
sudo apt update
sudo apt install cava -y

pfetch (Minimalistischer Systeminformations-Fetcher)

git clone https://github.com/dylanaraps/pfetch.git ~/Downloads/pfetch
sudo install ~/Downloads/pfetch/pfetch /usr/local/bin/

Chafa (Terminal Character Art Engine)

Chafa analysiert Standardbilder und verwandelt sie in hochdetaillierte, im Terminal gerenderte Zeichenkunst (Character Art):

git clone https://github.com/hpjansson/chafa.git ~/Downloads/chafa
cd ~/Downloads/chafa
./autogen.sh
make
sudo make install
cd ~

Snake (Klassiker-Replikation fürs Terminal)

Replizieren Sie das klassische Nokia-Snake-Spiel mithilfe von Python-Pygame-Bibliotheken:

sudo apt install python3-pip -y
python3 -m pip install -U pygame --user
git clone https://github.com/Unixado/Snake.git ~/Downloads/Snake

Starten Sie das Spiel direkt aus Terminal-Sitzungen:

python3 ~/Downloads/Snake/src/game.py

Terminal-Snake-Spiel, das in der angepassten Umgebung läuft

Lollypop (Moderner Desktop-Audio-Player)

sudo add-apt-repository ppa:gnumdk/lollypop -y
sudo apt update
sudo apt install lollypop -y

GTK- & Firefox-Ästhetik anpassen

Damit eine Betriebssystem-Oberfläche einheitlich wirkt, müssen sowohl Anwendungen als auch Webbrowser dasselbe Farbschema teilen.

1. Desktop-Oberflächen-Integration via LXAppearance

Um benutzerdefinierte Widget-Stile, Icon-Packs und Cursor auf schlanken Window-Managern zu laden und zuzuweisen, installieren Sie LXAppearance:

sudo apt install lxappearance -y

Öffnen Sie lxappearance, um die heruntergeladenen Nordic-Design-Assets auszuwählen und anzuwenden:

2. Minimalistisches Browser-Theming (Firefox & Minimal Functional Fox)

Laden Sie das benutzerdefinierte minimalistische userChrome-Setup herunter, um Standard-Titelleisten zu entfernen, Webelemente zu zentrieren und die Browserränder an die Nordic-Farbpalette anzupassen:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/mut-ex/minimal-functional-fox/master/install.sh)"
cp -r ~/Downloads/nordic-bspwm-dotfiles/.firefoxthemes ~/
  1. Starten Sie Firefox.
  2. Navigieren Sie zu Einstellungen > Startseite (Preferences > Home).
  3. Suchen Sie nach Homepage und neue Fenster, wählen Sie Benutzerdefinierte Adressen aus und geben Sie den Zielpfad ein, der auf Ihre lokale Startseite verweist: file:///home/<IHR_BENUTZERNAME>/.firefoxthemes/startpage/Startpage/index.html
  4. Starten Sie die Anwendung neu, um die Layout-Änderungen zu übernehmen.

Tastenkombinationen & Desktop-Navigation

Tiling-Window-Manager optimieren die Produktivität, indem sie Ihre Hände auf der Grundlinie Ihrer Tastatur halten. Die Windows-/Super-Taste (super) ist als primäre Modifikatortaste konfiguriert.

Nachfolgend finden Sie die Standard-Referenzliste der standardmäßigen und benutzerdefinierten Desktop-Hotkeys:

TastenkombinationZielaktion / Ereignis
super + EnterStartet eine GPU-beschleunigte Alacritty-Terminal-Instanz
super + SpaceÖffnet das Rofi-Anwendungsmenü zum Starten von GUI-Tools
super + EscapeLädt die sxhkd-Konfigurationsregeln sofort neu
super + Alt + rStartet den BSPWM-Window-Manager neu
super + wSchließt das aktive Fenster im Fokus
super + [1-0]Navigiert zwischen den Workspaces 1 bis 10
super + gTauscht das fokussierte Fenster mit dem Haupt-Master-Frame
super + mSchaltet die Vollbild-Layoutvergrößerung um
super + [h,j,k,l]Bewegt den Fensterfokus richtungsabhängig (Links, Unten, Oben, Rechts)
super + Alt + [h,j,k,l]Erweitert die Grenze des fokussierten Fensters nach außen
super + Alt + Shift + [h,j,k,l]Zieht die Grenze des fokussierten Fensters nach innen
super + sSchaltet den Floating-Modus für das ausgewählte Fenster um
super + Ctrl + [Pfeiltasten]Verschiebt ein schwebendes (floating) Fenster anhand von Koordinaten

Fazit & professionelle Retrospektive

Der Neuaufbau einer Desktop-Umgebung aus modularen CLI-Utilities demonstriert die Flexibilität und Tiefe Linux-basierter Systeme. Über das saubere, minimale Nordic-Design hinaus bietet dieser BSPWM- und Pop!_OS-Arbeitsplatz erhebliche Leistungsvorteile: geringere CPU-/Speicherauslastung, absolute Kontrolle über das Hotkey-Mapping und ein extrem reaktionsschneller Workspace, der genau auf fortgeschrittene Softwareentwicklungs-Workflows zugeschnitten ist.

Egal, ob Sie Entwickler, Systemadministrator oder Linux-Enthusiast sind – das Erstellen Ihres eigenen tastaturgesteuerten Arbeitsbereichs ist eine äußerst lohnende Investition in Ihre tägliche Entwicklererfahrung und betriebliche Effizienz.

Zurück zum Blog
Teilen:

Bleib auf dem Laufenden

Verpasse nichts – neue Artikel, Gedanken und Updates.