Skip to content

Dock click cannot activate a window: QDBus "Could not find slot DockDaemonAdaptor::ActivateWindow" (dde-shell 2.0.61) #14288

Open

Description

@hellfare

SUMMARY | 问题概要

Clicking the dock icon of an already-running application does not raise or focus its window. The dock sends org.deepin.dde.daemon.Dock1.ActivateWindow(u) to dde-shell itself, but the adaptor exposes no matching DBus slot, so QDBus drops the call and logs "Could not find slot DockDaemonAdaptor::ActivateWindow". Reproducible on the first click after a dde-shell restart, present since dde-shell 2.0.52 (2026-11-03), still present in 2.0.61.

SOFTWARE/OS VERSIONS | 软件/系统版本信息

Distribution: deepin 25 (crimson), VERSION_ID=25
Kernel: 6.6.159-amd64-desktop-hwe
dde-shell: 2.0.61 (dde-shell, libdde-shell, libdde-shell-dock)
Qt: 6.8.0+dfsg-0deepin42 (libqt6core6, libqt6dbus6)
DTK: 6.7.52 (libdtk6core, libdtk6gui)
Session: X11 / kwin_x11, 2560x1440@60

PRE-REQUIREMENT | 预置条件

dde-shell is running (org.deepin.dde.shell, one process also acting as the DBus client), and an application window exists in the dock.

STEPS TO REPRODUCE | 复现步骤

  1. Open any application that shows an icon in the dock/taskbar.
  2. Minimize it or focus another window.
  3. Click its dock icon.

OBSERVED RESULT | 观察到的结果

Nothing happens: the window is not raised or focused. Every click logs the same warning in ~/.cache/deepin/org.deepin.dde-shell/org.deepin.dde-shell.log:

QDBusConnection: couldn't handle call to ActivateWindow, no slot matched
Could not find slot DockDaemonAdaptor::ActivateWindow
Could not find slot DockFrontAdaptor::ActivateWindow

It fails on the very first click after systemctl --user restart dde-shell@DDE.service, so this is not accumulated runtime state. The same warning already appears in the logs of dde-shell 2.0.52 (2026-11-03 08:17:40), before the 2026-11-12 update to 2.0.61.

EXPECTED RESULT | 期望的结果

Clicking the dock icon of a running application raises and focuses that window, as other desktops do.

ADDITIONAL INFORMATION | 额外补充

Analysis

Sender — dock::DockDBusProxy::ActivateWindow(uint) in the dock plugin calls org.deepin.dde.daemon.Dock1.ActivateWindow(u) on /org/deepin/dde/daemon/Dock1 over the session bus.

Receiver — DockDaemonAdaptor, which lives in the same dde-shell process. QDBus cannot find a matching slot in the adaptor metaobject, so the call is dropped.

Both functions are compiled in, they are simply not exported as DBus slots:

$ nm -D --defined-only /usr/lib/x86_64-linux-gnu/dde-shell/org.deepin.ds.dock.so | grep -i activatewindow
000000000005a6b0 T _ZN17DockDaemonAdaptor14ActivateWindowEj
00000000000405f0 T _ZN4dock13DockDBusProxy14ActivateWindowEj

In Qt a method is exported over DBus only when it is declared Q_SLOT (or Q_INVOKABLE) in the header that moc processes, so the metaobject is missing the entry.

Cross-checks

  • External call succeeds:
    busctl --user call org.deepin.dde.shell /org/deepin/dde/daemon/Dock1 org.deepin.dde.daemon.Dock1 ActivateWindow u 0
  • Legacy interface has no such method:
    busctl --user call org.deepin.dde.shell /org/deepin/dde/Dock1 org.deepin.dde.Dock1 ActivateWindow u 0
    → Call failed: No such method 'ActivateWindow' in interface 'org.deepin.dde.Dock1' at object path '/org/deepin/dde/Dock1' (signature 'u')
  • busctl introspect shows both interfaces on the object; only org.deepin.dde.daemon.Dock1 declares ActivateWindow(u).
  • Warning timestamps on this machine: 2026-11-03 08:17:40 (dde-shell 2.0.52), 2026-11-05 10:35:09, 2026-11-13 10:01:19, 11:27:45, 14:26:12 (DockDaemonAdaptor), 14:40:17 (DockFrontAdaptor).

Suggested fix — declare ActivateWindow as Q_SLOT (or add Q_INVOKABLE) in DockDaemonAdaptor / DockFrontAdaptor so moc exports it. Both the legacy org.deepin.dde.Dock1 and org.deepin.dde.daemon.Dock1 interfaces should provide it, because the log shows clients still calling the legacy one.

Regression test — call org.deepin.dde.daemon.Dock1.ActivateWindow over the session bus and assert there is no no slot matched warning.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions