diff --git a/.gitignore b/.gitignore
index 130c76cb..b58d15b0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,15 @@ dist-*
.sqgipkg/
repo
deploy
+subprojects/**/
+subprojects/*.wrap
+!subprojects/
+!subprojects/packagefiles/
+!subprojects/packagefiles/*.patch
+!subprojects/granite.wrap
+!subprojects/json-glib.wrap
+!subprojects/libgee.wrap
+!subprojects/granite-stylesheet.wrap
+.pixiewood
+_build
+apks/
diff --git a/build-aux/pixiewood.xml b/build-aux/pixiewood.xml
new file mode 100644
index 00000000..2bae93e2
--- /dev/null
+++ b/build-aux/pixiewood.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+ hack
+ pthread-restrictions
+
+
+
+
+
+
+
+
+ aarch64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/data/icons/scalable/actions/edit-delete-symbolic.svg b/data/icons/scalable/actions/edit-delete-symbolic.svg
new file mode 100644
index 00000000..d9b8fd85
--- /dev/null
+++ b/data/icons/scalable/actions/edit-delete-symbolic.svg
@@ -0,0 +1,29 @@
+
+
diff --git a/data/icons/scalable/actions/face-angel-symbolic.svg b/data/icons/scalable/actions/face-angel-symbolic.svg
new file mode 100644
index 00000000..d9a06bc6
--- /dev/null
+++ b/data/icons/scalable/actions/face-angel-symbolic.svg
@@ -0,0 +1,19 @@
+
diff --git a/data/icons/scalable/actions/face-angry-symbolic.svg b/data/icons/scalable/actions/face-angry-symbolic.svg
new file mode 100644
index 00000000..01b36221
--- /dev/null
+++ b/data/icons/scalable/actions/face-angry-symbolic.svg
@@ -0,0 +1,19 @@
+
diff --git a/data/icons/scalable/actions/face-cool-symbolic.svg b/data/icons/scalable/actions/face-cool-symbolic.svg
new file mode 100644
index 00000000..44108d2f
--- /dev/null
+++ b/data/icons/scalable/actions/face-cool-symbolic.svg
@@ -0,0 +1,20 @@
+
diff --git a/data/icons/scalable/actions/face-crying-symbolic.svg b/data/icons/scalable/actions/face-crying-symbolic.svg
new file mode 100644
index 00000000..ba25ce4b
--- /dev/null
+++ b/data/icons/scalable/actions/face-crying-symbolic.svg
@@ -0,0 +1,19 @@
+
diff --git a/data/icons/scalable/actions/face-devilish-symbolic.svg b/data/icons/scalable/actions/face-devilish-symbolic.svg
new file mode 100644
index 00000000..918042b5
--- /dev/null
+++ b/data/icons/scalable/actions/face-devilish-symbolic.svg
@@ -0,0 +1,19 @@
+
diff --git a/data/icons/scalable/actions/face-embarrassed-symbolic.svg b/data/icons/scalable/actions/face-embarrassed-symbolic.svg
new file mode 100644
index 00000000..f3a7156f
--- /dev/null
+++ b/data/icons/scalable/actions/face-embarrassed-symbolic.svg
@@ -0,0 +1,19 @@
+
diff --git a/data/icons/scalable/actions/face-heart-broken-symbolic.svg b/data/icons/scalable/actions/face-heart-broken-symbolic.svg
new file mode 100644
index 00000000..7654a929
--- /dev/null
+++ b/data/icons/scalable/actions/face-heart-broken-symbolic.svg
@@ -0,0 +1,20 @@
+
diff --git a/data/icons/scalable/actions/face-heart-symbolic.svg b/data/icons/scalable/actions/face-heart-symbolic.svg
new file mode 100644
index 00000000..7ef722e7
--- /dev/null
+++ b/data/icons/scalable/actions/face-heart-symbolic.svg
@@ -0,0 +1,20 @@
+
diff --git a/data/icons/scalable/actions/face-kiss-symbolic.svg b/data/icons/scalable/actions/face-kiss-symbolic.svg
new file mode 100644
index 00000000..012cc5aa
--- /dev/null
+++ b/data/icons/scalable/actions/face-kiss-symbolic.svg
@@ -0,0 +1,19 @@
+
diff --git a/data/icons/scalable/actions/face-laugh-symbolic.svg b/data/icons/scalable/actions/face-laugh-symbolic.svg
new file mode 100644
index 00000000..19c986a5
--- /dev/null
+++ b/data/icons/scalable/actions/face-laugh-symbolic.svg
@@ -0,0 +1,19 @@
+
diff --git a/data/icons/scalable/actions/face-monkey-symbolic.svg b/data/icons/scalable/actions/face-monkey-symbolic.svg
new file mode 100644
index 00000000..9e270c89
--- /dev/null
+++ b/data/icons/scalable/actions/face-monkey-symbolic.svg
@@ -0,0 +1,20 @@
+
diff --git a/data/icons/scalable/actions/face-plain-symbolic.svg b/data/icons/scalable/actions/face-plain-symbolic.svg
new file mode 100644
index 00000000..2635b16a
--- /dev/null
+++ b/data/icons/scalable/actions/face-plain-symbolic.svg
@@ -0,0 +1,19 @@
+
diff --git a/data/icons/scalable/actions/face-raspberry-symbolic.svg b/data/icons/scalable/actions/face-raspberry-symbolic.svg
new file mode 100644
index 00000000..0fd06d87
--- /dev/null
+++ b/data/icons/scalable/actions/face-raspberry-symbolic.svg
@@ -0,0 +1,19 @@
+
diff --git a/data/icons/scalable/actions/face-sad-symbolic.svg b/data/icons/scalable/actions/face-sad-symbolic.svg
new file mode 100644
index 00000000..08ea148c
--- /dev/null
+++ b/data/icons/scalable/actions/face-sad-symbolic.svg
@@ -0,0 +1,19 @@
+
diff --git a/data/icons/scalable/actions/face-sick-symbolic.svg b/data/icons/scalable/actions/face-sick-symbolic.svg
new file mode 100644
index 00000000..609110f5
--- /dev/null
+++ b/data/icons/scalable/actions/face-sick-symbolic.svg
@@ -0,0 +1,19 @@
+
diff --git a/data/icons/scalable/actions/face-smile-big-symbolic.svg b/data/icons/scalable/actions/face-smile-big-symbolic.svg
new file mode 100644
index 00000000..751cf135
--- /dev/null
+++ b/data/icons/scalable/actions/face-smile-big-symbolic.svg
@@ -0,0 +1,19 @@
+
diff --git a/data/icons/scalable/actions/face-smile-symbolic.svg b/data/icons/scalable/actions/face-smile-symbolic.svg
new file mode 100644
index 00000000..69a3803d
--- /dev/null
+++ b/data/icons/scalable/actions/face-smile-symbolic.svg
@@ -0,0 +1,19 @@
+
diff --git a/data/icons/scalable/actions/face-smirk-symbolic.svg b/data/icons/scalable/actions/face-smirk-symbolic.svg
new file mode 100644
index 00000000..f3d5ce27
--- /dev/null
+++ b/data/icons/scalable/actions/face-smirk-symbolic.svg
@@ -0,0 +1,19 @@
+
diff --git a/data/icons/scalable/actions/face-surprise-symbolic.svg b/data/icons/scalable/actions/face-surprise-symbolic.svg
new file mode 100644
index 00000000..d036909c
--- /dev/null
+++ b/data/icons/scalable/actions/face-surprise-symbolic.svg
@@ -0,0 +1,19 @@
+
diff --git a/data/icons/scalable/actions/face-tired-symbolic.svg b/data/icons/scalable/actions/face-tired-symbolic.svg
new file mode 100644
index 00000000..edcb3d6e
--- /dev/null
+++ b/data/icons/scalable/actions/face-tired-symbolic.svg
@@ -0,0 +1,19 @@
+
diff --git a/data/icons/scalable/actions/face-uncertain-symbolic.svg b/data/icons/scalable/actions/face-uncertain-symbolic.svg
new file mode 100644
index 00000000..162f8996
--- /dev/null
+++ b/data/icons/scalable/actions/face-uncertain-symbolic.svg
@@ -0,0 +1,19 @@
+
diff --git a/data/icons/scalable/actions/face-wink-symbolic.svg b/data/icons/scalable/actions/face-wink-symbolic.svg
new file mode 100644
index 00000000..b47c1480
--- /dev/null
+++ b/data/icons/scalable/actions/face-wink-symbolic.svg
@@ -0,0 +1,19 @@
+
diff --git a/data/icons/scalable/actions/face-worried-symbolic.svg b/data/icons/scalable/actions/face-worried-symbolic.svg
new file mode 100644
index 00000000..f8815c99
--- /dev/null
+++ b/data/icons/scalable/actions/face-worried-symbolic.svg
@@ -0,0 +1,19 @@
+
diff --git a/data/icons/scalable/actions/list-add-symbolic.svg b/data/icons/scalable/actions/list-add-symbolic.svg
new file mode 100644
index 00000000..a9ec1811
--- /dev/null
+++ b/data/icons/scalable/actions/list-add-symbolic.svg
@@ -0,0 +1,23 @@
+
+
diff --git a/data/icons/scalable/actions/open-menu-symbolic.svg b/data/icons/scalable/actions/open-menu-symbolic.svg
new file mode 100644
index 00000000..c9206e36
--- /dev/null
+++ b/data/icons/scalable/actions/open-menu-symbolic.svg
@@ -0,0 +1,29 @@
+
+
diff --git a/data/icons/scalable/actions/view-list-symbolic.svg b/data/icons/scalable/actions/view-list-symbolic.svg
new file mode 100644
index 00000000..3b60ffff
--- /dev/null
+++ b/data/icons/scalable/actions/view-list-symbolic.svg
@@ -0,0 +1,14 @@
+
+
diff --git a/data/jorts.gresource.xml.in b/data/jorts.gresource.xml.in
index af22535f..931327d0 100644
--- a/data/jorts.gresource.xml.in
+++ b/data/jorts.gresource.xml.in
@@ -3,5 +3,33 @@
Application.css
Themes.css
+
+ icons/scalable/actions/edit-delete-symbolic.svg
+ icons/scalable/actions/face-sad-symbolic.svg
+ icons/scalable/actions/face-angel-symbolic.svg
+ icons/scalable/actions/face-sick-symbolic.svg
+ icons/scalable/actions/face-angry-symbolic.svg
+ icons/scalable/actions/face-smile-big-symbolic.svg
+ icons/scalable/actions/face-cool-symbolic.svg
+ icons/scalable/actions/face-smile-symbolic.svg
+ icons/scalable/actions/face-crying-symbolic.svg
+ icons/scalable/actions/face-smirk-symbolic.svg
+ icons/scalable/actions/face-devilish-symbolic.svg
+ icons/scalable/actions/face-surprise-symbolic.svg
+ icons/scalable/actions/face-embarrassed-symbolic.svg
+ icons/scalable/actions/face-tired-symbolic.svg
+ icons/scalable/actions/face-heart-broken-symbolic.svg
+ icons/scalable/actions/face-uncertain-symbolic.svg
+ icons/scalable/actions/face-heart-symbolic.svg
+ icons/scalable/actions/face-wink-symbolic.svg
+ icons/scalable/actions/face-kiss-symbolic.svg
+ icons/scalable/actions/face-worried-symbolic.svg
+ icons/scalable/actions/face-laugh-symbolic.svg
+ icons/scalable/actions/list-add-symbolic.svg
+ icons/scalable/actions/face-monkey-symbolic.svg
+ icons/scalable/actions/open-menu-symbolic.svg
+ icons/scalable/actions/face-plain-symbolic.svg
+ icons/scalable/actions/view-list-symbolic.svg
+ icons/scalable/actions/face-raspberry-symbolic.svg
-
\ No newline at end of file
+
diff --git a/data/jorts.metainfo.xml.in.in b/data/jorts.metainfo.xml.in.in
index ffeef0de..4d38734a 100644
--- a/data/jorts.metainfo.xml.in.in
+++ b/data/jorts.metainfo.xml.in.in
@@ -1,5 +1,5 @@
-
+
@APP_ID@
CC0-1.0
GPL-3.0+
diff --git a/data/meson.build b/data/meson.build
index 7839116d..c9c823fc 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -47,6 +47,7 @@ gschema_file = configure_file(
install_data(
gschema_file,
install_dir: get_option('datadir') / 'glib-2.0' / 'schemas',
+ install_tag: 'runtime'
)
compile_schemas = find_program('glib-compile-schemas', native: true, required: false)
@@ -63,13 +64,15 @@ endif
#========================
# ICONS
-subdir('icons')
+subdir('icons')
#========================
# FONTS
-subdir('fonts')
+if not android
+ subdir('fonts')
+endif
#========================
# DESKTOP
diff --git a/meson.build b/meson.build
index 4ec51d4b..482ac484 100644
--- a/meson.build
+++ b/meson.build
@@ -53,6 +53,7 @@ endif
#================================
gnome = import('gnome')
i18n = import('i18n')
+android = false
if build_machine.system() == 'windows'
@@ -63,9 +64,27 @@ if linux
vala_flags += ['--define', 'LINUX']
elif windows
vala_flags += ['--define', 'WINDOWS']
+elif host_machine.system() == 'android'
+ android = true
+ vala_flags += ['--define', 'ANDROID']
+
+ #add_project_arguments(['--vapidir=' + meson.project_source_root() / 'vapi'], language: 'vala')
+ add_project_arguments([
+ '--pkg=gtk4',
+ ## '--pkg=granite-9',
+ '--pkg=json-glib-1.0',
+ ## '--pkg=gee-0.8', # libgee has vapi
+ '--pkg=glib-2.0'
+ ], language: 'vala')
endif
-add_global_arguments('-DGETTEXT_PACKAGE="@0@"'.format (app_name), language:'c')
+# TODO: upstream -w outside this PR
+add_global_arguments('-DGETTEXT_PACKAGE="@0@"'.format (app_name), '-w', language:'c')
+
+# has to be done after global args
+if android
+ subproject('granite-stylesheet')
+endif
#================================
@@ -102,7 +121,7 @@ endif
if not windows
gnome.post_install(
glib_compile_schemas: true,
- gtk_update_icon_cache: true,
+ gtk_update_icon_cache: not android,
update_desktop_database: true
)
endif
diff --git a/src/Views/PreferencesView.vala b/src/Views/PreferencesView.vala
index a61922ba..33d123af 100644
--- a/src/Views/PreferencesView.vala
+++ b/src/Views/PreferencesView.vala
@@ -10,7 +10,7 @@
private Granite.Toast toast;
public Gtk.Button close_button;
-#if !WINDOWS
+#if !WINDOWS && !ANDROID
Gtk.Switch autostart_toggle;
Jorts.Autostart autostart;
#endif
@@ -128,7 +128,7 @@
/****************************************************/
// Windows do not have libportal, so we have to skip the autostart options
-#if !WINDOWS
+#if !WINDOWS && !ANDROID
autostart_toggle = new Gtk.Switch ();
Application.gsettings.bind (KEY_AUTOSTART,
@@ -181,7 +181,7 @@
prefview.append (actionbar);
}
-#if !WINDOWS
+#if !WINDOWS && !ANDROID
private void handle_toggle_autostart () {
if (autostart_toggle.active) {
autostart.request_set.begin ();
diff --git a/src/Windows/PreferenceWindow.vala b/src/Windows/PreferenceWindow.vala
index 9bcb717b..03b16c60 100644
--- a/src/Windows/PreferenceWindow.vala
+++ b/src/Windows/PreferenceWindow.vala
@@ -19,7 +19,7 @@ the actionbar has a donate me and a set back to defaults just like elementaryOS
public class Jorts.PreferenceWindow : Gtk.Window {
// We dont show autostart on windows, avoid awkward blank space
-#if WINDOWS
+#if WINDOWS || ANDROID
const int DEFAULT_PREF_HEIGHT = 210;
#else
const int DEFAULT_PREF_HEIGHT = 230;
diff --git a/src/meson.build b/src/meson.build
index 7973bc6c..ec1cc92b 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -70,8 +70,10 @@ if windows
else
dependencies += dependency('gio-unix-2.0')
- dependencies += dependency('libportal')
- sources += files('Utils' / 'Autostart.vala')
+ if not android
+ dependencies += dependency('libportal')
+ sources += files('Utils' / 'Autostart.vala')
+ endif
endif
@@ -86,5 +88,6 @@ executable(
dependencies: dependencies,
vala_args: vala_flags,
win_subsystem: 'windows',
+ android_exe_type: 'application',
install : true
)
diff --git a/subprojects/granite-stylesheet.wrap b/subprojects/granite-stylesheet.wrap
new file mode 100644
index 00000000..09d8664b
--- /dev/null
+++ b/subprojects/granite-stylesheet.wrap
@@ -0,0 +1,6 @@
+[wrap-git]
+directory=granite-stylesheet
+url=https://github.com/elementary/stylesheet.git
+revision=main
+depth=1
+diff_files=granite-stylesheet_install_tag.patch
diff --git a/subprojects/granite.wrap b/subprojects/granite.wrap
new file mode 100644
index 00000000..9be734f5
--- /dev/null
+++ b/subprojects/granite.wrap
@@ -0,0 +1,9 @@
+[wrap-git]
+directory=granite
+url=https://github.com/elementary/granite.git
+revision=7.8.1
+depth=1
+diff_files=granite_disable_icon_cache.patch,granite_pass_pkg_args_to_valac.patch
+
+[provide]
+granite-7 = libgranite_dep
diff --git a/subprojects/json-glib.wrap b/subprojects/json-glib.wrap
new file mode 100644
index 00000000..fbae4039
--- /dev/null
+++ b/subprojects/json-glib.wrap
@@ -0,0 +1,10 @@
+[wrap-file]
+directory = json-glib-1.10.8
+source_url = https://download.gnome.org/sources/json-glib/1.10/json-glib-1.10.8.tar.xz
+source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/json-glib_1.10.8-1/json-glib-1.10.8.tar.xz
+source_filename = json-glib-1.10.8.tar.xz
+source_hash = 55c5c141a564245b8f8fbe7698663c87a45a7333c2a2c56f06f811ab73b212dd
+wrapdb_version = 1.10.8-1
+
+[provide]
+json-glib-1.0 = json_glib_dep
diff --git a/subprojects/libgee.wrap b/subprojects/libgee.wrap
new file mode 100644
index 00000000..742e7658
--- /dev/null
+++ b/subprojects/libgee.wrap
@@ -0,0 +1,7 @@
+[wrap-git]
+url = https://github.com/frida/libgee
+revision = ad17ed847039469fcc2dc711ecfee2bbf7d2bf87
+
+[provide]
+dependency_names = gee-0.8
+
diff --git a/subprojects/packagefiles/granite-stylesheet_install_tag.patch b/subprojects/packagefiles/granite-stylesheet_install_tag.patch
new file mode 100644
index 00000000..4add88d6
--- /dev/null
+++ b/subprojects/packagefiles/granite-stylesheet_install_tag.patch
@@ -0,0 +1,23 @@
+diff --git a/src/gtk-4.0/meson.build b/src/gtk-4.0/meson.build
+index a381884..9baec00 100644
+--- a/src/gtk-4.0/meson.build
++++ b/src/gtk-4.0/meson.build
+@@ -41,15 +41,15 @@ foreach variant : variants
+
+ meson.add_install_script (install_exec,
+ variant_target.full_path(),
+- dest_theme_dir / 'gtk-4.0' / 'gtk.css'
++ dest_theme_dir / 'gtk-4.0' / 'gtk.css', install_tag: 'runtime'
+ )
+
+ meson.add_install_script (install_exec,
+ variant_dark_target.full_path(),
+- dest_theme_dir / 'gtk-4.0' / 'gtk-dark.css'
++ dest_theme_dir / 'gtk-4.0' / 'gtk-dark.css', install_tag: 'runtime'
+ )
+
+ install_subdir([
+ 'assets',
+- ], install_dir: dest_theme_dir / 'gtk-4.0' )
++ ], install_dir: dest_theme_dir / 'gtk-4.0', install_tag: 'runtime')
+ endforeach
diff --git a/subprojects/packagefiles/granite_disable_icon_cache.patch b/subprojects/packagefiles/granite_disable_icon_cache.patch
new file mode 100644
index 00000000..e4bf1d55
--- /dev/null
+++ b/subprojects/packagefiles/granite_disable_icon_cache.patch
@@ -0,0 +1,11 @@
+diff --git a/meson.build b/meson.build
+index 004caaee..fbb7317d 100644
+--- a/meson.build
++++ b/meson.build
+@@ -77,5 +77,5 @@ if get_option('demo')
+ endif
+
+ gnome.post_install(
+- gtk_update_icon_cache: true
++ gtk_update_icon_cache: false
+ )
diff --git a/subprojects/packagefiles/granite_pass_pkg_args_to_valac.patch b/subprojects/packagefiles/granite_pass_pkg_args_to_valac.patch
new file mode 100644
index 00000000..67b526e6
--- /dev/null
+++ b/subprojects/packagefiles/granite_pass_pkg_args_to_valac.patch
@@ -0,0 +1,20 @@
+diff --git a/meson.build b/meson.build
+index 004caaee..c11e0b10 100644
+--- a/meson.build
++++ b/meson.build
+@@ -28,6 +28,15 @@ else
+ vala_os_arg = []
+ endif
+
++if host_machine.system() == 'android'
++ vala_os_arg = ['--define=ANDROID']
++
++ add_project_arguments([
++ '--pkg=gtk4',
++ '--pkg=glib-2.0'
++ ], language: 'vala')
++endif
++
+ glib_min_version = '2.50'
+ if build_machine.system() == 'windows'
+ gio_os_dep = dependency('gio-windows-2.0', version: '>=' + glib_min_version)