A SwayFX window manager setup for Debian-based systems.
  • Shell 53.8%
  • CSS 46.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Drew 26e6a67c42 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 4k addition 2026-06-17 18:02:11 -04:00
screenshots \added screenshot to README 2026-01-18 17:20:25 -05:00
.gitignore init 2026-01-18 13:21:52 -05: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:14 -05:00
nvidia-setup.sh updating wallpaper and nvidia-setup 2026-01-18 17:08:57 -05: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

SwayFX Setup

Made for Debian SwayFX Stars Forks Last Commit

A SwayFX window manager setup for Debian-based systems. SwayFX is a fork of Sway with eye candy effects — blur, rounded corners, shadows, and more.

SwayFX Setup Screenshot

Wayland-native tiling window manager with visual effects and DWM-inspired theming.

Part of the JustAGuy Linux window manager collection.

About SwayFX

SwayFX extends Sway with:

  • Blur - Background blur for windows, bars, and launchers
  • Rounded Corners - Configurable corner radius
  • Shadows - Drop shadows on windows
  • Dim Inactive - Subtle dimming of unfocused windows
  • Scratchpad Effects - Visual effects for scratchpad windows

All standard Sway functionality remains intact.


Installation

Quick Install

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

Installation Options

./install.sh [OPTIONS]

Options:
  --only-config      Only copy config files (skip packages)
  --help            Show usage information

What the Installer Does

  1. System Update - Updates package lists and upgrades existing packages
  2. Build Dependencies - Installs meson, ninja, wayland-protocols, and development libraries
  3. Builds SwayFX - Clones and compiles SwayFX with wlroots and scenefx as subprojects
  4. Sway Ecosystem - Waybar, wofi, foot, notification daemon, screenshot tools
  5. UI Tools - File manager, audio controls, network applets, display configurators
  6. External Tools - Via butterscripts:
    • Ghostty (terminal emulator)
    • Rofi-wayland (application launcher)
    • Nerd Fonts collection
    • Orchis theme & Colloid icons
    • Wallpaper collection
  7. Optional Tools - Additional browsers, editors, and utilities (prompted)

Distribution-Agnostic Installation

Instructions for other distributions (click to expand)

IMPORTANT: These instructions are provided as-is for advanced users. Non-Debian distributions are NOT officially supported.

Manual Installation Process:

  1. Install equivalent packages using your distro's package manager
  2. Build/install SwayFX (Arch users: yay -S swayfx)
  3. Run ./install.sh --only-config to copy configuration files

SwayFX Effects Configuration

SwayFX effects are configured in ~/.config/sway/config. Example settings:

# Blur
blur enable
blur_xray disable
blur_passes 2
blur_radius 5

# Corners
corner_radius 10

# Shadows
shadows enable
shadows_on_csd enable
shadow_blur_radius 20
shadow_color #0000004d

# Dimming
dim_inactive 0.1
dim_inactive_colors.unfocused #000000ff

# Layer effects (blur for waybar, rofi, etc.)
layer_effects "waybar" blur enable; shadows enable; corner_radius 10
layer_effects "rofi" blur enable; shadows enable; corner_radius 10

See the SwayFX wiki for all available options.


What Gets Installed

SwayFX Build Dependencies

Component Purpose
meson ninja-build Build system
libwayland-dev Wayland protocol libraries
libwlroots-dev Compositor library (built as subproject)
wayland-protocols Wayland protocol definitions
Various -dev packages Headers and libraries for compilation

Core Components

Component Purpose
swayfx (built) Tiling window manager with effects
swayidle Idle management daemon
gtklock Screen locker
swaybg Wallpaper setter
waybar Status bar
xwayland X11 compatibility layer

UI & System Tools

Component Purpose
rofi App launcher (with blur support)
wofi Wayland menu (for clipboard)
foot Wayland-native terminal
sway-notification-center Notification daemon
grim + slurp Screenshot utilities
wl-clipboard Clipboard manager
cliphist Clipboard history
thunar File Manager (+plugins)
pavucontrol Audio control GUI
nwg-displays GUI display configurator

NVIDIA GPU Users

If you have an NVIDIA GPU with proprietary drivers, additional configuration is required.

Automated Setup

./nvidia-setup.sh

Manual Setup

1. Enable NVIDIA DRM Kernel Modesetting:

sudo nano /etc/default/grub
# Add to GRUB_CMDLINE_LINUX_DEFAULT:
GRUB_CMDLINE_LINUX_DEFAULT="quiet nvidia-drm.modeset=1"
sudo update-grub
# Reboot required

2. Configure SwayFX Desktop Entry:

sudo nano /usr/share/wayland-sessions/swayfx.desktop
# Change: Exec=sway
# To:     Exec=sway --unsupported-gpu

3. Set Environment Variables (optional): Create ~/.config/environment.d/nvidia.conf:

GBM_BACKEND=nvidia-drm
__GLX_VENDOR_LIBRARY_NAME=nvidia
WLR_NO_HARDWARE_CURSORS=1

Keybindings Overview

Shortcut Action
Super + Enter Launch terminal (Ghostty)
Super + Space Launch rofi launcher
Super + Q Close focused window
Super + X Lock screen (gtklock)
Super + Shift + R Reload configuration
Super + Shift + X Exit SwayFX
Super + Shift + F Toggle fullscreen
Super + Shift + N Toggle notification center
Super + F Launch file manager (Thunar)
Super + B Launch Firefox browser
Super + E Launch text editor (Geany)
Super + V Clipboard history (cliphist)
Super + H/J/K/L Focus window (vim-style)
Super + Shift + H/J/K/L Move window (vim-style)
Super + Ctrl + H/J/K/L Resize window
Super + 19/0/-/= Switch to workspace 1-12
Super + Shift + 19/0/-/= Move window to workspace
Ctrl + Shift + 1-5 Layout modes (h-split, v-split, tabbed, stacked, toggle)

Media Keys

Key Action
XF86AudioRaiseVolume Increase volume
XF86AudioLowerVolume Decrease volume
XF86AudioMute Toggle mute
XF86MonBrightnessUp Increase brightness
XF86MonBrightnessDown Decrease brightness

Configuration Files

~/.config/sway/
├── config                     # Main SwayFX configuration (includes FX settings)
├── waybar/
│   ├── config                # Waybar modules
│   └── style.css             # Waybar styling
├── rofi/
│   ├── config.rasi           # Rofi configuration
│   └── power.rasi            # Rofi power menu
├── gtklock/
│   ├── config.ini            # Gtklock configuration
│   └── style.css             # Gtklock styling
├── swaync/
│   ├── config.json           # Notification center config
│   └── style.css             # Notification styling
├── foot/
│   └── foot.ini              # Foot terminal config
└── wallpaper/                # Wallpaper directory

Common Operations

Reload Configuration

# Via keybinding
Super + Shift + R

# Via command
swaymsg reload

Check Configuration for Errors

sway -C

Check SwayFX Version

sway --version
# Expected: swayfx version 0.5.3 (based on sway 1.11.0)

Restart Waybar

pkill waybar; waybar -c ~/.config/sway/waybar/config -s ~/.config/sway/waybar/style.css &

Troubleshooting

SwayFX Build Fails

Ensure you're on Debian 13 (Trixie) or newer. Older versions may be missing required packages like libliftoff-dev or libdisplay-info-dev.

Blur Not Working

  1. Check blur enable is in your config
  2. Verify SwayFX is installed (not standard Sway): sway --version should show "swayfx"
  3. Some applications may need blur_xray enable for transparency

Shadows Not Appearing

Some applications use client-side decorations (CSD). Enable with:

shadows_on_csd enable

Performance Issues

Reduce blur passes or disable effects:

blur_passes 1
# or
blur disable

Waybar Icons Not Showing

Install a Nerd Font (included in installer):

# Manual install
wget -qO- "https://justaguy.dev/drew/butterscripts/raw/branch/main/theming/install_nerdfonts.sh" | bash

Building SwayFX Manually

If you need to rebuild or update SwayFX:

mkdir -p ~/build && cd ~/build
git clone https://github.com/WillPower3309/swayfx.git
cd swayfx && git checkout 0.5.3

mkdir subprojects && cd subprojects
git clone https://github.com/wlrfx/scenefx.git
cd scenefx && git checkout 0.4.1 && cd ..

git clone https://gitlab.freedesktop.org/wlroots/wlroots.git
cd wlroots && git checkout 0.19.0 && cd ../..

meson setup build/
ninja -C build/
sudo ninja -C build/ install
sudo ldconfig

Credits


License

GPL-2.0 - See LICENSE for details.

Support

Buy me a coffee

Connect


Made with 🧈 by JustAGuyLinux