diff --git a/data/icons/meson.build b/data/icons/meson.build
new file mode 100644
index 0000000..bf57c91
--- /dev/null
+++ b/data/icons/meson.build
@@ -0,0 +1,9 @@
+install_data(
+ '@0@.svg'.format(base_id),
+ install_dir: iconsdir / 'hicolor' / 'scalable' / 'apps'
+)
+
+install_data(
+ '@0@-symbolic.svg'.format(base_id),
+ install_dir: iconsdir / 'hicolor' / 'symbolic' / 'apps',
+)
diff --git a/data/icons/org.freedesktop.ryuukyu.Helvum-symbolic.svg b/data/icons/org.freedesktop.ryuukyu.Helvum-symbolic.svg
new file mode 100644
index 0000000..626d455
--- /dev/null
+++ b/data/icons/org.freedesktop.ryuukyu.Helvum-symbolic.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/data/icons/org.freedesktop.ryuukyu.Helvum.Source.svg b/data/icons/org.freedesktop.ryuukyu.Helvum.Source.svg
new file mode 100644
index 0000000..95380b3
--- /dev/null
+++ b/data/icons/org.freedesktop.ryuukyu.Helvum.Source.svg
@@ -0,0 +1,3366 @@
+
+
+
+
diff --git a/data/icons/org.freedesktop.ryuukyu.Helvum.svg b/data/icons/org.freedesktop.ryuukyu.Helvum.svg
new file mode 100644
index 0000000..2802bf0
--- /dev/null
+++ b/data/icons/org.freedesktop.ryuukyu.Helvum.svg
@@ -0,0 +1,56 @@
+
+
diff --git a/data/meson.build b/data/meson.build
index 8e53198..521e9df 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -1,4 +1,12 @@
-desktop_file = '@0@.desktop'.format(base_id)
+subdir('icons')
+
+desktop_conf = configuration_data()
+desktop_conf.set('icon', base_id)
+desktop_file = configure_file(
+ input: '@0@.desktop.in'.format(base_id),
+ output: '@BASENAME@',
+ configuration: desktop_conf
+)
if desktop_file_validate.found()
test(
@@ -11,6 +19,6 @@ if desktop_file_validate.found()
endif
install_data(
- desktop_file,
- install_dir: datadir / 'applications'
+ desktop_file,
+ install_dir: datadir / 'applications'
)
diff --git a/data/org.freedesktop.ryuukyu.Helvum.desktop b/data/org.freedesktop.ryuukyu.Helvum.desktop.in
similarity index 64%
rename from data/org.freedesktop.ryuukyu.Helvum.desktop
rename to data/org.freedesktop.ryuukyu.Helvum.desktop.in
index 6280428..c2d62e8 100644
--- a/data/org.freedesktop.ryuukyu.Helvum.desktop
+++ b/data/org.freedesktop.ryuukyu.Helvum.desktop.in
@@ -5,4 +5,5 @@ Comment=A patchbay for pipewire
Type=Application
Exec=helvum
Terminal=false
-Categories=AudioVideo;Audio;Video;Midi;Settings;GNOME;GTK;
\ No newline at end of file
+Categories=AudioVideo;Audio;Video;Midi;Settings;GNOME;GTK;
+Icon=@icon@
\ No newline at end of file
diff --git a/meson.build b/meson.build
index cae59ea..41d7842 100644
--- a/meson.build
+++ b/meson.build
@@ -25,6 +25,7 @@ cargo_script = find_program('build-aux/cargo.sh')
prefix = get_option('prefix')
bindir = prefix / get_option('bindir')
datadir = prefix / get_option('datadir')
+iconsdir = datadir / 'icons'
cargo_sources = files(
'Cargo.toml',