diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..84c07f6e --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,91 @@ +name: Release + +# Builds Linux AppImages (x86_64 + aarch64) and the Windows NSIS installer with +# sqgipkg, then publishes them as release assets for tags like `4.2.1`. + +on: + push: + tags: + - '[0-9]+.[0-9]+.[0-9]+' + workflow_dispatch: + +permissions: + contents: write + +env: + APPIMAGE_EXTRACT_AND_RUN: '1' + +jobs: + build: + runs-on: ubuntu-24.04 + steps: + - name: Checkout Jorts + uses: actions/checkout@v4 + with: + path: jorts + + - name: Checkout sqgi (runtime + sqgipkg) + uses: actions/checkout@v4 + with: + repository: supercamel/sqgi + ref: v0.1.2-alpha + path: sqgi + + - name: Install build dependencies + run: | + sudo apt-get update + sudo apt-get install -y --no-install-recommends \ + build-essential cmake ninja-build pkg-config git file ca-certificates wget \ + meson valac gobject-introspection gettext desktop-file-utils appstream \ + libglib2.0-dev libgirepository1.0-dev libffi-dev libcairo2-dev \ + libgtk-4-dev libgranite-7-dev libgee-0.8-dev libjson-glib-dev libportal-dev \ + librsvg2-dev librsvg2-common adwaita-icon-theme hicolor-icon-theme shared-mime-info \ + gcc-aarch64-linux-gnu g++-aarch64-linux-gnu qemu-user-static binfmt-support \ + mingw-w64 nsis squashfs-tools + + - name: Build and install sqgi + run: | + cmake -S sqgi -B sqgi/build -G Ninja -DCMAKE_BUILD_TYPE=Release -DSQ_ENABLE_JIT=ON + cmake --build sqgi/build + sudo cmake --install sqgi/build --prefix /usr/local + sudo ldconfig + + - name: Build Linux x86_64 AppImage + working-directory: jorts + run: sqgipkg --target appimage --appimage-arch x86_64 --sqgi-source-dir "$GITHUB_WORKSPACE/sqgi" + + - name: Build Linux aarch64 AppImage + working-directory: jorts + run: sqgipkg --target appimage --appimage-arch aarch64 --sqgi-source-dir "$GITHUB_WORKSPACE/sqgi" + + - name: Build Windows installer + working-directory: jorts + run: sqgipkg --target win-nsis --sqgi-source-dir "$GITHUB_WORKSPACE/sqgi" + + - name: Collect artifacts + working-directory: jorts + run: | + mkdir -p artifacts + cp dist-linux-x86_64/Jorts.AppImage artifacts/Jorts-x86_64.AppImage + cp dist-linux-aarch64/Jorts.AppImage artifacts/Jorts-aarch64.AppImage + cp dist-windows-x86_64/Jorts-Setup.exe artifacts/Jorts-Setup.exe + ls -lh artifacts + + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: jorts-builds + path: jorts/artifacts/* + + - name: Publish release assets + if: startsWith(github.ref, 'refs/tags/') + working-directory: jorts + env: + GH_TOKEN: ${{ github.token }} + run: | + gh release create "$GITHUB_REF_NAME" artifacts/* \ + --repo "$GITHUB_REPOSITORY" \ + --title "$GITHUB_REF_NAME" \ + --generate-notes \ + || gh release upload "$GITHUB_REF_NAME" artifacts/* \ + --repo "$GITHUB_REPOSITORY" --clobber diff --git a/.gitignore b/.gitignore index bd79556c..130c76cb 100644 --- a/.gitignore +++ b/.gitignore @@ -3,9 +3,15 @@ !.gitignore !.valalintignore !.editorconfig +!.github/ +!.github/workflows/ +!.github/workflows/*.yml ~* *~ builddir build +build-* +dist-* +.sqgipkg/ repo -deploy \ No newline at end of file +deploy diff --git a/data/meson.build b/data/meson.build index 2ddcd896..0e25c962 100644 --- a/data/meson.build +++ b/data/meson.build @@ -11,10 +11,28 @@ gresource_file = configure_file( configuration: config_data, ) -gresource = gnome.compile_resources( - 'gresource', - gresource_file, - source_dir: '.' +glib_compile_resources = find_program('glib-compile-resources', native: true) + +# gnome.compile_resources() asks gio-2.0.pc for this tool first. During +# MinGW cross builds sqgipkg exposes the Windows .pc files to pkg-config, and +# MSYS2 advertises this helper without the .exe suffix, so use the build +# machine tool directly. +gresource = custom_target( + 'gresource_c', + input: gresource_file, + output: 'gresource.c', + command: [ + glib_compile_resources, + '@INPUT@', + '--sourcedir', meson.current_source_dir(), + '--internal', + '--generate', + '--target', '@OUTPUT@' + ], + depend_files: files( + 'Application.css', + 'Themes.css', + ), ) #======================== @@ -31,7 +49,7 @@ install_data( install_dir: get_option('datadir') / 'glib-2.0' / 'schemas', ) -compile_schemas = find_program('glib-compile-schemas', required: false) +compile_schemas = find_program('glib-compile-schemas', native: true, required: false) if compile_schemas.found() test('Validate schema file', compile_schemas, args: ['--strict', '--dry-run', meson.current_source_dir()]) endif @@ -101,4 +119,4 @@ if not windows test('Validate appstream file', appstreamcli, args: ['validate', '--pedantic', '--no-net', '--explain', appstream_file]) endif -endif \ No newline at end of file +endif diff --git a/docs/development/packagings.md b/docs/development/packagings.md index 7baf59f6..0c270bcb 100644 --- a/docs/development/packagings.md +++ b/docs/development/packagings.md @@ -8,7 +8,119 @@ Idk how to do that, havent looked into it and not sure if worth it. ## Appimage -Idk how to do that, havent looked into it and not sure if worth it. +AppImages are built by the sqgipkg release path below. + + +## sqgipkg release path + +Jorts has a `sqgipkg.json` manifest and a GitHub release workflow that builds: + +- `dist-linux-x86_64/Jorts.AppImage` +- `dist-linux-aarch64/Jorts.AppImage` +- `dist-windows-x86_64/Jorts-Setup.exe` + +This is release plumbing, not a replacement for Meson. + +Meson should still own as much of the app build as possible: + +- project version, app id, app path, and generated `Config.vala` +- gresource, gschema, desktop, metainfo, and translations +- the Windows executable resources +- the manual Windows `deploy.sh` and NSIS template in `windows/` +- compiling the app itself + +sqgipkg plugs into that by calling Meson, then staging the runtime bits that a +portable bundle needs. In other words: if another packaging method appears +later, it should still be able to start from the Meson build without needing to +copy sqgipkg-specific logic. + +The manifest currently does this: + +- Builds Linux AppImages for x86_64 and aarch64 from Ubuntu noble package data. +- Builds GTK and Granite from pinned upstream tags for the Linux AppImage path, + so the AppImages do not depend on whatever Granite/GTK version the CI host has. +- Builds the Windows executable with Meson and MinGW, then stages MSYS2 runtime + packages into a Windows directory and wraps that directory in an NSIS installer + using the `nsis_options` in `sqgipkg.json`. +- Stages GTK settings, schemas, themes, icon themes, pixbuf SVG loading support, + fonts, app icons, and the app metadata needed by the bundles. + +Important icon/theme detail: the app uses the elementary GTK stylesheet on all +platforms, but Windows uses the Adwaita icon theme. The Windows split avoids +elementary symbolic SVGs that GTK's Windows renderer can resolve but fails to +draw. If icons disappear while the theme still works, check `sqgipkg.json` +first: + +- Linux package lists should include `elementary-icon-theme`. +- Windows package lists should include `mingw-w64-x86_64-adwaita-icon-theme` + and `mingw-w64-x86_64-adwaita-icon-theme-legacy`. +- Both bundles also need SVG icon loading support (`librsvg`/gdk-pixbuf loader + data), because many symbolic icons are SVG files. On Windows, keep + `mingw-w64-x86_64-gdk-pixbuf2` explicit so the bundle includes + `gdk-pixbuf-query-loaders.exe` for the runtime loader cache. +- Windows also stages `windows/loaders.cache` into + `lib/gdk-pixbuf-2.0/2.10.0/loaders.cache`. Without that default cache, direct + launches can resolve icon names but fail to decode SVG toolbar icons. + +### Local build commands + +The release workflow checks out sqgi at `v0.1.0-alpha.1`. For local testing, +use the same checkout or pass the same source directory that CI uses: + +```bash +git clone --branch v0.1.0-alpha.1 https://github.com/supercamel/sqgi.git ../sqgi +cmake -S ../sqgi -B ../sqgi/build -G Ninja -DCMAKE_BUILD_TYPE=Release -DSQ_ENABLE_JIT=ON +cmake --build ../sqgi/build +sudo cmake --install ../sqgi/build --prefix /usr/local +sudo ldconfig +``` + +Then from the Jorts source tree: + +```bash +sqgipkg --target appimage --appimage-arch x86_64 --sqgi-source-dir ../sqgi +sqgipkg --target appimage --appimage-arch aarch64 --sqgi-source-dir ../sqgi +sqgipkg --target win-nsis --sqgi-source-dir ../sqgi +``` + +For quicker Windows debugging, build only the staged directory: + +```bash +sqgipkg --target win-dir --sqgi-source-dir ../sqgi +``` + +That writes `dist-windows-x86_64/Jorts`, which is easier to inspect than the +installer. For example, if Windows icons are broken, check that +`dist-windows-x86_64/Jorts/share/icons/elementary` exists and that +`dist-windows-x86_64/Jorts/etc/gtk-4.0/settings.ini` says +`gtk-icon-theme-name=elementary`. + +### GitHub release workflow + +The release workflow lives at `.github/workflows/release.yml`. + +It runs on plain version tags like `4.2.1`. Jorts release tags are `x.y.z`, +not `vX.Y.Z`. + +The workflow: + +1. Checks out Jorts. +2. Checks out sqgi at `v0.1.0-alpha.1`. +3. Builds and installs sqgi/sqgipkg. +4. Runs sqgipkg for both Linux AppImages and the Windows NSIS installer. +5. Uploads the artifacts. +6. Creates or updates the GitHub release for the tag. + +To trigger a release build, push a plain version tag: + +```bash +git tag -a 4.2.1 -m "4.2.1" +git push origin 4.2.1 +``` + +For test runs, prefer a temporary branch or workflow dispatch when possible. +If a real version tag is reused for testing, remember that force-moving tags can +confuse anyone watching releases. ## DEB/RPM/etc diff --git a/docs/development/windows.md b/docs/development/windows.md index 107118d7..4c2a8b0e 100644 --- a/docs/development/windows.md +++ b/docs/development/windows.md @@ -62,6 +62,21 @@ pacman -S --noconfirm meson gcc ninja mingw-w64-x86_64-desktop-file-utils mingw- It is built so as to not need admin rights. You can distribute as is. +## Automated release build + +The GitHub release workflow does not run `windows/deploy.sh` directly. It uses +the sqgipkg release path documented in [packagings.md](packagings.md). + +That path still lets Meson build and configure the app, including the Windows +resource file. sqgipkg then stages the MinGW/MSYS2 runtime files, GTK settings, +icon themes, schemas, fonts, and app assets into `dist-windows-x86_64/Jorts`, +before producing `dist-windows-x86_64/Jorts-Setup.exe`. + +If the Windows theme works but icons are missing, first check that the staged +directory contains `share/icons/elementary` and that the bundled GTK settings +still say `gtk-icon-theme-name=elementary`. The theme package and icon theme +package are separate things. + ## Known issues deploying @@ -95,4 +110,4 @@ The Installer sets it once, then it is between you and God. Windows has to load a lot of libraries Linux kinda has loaded already by default. - XDG_DATA_DIRS points to the root of where apps dump their configurations. It isnt sandboxed. - There is a vala flag to create a folder to put data in \ No newline at end of file + There is a vala flag to create a folder to put data in diff --git a/meson.build b/meson.build index 52efd5eb..e23dc564 100644 --- a/meson.build +++ b/meson.build @@ -97,11 +97,13 @@ if windows subdir('windows') endif -gnome.post_install( - glib_compile_schemas: true, - gtk_update_icon_cache: true, - update_desktop_database: true - ) +if not windows + gnome.post_install( + glib_compile_schemas: true, + gtk_update_icon_cache: true, + update_desktop_database: true + ) +endif if development message(''' @@ -113,4 +115,4 @@ Tread carefully. ---------------------------------------- ''') -endif \ No newline at end of file +endif diff --git a/sqgipkg.json b/sqgipkg.json new file mode 100644 index 00000000..4a26850c --- /dev/null +++ b/sqgipkg.json @@ -0,0 +1,290 @@ +{ + "name": "Jorts", + "entry": { + "type": "native", + "linux": "build-linux-x86_64/src/io.github.elly_code.jorts", + "windows": "build-windows-x86_64/src/io.github.elly_code.jorts.exe" + }, + "gtk_icon_theme": "elementary", + "linux": { + "arches": [ + { + "arch": "x86_64", + "build_dir": "build-linux-x86_64", + "entry_linux": "build-linux-x86_64/src/io.github.elly_code.jorts", + "deb": { + "download": true, + "suite": "noble", + "packages": [ + "libgtk-4-dev", + "libgee-0.8-dev", + "libglib2.0-dev", + "libgdk-pixbuf-2.0-0", + "libjson-glib-dev", + "libportal-dev", + "libdrm-dev", + "gobject-introspection", + "libgirepository1.0-dev", + "adwaita-icon-theme", + "hicolor-icon-theme", + "elementary-icon-theme", + "librsvg2-common", + "shared-mime-info" + ] + }, + "inherit_native_projects": false, + "native_projects": [ + { + "name": "gtk", + "repo": "https://gitlab.gnome.org/GNOME/gtk.git", + "tag": "4.16.13", + "update": false, + "build": [ + "SQGI_SASSC_ROOT=\"$(cd ../.. && pwd)/host-tools/sassc-root\"; SQGI_SASSC_DEBS=\"$(cd ../.. && pwd)/host-tools/debs\"; if ! command -v sassc >/dev/null 2>&1 && [ ! -x \"$SQGI_SASSC_ROOT/usr/bin/sassc\" ]; then command -v apt-get >/dev/null 2>&1 || { echo \"GTK 4.16 from git requires host sassc; install it with: sudo apt-get install sassc\"; exit 1; }; command -v dpkg-deb >/dev/null 2>&1 || { echo \"GTK 4.16 from git requires dpkg-deb or host sassc; install it with: sudo apt-get install sassc\"; exit 1; }; mkdir -p \"$SQGI_SASSC_DEBS\" \"$SQGI_SASSC_ROOT\" && (cd \"$SQGI_SASSC_DEBS\" && apt-get download sassc libsass1) && for deb in \"$SQGI_SASSC_DEBS\"/*.deb; do dpkg-deb -x \"$deb\" \"$SQGI_SASSC_ROOT\"; done; fi; command -v sassc >/dev/null 2>&1 || [ -x \"$SQGI_SASSC_ROOT/usr/bin/sassc\" ] || { echo \"GTK 4.16 from git requires host sassc; install it with: sudo apt-get install sassc\"; exit 1; }", + "SQGI_SASSC_ROOT=\"$(cd ../.. && pwd)/host-tools/sassc-root\"; SQGI_SASSC_LIBDIR=\"$(find \"$SQGI_SASSC_ROOT/usr/lib\" -mindepth 1 -maxdepth 1 -type d -print -quit 2>/dev/null)\"; if [ -x \"$SQGI_SASSC_ROOT/usr/bin/sassc\" ]; then export PATH=\"$SQGI_SASSC_ROOT/usr/bin:$PATH\"; [ -n \"$SQGI_SASSC_LIBDIR\" ] && export LD_LIBRARY_PATH=\"$SQGI_SASSC_LIBDIR${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}\"; fi; meson setup \"${SQGI_LINUX_BUILD_DIR}-gtk\" --reconfigure --prefix /usr --libdir \"lib/$SQGI_LINUX_TRIPLET\" --buildtype=release --wrap-mode=nofallback -Dbuild-demos=false -Dbuild-examples=false -Dbuild-tests=false -Dbuild-testsuite=false -Ddocumentation=false -Dman-pages=false -Dintrospection=disabled -Dmedia-gstreamer=disabled -Dprint-cups=disabled -Dvulkan=disabled -Dcloudproviders=disabled -Dsysprof=disabled -Dtracker=disabled -Dcolord=disabled -Df16c=disabled -Dx11-backend=true -Dwayland-backend=true -Dbroadway-backend=false -Dmacos-backend=false -Dwin32-backend=false ${SQGI_LINUX_MESON_CROSS_FILE:+--cross-file \"$SQGI_LINUX_MESON_CROSS_FILE\"} || meson setup \"${SQGI_LINUX_BUILD_DIR}-gtk\" --prefix /usr --libdir \"lib/$SQGI_LINUX_TRIPLET\" --buildtype=release --wrap-mode=nofallback -Dbuild-demos=false -Dbuild-examples=false -Dbuild-tests=false -Dbuild-testsuite=false -Ddocumentation=false -Dman-pages=false -Dintrospection=disabled -Dmedia-gstreamer=disabled -Dprint-cups=disabled -Dvulkan=disabled -Dcloudproviders=disabled -Dsysprof=disabled -Dtracker=disabled -Dcolord=disabled -Df16c=disabled -Dx11-backend=true -Dwayland-backend=true -Dbroadway-backend=false -Dmacos-backend=false -Dwin32-backend=false ${SQGI_LINUX_MESON_CROSS_FILE:+--cross-file \"$SQGI_LINUX_MESON_CROSS_FILE\"}", + "SQGI_SASSC_ROOT=\"$(cd ../.. && pwd)/host-tools/sassc-root\"; SQGI_SASSC_LIBDIR=\"$(find \"$SQGI_SASSC_ROOT/usr/lib\" -mindepth 1 -maxdepth 1 -type d -print -quit 2>/dev/null)\"; if [ -x \"$SQGI_SASSC_ROOT/usr/bin/sassc\" ]; then export PATH=\"$SQGI_SASSC_ROOT/usr/bin:$PATH\"; [ -n \"$SQGI_SASSC_LIBDIR\" ] && export LD_LIBRARY_PATH=\"$SQGI_SASSC_LIBDIR${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}\"; fi; meson compile -C \"${SQGI_LINUX_BUILD_DIR}-gtk\"" + ], + "install": [ + "DESTDIR=\"$SQGI_LINUX_SYSROOT\" meson install -C \"${SQGI_LINUX_BUILD_DIR}-gtk\"" + ], + "stage": false + }, + { + "name": "granite", + "repo": "https://github.com/elementary/granite.git", + "tag": "7.6.0", + "update": false, + "build": [ + "SQGI_SASSC_ROOT=\"$(cd ../.. && pwd)/host-tools/sassc-root\"; SQGI_SASSC_DEBS=\"$(cd ../.. && pwd)/host-tools/debs\"; if ! command -v sassc >/dev/null 2>&1 && [ ! -x \"$SQGI_SASSC_ROOT/usr/bin/sassc\" ]; then command -v apt-get >/dev/null 2>&1 || { echo \"Granite 7.6 from git requires host sassc; install it with: sudo apt-get install sassc\"; exit 1; }; command -v dpkg-deb >/dev/null 2>&1 || { echo \"Granite 7.6 from git requires dpkg-deb or host sassc; install it with: sudo apt-get install sassc\"; exit 1; }; mkdir -p \"$SQGI_SASSC_DEBS\" \"$SQGI_SASSC_ROOT\" && (cd \"$SQGI_SASSC_DEBS\" && apt-get download sassc libsass1) && for deb in \"$SQGI_SASSC_DEBS\"/*.deb; do dpkg-deb -x \"$deb\" \"$SQGI_SASSC_ROOT\"; done; fi; command -v sassc >/dev/null 2>&1 || [ -x \"$SQGI_SASSC_ROOT/usr/bin/sassc\" ] || { echo \"Granite 7.6 from git requires host sassc; install it with: sudo apt-get install sassc\"; exit 1; }", + "SQGI_SASSC_ROOT=\"$(cd ../.. && pwd)/host-tools/sassc-root\"; SQGI_SASSC_LIBDIR=\"$(find \"$SQGI_SASSC_ROOT/usr/lib\" -mindepth 1 -maxdepth 1 -type d -print -quit 2>/dev/null)\"; if [ -x \"$SQGI_SASSC_ROOT/usr/bin/sassc\" ]; then export PATH=\"$SQGI_SASSC_ROOT/usr/bin:$PATH\"; [ -n \"$SQGI_SASSC_LIBDIR\" ] && export LD_LIBRARY_PATH=\"$SQGI_SASSC_LIBDIR${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}\"; fi; meson setup \"${SQGI_LINUX_BUILD_DIR}-granite\" --reconfigure --prefix /usr --libdir \"lib/$SQGI_LINUX_TRIPLET\" --buildtype=release --wrap-mode=nofallback -Ddemo=false -Ddocumentation=false -Dintrospection=false ${SQGI_LINUX_MESON_CROSS_FILE:+--cross-file \"$SQGI_LINUX_MESON_CROSS_FILE\"} || meson setup \"${SQGI_LINUX_BUILD_DIR}-granite\" --prefix /usr --libdir \"lib/$SQGI_LINUX_TRIPLET\" --buildtype=release --wrap-mode=nofallback -Ddemo=false -Ddocumentation=false -Dintrospection=false ${SQGI_LINUX_MESON_CROSS_FILE:+--cross-file \"$SQGI_LINUX_MESON_CROSS_FILE\"}", + "SQGI_SASSC_ROOT=\"$(cd ../.. && pwd)/host-tools/sassc-root\"; SQGI_SASSC_LIBDIR=\"$(find \"$SQGI_SASSC_ROOT/usr/lib\" -mindepth 1 -maxdepth 1 -type d -print -quit 2>/dev/null)\"; if [ -x \"$SQGI_SASSC_ROOT/usr/bin/sassc\" ]; then export PATH=\"$SQGI_SASSC_ROOT/usr/bin:$PATH\"; [ -n \"$SQGI_SASSC_LIBDIR\" ] && export LD_LIBRARY_PATH=\"$SQGI_SASSC_LIBDIR${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}\"; fi; meson compile -C \"${SQGI_LINUX_BUILD_DIR}-granite\"" + ], + "install": [ + "DESTDIR=\"$SQGI_LINUX_SYSROOT\" meson install -C \"${SQGI_LINUX_BUILD_DIR}-granite\"" + ], + "stage": false + }, + { + "name": "jorts", + "dir": ".", + "build": [ + "meson setup \"$SQGI_LINUX_BUILD_DIR\" --wipe --prefix /usr --buildtype=release -Ddevelopment=false -Dlegacy-rdnn=false -Dicon-variant=default ${SQGI_LINUX_MESON_CROSS_FILE:+--cross-file \"$SQGI_LINUX_MESON_CROSS_FILE\"} || meson setup \"$SQGI_LINUX_BUILD_DIR\" --prefix /usr --buildtype=release -Ddevelopment=false -Dlegacy-rdnn=false -Dicon-variant=default ${SQGI_LINUX_MESON_CROSS_FILE:+--cross-file \"$SQGI_LINUX_MESON_CROSS_FILE\"}", + "meson compile -C \"$SQGI_LINUX_BUILD_DIR\"" + ], + "files": [ + "build-linux-x86_64/data/io.github.elly_code.jorts.gschema.xml=usr/share/glib-2.0/schemas/io.github.elly_code.jorts.gschema.xml", + "build-linux-x86_64/po/cs/LC_MESSAGES/jorts.mo=usr/share/locale/cs/LC_MESSAGES/jorts.mo", + "build-linux-x86_64/po/da/LC_MESSAGES/jorts.mo=usr/share/locale/da/LC_MESSAGES/jorts.mo", + "build-linux-x86_64/po/de/LC_MESSAGES/jorts.mo=usr/share/locale/de/LC_MESSAGES/jorts.mo", + "build-linux-x86_64/po/el/LC_MESSAGES/jorts.mo=usr/share/locale/el/LC_MESSAGES/jorts.mo", + "build-linux-x86_64/po/es/LC_MESSAGES/jorts.mo=usr/share/locale/es/LC_MESSAGES/jorts.mo", + "build-linux-x86_64/po/fr/LC_MESSAGES/jorts.mo=usr/share/locale/fr/LC_MESSAGES/jorts.mo", + "build-linux-x86_64/po/hr/LC_MESSAGES/jorts.mo=usr/share/locale/hr/LC_MESSAGES/jorts.mo", + "build-linux-x86_64/po/it/LC_MESSAGES/jorts.mo=usr/share/locale/it/LC_MESSAGES/jorts.mo", + "build-linux-x86_64/po/ja/LC_MESSAGES/jorts.mo=usr/share/locale/ja/LC_MESSAGES/jorts.mo", + "build-linux-x86_64/po/pt/LC_MESSAGES/jorts.mo=usr/share/locale/pt/LC_MESSAGES/jorts.mo", + "build-linux-x86_64/po/pt_br/LC_MESSAGES/jorts.mo=usr/share/locale/pt_br/LC_MESSAGES/jorts.mo", + "build-linux-x86_64/po/ru/LC_MESSAGES/jorts.mo=usr/share/locale/ru/LC_MESSAGES/jorts.mo", + "build-linux-x86_64/po/sv/LC_MESSAGES/jorts.mo=usr/share/locale/sv/LC_MESSAGES/jorts.mo", + "build-linux-x86_64/po/vi/LC_MESSAGES/jorts.mo=usr/share/locale/vi/LC_MESSAGES/jorts.mo", + "build-linux-x86_64/data/io.github.elly_code.jorts.desktop=usr/share/applications/io.github.elly_code.jorts.desktop", + "build-linux-x86_64/data/io.github.elly_code.jorts.metainfo.xml=usr/share/metainfo/io.github.elly_code.jorts.metainfo.xml", + "data/fonts/RedactedScript-Regular.ttf=usr/share/fonts/RedactedScript-Regular.ttf", + "data/icons/default/hicolor/16.png=usr/share/icons/hicolor/16x16/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor/24.png=usr/share/icons/hicolor/24x24/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor/32.png=usr/share/icons/hicolor/32x32/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor/48.png=usr/share/icons/hicolor/48x48/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor/64.png=usr/share/icons/hicolor/64x64/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor/128.png=usr/share/icons/hicolor/128x128/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor@2/16@2.png=usr/share/icons/hicolor/16x16@2/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor@2/24@2.png=usr/share/icons/hicolor/24x24@2/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor@2/32@2.png=usr/share/icons/hicolor/32x32@2/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor@2/48@2.png=usr/share/icons/hicolor/48x48@2/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor@2/64@2.png=usr/share/icons/hicolor/64x64@2/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor@2/128@2.png=usr/share/icons/hicolor/128x128@2/apps/io.github.elly_code.jorts.png", + "data/icons/default/scalable.svg=usr/share/icons/hicolor/scalable/apps/io.github.elly_code.jorts.svg" + ] + } + ] + }, + { + "arch": "aarch64", + "build_dir": "build-linux-aarch64", + "entry_linux": "build-linux-aarch64/src/io.github.elly_code.jorts", + "deb": { + "suite": "noble", + "download": true, + "packages": [ + "libgtk-4-dev", + "libgee-0.8-dev", + "libglib2.0-dev", + "libgdk-pixbuf-2.0-0", + "libjson-glib-dev", + "libportal-dev", + "libdrm-dev", + "gobject-introspection", + "libgirepository1.0-dev", + "adwaita-icon-theme", + "hicolor-icon-theme", + "elementary-icon-theme", + "librsvg2-common", + "shared-mime-info" + ] + }, + "inherit_native_projects": false, + "native_projects": [ + { + "name": "gtk", + "repo": "https://gitlab.gnome.org/GNOME/gtk.git", + "tag": "4.16.13", + "update": false, + "build": [ + "SQGI_SASSC_ROOT=\"$(cd ../.. && pwd)/host-tools/sassc-root\"; SQGI_SASSC_DEBS=\"$(cd ../.. && pwd)/host-tools/debs\"; if ! command -v sassc >/dev/null 2>&1 && [ ! -x \"$SQGI_SASSC_ROOT/usr/bin/sassc\" ]; then command -v apt-get >/dev/null 2>&1 || { echo \"GTK 4.16 from git requires host sassc; install it with: sudo apt-get install sassc\"; exit 1; }; command -v dpkg-deb >/dev/null 2>&1 || { echo \"GTK 4.16 from git requires dpkg-deb or host sassc; install it with: sudo apt-get install sassc\"; exit 1; }; mkdir -p \"$SQGI_SASSC_DEBS\" \"$SQGI_SASSC_ROOT\" && (cd \"$SQGI_SASSC_DEBS\" && apt-get download sassc libsass1) && for deb in \"$SQGI_SASSC_DEBS\"/*.deb; do dpkg-deb -x \"$deb\" \"$SQGI_SASSC_ROOT\"; done; fi; command -v sassc >/dev/null 2>&1 || [ -x \"$SQGI_SASSC_ROOT/usr/bin/sassc\" ] || { echo \"GTK 4.16 from git requires host sassc; install it with: sudo apt-get install sassc\"; exit 1; }", + "SQGI_SASSC_ROOT=\"$(cd ../.. && pwd)/host-tools/sassc-root\"; SQGI_SASSC_LIBDIR=\"$(find \"$SQGI_SASSC_ROOT/usr/lib\" -mindepth 1 -maxdepth 1 -type d -print -quit 2>/dev/null)\"; if [ -x \"$SQGI_SASSC_ROOT/usr/bin/sassc\" ]; then export PATH=\"$SQGI_SASSC_ROOT/usr/bin:$PATH\"; [ -n \"$SQGI_SASSC_LIBDIR\" ] && export LD_LIBRARY_PATH=\"$SQGI_SASSC_LIBDIR${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}\"; fi; meson setup \"${SQGI_LINUX_BUILD_DIR}-gtk\" --reconfigure --prefix /usr --libdir \"lib/$SQGI_LINUX_TRIPLET\" --buildtype=release --wrap-mode=nofallback -Dbuild-demos=false -Dbuild-examples=false -Dbuild-tests=false -Dbuild-testsuite=false -Ddocumentation=false -Dman-pages=false -Dintrospection=disabled -Dmedia-gstreamer=disabled -Dprint-cups=disabled -Dvulkan=disabled -Dcloudproviders=disabled -Dsysprof=disabled -Dtracker=disabled -Dcolord=disabled -Df16c=disabled -Dx11-backend=true -Dwayland-backend=true -Dbroadway-backend=false -Dmacos-backend=false -Dwin32-backend=false ${SQGI_LINUX_MESON_CROSS_FILE:+--cross-file \"$SQGI_LINUX_MESON_CROSS_FILE\"} || meson setup \"${SQGI_LINUX_BUILD_DIR}-gtk\" --prefix /usr --libdir \"lib/$SQGI_LINUX_TRIPLET\" --buildtype=release --wrap-mode=nofallback -Dbuild-demos=false -Dbuild-examples=false -Dbuild-tests=false -Dbuild-testsuite=false -Ddocumentation=false -Dman-pages=false -Dintrospection=disabled -Dmedia-gstreamer=disabled -Dprint-cups=disabled -Dvulkan=disabled -Dcloudproviders=disabled -Dsysprof=disabled -Dtracker=disabled -Dcolord=disabled -Df16c=disabled -Dx11-backend=true -Dwayland-backend=true -Dbroadway-backend=false -Dmacos-backend=false -Dwin32-backend=false ${SQGI_LINUX_MESON_CROSS_FILE:+--cross-file \"$SQGI_LINUX_MESON_CROSS_FILE\"}", + "SQGI_SASSC_ROOT=\"$(cd ../.. && pwd)/host-tools/sassc-root\"; SQGI_SASSC_LIBDIR=\"$(find \"$SQGI_SASSC_ROOT/usr/lib\" -mindepth 1 -maxdepth 1 -type d -print -quit 2>/dev/null)\"; if [ -x \"$SQGI_SASSC_ROOT/usr/bin/sassc\" ]; then export PATH=\"$SQGI_SASSC_ROOT/usr/bin:$PATH\"; [ -n \"$SQGI_SASSC_LIBDIR\" ] && export LD_LIBRARY_PATH=\"$SQGI_SASSC_LIBDIR${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}\"; fi; meson compile -C \"${SQGI_LINUX_BUILD_DIR}-gtk\"" + ], + "install": [ + "DESTDIR=\"$SQGI_LINUX_SYSROOT\" meson install -C \"${SQGI_LINUX_BUILD_DIR}-gtk\"" + ], + "stage": false + }, + { + "name": "granite", + "repo": "https://github.com/elementary/granite.git", + "tag": "7.6.0", + "update": false, + "build": [ + "SQGI_SASSC_ROOT=\"$(cd ../.. && pwd)/host-tools/sassc-root\"; SQGI_SASSC_DEBS=\"$(cd ../.. && pwd)/host-tools/debs\"; if ! command -v sassc >/dev/null 2>&1 && [ ! -x \"$SQGI_SASSC_ROOT/usr/bin/sassc\" ]; then command -v apt-get >/dev/null 2>&1 || { echo \"Granite 7.6 from git requires host sassc; install it with: sudo apt-get install sassc\"; exit 1; }; command -v dpkg-deb >/dev/null 2>&1 || { echo \"Granite 7.6 from git requires dpkg-deb or host sassc; install it with: sudo apt-get install sassc\"; exit 1; }; mkdir -p \"$SQGI_SASSC_DEBS\" \"$SQGI_SASSC_ROOT\" && (cd \"$SQGI_SASSC_DEBS\" && apt-get download sassc libsass1) && for deb in \"$SQGI_SASSC_DEBS\"/*.deb; do dpkg-deb -x \"$deb\" \"$SQGI_SASSC_ROOT\"; done; fi; command -v sassc >/dev/null 2>&1 || [ -x \"$SQGI_SASSC_ROOT/usr/bin/sassc\" ] || { echo \"Granite 7.6 from git requires host sassc; install it with: sudo apt-get install sassc\"; exit 1; }", + "SQGI_SASSC_ROOT=\"$(cd ../.. && pwd)/host-tools/sassc-root\"; SQGI_SASSC_LIBDIR=\"$(find \"$SQGI_SASSC_ROOT/usr/lib\" -mindepth 1 -maxdepth 1 -type d -print -quit 2>/dev/null)\"; if [ -x \"$SQGI_SASSC_ROOT/usr/bin/sassc\" ]; then export PATH=\"$SQGI_SASSC_ROOT/usr/bin:$PATH\"; [ -n \"$SQGI_SASSC_LIBDIR\" ] && export LD_LIBRARY_PATH=\"$SQGI_SASSC_LIBDIR${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}\"; fi; meson setup \"${SQGI_LINUX_BUILD_DIR}-granite\" --reconfigure --prefix /usr --libdir \"lib/$SQGI_LINUX_TRIPLET\" --buildtype=release --wrap-mode=nofallback -Ddemo=false -Ddocumentation=false -Dintrospection=false ${SQGI_LINUX_MESON_CROSS_FILE:+--cross-file \"$SQGI_LINUX_MESON_CROSS_FILE\"} || meson setup \"${SQGI_LINUX_BUILD_DIR}-granite\" --prefix /usr --libdir \"lib/$SQGI_LINUX_TRIPLET\" --buildtype=release --wrap-mode=nofallback -Ddemo=false -Ddocumentation=false -Dintrospection=false ${SQGI_LINUX_MESON_CROSS_FILE:+--cross-file \"$SQGI_LINUX_MESON_CROSS_FILE\"}", + "SQGI_SASSC_ROOT=\"$(cd ../.. && pwd)/host-tools/sassc-root\"; SQGI_SASSC_LIBDIR=\"$(find \"$SQGI_SASSC_ROOT/usr/lib\" -mindepth 1 -maxdepth 1 -type d -print -quit 2>/dev/null)\"; if [ -x \"$SQGI_SASSC_ROOT/usr/bin/sassc\" ]; then export PATH=\"$SQGI_SASSC_ROOT/usr/bin:$PATH\"; [ -n \"$SQGI_SASSC_LIBDIR\" ] && export LD_LIBRARY_PATH=\"$SQGI_SASSC_LIBDIR${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}\"; fi; meson compile -C \"${SQGI_LINUX_BUILD_DIR}-granite\"" + ], + "install": [ + "DESTDIR=\"$SQGI_LINUX_SYSROOT\" meson install -C \"${SQGI_LINUX_BUILD_DIR}-granite\"" + ], + "stage": false + }, + { + "name": "jorts", + "dir": ".", + "build": [ + "meson setup \"$SQGI_LINUX_BUILD_DIR\" --wipe --prefix /usr --buildtype=release -Ddevelopment=false -Dlegacy-rdnn=false -Dicon-variant=default ${SQGI_LINUX_MESON_CROSS_FILE:+--cross-file \"$SQGI_LINUX_MESON_CROSS_FILE\"} || meson setup \"$SQGI_LINUX_BUILD_DIR\" --prefix /usr --buildtype=release -Ddevelopment=false -Dlegacy-rdnn=false -Dicon-variant=default ${SQGI_LINUX_MESON_CROSS_FILE:+--cross-file \"$SQGI_LINUX_MESON_CROSS_FILE\"}", + "meson compile -C \"$SQGI_LINUX_BUILD_DIR\"" + ], + "files": [ + "build-linux-aarch64/data/io.github.elly_code.jorts.gschema.xml=usr/share/glib-2.0/schemas/io.github.elly_code.jorts.gschema.xml", + "build-linux-aarch64/po/cs/LC_MESSAGES/jorts.mo=usr/share/locale/cs/LC_MESSAGES/jorts.mo", + "build-linux-aarch64/po/da/LC_MESSAGES/jorts.mo=usr/share/locale/da/LC_MESSAGES/jorts.mo", + "build-linux-aarch64/po/de/LC_MESSAGES/jorts.mo=usr/share/locale/de/LC_MESSAGES/jorts.mo", + "build-linux-aarch64/po/el/LC_MESSAGES/jorts.mo=usr/share/locale/el/LC_MESSAGES/jorts.mo", + "build-linux-aarch64/po/es/LC_MESSAGES/jorts.mo=usr/share/locale/es/LC_MESSAGES/jorts.mo", + "build-linux-aarch64/po/fr/LC_MESSAGES/jorts.mo=usr/share/locale/fr/LC_MESSAGES/jorts.mo", + "build-linux-aarch64/po/hr/LC_MESSAGES/jorts.mo=usr/share/locale/hr/LC_MESSAGES/jorts.mo", + "build-linux-aarch64/po/it/LC_MESSAGES/jorts.mo=usr/share/locale/it/LC_MESSAGES/jorts.mo", + "build-linux-aarch64/po/ja/LC_MESSAGES/jorts.mo=usr/share/locale/ja/LC_MESSAGES/jorts.mo", + "build-linux-aarch64/po/pt/LC_MESSAGES/jorts.mo=usr/share/locale/pt/LC_MESSAGES/jorts.mo", + "build-linux-aarch64/po/pt_br/LC_MESSAGES/jorts.mo=usr/share/locale/pt_br/LC_MESSAGES/jorts.mo", + "build-linux-aarch64/po/ru/LC_MESSAGES/jorts.mo=usr/share/locale/ru/LC_MESSAGES/jorts.mo", + "build-linux-aarch64/po/sv/LC_MESSAGES/jorts.mo=usr/share/locale/sv/LC_MESSAGES/jorts.mo", + "build-linux-aarch64/po/vi/LC_MESSAGES/jorts.mo=usr/share/locale/vi/LC_MESSAGES/jorts.mo", + "build-linux-aarch64/data/io.github.elly_code.jorts.desktop=usr/share/applications/io.github.elly_code.jorts.desktop", + "build-linux-aarch64/data/io.github.elly_code.jorts.metainfo.xml=usr/share/metainfo/io.github.elly_code.jorts.metainfo.xml", + "data/fonts/RedactedScript-Regular.ttf=usr/share/fonts/RedactedScript-Regular.ttf", + "data/icons/default/hicolor/16.png=usr/share/icons/hicolor/16x16/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor/24.png=usr/share/icons/hicolor/24x24/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor/32.png=usr/share/icons/hicolor/32x32/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor/48.png=usr/share/icons/hicolor/48x48/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor/64.png=usr/share/icons/hicolor/64x64/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor/128.png=usr/share/icons/hicolor/128x128/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor@2/16@2.png=usr/share/icons/hicolor/16x16@2/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor@2/24@2.png=usr/share/icons/hicolor/24x24@2/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor@2/32@2.png=usr/share/icons/hicolor/32x32@2/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor@2/48@2.png=usr/share/icons/hicolor/48x48@2/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor@2/64@2.png=usr/share/icons/hicolor/64x64@2/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor@2/128@2.png=usr/share/icons/hicolor/128x128@2/apps/io.github.elly_code.jorts.png", + "data/icons/default/scalable.svg=usr/share/icons/hicolor/scalable/apps/io.github.elly_code.jorts.svg" + ] + } + ] + } + ] + }, + "windows": { + "msys2_prefix": "mingw64", + "gdk_backend": "win32", + "gtk_theme": "io.elementary.stylesheet.blueberry", + "gtk_icon_theme": "Adwaita", + "gtk_font_name": "Inter Variable Text 9", + "fonts": [ + { + "path": "data/fonts/RedactedScript-Regular.ttf", + "registry_name": "Redacted Script Regular (TrueType)" + } + ], + "build_dir": "build-windows-x86_64", + "packages": [ + "mingw-w64-x86_64-gtk4", + "mingw-w64-x86_64-granite7", + "mingw-w64-x86_64-libgee", + "mingw-w64-x86_64-json-glib", + "mingw-w64-x86_64-gdk-pixbuf2", + "mingw-w64-x86_64-librsvg", + "mingw-w64-x86_64-gsettings-desktop-schemas", + "mingw-w64-x86_64-hicolor-icon-theme", + "mingw-w64-x86_64-adwaita-icon-theme", + "mingw-w64-x86_64-adwaita-icon-theme-legacy", + "mingw-w64-x86_64-gtk-elementary-theme" + ], + "native_projects": [ + { + "name": "jorts", + "dir": ".", + "build": [ + "meson setup \"$SQGI_WINDOWS_BUILD_DIR\" --wipe --prefix \"$SQGI_WINDOWS_PREFIX\" --buildtype=release -Dwindows=true -Ddevelopment=false -Dlegacy-rdnn=false -Dicon-variant=default --cross-file \"$SQGI_MESON_CROSS_FILE\" || meson setup \"$SQGI_WINDOWS_BUILD_DIR\" --prefix \"$SQGI_WINDOWS_PREFIX\" --buildtype=release -Dwindows=true -Ddevelopment=false -Dlegacy-rdnn=false -Dicon-variant=default --cross-file \"$SQGI_MESON_CROSS_FILE\"", + "meson compile -C \"$SQGI_WINDOWS_BUILD_DIR\"" + ], + "files": [ + "build-windows-x86_64/data/io.github.elly_code.jorts.gschema.xml=share/glib-2.0/schemas/io.github.elly_code.jorts.gschema.xml", + "build-windows-x86_64/po/cs/LC_MESSAGES/jorts.mo=share/locale/cs/LC_MESSAGES/jorts.mo", + "build-windows-x86_64/po/da/LC_MESSAGES/jorts.mo=share/locale/da/LC_MESSAGES/jorts.mo", + "build-windows-x86_64/po/de/LC_MESSAGES/jorts.mo=share/locale/de/LC_MESSAGES/jorts.mo", + "build-windows-x86_64/po/el/LC_MESSAGES/jorts.mo=share/locale/el/LC_MESSAGES/jorts.mo", + "build-windows-x86_64/po/es/LC_MESSAGES/jorts.mo=share/locale/es/LC_MESSAGES/jorts.mo", + "build-windows-x86_64/po/fr/LC_MESSAGES/jorts.mo=share/locale/fr/LC_MESSAGES/jorts.mo", + "build-windows-x86_64/po/hr/LC_MESSAGES/jorts.mo=share/locale/hr/LC_MESSAGES/jorts.mo", + "build-windows-x86_64/po/it/LC_MESSAGES/jorts.mo=share/locale/it/LC_MESSAGES/jorts.mo", + "build-windows-x86_64/po/ja/LC_MESSAGES/jorts.mo=share/locale/ja/LC_MESSAGES/jorts.mo", + "build-windows-x86_64/po/pt/LC_MESSAGES/jorts.mo=share/locale/pt/LC_MESSAGES/jorts.mo", + "build-windows-x86_64/po/pt_br/LC_MESSAGES/jorts.mo=share/locale/pt_br/LC_MESSAGES/jorts.mo", + "build-windows-x86_64/po/ru/LC_MESSAGES/jorts.mo=share/locale/ru/LC_MESSAGES/jorts.mo", + "build-windows-x86_64/po/sv/LC_MESSAGES/jorts.mo=share/locale/sv/LC_MESSAGES/jorts.mo", + "build-windows-x86_64/po/vi/LC_MESSAGES/jorts.mo=share/locale/vi/LC_MESSAGES/jorts.mo", + "data/icons/default/hicolor/16.png=share/icons/hicolor/16x16/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor/24.png=share/icons/hicolor/24x24/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor/32.png=share/icons/hicolor/32x32/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor/48.png=share/icons/hicolor/48x48/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor/64.png=share/icons/hicolor/64x64/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor/128.png=share/icons/hicolor/128x128/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor/256.png=share/icons/hicolor/256x256/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor/512.png=share/icons/hicolor/512x512/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor@2/16@2.png=share/icons/hicolor/16x16@2/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor@2/24@2.png=share/icons/hicolor/24x24@2/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor@2/32@2.png=share/icons/hicolor/32x32@2/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor@2/48@2.png=share/icons/hicolor/48x48@2/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor@2/64@2.png=share/icons/hicolor/64x64@2/apps/io.github.elly_code.jorts.png", + "data/icons/default/hicolor@2/128@2.png=share/icons/hicolor/128x128@2/apps/io.github.elly_code.jorts.png", + "data/icons/default/scalable.svg=share/icons/hicolor/scalable/apps/io.github.elly_code.jorts.svg" + ] + } + ], + "nsis_options": { + "installer_name": "Jorts-Setup.exe", + "install_dir": "$LOCALAPPDATA\\Programs\\io.github.elly_code.jorts", + "request_execution_level": "user", + "icon": "windows/icons/install.ico", + "desktop_shortcut": true, + "start_menu_shortcut": true, + "start_menu_folder": "Jorts", + "uninstall_registry": true + } + } +} diff --git a/src/Application.vala b/src/Application.vala index cd1f350a..0a9feca0 100644 --- a/src/Application.vala +++ b/src/Application.vala @@ -83,11 +83,25 @@ public class Jorts.Application : Gtk.Application { gsettings = new GLib.Settings (APP_ID); } + private static string get_locale_dir () { + var sqgi_appdir = GLib.Environment.get_variable ("SQGI_APPDIR"); + + if (sqgi_appdir != null && sqgi_appdir != "") { +#if WINDOWS + return GLib.Path.build_filename (sqgi_appdir, "share", "locale"); +#else + return GLib.Path.build_filename (sqgi_appdir, "usr", "share", "locale"); +#endif + } + + return LOCALEDIR; + } + /*************************************************/ construct { // The localization thingamabob Intl.setlocale (LocaleCategory.ALL, ""); - Intl.bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); + Intl.bindtextdomain (GETTEXT_PACKAGE, get_locale_dir ()); Intl.bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); Intl.textdomain (GETTEXT_PACKAGE); @@ -121,7 +135,11 @@ public class Jorts.Application : Gtk.Application { // Force the eOS icon theme, and set the blueberry as fallback, if for some reason it fails for individual notes var granite_settings = Granite.Settings.get_default (); gtk_settings = Gtk.Settings.get_default (); +#if WINDOWS + gtk_settings.gtk_icon_theme_name = "Adwaita"; +#else gtk_settings.gtk_icon_theme_name = "elementary"; +#endif gtk_settings.gtk_theme_name = DEFAULT_STYLESHEET; // Also follow dark if system is dark lIke mY sOul.