ponleou/dotfiles

My Sway setup with Catppuccin theme. Includes some personal scripts and services for my Arch machine. Mirror repository from Codeberg.

CSS

1

12 commits

updated Oct 9, 2026

See the code

See what people are saying

SourceMessageScoreDate

[SwayFX] My Year-long Arch Rice <3 (r/unixporn)

**OS:** Arch Linux **WM:** SwayFX **Terminal:** Alacritty **Themes:** Darkly (Qt and GTK), Catppuccin Mocha colors **Other apps:** Waybar, SwayNC, wlogout, btop, nwg-look, qt6ct-kde, rofi, Dolphin, Vesktop **Repo:** [https://codeberg.org/ponleou/dotfiles](https://codeberg.org/ponleou/dotfiles)…

5

Oct 8, 2026

README

[NOTE] This repository is mirrored from Codeberg.


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 (with qt6ct-kde)
  • GTK (with nwg-look)
  • Alacritty
  • btop
  • Neovim
  • Rofi
  • SwayFX
  • swaylock
  • SwayNC
  • Vesktop
  • VSCode and VSCodium
  • Zen Browser
  • WayBar
  • wlogout
  • Zen Browser
  • zsh syntax highlighting
Other saved dotfiles (essentials, but not themed)
  • Dolphin
  • Easy Effects
  • PhotoGIMP
  • mpv (with plugins)
  • zsh (zshrc)
  • custom scripts
  • custom systemd services

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

KeybindAction
$mod + QKill focused window
$mod + Shift + EscapeReload Sway configuration
$mod + Shift + EExit Sway (with confirmation)
$mod + HSplit horizontally
$mod + GSplit vertically
$mod + ReturnToggle split layout
$mod + FToggle fullscreen
$mod + Shift + FToggle floating mode
$mod + Shift + TToggle sticky window
$mod + LMB (drag)Move floating window
$mod + RMB (drag)Resize window
$mod + REnter 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 + AFocus left
$mod + SFocus down
$mod + WFocus up
$mod + DFocus right
$mod + LeftMove window left
$mod + DownMove window down
$mod + UpMove window up
$mod + RightMove window right
$mod + 1-9/0Switch to workspace 1-10
$mod + XGo to next workspace (in loop)
$mod + ZGo to previous workspace (in loop)
$mod + Ctrl + XGo to next workspace (create workspace if end)
$mod + Ctrl + ZGo to previous workspace (create workspace if end)
$mod + Shift + 1-9/0Move window to workspace 1-10
$mod + Shift + XMove window to next workspace (create workspace if end)
$mod + Shift + ZMove window to previous workspace (create workspace if end)
$mod + TabMove focused window to scratchpad
$mod + Shift + TabShow/cycle scratchpad windows

Applications

KeybindAction
$mod + TOpen terminal (Alacritty)
$mod + SpaceOpen application launcher (Rofi)
$mod + EOpen file manager (Dolphin)
$mod + VOpen clipboard history (Rofi)
$mod + PeriodOpen emoji picker (Rofi)
$mod + POpen wallpaper selector
$mod + COpen calculator (Rofi)
$mod + YOpen screen recorder (Rofi)
PrintTake screenshot
$mod + PrintTake focused window screenshot
$mod + ` Extract text from screen

Device-specific

KeybindAction
XF86Launch1Take screenshot
$mod + XF86Launch1Take window screenshot
XF86AudioMuteToggle mute
XF86AudioLowerVolumeDecrease volume (5%)
XF86AudioRaiseVolumeIncrease volume (5%)
XF86AudioMicMuteToggle microphone mute
XF86AudioPlayPlay media
XF86AudioPausePause media
XF86AudioNextNext track
XF86AudioPrevPrevious track
XF86MonBrightnessDownDecrease brightness (5%)
XF86MonBrightnessUpIncrease brightness (5%)

Additional Information

Dependencies (may not be complete)

  • nwg-look
  • qt6ct-kde
  • papirus-folders-catppuccin-git
  • papirus-icon-theme
  • darkly
  • darkly-gtk
  • xdg-desktop-portal-gtk
  • zsh-syntax-highlighting

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)
  • libtexprintf (render-markdown.nvim)

Optional:

  • autotiling
  • grim
  • satty
  • gpu-screen-record
  • cliphist
  • tesseract
  • tesseract-data-eng
  • oh-my-zsh
  • rofi-emoji
  • rofi-file-browser-extended-patched
  • rofi-calc

Directory Structure

ROOT
├── stows/
│   ├── script/                                             # Contains stow packages for personal scripts
│   ├── service/                                            # Contains stow packages for personal systemd services
│   │
│   ├── 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
│
├── settings/                                           # Active config accents and mods
├── service-scripts/                                    # Git automation scripts (used by pon-autocommit-stow systemd service)
├── tmp/                                                # Runtime temp files for automation scripts and services (pon-autocommit-stow)
└── assets/                                             # Assets (e.g. image files) for README.md

Branching:

  • main: The current version's stable branch (version number is from .version).
  • autocommit: Live-synchronisation with my current desktop, with highly redundant commits at a 1-minute debounce on changes. Used as a very reliable VC backup for my dotfiles, but not suitable to view as version changes.
  • unstable: Synchronisation with my current desktop at a 1-hour debounce on changes. Merges to main when stable.
  • squash/main: The default branch. As up-to-date as main branch, with commits squashed for every merge from unstable to main.
  • stable/v#: Archived main branch for every version bump.
  • host: Stores host files or other files related to the dotfiles.

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 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"

ponleou/dotfiles

My Sway setup with Catppuccin theme. Includes some personal scripts and services for my Arch machine. Mirror repository from Codeberg.

CSS

1

12 commits

updated Oct 9, 2026

See the code

See what people are saying

SourceMessageScoreDate

[SwayFX] My Year-long Arch Rice <3 (r/unixporn)

**OS:** Arch Linux **WM:** SwayFX **Terminal:** Alacritty **Themes:** Darkly (Qt and GTK), Catppuccin Mocha colors **Other apps:** Waybar, SwayNC, wlogout, btop, nwg-look, qt6ct-kde, rofi, Dolphin, Vesktop **Repo:** [https://codeberg.org/ponleou/dotfiles](https://codeberg.org/ponleou/dotfiles)…

5

Oct 8, 2026

README

[NOTE] This repository is mirrored from Codeberg.


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 (with qt6ct-kde)
  • GTK (with nwg-look)
  • Alacritty
  • btop
  • Neovim
  • Rofi
  • SwayFX
  • swaylock
  • SwayNC
  • Vesktop
  • VSCode and VSCodium
  • Zen Browser
  • WayBar
  • wlogout
  • Zen Browser
  • zsh syntax highlighting
Other saved dotfiles (essentials, but not themed)
  • Dolphin
  • Easy Effects
  • PhotoGIMP
  • mpv (with plugins)
  • zsh (zshrc)
  • custom scripts
  • custom systemd services

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

KeybindAction
$mod + QKill focused window
$mod + Shift + EscapeReload Sway configuration
$mod + Shift + EExit Sway (with confirmation)
$mod + HSplit horizontally
$mod + GSplit vertically
$mod + ReturnToggle split layout
$mod + FToggle fullscreen
$mod + Shift + FToggle floating mode
$mod + Shift + TToggle sticky window
$mod + LMB (drag)Move floating window
$mod + RMB (drag)Resize window
$mod + REnter 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 + AFocus left
$mod + SFocus down
$mod + WFocus up
$mod + DFocus right
$mod + LeftMove window left
$mod + DownMove window down
$mod + UpMove window up
$mod + RightMove window right
$mod + 1-9/0Switch to workspace 1-10
$mod + XGo to next workspace (in loop)
$mod + ZGo to previous workspace (in loop)
$mod + Ctrl + XGo to next workspace (create workspace if end)
$mod + Ctrl + ZGo to previous workspace (create workspace if end)
$mod + Shift + 1-9/0Move window to workspace 1-10
$mod + Shift + XMove window to next workspace (create workspace if end)
$mod + Shift + ZMove window to previous workspace (create workspace if end)
$mod + TabMove focused window to scratchpad
$mod + Shift + TabShow/cycle scratchpad windows

Applications

KeybindAction
$mod + TOpen terminal (Alacritty)
$mod + SpaceOpen application launcher (Rofi)
$mod + EOpen file manager (Dolphin)
$mod + VOpen clipboard history (Rofi)
$mod + PeriodOpen emoji picker (Rofi)
$mod + POpen wallpaper selector
$mod + COpen calculator (Rofi)
$mod + YOpen screen recorder (Rofi)
PrintTake screenshot
$mod + PrintTake focused window screenshot
$mod + ` Extract text from screen

Device-specific

KeybindAction
XF86Launch1Take screenshot
$mod + XF86Launch1Take window screenshot
XF86AudioMuteToggle mute
XF86AudioLowerVolumeDecrease volume (5%)
XF86AudioRaiseVolumeIncrease volume (5%)
XF86AudioMicMuteToggle microphone mute
XF86AudioPlayPlay media
XF86AudioPausePause media
XF86AudioNextNext track
XF86AudioPrevPrevious track
XF86MonBrightnessDownDecrease brightness (5%)
XF86MonBrightnessUpIncrease brightness (5%)

Additional Information

Dependencies (may not be complete)

  • nwg-look
  • qt6ct-kde
  • papirus-folders-catppuccin-git
  • papirus-icon-theme
  • darkly
  • darkly-gtk
  • xdg-desktop-portal-gtk
  • zsh-syntax-highlighting

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)
  • libtexprintf (render-markdown.nvim)

Optional:

  • autotiling
  • grim
  • satty
  • gpu-screen-record
  • cliphist
  • tesseract
  • tesseract-data-eng
  • oh-my-zsh
  • rofi-emoji
  • rofi-file-browser-extended-patched
  • rofi-calc

Directory Structure

ROOT
├── stows/
│   ├── script/                                             # Contains stow packages for personal scripts
│   ├── service/                                            # Contains stow packages for personal systemd services
│   │
│   ├── 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
│
├── settings/                                           # Active config accents and mods
├── service-scripts/                                    # Git automation scripts (used by pon-autocommit-stow systemd service)
├── tmp/                                                # Runtime temp files for automation scripts and services (pon-autocommit-stow)
└── assets/                                             # Assets (e.g. image files) for README.md

Branching:

  • main: The current version's stable branch (version number is from .version).
  • autocommit: Live-synchronisation with my current desktop, with highly redundant commits at a 1-minute debounce on changes. Used as a very reliable VC backup for my dotfiles, but not suitable to view as version changes.
  • unstable: Synchronisation with my current desktop at a 1-hour debounce on changes. Merges to main when stable.
  • squash/main: The default branch. As up-to-date as main branch, with commits squashed for every merge from unstable to main.
  • stable/v#: Archived main branch for every version bump.
  • host: Stores host files or other files related to the dotfiles.

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 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"