- Replace system-search-symbolic with misc/search.svg
- Add _ICON_SVG_MAP for GTK theme to SVG path resolution
- Move all imports to top of file (fix E402)
on_entry_changed uses @debounce(300). When user presses Enter before
debounce fires, _current_results is empty so nothing activates.
Now on_entry_accept triggers an immediate search_single when active
plugin has no results, and activates the first result on callback.
_on_entry_accept checked _active_plugin_entry before _current_results.
Keyword plugins (emoji, clipboard) are always active when prefix typed,
so on_submit (no-op base) swallowed Enter before result.action() fired.
Now results are checked first. on_submit only as fallback when no results.
- mpris: native MediaArt cache lookup, dedupe play/pause emission, safe
cleanup, artwork polling for already-playing browser players, drop
os.system seek fallback
- spotlight: scope plugin keyword and detect() matches to a single plugin
via search_single instead of global search; register clipboard keywords
(clip/clipboard)