Menu ▾ ▴

#170 Linux: desktop actions, CLI flags, and AppStream metainfo

closed
nobody
2026-07-24
2026-07-22
Anonymous
No

Originally created by: kristofferR

Carrier ships Tauri's generator-default .desktop file and no AppStream metadata. Hand-author both; the metainfo is also a Flathub prerequisite (Ref [#150]).

Desktop template with actions. src-tauri/linux/carrier.desktop.hbs replicating the generated file (including StartupWMClass=carrier) plus:

Actions=new-conversation;settings;

[Desktop Action new-conversation]
Name=New Conversation
Exec={{exec}} --new-conversation

[Desktop Action settings]
Name=Settings
Exec={{exec}} --settings

Wired via bundle.linux.deb.desktopTemplate and bundle.linux.rpm.desktopTemplate (both verified in the config schema). AppImage has no key but reuses the deb template in tauri-bundler — verify by building and diffing the extracted .desktop. Check tauri-bundler's default template for exact Handlebars variable names before writing ours. AUR repackages the deb, so it inherits everything.

CLI flags. New src-tauri/src/cli.rs: CliAction::{NewConversation, Settings} + pure, unit-tested parse_cli_action. Settings → show_settings_window; NewConversation → show_main + the same eval the File-menu item uses (__carrierShortcuts.newConversation() — extract into a shared const). Warm path: the single-instance callback parses argv (today it's ignored). Cold start: parse env::args(); NewConversation waits on a page-load hook with a short bounded retry since __carrierShortcuts registers after load — best-effort, documented.

AppStream metainfo. src-tauri/linux/io.github.kristofferr.carrier.metainfo.xml: matching id, <launchable>Carrier.desktop</launchable>, MIT, OARS (social-chat: intense, social-info: moderate), screenshots hosted under docs/ (GitHub Pages), manual <releases>. Shipped via bundle.linux.{deb,rpm,appimage}.files → /usr/share/metainfo/. Contact uses the noreply address only.

CI. Add appstreamcli validate --no-net + desktop-file-validate (on a rendered template) to ci.yml, plus a grep-gate asserting no personal email appears under packaging/ or src-tauri/linux/.

Manual testing: launcher right-click actions on KDE/GNOME; carrier --new-conversation warm (second instance) and cold; validators pass; AppImage picked up the template.

Part of [#171].

Related

Tickets: #150
Tickets: #171
Tickets: #175
Tickets: #176
Tickets: #179
Tickets: #184
Tickets: #187
Tickets: #195
Tickets: #56

Discussion

  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: kristofferR

    Implemented and merged in [#195]: Carrier now ships desktop actions, CLI activation flags, AppStream metadata, and CI packaging validation. Closing as complete.

     

    Related

    Tickets: #195

  • Anonymous

    Anonymous - 2026-07-24

    Ticket changed by: kristofferR

    • status: open --> closed
     

Log in to post a comment.