diff --git a/build-aux/flatpak/org.gnome.Calendar.json b/build-aux/flatpak/org.gnome.Calendar.json index 8ee0cd2c..deadb32d 100644 --- a/build-aux/flatpak/org.gnome.Calendar.json +++ b/build-aux/flatpak/org.gnome.Calendar.json @@ -1,5 +1,5 @@ { - "app-id" : "org.gnome.Calendar", + "app-id" : "org.gnome.Calendar.Devel", "runtime" : "org.gnome.Platform", "runtime-version" : "master", "sdk" : "org.gnome.Sdk", @@ -178,7 +178,8 @@ } ], "config-opts" : [ - "-Dtracing=true" + "-Dtracing=true", + "-Dprofile=development" ] } ] diff --git a/data/appdata/meson.build b/data/appdata/meson.build index 68f36015..b5ee6540 100644 --- a/data/appdata/meson.build +++ b/data/appdata/meson.build @@ -1,9 +1,13 @@ -info = 'org.gnome.Calendar.appdata.xml' - -i18n.merge_file( - info, - input: 'org.gnome.Calendar.appdata.xml.in', - output: info, +appdata_conf = configuration_data() +appdata_conf.set('appid', application_id) +appdata = i18n.merge_file( + 'appdata', + input: configure_file( + input: files('org.gnome.Calendar.appdata.xml.in.in'), + output: 'org.gnome.Calendar.appdata.xml.in', + configuration: appdata_conf + ), + output: '@0@.appdata.xml'.format(application_id), po_dir: po_dir, install: true, install_dir: join_paths(calendar_datadir, 'metainfo') diff --git a/data/appdata/org.gnome.Calendar.appdata.xml.in b/data/appdata/org.gnome.Calendar.appdata.xml.in.in similarity index 99% rename from data/appdata/org.gnome.Calendar.appdata.xml.in rename to data/appdata/org.gnome.Calendar.appdata.xml.in.in index 579229d9..a1a4b374 100644 --- a/data/appdata/org.gnome.Calendar.appdata.xml.in +++ b/data/appdata/org.gnome.Calendar.appdata.xml.in.in @@ -1,7 +1,7 @@ - org.gnome.Calendar.desktop + @appid@ CC0-1.0 GPL-3.0-or-later Calendar diff --git a/data/icons/meson.build b/data/icons/meson.build index 5e2d1029..6e5ee4e2 100644 --- a/data/icons/meson.build +++ b/data/icons/meson.build @@ -1,4 +1,21 @@ -install_subdir( - 'hicolor', - install_dir: join_paths(calendar_datadir, 'icons') +symbolic_icondir = join_paths('hicolor', 'symbolic', 'apps') + +install_data( + join_paths(symbolic_icondir, 'org.gnome.Calendar-symbolic.svg'), + install_dir: join_paths( + calendar_datadir, + join_paths('icons', symbolic_icondir) + ), + rename: '@0@-symbolic.svg'.format(application_id) +) + +icondir = join_paths('hicolor', 'scalable', 'apps') + +install_data( + join_paths(icondir, 'org.gnome.Calendar.svg'), + install_dir: join_paths( + calendar_datadir, + join_paths('icons', icondir) + ), + rename: '@0@.svg'.format(application_id) ) diff --git a/data/meson.build b/data/meson.build index 4a72cd07..00482141 100644 --- a/data/meson.build +++ b/data/meson.build @@ -18,22 +18,30 @@ enums_xml = gnome.mkenums( # Desktop files # Note: This name is registered in gcal-weather-service.c. -desktop = 'org.gnome.Calendar.desktop' - -i18n.merge_file( - desktop, - type: 'desktop', - input: desktop + '.in', - output: desktop, - po_dir: po_dir, - install: true, +desktop_conf = configuration_data() +desktop_conf.set('icon', application_id) +desktop = i18n.merge_file( + type: 'desktop', + input: configure_file( + input: files('org.gnome.Calendar.desktop.in.in'), + output: 'org.gnome.Calendar.desktop.in', + configuration: desktop_conf + ), + output: '@0@.desktop'.format(application_id), + po_dir: po_dir, + install: true, install_dir: join_paths(calendar_datadir, 'applications') ) # GNOME Shell search provider -install_data( - 'org.gnome.Calendar.search-provider.ini', - install_dir: join_paths(calendar_datadir, 'gnome-shell', 'search-providers') +search_provider_conf = configuration_data() +search_provider_conf.set('appid', application_id) +search_provider_conf.set('profile', profile) +configure_file( + configuration: search_provider_conf, + input: files('org.gnome.Calendar.search-provider.ini.in'), + install_dir: join_paths(calendar_datadir, 'gnome-shell', 'search-providers'), + output: '@0@.search-provider.ini'.format(application_id) ) # GSettings schema @@ -63,13 +71,13 @@ compiled_schemas = custom_target( # DBus service files service_conf = configuration_data() +service_conf.set('appid', application_id) service_conf.set('bindir', calendar_bindir) - service = 'org.gnome.Calendar.service' configure_file( input: service + '.in', - output: service, + output: '@0@.service'.format(application_id), install: true, install_dir: join_paths(calendar_datadir, 'dbus-1', 'services'), configuration: service_conf diff --git a/data/org.gnome.Calendar.desktop.in b/data/org.gnome.Calendar.desktop.in.in similarity index 95% rename from data/org.gnome.Calendar.desktop.in rename to data/org.gnome.Calendar.desktop.in.in index 376d31c0..656f2812 100644 --- a/data/org.gnome.Calendar.desktop.in +++ b/data/org.gnome.Calendar.desktop.in.in @@ -3,7 +3,7 @@ Name=Calendar Comment=Access and manage your calendars Exec=gnome-calendar # Translators: Do NOT translate or transliterate this text (this is an icon file name)! -Icon=org.gnome.Calendar +Icon=@icon@ Terminal=false Type=Application StartupNotify=true diff --git a/data/org.gnome.Calendar.search-provider.ini b/data/org.gnome.Calendar.search-provider.ini deleted file mode 100644 index b81555e5..00000000 --- a/data/org.gnome.Calendar.search-provider.ini +++ /dev/null @@ -1,6 +0,0 @@ -[Shell Search Provider] -Icon=gnome-calendar -DesktopId=org.gnome.Calendar.desktop -BusName=org.gnome.Calendar -ObjectPath=/org/gnome/Calendar/SearchProvider -Version=2 diff --git a/data/org.gnome.Calendar.search-provider.ini.in b/data/org.gnome.Calendar.search-provider.ini.in new file mode 100644 index 00000000..3db030db --- /dev/null +++ b/data/org.gnome.Calendar.search-provider.ini.in @@ -0,0 +1,6 @@ +[Shell Search Provider] +Icon=gnome-calendar +DesktopId=@appid@.desktop +BusName=@appid@ +ObjectPath=/org/gnome/Calendar@profile@/SearchProvider +Version=2 diff --git a/data/org.gnome.Calendar.service.in b/data/org.gnome.Calendar.service.in index f3134612..70fbdd84 100644 --- a/data/org.gnome.Calendar.service.in +++ b/data/org.gnome.Calendar.service.in @@ -1,3 +1,3 @@ [D-BUS Service] -Name=org.gnome.Calendar +Name=@appid@ Exec=@bindir@/gnome-calendar --gapplication-service diff --git a/meson.build b/meson.build index d7684a0b..77d01ad6 100644 --- a/meson.build +++ b/meson.build @@ -34,6 +34,18 @@ calendar_schemadir = join_paths(calendar_datadir, 'glib-2.0', 'schemas') # Options # ########### +rev_txt = run_command('git','rev-parse','--short','HEAD').stdout().strip() +if get_option('profile') == 'development' + profile = 'Devel' + name_suffix = ' (Development)' + rev = '-@0@'.format(rev_txt) +else + profile = '' + name_suffix = '' + rev = '' +endif + +application_id = 'org.gnome.Calendar.@0@'.format(profile) calendar_buildtype = get_option('buildtype') calendar_debug = calendar_minor_version.is_odd() or calendar_buildtype.contains('debug') enable_tracing = get_option('tracing') @@ -52,9 +64,12 @@ set_defines = [ ['PACKAGE_STRING', '@0@ @1@'.format(meson.project_name(), calendar_version)], ['PACKAGE_TARNAME', meson.project_name()], ['PACKAGE_URL', 'https://wiki.gnome.org/Apps/Calendar'], - ['PACKAGE_VERSION', calendar_version], - ['VERSION', calendar_version], - ['GETTEXT_PACKAGE', meson.project_name()] + ['PACKAGE_VERSION', calendar_version + rev], + ['VERSION', calendar_version + rev], + ['GETTEXT_PACKAGE', meson.project_name()], + ['PROFILE', profile], + ['NAME_SUFFIX', name_suffix], + ['APPLICATION_ID', application_id] ] foreach define: set_defines diff --git a/meson_options.txt b/meson_options.txt index 9dea77e6..70f70509 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -1 +1,2 @@ option('tracing', type: 'boolean', value: false, description: 'add extra debugging information') +option('profile', type: 'combo', choices: ['default', 'development'], value: 'default') diff --git a/src/gui/gcal-application.c b/src/gui/gcal-application.c index a8cb2da9..6d493ed1 100644 --- a/src/gui/gcal-application.c +++ b/src/gui/gcal-application.c @@ -254,6 +254,7 @@ gcal_application_show_about (GSimpleAction *simple, GcalApplication *self; GtkWidget *dialog; GtkLabel *copyright_label; + g_autofree gchar *program_name = NULL; g_autofree gchar *copyright = NULL; const gchar *authors[] = { @@ -273,16 +274,17 @@ gcal_application_show_about (GSimpleAction *simple, self = GCAL_APPLICATION (user_data); + program_name = g_strconcat (_("Calendar"), NAME_SUFFIX, NULL); dialog = g_object_new (GTK_TYPE_ABOUT_DIALOG, "transient-for", GTK_WINDOW (self->window), "modal", TRUE, "destroy-with-parent", TRUE, - "program-name", _("Calendar"), + "program-name", program_name, "version", VERSION, "license-type", GTK_LICENSE_GPL_3_0, "authors", authors, "artists", artists, - "logo-icon-name", "org.gnome.Calendar", + "logo-icon-name", APPLICATION_ID, "translator-credits", _("translator-credits"), NULL); @@ -425,7 +427,7 @@ gcal_application_startup (GApplication *app) self = GCAL_APPLICATION (app); - gtk_window_set_default_icon_name ("org.gnome.Calendar"); + gtk_window_set_default_icon_name (APPLICATION_ID); /* add actions */ g_action_map_add_action_entries (G_ACTION_MAP (app), @@ -541,7 +543,7 @@ gcal_application_dbus_register (GApplication *application, if (!G_APPLICATION_CLASS (gcal_application_parent_class)->dbus_register (application, connection, object_path, error)) GCAL_RETURN (FALSE); - search_provider_path = g_strconcat (object_path, "/SearchProvider", NULL); + search_provider_path = g_strconcat (object_path, PROFILE, "/SearchProvider", NULL); if (!gcal_shell_search_provider_dbus_export (self->search_provider, connection, search_provider_path, error)) GCAL_RETURN (FALSE); @@ -627,7 +629,7 @@ gcal_application_new (void) { return g_object_new (gcal_application_get_type (), "resource-base-path", "/org/gnome/calendar", - "application-id", "org.gnome.Calendar", + "application-id", APPLICATION_ID, "flags", G_APPLICATION_HANDLES_COMMAND_LINE, NULL); } diff --git a/src/weather/gcal-weather-service.c b/src/weather/gcal-weather-service.c index 994b7654..e232d823 100644 --- a/src/weather/gcal-weather-service.c +++ b/src/weather/gcal-weather-service.c @@ -18,13 +18,12 @@ #define G_LOG_DOMAIN "GcalWeatherService" -#define DESKTOP_FILE_NAME "org.gnome.Calendar" - #include #include #include #include +#include "config.h" #include "gcal-debug.h" #include "gcal-timer.h" #include "gcal-weather-service.h" @@ -1118,7 +1117,7 @@ gcal_weather_service_run (GcalWeatherService *self, g_cancellable_cancel (self->location_cancellable); g_cancellable_reset (self->location_cancellable); - gclue_simple_new (DESKTOP_FILE_NAME, + gclue_simple_new (APPLICATION_ID, GCLUE_ACCURACY_LEVEL_EXACT, self->location_cancellable, (GAsyncReadyCallback) on_gclue_simple_creation_cb,