Menu ▾ ▴

#195 Complete Linux desktop integration

closed
nobody
None
2026-07-26
2026-07-24
Anonymous
No

Originally created by: kristofferR

Summary

  • add a Wayland-safe GlobalShortcuts portal path with the native shortcut plugin as fallback
  • add Linux notification actions, KDE inline replies, sound hints, tray/launcher unread badges, and symbolic tray artwork
  • add desktop actions, CLI activation, AppStream metadata, package validation, and a source-built GNOME 50 Flatpak spike
  • gate host-owned updater and autostart behavior inside Flatpak and document the decision to pursue Flathub

Validation

  • cargo fmt
  • cargo clippy --all-targets -- -D warnings
  • cargo test --lib (146 passed)
  • TypeScript checks and Bun tests (253 passed)
  • injected bundle rebuild and Biome checks
  • desktop-file and pedantic AppStream validation
  • clean CodeRabbit uncommitted preflight
  • Flatpak clean build/export/launch on GNOME 50 with WebKitGTK 2.52.5; 4.2 MB download and 9.9 MB installed

Ref [#171]
Ref [#166]
Ref [#167]
Ref [#168]
Ref [#169]
Ref [#170]
Ref [#150]

Summary by CodeRabbit

  • New Features
  • Added quick-reply support from compatible Linux notifications, including draft preservation and success/failure reporting.
  • Enhanced Linux tray icons with configurable color vs symbolic styling and unread badge rendering (plus Unity launcher unread counts).
  • Enabled Linux global hotkeys via the desktop shortcuts portal.
  • Added Linux desktop launcher actions for “New Conversation” and “Settings”.
  • Added Flatpak-aware runtime behavior that disables certain Settings options (where unsupported).
  • Bug Fixes
  • Improved Linux settings sanitization, tray/unread indicator updates, and KDE inline-reply routing/recovery.
  • Strengthened Linux hotkey synchronization and dark-panel/tray icon handling.
  • Chores
  • Tightened CI validation for Linux AppStream/metainfo and desktop entry files, plus packaging content scanning.

Related

Tickets: #150
Tickets: #166
Tickets: #167
Tickets: #168
Tickets: #169
Tickets: #170
Tickets: #171

Discussion

1 2 > >> (Page 1 of 2)
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: kristofferR

    @coderabbitai review

     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: kristofferR

    @codex review

     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: coderabbitai[bot]

    ✅ Action performed Review finished. > Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: coderabbitai[bot]

    Review Change Stack

    [!NOTE]

    Reviews paused

    It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

    Use the following commands to manage reviews:
    - @coderabbitai resume to resume automatic reviews.
    - @coderabbitai review to trigger a single review.

    Use the checkboxes below for quick actions:
    - [ ] ▶️ Resume reviews
    - [ ] 🔍 Trigger review

    No actionable comments were generated in the recent review. 🎉

    ℹ️ Recent review info
    ⚙️ Run configuration **Configuration used**: Path: .coderabbit.yaml **Review profile**: ASSERTIVE **Plan**: Pro Plus **Run ID**: `c5122008-3a5b-4836-be56-2da7ab7ffeb4`
    📥 Commits Reviewing files that changed from the base of the PR and between [e780e7] and d4aea695b34f44babb635944f17bbcbef92e9cf2.
    📒 Files selected for processing (1) * `src-tauri/src/notifications.rs`

    📝 Walkthrough ## Walkthrough The PR adds Linux desktop actions, AppStream and Flatpak packaging, portal-based global shortcuts, KDE notification quick replies, unread tray and Unity badges, symbolic tray icons, Flatpak-aware settings, and CI validation. ### Changes **Linux desktop integration** |Layer / File(s)|Summary| |---|---| |**Desktop actions and packaging**
    `.github/workflows/ci.yml`, `src-tauri/linux/*`, `src-tauri/tauri.conf.json`, `packaging/flatpak/*`, `src-tauri/src/cli.rs`|Adds CLI actions, desktop entry actions, AppStream metadata, Flatpak manifests and vendored Cargo sources, plus CI validation for Linux packaging artifacts.| |**Runtime settings and tray indicators**
    `dist/settings.html`, `src-tauri/src/settings.rs`, `src-tauri/src/tray.rs`, `src-tauri/src/tray_badge.rs`, `src-tauri/src/commands.rs`, `src-tauri/src/lib.rs`|Adds Flatpak capability reporting, tray icon style selection, symbolic icon rendering, unread badges, and Unity launcher count updates.| |**Portal global shortcuts**
    `src-tauri/src/hotkey.rs`, `src-tauri/src/hotkey_portal.rs`|Adds XDG GlobalShortcuts portal sessions, fallback synchronization, activation handling, recovery, and persisted setting updates.| |**KDE notifications and quick replies**
    `src-tauri/src/notifications.rs`, `inject/src/messenger/features/quick-reply.ts`, `inject/src/messenger/lib/quick-reply.ts`, `src-tauri/inject/messenger.js`|Adds Linux notification response handling, Messenger quick-reply delivery and draft preservation, acknowledgement routing, and tests for state transitions and response behavior.| **Estimated code review effort:** 5 (Critical) | ~120 minutes **Possibly related issues** - [[kristofferR/Carrier#170](https://github.com/kristofferR/Carrier/issues/170)](https://github.com/kristofferR/Carrier/issues/170) — Covers desktop actions, CLI flags, AppStream metadata, packaging, and CI validation. - [[kristofferR/Carrier#171](https://github.com/kristofferR/Carrier/issues/171)](https://github.com/kristofferR/Carrier/issues/171) — Covers the broader Linux integration work in this PR. - [[kristofferR/Carrier#166](https://github.com/kristofferR/Carrier/issues/166)](https://github.com/kristofferR/Carrier/issues/166) — Directly corresponds to the XDG GlobalShortcuts portal implementation. - [[kristofferR/Carrier#167](https://github.com/kristofferR/Carrier/issues/167)](https://github.com/kristofferR/Carrier/issues/167) — Covers KDE inline replies, notification handling, and reply bridging. - [[kristofferR/Carrier#168](https://github.com/kristofferR/Carrier/issues/168)](https://github.com/kristofferR/Carrier/issues/168) — Covers unread tray and Unity launcher indicators. - [[kristofferR/Carrier#169](https://github.com/kristofferR/Carrier/issues/169)](https://github.com/kristofferR/Carrier/issues/169) — Covers symbolic Linux tray icon settings and rendering. **Possibly related PRs** - [[kristofferR/Carrier#2](https://github.com/kristofferR/Carrier/issues/2)](https://github.com/kristofferR/Carrier/pull/2) — Related unread indicator and tray update plumbing. - [[kristofferR/Carrier#70](https://github.com/kristofferR/Carrier/issues/70)](https://github.com/kristofferR/Carrier/pull/70) — Related Messenger feature initialization and shared injected typings. - [[kristofferR/Carrier#155](https://github.com/kristofferR/Carrier/issues/155)](https://github.com/kristofferR/Carrier/pull/155) — Related Linux tray implementation and icon rendering changes. ### Sequence Diagram(s) :::mermaid sequenceDiagram participant KDE as KDE notification service participant Carrier as Carrier notifications participant Messenger as Messenger injection participant App as Carrier native runtime KDE->>Carrier: deliver inline reply Carrier->>Messenger: invoke quick-reply bridge Messenger->>Messenger: insert and send reply Messenger-->>App: emit carrier:reply-result App->>Carrier: complete pending reply :::mermaid sequenceDiagram participant User as User participant Carrier as Carrier settings participant Portal as GlobalShortcuts portal participant Main as Main window User->>Carrier: enable global hotkey Carrier->>Portal: create and bind shortcut session Portal-->>Carrier: activation event Carrier->>Main: toggle window
    🚥 Pre-merge checks | ✅ 5
    ✅ Passed checks (5 passed) | Check name | Status | Explanation | | :------------------------: | :------- | :-------------------------------------------------------------------------------------------------------------------------------------------- | | Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled. | | Title check | ✅ Passed | The title accurately summarizes the main change: broad Linux desktop integration across notifications, tray, hotkeys, Flatpak, and packaging. | | Docstring Coverage | ✅ Passed | Docstring coverage is 98.83% which is sufficient. The required threshold is 80.00%. | | Linked Issues check | ✅ Passed | Check skipped because no linked issues were found for this pull request. | | Out of Scope Changes check | ✅ Passed | Check skipped because no linked issues were found for this pull request. |
    ✨ Finishing Touches
    📝 Generate docstrings - [ ] Create stacked PR - [ ] Commit on current branch
    🧪 Generate unit tests (beta) - [ ] Create PR with unit tests - [ ] Commit unit tests in branch `agent/linux-integration-171`

    Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

    ❤️ Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)

    Comment @coderabbitai help to get the list of available commands.

     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: kristofferR

    @coderabbitai review

     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: kristofferR

    @codex review

     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: coderabbitai[bot]

    ✅ Action performed Review finished. > Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: kristofferR

    @codex review

     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: kristofferR

    @coderabbitai review

     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: coderabbitai[bot]

    ✅ Action performed Review finished. > Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: kristofferR

    @coderabbitai review

     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: coderabbitai[bot]

    ✅ Action performed Review finished. > Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: kristofferR

    @codex review

     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: kristofferR

    @coderabbitai review

     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: coderabbitai[bot]

    ✅ Action performed Review finished. > Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: kristofferR

    @coderabbitai review

     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: coderabbitai[bot]

    ✅ Action performed Review finished. > Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: kristofferR

    @codex review

     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: kristofferR

    @coderabbitai review

     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: coderabbitai[bot]

    ✅ Action performed Review finished. > Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: chatgpt-codex-connector[bot]

    Codex Review: Didn't find any major issues. Swish!

    Reviewed commit: e780e77aef

    ℹ️ About Codex in GitHub
    [Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you - Open a pull request for review - Mark a draft as ready - Comment "@codex review". If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: kristofferR

    @coderabbitai review

     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: coderabbitai[bot]

    ✅ Action performed Review finished. > Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: kristofferR

    @coderabbitai review

     
  • Anonymous

    Anonymous - 2026-07-24

    Originally posted by: kristofferR

    @codex review

     
1 2 > >> (Page 1 of 2)

Log in to post a comment.