diff --git a/data/icons/hicolor/scalable/apps/io.github.ImaginerApp.Imaginer.svg b/data/icons/hicolor/scalable/apps/io.github.ImaginerApp.Imaginer.svg
new file mode 100644
index 0000000..a74c4df
--- /dev/null
+++ b/data/icons/hicolor/scalable/apps/io.github.ImaginerApp.Imaginer.svg
@@ -0,0 +1,130 @@
+
+
diff --git a/data/icons/hicolor/symbolic/apps/io.github.ImaginerApp.Imaginer-symbolic.svg b/data/icons/hicolor/symbolic/apps/io.github.ImaginerApp.Imaginer-symbolic.svg
new file mode 100644
index 0000000..0444828
--- /dev/null
+++ b/data/icons/hicolor/symbolic/apps/io.github.ImaginerApp.Imaginer-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/icons/meson.build b/data/icons/meson.build
new file mode 100644
index 0000000..c5d8389
--- /dev/null
+++ b/data/icons/meson.build
@@ -0,0 +1,13 @@
+application_id = 'io.github.ImaginerApp.Imaginer'
+
+scalable_dir = join_paths('hicolor', 'scalable', 'apps')
+install_data(
+ join_paths(scalable_dir, ('@0@.svg').format(application_id)),
+ install_dir: join_paths(get_option('datadir'), 'icons', scalable_dir)
+)
+
+symbolic_dir = join_paths('hicolor', 'symbolic', 'apps')
+install_data(
+ join_paths(symbolic_dir, ('@0@-symbolic.svg').format(application_id)),
+ install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir)
+)
diff --git a/data/meson.build b/data/meson.build
new file mode 100644
index 0000000..2195649
--- /dev/null
+++ b/data/meson.build
@@ -0,0 +1,39 @@
+desktop_file = i18n.merge_file(
+ input: 'io.github.ImaginerApp.Imaginer.desktop.in',
+ output: 'io.github.ImaginerApp.Imaginer.desktop',
+ type: 'desktop',
+ po_dir: '../po',
+ install: true,
+ install_dir: join_paths(get_option('datadir'), 'applications')
+)
+
+desktop_utils = find_program('desktop-file-validate', required: false)
+if desktop_utils.found()
+ test('Validate desktop file', desktop_utils, args: [desktop_file])
+endif
+
+appstream_file = i18n.merge_file(
+ input: 'io.github.ImaginerApp.Imaginer.appdata.xml.in',
+ output: 'io.github.ImaginerApp.Imaginer.appdata.xml',
+ po_dir: '../po',
+ install: true,
+ install_dir: join_paths(get_option('datadir'), 'appdata')
+)
+
+appstream_util = find_program('appstream-util', required: false)
+if appstream_util.found()
+ test('Validate appstream file', appstream_util, args: ['validate', appstream_file])
+endif
+
+install_data('io.github.ImaginerApp.Imaginer.gschema.xml',
+ install_dir: join_paths(get_option('datadir'), 'glib-2.0/schemas')
+)
+
+compile_schemas = find_program('glib-compile-schemas', required: false)
+if compile_schemas.found()
+ test('Validate schema file',
+ compile_schemas,
+ args: ['--strict', '--dry-run', meson.current_source_dir()])
+endif
+
+subdir('icons')
diff --git a/src/imaginer.gresource.xml b/src/imaginer.gresource.xml
new file mode 100644
index 0000000..437abf1
--- /dev/null
+++ b/src/imaginer.gresource.xml
@@ -0,0 +1,7 @@
+
+
+
+ window.ui
+ gtk/help-overlay.ui
+
+