What it does
desktop_router
Registers every callback handler the desktop shell needs onto a Router
instance. Callback ids use : as the segment separator
(e.g. desktop:shortcut:click:foo). One module, one entry point: the
caller passes the router + a deps table; the module wires the rest.
Exports
M.registerHandlers(router: RouterLike, deps: RouterDeps)— mount every desktop callback (start menu, taskbar, context menus, shortcuts, browser, file listing) on the router. Idempotent only insofar as theRouterallows re-registration.
Types:
RouterLike = { on, match }— minimum router surface consumed (seemodules.router).LastShortcutClick = { id?: string, t?: number }RouterDeps = { state, setState, closeTransientMenus, openShortcut, openWorld, setSystemToolsVisible, openBrowserUrl?, closeBrowserWindow?, getNowSeconds?, lastShortcutClick, doubleClickWindowSeconds? }
Usage
local DesktopRouter = require("@builtin::modules.desktop_router")
DesktopRouter.registerHandlers(router, {
state = state,
setState = setState,
closeTransientMenus = closeTransientMenus,
openShortcut = openShortcut,
openWorld = openWorld,
setSystemToolsVisible = setSystemToolsVisible,
openBrowserUrl = openBrowserUrl,
closeBrowserWindow = closeBrowserWindow,
getNowSeconds = getNowSeconds,
lastShortcutClick = lastShortcutClick,
})
Notes
- Callbacks are registered with
router:on/router:match— the module never owns state itself; everything reads/writes throughdeps. deps.doubleClickWindowSecondsdefaults toDesktopConfig.DOUBLE_CLICK_WINDOW_SECONDSwhen omitted; the shortcut click handler usescontext_utils.shouldOpenOnClickto decide between selection and launch.- Browser address-bar input is normalised:
javascript:URLs are redirected toabout:blank,about:/data:/blob:/scheme://inputs pass through, queries route to DuckDuckGo, bare domains gethttps://prepended. desktop:fs:entry:<n>matches a 1-based index into the result ofFsUtils.listDirectory(state.fs_path); dirs descend, files setfs_selectedand dispatch onapp_id/world/content.
Discussion
Scoped to this part · feeds back into the world's score.
Sign in to post.sign in
No comments yet. Be the first.