desktop: one name across all three install channels (issue 2075)
Desktop (Tauri) / Windows installer (cross-compiled) (push) Successful in 2m26s
Desktop (Tauri) / Tauri desktop (Linux) (push) Successful in 4m6s
Desktop (Tauri) / Update manifest (push) Successful in 6s

The app answered to three different names depending on how it arrived, and the
part that actually hurt was WM_CLASS. Reading tauri-bundler settles what it is:
the generated .desktop template writes StartupWMClass={{exec}} where exec is
main_binary_name, and tao creates its GtkApplication with a NULL app id
(enableGTKAppId defaults off), so GTK falls back to the program name. WM_CLASS
is the binary name, nothing else.

Which inverts this issue's premise. The rename could not break grouping,
because two channels weren't grouping in the first place: pacman ships
/usr/bin/thoughtsync and the AppImage's AppRun execs thoughtsync-desktop, while
all three hand-written entries hardcoded StartupWMClass=ThoughtSync — a string
no binary in any channel has ever reported. Only the .deb worked, and only
because Tauri generates its entry from the binary and never consulted us.

So: thoughtsync everywhere, carried by the build target itself via Cargo [[bin]]
plus mainBinaryName rather than by the install path, since the target name is
what the desktop reads. The pacman package sheds its -desktop suffix and
declares conflict+replaces so an upgrade retires the old one instead of landing
beside it and fighting over /usr/bin/thoughtsync.

The .deb verifier now asserts binary path, Exec and StartupWMClass all agree,
which is the part that keeps this fixed: the .deb's entry is the one no human
writes, so it's the one that drifts silently.

Package: thought-sync stays. tauri-bundler derives it as kebab-case(productName)
with no override, and rewriting a control archive on every build is a poor trade
for one uninstall command.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-16 10:57:17 -04:00
co-authored by Claude Opus 5
parent 5c1ae574f6
commit c883fd2eb6
8 changed files with 99 additions and 19 deletions
+6 -2
View File
@@ -30,7 +30,7 @@ Or grab the `.pkg.tar.*` from the
and install it directly:
```sh
sudo pacman -U thoughtsync-desktop-*-x86_64.pkg.tar.*
sudo pacman -U thoughtsync-*-x86_64.pkg.tar.*
```
The compression suffix depends on what the build image provides — `.zst` when
@@ -45,7 +45,11 @@ Either way you get:
Launch **ThoughtSync** from your app menu, or run `thoughtsync`.
Uninstall: `sudo pacman -R thoughtsync-desktop`.
Uninstall: `sudo pacman -R thoughtsync`.
The package was called `thoughtsync-desktop` before; it declares `replaces`/
`conflicts` on that name, so an upgrade from it is a normal `pacman -U` and
leaves nothing behind.
## How the package is built