From 8426818712726b1c9b766859ae084574b668e514 Mon Sep 17 00:00:00 2001 From: randogoth Date: Sun, 11 Oct 2026 22:58:02 +0300 Subject: [PATCH] feat: wire the logo in as app icon and splash --- .../main/res/drawable-nodpi/splash_logo.png | Bin 0 -> 12900 bytes .../res/drawable-v21/launch_background.xml | 11 ++-- .../main/res/drawable/launch_background.xml | 10 ++-- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 2101 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 1276 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 2852 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 4363 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 5583 bytes app/assets/logo.png | Bin 0 -> 7429 bytes app/assets/logo.svg | 27 ++++++---- app/linux/runner/my_application.cc | 10 ++++ app/pubspec.lock | 40 ++++++++++++++ app/pubspec.yaml | 2 + app/tool/generate_icons.dart | 50 ++++++++++++++++++ 14 files changed, 129 insertions(+), 21 deletions(-) create mode 100644 app/android/app/src/main/res/drawable-nodpi/splash_logo.png create mode 100644 app/assets/logo.png create mode 100644 app/tool/generate_icons.dart diff --git a/app/android/app/src/main/res/drawable-nodpi/splash_logo.png b/app/android/app/src/main/res/drawable-nodpi/splash_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..318cecfd97d97c37c7d7ff42c19713f050ec39b4 GIT binary patch literal 12900 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 Z#cCB+oz}5f!oa}5;OXk;vd$@?2>=B4DnbAN literal 0 HcmV?d00001 diff --git a/app/android/app/src/main/res/drawable-v21/launch_background.xml b/app/android/app/src/main/res/drawable-v21/launch_background.xml index f74085f..908e264 100644 --- a/app/android/app/src/main/res/drawable-v21/launch_background.xml +++ b/app/android/app/src/main/res/drawable-v21/launch_background.xml @@ -1,12 +1,11 @@ - + - - - + android:src="@drawable/splash_logo" /> + diff --git a/app/android/app/src/main/res/drawable/launch_background.xml b/app/android/app/src/main/res/drawable/launch_background.xml index 304732f..d1821e8 100644 --- a/app/android/app/src/main/res/drawable/launch_background.xml +++ b/app/android/app/src/main/res/drawable/launch_background.xml @@ -1,12 +1,10 @@ - + - - - + android:src="@drawable/splash_logo" /> + diff --git a/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..213eb707523e3ed64c2d71fb45fd9dacf59297b4 100644 GIT binary patch literal 2101 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 delta 530 zcmdlguz+QPWIZzj14ELrb14G@gJg+oL`iUdT1k0gQ7VIDN`6wRf@f}GdTLN=VoGJ< z$y6H#28MM3J|V6Q3=E8ZU5w$gHMe~WIr;-aGKS59h`1g29&+?Y$k88+VKW)SXG@eV zg($FH_n5&blEET{QQMo*AehlEkI}9^pV7UZ(X)xsryXRXUpJ#)4`bj&#-K@zL6aGS zr!a<2XAGUe7&ZfJI>-Vh>vSfE0w(7&CeH?D-!^9dF6Mx4v5X1g`7zv5<~m=KgMdR|$eX|QjQaPThrQNK-kLYxdfpKW zF?H91xJlV&He_(P~8*)xd{y zUfZobF+tB-)<|f{=d!d0mX}*3Uvmpg?|XglN*l}4!<&rfoXPRFVdQ I&MBb@0KKKv^#A|> diff --git a/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..f490fb5d0cc986670f048dc49ebd84025fc17986 100644 GIT binary patch delta 1267 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 delta 708 zcmZ1?c9C_0WIZzj1H)Cfb}j}62FViFh?3y^w370~qErUQl>DSr1<%~X^wgl##FWay zlc_cg3=H1_d_r6q7#Kp1{?Od^jnSilF?_b>wr?Rve}o+U!5BU}6>y4N#$)H8ZEGkUc!`m{6pbTImMF#2{f`gJk-_b~?aGX_m$ z44TXsJQ-wJ$W+GA>5O4B7{g{VhRtFOpT!tHo5?tW$tsn}K99+{jLE&4*|V;m*{hM+ zyGbmgUp#w?MA1CSise$Z>!cbtOE+(mZrvf>woA6_fabPuF8e|LDBQ4i0RsbrSV@py zFoS@Cfq{WRKte)6LBss{^UuErf!!>rf(#6d{+=$5AsP4H-n{O2*g>H6p@YW4?^#v( zj6O+CkC!G3Wj**C&vx2n+Vy+&ohjLDoEFckzShrrtt+zO{;qv9{fn4iEbh1ag-rav z|I7LClV6s6_iZYZ9B#I;M&xl4;4H2Ri}h2H$;D!9%fd~=dW$* zugQ6E`?E0fZKp%Sj~>(ban1J4pYksb1dBk${xlomw jC<})`ozHbP0l+XkK&@C@E diff --git a/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..9e47aacbd6909d286a963cda3798e2afa3b3404e 100644 GIT binary patch literal 4363 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 delta 1020 zcmeBHYUh|BSs7_HJ7tuq;IvKei1 z7;SSHZF3pz@)+$486Arm9ZMLUN*SFi7+tCuU8@=0Y8c&W8Qtm_-Rl@V8W=qq89f^r zJ)0Okn;AV@7`>Vqy;>N3+8KR17=1e!eLETbx*7d?82x(~{d*Y$`WOTI83QLU22QMJ z44lLmG?6iA637R^lNp1jFosNJ44K9lI-N0e24mO^#;}=;VY3*+XEBD)W;YAwu#Vz% zOy+dU=JG1y@~hwutmO`A;*RR!iSAKZa8qUBP1QwrRF~XSUHU+6 z`9rl8kJVN_QCs;`ZPhci)z8#cKUZJbt|^Xn#Fe#OARr0?nC7*cWT?S=H<;6RbqhZq+3m4pd+*Rd4p-5+ijEj?8 z^u!s*-Ijcg*>UXA#jY*$Rv%>+>vv0etSRKW{OcTnn^hT$E?3WT;gjn+!R=q)eB$C` zy-&x2)r&sv=-l(^kMPc_Ij;9A|8;T5sZX3fudCz9M)Atmnw=eT))TMG)*Bi6*eNBYO53qFFu?7n|ZN+y3)lTuR~Y=Q&bF8tlwOoQBsptwvfdu zHPo4@bdl4)V{`YhD>t6J`SVDWu)9;pr#r9SNz3s091Zdk-@M|@%U9p*YXrl~Hg;*v zyKS5JRAljrH#^M}HK*TjY5j9o-P5(h`^vu@)x}dh7lkcq_rJ1Cp@~DOL!pUd(PtH> c=PQ-xec?@*x&PX81_lNOPgg&ebxsLQ0G;ZrX8-^I diff --git a/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..4579a2ba06449426d20f8a9ca7670a1dbdbb25bd 100644 GIT binary patch literal 5583 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 literal 0 HcmV?d00001 diff --git a/app/assets/logo.svg b/app/assets/logo.svg index 53f3b80..0b777c9 100644 --- a/app/assets/logo.svg +++ b/app/assets/logo.svg @@ -24,9 +24,9 @@ inkscape:deskcolor="#d1d1d1" inkscape:document-units="mm" inkscape:zoom="0.54252946" - inkscape:cx="292.15003" + inkscape:cx="291.22842" inkscape:cy="292.15003" - inkscape:window-width="1563" + inkscape:window-width="1536" inkscape:window-height="891" inkscape:window-x="0" inkscape:window-y="0" @@ -40,18 +40,27 @@ id="layer1" transform="translate(-27.689651,-71.189651)"> - + + + + diff --git a/app/linux/runner/my_application.cc b/app/linux/runner/my_application.cc index 7074cf4..5f9df19 100644 --- a/app/linux/runner/my_application.cc +++ b/app/linux/runner/my_application.cc @@ -54,6 +54,16 @@ static void my_application_activate(GApplication* application) { gtk_window_set_default_size(window, 1280, 720); + // The window wears the bundled logo, which lives beside the binary with + // the Flutter assets, where the engine also finds it. + g_autofree gchar* exe_path = g_file_read_link("/proc/self/exe", NULL); + if (exe_path != NULL) { + g_autofree gchar* exe_dir = g_path_get_dirname(exe_path); + g_autofree gchar* icon_path = g_build_filename( + exe_dir, "data", "flutter_assets", "assets", "logo.png", NULL); + gtk_window_set_icon_from_file(window, icon_path, NULL); + } + g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments( project, self->dart_entrypoint_arguments); diff --git a/app/pubspec.lock b/app/pubspec.lock index 2b1d7b7..6c6a73e 100644 --- a/app/pubspec.lock +++ b/app/pubspec.lock @@ -331,6 +331,14 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_svg: + dependency: "direct dev" + description: + name: flutter_svg + sha256: "35882981abcbfb8c15b286f0cd690ff25bac12d95eff3e25ee207f37d4c42e7f" + url: "https://pub.dev" + source: hosted + version: "2.3.0" flutter_test: dependency: "direct dev" description: flutter @@ -541,6 +549,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.1" + path_parsing: + dependency: transitive + description: + name: path_parsing + sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca" + url: "https://pub.dev" + source: hosted + version: "1.1.0" path_provider: dependency: "direct main" description: @@ -874,6 +890,30 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.6" + vector_graphics: + dependency: transitive + description: + name: vector_graphics + sha256: "9d0e3b9cb16542ad660daee871e726a10d13a93b7b5391677c3160e8f5e83935" + url: "https://pub.dev" + source: hosted + version: "1.2.3" + vector_graphics_codec: + dependency: transitive + description: + name: vector_graphics_codec + sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146" + url: "https://pub.dev" + source: hosted + version: "1.1.13" + vector_graphics_compiler: + dependency: transitive + description: + name: vector_graphics_compiler + sha256: "4dca4feb77dc3ec7f6e27e49c53241eb8217f55e4f9b12599a27f8903bca5682" + url: "https://pub.dev" + source: hosted + version: "1.3.0" vector_math: dependency: transitive description: diff --git a/app/pubspec.yaml b/app/pubspec.yaml index 6d47b10..3542a39 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -33,11 +33,13 @@ dev_dependencies: flutter_lints: ^6.0.0 drift_dev: ^2.34.0 build_runner: ^2.14.1 + flutter_svg: ^2.3.0 flutter: uses-material-design: true assets: + - assets/logo.png - locales/en-US/main.ftl - locales/de/main.ftl - locales/es/main.ftl diff --git a/app/tool/generate_icons.dart b/app/tool/generate_icons.dart new file mode 100644 index 0000000..d6f6323 --- /dev/null +++ b/app/tool/generate_icons.dart @@ -0,0 +1,50 @@ +import 'dart:io'; +import 'dart:ui' as ui show ImageByteFormat, PictureRecorder; + + +import 'package:flutter/widgets.dart' show Canvas; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:flutter_test/flutter_test.dart'; + +/// Rasterizes `assets/logo.svg` into the PNGs the platforms want: the +/// Android launcher icons at every density, the splash logo, and the +/// bundled logo the Linux window icon loads. Run with: +/// +/// flutter test tool/generate_icons.dart +/// +/// The committed PNGs are the product; this exists so a new logo can be +/// dropped in as the SVG and every platform follows in one run. +const sizes = { + 'android/app/src/main/res/mipmap-mdpi/ic_launcher.png': 48, + 'android/app/src/main/res/mipmap-hdpi/ic_launcher.png': 72, + 'android/app/src/main/res/mipmap-xhdpi/ic_launcher.png': 96, + 'android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png': 144, + 'android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png': 192, + 'android/app/src/main/res/drawable-nodpi/splash_logo.png': 432, + 'assets/logo.png': 256, +}; + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + + test('rasterizes the logo for every platform', () async { + final svg = File('assets/logo.svg').readAsStringSync(); + final info = await vg.loadPicture(SvgStringLoader(svg), null); + + for (final entry in sizes.entries) { + final size = entry.value; + final recorder = ui.PictureRecorder(); + final canvas = Canvas(recorder); + // The logo is square, so one scale fits both axes. + canvas.scale(size / info.size.width, size / info.size.height); + canvas.drawPicture(info.picture); + final image = await recorder.endRecording().toImage(size, size); + final bytes = await image.toByteData(format: ui.ImageByteFormat.png); + final file = File(entry.key); + await file.parent.create(recursive: true); + await file.writeAsBytes(bytes!.buffer.asUint8List()); + // ignore: avoid_print + print('wrote ${file.path} (${size}x$size)'); + } + }); +}