My Sway setup with Catppuccin theme. Includes some personal scripts and services for my Arch machine.
  • CSS 91.7%
  • Shell 5.2%
  • Lua 3.1%
Find a file
2026-03-16 10:22:21 +01:00
.github autosync: sync from autocommit branch (07-01-2026 12:49:27) 2026-01-07 12:49:27 +11:00
assets autosync: sync from autocommit branch (03-02-2026 20:18:31) 2026-02-03 20:18:32 +11:00
essentials autosync: sync from autocommit branch (16-03-2026 20:10:34) 2026-03-16 20:10:34 +11:00
mocha autosync: sync from autocommit branch (16-03-2026 20:19:51) 2026-03-16 20:19:51 +11:00
service/user/.config/systemd/user autosync: sync from autocommit branch (20-02-2026 14:44:10) 2026-02-20 14:44:10 +11:00
settings autosync: sync from autocommit branch (29-10-2025 18:21:58) 2025-10-29 18:21:58 +11:00
stow-scripts autosync: sync from autocommit branch (04-02-2026 18:45:52) 2026-02-04 18:45:52 +11:00
tmp autosync: sync from autocommit branch (16-03-2026 20:19:51) 2026-03-16 20:19:51 +11:00
.gitignore autosync: sync from autocommit branch (15-11-2025 20:54:03) 2025-11-15 20:54:03 +11:00
.version autosync: sync from autocommit branch (03-02-2026 21:23:09) 2026-02-03 21:23:09 +11:00
LICENSE autosync: sync from autocommit branch (30-10-2025 19:09:56) 2025-10-30 19:09:56 +11:00
README.md autosync: sync from autocommit branch (24-02-2026 00:14:22) 2026-02-24 00:14:23 +11:00
stow-essentials.sh autosync: sync from autocommit branch (24-02-2026 00:14:22) 2026-02-24 00:14:23 +11:00
stow-mocha.sh autosync: sync from autocommit branch (24-02-2026 00:14:22) 2026-02-24 00:14:23 +11:00
stow-user-script.sh autosync: sync from autocommit branch (07-10-2025 19:06:50) 2025-10-07 19:06:50 +11:00
stow-user-service.sh autosync: sync from autocommit branch (07-10-2025 19:06:50) 2025-10-07 19:06:50 +11:00

SwayFX Dotfiles (Arch Linux and Catppuccin)

My highly customisable rice for my Arch Linux + SwayFX machine based on Catppuccin colour palette. Possibly overengineered for modularity in extensible colour palettes, accents, and mods, with automatic scripts and services. Feel free to take inspiration or copy for yourself.

Screenshots

Features

Supported Applications

  • QT and GTK themes
  • Alacritty
  • Dolphin
  • Neovim
  • btop
  • Vesktop
  • VSCode and VSCodium
  • YouTube Music (pear-desktop)
  • Zen Browser
  • Rofi
  • SwayFX
  • swaylock
  • SwayNC
  • WayBar
  • wlogout

Theming

  • Catppuccin Mocha: green, mauve, peach, rosewater, sapphire, and yellow
  • Mods:
    • background: solid, blur
    • gap: big, small, none, etc.
    • rounded: all, minimal, none, etc.

(and more to come)

Keybinds

Note: $mod is set to Mod4 (Super key)

General

Keybind Action
$mod + Q Kill focused window
$mod + Shift + Escape Reload Sway configuration
$mod + Shift + E Exit Sway (with confirmation)
$mod + H Split horizontally
$mod + G Split vertically
$mod + Return Toggle split layout
$mod + F Toggle fullscreen
$mod + Shift + F Toggle floating mode
$mod + Shift + T Toggle sticky window
$mod + LMB (drag) Move floating window
$mod + RMB (drag) Resize window
$mod + R Enter resize mode
Left (in resize mode) Shrink width
Right (in resize mode) Grow width
Up (in resize mode) Shrink height
Down (in resize mode) Grow height
Return/Escape (in resize mode) Exit resize mode
$mod + A Focus left
$mod + S Focus down
$mod + W Focus up
$mod + D Focus right
$mod + Left Move window left
$mod + Down Move window down
$mod + Up Move window up
$mod + Right Move window right
$mod + 1-9/0 Switch to workspace 1-10
$mod + X Go to next workspace (in loop)
$mod + Z Go to previous workspace (in loop)
$mod + Ctrl + X Go to next workspace (create workspace if end)
$mod + Ctrl + Z Go to previous workspace (create workspace if end)
$mod + Shift + 1-9/0 Move window to workspace 1-10
$mod + Shift + X Move window to next workspace (create workspace if end)
$mod + Shift + Z Move window to previous workspace (create workspace if end)
$mod + Tab Move focused window to scratchpad
$mod + Shift + Tab Show/cycle scratchpad windows

Applications

Keybind Action
$mod + T Open terminal (Konsole)
$mod + Space Open application launcher (Rofi)
$mod + E Open file manager (Dolphin)
$mod + V Open clipboard history (Rofi)
$mod + Period Open emoji picker (Rofi)
$mod + P Open wallpaper selector
$mod + C Open calculator (Rofi)
$mod + Y Open screen recorder (Rofi)
Print Take screenshot
$mod + Print Take focused window screenshot

Device-specific

Keybind Action
XF86Launch1 Take screenshot
$mod + XF86Launch1 Take window screenshot
XF86AudioMute Toggle mute
XF86AudioLowerVolume Decrease volume (5%)
XF86AudioRaiseVolume Increase volume (5%)
XF86AudioMicMute Toggle microphone mute
XF86AudioPlay Play media
XF86AudioPause Pause media
XF86AudioNext Next track
XF86AudioPrev Previous track
XF86MonBrightnessDown Decrease brightness (5%)
XF86MonBrightnessUp Increase brightness (5%)

Additional Information

Dependencies (may not be complete)

  • nwg-look
  • catppuccin-gtk-theme-mocha
  • qt6ct-kde
  • papirus-folders-catppuccin-git
  • papirus-icon-theme
  • darkly
  • xdg-desktop-portal-gtk
  • moreutils

Fonts:

  • ttf-work-sans
  • ttf-firacode-nerd
  • ttf-nerd-fonts-symbols
  • otf-font-awesome
  • woff2-font-awesome

Neovim:

  • tree-sitter-cli (nvim-treesitter)
  • luarocks (lazy.nvim)

Optional:

  • autotiling
  • gpu-screen-record
  • cliphist
  • oh-my-zsh
  • rofi-emoji
  • rofi-file-browser-extended-patched
  • rofi-calc

Directory Structure

ROOT
├── essentials/
│   ├── bases/                                          # STOW TARGET—Stowed from [theme]'s BASE PACKAGES, extension files for essential's STOW PACKAGES
│   ├── build/                                          # Build scripts for dynamic configs
│   └── [package]/                                      # STOW PACKAGES—Stowed to $HOME, independent from themes
│
├── [theme] (e.g. mocha, latte)/
│   ├── base/
│   │   ├── [package]/                                  # STOW PACKAGES—Stowed to $HOME, standalone theme configs (doesn't require accent)
│   │   └── [*-base]/                                   # BASE PACKAGES—Stowed to essentials/bases/
│   │
│   ├── accents/
│   │   └── [accent] (e.g. yellow, peach, etc.)/
│   │       └── [package]/                              # STOW PACKAGES—Stowed to $HOME, dependent on accent
│   │       └── [*-option]/                             # OPTION PACKAGES—Stowed to [theme]/options/
│   │
│   ├── modlist/
│   │   └── [mods] (e.g. background, gap, etc.)/
│   │       └── [mod-option]/
│   │           └── [mod-package]/
│   │               └── FILES                           # MOD FILES—Stowed to [theme]/mods/[mod-package]
│   │
│   ├── mods/
│   │   └── [mod-package]/
│   │       └── FILES                                   # STOW TARGET—Stowed from [theme]'s [mod-package]/FILES, are active mod symlinks
│   │
│   ├── options/                                        # STOW TARGET—Stowed from [theme]'s OPTION PACKAGES, extension files for [theme]
│   └── build/                                          # Build scripts for dynamic theme-dependent configs
│
├── script/                                             # Contains stow packages for personal scripts
├── service/                                            # Contains stow packages for personal systemd services
├── settings/                                           # Active config accents and mods
├── stow-scripts/                                       # Git automation scripts (used by pon-autocommit-stow systemd service)
└── tmp/                                                # Runtime temp files for automation scripts and services (pon-autocommit-stow)

Notes:

  • Built config files, that are built with build scripts, contains a base template in *.build
  • for Vesktop config packages, stow only owns the vesktop/settings/ directory
  • for YouTube Music config packages, stow only owns the "YouTube Music"/config.json and /[theme].css files
  • for Code and VSCodium config packages, stow only owns the Code/User/settings.json file (along with its *.build file), and necessary extensions must be installed manually
  • nwc in modlist options stands for "no WayBar corners"