fjordwm is a customized version of suckless dwm with patches, themes, and scripts. Forked from namishh's bedwm.
| Terminal Setup | Development |
|---|---|
![]() |
![]() |
| Lock Screen |
|---|
![]() |
Edit suckless/fjordwm/config.h for colors, keybindings, layouts, and rules.
- Desktop: all status bar modules enabled
- Laptop: fewer status bar modules
actualfullscreenautostartbarheightbarpaddingcfactscyclelayoutspertagscratchpadsstatus2dstatusbuttonstatuscmdstatuspaddingswallowsystraysystray-iconsizeunderline-tagsvanitygaps
- Alternative tag labels via
alttags - Per-tag color styling for the active tag palette
- No separate window-title area in the bar
- Layout set includes
tile,floating,monocle,spiral,dwindle, andcenteredmaster - Floating scratchpads are centered when shown
- Floating windows are re-centered when geometry would push them off-screen
- gcc, make, git
- fzf for interactive setup
- sudo
git clone https://github.com/SUDOER1337/fjordwm.git
cd fjordwm
./setup.sh
If you only want part of the repository, use Git sparse checkout. This is optional and client-side; the repo does not force partial clone behavior.
Window manager only (manual build/config work):
git clone --filter=blob:none --no-checkout https://github.com/SUDOER1337/fjordwm.git
cd fjordwm
git sparse-checkout init --cone
git sparse-checkout set suckless/fjordwm
git checkout main
cd suckless/fjordwm
make clean install
Wayland compositor only (manual build/config work):
git clone --filter=blob:none --no-checkout https://github.com/SUDOER1337/fjordwm.git
cd fjordwm
git sparse-checkout init --cone
git sparse-checkout set suckless/dwl
git checkout main
./suckless/build-suckless.sh --wm dwl --install-mode local --yes
Window manager + rofi (manual build plus launcher configs):
git clone --filter=blob:none --no-checkout https://github.com/SUDOER1337/fjordwm.git
cd fjordwm
git sparse-checkout init --cone
git sparse-checkout set suckless/fjordwm rofi
git checkout main
Full experience minus heavy assets (recommended if you still want ./setup.sh):
git clone --filter=blob:none --no-checkout https://github.com/SUDOER1337/fjordwm.git
cd fjordwm
git sparse-checkout init --cone
git sparse-checkout set suckless rofi scripts themes config-backups README.md setup.sh
git checkout main
./setup.sh
Skipping wallpapers/ and screenshots/ reduces download size, but you will not get the bundled wallpapers or media assets.
The setup script supports both interactive and flag-driven installs:
./setup.sh --task all --profile desktop --yes
./setup.sh --task config --configs rofi,kitty,nvim
./setup.sh --task config --configs all --yes
./setup.sh --task packages --wm dwl --yes
./setup.sh --task build --wm dwl --yes
./setup.sh --task betterdiscord --yes
Available tasks:
all: packages, build, selected config install, shell setup, and post-setup taskspackages: install packages onlybuild: build the selected window-manager stackconfig: install config backups fromconfig-backups/usingallor a selected subsetshell: install the fish shell configurationpost: apply GUI-only post-setup tweaksbetterdiscord: install Discord, install/update BetterDiscord, and apply the bundled theme
Available window-manager targets:
fjordwm: current X11 stack (fjordwm,slock,slstatus)dwl: Wayland compositor only, installed locally by defaultboth: build both stacks;--profileis still required for thefjordwmside
- Window manager: dwm with patches
- Wayland compositor: fjordwl (local dwl fork) with XWayland enabled in
config.mk - Status bars: native
dwmbar on fjordwm (X11), Waybar on fjordwl by default - Notifications: dunst on fjordwm, swaync on fjordwl by default
- Application launcher: rofi with custom themes and a Utility menu
- GTK theme: Carbon-Square
- BetterDiscord theme: bundled
achromatic24theme +custom.css - Terminal: kitty
- Compositor: picom
- Lock screen: slock
- Selection-only rofi menus use plain
h/j/k/lfor list navigation in addition to arrow keys. - Launchers and text-entry rofi prompts use
Alt+h/j/k/lso typingh,j,k, andlstill works normally.
| Application | Purpose | Package |
|---|---|---|
| nwg-look | GTK settings | nwg-look |
| warpd | Vim-style cursor control | warpd |
| nm-applet | Network tray icon | network-manager-applet |
| unclutter | Hide idle cursor | unclutter |
| redshift | Blue light filter | redshift |
| flameshot | Screenshots | flameshot |
| udiskie | USB auto-mount | udiskie |
| rmpc | Rust TUI MPD client | mpd rmpc mpd-mpris |
| sddm | Display manager for X11/Wayland session selection | sddm |
After config changes to the X11 stack:
cd suckless/fjordwm
make clean install
For the Wayland path:
./suckless/build-suckless.sh --wm dwl --install-mode local --yes
The dwl build installs the compositor into ~/.local/bin and the session file into ~/.local/share/wayland-sessions when using local mode.
If you want a display manager, install sddm and enable it:
./suckless/install-packages.sh --wm both --optional sddm
sudo systemctl enable --now sddm.service
fjordwm installs an X11 session into xsessions/
Under SDDM, the fjordwm session now starts through the bundled session script instead of ~/.xinitrc. startx still uses ~/.xinitrc, so manual X11 startup remains unchanged.
Build fails with permissions: sudo chown -R $USER:$USER ~/fjordwm chmod +x ~/fjordwm/scripts/*.sh
Status bar not updating: cd ~/fjordwm/suckless/fjordwm && make clean install
GTK theme missing: cp -r ~/fjordwm/themes/Carbon-Square ~/.themes/
Keybindings not working: echo $XDG_CURRENT_DESKTOP echo $DESKTOP_SESSION
- suckless/fjordwm/config.h - main configuration for fjordwm and its native bar
- suckless/install-betterdiscord.sh - BetterDiscord installer and theme sync
- scripts/ - utility scripts
- themes/ - GTK theme files


