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 @@ + + + + + + image/svg+xml + + + + + + + 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 @@ + + + + + + image/svg+xml + + + + + + + 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)