| Age | Commit message (Collapse) | Author |
|
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>
|
|
Resolves the ordered list of "applications" directories to search per
the XDG Base Directory Specification: XDG_DATA_HOME (default
~/.local/share) first, then XDG_DATA_DIRS (default /usr/local/share,
/usr/share). Each variable falls back to its default independently
when unset or empty, so a Flatpak-style XDG_DATA_DIRS override is
honored in place of the default rather than merged with it.
find_desktop_files/0,1 recursively collects .desktop files from those
dirs, skipping ones that don't exist.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
|
Parses the [Desktop Entry] group of a .desktop file into a
#desktop_entry{} record with name, exec, icon, and a derived hidden
flag (set by NoDisplay, Hidden, or a non-Application Type). Exec field
codes (%f, %u, etc.) are stripped since a pipemenu has no file/URI
context to expand them with.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
|
rebar3-generated er_xdg_pipe_menu app/supervisor scaffold, to be filled
in with XDG .desktop file discovery/parsing and openbox pipemenu
generation. MIT licensed.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|