feat(desktop): build the app for Linux and Windows under its own name #824

Merged
raisondetredev merged 1 commit from refs/pull/824/head into main 2026-08-06 19:50:23 +02:00
raisondetredev commented 2026-08-06 19:49:47 +02:00 (Migrated from codeberg.org)

The project had only android, ios and web platform folders, so a desktop
build had nothing to brand: the window came up titled after the binary and
wore whatever generic icon the shell falls back to. Scaffold the two desktop
runners with the org that already owns the Android package, which gives both
the application id eu.halkyon.halkyon_learn, and set every surface that
shows a name or a mark.

The GTK runner titles its window "Halkyon Learn" in both the header-bar and
the plain title-bar path, and loads the Halkyon mark from the PNG the Flutter
side already bundles as an asset. That covers X11. Wayland ignores an icon
set on the window: the compositor matches the window's application id to an
installed desktop entry and takes the name and icon from there, so ship that
entry along with an install script that places the bundle, the icon and the
entry under ~/.local, and a README explaining which two names have to stay in
step for the match to happen.

Windows gets the title on the Win32 window and the VERSIONINFO strings
Explorer reads out of the binary. Its icon comes from the same rounded source
as the web one, since it is drawn against window chrome where a square tile
looks unfinished; flutter_launcher_icons writes a lone 256px frame, which
Windows would have to downscale for the 16-48px views it actually uses most,
so the committed .ico carries the full set of frames instead.

Note that just_audio and audio_session have no desktop implementation: audio
playback will not work on either platform until a backend is added for them.

Neither runner has been compiled — this machine has no desktop toolchain.

Signed-off-by: Tizian 「ティツィアーン」 raisondetredev@pm.me

The project had only android, ios and web platform folders, so a desktop build had nothing to brand: the window came up titled after the binary and wore whatever generic icon the shell falls back to. Scaffold the two desktop runners with the org that already owns the Android package, which gives both the application id eu.halkyon.halkyon_learn, and set every surface that shows a name or a mark. The GTK runner titles its window "Halkyon Learn" in both the header-bar and the plain title-bar path, and loads the Halkyon mark from the PNG the Flutter side already bundles as an asset. That covers X11. Wayland ignores an icon set on the window: the compositor matches the window's application id to an installed desktop entry and takes the name and icon from there, so ship that entry along with an install script that places the bundle, the icon and the entry under ~/.local, and a README explaining which two names have to stay in step for the match to happen. Windows gets the title on the Win32 window and the VERSIONINFO strings Explorer reads out of the binary. Its icon comes from the same rounded source as the web one, since it is drawn against window chrome where a square tile looks unfinished; flutter_launcher_icons writes a lone 256px frame, which Windows would have to downscale for the 16-48px views it actually uses most, so the committed .ico carries the full set of frames instead. Note that just_audio and audio_session have no desktop implementation: audio playback will not work on either platform until a backend is added for them. Neither runner has been compiled — this machine has no desktop toolchain. Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
project-halkyon/halkyon-learn!824
No description provided.