# Linux desktop build and runtime The Linux desktop entry, installed icon, and GTK application must all use the same application ID: `com.mithqal.ai`. ## Ubuntu and Debian build dependencies Install Flutter's Linux desktop toolchain and the native secret-storage development library: ```sh sudo apt-get update sudo apt-get install -y \ clang cmake ninja-build pkg-config libgtk-3-dev libstdc++-12-dev \ libsecret-1-dev libsecret-1-0 ``` Then check the host and build the release bundle: ```sh flutter doctor -v flutter devices flutter pub get flutter build linux --release ``` The executable bundle is produced at `build/linux/x64/release/bundle/`. Distribute the complete bundle and verify its native runtime dependencies on the target distribution, for example with `ldd build/linux/x64/release/bundle/flutter_app`. ## Secure session storage `flutter_secure_storage` uses Libsecret on Linux. Build machines need `libsecret-1-dev`; packaged applications need the runtime library `libsecret-1-0`. The desktop session must also provide D-Bus and an unlocked Secret Service keyring, commonly GNOME Keyring or KDE Wallet. Run the application in an interactive desktop session to verify login, token persistence after restart, and logout deletion. Do not treat a successful Linux build as proof that secure storage works: headless sessions and CI may have no unlocked keyring. Upstream setup references: - [Flutter Linux development setup](https://docs.flutter.dev/platform-integration/linux/setup) - [flutter_secure_storage Linux implementation](https://pub.dev/documentation/flutter_secure_storage_linux/latest/)