aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2025-04-05 10:33:38 +0530
committerAkshay Nair <phenax5@gmail.com>2025-04-05 10:34:22 +0530
commit7e09b35b008f58809ac56184a4f83ab875c038e0 (patch)
tree3f7acdb64d2b063760fa22529826aa418e249750 /src/main.cpp
parent8eda8343757b2161535388387b0525e0fd56f569 (diff)
downloadnull-browser-7e09b35b008f58809ac56184a4f83ab875c038e0.tar.gz
null-browser-7e09b35b008f58809ac56184a4f83ab875c038e0.zip
Add instance manager for enforcing single instance
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp54
1 files changed, 51 insertions, 3 deletions
diff --git a/src/main.cpp b/src/main.cpp
index d5ab486..ac0cedd 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1,13 +1,61 @@
#include <QApplication>
+#include "InstanceManager.hpp"
+#include "LuaRuntime.hpp"
+#include "WindowActionRouter.hpp"
#include "widgets/BrowserApp.hpp"
+QCommandLineParser *create_cli_parser() {
+ auto *parser = new QCommandLineParser();
+ parser->setApplicationDescription("null-browser");
+ parser->addHelpOption();
+ parser->addVersionOption();
+ parser->addPositionalArgument("url", "URL(s) to open", "[url]");
+ parser->addOptions({
+ {{"e", "expr"}, "Lua expression to execute", "lua"},
+ });
+
+ return parser;
+}
+
int main(int argc, char *argv[]) {
const QApplication app(argc, argv);
+ QApplication::setApplicationName("null-browser");
+ QApplication::setApplicationVersion("0.0.0");
+
+ auto *parser = create_cli_parser();
+ parser->process(app);
+
+ InstanceManager instance_manager;
+ if (instance_manager.is_server()) {
+ auto *browser = new BrowserApp;
+ browser->create_window();
+
+ auto &lua = LuaRuntime::instance();
+ QObject::connect(&instance_manager, &InstanceManager::lua_eval_requested,
+ &lua, &LuaRuntime::evaluate);
+ QObject::connect(&instance_manager, &InstanceManager::urls_open_requested,
+ &lua, [browser](const QStringList &urls) {
+ qDebug() << urls;
+ browser->create_window(urls);
+ });
+ } else {
+ qInfo() << "Using current instance";
+
+ auto urls = parser->positionalArguments();
+ auto lua_expr = parser->value("expr");
+ qDebug() << urls;
+ qDebug() << lua_expr;
+
+ if (!urls.isEmpty() || lua_expr.isEmpty())
+ instance_manager.write_open_urls_to_socket(urls);
+
+ if (!lua_expr.isEmpty())
+ instance_manager.write_lua_expr_to_socket(lua_expr);
- BrowserApp browser;
- browser.create_window();
- // browser.create_window();
+ instance_manager.send_message();
+ return 0;
+ }
return QApplication::exec();
}