24#define BSC_HAS_SDBUS 0
28#include <systemd/sd-bus.h>
60 static int sni_method_activate(sd_bus_message* m,
void* userdata, sd_bus_error* ret_error);
61 static int sni_method_context_menu(sd_bus_message* m,
void* userdata, sd_bus_error* ret_error);
62 static int sni_method_secondary_activate(sd_bus_message* m,
void* userdata, sd_bus_error* ret_error);
64 static int sni_prop_get(sd_bus* bus,
66 const char* interface,
68 sd_bus_message* reply,
70 sd_bus_error* ret_error);
71 static int dbusmenu_method_event_group(sd_bus_message* m,
void* userdata, sd_bus_error* ret_error);
72 static int dbusmenu_method_about_to_show_group(sd_bus_message* m,
void* userdata, sd_bus_error* ret_error);
73 static int dbusmenu_method_get_layout(sd_bus_message* m,
void* userdata, sd_bus_error* ret_error);
74 static int dbusmenu_method_get_children(sd_bus_message* m,
void* userdata, sd_bus_error* ret_error);
75 static int dbusmenu_method_get_group_properties(sd_bus_message* m,
void* userdata, sd_bus_error* ret_error);
76 static int dbusmenu_method_get_property(sd_bus_message* m,
void* userdata, sd_bus_error* ret_error);
77 static int dbusmenu_method_get_status(sd_bus_message* m,
void* userdata, sd_bus_error* ret_error);
79 static int dbusmenu_method_event(sd_bus_message* m,
void* userdata, sd_bus_error* ret_error);
80 static int dbusmenu_method_about_to_show(sd_bus_message* m,
void* userdata, sd_bus_error* ret_error);
82 static int dbusmenu_prop_get(sd_bus* bus,
84 const char* interface,
86 sd_bus_message* reply,
88 sd_bus_error* ret_error);
94 std::string
id_ =
"bastionguard-sc";
95 std::string
title_ =
"BastionGuard⢠Secure Connection";
97 std::string
tooltip_ =
"BastionGuard⢠Secure Connection";
99 GMainContext*
ui_ctx_ =
nullptr;
112 sd_bus* bus_ =
nullptr;
113 sd_bus_slot* sni_slot_ =
nullptr;
114 sd_bus_slot* menu_slot_ =
nullptr;
127 static std::string make_service_name();
133 bool export_objects();
134 void unexport_objects();
135 bool register_to_watcher();
139 void emit_sni_signal(
const char* signal_name);
140 void emit_dbusmenu_layout_updated();
static constexpr int MENU_ROOT
std::function< void()> on_activate_cb_
std::function< void()> on_quit_cb_
void set_on_quit(std::function< void()> cb)
void set_title(const std::string &title)
static constexpr int MENU_PERSIST_STARTUP
void set_icon(const std::string &icon_name)
std::vector< uint8_t > pix_rgba_
std::function< void()> on_make_startup_persistent_cb_
void set_on_make_startup_persistent(std::function< void()> cb)
std::string service_name_
std::atomic_bool running_
void set_icon_file(const std::string &png_path, int target_px=22)
void set_tooltip(const std::string &text)
static constexpr int MENU_QUIT
void set_on_activate(std::function< void()> cb)
static constexpr int MENU_SHOW