Plague's dotfiles

From Wikipedia, the free encyclopedia
Arch Linux dynamic tiling Wayland environment configuration repository
This article is about the manual installation and configuration procedure. For the automated migration shell script, see copy.sh. For the status bar component, see Waybar.
ℹ
Reinstallation manual reference: This document outlines the explicit commands, file destinations, and desktop definitions necessary to rebuild Plague's exact system without executing automated helper scripts.
Plague's dotfiles
plague@archlinux
----------------
OS: Arch Linux x86_64
Host: Custom Workstation
WM: Hyprland 0.56 (Lua)
Bar: Waybar + Python
Shell: fish 4.0 / starship
Terminal: Ghostty
Theme: Sweet-transparent (Qt)
Icons: Papirus-Dark / Tela
Cursor: Bibata-Modern-Classic
Editor: Neovim (NvChad)
Neofetch/Fastfetch system profile representing Plague's desktop configuration.
Original authorPlague
Initial commitAugust 3, 2026
Current statusAudited & Active (Oct 14, 2026)
Operating systemArch Linux
Display serverWayland
Window managerHyprland (0.56.0)
Config languageLua (hyprland.lua)
Status barWaybar
Notification daemonSwaync
Application launcherRofi (rofi-wayland)
Interactive shellFish (with Starship)
Terminal emulatorGhostty (Konsole fallback)
Qt theme engineKvantum (Sweet-transparent)
GTK themeAdwaita:dark
Icon themesPapirus-Dark / Tela-circle-dracula
Cursor themeBibata-Modern-Classic (24px)
Display managerSDDM (Sword theme)
Code editorsVisual Studio Code / Neovim
Repositorygithub.com/takudzwamvere/dotfiles-backup

Plague's dotfiles is a personalized desktop environment specification and configuration repository designed for the Arch Linux distribution.[1] The setup is centered upon the Hyprland dynamic tiling Wayland compositor, which utilizes a modular Lua configuration structure (hyprland.lua) rather than standard static declarative syntax.[2]

Unlike pre-packaged Linux desktop environments (such as GNOME or KDE Plasma), the architecture decouples system responsibilities into dedicated Unix utilities: Waybar with custom Python scripts for panel telemetry, Rofi-Wayland for application launching and session management, Kvantum and qt6ct for transparent Qt 6 widget styling, and Fish paired with Starship for interactive terminal sessions.[3] It is recognized for its dark Dracula-inspired palette with cyan accents.[citation needed]

This encyclopedic article serves as a comprehensive, step-by-step manual guide for administrators recreating the environment manually from a clean system install.

1 Overview and architectural design[edit]

The configuration repository (backed up at /home/plague/Projects/dotfiles-backup) is maintained to reproduce an identical computing session across clean installations of Arch Linux. The desktop prioritizes a minimalist dark interface characterized by subtle transparency, clean typography (using JetBrains Mono Nerd Font and Poppins), and rapid workspace mobility via physical key combinations.

ComponentSoftwareConfiguration Path in RepoTarget Destination
CompositorHyprlandhypr/hyprland.lua~/.config/hypr/hyprland.lua
Status BarWaybarwaybar/~/.config/waybar/
Application LauncherRofi (Wayland)rofi/~/.config/rofi/
ShellFishfish/~/.config/fish/
PromptStarshipstarship/starship.toml~/.config/starship.toml
Qt6 Stylesheetqt6ctqt6ct/~/.config/qt6ct/
Widget ThemeKvantumKvantum/~/.config/Kvantum/
EditorNeovim (NvChad)nvim/~/.config/nvim/
TerminalGhosttyghostty/config~/.config/ghostty/config
System Monitorbtopbtop/btop.conf~/.config/btop/btop.conf

2 Prerequisites and package management[edit]

Rebuilding the system requires an active internet connection and base development tools. Most proprietary and community-curated packages are installed via the Arch User Repository (AUR).

2.1 Arch User Repository helper (yay)

The AUR helper yay is utilized for automated package compilation and tracking.[2] The bootstrap sequence is executed from the command line:

Terminal — Bash
sudo pacman -S --needed git base-devel
git clone https://aur.archlinux.org/yay.git /tmp/yay
cd /tmp/yay && makepkg -si

2.2 Core dependency manifest

The installation command below deploys the audited system manifest (derived from packages.txt) categorized by functional domain:

Terminal — Bash
yay -S --needed \
  # ── Hyprland & Wayland Core ──
  hyprland hyprpaper waypaper-git hyprshot hyprpicker hyprsunset hypridle hyprlock \
  xdg-desktop-portal-hyprland xdg-utils polkit-gnome polkit-kde-agent \
  network-manager-applet networkmanager uwsm awww \
  # ── Status Bar & App Launcher ──
  waybar swaync python rofi-wayland \
  # ── Shell & Terminal ──
  ghostty fish starship eza bat fastfetch \
  # ── Development & Text Editing ──
  neovim git lazygit ripgrep fd nodejs visual-studio-code-bin \
  # ── Qt & KDE Theming ──
  qt6ct kvantum kvantum-theme-sweet qt5-wayland qt6-wayland \
  # ── Iconography, Cursors, and Fonts ──
  bibata-cursor-theme papirus-icon-theme tela-circle-icon-theme-git nwg-look \
  ttf-jetbrains-mono-nerd ttf-nerd-fonts-symbols ttf-poppins \
  noto-fonts noto-fonts-emoji noto-fonts-cjk \
  # ── Sound Architecture & Multimedia ──
  wireplumber playerctl pavucontrol pipewire pipewire-pulse pipewire-alsa \
  haruna vlc mpv qbittorrent xdman_gtk obsidian discord \
  # ── KDE Utilities ──
  dolphin ark kate digikam kdenlive ffmpegthumbs kdegraphics-thumbnailers kimageformats \
  # ── Power, Authentication, and Daemons ──
  brightnessctl gnome-keyring upower power-profiles-daemon btop \
  octopi timeshift timeshift-autosnap bluez bluez-utils sddm

3 Display server and window manager (Hyprland)[edit]

Hyprland is an independent dynamic tiling Wayland compositor developed by Vaxry. Plague's configuration resides in hypr/hyprland.lua, providing clean programmatic structure and separation of input bindings, monitor definitions, and window rules.[1]

3.1 Lua configuration and execution structure

The configuration directory is synchronized to the user's home configuration space:

Terminal — Bash
mkdir -p ~/.config/hypr
cp -r hypr/. ~/.config/hypr/
chmod +x ~/.config/hypr/switch_workspace.sh 2>/dev/null || true

3.2 Display rules and monitor setup

The primary display output is configured to utilize native display resolutions with preferred scaling:

hyprland.lua snippet
-- Primary display
monitor = "eDP-1, preferred, auto, 1"

-- Environmental flags for Wayland toolkit compatibility
env = {
    "XDG_CURRENT_DESKTOP,Hyprland",
    "XDG_SESSION_TYPE,wayland",
    "XDG_SESSION_DESKTOP,Hyprland",
    "QT_QPA_PLATFORM,wayland;xcb",
    "QT_QPA_PLATFORMTHEME,qt6ct",
    "QT_WAYLAND_DISABLE_WINDOWDECORATION,1",
    "GDK_BACKEND,wayland,x11,*",
    "CLUTTER_BACKEND,wayland",
    "XCURSOR_THEME,Bibata-Modern-Classic",
    "XCURSOR_SIZE,24"
}

3.3 Default keyboard bindings

Keyboard shortcuts are primarily mapped to the SUPER modifier key (the Windows / Command key):

Key BindingAction / Executable CommandDescription
SUPER + Qghostty (fallback: konsole)Spawns default GPU-accelerated terminal emulator
SUPER + Rrofi -show drunOpens application launcher
SUPER + P~/.config/rofi/bin/powermenuOpens session powermenu (Lock, Reboot, Shutdown)
SUPER + Wkillall -SIGUSR1 waybarToggles Waybar visibility
SUPER + EdolphinLaunches KDE Dolphin file manager
SUPER + CkillactiveTerminates focused window
SUPER + VtogglefloatingToggles active window between floating and tiled
Printhyprshot -m regionInteractive region screenshot saved to ~/Pictures/Screenshots
SUPER + Printhyprshot -m outputFull-screen capture
SUPER + 1–9workspace, nSwitch active workspace index
SUPER + SHIFT + 1–9movetoworkspace, nMove active client to designated workspace

4 Status bar and notification center[edit]

Panel rendering is managed by Waybar, styled with custom CSS and enhanced with Python helper scripts.

4.1 Waybar configuration and custom Python scripts

The configuration is cloned and helper scripts are marked executable:

Terminal — Bash
mkdir -p ~/.config/waybar
cp -r waybar/. ~/.config/waybar/
chmod +x ~/.config/waybar/scripts/*.py
chmod +x ~/.config/waybar/scripts/*.sh 2>/dev/null || true

4.2 Swaync notification daemon

Notifications and quick control toggles are serviced by SwayNotificationCenter (swaync):

Terminal — Bash
mkdir -p ~/.config/swaync
cp -r swaync/. ~/.config/swaync/

5 Shell environment and terminal[edit]

The primary interactive shell is Fish, chosen for auto-suggestions, syntax highlighting, and out-of-the-box completions.

5.1 Fish shell and Starship prompt

To establish Fish as the default login shell and install prompt themes:

Terminal — Bash
# Change user default login shell to fish
chsh -s $(which fish)

# Copy configuration files
mkdir -p ~/.config/fish
cp -r fish/. ~/.config/fish/

# Copy Starship cross-shell prompt configuration
cp starship/starship.toml ~/.config/starship.toml

5.2 Shell aliases and utilities

Common aliases replace legacy GNU coreutils with modern Rust-based alternatives:

AliasTarget CommandUtility
lseza --iconsModern replacement for ls with file icons
lleza -lh --icons --gitDetailed listing with permissions and Git tracking
laeza -lah --icons --gitAll files including dotfiles
catbat --paging=neverCat clone with syntax highlighting and line numbers
treeeza --tree --iconsVisual directory hierarchy display

6 Visual theming and design system[edit]

Uniform aesthetic cohesion between Qt and GTK environments under Wayland requires coordinated engine definitions.[3]

6.1 Qt 6, Kvantum, and Sweet-transparent

Qt applications are routed through the Kvantum SVG-based theme engine:

Terminal — Bash
# Copy Kvantum theme files (Sweet-transparent-toolbar)
mkdir -p ~/.config/Kvantum
cp -r Kvantum/. ~/.config/Kvantum/

# Copy qt6ct palette and custom stylesheets
mkdir -p ~/.config/qt6ct
cp -r qt6ct/. ~/.config/qt6ct/

# Apply Kvantum theme activation
kvantummanager --set Sweet-transparent-toolbar

6.2 GTK 3/4, Papirus icons, and Bibata cursor

GTK applications are configured via GSettings (dconf) and configuration files:

Terminal — Bash
# Synchronize GTK configuration directories
mkdir -p ~/.config/gtk-3.0 ~/.config/gtk-4.0
cp gtk/gtk-3.0/settings.ini ~/.config/gtk-3.0/
cp gtk/gtk-4.0/settings.ini ~/.config/gtk-4.0/

# Apply settings via gsettings / dconf
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
gsettings set org.gnome.desktop.interface icon-theme "Papirus-Dark"
gsettings set org.gnome.desktop.interface cursor-theme "Bibata-Modern-Classic"
gsettings set org.gnome.desktop.interface cursor-size 24
gsettings set org.gnome.desktop.interface font-name "JetBrainsMono Nerd Font 10"
gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"

7 KDE applications and MIME associations[edit]

KDE standalone utilities (such as Dolphin, Kate, Kdenlive, and Digikam) require explicit thumbnailers and file type associations.[4]

7.1 Dolphin, Kate, Digikam, and Kdenlive

To apply Dolphin viewing preferences without requiring full KDE Plasma desktop dependencies:

Terminal — Bash
# Configure Dolphin preview thumbnail generators
kwriteconfig6 --file dolphinrc --group "PreviewSettings" --key "Plugins" \
  "audiothumbnail,djvuthumbnail,ebookthumbnail,exrthumbnail,directorythumbnail,fontthumbnail,imagethumbnail,jpegthumbnail,kraimagethumbnail,opendocumentthumbnail,svgthumbnail,ffmpegthumbs"

# Enforce standard single-click / double-click folder navigation
kwriteconfig6 --file kdeglobals --group "KDE" --key "SingleClick" "true"

7.2 XDG MIME file type defaults

The audited mimeapps.list registers standard application handlers for web links, text files, and video streams:

Terminal — Bash
mkdir -p ~/.config
cp xdg/mimeapps.list ~/.config/mimeapps.list
update-desktop-database ~/.local/share/applications 2>/dev/null || true

8 Display manager (SDDM)[edit]

The Simple Desktop Display Manager (SDDM) provides graphical user authentication upon boot. Plague utilizes the animated sword theme:

Terminal — Bash
# Install SDDM sword theme from AUR
yay -S --needed sddm-theme-sword-git

# Configure SDDM theme preference
sudo mkdir -p /etc/sddm.conf.d
echo -e "[Theme]\nCurrent=sword" | sudo tee /etc/sddm.conf.d/theme.conf

# Enable systemd display-manager service
sudo systemctl enable sddm

9 Systemd daemons and user services[edit]

Critical background daemons must be enabled via systemd:

Terminal — Bash
# Core system services
sudo systemctl enable --now NetworkManager
sudo systemctl enable --now bluetooth
sudo systemctl enable --now power-profiles-daemon
sudo systemctl enable --now upower

# User-level audio and authentication daemons
systemctl --user enable --now pipewire pipewire-pulse wireplumber

10 Development environments[edit]

Software development workflows are partitioned between Visual Studio Code and Neovim.

10.1 Visual Studio Code

Settings are mapped to the user profile and extensions are batch-installed from the manifest:

Terminal — Bash
# Copy user settings and keybindings
mkdir -p ~/.config/Code/User
cp vscode/settings.json ~/.config/Code/User/settings.json
cp vscode/keybindings.json ~/.config/Code/User/keybindings.json 2>/dev/null || true

# Batch install all registered extensions
cat vscode/extensions.txt | xargs -n1 code --install-extension

10.2 Neovim (NvChad v2.5)

Neovim is configured using NvChad v2.5 with the onedark colorscheme. Plugin installations bootstrap automatically on initial invocation:

Terminal — Bash
# Copy NvChad configuration tree
mkdir -p ~/.config/nvim
cp -r nvim/. ~/.config/nvim/

# Launch Neovim to trigger Lazy.nvim plugin compilation
nvim

11 Fastfetch and system identity[edit]

System banners displayed in interactive terminal sessions utilize Fastfetch configured with a custom Ramona Flowers graphic:

Terminal — Bash
mkdir -p ~/.config/fastfetch
cp fastfetch/config.jsonc ~/.config/fastfetch/
cp fastfetch/ramona-flowers.png ~/.config/fastfetch/

12 See also[edit]

13 References[edit]

  1. ^ "Configuring Hyprland". Hyprland Documentation. Vaxry. Retrieved 14 October 2026.
  2. ^ "Arch User Repository". ArchWiki. Arch Linux Community. Retrieved 14 October 2026.
  3. ^ "Kvantum SVG-based theme engine for Qt4/Qt5/Qt6". GitHub. Tsujan. Retrieved 14 October 2026.
  4. ^ "Association between MIME types and applications". FreeDesktop.org. Retrieved 14 October 2026.