diff options
| author | Robert Günzler <r@gnzler.io> | 2026-08-13 17:21:46 +0200 |
|---|---|---|
| committer | Robert Günzler <r@gnzler.io> | 2026-08-13 17:21:46 +0200 |
| commit | 502d94151ed9dcfeeb691a92a4c413be5783ae2d (patch) | |
| tree | 0a547802f5408e8bcd11eca811365f0622519abc | |
| download | munchmate-502d94151ed9dcfeeb691a92a4c413be5783ae2d.tar.gz | |
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to '')
| -rw-r--r-- | .editorconfig | 22 | ||||
| -rw-r--r-- | Makefile | 17 | ||||
| -rw-r--r-- | build-aux/flatpak.mk | 29 | ||||
| -rw-r--r-- | build-aux/im.gzr.MunchMate.Devel.json | 45 | ||||
| -rw-r--r-- | data/icons/scalable/apps/im.gzr.MunchMate.Devel.svg | 276 | ||||
| -rw-r--r-- | data/im.gzr.MunchMate.desktop | 8 | ||||
| -rw-r--r-- | data/im.gzr.MunchMate.gresource.xml | 7 | ||||
| -rw-r--r-- | data/im.gzr.MunchMate.gschema.xml | 4 | ||||
| -rw-r--r-- | data/im.gzr.MunchMate.metainfo.xml | 14 | ||||
| -rw-r--r-- | data/im.gzr.MunchMate.service.in | 3 | ||||
| -rw-r--r-- | data/meson.build | 54 | ||||
| -rw-r--r-- | data/style.css | 9 | ||||
| -rw-r--r-- | data/ui/meson.build | 3 | ||||
| -rw-r--r-- | data/ui/mm-window.blp | 17 | ||||
| -rw-r--r-- | meson.build | 41 | ||||
| -rw-r--r-- | src/config.vapi | 7 | ||||
| -rw-r--r-- | src/main.vala | 8 | ||||
| -rw-r--r-- | src/meson.build | 42 | ||||
| -rw-r--r-- | src/mm-application.vala | 50 | ||||
| -rw-r--r-- | src/mm-window.vala | 12 |
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"); + } + } + } +} |