Note
nullwc is a minimal floating Wayland compositor built on top of wlroots. It's just a hobby project, so take it easy.
xdg-shell: For standard window support.wlr-layer-shell-unstable-v1: For bars (Waybar), wallpapers (swaybg), etc.wlr-screencopy-v1: For screenshots and screen recording.ext-session-lock-v1: For secure session locking (e.g.,swaylock).ext-workspace-v1: For workspace-aware bars and taskbars.wlr-pointer-constraints-v1: For locking/confining the mouse pointer.wlr-foreign-toplevel-management-v1: For taskbars and window switchers.wlr-xdg-output-v1: For better multi-monitor support.wlr-xdg-decoration-v1: For handling window decorations.wlr-data-control-v1: For clipboard managers.wlr-gamma-control-v1: For gamma/LUT adjustments.wlr-subcompositor-v1: For subsurface placement.
Configuration is handled in ~/.config/nullwc/config.
Example configuration:
# Number of workspaces (1-20)
NULLWC_WORKSPACES = 5
# Modifier key
NULLWC_MOD = Super
# Window border
NULLWC_BORDER_WIDTH = 2
NULLWC_BORDER_COLOR = #6203fc
# Natural scroll for touchpads (1 = natural, 0 = traditional)
NULLWC_NATURAL_SCROLL = 1
# Apps
bind Mod+Return = exec kitty
bind Mod+Space = exec wofi --show drun
# Window
bind Mod+C = close
bind Mod+F = toggle_fullscreen
bind Mod+Tab = cycle_toplevels
# Workspaces
bind Mod+Left = workspace_prev
bind Mod+Right = workspace_next
# System
bind Mod+Shift+R = reload
bind Mod+Escape = exit
# Media keys
bind XF86AudioRaiseVolume = exec pactl set-sink-volume @DEFAULT_SINK@ +5%
bind XF86AudioLowerVolume = exec pactl set-sink-volume @DEFAULT_SINK@ -5%
bind XF86AudioMute = exec pactl set-sink-mute @DEFAULT_SINK@ toggle
bind XF86MonBrightnessUp = exec brightnessctl set +5%
bind XF86MonBrightnessDown = exec brightnessctl set 5%-
# --- Autostart ---
swaybg -i $HOME/.config/nullwc/wallpaper.jpg &
waybar &
# --- Mouse ---
# !!! Hardcoded, do not uncomment !!!
# Mod + Left click → Move window
# Mod + Right click → Resize window (edge chosen by cursor position)
# Double click in titlebar → Toggle fullscreen
# !!! Hardcoded, do not uncomment !!!
