Troubleshooting#
First stop: the logs#
carrot prints to stderr, which lands in the journal under a display manager (journalctl --user -b and search for carrot) or your terminal from a TTY. If a session crashed, the story is already written down: every panic produces a numbered ~/.cache/carrot/carrotCrashLogN.log with the message, a backtrace, and the last 256 KB of stderr. Grab the highest number.
Stuck session#
Ctrl+Alt+F2 (or any F-key) always switches VTs; it is hardcoded and cannot be broken by config. From another VT, burrow quit asks for a graceful shutdown, and plain kill <pid> does the same thing via SIGTERM.
carrot exits immediately#
- A config error is never the cause. A file that fails to parse prints every error and boots on the built-in default, and a broken
burrow reloadkeeps the running config. Still worth checking the log forcarrot: config:lines to see what needs fixing, andcarrot check-configparses your config from any TTY without starting a session. - No Vulkan driver found: carrot looks at
VK_ICD_FILENAMES, then/run/opengl-driver/share/vulkan/icd.d,/usr/share/vulkan/icd.d,/etc/vulkan/icd.d. Install your GPU's Vulkan driver, or pointVK_ICD_FILENAMESat its manifest.carrot render-probetests this path alone, andcarrot doctorwalks the whole GPU bring-up and writes a report file worth attaching to any bug. - taproot libc missing: the error says to set
CARROT_LIBC. The GPU driver needs taproot'slibc.so.6/libm.so.6, searched next to the binary, then in../lib/carrot, then viaCARROT_LIBC/CARROT_LIBM. Every install channel stages the pair (carrot installwrites them intoPREFIX/lib/carrot); see Installation. - Keymap error: a configured non-default layout needs xkeyboard-config, so set
XKB_CONFIG_ROOTto its data directory. The default US layout needs nothing on disk.
Carrot is missing from the login screen#
The session entry lives at PREFIX/share/wayland-sessions/carrot.desktop. Distro packages use /usr and always show up; a source install defaults to /usr/local, which some display managers do not scan. Re-run with sudo carrot install --prefix /usr and it appears.
Black screen or wrong output behavior#
carrot drm-probe dumps what the kernel reports: connectors, modes, planes. carrot spike-scanout runs a standalone scanout test from a TTY. Compare the log against these.
A window renders wrong#
burrow dump-shadow writes the focused window's committed pixels (carrot's CPU-side copy) to /tmp/carrot-shadow-<id>.ppm. If the PPM looks right but the screen is wrong, it is carrot's render path; if the PPM is wrong, the client committed those pixels. Say hi in Discord with both.
burrow says no socket found#
burrow needs XDG_RUNTIME_DIR and looks for carrot.$WAYLAND_DISPLAY.sock. Outside the session (say, over SSH), export both variables, or check ls $XDG_RUNTIME_DIR/carrot.*.sock.
Screen sharing does not start#
With no picker configured, carrot waits for a pointer click to choose the cast source; that pause is the consent dialog. A configured picker that hangs is killed after a timeout and the request cancelled cleanly. carrot portal-probe runs the portal backend standalone for testing, and carrot pw-probe checks the PipeWire connection.
Probes, all of them#
Every diagnostic subcommand is listed in Running carrot.