diff options
| author | Akshay Nair <phenax5@gmail.com> | 2025-04-05 10:33:38 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2025-04-05 10:34:22 +0530 |
| commit | 7e09b35b008f58809ac56184a4f83ab875c038e0 (patch) | |
| tree | 3f7acdb64d2b063760fa22529826aa418e249750 /src/main.cpp | |
| parent | 8eda8343757b2161535388387b0525e0fd56f569 (diff) | |
| download | null-browser-7e09b35b008f58809ac56184a4f83ab875c038e0.tar.gz null-browser-7e09b35b008f58809ac56184a4f83ab875c038e0.zip | |
Add instance manager for enforcing single instance
Diffstat (limited to '')
| -rw-r--r-- | src/main.cpp | 54 |
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(); } |
