A modern, fluid, and cohesive Wayland desktop environment powered by Sway, Waybar, SwayNC, and Wofi, fully styled with the RosΓ© Pine color palette and Ioskeley Mono typography.
- Window Manager: Sway (Wayland i3-compatible compositor)
- Status Bar: Waybar (RosΓ© Pine pills with real-time system monitors for Network throughput, CPU, Memory, Disk, plus interactive popups for Calendar & wttr.in Weather)
- On-Screen Display (OSD): SwayOSD (GTK layer-shell HUD for volume, mic, and brightness controls with RosΓ© Pine styling)
- Control Center & Notifications: SwayNotificationCenter (
swayncControl Center with audio mixer, per-app volume sliders, backlight, Wi-Fi networks, Bluetooth devices, and screenshot tool) - App Launcher & Menus: Wofi (App launcher, Clipboard history, Wi-Fi manager, Bluetooth manager, Power menu, Wallpaper selector, and System Shortcuts cheat sheet)
- Wallpaper Daemon: awww (Smooth animated wallpaper transitions)
- Screenshot & Annotation: Swappy +
grim+slurp+wl-clipboard(High-contrast studio editor) - Terminal: Foot & WezTerm
- Typography:
Ioskeley Mono&IoskeleyMono Nerd Font Mono - Theme & Colors: RosΓ© Pine Dark (
#191724Base,#1f1d2eSurface,#ebbcbaRose,#eb6f92Love,#31748fPine,#9ccfd8Foam,#c4a7e7Iris)
Follow these step-by-step instructions to recreate this exact environment from a fresh, minimal Arch Linux installation.
Ensure your base Arch installation is up-to-date and install the core audio, Wayland, Sway, and utility packages:
# Update system
sudo pacman -Syu
# Base Wayland, Compositor & Graphics
sudo pacman -S --needed \
sway swaylock swayidle xorg-xwayland \
polkit polkit-gnome \
xdg-desktop-portal xdg-desktop-portal-wlr xdg-desktop-portal-gtk
# Status Bar, OSD, Terminals & Shells
sudo pacman -S --needed waybar swayosd foot wezterm zsh bash curl git jq btop
# Audio & Media Controls
sudo pacman -S --needed \
pipewire pipewire-pulse pipewire-alsa wireplumber \
pavucontrol playerctl brightnessctl
# Networking & Bluetooth
sudo pacman -S --needed \
networkmanager network-manager-applet bluez bluez-utils
# System Daemons & Utilities
sudo pacman -S --needed \
upower chezmoi \
grim slurp swappy wl-clipboard cliphist
# GTK Theming & Engines
sudo pacman -S --needed \
gtk3 gtk4 gnome-themes-extra gsettings-desktop-schemas gtk-layer-shellInstall an AUR helper (such as yay or paru) and install the remaining components:
# Install yay (if not already installed)
git clone https://aur.archlinux.org/yay.git /tmp/yay
cd /tmp/yay && makepkg -si && cd ~
# Install SwayNC, Wofi, and Awww from AUR
yay -S --needed \
sway-notification-center \
wofi \
awwwEnable the essential background daemons:
# Network & Bluetooth
sudo systemctl enable --now NetworkManager
sudo systemctl enable --now bluetooth
# Enable pipewire user services (runs automatically on login)
systemctl --user enable --now pipewire pipewire-pulse wireplumberMake sure Ioskeley Mono and IoskeleyMono Nerd Font are installed in ~/.local/share/fonts/ or /usr/share/fonts/:
mkdir -p ~/.local/share/fonts
# Copy your Ioskeley font files into ~/.local/share/fonts/
# Update font cache:
fc-cache -fvVerify the font is available:
fc-list : family | grep -i "Ioskeley"Initialize and apply this dotfiles repository:
# Apply dotfiles directly from your repository:
chezmoi init <your-git-repo-url>
chezmoi apply
# Ensure all scripts in ~/.local/bin are executable:
chmod +x ~/.local/bin/*Make sure ~/.local/bin is in your PATH (already included in .zshrc and .bashrc).
The wallpaper switcher expects wallpapers in ~/Pictures/Walls/:
mkdir -p ~/Pictures/Walls ~/Pictures/Screenshots
# Add your favorite wallpapers (.png, .jpg, .webp) to ~/Pictures/Walls/Press Super + Shift + B to open the wallpaper picker, or Super + Ctrl + B for random wallpaper selection.
Launch Sway:
swayYou can run this exact desktop setup on Ubuntu 26.04 LTS. Because LTS repositories can sometimes lag behind the fast-moving Wayland ecosystem, follow these steps to install the latest tools via official PPAs, modern package managers, and standalone binaries.
sudo apt update
sudo apt install -y software-properties-common curl gpg wget
# 1. PPA for Latest Sway & Wayland components
# (Ubuntu Sway Remix project PPA or community backports)
sudo add-apt-repository -y ppa:ubuntusway-dev/stable
# Alternative: sudo add-apt-repository -y ppa:pgentili/sway
# 2. WezTerm Official APT Repository (Optional)
curl -fsSL https://apt.fury.io/wez/gpg.key | sudo gpg --yes --dearmor -o /etc/apt/keyrings/wezterm-fury.gpg
echo 'deb [signed-by=/etc/apt/keyrings/wezterm-fury.gpg] https://apt.fury.io/wez/ * *' | sudo tee /etc/apt/sources.list.d/wezterm.list
sudo apt updatesudo apt install -y \
sway swaylock swayidle xwayland \
waybar sway-notification-center wofi btop \
foot wezterm zsh bash curl git jq \
pipewire pipewire-pulse wireplumber pavucontrol playerctl brightnessctl \
network-manager bluez bluez-tools upower \
grim slurp swappy wl-clipboard \
xdg-desktop-portal xdg-desktop-portal-wlr xdg-desktop-portal-gtk \
libgtk-3-bin libgtk-4-bin gsettings-desktop-schemas libgtk-layer-shell0Some newer Wayland tools are best installed directly via their official installers or release binaries:
sh -c "$(curl -fsLS get.chezmoi.io)" -- -b ~/.local/binmkdir -p ~/.local/bin
# Download latest Linux x86_64 binary
curl -s https://api.github.com/repos/sentriz/cliphist/releases/latest \
| jq -r '.assets[] | select(.name | test("linux_amd64")) | .browser_download_url' \
| wget -qi - -O ~/.local/bin/cliphist
chmod +x ~/.local/bin/cliphistInstall via Rust Cargo (or download precompiled binary from awww releases):
sudo apt install -y cargo libwayland-dev libxkbcommon-dev
cargo install awww
# Ensure ~/.cargo/bin or ~/.local/bin is in your PATH# Add user to hardware groups
sudo usermod -aG video,input,audio $USER
# Enable system network and bluetooth daemons
sudo systemctl enable --now NetworkManager
sudo systemctl enable --now bluetooth
# Enable PipeWire audio services for the current user
systemctl --user enable --now pipewire pipewire-pulse wireplumbermkdir -p ~/.local/share/fonts
# Copy Ioskeley font files into ~/.local/share/fonts/
fc-cache -fv# Initialize and apply dotfiles
chezmoi init <your-git-repo-url>
chezmoi apply
# Make all helper scripts executable
chmod +x ~/.local/bin/*You can select Sway directly from the GDM/SDDM login screen menu, or launch it from a TTY:
swayAll shortcuts can be searched on the fly by pressing Super / Cmd + K:
| Shortcut | Action |
|---|---|
| Super + Return | Launch Foot Terminal |
| Super + D | Application Launcher (Wofi) |
| Super + K | System Shortcuts & Keybinds List (Wofi) |
| Super + Shift + V | Clipboard History Manager (cliphist) |
| Super + Shift + W | Wi-Fi Network Selector (nmtui in floating window) |
| Super + Shift + B | Wallpaper Switcher Menu (awww) |
| Super + Ctrl + B | Set Random Wallpaper |
| Super + Shift + E | Power & Session Menu (Lock, Suspend, Reboot, Shutdown) |
| Super + N / Super + Shift + N | Toggle Notification Center (swaync) |
| Shortcut | Action |
|---|---|
| Super + Shift + Q | Close / Kill Focused Window |
| Super + F | Toggle Fullscreen |
| Super + Shift + Space | Toggle Floating / Tiling Mode |
| Super + Space | Swap Focus: Tiling |
| Super + A | Focus Parent Container |
| Super + R | Resize Mode (Arrows / HJKL, Esc to exit) |
| Super + B / Super + V | Split Container Horizontally / Vertically |
| Super + S / Super + W / Super + E | Stacking / Tabbed / Toggle Split Layout |
| Super + Shift + C | Reload Sway Configuration |
| Shortcut | Action | Output |
|---|---|---|
|
Super + Shift + S or Super + Print |
Select Area |
Clipboard / ~/Pictures/Screenshots/
|
| Super + Ctrl + S | Quick Area Selection | Directly copied to Clipboard |
| Print or Ctrl + Print | Quick Full Screen | Directly copied to Clipboard |
| Super + Shift + Print | Area Selection | Saved to ~/Pictures/Screenshots/
|
| Shift + Print | Full Screen | Saved to ~/Pictures/Screenshots/
|
- 3-Finger Horizontal Swipe: Switch to previous / next workspace
- 4-Finger Horizontal Swipe: Move focused window to previous / next workspace
- 4-Finger Pinch Outward: Fullscreen toggle
- 4-Finger Pinch Inward: Floating toggle
- Touch Tiling Drag: Enabled (drag floating or tiled windows with touch)
~/.local/share/chezmoi/
βββ README.md # This guide
βββ OS.md # Comprehensive system configuration blueprint
βββ dot_bashrc # Bash configuration
βββ dot_bash_profile # Bash profile & Wayland environment
βββ dot_zshenv # Zsh environment variables
βββ dot_zshrc # Zsh interactive configuration
βββ dot_config/
β βββ sway/
β β βββ config # Sway window manager configuration
β βββ waybar/
β β βββ config.jsonc # Waybar top bar layout & system monitors
β β βββ style.css # Waybar RosΓ© Pine CSS theme
β β βββ scripts/
β β βββ executable_calendar_menu.py # Compact interactive calendar popup
β β βββ executable_weather_menu.py # Live weather card & 3-day forecast
β β βββ executable_weather.py # wttr.in weather data provider & cache
β β βββ executable_notifications.py # SwayNC unread count streaming helper
β β βββ executable_bluetooth_menu.py # Standalone Bluetooth device popup
β β βββ executable_wifi_menu.py # Standalone Wi-Fi network popup
β β βββ executable_volume_menu.py # Standalone volume & audio popup
β βββ swaync/
β β βββ config.json # SwayNotificationCenter Control Center layout
β β βββ style.css # SwayNC RosΓ© Pine CSS theme
β βββ swayosd/
β β βββ config.toml # SwayOSD server thresholds & durations
β β βββ style.css # SwayOSD RosΓ© Pine HUD theme
β βββ wofi/
β β βββ config # Wofi general settings
β β βββ style.css # Wofi RosΓ© Pine CSS theme
β βββ foot/
β β βββ foot.ini # Foot terminal RosΓ© Pine configuration
β βββ swappy/
β β βββ config # Swappy annotation defaults
β βββ gtk-3.0/
β β βββ gtk.css # Swappy high-contrast studio theme
β β βββ settings.ini # GTK3 dark mode & Ioskeley font settings
β βββ gtk-4.0/
β β βββ gtk.css # GTK4 dark styling
β β βββ settings.ini # GTK4 dark mode & Ioskeley font settings
β βββ environment.d/ # Wayland desktop environment defaults
β βββ keyd/ # Keyboard remap configurations
β βββ nvim/ # LazyVim Neovim configuration
βββ dot_local/
βββ bin/
βββ cliphist-daemon # Background clipboard watcher
βββ executable_lockscreen # Random lockscreen wallpaper script
βββ executable_nuvio # Display-adaptive UI scaler & hardware launcher
βββ executable_wofi-bluetooth # Bluetooth device manager & pairer
βββ executable_wofi-clipboard # Clipboard search and paste menu
βββ executable_wofi-power # Power & session action menu
βββ executable_wofi-shortcuts # System shortcuts cheat sheet
βββ executable_wofi-wallpaper # Animated wallpaper selector
βββ executable_wofi-wifi # Wi-Fi network selector