Skip to content

fix: ship 32–256 hicolor icons so Linux launchers resolve Aerion - #396

Closed
gianlucamazza wants to merge 2 commits into
hkdb:mainfrom
gianlucamazza:fix/linux-hicolor-icon-sizes
Closed

gianlucamazza wants to merge 2 commits into
hkdb:mainfrom
gianlucamazza:fix/linux-hicolor-icon-sizes

Conversation

@gianlucamazza

@gianlucamazza gianlucamazza commented Aug 14, 2026 •

Copy link
Copy Markdown

Fixes #395.

Linux packaging installed a single 16-bit 256×256 PNG. The system hicolor theme marks [256x256/apps] as MinSize=64, so launchers that look up ~48px (Vicinae, and many others with a spec-faithful resolver) skip that directory and show no icon. The .desktop Icon= key was already correct.

This ships 8-bit PNGs at 32/48/64/128/256 (from brand/icon.png) and installs all of them from:

  • build/linux/install.sh (tarball)
  • make install-linux
  • Flatpak manifests (dev + Flathub + source)
  • the release tarball (icons/<size>/ plus the 256 file at the root so AUR aerion-bin stays compatible)

CONTRIBUTING.md says general PRs are not accepted yet. Opening this so the patch sits on #395; feel free to close and cherry-pick.

Validation (Arch Linux)

Isolated XDG_DATA_HOME tree produced by the new install loop, GTK IconTheme forced to hicolor (no JARVIS / user-theme overlay):

Scenario Vanilla (/usr 256-only, 16-bit) Patched (32–256, 8-bit)
Lookup 32 / 48 miss or scaled 256 (MinSize=64) …/32x32/… and …/48x48/…
Lookup 64 / 128 / 256 256 only matching size
Icon= in desktop file io.github.hkdb.Aerion unchanged
aerion still starts ok ok

bash -n on install.sh / uninstall.sh. Flatpak YAML parses.

Review follow-up (ac35ecb)

  • Flatpak was still 256-only after the first commit — same bug for the recommended Linux install.
  • install.sh: helper instead of else if, fail if icons/ exists but a size is missing, cache update uses $HICOLOR_DIR.
  • Makefile ICON_SIZES kept in sync with the scripts.

Only a 16-bit 256×256 PNG was installed. hicolor marks [256x256/apps]
MinSize=64, so launchers that look up ~48px skip it and show no icon
(hkdb#395). Commit 8-bit PNGs at 32/48/64/128/256, install all sizes from
install.sh / make install-linux, and pack them into the release tarball.
Keep the 256 file at the tarball root so AUR aerion-bin stays compatible.

Closes hkdb#395
The first commit left Flatpak installing only the 256 PNG — same
MinSize=64 miss as the tarball. Install all shipped sizes there too.

install.sh now resolves each size via a helper (no else-if), fails
if icons/ is present but incomplete, and refreshes the cache under
$HICOLOR_DIR. Makefile ICON_SIZES is the documented list for make
install-linux / uninstall-linux.
hkdb added a commit that referenced this pull request Sep 16, 2026
@hkdb

hkdb commented Sep 16, 2026

Copy link
Copy Markdown
Owner

Hey there! I really appreciate this. The quality of this PR is really good and it's obviously well thought out. The only problem is that it's not targeting the latest dev branch. That said, I have been working on another interim icon to stay more original brand aligned so I don't trigger any reviews anywhere. I did however reference your good work on my implementation though. This change will be reflected in the upcoming release. Thanks again!

@hkdb hkdb closed this Sep 16, 2026
hkdb added a commit that referenced this pull request Sep 18, 2026
* Bump to v0.3.4-dev

* Fix post delete ghost messages on message list

* New full set app icon #99 #395 (#396)

* Fixed message list sender and preview for threads - #169

* Added default BCC - #341

* Added default reply-to & CC - #404

* Fixed comma display name - #398

* Fixed composer draft format detection - #420

* Added English (UK) spellcheck dictionary - #417

* Block save all attachments if flatpak - #384

* Added dot and glow dot optional accents for unread messages

* Fix Italian Translations #207 (#424)

* Backfilled i18n missing keys

* i18n(cs): Update Czech translation (#425)

* Manual merge of (#426) by @freemans32

* Added spellcheck dictionary: Dutch (#413)

* fix: Stop Escape closing the composer under a modal (#401)

Composer.svelte binds a svelte:window keydown handler that closed the
composer on bare Escape with no check for what was on screen. Two
user-visible symptoms:

  - Escape on the save-draft prompt did nothing. bits-ui closed the
    dialog, then this handler immediately re-opened it.
  - A guarded modal over the composer (settings, folder picker) was
    dismissed together with the composer underneath it, popping the
    save-draft prompt.

Fix is to bail when a modal layer already consumed the key:

    if (e.defaultPrevented) return
    if (isDialogGuardActive()) return
    handleClose()

bits-ui's escape layer listens on `document` and calls preventDefault()
without stopping propagation, so the event still reaches this
window-level handler — but defaultPrevented persists across listeners
in the same dispatch. That covers every bits-ui layer (dialog,
alertdialog, dropdown, context menu) whether or not it registers the
dialog guard, including layers that deliberately ignore Escape: bits-ui
preventDefaults those too, and the composer shouldn't close under a
modal that is refusing to.

Note a DOM check for [role=dialog] does not work here, which is what I
tried first. A microtask checkpoint runs between listener callbacks, so
Svelte has already flushed the dialog out of the DOM by the time this
handler runs and the query finds nothing.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>

* Added window size persistence - #217

* Added mini calendar for easier navigation - #368

* Calendar color render adjustments to alleviate #406

* Fixed Microsoft calendar attachments handling - #370

* Updated what's new

* Contacts and Calendar fixes for #278

- Fixed Contacts pagination
- Fixed M365 contacts - sync all folders
- Fixed M365 calendar - kill the silent-zero paths

* Fixed draft edit logic - #392

* Empty spam + GA fix

* GA fix 2

* GA fix 3

* CI and GA fix

* Bumped to v0.3.4

---------

Co-authored-by: Yacine Boussoufa <yacine.boussoufa.yb@gmail.com>
Co-authored-by: lorduskordus <136916485+lorduskordus@users.noreply.github.com>
Co-authored-by: Diego Lapiduz <dlapiduz@users.noreply.github.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
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.

Linux icon missing in launchers: only 256×256 hicolor PNG is shipped

2 participants