A minimal Sway window manager setup for Debian-based systems.
  • Shell 51.2%
  • CSS 48.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Drew 7551dd2d74 Add gvfs-fuse so non-GIO apps can open files on GVfs mounts
gvfs-backends lets Thunar mount and browse smb:// shares, but without
the FUSE bridge at /run/user/<uid>/gvfs, non-GIO apps (mpv, editors,
etc.) silently fail to open files on those shares.

Reported in butterknife#12.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-03 17:16:37 -04:00
config updating theme.conf for kitty usage 2026-07-11 13:51:22 -04:00
screenshots add desktop screenshot to readme 2025-10-16 17:52:43 -04:00
.gitignore init 2025-10-08 13:20:30 -04:00
install.sh Add gvfs-fuse so non-GIO apps can open files on GVfs mounts 2026-08-03 17:16:37 -04:00
LICENSE Add GPL-2.0 license 2026-02-01 18:00:19 -05:00
nvidia-setup.sh update for nvidia proprietary drivers 2025-10-10 17:20:14 -04:00
QUICKSTART.md Point all URLs at Butterforge (justaguy.dev) — repos, raw script fetches, apt endpoint, wikis, issues, badges 2026-07-26 21:11:21 +00:00
README.md update stale codeberg references 2026-07-26 21:30:33 -04:00

🌊 sway-setup

Made for Debian Sway Stars Forks Last Commit

A minimal but functional Sway rice script for Debian-based systems.
Installs all core packages, window manager configs, and themes — ready to go out of the box.

Part of the JustAGuy Linux window manager collection — installable standalone or via butterknife, the installer for Butterbian.

📖 Deep dive: the wiki. New to sway? Start with Architecture. NVIDIA users: read NVIDIA first. Pages exist for install, keybinds, theming, customization, and troubleshooting.

Sway Desktop


🚀 Installation

Quick Install

git clone https://justaguy.dev/drew/sway-setup.git
cd sway-setup
chmod +x install.sh
./install.sh

⚠️ NVIDIA users: Wayland on proprietary NVIDIA drivers needs extra setup. The installer runs nvidia-setup.sh automatically if a GPU is detected; it's also copied to ~/nvidia-setup.sh so you can re-run it. See the NVIDIA wiki page.

Installation Options

./install.sh [OPTIONS]

Options:
  --only-config      Only copy config files (skip packages and external tools)
  --help             Show help message

Full install steps, display-manager flow, and non-Debian notes live on the Install wiki page.


📦 What It Installs

Component Purpose
sway Tiling Wayland compositor / WM
swayidle Idle daemon (dpms / lock triggers)
swaybg Wallpaper
gtklock Lock screen
waybar Status bar
rofi App launcher / cheatsheet / power menu
swaync Notification daemon + center
foot, kitty Terminals (foot lightweight, kitty main)
grim + slurp Screenshot pair
cliphist + wl-clipboard Clipboard history
xdg-desktop-portal-wlr Wayland portals
thunar + plugins File manager
firefox-esr Default web browser
pipewire Audio
nwg-look, nwg-displays GTK / display configurators
kanshi, wlr-randr Output management (kanshi opt-in)
autotiling Optional auto layout switcher

💡 Themes by vinceliuice — Orchis (GTK) and Colloid (icons).


🤔 Why These Pieces?

The full rationale for each component (waybar vs. swaybar, rofi vs. wofi, gtklock vs. swaylock, etc.) lives in the wiki's Architecture page.


🎮 NVIDIA

Wayland on proprietary NVIDIA drivers needs three things: kernel modesetting, sway --unsupported-gpu, and (often) WLR_NO_HARDWARE_CURSORS=1. The installer runs nvidia-setup.sh automatically — full breakdown on the NVIDIA wiki page.


🔑 Keybindings Overview

Key Combo Action
Super + Return Launch terminal (kitty)
Super + Space App launcher (rofi)
Super + Q Close focused window
Super + / Keybind cheatsheet
Super + B Firefox
Super + Shift + B Firefox (private)
Super + F File manager (Thunar)
Super + E Text editor (Geany)
Super + C / Super + Shift + C Helium / Helium incognito
Super + G / Super + O / Super + D GIMP / OBS / Discord
Super + Shift + T Theme switcher (12 themes)
Super + Shift + R Reload sway config
Super + Shift + Q Exit sway
Super + X Power menu (rofi)
Super + Shift + N Toggle notification center (swaync)
Super + Shift + F Toggle fullscreen
Super + Shift + Space Toggle floating
Super + T / Super + W Cycle layout / Tabbed layout
Alt + Tab / Alt + Shift + Tab Cycle siblings / tabs
Super + H/J/K/L or Super + Arrows Focus window
Super + Shift + H/J/K/L or Super + Shift + Arrows Move window
Super + Ctrl + Arrows Resize window
Super + Ctrl + = Balance windows
Super + 19/0/-/= Switch to workspace 1-12
Super + Shift + 19/0/-/= Move window to workspace 1-12
Super + S / Super + Shift + S Full / region screenshot

Full reference (media keys, screenshots, layouts, sway control) on the Keybinds wiki page.

Keybindings are configured via:

  • ~/.config/sway/keybindings.conf
  • ~/.config/sway/workspaces.conf
  • ~/.config/sway/scripts/help (run manually or with Super + /)

On first login, a welcome notification points to ~/QUICKSTART-sway.md — a short cheat sheet you can delete when you're comfortable.


🎨 Theme Switcher

Super + Shift + T opens a rofi menu of 12 themes. Each theme swaps sway border colors, waybar palette, rofi palette, swaync palette, kitty color scheme, GTK theme + icons, and wallpaper — all in one shot. Takes about a second, no log out.

Shipped themes: Catppuccin, Doom One, Dracula, Everforest, GitHub Dark (default), Gruvbox, Kanagawa, Monokai, Moonfly, Nord, Retro, Rose Pine Moon.

See the Themes wiki page for how it works, how to add a theme, or how to extend what the switcher touches.


📂 Configuration Files

~/.config/sway/
├── config                # variables, output, input, appearance, includes
├── workspaces.conf       # workspace vars, switch/move bindings
├── rules.conf            # for_window rules, borders, gaps
├── keybindings.conf      # all bindsym lines
├── current-theme -> themes/<name>/   # symlink updated by thememenu
├── scripts/
│   ├── autostart.sh      # startup (swaync, waybar, lxpolkit, cliphist, portals)
│   ├── screenshot        # grim/slurp wrapper: full | region | copy
│   ├── changevolume      # volume + notifications
│   ├── thememenu         # theme switcher
│   ├── power             # rofi power menu
│   ├── help              # rofi keybind cheatsheet
│   └── sway-layout-menu.sh
├── waybar/               # config-glyphs + style-glyphs.css (style theme-managed)
├── rofi/                 # config/keybinds/power.rasi (all theme-managed)
├── swaync/               # config.json + style.css (style theme-managed)
├── gtklock/              # config.ini + style.css
├── foot/                 # foot.ini (color block theme-managed via include)
├── themes/
│   ├── _templates/       # waybar.css + rofi/*.rasi + swaync/style.css templates
│   └── <name>/           # per-theme colors.conf + foot-colors.ini + theme.conf
└── wallpaper/

🎨 Customization

Colors are handled by the theme switcher (Super + Shift + T). For layout, fonts, gaps, keybindings, output config, and other non-color tweaks, see the Customization wiki page — it walks through each config file with examples.


Credits

This project is a config on top of other people's software. Sway is by Drew DeVault and maintainers. Waybar by Alex Orzechowski. swaync by ErikReider. gtklock by jovanlanik. rofi-wayland by lbonn. foot by dnkl. kitty by Kovid Goyal. GTK + icon themes by vinceliuiceOrchis and Colloid.


License

GPL-2.0 - See LICENSE for details.

Support

Buy me a coffee

Connect


Made with butter by JustAGuyLinux