aboutsummaryrefslogtreecommitdiff
path: root/test/er_xdg_pipe_menu_renderer_tests.erl
AgeCommit message (Collapse)Author
2026-07-21Rename app from er_xdg_pipe_menu to xdg_pipe_menuHEADmainChristopher R. Nelson
Drop the "er-" prefix throughout: module/atom names, filenames, socket paths, and docs. It was an implementation detail, not part of the app's identity. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-21Group menu items into per-category submenusChristopher R. Nelson
Parse the Categories key from .desktop files and have the renderer emit one <menu> submenu per category (via xmerl), with items sorted within each; entries in multiple categories appear in each submenu, and uncategorized entries fall into a catch-all "Other" submenu. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-20Add Openbox pipe menu rendererChristopher R. Nelson
render/1 turns a list of #desktop_entry{} into the XML Openbox expects on stdout from a pipe menu: hidden entries dropped, remaining ones sorted case-insensitively by name, each as an <item> wrapping an Execute action with its command and (if present) icon attribute. XML-escapes label/command/icon values. Icon values are passed through as-is (theme icon names, not resolved paths) -- icon theme resolution is left for later, separate from rendering. Service wiring (scan -> parse -> render, with caching and invalidation) is also left for later. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>