From 7e09b35b008f58809ac56184a4f83ab875c038e0 Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Sat, 5 Apr 2025 10:33:38 +0530 Subject: Add instance manager for enforcing single instance --- src/InstanceManager.hpp | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/InstanceManager.hpp (limited to 'src/InstanceManager.hpp') diff --git a/src/InstanceManager.hpp b/src/InstanceManager.hpp new file mode 100644 index 0000000..0ef6e08 --- /dev/null +++ b/src/InstanceManager.hpp @@ -0,0 +1,39 @@ +#pragma once + +#include +#include +#include + +#include "utils.hpp" + +class InstanceManager : public QObject { + Q_OBJECT + +public: + InstanceManager(); + ~InstanceManager() override; + void write_open_urls_to_socket(const QStringList &urls); + void write_lua_expr_to_socket(const QString &lua_expr); + void send_message(); + + DEFINE_GETTER(is_server, is_server_mode) + +signals: + void lua_eval_requested(const QString &lua_expr); + void urls_open_requested(const QStringList &urls); + +private slots: + void handle_new_connection(); + +protected: + bool try_server_connection(); + void server_init(); + +private: + QLocalServer *server = nullptr; + QLocalSocket *socket = nullptr; + bool is_server_mode = false; + + // TODO: On windows, \\.\pipe\null-browser + const char *socket_path = "/tmp/null-browser-socket.sock"; +}; -- cgit v1.3.1