From 09a14c12706422f4f4d35c1190f1522918452d9c Mon Sep 17 00:00:00 2001 From: Zander Brown Date: Sat, 14 Jul 2018 17:23:19 +0100 Subject: [PATCH 1/3] Delay showing window until ::activate Bit of a hack as we are still creating the window in ::startup but it's good compromise Pass the arguments to GApplication so we can be launched as a service --- hammond-gtk/src/app.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/hammond-gtk/src/app.rs b/hammond-gtk/src/app.rs index 6cc56d6..2b67c46 100644 --- a/hammond-gtk/src/app.rs +++ b/hammond-gtk/src/app.rs @@ -20,6 +20,7 @@ use widgets::appnotif::{InAppNotification, UndoState}; use widgets::player; use widgets::{about_dialog, mark_all_notif, remove_show_notif}; +use std::env; use std::rc::Rc; use std::sync::Arc; @@ -78,9 +79,8 @@ impl App { let window = gtk::ApplicationWindow::new(application); window.set_title("Hammond"); - window.connect_delete_event(clone!(application, settings => move |window, _| { + window.connect_delete_event(clone!(settings => move |window, _| { WindowGeometry::from_window(&window).write(&settings); - application.quit(); Inhibit(false) })); @@ -285,8 +285,12 @@ impl App { info!("CONNECT STARTUP RUN"); let app = Self::new(&application); Self::init(&app); - app.window.show_all(); - app.window.activate(); + info!("Init complete"); + application.connect_activate(clone!(app => move |_| { + info!("GApplication::activate"); + app.window.show_all(); + app.window.activate(); + })); })); // Weird magic I copy-pasted that sets the Application Name in the Shell. @@ -294,6 +298,8 @@ impl App { glib::set_prgname(Some("Hammond")); // We need out own org.gnome.Hammon icon gtk::Window::set_default_icon_name("multimedia-player"); - ApplicationExtManual::run(&application, &[]); + let args: Vec = env::args().collect(); + ApplicationExtManual::run(&application, &args); } } + From a69254612c46a909e9f0788521d38d8e6b6b44c8 Mon Sep 17 00:00:00 2001 From: Zander Brown Date: Sat, 14 Jul 2018 17:47:49 +0100 Subject: [PATCH 2/3] Install as a DBus service --- hammond-gtk/resources/meson.build | 9 ++++++++- hammond-gtk/resources/org.gnome.Hammond.desktop | 1 + hammond-gtk/resources/org.gnome.Hammond.service.in | 3 +++ meson.build | 5 ++++- 4 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 hammond-gtk/resources/org.gnome.Hammond.service.in diff --git a/hammond-gtk/resources/meson.build b/hammond-gtk/resources/meson.build index 3904700..99253a6 100644 --- a/hammond-gtk/resources/meson.build +++ b/hammond-gtk/resources/meson.build @@ -3,4 +3,11 @@ install_data('org.gnome.Hammond.desktop', install_dir : datadir + '/applications') install_data('org.gnome.Hammond.appdata.xml', install_dir : datadir + '/appdata') install_data('org.gnome.Hammond.gschema.xml', install_dir: join_paths(datadir, 'glib-2.0', 'schemas')) -meson.add_install_script('../../scripts/compile-gschema.py') \ No newline at end of file + + +configure_file(input: 'org.gnome.Hammond.service.in', + output: 'org.gnome.Hammond.service', + configuration: hammond_conf, + install_dir: join_paths([datadir,'dbus-1/services'])) + +meson.add_install_script('../../scripts/compile-gschema.py') diff --git a/hammond-gtk/resources/org.gnome.Hammond.desktop b/hammond-gtk/resources/org.gnome.Hammond.desktop index 829c093..17b3641 100644 --- a/hammond-gtk/resources/org.gnome.Hammond.desktop +++ b/hammond-gtk/resources/org.gnome.Hammond.desktop @@ -9,3 +9,4 @@ Type=Application StartupNotify=true Categories=AudioVideo;Audio;Video; Keywords=Podcast +DBusActivatable=true diff --git a/hammond-gtk/resources/org.gnome.Hammond.service.in b/hammond-gtk/resources/org.gnome.Hammond.service.in new file mode 100644 index 0000000..7b23700 --- /dev/null +++ b/hammond-gtk/resources/org.gnome.Hammond.service.in @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.gnome.Hammond +Exec=@BINDIR@/hammond --gapplication-service \ No newline at end of file diff --git a/meson.build b/meson.build index e9bb1fa..6428c59 100644 --- a/meson.build +++ b/meson.build @@ -16,6 +16,9 @@ hammond_version_micro = version_array[2].to_int() hammond_prefix = get_option('prefix') hammond_bindir = join_paths(hammond_prefix, get_option('bindir')) +hammond_conf = configuration_data() +hammond_conf.set('BINDIR', hammond_bindir) + datadir = get_option('datadir') icondir = join_paths(datadir, 'icons') subdir('hammond-gtk/resources') @@ -35,4 +38,4 @@ cargo_release = custom_target('cargo-build', run_target('release', command: ['scripts/release.sh', meson.project_name() + '-' + hammond_version - ]) \ No newline at end of file + ]) From 2d4053c792af6a8c88e2b4576713c001d2418476 Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Sun, 15 Jul 2018 22:20:45 +0300 Subject: [PATCH 3/3] cargo fmt --- hammond-gtk/src/app.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/hammond-gtk/src/app.rs b/hammond-gtk/src/app.rs index 2b67c46..80e1ae9 100644 --- a/hammond-gtk/src/app.rs +++ b/hammond-gtk/src/app.rs @@ -302,4 +302,3 @@ impl App { ApplicationExtManual::run(&application, &args); } } -