Crystal Dock not acknowledging clicks?

Hi All,

I feel like I’m missing something obvious… I upgraded budgie from 24.04 LTS → 26.04 LTS.

Seemed to go fine but crystal dock won’t let me click on it. When I open apps, they populate in it, but it’s like it’s totally ignoring my mouse.

Hardware: i5-7500T, 16GB RAM, Intel HD 630
Compositor/session: labwc / Budgie / Wayland
Crystal Dock 2.16-1 from resolute/universe
Symptom: dock displays and updates state correctly, but receives zero click events (confirmed by terminal-launched dock showing no output on click)
Workarounds tried: config reset, kill+relaunch, autostart delay already set

What am I missing?

Single monitor? Dual display?

Does turning off desktop icons in budgie-desktop-settings help?

Sorry - I feel like I didn’t write as meaningful of an analysis as was needed. Here’s some updated notes.

  • It’s dual monitor setup (really nice to see that crystal dock is designed to work with two monitors btw!)
  • Disabling desktop icons doesn’t make a difference.

Summary:
After upgrading 24.04 → 26.04 LTS, Crystal Dock displays correctly and updates task state, but receives zero mouse click events.
The documented workarounds in the Community Feedback Highlights post do
not resolve the issue.

Expected:
Clicks on Crystal Dock launchers and task icons should activate or
launch the corresponding application.

Actual:
Clicks on Crystal Dock have no effect. Running crystal-dock from a
terminal produces no output on click — input events are not reaching
the process.

Steps to reproduce:

  1. Upgrade 24.04 → 26.04 LTS via do-release-upgrade -d
  2. Log into the Budgie/labwc session at SDDM
  3. Click on any Crystal Dock icon
  4. Observe: nothing happens, no terminal output if launched manually

Environment:

  • Ubuntu Budgie 26.04 LTS (resolute), upgraded from 24.04
  • Compositor/session: labwc / Budgie / Wayland (confirmed via
    XDG_SESSION_TYPE=wayland, XDG_CURRENT_DESKTOP=Budgie)
  • Crystal Dock 2.16-1 from resolute/universe (official archive,
    no PPAs, backports PPA disabled before upgrade)
  • GPU: Intel HD Graphics 630 (i5-7500T, Kaby Lake)
  • Hardware: bare metal, not a VM
  • Dual monitor
  • 16 GB RAM, no resource pressure

Workarounds tried (none resolved the issue):

  • killall crystal-dock followed by relaunch
  • Existing X-GNOME-Autostart-Delay=5 in
    /etc/xdg/autostart/crystal-dock-autostart.desktop is in effect
  • Increasing autostart delay to 15 seconds
  • Full config reset:
    rm -rf ~/.config/crystal-dock ~/.config/crystal-dock.broken
    (no other crystal-dock state existed in ~/, ~/.cache, or
    ~/.local/share)
  • Fresh first-run with distro defaults from /etc/xdg/crystal-dock/Budgie/
  • Running with XDG_CURRENT_DESKTOP=Labwc to bypass Budgie code path
    (welcome dialog appeared, dialog clicks worked normally, but
    resulting dock still received no clicks)
  • budgie-panel --reset --replace (resolved unrelated top-bar layout
    issues from upgraded 24.04 layout, did not affect dock)
  • All available apt updates installed; no crystal-dock or LayerShellQt
    updates currently in resolute-updates

Key isolation findings:

  • Top bar (also a layer-shell surface) accepts clicks correctly after
    panel layout reset, ruling out session-wide layer-shell input failure
  • Crystal Dock’s welcome dialog (regular Qt window, not layer-shell)
    accepts clicks normally
  • Failure is identical under XDG_CURRENT_DESKTOP=Budgie and
    XDG_CURRENT_DESKTOP=Labwc, ruling out the Budgie integration code
    path

Logs / output:
Running crystal-dock from terminal produces only:
qt.svg: /usr/share/icons/Pocillo/64/apps/org.gnome.Nautilus.svg:190:6:
Could not resolve property: #linearGradient3999
LayerShellQt.Window.screenConfiguration is deprecated use screen and
wantsToBeOnActiveScreen instead
Could not find application with id: budgie-panel. The window icon
will have limited functionalities.
No output is produced when clicking on the dock — input events do not
appear to reach the process.

The “Could not find application with id: budgie-panel” message is
emitted under XDG_CURRENT_DESKTOP=Budgie. This may or may not be
related; flagging in case it is.

Stopgap in use:
Disabled crystal-dock autostart, using Budgie panel icon-tasklist
applet for app launching/switching instead.

Gli stessi problemi che ho riscontrato io in Ubuntu Budgie 26.04 e Fedora budgie 44.

Nice diagnosis - I suspect if you disconnect one monitor the dock will work as expected.

The maintainer of crystal dock is very active - I would copy and paste your findings above here and ask the question.

If there is a code change that the maintainer recommends, we can always backport this to 26.04.

Cheers

Thanks.

No change when switching to single monitor.

I’ve filed a bug report here:

Hope this gets resolved. Looks like a really cool UI.

What happens if you kill crystal dock and then relaunch it?

I had a similar problem with another app that launched after crystal dock and drew an invisible layer over the top of it. So relaunching put crystal dock on the top layer again.

The fix that worked for me, was to delay the launch of crystal dock for a few seconds in Startup Apps (or maybe I edited the .desktop file. can’t remember!)

Issue persists even after manually stopping and restarting. Thanks for the suggestion though.

On a clean login, just fire up a terminal and run ps -ef

I am interested to see if we can spot any apps that may have been autostarted that could be conflicting (layered over) crystal dock

I’ve spent a ton of time troubleshooting this and it seems like crystaldock won’t work when the dock is in the bottom OR right side of my monitor. I also had a whole bunch of odd issues with my secondary monitor (which is on the right in vertical orientation).

For now, I’ve consolidated to only using crystal dock on my left monitor (in landscape orientation) and with auto-hide on.

Lengthy analysis as follows…

Summary:
After upgrading 24.04 → 26.04 LTS, Crystal Dock exhibits two distinct
but related bugs in its layer-shell positioning logic:

Bug A — Clicks fail when the dock is anchored to the bottom or right
edge of any screen. Top and left edges work normally.

Bug B — The dock fails to render at all on a monitor that is not at
desktop position (0,0). Render success follows the monitor’s
position in the compositor’s coordinate space, not the monitor’s
identity, cable type, or rotation.

Both bugs follow the same pattern: rendering and input behave correctly
when anchored to coordinate origin, and break when anchored to non-zero
coordinates. Likely shared root cause.

==============================================================

Bug A: Clicks fail on bottom/right anchored docks

Expected:
Clicks on Crystal Dock launchers and task icons activate or launch the
corresponding application regardless of which screen edge the dock is
anchored to.

Actual:
Clicks have no effect when the dock is at the bottom or right edge.
The dock displays correctly, animates, and updates task icon state at
all positions — only input delivery is broken. Running crystal-dock
from a terminal produces no output when clicking on a non-functional
dock; input events do not appear to reach the process.

Reproduction (per-position):
killall crystal-dock
sed -i ‘s/position=[0-3]/position=N/’
~/.config/crystal-dock/Budgie/panel_1.conf
crystal-dock &

Where N is 0=Top, 1=Bottom, 2=Left, 3=Right.

Test matrix (4 positions, single panel on monitor at desktop origin):
Top Bottom Left Right
Monitor 0 OK FAIL OK FAIL

Pattern: clicks work on edges anchored at coordinate origin (top, left).
Clicks fail on edges anchored at the far end of the screen (bottom,
right).

Note: Bug B prevented direct testing of click behavior on the second
monitor in its native position. When the second monitor was temporarily
relocated to desktop position (0,0) for testing, rendering succeeded
and the click-failure pattern matched monitor 0 exactly.

==============================================================

Bug B: Render fails on non-origin monitors

Expected:
A panel with screen=N renders on output N regardless of where output N
is positioned in the desktop coordinate space.

Actual:
The panel renders only when the target output is at desktop position
(0,0). On any other output position, the panel does not appear
anywhere on screen, despite valid configuration.

Reproduction:

  1. Two monitors. Verify positions with wlr-randr.
    Initial state: HDMI-A-1 at (0,297), DP-2 at (1920,0).
  2. Configure two crystal-dock panels: panel_1 with screen=0,
    panel_2 with screen=1. Both with valid identical settings
    (position=2, visibility=2).
  3. Launch crystal-dock. Result: panel_1 renders on HDMI-A-1.
    panel_2 does not appear anywhere.
  4. Swap screen= assignments between the two config files
    (panel_1 → screen=1, panel_2 → screen=0). Relaunch.
    Result: still only one dock renders, on HDMI-A-1 (now targeted by
    panel_2). The dock targeting DP-2 still does not appear. Bug
    follows the monitor, not the config file.
  5. Reposition monitors so DP-2 is at (0,0) and HDMI-A-1 is at
    (1920,0):
    wlr-randr --output DP-2 --pos 0,0 --transform normal
    wlr-randr --output HDMI-A-1 --pos 1920,0
    Relaunch crystal-dock.
    Result: dock now renders on DP-2 (now at origin). The other dock,
    targeting HDMI-A-1 (now at 1920,0), does not appear.

Conclusion: rendering capability is gated on the target monitor being
at desktop position (0,0), regardless of which physical output it is.
Cable type, rotation, and identity are not factors.

==============================================================

Hypothesis (single root cause for both bugs)

Crystal Dock prints a deprecation warning at every startup:

LayerShellQt.Window.screenConfiguration is deprecated use screen
and wantsToBeOnActiveScreen instead

The deprecated API specifically concerns layer-shell screen
positioning. Both bugs match the pattern of code that hard-codes
coordinate origin (0,0) somewhere it should be computing relative to
the target output’s position and dimensions:

  • Bug A: input region origin appears to be hard-coded at (0,0),
    so clicks only register on docks visually located at low
    coordinates (top, left edges).
  • Bug B: render-target origin appears to be hard-coded at desktop
    (0,0), so docks targeting offset monitors are positioned outside
    those monitors’ visible area.

Migrating Crystal Dock to LayerShellQt’s modern screen +
wantsToBeOnActiveScreen API may resolve both bugs simultaneously.

==============================================================

Environment

Ubuntu Budgie 26.04 LTS (resolute), upgraded from 24.04
Compositor/session: labwc / Budgie / Wayland
XDG_SESSION_TYPE=wayland
XDG_CURRENT_DESKTOP=Budgie
Crystal Dock 2.16-1 from resolute/universe
No PPAs or third-party sources contributing crystal-dock or
LayerShellQt
GPU: Intel HD Graphics 630 (i5-7500T, Kaby Lake)
Hardware: bare metal mini-PC, not a VM
Monitors:
HDMI-A-1: Dell U2415, 1920x1200, position (0,297), transform normal
DP-2: Dell U2410, 1920x1200, position (1920,0), transform 90
16 GB RAM, no resource pressure

==============================================================

Workarounds tried (none affected either bug)

  • killall crystal-dock followed by relaunch
  • X-GNOME-Autostart-Delay raised from 5s (default) to 15s
  • Full config reset to distro defaults from /etc/xdg/crystal-dock/
  • XDG_CURRENT_DESKTOP=Labwc to bypass the Budgie code path
    (welcome dialog accepted clicks normally; resulting bottom-anchored
    dock still received no clicks; offset-monitor dock still did not
    render)
  • budgie-panel --reset --replace (resolved unrelated panel layout
    issues from upgraded 24.04 layout, did not affect either dock bug)
  • All available apt updates installed
  • Un-rotating DP-2 (transform normal) — did not affect Bug B

==============================================================

Stable workaround in use

  • Single panel configuration (panel_2.conf disabled)
  • Dock anchored to left edge of the monitor at desktop position (0,0)
  • Intelligent auto-hide (visibility=2)
  • Functions correctly; second monitor has no dock until fixed

==============================================================

Logs/output (every Crystal Dock launch, identical across all tests)

qt.svg: /usr/share/icons/Pocillo/64/apps/org.gnome.Nautilus.svg:
190:6: Could not resolve property: #linearGradient3999
LayerShellQt.Window.screenConfiguration is deprecated use screen
and wantsToBeOnActiveScreen instead
Could not find application with id: budgie-panel. The window icon
will have limited functionalities.

No output is produced when clicking on a non-functional dock — input
events do not appear to reach the process.

Today must be my lucky day because it seems like Crystal-Dock is also working correctly. I noticed a setting when right-clicking:

Panel → Visibility → Always On Top

After selecting that, crystal-dock now works correctly on the bottom of my screen.

I’m not sure if that option was always there and I overlooked it or what but I’m back in business! Huzzah!

Of course it was there… :face_with_hand_over_mouth: