aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt15
-rw-r--r--Makefile19
-rw-r--r--flake.nix12
-rw-r--r--src/main.cpp8
-rw-r--r--src/play.cpp.old62
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)
diff --git a/Makefile b/Makefile
index 5f2da78..dd82ce3 100644
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/flake.nix b/flake.nix
index 7581784..1b9f0bb 100644
--- a/flake.nix
+++ b/flake.nix
@@ -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();
+}