-
Notifications
You must be signed in to change notification settings - Fork 1
Troubleshooting
locainin edited this page Apr 18, 2026
·
16 revisions
- Confirm the session type is Wayland:
echo $XDG_SESSION_TYPE. - Confirm GTK4 + gtk4-layer-shell are installed.
- Confirm the compositor allows layer-shell surfaces.
- Run
noticenterctl open-panel --debug infoand review logs.
-
panel.widthis now treated as a requested width and may be capped by monitor size at runtime. - Very small widths can also hit the panel runtime floor.
noticenterctl css-checknow warns when[panel].widthis below that floor because the center clamps it and the result can look like CSS or config edits were ignored. -
panel.widthalso does not override GTK natural width. If widgets need more horizontal space, the live panel can stay wider than the requested width. - The most common width drivers are:
- 4-column toggle rows
- 2-column stat rows
- 2-column card rows
- theme rules with large
min-width, padding, or margins
- The media row is now clamped to the panel body width, so if width still looks wrong after a reload, check toggle/stat/card sizing and theme CSS first.
- If lowering
panel.widthappears to do nothing, inspect widget CSS before assuming config reload is broken. - For tighter layouts, reduce
[panel].widthand adjust[panel.margin]. - For tighter widget-driven layouts, reduce horizontal sizing in
widgets.cssand then retestpanel.width. - For side anchors,
respect_work_area = truekeeps the panel from overlapping reserved bars.
-
[panel].heightis now a percentage of usable monitor height, not a pixel value. - Small values such as
1,5, or20mean1%,5%, or20%of usable height. - Visible widgets, media, and the panel header still keep a minimum natural height.
- That means small percentage values can look almost identical until the requested height grows past the current content floor.
- If the panel looks correct after collapsing widgets, the widget stack is setting that floor.
- Widget
min_heightvalues and theme CSS padding are the first things to check. - If a truly exact pixel height is needed, use
[panel].height_override. -
height_overridetakes priority overheightwhenever it is set. -
height_overrideis still bounded by the visible content minimum. It does not clip controls.
- Run
noticenterctl css-checkand read theactive theme filessection first. - The live UI follows the active paths from
[theme].base_css,[theme].panel_css,[theme].popup_css,[theme].widgets_css, and[theme].media_css. - Start with the
css-check summaryline so it is clear whether the theme is fully clean, warning-only, or failed. - Read grouped
errorsandwarningsby file instead of scanning for single log lines. - Lint warnings now include line and column information when the source location is reliable, which makes duplicate selectors, duplicate properties, and GTK-incompatible layout values faster to fix.
- Valid newer GTK CSS such as supported
var(...)andcalc(...)usage should now stay quiet, so repeated warnings usually mean a real layout or parser issue instead of the checker lagging behind the runtime. - Extra
.cssfiles under the config tree that are not referenced byconfig.tomlare now reported innotes. - Missing theme targets and multiple theme slots pointing at the same file are also reported.
- Absolute paths and non-
.cssfile names are allowed, but they make it easier to edit the wrong file by accident. - Terminal runs use color for errors, warnings, notes, and final results. Redirected output stays plain text.
- Run
noticenterctl preset inspect <bundle.unixnotis>first. - Then run
noticenterctl preset import <bundle.unixnotis> --dry-runto view the write plan. - If import is blocked, read the path in the error carefully. Import now rejects:
- theme paths outside the UnixNotis config root
- explicit command paths outside the UnixNotis config root
- archive path traversal
- symlink escape paths
- If import warns that the preset contains executable commands or bundled scripts:
- choose
Inspect executable content now?to open the review pager - inspect the runnable config slots and bundled script text
- quit the pager with
q - only continue when the source is trusted
- choose
- Non-interactive imports fail on executable content unless
--allow-execis passed. - If import warns about CSS asset references, decide whether the shared theme is meant to depend on files outside the UnixNotis config root or on remote URLs before continuing.
- Real imports run
noticenterctl css-checkafterwards, so a successful import can still end with a CSS validation failure if the shared theme itself is broken.
- Confirm
config.tomlexists under the UnixNotis config root. - If export warns about host-specific command paths, let
noticenterctlrewrite them in the bundledconfig.tomlunless the preset is intentionally machine-local. - If export warns about outside CSS asset references, check whether the theme depends on images
outside
$XDG_CONFIG_HOME/unixnotis. -
--exceptpaths are relative to the UnixNotis config root. Good examples:installer.tomlwidgets.cssassets/bg.png
-
config.tomlcannot be excluded because the bundle would not be importable.
-
[media].show_sourcecontrols the source badge row above the title. -
[media].show_source_when_single_playercan hide that badge on single-player setups. -
[media].show_positioncontrols the player counter pill. -
[media].show_position_when_single_playercan keep the counter visible even when only one player exists. -
[media].show_titleand[media].show_artistcan hide those lanes without disabling the card. -
[media].title_fallbackcontrols what appears when a player exposes no title. -
[media].source_aliasescan rewrite noisy player names into stable labels for theming. - Media-specific ricing belongs in
[theme].media_css; editing onlywidgets.csscan miss the active media layer.
- Confirm the daemon is running:
systemctl --user status unixnotis-daemon. - Verify
popups.outputmatches the compositor output name when set. - Ensure
inhibit.modeis not set todrop_all.
- Confirm icon themes are installed (
hicoloris required). - Confirm notification image hints contain valid paths.
- Popup file-backed icons are normalized to the popup icon target size; oversized source files should no longer render giant icons.
- Very large raster sources are rejected before full decode, so broken or unusually large PNG/WebP/JPEG artwork may fail closed instead of spiking memory during popup rendering.
- Validate CSS changes with
noticenterctl css-checkif custom themes are used; warnings often indicate intentional overrides but are useful to catch accidental duplicates, theme path mistakes, and GTK-incompatible layout values.
- Confirm required external commands are installed for the widget.
- Prefer
watch_cmdfor event-driven widgets to reduce polling. - Review
refresh_interval_msandrefresh_interval_slow_msunder[widgets].
- Confirm
$HOME/.local/binis writable. - Remove root-owned files created by a previous install.
- Run the installer and choose Reset config → Restore backup.
- Backups live under
$XDG_CONFIG_HOME/unixnotis/Backup-YYYY-MM-DD. - Fallback backup path:
$HOME/.config/unixnotis/Backup-YYYY-MM-DD. - Retention is controlled in
$XDG_CONFIG_HOME/unixnotis/installer.toml.