diff --git a/src/application.vala b/src/application.vala index 62e7e40..a083bd5 100644 --- a/src/application.vala +++ b/src/application.vala @@ -33,6 +33,12 @@ public class PipeTap.Application : Adw.Application { ); } + public override bool dbus_register (GLib.DBusConnection connection, string object_path) { + base.dbus_register (connection, object_path); + DBus.init (connection, object_path); + return true; + } + construct { ActionEntry[] action_entries = { { "about", this.on_about_action }, @@ -124,4 +130,4 @@ public class PipeTap.Application : Adw.Application { settings.apply (); this.settings.apply (); } -} \ No newline at end of file +} diff --git a/src/dbus-iface.vala b/src/dbus-iface.vala new file mode 100644 index 0000000..c1e4507 --- /dev/null +++ b/src/dbus-iface.vala @@ -0,0 +1,4 @@ +[DBus (name = "io.gitlab.nekocwd.pipetap1")] +public interface PipeTap.DBus.ServerIface : Object { + public abstract int focus { get; set; } +} diff --git a/src/dbus.vala b/src/dbus.vala new file mode 100644 index 0000000..c6b0de8 --- /dev/null +++ b/src/dbus.vala @@ -0,0 +1,14 @@ +namespace PipeTap.DBus { + public class Server : ServerIface, Object { + public int focus { + get { message ("Gett"); return Logic.find_ctrl (Logic.Ctrl.CtrlType.Focus).value; } + set { message ("Sett %d", value); Logic.find_ctrl (Logic.Ctrl.CtrlType.Focus).value = value; } + } + } + public Server server; + public void init (GLib.DBusConnection conn, string path) { + server = new Server (); + message ("DBUS connection is %snull", conn != null ? "not " : ""); + conn.register_object (path, server); + } +} diff --git a/src/meson.build b/src/meson.build index 5eaff01..10631db 100644 --- a/src/meson.build +++ b/src/meson.build @@ -7,6 +7,8 @@ pipetap_sources = [ 'gui/settings.vala', 'logic/ctrl.vala', 'logic/wireplumber.vala', + 'dbus.vala', + 'dbus-iface.vala', ] wp_api = gnome.generate_vapi( @@ -21,6 +23,7 @@ add_project_arguments(['--vapidir', meson.current_build_dir()], language: 'vala' pipetap_deps = [ config_dep, + dependency('gio-2.0'), dependency('gtk4'), dependency('libadwaita-1', version: '>= 1.4'), dependency('gtk4-layer-shell-0'),