Most WinJitsu issues fall into three categories: missing system dependencies (Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Evilchuck666/WinJitsu/llms.txt
Use this file to discover all available pages before exploring further.
xdotool or python-xlib), a daemon that is not running or has a stale PID file, or stale cache state in the SQLite database at ~/.cache/winjitsu/state.db. Work through the items below in order — the first two cover the vast majority of problems.
Common Problems
Error: WinJitsu daemon is not running. Start it with: winjitsu --daemon
Error: WinJitsu daemon is not running. Start it with: winjitsu --daemon
This message is printed to stderr when You should see Use the reload command to clean it up and restart:If
winjitsu <ACTION> cannot connect to the daemon socket at $XDG_RUNTIME_DIR/winjitsu/winjitsu.sock. The daemon either was never started, crashed, or left a stale socket.Start the daemon:winjitsu daemon starting (PID <n>). After that, actions will work immediately.If the daemon reports it is already running but actions still fail, there is likely a stale PID file from a previous session (e.g. after a hard reboot). The client will print:--reload-daemon itself errors, you can clean up manually:Could not get window position. Is xdotool installed?
Could not get window position. Is xdotool installed?
WinJitsu uses After installing, verify it is accessible:This should print the numeric window ID of your focused window. If it prints an error instead, confirm that
xdotool to query the active window ID, geometry, and WM class, and to send windowsize / windowmove commands during animation. This error means xdotool is not on your PATH.Install xdotool for your distribution:/usr/bin/xdotool exists and that your PATH includes /usr/bin.RandR extension not available.
RandR extension not available.
WinJitsu raises this error inside Confirm you are on X11, not Wayland. Check the session type:If this prints A working RandR installation prints the version. If
get_screens() when python-xlib cannot find the RANDR extension on the running X server. There are two causes: python-xlib is not installed, or you are not running an X11 session.python-xlib is installed automatically as a pip dependency when you install WinJitsu. If you are running from source or it was somehow removed, install it manually:wayland, WinJitsu will not function — see the Wayland item below. Log out and choose an X11/Xorg session from your display manager.If you are already on X11 and the error persists, check that the RandR extension is loaded in your X server:xrandr is missing, install the xrandr package for your distribution.Window restores to wrong position (U action)
Window restores to wrong position (U action)
The If the cache contains stale geometry — for example because the window was resized externally, the monitor layout changed, or a previous WinJitsu session wrote bad data — the window will jump to an incorrect position.Clear the cache and re-snap:This deletes all rows from the
U (Unscreen/Restore) action reads the window’s home state from the SQLite cache at ~/.cache/winjitsu/state.db. If no state has been saved for the active window, WinJitsu logs:windows table in the state database. The next time you snap a window with any direction action, WinJitsu records a fresh home state from the window’s current position.After clearing, snap the window to any position (e.g. winjitsu N) and then try winjitsu U — it should restore correctly.Daemon did not stop within 5 seconds (during --reload-daemon)
Daemon did not stop within 5 seconds (during --reload-daemon)
When you run Manually terminate the old daemon and restart:If you receive
winjitsu --reload-daemon, WinJitsu sends SIGTERM to the running daemon and polls every 100 ms for up to 5 seconds waiting for the process to exit. If the daemon hangs (e.g. due to a blocked socket operation or deadlock), the reload times out and prints:Permission denied sending SIGTERM. instead of the timeout message, WinJitsu could not signal the daemon process (the process exists but is owned by a different user). Confirm you are running as the same user that started the daemon.Animation is too slow or too choppy
Animation is too slow or too choppy
The animation runs for Persist the setting to your config file so you do not have to pass the flag every time:This writes
steps frames using a smoothstep easing curve. The default is 25 steps. Fewer steps make the animation faster but choppier; more steps make it smoother but slower.Tune steps for this session only:steps = 15 under the [animation] section of ~/.config/winjitsu/config.ini. Future daemon starts will pick it up automatically.The --padding option also affects the visual result for F and TF — set it to a small pixel value (e.g. --padding 8) if you want a gap between the window and the screen edge when fullscreening.WinJitsu does nothing on Wayland
WinJitsu does nothing on Wayland
WinJitsu is an X11-only tool. It relies on
xdotool for window manipulation and python-xlib with RandR for screen detection. Neither works correctly under a Wayland compositor:xdotool getactivewindowreturns nothing or errors under Wayland.- XWayland provides an X11 compatibility layer for individual apps, but the window manager itself is Wayland-native and does not expose X11 window management APIs.
Config file not loading / settings are ignored
Config file not loading / settings are ignored
WinJitsu looks for its config file at This prints the resolved path and whether the file exists, followed by the effective values for Common mistakes:
$XDG_CONFIG_HOME/winjitsu/config.ini, which defaults to ~/.config/winjitsu/config.ini when $XDG_CONFIG_HOME is not set.Verify the active config path and current values:steps, padding, and delay_ms. If it says not found — using defaults, the file does not exist at the expected path.Create the config file with current defaults:-
$XDG_CONFIG_HOMEis set to a non-standard path in your shell profile — runecho $XDG_CONFIG_HOMEto check. -
The INI file has a syntax error (missing
=, wrong section header, etc.). The file must follow standard INI format: -
You passed
--read-config PATHwith a wrong path. Usewinjitsu --see-configto confirm which file is being read.
Useful Diagnostic Commands
The following commands help you quickly inspect WinJitsu’s state without digging through logs or files manually.| Command | What it tells you |
|---|---|
winjitsu --see-config | Active config file path, whether it exists, and current values |
winjitsu --reload-daemon | Gracefully restarts the daemon (stops old, starts new) |
winjitsu CC | Clears all rows from the window state cache in the SQLite DB |
echo $XDG_RUNTIME_DIR | Confirms the runtime directory path used for socket and PID file |
ls $XDG_RUNTIME_DIR/winjitsu/ | Verifies that winjitsu.sock and winjitsu.pid are present |
If your problem is not listed here, please open an issue on the WinJitsu GitHub repository. Include the output of
winjitsu --see-config, your distribution name and version, and a description of what you expected versus what happened.