feat: an app icon in colour and symbolic form, validated at build time
Both are drawn to the GNOME HIG: a 128px instrument face that leaves its margins, carries one 4px front profile for depth and no gradients or shadows, and a 16px symbolic reduction of the same metaphor in fills only. The colour icon strokes its sine because it is never recoloured; the symbolic one cannot. Every file in the manifest now preprocesses through xmllint, because a malformed SVG is the one icon failure no runtime check can see: librsvg refuses the file while the name still resolves, so the icon draws nothing and has_icon() says it is fine.
This commit is contained in:
1 parent
69eab02729
commit
f3d68cfdd4
4 files changed
+84
-10
No files matched your search
@@ -2,16 +2,26 @@
|
||||
<!-- SPDX-License-Identifier: MIT -->
|
||||
<!-- SPDX-FileCopyrightText: 2026 Martino Ferrari -->
|
||||
<!--
|
||||
The four icons this app had to draw for itself, compiled into the binary so there is
|
||||
still exactly one file to run. `gtk_icon_theme_add_resource_path()` wants the tree an
|
||||
icon theme has, so the prefix is followed by `<size>/<context>`; `scalable` is the one
|
||||
that means "an SVG, use it at any size".
|
||||
The icons this app had to draw for itself, compiled into the binary so there is still
|
||||
exactly one file to run. `gtk_icon_theme_add_resource_path()` wants the tree an icon theme
|
||||
has, so the prefix is followed by `<size>/<context>`; `scalable` is the one that means
|
||||
"an SVG, use it at any size", and `apps` is where an application icon belongs.
|
||||
|
||||
Every file carries `preprocess="xml-stripblanks"`, which makes glib-compile-resources pipe
|
||||
it through xmllint. That is the only thing that catches a malformed SVG: librsvg refuses
|
||||
such a file outright, but the icon *name* still resolves, so `gtk_icon_theme_has_icon()`
|
||||
returns true and the icon simply draws nothing. No runtime GTK call can tell the two apart
|
||||
(`lookup_icon()` never returns NULL and always reports the size it was asked for), so the
|
||||
check belongs here, where a double hyphen inside a comment fails the build with a file,
|
||||
line and column instead.
|
||||
-->
|
||||
<gresources>
|
||||
<gresource prefix="/org/udpscope/icons">
|
||||
<file>scalable/actions/udpscope-trigger-symbolic.svg</file>
|
||||
<file>scalable/actions/udpscope-cursors-symbolic.svg</file>
|
||||
<file>scalable/actions/udpscope-measure-symbolic.svg</file>
|
||||
<file>scalable/actions/udpscope-math-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">scalable/actions/udpscope-trigger-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">scalable/actions/udpscope-cursors-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">scalable/actions/udpscope-measure-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">scalable/actions/udpscope-math-symbolic.svg</file>
|
||||
<file preprocess="xml-stripblanks">scalable/apps/org.udpscope.app.svg</file>
|
||||
<file preprocess="xml-stripblanks">scalable/apps/org.udpscope.app-symbolic.svg</file>
|
||||
</gresource>
|
||||
</gresources>
|
||||
Reference in new issue
Block a user