Use icon.svg for app icon #451
Closed
opened 2026-06-05 19:50:12 +00:00 by guettli
·
2 comments
No Branch/Tag Specified
main
issue-563-agentloop-validation
dummy-pr-test
issue-560-fix-firebase-run-url
issue-539-stable-imap-uid
issue-533-shared-email-list
plan-issue-555
drop-nix
plan-issue-484
plan-issue-539
plan-issue-535
plan-issue-474
plan-issue-533
fix-dagger-engineless-precommit
issue-521-fix-deploy-yml-wait-time-api
issue-502-fix-email-id-collision-mailbox
issue-492-eliminate-duplicate-build-runner
issue-494-website-change-detection
issue-491-parallelize-check
issue-478-fix-stalwart-dual-stack-bind
issue-475-allowed-addresses-glob
issue-473-search-result-reorder
issue-453-update-agentloop-defaults
issue-466-structured-search
issue-505-exclude-chaos-monkey-from-regular-ci
issue-509-fix-search-result-sorting
fix-ink-sparkle-remaining-tests
issue-506-fix-search-emails-tests
issue-504-runner-wait-time
issue-488-search-notes
issue-472-changelog-issue-links
issue-501-folder-search-local-sqlite
issue-486-fix-stale-test-shader-mismatch
fix/prevent-settled-search-rerun-473
issue-467-fix-search-stale-results
issue-446-installed-versions-in-changelog
issue-462-fix-pr
issue-448-chaos-monkey-test
issue-436-notes-on-emails
issue-429-unify-mail-display
issue-422-move-to-folder-create-new
issue-414-ensure-not-run-as-root
issue-424-unify-email-list-views
issue-419-trusted-senders-page
issue-425-fix-prs
test-foo
issue-421-bug-report
issue-383-fix-ci
issue-394-fix-deploy-flutter-version
issue-391-fix-ci-double-trigger
issue-376-combined-inbox-v2
issue-376-combined-inbox
issue-384-fix-open-prs
sops-migrate
issue-339-safe-first-on-imap-fetch
issue-340-try-catch-measure-height
issue-342-pin-intl-version
issue-341-guard-threademails-last
issue-335-agentloop-code-test
issue-329-fix
issue-315-fix
issue-320-fix
issue-325-fix
issue-312-fix
issue-311-fix
issue-305-fix
issue-304-fix
issue-299-fix
issue-300-fix
issue-298-fix
issue-296-fix
issue-294-fix
issue-289-fix
issue-288-fix
issue-287-fix
issue-286-fix
issue-277-fix
issue-282-fix
issue-280-fix
issue-272-fix
issue-268-fix
issue-267-fix
issue-266-fix
issue-258-fix
issue-260-fix
issue-257-fix
issue-253-fix
issue-216-fix
issue-251-fix
issue-249-fix
issue-question-fixes
issue-235-fix
issue-236-fix-v2
issue-237-fix
issue-236-fix
issue-228-fix
issue-217-fix
issue-214-fix
issue-213-fix
issue-208-fix
issue-205-fix
issue-204-fix
issue-203-fix
issue-202-fix
issue-129-fix
issue-161-fix
issue-160-fix
issue-201-fix
issue-210-fix
issue-198-fix
issue-200-fix
issue-144-fix
issue-199-fix
fix/playstore-upload-use-requests
issue-193-fix
issue-186-fix
issue-185-fix
issue-192-fix
issue-183-fix
issue-175-fix
issue-172-fix
issue-171-fix
issue-167-fix
issue-136-fix
issue-162-fix
issue-179-fix
issue-155-fix
issue-154-fix
issue-152-fix
issue-151-fix
issue-141-fix
issue-150-fix
issue-164-fix
migrate-to-dagger
task/d1-ci-matrix
task/a4-typeconverter-json
task/u7-onboarding-walkthrough
task/d3-sync-doc
task/a5-layer-boundary-lint
task/t5-golden-tests
task/p5-date-cache
task/s4-link-handling
task/p3-html-parse-isolate
task/u8-mark-all-read
task/u3-recent-searches
task/a3-jmap-injectable-http-client
task/r5-tls-error-handling
fix/playstore-redirect-retry
task/t3-repository-contract-tests
task/p2-email-list-pagination
task/p1-fts5-search
fix/playstore-upload-timeout
task/a1-email-detail-notifier
fix/upgrade-workmanager-0.9
fix/android-core-library-desugaring
task/p4-db-indexes
task/r3-html-error-boundary
task/d2-check-coverage
task/a2-email-tile
task/t4-migration-tests
task/t2-widget-tests
task/t1-email-repo-coverage
task/u6-connection-status
task/u4-push-notifications
task/u2-draft-sync
task/u1-list-unsubscribe
task/s2-hostname-validation
task/r6-reliability-fuzz-tests
task/r4-sync-error-banner
task/r2-force-resync
task/r1-undo-history-persistence
No results found.
Labels
Clear labels
NeedSupervisor
State/InProgress
State/Later
State/Planned
automerge
ci-failure
do-not-merge
loop/code
loop/code-ci-pending
loop/code-done
loop/code-in-process
loop/merge
loop/merge-done
loop/merge-in-process
loop/plan
loop/plan-done
loop/plan-in-process
Issue escalated to a human supervisor; agentloop will skip it until cleared.
Eligible for automatic merge by CI
Issue opened by agentloop to track a failing CI workflow; used for deduplication.
Plan PR — review only, do not merge.
Add to run the built-in "code" prompt; override at prompts/code.md.
Prompt "code" finished; waiting for the PR's CI to pass before advancing.
Prompt "code" finished successfully.
Agent for the "code" prompt is currently running on this issue.
Managed by agentloop
Managed by agentloop
Managed by agentloop
Add to run the built-in "plan" prompt; override at prompts/plan.md.
Prompt "plan" finished successfully.
Agent for the "plan" prompt is currently running on this issue.
No labels
loop/code-done
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: guettli/sharedinbox#451
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Use icon.svg as App icon.
Up to now I see the default flutter icon.
Now I have all the context I need. Here's the implementation plan:
Implementation Plan: Use icon.svg as App Icon
Context
icon.svgalready exists at the project root (512×512, concentric rainbow rings on white). The Android mipmap directories (android/app/src/main/res/mipmap-*/ic_launcher.png) still contain the default Flutter blue logo. The Linux GTK runner (linux/my_application.cc) never sets a window icon. There is noflutter_launcher_iconssetup yet.rsvg-convertis not currently in the Nix dev shell;librsvgneeds to be added toflake.nix.Step 1 — Add
librsvgtoflake.nixAdd
librsvgto thebuildInputslist indevShells.defaultso thatrsvg-convertis available insidenix develop. This is the only change toflake.nix.Step 2 — Add
flutter_launcher_iconstopubspec.yamlAdd to
dev_dependencies:Add a top-level
flutter_iconsconfig block:ios: falsebecause there is no iOS runner in this repo.Step 3 — Add
generate-iconstask toTaskfile.ymlicon.png(the 1024×1024 intermediate) is committed alongside the repo so the generated mipmap PNGs and the source PNG are both tracked.icon.svgremains the canonical editable source.Also update
playstore/icon.png:Step 4 — Set the Linux window/taskbar icon in
linux/my_application.ccflutter_launcher_iconsplaces the icon atlinux/<appname>.pngand registers it inlinux/CMakeLists.txt, but it does not wire up the GTK window icon in C++ code. After the call togtk_widget_show_all, add:flutter_launcher_iconsalready updatesCMakeLists.txtto installlinux/sharedinbox.pngnext to the binary, so the relative path"sharedinbox.png"is valid at runtime.Step 5 — Run the task and commit generated files
Run
task generate-iconsinsidenix developand commit:icon.png(source raster, 1024×1024)playstore/icon.png(updated)android/app/src/main/res/mipmap-*/ic_launcher.png(overwritten by flutter_launcher_icons)linux/sharedinbox.png(generated by flutter_launcher_icons)linux/CMakeLists.txt(flutter_launcher_icons adds an install rule)pubspec.yaml,pubspec.lock,flake.nix,Taskfile.yml,linux/my_application.ccNo
dart run build_runneris needed — this is not a Drift schema change.The implementation is done. Here's a summary of what was done:
Summary
Implemented icon.svg as the app icon across Android and Linux. PR: https://codeberg.org/guettli/sharedinbox/pulls/459
What changed
Android — regenerated all five mipmap launcher icons (
mdpi48px →xxxhdpi192px) fromicon.svgusing Inkscape. The rainbow-rings design now replaces the default Flutter logo.Linux — added
linux/sharedinbox.png(512×512), wired it intolinux/CMakeLists.txtso it's installed next to the binary at build time, and calledgtk_window_set_icon_from_fileinlinux/my_application.ccso the GTK window/taskbar shows the correct icon at runtime.Tooling for future regeneration:
icon.png(1024×1024 source raster) committed to the repoflutter_launcher_icons: ^0.13.1added todev_dependencieswith aflutter_iconsconfig block inpubspec.yamltask generate-iconsadded toTaskfile.yml— runsrsvg-convertthenflutter pub run flutter_launcher_iconslibrsvgadded toflake.nixsorsvg-convertis available insidenix develop