TesseraGitHub
Français

Cette page n’est pas encore disponible dans votre langue. La version anglaise est affichée ci-dessous.

8 min de lectureModifier sur GitHub

Troubleshooting on XFCE

Home · Installation · User guide · Configuration · Platform support

Tessera is a client of your window manager: it asks Xfwm4 to move, resize and focus windows, and it never replaces Xfwm4. Most problems on XFCE therefore fall into three groups: another program owns the key, the window manager or the application refused a request, or the configuration tells Tessera to leave the window alone. This page walks from symptom to cause.

XFCE on X11 with Xfwm4 (reference version 4.20.0) is the only session profile Tessera is tested against. Other desktops and window managers are experimental or blocked; see Platform support.

Collect diagnostics first

Three headless commands cover most reports. None of them changes your session.

tessera --debug-info                              # session, backend, capabilities, config status
tessera debug windows --redact-window-titles      # one row per window Tessera can see
tessera debug windows --include-unmanaged --redact-window-titles   # also windows it ignores

--json switches --debug-info and the debug commands to JSON. tessera --debug-info --include-apps adds an application inventory. For a log, run tessera --autostart --log in a terminal (--log, -v and --verbose raise the level to debug; RUST_LOG overrides it), or journalctl --user -u tessera -e when the systemd user service runs it.

What --debug-info tells you

Line Read it as
session-type, desktop, display Must be x11, an XFCE desktop and a non-empty DISPLAY
window-manager Should name Xfwm4; - means no window manager answered
ui-provider / ui-provider-fallback Which look is in use and why another was skipped
capabilities, unavailable-operations What the backend can do in this session
config: <path> (…) The file Tessera reads and whether it loaded, is missing or invalid
windows, monitors, desktops Counts as Tessera sees them
inspection-failure A read of the window system that failed

What tessera debug windows tells you

Columns are ID MANAGED UNMANAGED_REASON FLOATING CLASS INSTANCE FRAME TITLE. A window Tessera will not tile shows MANAGED false with one reason: non_tileable_type, modal or fixed_size. FLOATING true means a rule, a size threshold or your own toggle floats it.

Redact before sharing

Output What it can leak Before you paste
tessera --debug-info Window titles are always redacted; the home directory in paths is collapsed to ~; application class names remain Skim it once
tessera debug windows Titles are printed unless you pass --redact-window-titles Always pass the flag
Preferences → Diagnostics → Copy debug info Window titles are omitted and absolute paths become <redacted> Safe default
tessera.yml Window-title regular expressions and application names in your rules Remove rules you do not want public
Logs (--log, journalctl) Not audited for personal data Read before attaching

Quick checklist

Run these in order; stop at the first one that fails.

echo "$XDG_SESSION_TYPE"                          # x11
xfwm4 --version                                   # Xfwm4 is installed
xprop -root _NET_SUPPORTING_WM_CHECK              # note the window id, then:
xprop -id <id-from-above> _NET_WM_NAME            # "Xfwm4"
pgrep -a tessera                                  # exactly one controller
xrandr --listmonitors                             # the monitors you expect
tessera --debug-info                              # config is "loaded", not invalid

Then press Alt+Shift+A (tall layout) and Alt+Shift+Z (re-evaluate all windows). If the windows tile, the problem was state; if not, find your symptom below.

Symptoms

A shortcut does nothing

Cause: another program already owns the combination, so Tessera leaves it alone, or the keyboard layout switcher consumes it.

Check

  • Start Tessera with --log and look for shortcut collision: <chord> is already bound to <command> (an XFCE or Xfwm4 shortcut) or … is already taken by another application (an active grab by another X client).
  • Preferences → Shortcuts flags the same collisions.
  • List XFCE’s own bindings:
xfconf-query -c xfce4-keyboard-shortcuts -lv | grep -i alt

Fix — give one side up:

Collision Resolution
Ctrl+Alt+Shift+Left / Right are bound to Xfwm4 move_window_left_key / move_window_right_key and clash with Tessera’s default mod2+Left / mod2+Right Clear the shortcut under Settings → Window Manager → Keyboard, or rebind the Tessera command
Keyboard layout toggle on Alt+Shift (grp:alt_shift_toggle) Choose another toggle under Settings → Keyboard → Layout; check with setxkbmap -query
A screenshot tool, remote-desktop client or VM in “capture input” mode holds the key Close it and retry

To move Tessera instead, change the modifier groups (option is Alt on Linux) or a single command in tessera.yml:

mod1: [option, shift]
mod2: [option, shift, control]

mod1 is Alt+Shift and mod2 is Alt+Shift+Ctrl by default. Edit them in Preferences → Shortcuts, or in the file, then reload.

Nothing is tiled

Cause: one of four states, listed from most to least common.

Check Fix
The current space uses the floating layout Alt+Shift+Space cycles forward; Alt+Shift+A/S/D/F picks tall / wide / fullscreen / column
Tiling is switched off Alt+Shift+Ctrl+T toggles it; grep tiling-enabled ~/.config/tessera/tessera.yml
floating-is-blacklist: false With false the floating list is a whitelist: only the listed applications are tiled and everything else floats. Set it back to true (the default). Tessera accepts the value without any warning
float-small-windows (default true) with a large small-window-size (default 500) A window floats when both its own dimensions are below the threshold. Lower the size or set float-small-windows: false

One application is never tiled

Check: tessera debug windows --include-unmanaged --redact-window-titles and find the row.

MANAGED / UNMANAGED_REASON / FLOATING Cause Fix
false / non_tileable_type Dock, splash, desktop or similar window type Expected
false / modal Modal dialog Expected
false / fixed_size The client forbids resizing Expected
true / - / true Matches a floating rule, or was toggled with Alt+Shift+T Remove the class from floating, or press Alt+Shift+T on it

For rules, match against the CLASS or INSTANCE column of the same output.

A window is a few pixels off, or snaps back

Cause: the application’s size constraints (increments, minimum, maximum) override the requested frame, as with terminals that resize in character cells. Tessera accepts a size the window manager clamped and confirmed after one request; it re-requests an unconfirmed move at most twice before giving up.

Check

xprop -id "$(xdotool getactivewindow)" WM_NORMAL_HINTS _NET_FRAME_EXTENTS

Fix: float the application, or lower window-minimum-width / window-minimum-height. Reserve room with screen-padding-top|right|bottom|left and spacing with window-margin-size (window-margins toggles them).

Tessera reports “Could not place …”

Cause: Tessera ordered a frame or workspace move twice and the window system never showed it. Another placement tool, a script or the application itself is competing.

Check: Preferences → Diagnostics → Problems found lists the window id, class, attempts and whether Tessera gave up; the id matches tessera debug windows. Also run pgrep -a tessera and check that no other tiling helper is active.

Fix: stop the competing tool, or float the application. Use only one login-start method for Tessera.

The layout is wrong after plugging a monitor or changing workspace

Symptom Cause Fix
Wrong layout after hotplug Windows were not re-evaluated Alt+Shift+Z
Each workspace has its own layout per-workspace-layouts defaults to true Set it to false, or untick Remember a separate layout for each workspace in Preferences
A workspace-assignments rule never moved a window Rules apply to windows that appear after the rule exists; sticky windows are never moved; a workspace number the desktop lacks is reported and ignored Reopen the window and check Problems found; see [[Configuration

Focus does not behave as expected

Focus does not follow the mouse. Tessera’s focus-follows-mouse (toggle Alt+Shift+Ctrl+X) is independent of Xfwm4’s focus model. Inspect Xfwm4’s side:

xfconf-query -c xfwm4 -p /general/click_to_focus
xfconf-query -c xfwm4 -p /general/focus_new
xfconf-query -c xfwm4 -p /general/prevent_focus_stealing

Xfwm4’s shipped defaults are click_to_focus=true, focus_new=true, prevent_focus_stealing=false, so new windows take focus. Use Settings → Window Manager Tweaks → Focus to change them.

The pointer jumps. That is mouse-follows-focus; set it to false or clear it in Preferences → Mouse.

Tiled windows show no focus border. With window-decorations: hide-tiled Xfwm4 draws no focus border on the bare window and Tessera draws none of its own. Set keep (Preferences → General → Window decorations) or use the focus shortcuts (Alt+Shift+J / K).

Title bars are missing after Tessera was killed

Cause: hide-tiled hides decorations; a clean exit (SIGTERM, SIGINT, Quit from the tray) restores them, a SIGKILL or crash does not. The original setting is stored on each window as _TESSERA_SAVED_MOTIF_WM_HINTS.

Fix: start Tessera once with window-decorations: keep; it restores every window. With hide-tiled it restores only floating ones.

Tessera does not start

Message or symptom Cause Check and fix
“this desktop session has no window-management backend” or “the window-management backend could not be initialized” Not an X11 session, or Xfwm4 is not the running window manager echo $XDG_SESSION_TYPE; log in to the XFCE (X11) session; tessera --debug-info shows window-manager
“Tessera is already running in this session” A controller already runs (autostart, service or a terminal) pgrep -a tessera; keep one start method
“the command-line arguments are invalid” Unknown or misplaced flag tessera --help or man tessera
Service shows inactive (dead) at login The unit has ConditionEnvironment=DISPLAY and the user manager started before DISPLAY was set systemctl --user import-environment DISPLAY XAUTHORITY from the session startup, or use the XDG autostart entry instead
Service restarts repeatedly Restart=on-failure with a start limit of 3 in 60 s, and a 30 s watchdog journalctl --user -u tessera -e
NAMESPACE / “Failed to set up mount namespacing” The user manager cannot build the unit’s sandbox (ProtectSystem, ProtectHome, ReadWritePaths) systemctl --user edit tessera to relax it
Settings are not saved under the service ProtectHome=read-only; writable paths are ~/.config/tessera, ~/.local/share/tessera, ~/.config/autostart and /tmp Keep the file under ~/.config/tessera/

Check service state with tessera service status.

The interface looks wrong

Tessera chooses its look from ui-style (auto by default) and the TESSERA_UI environment variable, which wins for one run. An unknown or unusable value falls back silently to auto; the reason is in the log and on the ui-provider-fallback line.

TESSERA_UI=gtk tessera --debug-info        # plain GTK, follows the desktop theme
TESSERA_UI=adwaita tessera --debug-info    # libadwaita 1.5+ if it can be loaded
Symptom Cause Fix
Plain GTK although libadwaita is installed The build lacks the adwaita feature, or the library is older than 1.5 Read ui-provider-fallback
Light window on a dark theme, or the reverse The desktop settings portal’s colour preference wins; without a portal Tessera infers dark from the XFCE theme name or background Force TESSERA_UI=gtk
Preferences window looks cramped Narrow windows switch to a compact layout (under 660 px with libadwaita, 1000 px with GTK) Widen the window

Report a problem

Open an issue at https://github.com/fabioluciano/tessera/issues and include:

  1. What you did and expected, and what happened instead, in a few lines.
  2. Environment: distribution, XFCE version (xfce4-session --version), Xfwm4 version (xfwm4 --version), Tessera version (tessera --version) and how you installed it.
  3. Diagnostics: the output of tessera --debug-info and tessera debug windows --include-unmanaged --redact-window-titles, or the text from Preferences → Diagnostics → Copy debug info.
  4. Configuration: the relevant part of ~/.config/tessera/tessera.yml, trimmed and redacted.
  5. Log: the lines around the failure from tessera --autostart --log, after you have read them for anything private.
  6. Whether it is repeatable, and the exact keys pressed or windows involved.

If you cannot reproduce on an XFCE/X11 session with Xfwm4, say so: that is outside the tested profile. The source checkout also contains the real-session acceptance procedure at docs/testing/xfce-x11-smoke.md.