3.5 KiB
3.5 KiB
Building the Viet+ Flatpak
Prerequisites
- Flatpak installed with Flathub remote configured
org.gnome.Platform//50runtime installedorg.gnome.Sdk//50SDK installedorg.freedesktop.Sdk.Extension.rust-stable//25.08installed
Install dependencies
flatpak install --user flathub org.gnome.Platform//50
flatpak install --user flathub org.gnome.Sdk//50
flatpak install --user flathub org.freedesktop.Sdk.Extension.rust-stable//25.08
Method 1: Quick build script
cd packaging/flatpak
bash build-flatpak.sh [version]
# e.g. bash build-flatpak.sh 0.1.5
Output: packaging/flatpak/VietPlus-<version>.flatpak
Method 2: Manual step-by-step
cd packaging/flatpak
# 1. Clean previous artifacts
rm -rf build-dir repo VietPlus-*.flatpak
# 2. Initialize build directory
# NOTE: arg order is flatpak build-init DIR APPNAME SDK RUNTIME
flatpak build-init build-dir io.github.vietc.VietPlus \
org.gnome.Sdk//50 org.gnome.Platform//50
# 3. Copy source code
mkdir -p build-dir/files/src/vietc
rsync -a /path/to/vietc/ build-dir/files/src/vietc/ --exclude=target --exclude=.git
# 4. Build Rust binaries
flatpak build --share=network build-dir sh -c '
export PATH=/usr/lib/sdk/rust-stable/bin:$PATH
export CARGO_HOME=/app/cargo
cd /app/src/vietc
cargo build --release -p vietc-daemon -p vietc-cli -p vietc-uinputd
'
# 5. Install binaries and icons
flatpak build build-dir sh -c '
install -Dm755 /app/src/vietc/target/release/vietc /app/bin/vietc-daemon
install -Dm755 /app/src/vietc/target/release/vietc-cli /app/bin/vietc-cli
install -Dm755 /app/src/vietc/target/release/vietc-uinputd /app/bin/vietc-uinputd
install -Dm644 /app/src/vietc/packaging/icons/vietc.svg \
/app/share/icons/hicolor/scalable/apps/io.github.vietc.VietPlus.svg
install -Dm644 /app/src/vietc/packaging/icons/vietc-vn.svg \
/app/share/icons/hicolor/scalable/apps/io.github.vietc.VietPlus.vietc-vn.svg
install -Dm644 /app/src/vietc/packaging/icons/vietc-en.svg \
/app/share/icons/hicolor/scalable/apps/io.github.vietc.VietPlus.vietc-en.svg
'
# 6. Finish (set permissions + command)
flatpak build-finish build-dir \
--socket=x11 \
--socket=wayland \
--filesystem=home \
--share=ipc \
--talk-name=org.freedesktop.Notifications \
--talk-name=org.a11y.Bus \
--command=vietc-daemon
# 7. Export to local repo
flatpak build-export repo build-dir
# 8. Create bundle
flatpak build-bundle repo VietPlus-0.1.5.flatpak io.github.vietc.VietPlus
Installation
# From bundle
flatpak install --user --bundle VietPlus-0.1.5.flatpak
# From local repo
flatpak --user remote-add --no-gpg-verify vietc-repo repo
flatpak --user install vietc-repo io.github.vietc.VietPlus
# Run
flatpak run io.github.vietc.VietPlus
Key Notes
- SDK/RUNTIME order:
flatpak build-inittakesSDKfirst, thenRUNTIME(counterintuitive but important — getting this wrong means/usr/lib/sdk/won't be mounted) - Rust SDK: must be installed as
org.freedesktop.Sdk.Extension.rust-stable//25.08; it mounts automatically at/usr/lib/sdk/rust-stable/ - Icons: all icon files in Flatpak must be prefixed with the app ID (
io.github.vietc.VietPlus.*) orflatpak build-exportwill skip them - Daemon binary name: Cargo builds the daemon binary as
vietc(notvietc-daemon) intarget/release/; rename on install to match the desktop file - Desktop Categories: only use registered categories (
Utility);InputMethodis not registered