Skip to content

fix: Linux .run installers produce complete packages with icons, assets, and desktop integration#50

Merged
JohnVictorCrown merged 2 commits into
masterfrom
fix/linux-run-installer-assets
Feb 12, 2026
Merged

fix: Linux .run installers produce complete packages with icons, assets, and desktop integration#50
JohnVictorCrown merged 2 commits into
masterfrom
fix/linux-run-installer-assets

Conversation

@kilo-code-bot

@kilo-code-bot kilo-code-bot Bot commented Feb 12, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR fixes the Linux release builds to produce complete .run installer files that include all icons, assets, and proper desktop integration.

Problem

The existing Linux .run installers only bundled a single icon.png and used the launcher script as the makeself entry point. This meant:

  • Not all assets (logo.png, vscode.png) were included in the installer
  • No desktop integration — no .desktop file, no icon installation to XDG locations
  • The app wouldn't show up in application menus after installation
  • No validation that all required files were present before packaging

Changes

New: scripts/linux-install.sh

A proper installer script that runs when the .run is executed:

  • Installs the binary + launcher + Mesa libs to ~/.local/share/water-ai/
  • Copies all assets to the install directory
  • Installs icons to ~/.local/share/icons/hicolor/{256x256,128x128,64x64,48x48,scalable}/apps/
  • Creates a .desktop file in ~/.local/share/applications/ with proper icon references
  • Creates a ~/.local/bin/water symlink for CLI access
  • Updates icon cache and desktop database if available
  • Validates all required files exist before proceeding (fails explicitly on missing files)
  • Prints uninstall instructions

Updated: Makefile

  • Added ASSET_DIR and ASSET_FILES variables for centralized asset management
  • _bundle-linux-mesa target now:
    • Bundles ALL asset files (logo.png, logo-only.png, vscode.png) into assets/ directory
    • Validates all asset files exist before packaging (no silent fallbacks)
    • Verifies bundle contents (binary, launcher, install script, assets) before creating .run
    • Uses install.sh as the makeself entry point instead of the launcher
  • release-linux target validates all required files upfront before building binaries

What the .run installer does now

  1. Self-extracts to a temp directory
  2. Runs install.sh which:
    • Validates all required files are present
    • Copies app to ~/.local/share/water-ai/
    • Installs icons to XDG hicolor theme directories
    • Creates .desktop file for app menu integration
    • Creates CLI symlink
  3. Binary remains statically linked (except X11/OpenGL as required by hardware drivers)

Build safety

  • All asset files are validated before packaging — build fails explicitly if any are missing
  • No || true on critical steps
  • Bundle contents are verified after assembly, before makeself runs

Related to #46, #47


Built for stellar.foundation.us by Kilo for Slack

kilo-code-bot Bot and others added 2 commits February 12, 2026 18:38
…ration

- Add scripts/linux-install.sh: proper installer that handles desktop
  integration (XDG .desktop file, icons in hicolor theme, ~/.local/bin
  symlink) when the .run is executed
- Update Makefile _bundle-linux-mesa target to:
  - Bundle ALL asset files (logo.png, logo-only.png, vscode.png) into
    assets/ directory inside the .run
  - Validate all asset files exist before packaging (no silent fallbacks)
  - Verify bundle contents (binary, launcher, install script, assets)
    before creating the .run
  - Use install.sh as the makeself entry point instead of the launcher
- Add ASSET_DIR and ASSET_FILES variables to Makefile for centralized
  asset management
- Add pre-build validation in release-linux target to fail fast if any
  required files are missing

The .run installer now:
1. Extracts to a temp directory
2. Runs install.sh which copies everything to ~/.local/share/water-ai/
3. Installs icons to ~/.local/share/icons/hicolor/*/apps/
4. Creates a .desktop file in ~/.local/share/applications/
5. Creates a symlink in ~/.local/bin/water
6. Binary remains statically linked (except X11/OpenGL)
@JohnVictorCrown
JohnVictorCrown merged commit c04e46c into master Feb 12, 2026
2 checks passed
@JohnVictorCrown
JohnVictorCrown deleted the fix/linux-run-installer-assets branch February 12, 2026 18:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant