Files
inkwell/desktop/packaging/arch/README.md
T
bvandeusenandClaude Opus 5.5 6d082b2ad8
Android / Build, or is the channel already serving this? (push) Successful in 3s
CI & Build / Build now, or wait for Android? (push) Successful in 2s
CI & Build / Python lint (push) Successful in 3s
CI & Build / TypeScript typecheck (push) Successful in 16s
Desktop (Tauri) / Build, or is the channel already serving this? (push) Successful in 4s
CI & Build / Python tests (push) Successful in 17s
CI & Build / integration (push) Successful in 50s
CI & Build / Build & push image (push) Skipped
Desktop (Tauri) / Windows installer (cross-compiled) (push) Successful in 3m14s
Desktop (Tauri) / Tauri desktop (Linux) (push) Successful in 6m2s
Desktop (Tauri) / Update manifest (push) Successful in 4s
Android / Kotlin + Rust (APK) (push) Successful in 8m36s
rename: the docs say Inkwell, and nothing else still says ThoughtSync by accident
Step 6 of milestone 481. README, docs/*, ci-requirements.md, the desktop and
Arch READMEs, alembic.ini, .gitignore, the frontend package name, the service
worker's cache name (its activate handler deletes any cache by another name, so
the old one is cleaned up), and the Android names in the release body.

What still says thoughtsync does so on purpose (Scribe note 5071):
- the desktop data crossover (crossover.rs) and its startup log
- the old-export import marker
- the "Upgrading from ThoughtSync" block in .env.example, and compose's pointer
  to it
- the packages being retired: deb conflicts/replaces thought-sync, pacman
  thoughtsync and thoughtsync-desktop
- the Android signing keyAlias, which names a key in the existing keystore
- history: shipped alembic migrations, and the test-binary hashes that
  ci-requirements.md records from 2026-08-18

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 14:35:02 -04:00

77 lines
2.9 KiB
Markdown

# Inkwell desktop — Arch package
A **prebuilt** native pacman package, published as an asset on every Inkwell
release. Nothing to compile, no toolchain to install.
Installing natively on Arch matters for more than tidiness: pacman pulls
`webkit2gtk-4.1` itself and the app runs against your system's graphics stack,
which is what keeps the bundled-library `EGL_BAD_PARAMETER` black window
(issue 2021) from coming back. It also means the app is package-manager tracked
and uninstalls cleanly.
## Install
Easiest — the one-command installer picks this package automatically on any
pacman system:
```sh
curl -fsSL https://git.fabledsword.com/bvandeusen/inkwell/raw/branch/dev/desktop/packaging/install.sh | sh
```
That installs the newest build from `main`. To follow the rolling development
channel instead, pass the flag through the pipe:
```sh
curl -fsSL https://git.fabledsword.com/bvandeusen/inkwell/raw/branch/dev/desktop/packaging/install.sh | sh -s -- --channel dev
```
Or grab the `.pkg.tar.*` from the
[releases page](https://git.fabledsword.com/bvandeusen/inkwell/releases)
and install it directly:
```sh
sudo pacman -U inkwell-*-x86_64.pkg.tar.*
```
The compression suffix depends on what the build image provides — `.zst` when
`zstd` is installed, otherwise `.xz` (today's builds are `.xz`). pacman reads
all of them; only the filename differs.
Either way you get:
- `/usr/bin/inkwell` — the app
- `/usr/share/applications/inkwell.desktop` — the menu entry
- `/usr/share/icons/hicolor/*/apps/inkwell.png` — themed icons
Launch **Inkwell** from your app menu, or run `inkwell`.
Uninstall: `sudo pacman -R inkwell`.
The package was called `thoughtsync` until the app was renamed Inkwell, and
`thoughtsync-desktop` before that. It declares `replaces`/`conflicts` on both
names, so an upgrade from either is a normal `pacman -U` and leaves nothing
behind.
## How the package is built
`package-prebuilt.sh` runs in CI (`.forgejo/workflows/desktop.yml`) and wraps the
binary the Linux build already produced into a pacman package — it does not
compile anything a second time.
Packaging a Debian-compiled binary for Arch is safe here because the binary
bundles nothing: it resolves `libwebkit2gtk-4.1.so.0`, `libgtk-3.so.0` and
`libsoup-3.0.so.0` by SONAME at runtime and those are identical on both distros,
SQLite is compiled in (`rusqlite` "bundled"), and glibc's forward compatibility
means building on Debian's older glibc and running on Arch's newer one is the
safe direction.
CI is Debian and has no `pacman`, so it cannot install-test the result. The build
step instead logs the package's `.PKGINFO` and complete file listing, so the
package is auditable from the run log; a real `pacman -U` is the final proof.
## Previously
This directory used to hold a source-build `PKGBUILD` requiring `makepkg -si`
with `rust` + `nodejs` + `npm` installed. It was removed once prebuilt packages
shipped — asking every user to install a compiler toolchain isn't distribution.