summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.editorconfig22
-rw-r--r--Makefile17
-rw-r--r--build-aux/flatpak.mk29
-rw-r--r--build-aux/im.gzr.MunchMate.Devel.json45
-rw-r--r--data/icons/scalable/apps/im.gzr.MunchMate.Devel.svg276
-rw-r--r--data/im.gzr.MunchMate.desktop8
-rw-r--r--data/im.gzr.MunchMate.gresource.xml7
-rw-r--r--data/im.gzr.MunchMate.gschema.xml4
-rw-r--r--data/im.gzr.MunchMate.metainfo.xml14
-rw-r--r--data/im.gzr.MunchMate.service.in3
-rw-r--r--data/meson.build54
-rw-r--r--data/style.css9
-rw-r--r--data/ui/meson.build3
-rw-r--r--data/ui/mm-window.blp17
-rw-r--r--meson.build41
-rw-r--r--src/config.vapi7
-rw-r--r--src/main.vala8
-rw-r--r--src/meson.build42
-rw-r--r--src/mm-application.vala50
-rw-r--r--src/mm-window.vala12
20 files changed, 668 insertions, 0 deletions
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..edeca31
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,22 @@
+root = true
+
+[meson.build]
+indent_style = space
+indent_size = 2
+
+[*.vala]
+indent_style = tab
+indent_size = 4
+trim_trailing_whitespace = true
+
+[*.blp]
+indent_style = space
+indent_size = 2
+
+[*.css]
+indent_style = space
+indent_size = 2
+
+[*.json]
+indent_style = space
+indent_size = 2
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..e256067
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,17 @@
+APP_ID := im.gzr.MunchMate.Devel
+
+build:
+	@meson setup --reconfigure --buildtype=debug build
+	@meson compile -C build
+
+clean:
+	@rm -rf ./build/
+
+run:
+	@env \
+	G_MESSAGES_DEBUG=$(APP_ID) \
+	./build/src/munchmate
+
+.PHONY: build clean run
+
+include build-aux/flatpak.mk
diff --git a/build-aux/flatpak.mk b/build-aux/flatpak.mk
new file mode 100644
index 0000000..3379968
--- /dev/null
+++ b/build-aux/flatpak.mk
@@ -0,0 +1,29 @@
+APP_ID ?=
+
+flatpak-build:
+	@flatpak remote-add --if-not-exists --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo
+	@flatpak-builder \
+	--user \
+	--force-clean \
+	--disable-rofiles-fuse \
+	--install-deps-from=flathub \
+	--install \
+	--repo=./build/flatpak/repo \
+	--state-dir=./build/.flatpak-builder \
+	./build/flatpak \
+	./build-aux/$(APP_ID).json
+
+flatpak-uninstall:
+	@flatpak uninstall --delete-data --verbose \
+	$(APP_ID)
+
+flatpak-clean:
+	@rm -rf ./build/flatpak/
+	@rm -rf ./build/.flatpak-builder/
+
+flatpak-run: ARGS ?=
+flatpak-run:
+	@flatpak run --devel --verbose \
+	$(APP_ID) $(ARGS)
+
+.PHONY: flatpak-build flatpak-uninstall flatpak-clean flatpak-run
diff --git a/build-aux/im.gzr.MunchMate.Devel.json b/build-aux/im.gzr.MunchMate.Devel.json
new file mode 100644
index 0000000..e1c9e18
--- /dev/null
+++ b/build-aux/im.gzr.MunchMate.Devel.json
@@ -0,0 +1,45 @@
+{
+  "id": "im.gzr.MunchMate.Devel",
+  "runtime": "org.gnome.Platform",
+  "runtime-version": "50",
+  "sdk": "org.gnome.Sdk",
+  "command": "munchmate",
+  "finish-args": [
+    "--share=ipc",
+    "--socket=fallback-x11",
+    "--socket=wayland",
+    "--device=dri",
+    "--env=G_MESSAGES_DEBUG=im.gzr.MunchMate.Devel"
+  ],
+  "build-options" : {
+    "cflags" : "-O2 -g",
+    "env" : {}
+  },
+  "cleanup" : [
+    "/include",
+    "/lib/pkgconfig",
+    "/share/pkgconfig",
+    "/share/aclocal",
+    "/man",
+    "/share/man",
+    "/share/gtk-doc",
+    "*.la",
+    "*.a",
+    "/lib/girepository-1.0",
+    "/share/doc",
+    "/share/gir-1.0"
+  ],
+  "modules" : [
+    {
+      "name" : "munchmate",
+      "buildsystem" : "meson",
+      "builddir" : true,
+      "sources" : [
+        {
+          "type" : "dir",
+          "path" : ".."
+        }
+      ]
+    }
+  ]
+}
diff --git a/data/icons/scalable/apps/im.gzr.MunchMate.Devel.svg b/data/icons/scalable/apps/im.gzr.MunchMate.Devel.svg
new file mode 100644
index 0000000..4e02aed
--- /dev/null
+++ b/data/icons/scalable/apps/im.gzr.MunchMate.Devel.svg
@@ -0,0 +1,276 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   height="128"
+   width="128"
+   version="1.1"
+   id="svg18"
+   sodipodi:docname="org.xfce.about.svg"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+  <metadata
+     id="metadata24">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs22" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1920"
+     inkscape:window-height="1019"
+     id="namedview20"
+     showgrid="false"
+     inkscape:zoom="2.5243712"
+     inkscape:cx="107.92906"
+     inkscape:cy="-10.749463"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="g16"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:pagecheckerboard="false">
+    <sodipodi:guide
+       position="115,35"
+       orientation="0,1"
+       id="guide1036"
+       inkscape:locked="false" />
+    <inkscape:grid
+       type="xygrid"
+       id="grid860"
+       empspacing="4" />
+  </sodipodi:namedview>
+  <g
+     stroke-width="4"
+     id="g16">
+    <path
+       style="display:inline;overflow:visible;visibility:visible;fill:#ad7702;fill-opacity:1;fill-rule:nonzero;stroke:#ad7702;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none"
+       id="path851"
+       d="m 63.999997,14.269911 c 3.81304,0 16.106204,30.672041 19.191022,32.910692 3.084813,2.238644 36.088361,4.438384 37.266671,8.060591 1.17829,3.622208 -24.227678,24.778304 -25.405971,28.400512 -1.178293,3.622206 6.925861,35.653754 3.841048,37.892404 -3.084823,2.23864 -31.07973,-15.35821 -34.892775,-15.35821 -3.813038,0 -31.807948,17.59685 -34.892766,15.35821 -3.084813,-2.23865 5.01934,-34.2702 3.841048,-37.892404 C 31.769982,80.019498 6.3640183,58.863397 7.5423132,55.241189 8.7206092,51.618987 41.724162,49.419247 44.808977,47.180603 47.893789,44.941952 60.186959,14.269911 63.999997,14.269911 Z"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m 63.999997,10.269457 c 3.81304,0 16.106204,30.672041 19.191022,32.910692 3.084813,2.238644 36.088361,4.438384 37.266671,8.060591 1.17829,3.622208 -24.227678,24.778304 -25.405971,28.400512 -1.178293,3.622206 6.925861,35.653758 3.841048,37.892408 -3.084823,2.23864 -31.07973,-15.35821 -34.892775,-15.35821 -3.813038,0 -31.807948,17.59685 -34.892766,15.35821 -3.084813,-2.23865 5.01934,-34.270204 3.841048,-37.892408 C 31.769982,76.019044 6.3640183,54.862943 7.5423132,51.240735 8.7206092,47.618533 41.724162,45.418793 44.808977,43.180149 47.893789,40.941498 60.186959,10.269457 63.999997,10.269457 Z"
+       id="path1307"
+       style="display:inline;overflow:visible;visibility:visible;fill:#f9da02;fill-opacity:1;fill-rule:nonzero;stroke:#ad7702;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" />
+    <g
+       transform="matrix(0.37475031,0,0,0.37475031,-29.420604,-75.627288)"
+       id="g23"
+       style="fill:#ad7702;fill-opacity:0.5;stroke:#ad7702;stroke-opacity:1">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 143.756,326.774 c 0.538,-0.09 13.953,6.991 22.97,9.438 16.079,4.109 30.756,16.476 37.85,23.58 0.526,0.608 6.093,-4.168 11.919,-3.824 7.958,0.482 32.582,7.406 35.872,2.691 1.995,-2.768 1.852,-6.164 4.341,-7.555 1.34,-0.375 -4.981,-11.936 1.737,-15.64 4.79,-2.394 8.849,11.009 10.079,12.511 0.551,0.672 3.474,0.836 3.128,-0.695 -0.375,-1.663 -5.103,-14.524 0.695,-16.682 9.417,-3.729 7.748,16.456 7.993,17.03 0.521,1.222 32.797,2.164 34.754,16.682 1.132,7.99 -25.858,18.317 -28.498,20.157 -2.639,1.84 -2.419,4.783 -1.39,6.604 1.183,1.975 9.046,8.641 7.994,11.816 -0.723,1.834 -15.398,-4.888 -16.335,-3.475 -2.137,2.699 10.683,9.455 6.256,14.249 -1.755,1.148 -21.947,-8.454 -21.896,-8.341 -0.542,0.206 -28.532,5.113 -50.046,-1.391 -0.758,-0.214 -13.808,12.606 -15.292,12.165 -2.029,-0.744 2.991,-11.15 2.433,-13.207 -0.912,-1.146 -9.251,4.653 -9.731,1.738 -0.574,-3.831 7.318,-8.235 6.951,-10.774 -2.035,-14.424 0.909,-22.847 5.908,-29.888 1.667,-2.592 -19.592,-18.646 -34.983,-24.982 -15.39,-6.336 -23.624,-11.706 -22.709,-12.207 z"
+         transform="translate(4.86564,17.0296)"
+         id="path14"
+         style="fill:#ad7702;fill-opacity:1;fill-rule:evenodd;stroke:#ad7702;stroke-width:1.00000003pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 286.934,392.031 c -0.169,-0.59 10.503,-7.045 12.048,-5.561 2.781,1.008 -11.95,6.31 -12.048,5.561 z"
+         id="path7"
+         style="fill:#ad7702;fill-opacity:1;fill-rule:evenodd;stroke:#ad7702;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 292.031,397.901 c -0.94,-0.568 6.389,-9.114 8.187,-8.187 2.625,2.608 -8.31,8.39 -8.187,8.187 z"
+         id="path8-3"
+         style="fill:#ad7702;fill-opacity:1;fill-rule:evenodd;stroke:#ad7702;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 320.916,358.358 c -0.891,-0.737 -7.878,10.287 -6.333,11.431 0.929,0.695 6.731,-11.038 6.333,-11.431 z"
+         id="path13"
+         style="fill:#ad7702;fill-opacity:1;fill-rule:evenodd;stroke:#ad7702;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <ellipse
+         cx="288.86475"
+         cy="374.58655"
+         rx="3.012037"
+         ry="3.398196"
+         transform="matrix(0.9253,0,0,0.933788,22.0283,24.352)"
+         id="ellipse17"
+         style="fill:#ad7702;fill-opacity:1;fill-rule:evenodd;stroke:#ad7702;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 320.916,358.358 c -0.441,-0.512 -2.781,11.368 -1.699,11.894 0.929,0.695 2.547,-11.276 1.699,-11.894 z"
+         transform="translate(-8.0321,-1.54463)"
+         id="path18"
+         style="fill:#ad7702;fill-opacity:1;fill-rule:evenodd;stroke:#ad7702;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 321.366,357.908 c -2.771,1.959 1.521,13.045 8.58,6.572 -5.546,0.163 -7.396,-1.461 -8.58,-6.572 z"
+         transform="translate(-38.3069,14.983)"
+         id="path21"
+         style="fill:#ad7702;fill-opacity:1;fill-rule:evenodd;stroke:#ad7702;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <g
+       style="fill:#ad7702;fill-opacity:0.5;stroke:#ad7702;stroke-opacity:1"
+       id="g889"
+       transform="matrix(0.37475031,0,0,0.37475031,-29.420604,-75.627288)">
+      <path
+         style="fill:#ad7702;fill-opacity:1;fill-rule:evenodd;stroke:#ad7702;stroke-width:1.00000003pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path875"
+         transform="translate(4.86564,17.0296)"
+         d="m 143.756,326.774 c 0.538,-0.09 13.953,6.991 22.97,9.438 16.079,4.109 30.756,16.476 37.85,23.58 0.526,0.608 6.093,-4.168 11.919,-3.824 7.958,0.482 32.582,7.406 35.872,2.691 1.995,-2.768 1.852,-6.164 4.341,-7.555 1.34,-0.375 -4.981,-11.936 1.737,-15.64 4.79,-2.394 8.849,11.009 10.079,12.511 0.551,0.672 3.474,0.836 3.128,-0.695 -0.375,-1.663 -5.103,-14.524 0.695,-16.682 9.417,-3.729 7.748,16.456 7.993,17.03 0.521,1.222 32.797,2.164 34.754,16.682 1.132,7.99 -25.858,18.317 -28.498,20.157 -2.639,1.84 -2.419,4.783 -1.39,6.604 1.183,1.975 9.046,8.641 7.994,11.816 -0.723,1.834 -15.398,-4.888 -16.335,-3.475 -2.137,2.699 10.683,9.455 6.256,14.249 -1.755,1.148 -21.947,-8.454 -21.896,-8.341 -0.542,0.206 -28.532,5.113 -50.046,-1.391 -0.758,-0.214 -13.808,12.606 -15.292,12.165 -2.029,-0.744 2.991,-11.15 2.433,-13.207 -0.912,-1.146 -9.251,4.653 -9.731,1.738 -0.574,-3.831 7.318,-8.235 6.951,-10.774 -2.035,-14.424 0.909,-22.847 5.908,-29.888 1.667,-2.592 -19.592,-18.646 -34.983,-24.982 -15.39,-6.336 -23.624,-11.706 -22.709,-12.207 z"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#ad7702;fill-opacity:1;fill-rule:evenodd;stroke:#ad7702;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path877"
+         d="m 286.934,392.031 c -0.169,-0.59 10.503,-7.045 12.048,-5.561 2.781,1.008 -11.95,6.31 -12.048,5.561 z"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#ad7702;fill-opacity:1;fill-rule:evenodd;stroke:#ad7702;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path879"
+         d="m 292.031,397.901 c -0.94,-0.568 6.389,-9.114 8.187,-8.187 2.625,2.608 -8.31,8.39 -8.187,8.187 z"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#ad7702;fill-opacity:1;fill-rule:evenodd;stroke:#ad7702;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path881"
+         d="m 320.916,358.358 c -0.891,-0.737 -7.878,10.287 -6.333,11.431 0.929,0.695 6.731,-11.038 6.333,-11.431 z"
+         inkscape:connector-curvature="0" />
+      <ellipse
+         style="fill:#ad7702;fill-opacity:1;fill-rule:evenodd;stroke:#ad7702;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="ellipse883"
+         transform="matrix(0.9253,0,0,0.933788,22.0283,24.352)"
+         ry="3.398196"
+         rx="3.012037"
+         cy="374.58655"
+         cx="288.86475" />
+      <path
+         style="fill:#ad7702;fill-opacity:1;fill-rule:evenodd;stroke:#ad7702;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path885"
+         transform="translate(-8.0321,-1.54463)"
+         d="m 320.916,358.358 c -0.441,-0.512 -2.781,11.368 -1.699,11.894 0.929,0.695 2.547,-11.276 1.699,-11.894 z"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#ad7702;fill-opacity:1;fill-rule:evenodd;stroke:#ad7702;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path887"
+         transform="translate(-38.3069,14.983)"
+         d="m 321.366,357.908 c -2.771,1.959 1.521,13.045 8.58,6.572 -5.546,0.163 -7.396,-1.461 -8.58,-6.572 z"
+         inkscape:connector-curvature="0" />
+    </g>
+    <g
+       style="fill:#000000;fill-opacity:0.5;stroke:none"
+       id="g873"
+       transform="matrix(0.37475031,0,0,0.37475031,-14.024803,14.041819)">
+      <path
+         style="fill:#020202;fill-opacity:1;fill-rule:evenodd;stroke:#000002;stroke-width:1.00000003pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path859"
+         transform="translate(4.86564,17.0296)"
+         d="m 143.756,326.774 c 0.538,-0.09 13.953,6.991 22.97,9.438 16.079,4.109 30.756,16.476 37.85,23.58 0.526,0.608 6.093,-4.168 11.919,-3.824 7.958,0.482 32.582,7.406 35.872,2.691 1.995,-2.768 1.852,-6.164 4.341,-7.555 1.34,-0.375 -4.981,-11.936 1.737,-15.64 4.79,-2.394 8.849,11.009 10.079,12.511 0.551,0.672 3.474,0.836 3.128,-0.695 -0.375,-1.663 -5.103,-14.524 0.695,-16.682 9.417,-3.729 7.748,16.456 7.993,17.03 0.521,1.222 32.797,2.164 34.754,16.682 1.132,7.99 -25.858,18.317 -28.498,20.157 -2.639,1.84 -2.419,4.783 -1.39,6.604 1.183,1.975 9.046,8.641 7.994,11.816 -0.723,1.834 -15.398,-4.888 -16.335,-3.475 -2.137,2.699 10.683,9.455 6.256,14.249 -1.755,1.148 -21.947,-8.454 -21.896,-8.341 -0.542,0.206 -28.532,5.113 -50.046,-1.391 -0.758,-0.214 -13.808,12.606 -15.292,12.165 -2.029,-0.744 2.991,-11.15 2.433,-13.207 -0.912,-1.146 -9.251,4.653 -9.731,1.738 -0.574,-3.831 7.318,-8.235 6.951,-10.774 -2.035,-14.424 0.909,-22.847 5.908,-29.888 1.667,-2.592 -19.592,-18.646 -34.983,-24.982 -15.39,-6.336 -23.624,-11.706 -22.709,-12.207 z"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path861"
+         d="m 286.934,392.031 c -0.169,-0.59 10.503,-7.045 12.048,-5.561 2.781,1.008 -11.95,6.31 -12.048,5.561 z"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path863"
+         d="m 292.031,397.901 c -0.94,-0.568 6.389,-9.114 8.187,-8.187 2.625,2.608 -8.31,8.39 -8.187,8.187 z"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#020202;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path865"
+         d="m 320.916,358.358 c -0.891,-0.737 -7.878,10.287 -6.333,11.431 0.929,0.695 6.731,-11.038 6.333,-11.431 z"
+         inkscape:connector-curvature="0" />
+      <ellipse
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="ellipse867"
+         transform="matrix(0.9253,0,0,0.933788,22.0283,24.352)"
+         ry="3.398196"
+         rx="3.012037"
+         cy="374.58655"
+         cx="288.86475" />
+      <path
+         style="fill:#020202;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path869"
+         transform="translate(-8.0321,-1.54463)"
+         d="m 320.916,358.358 c -0.441,-0.512 -2.781,11.368 -1.699,11.894 0.929,0.695 2.547,-11.276 1.699,-11.894 z"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path871"
+         transform="translate(-38.3069,14.983)"
+         d="m 321.366,357.908 c -2.771,1.959 1.521,13.045 8.58,6.572 -5.546,0.163 -7.396,-1.461 -8.58,-6.572 z"
+         inkscape:connector-curvature="0" />
+    </g>
+    <path
+       inkscape:connector-curvature="0"
+       d="m 170.00371,58.195114 c 0.52669,0 2.22472,4.455409 2.65082,4.780597 0.4261,0.325196 4.98482,0.644718 5.14757,1.170878 0.16276,0.526161 -3.34652,3.599285 -3.50927,4.125447 -0.16276,0.526162 0.95665,5.17905 0.53055,5.504239 -0.4261,0.325195 -4.29298,-2.23093 -4.81967,-2.23093 -0.52668,0 -4.39357,2.556113 -4.81967,2.23093 -0.4261,-0.325197 0.69331,-4.978077 0.53056,-5.504239 -0.16276,-0.526162 -3.67203,-3.599289 -3.50928,-4.125447 0.16276,-0.52616 4.72148,-0.845694 5.14757,-1.170878 0.4261,-0.325188 2.12414,-4.780597 2.65082,-4.780597 z"
+       id="path1307-9"
+       style="display:inline;overflow:visible;visibility:visible;fill:#f9da02;fill-opacity:1;fill-rule:nonzero;stroke:#ad7702;stroke-width:0.39021698;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:new" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m 170,6.4998158 c 1.38339,0 5.84342,11.1316432 6.96261,11.9441122 1.11919,0.81249 13.09307,1.610799 13.52056,2.925389 0.4275,1.314591 -8.78994,8.992659 -9.21743,10.307251 -0.42749,1.314592 2.51274,12.939634 1.39356,13.752105 -1.1192,0.812486 -11.27591,-5.573882 -12.6593,-5.573882 -1.3834,0 -11.54011,6.386338 -12.6593,5.573882 -1.11919,-0.812491 1.82104,-12.437513 1.39355,-13.752105 -0.42749,-1.314592 -9.64492,-8.992668 -9.21743,-10.307251 0.4275,-1.31459 12.40138,-2.11293 13.52056,-2.925389 C 164.15657,17.631459 168.61661,6.4998158 170,6.4998158 Z"
+       id="path1307-3"
+       style="display:inline;overflow:visible;visibility:visible;fill:#ad7702;fill-opacity:1;fill-rule:nonzero;stroke:#ad7702;stroke-width:0.99962765;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:new" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m 170,5.4998138 c 1.38339,0 5.84342,11.1316452 6.96261,11.9441142 1.11919,0.81249 13.09307,1.610799 13.52056,2.925389 0.4275,1.314591 -8.78994,8.992659 -9.21743,10.307251 -0.42749,1.314592 2.51274,12.939634 1.39356,13.752105 -1.1192,0.812486 -11.27591,-5.573882 -12.6593,-5.573882 -1.3834,0 -11.54011,6.386338 -12.6593,5.573882 -1.11919,-0.812491 1.82104,-12.437513 1.39355,-13.752105 -0.42749,-1.314592 -9.64492,-8.992668 -9.21743,-10.307251 0.4275,-1.31459 12.40138,-2.11293 13.52056,-2.925389 C 164.15657,16.631459 168.61661,5.4998138 170,5.4998138 Z"
+       id="path1307-1"
+       style="display:inline;overflow:visible;visibility:visible;fill:#f9da02;fill-opacity:1;fill-rule:nonzero;stroke:#ad7702;stroke-width:0.99962765;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:new" />
+    <g
+       style="display:inline;fill:#ad7702;fill-opacity:0.5;stroke:#ad7702;stroke-width:4;stroke-opacity:1;enable-background:new"
+       id="g889-2"
+       transform="matrix(0.13836934,0,0,0.13836934,135.53701,-26.02604)">
+      <path
+         style="fill:#ad7702;fill-opacity:1;fill-rule:evenodd;stroke:#ad7702;stroke-width:1.00000003pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path875-7"
+         transform="translate(4.86564,17.0296)"
+         d="m 143.756,326.774 c 0.538,-0.09 13.953,6.991 22.97,9.438 16.079,4.109 30.756,16.476 37.85,23.58 0.526,0.608 6.093,-4.168 11.919,-3.824 7.958,0.482 32.582,7.406 35.872,2.691 1.995,-2.768 1.852,-6.164 4.341,-7.555 1.34,-0.375 -4.981,-11.936 1.737,-15.64 4.79,-2.394 8.849,11.009 10.079,12.511 0.551,0.672 3.474,0.836 3.128,-0.695 -0.375,-1.663 -5.103,-14.524 0.695,-16.682 9.417,-3.729 7.748,16.456 7.993,17.03 0.521,1.222 32.797,2.164 34.754,16.682 1.132,7.99 -25.858,18.317 -28.498,20.157 -2.639,1.84 -2.419,4.783 -1.39,6.604 1.183,1.975 9.046,8.641 7.994,11.816 -0.723,1.834 -15.398,-4.888 -16.335,-3.475 -2.137,2.699 10.683,9.455 6.256,14.249 -1.755,1.148 -21.947,-8.454 -21.896,-8.341 -0.542,0.206 -28.532,5.113 -50.046,-1.391 -0.758,-0.214 -13.808,12.606 -15.292,12.165 -2.029,-0.744 2.991,-11.15 2.433,-13.207 -0.912,-1.146 -9.251,4.653 -9.731,1.738 -0.574,-3.831 7.318,-8.235 6.951,-10.774 -2.035,-14.424 0.909,-22.847 5.908,-29.888 1.667,-2.592 -19.592,-18.646 -34.983,-24.982 -15.39,-6.336 -23.624,-11.706 -22.709,-12.207 z"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#ad7702;fill-opacity:1;fill-rule:evenodd;stroke:#ad7702;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path877-0"
+         d="m 286.934,392.031 c -0.169,-0.59 10.503,-7.045 12.048,-5.561 2.781,1.008 -11.95,6.31 -12.048,5.561 z"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#ad7702;fill-opacity:1;fill-rule:evenodd;stroke:#ad7702;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path879-9"
+         d="m 292.031,397.901 c -0.94,-0.568 6.389,-9.114 8.187,-8.187 2.625,2.608 -8.31,8.39 -8.187,8.187 z"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#ad7702;fill-opacity:1;fill-rule:evenodd;stroke:#ad7702;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path881-3"
+         d="m 320.916,358.358 c -0.891,-0.737 -7.878,10.287 -6.333,11.431 0.929,0.695 6.731,-11.038 6.333,-11.431 z"
+         inkscape:connector-curvature="0" />
+      <ellipse
+         style="fill:#ad7702;fill-opacity:1;fill-rule:evenodd;stroke:#ad7702;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="ellipse883-6"
+         transform="matrix(0.9253,0,0,0.933788,22.0283,24.352)"
+         ry="3.398196"
+         rx="3.012037"
+         cy="374.58655"
+         cx="288.86475" />
+      <path
+         style="fill:#ad7702;fill-opacity:1;fill-rule:evenodd;stroke:#ad7702;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path885-0"
+         transform="translate(-8.0321,-1.54463)"
+         d="m 320.916,358.358 c -0.441,-0.512 -2.781,11.368 -1.699,11.894 0.929,0.695 2.547,-11.276 1.699,-11.894 z"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#ad7702;fill-opacity:1;fill-rule:evenodd;stroke:#ad7702;stroke-width:0.60000001pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path887-6"
+         transform="translate(-38.3069,14.983)"
+         d="m 321.366,357.908 c -2.771,1.959 1.521,13.045 8.58,6.572 -5.546,0.163 -7.396,-1.461 -8.58,-6.572 z"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/data/im.gzr.MunchMate.desktop b/data/im.gzr.MunchMate.desktop
new file mode 100644
index 0000000..095a0f8
--- /dev/null
+++ b/data/im.gzr.MunchMate.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Name=MunchMate
+TryExec=munchmate
+Exec=munchmate %U
+Icon=im.gzr.MunchMate
+Terminal=false
+Type=Application
+StartupNotify=false
diff --git a/data/im.gzr.MunchMate.gresource.xml b/data/im.gzr.MunchMate.gresource.xml
new file mode 100644
index 0000000..49c3f7c
--- /dev/null
+++ b/data/im.gzr.MunchMate.gresource.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+  <gresource prefix="/im/gzr/munchmate">
+    <file alias="mm-window.ui" preprocess="xml-stripblanks">ui/mm-window.ui</file>
+    <file compressed="true">style.css</file>
+  </gresource>
+</gresources>
diff --git a/data/im.gzr.MunchMate.gschema.xml b/data/im.gzr.MunchMate.gschema.xml
new file mode 100644
index 0000000..5eb38f2
--- /dev/null
+++ b/data/im.gzr.MunchMate.gschema.xml
@@ -0,0 +1,4 @@
+<schemalist gettext-domain="flipr">
+  <schema id="im.gzr.MunchMate" path="/im/gzr/munchmate/">
+  </schema>
+</schemalist>
diff --git a/data/im.gzr.MunchMate.metainfo.xml b/data/im.gzr.MunchMate.metainfo.xml
new file mode 100644
index 0000000..7d1a654
--- /dev/null
+++ b/data/im.gzr.MunchMate.metainfo.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<component type="desktop-application">
+  <id>im.gzr.MunchMate</id>
+  <metadata_license>CC0-1.0</metadata_license>
+  <project_license>GPL-3.0+</project_license>
+  <name>MunchMate</name>
+  <developer_name>robertgzr</developer_name>
+  <launchable type="desktop-id">im.gzr.MunchMate.desktop</launchable>
+  <supports>
+    <control>touch</control>
+    <control>keyboard</control>
+    <control>pointing</control>
+  </supports>
+</component>
diff --git a/data/im.gzr.MunchMate.service.in b/data/im.gzr.MunchMate.service.in
new file mode 100644
index 0000000..08b3766
--- /dev/null
+++ b/data/im.gzr.MunchMate.service.in
@@ -0,0 +1,3 @@
+[D-BUS Service]
+Name=im.gzr.MunchMate
+Exec=@bindir@/munchmate --gapplication-service
diff --git a/data/meson.build b/data/meson.build
new file mode 100644
index 0000000..dea46c4
--- /dev/null
+++ b/data/meson.build
@@ -0,0 +1,54 @@
+subdir('ui')
+
+resource_files = files('im.gzr.MunchMate.gresource.xml')
+resources = gnome.compile_resources(
+  'im.gzr.MunchMate',
+  resource_files,
+  source_dir: meson.current_build_dir(),
+  dependencies: custom_target(
+    'blueprints',
+    input: blueprints,
+    output: '.',
+    command: [ find_program('blueprint-compiler'), 'batch-compile', '@OUTPUT@', '@CURRENT_SOURCE_DIR@', '@INPUT@' ],
+  ),
+  c_name: 'resources',
+)
+
+install_subdir('icons/',
+  install_dir: join_paths(get_option('datadir'), 'icons/hicolor'))
+
+desktop_file = files('im.gzr.MunchMate.desktop')
+install_data(
+  desktop_file,
+  install_dir: join_paths(get_option('datadir'), 'applications'),
+)
+
+metainfo_file = files('im.gzr.MunchMate.metainfo.xml')
+install_data(
+  metainfo_file,
+  install_dir: join_paths(get_option('datadir'), 'metainfo'),
+)
+
+# Validating app data
+appstreamcli = find_program('appstreamcli', required: false)
+if appstreamcli.found()
+  test(
+    'validate-appdata', appstreamcli,
+    args: [ 'validate', '--no-net', '--explain', metainfo_file ],
+  )
+endif
+
+schema_file = files('im.gzr.MunchMate.gschema.xml')
+install_data(
+  schema_file,
+  install_dir: join_paths(get_option('datadir'), 'glib-2.0', 'schemas')
+)
+
+configure_file(
+  input: 'im.gzr.MunchMate.service.in',
+  output: 'im.gzr.MunchMate.service',
+  configuration: configuration_data({
+    'bindir': join_paths(get_option('prefix'), get_option('bindir')),
+  }),
+  install_dir: join_paths(get_option('datadir'), 'dbus-1', 'services')
+)
diff --git a/data/style.css b/data/style.css
new file mode 100644
index 0000000..55c4483
--- /dev/null
+++ b/data/style.css
@@ -0,0 +1,9 @@
+/*
+window {
+}
+
+@media (prefers-color-scheme: dark) {
+  window {
+  }
+}
+*/
diff --git a/data/ui/meson.build b/data/ui/meson.build
new file mode 100644
index 0000000..a492bb7
--- /dev/null
+++ b/data/ui/meson.build
@@ -0,0 +1,3 @@
+blueprints = files(
+    'mm-window.blp',
+)
diff --git a/data/ui/mm-window.blp b/data/ui/mm-window.blp
new file mode 100644
index 0000000..f1b4147
--- /dev/null
+++ b/data/ui/mm-window.blp
@@ -0,0 +1,17 @@
+using Gtk 4.0;
+using Adw 1;
+
+template $MunchMateWindow : Adw.ApplicationWindow {
+  title: "Example";
+  default-width: 400;
+  default-height: 350;
+
+  Adw.ToolbarView {
+    [top]
+    Adw.HeaderBar {}
+
+    Adw.StatusPage {
+      title: "Let's go";
+    }
+  }
+}
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..859892e
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,41 @@
+project(
+  'munchmate',
+  ['vala', 'c'],
+  license: 'GPL-3.0+',
+  version: '0.0+dev',
+)
+
+app_id = 'im.gzr.MunchMate'
+if get_option('buildtype') == 'debug'
+  app_id += '.Devel'
+endif
+
+config = configuration_data({
+  'APP_ID': '"@0@"'.format(app_id),
+  'VERSION': '"@0@"'.format(meson.project_version()),
+  'BUILD_TYPE': '"@0@"'.format(get_option('buildtype')),
+})
+configure_file(output: 'config.h', configuration: config)
+config_h_dir = include_directories('.')
+
+add_project_arguments(
+  ['-w'],
+  language: 'c'
+)
+
+glib_dep = dependency('glib-2.0')
+gio_dep = dependency('gio-2.0', version: '>=2.40')
+gtk_dep = dependency('gtk4')
+adw_dep = dependency('libadwaita-1')
+dex_dep = dependency('libdex-1')
+
+gnome = import('gnome')
+
+gnome.post_install(
+  glib_compile_schemas: true,
+  gtk_update_icon_cache: true,
+  update_desktop_database: true,
+)
+
+subdir('data')
+subdir('src')
diff --git a/src/config.vapi b/src/config.vapi
new file mode 100644
index 0000000..bd04675
--- /dev/null
+++ b/src/config.vapi
@@ -0,0 +1,7 @@
+[CCode (cprefix = "", lower_case_cprefix = "", cheader_filename = "config.h")]
+namespace Config {
+    public const string VERSION;
+    public const string APP_ID;
+    public const string BUILD_TYPE;
+}
+
diff --git a/src/main.vala b/src/main.vala
new file mode 100644
index 0000000..865765f
--- /dev/null
+++ b/src/main.vala
@@ -0,0 +1,8 @@
+
+static int main(string[] args) {
+	Dex.init();
+	Dex.ThreadPoolScheduler.get_default();
+
+	var app = new MunchMate.Application();
+	return app.run(args);
+}
diff --git a/src/meson.build b/src/meson.build
new file mode 100644
index 0000000..9ded894
--- /dev/null
+++ b/src/meson.build
@@ -0,0 +1,42 @@
+mm_vapi_sources = files(
+  'config.vapi',
+)
+
+mm_vala_sources = files(
+  'mm-application.vala',
+  'mm-window.vala',
+  'main.vala',
+)
+
+mm_sources = [
+  mm_vapi_sources,
+  mm_vala_sources,
+  resources,
+]
+
+mm_deps = [
+  glib_dep,
+  gio_dep,
+  gtk_dep,
+  adw_dep,
+  dex_dep,
+]
+
+mm_vala_args = [
+  '--vapidir', meson.current_source_dir(),
+  '--gresources', resource_files,
+]
+
+mm_c_args = [
+  '-DG_LOG_DOMAIN="@0@"'.format(app_id),
+]
+
+executable(
+  meson.project_name(),
+  mm_sources,
+  include_directories: config_h_dir,
+  dependencies: mm_deps,
+  vala_args: mm_vala_args,
+  c_args: mm_c_args,
+  install: true,
+)
diff --git a/src/mm-application.vala b/src/mm-application.vala
new file mode 100644
index 0000000..193f16b
--- /dev/null
+++ b/src/mm-application.vala
@@ -0,0 +1,50 @@
+namespace MunchMate {
+	public class Application : Adw.Application {
+		private Window win;
+
+		private static bool print_version = false;
+
+		private const GLib.OptionEntry[] options = {
+			{ "version", 'V', OptionFlags.NONE, OptionArg.NONE, ref print_version, "Display version number", null },
+			{ null } // terminator
+		};
+
+		private const GLib.ActionEntry[] action_entries = {
+			{ "quit", on_quit_activate },
+		};
+
+		public override int handle_local_options(VariantDict _) {
+			if (print_version) {
+				print("%s version %s\n", Config.APP_ID, Config.VERSION);
+				return 0;
+			}
+			return -1;
+		}
+
+		public override void activate() {
+			win = new Window(this);
+			win.present();
+		}
+
+		public override void startup() {
+			base.startup();
+
+			set_accels_for_action("app.quit", { "q" });
+		}
+
+		public Application() {
+			// why doesnt service binding work in flatpak
+			Object(application_id: Config.APP_ID, flags: ApplicationFlags.NON_UNIQUE);
+
+			set_resource_base_path("/im/gzr/munchmate/");
+
+			add_main_option_entries(options);
+
+			add_action_entries(action_entries, this);
+		}
+
+		void on_quit_activate() {
+			quit();
+		}
+	}
+}
diff --git a/src/mm-window.vala b/src/mm-window.vala
new file mode 100644
index 0000000..f8b9761
--- /dev/null
+++ b/src/mm-window.vala
@@ -0,0 +1,12 @@
+namespace MunchMate {
+	[GtkTemplate (ui = "/im/gzr/munchmate/mm-window.ui")]
+	public class Window : Adw.ApplicationWindow {
+		public Window(Gtk.Application app) {
+			Object(application: app);
+
+			if (Config.BUILD_TYPE == "debug") {
+				add_css_class("devel");
+			}
+		}
+	}
+}