1
0
Fork
You've already forked cce
0
No description
  • Rust 69%
  • C 28.9%
  • GLSL 1%
  • Meson 0.6%
  • Shell 0.3%
  • Other 0.1%
Lucas Galante f31fe2a635 fix(scenefx): union cursor history into damage instead of punching blur padding
Software cursors are baked into the reused offscreen buffer, so stale
cursor footprints showed artifacts under blur. Previously the cursor
history rects were subtracted from the blur padding region, which left
holes where stale content could survive. Now the recent cursor
footprints are unioned into the damage region (render + output state)
before blur compensation geometry is computed: inside damage they get
re-blurred with full sampling context, and the padding restore (which
excludes damage) can never paste a stale cursor back.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026年07月14日 11:27:55 -04:00
protocol protocol: allow windows to request popup mode via zcce_toplevel_v1 2026年06月19日 15:00:09 -04:00
scenefx fix(scenefx): union cursor history into damage instead of punching blur padding 2026年07月14日 11:27:55 -04:00
scratch feat(ipc): ccectl synthetic input — full wlrctl replacement with held buttons 2026年07月13日 11:52:23 -04:00
scripts refactor: split control CLI into a dedicated ccectl binary 2026年07月07日 11:50:00 -04:00
src feat: super+left-drag moves status-bar segments without adjust mode 2026年07月13日 22:55:29 -04:00
.antigravityignore Add config reload action, bind it to super+shift+r, and add trackpad gesture config support 2026年06月16日 08:31:46 -04:00
.gitignore Integrate local scenefx fork renamed to cce-fx, add native GPU fade_inset shader, and add standalone wallpaper client stub 2026年06月30日 15:17:27 -04:00
build.rs Fix window decoration negotiation mode and transparent borders clipping, and complete migration to wlroots-0.20 and scenefx-0.5 2026年06月30日 16:04:11 -04:00
Cargo.lock Fix monolithic window mapping, layer shell support, and rendering lifecycle assertions 2026年06月14日 21:56:22 -04:00
Cargo.toml Implement status bar module-specific snapping, vertical centering, and persistent layout config saving 2026年07月03日 14:01:31 -04:00
CLAUDE.md docs: update README and add compositor CLAUDE.md 2026年07月07日 11:50:00 -04:00
Makefile refactor: split control CLI into a dedicated ccectl binary 2026年07月07日 11:50:00 -04:00
README.md docs: update README and add compositor CLAUDE.md 2026年07月07日 11:50:00 -04:00
wrapper.h Pass explicit geometry bounds to river_scene_node_enable_blur to match window content 2026年06月30日 16:15:06 -04:00

cce-fx

cce-fx is a standalone Wayland compositor and tiling window manager written in Rust, built on wlroots 0.20 (via FFI) with a vendored scenefx for blur and rounded-corner scene effects. It began as a Rust rewrite of the river compositor and remains GPL-3.0 licensed.

This crate is the compositor. It lives inside the larger cce Cargo workspace (root at the parent directory), alongside client apps such as cce-status-interface, cce-system-settings, and other cce-* siblings that connect to it over its sockets.

Binaries

  • cce-fx (installed and symlinked as cce) — the compositor server. Running it starts the monolithic compositor and window manager.
  • ccectl — the control client. It talks to a running server over the control socket. Run ccectl with no arguments to list the available commands (layout, view, mode, viewport, pointer/key injection, bind, spawn, notify, reload, exit, ...).

Build & install

make build # cargo build --release
make run # cargo run --bin cce-fx
make install # build, then install to ~/.local/bin
make clean # cargo clean

make install places cce-fx (symlinked as cce), ccectl, the scripts/* menu helpers, and gpu-watcher (plus its systemd user service) into ~/.local/bin.

Build requirements

The build (build.rs) compiles the vendored scenefx/ with meson/ninja on first run, generates Wayland protocol code with wayland-scanner, and binds wlroots via bindgen. It requires these system packages (found through pkg-config): wlroots-0.20, wayland-server, xkbcommon, pixman-1, libinput, libevdev, and the GL/DRM stack (GLESv2, EGL, drm, gbm, lcms2), plus the system wayland-protocols XML definitions.

Configuration

On startup the server loads $XDG_CONFIG_HOME/cce/config.kdl (default ~/.config/cce/config.kdl), merging an adjacent input.kdl for key bindings and input settings. The config format is KDL. A startup script at ~/.config/cce/init is run via sh -c. Window layout state is persisted to ~/.local/state/cce/state.json on exit and restored on the next start.

Configuration can also be changed live over the control socket with ccectl.

Development

See CLAUDE.md for a detailed tour of the architecture, the FFI conventions, the build.rs pipeline, and the IPC/status socket protocols.