diff options
| author | Akshay Nair <phenax5@gmail.com> | 2025-03-07 23:41:37 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2025-03-07 23:41:37 +0530 |
| commit | 4ce5d59c41d4217f02e6f84c6e531fbc4ee20122 (patch) | |
| tree | 6821ee74a348c65724bd83ee8fecf7fb43e295b7 | |
| parent | d7b0739cca80d0af95367e801972d10e3ea859db (diff) | |
| download | null-browser-4ce5d59c41d4217f02e6f84c6e531fbc4ee20122.tar.gz null-browser-4ce5d59c41d4217f02e6f84c6e531fbc4ee20122.zip | |
Simple qtwebengine view
| -rw-r--r-- | CMakeLists.txt | 15 | ||||
| -rw-r--r-- | Makefile | 19 | ||||
| -rw-r--r-- | flake.nix | 12 | ||||
| -rw-r--r-- | src/main.cpp | 8 | ||||
| -rw-r--r-- | src/play.cpp.old | 62 |
5 files changed, 102 insertions, 14 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 96fa737..d3f001a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,11 +2,18 @@ cmake_minimum_required(VERSION 3.16) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) project(web-browser - VERSION 0.0.0 - LANGUAGES CXX) + VERSION 0.0.0) + +set(CMAKE_CXX_STANDARD 17) + +# add_definitions(-DCEF_USE_QT_EVENT_LOOP) + +# set(CEF_PACKAGE_PATH "$ENV{CEF_PACKAGE_PATH}") +# message(STATUS "CEF path: ${CEF_PACKAGE_PATH}") +# include_directories(${CEF_PACKAGE_PATH} ${CEF_PACKAGE_PATH}/include) +# link_directories(${CEF_PACKAGE_PATH}/lib) find_package(Qt6 REQUIRED COMPONENTS Widgets WebEngineWidgets) add_executable(web-browser src/main.cpp) - -target_link_libraries(web-browser Qt6::Widgets Qt6::WebEngineWidgets) +target_link_libraries(web-browser Qt6::Widgets Qt6::WebEngineWidgets cef cef_dll_wrapper) @@ -1,8 +1,19 @@ +.PHONY: clean build + +all: build -.PHONY: build build: - mkdir -p build - cd build/ && cmake .. - cd build/ && make + @mkdir -p build + @cd build/ && cmake .. && make + # cp --no-preserve=mode,ownership -r ${CEF_PACKAGE_PATH}/lib/* ./build/lib/ + # cp --no-preserve=mode,ownership -r ${CEF_PACKAGE_PATH}/share/cef/* ./build/lib/ cp build/compile_commands.json . +clean: + rm -rf build/ + rm -f compile_commands.json + +run: + ./build/web-browser + +# -DCMAKE_BUILD_TYPE=Release @@ -7,13 +7,21 @@ outputs = { self, nixpkgs, flake-utils, ... }: let shell = { pkgs, ... }: - pkgs.mkShell { + pkgs.mkShell rec { buildInputs = with pkgs; [ cmake gnumake - pkgs.qt6.full + pkg-config clang-tools + + pkgs.qt6.full + # libcef + # nss ]; + nativeBuildInputs = []; + + # CEF_PACKAGE_PATH = "${pkgs.libcef}"; + LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath (buildInputs ++ nativeBuildInputs)}"; }; in flake-utils.lib.eachDefaultSystem (system: let diff --git a/src/main.cpp b/src/main.cpp index 275bed6..03bc7c2 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -6,12 +6,12 @@ int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget mainWindow; - mainWindow.setWindowTitle("Qt6 WebEngine"); + mainWindow.setWindowTitle("web-browser"); - QVBoxLayout *layout = new QVBoxLayout(&mainWindow); - QWebEngineView *view = new QWebEngineView(); + auto layout = new QVBoxLayout(&mainWindow); + auto view = new QWebEngineView(); view->setFixedSize(400, 400); - view->setUrl(QUrl("https://www.qt.io")); + view->setUrl(QUrl("https://ediblemonad.dev")); layout->addWidget(view); mainWindow.show(); diff --git a/src/play.cpp.old b/src/play.cpp.old new file mode 100644 index 0000000..4a61043 --- /dev/null +++ b/src/play.cpp.old @@ -0,0 +1,62 @@ +#include <QApplication> +#include <QVBoxLayout> +#include <QWidget> +#include <cef_app.h> +#include <cef_browser.h> +#include <cef_client.h> +#include <internal/cef_string.h> +#include <iostream> +#include <ostream> + +class CEFWidget : public QWidget { +public: + explicit CEFWidget(QWidget *parent = nullptr) : QWidget(parent) { + setFixedSize(400, 400); + + // TODO: Args + char *argv[] = {}; + int argc = 0; + + std::cout << "ficlk" << std::endl; + + // Create browser + CefWindowInfo window_info; + CefBrowserSettings browser_settings; + window_info.SetAsChild(winId(), {0, 0, 400, 400}); + CefBrowserHost::CreateBrowser(window_info, nullptr, "https://www.qt.io", + browser_settings, nullptr, nullptr); + } + + ~CEFWidget() { CefShutdown(); } +}; + +int main(int argc, char *argv[]) { + CefMainArgs main_args(argc, argv); + CefRefPtr<CefApp> cefApp; + int exit_code = CefExecuteProcess(main_args, cefApp, nullptr); + if (exit_code >= 0) { + return exit_code; + } + + CefMainArgs args(argc, argv); + CefSettings settings; + CefString(&settings.resources_dir_path) + .FromWString(L"/home/imsohexy/dev/projects/web-browser/build/lib/"); + CefString(&settings.locales_dir_path) + .FromWString( + L"/home/imsohexy/dev/projects/web-browser/build/lib/locales/"); + CefString(&settings.root_cache_path) + .FromWString(L"/home/imsohexy/dev/projects/web-browser/.cache/cef"); + settings.no_sandbox = true; + settings.pack_loading_disabled = true; + CefInitialize(args, settings, nullptr, nullptr); + + QApplication app(argc, argv); + QWidget mainWindow; + mainWindow.setWindowTitle("web-browser"); + QVBoxLayout layout(&mainWindow); + // CEFWidget cefWidget(&mainWindow); + // layout.addWidget(&cefWidget); + mainWindow.show(); + return app.exec(); +} |
