Closed feature request

desktop_set_window_jumplist: custom taskbar right-click tasks (per-window wiki-auth toggle for pup)

John Lauer · 22d ago ·closed by John Lauer

Ask

Add a native Jump List verb so a bridge can put custom tasks on a window's taskbar right-click menu: desktop_set_window_jumplist {appId | hwnd | titleContains, tasks: [{title, iconPath, command, args}]} Backed by the Win32 ICustomDestinationList / AddUserTasks COM API. Tasks launch "command" (default: AD's bundled adom-desktop-cli.exe) with "args".

Use case (pup)

pup drives wiki windows in two modes — anonymous/public vs logged-in (wikiView:"authed"). The AI picks the mode, so the user wants to flip it themselves. With this verb pup adds per-window tasks to the taskbar right-click menu:

  • "Log this window into the wiki"
  • "Switch to public view" Clicking one launches adom-desktop-cli with args that call back to pup to flip THAT session's view. Each pup window already carries its own per-session AUMID (Adom.Pup.), so per-window task lists work.

Notes / dependencies

  • Jump lists are per-AUMID and set via COM from a live process; icons come from iconPath.
  • Tasks are actions (launch commands), not live toggles — Windows won't render a checkmark state. So pup uses two tasks (or relabels on flip), not a checkbox.
  • The jumplist HEADER icon (currently shows chrome.exe's icon, not the Adom mark) is the SAME root cause as #207 (unregistered per-session AUMIDs) — fixing #207 fixes the header icon here too; this verb is only about the task ITEMS.

Acceptance

  1. desktop_set_window_jumplist {titleContains:"(session: x", tasks:[{title:"Test task", iconPath:"...", command:"...cli.exe", args:"..."}]} → right-clicking that window's taskbar button shows "Test task".
  2. Clicking it launches the command with the args.
  3. Clearing (tasks:[]) removes them.

Context: pasted to the AD build thread already; filing for tracking. Companion to #207.

1 Reply

John Lauer · 19d ago

Shipped, closing.

desktop_set_window_jumplist {appId, tasks} landed in AD 1.9.139, backed by ICustomDestinationList as specced. Verified on the current build: the verb exists and enforces its contract (calling it bare returns "Missing required args: appId (a REGISTERED AppUserModelID) and tasks (array; [] clears the list)").

Three follow-ons you flagged in this thread also landed:

  • The console flash. Explorer launches task links itself, so AD cannot pass CREATE_NO_WINDOW, and SW_SHOWMINNOACTIVE only minimises a console rather than hiding it. 1.9.143 interposes a GUI-subsystem shim (ad-taskrun.exe) that respawns the real target with CREATE_NO_WINDOW and exits, so a console-target task no longer flashes. The task icon still defaults to the real target, not the shim, so the row never shows a blank icon.
  • The header row icon you called out as showing the wrong app. The shell only honours RelaunchIconResource on the header when RelaunchCommand is also set on the window, so 1.9.141 added relaunchCommand to desktop_set_window_identity. 1.9.151 then fixed a real bug in it: a standalone .ico must be a BARE path, not path,0 (the ,index form is for PE modules, and a .ico has no indexed resources). That is why the taskbar and Alt-Tab looked right while the header fell back to the generic doc icon.
  • Per-window task lists work off the per-session AUMIDs from 1.9.136, as you assumed.

AD stays generic here: every task's title, target, args and icon come from the caller. tasks: [] clears the list, which is the session-close cleanup.

Reopen if pup's two-mode wiki-auth menu hits anything the current shape does not cover.

Log in to reply.