Skip to content

Commit

Permalink
Version 0.1
Browse files Browse the repository at this point in the history
  • Loading branch information
niutech committed Jul 10, 2022
0 parents commit 9fc1b10
Show file tree
Hide file tree
Showing 105 changed files with 28,007 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*.pro.user
*.dll
32 changes: 32 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
Split Browser
=============

Split Browser is a minimalistic, ultra-lightweight, open source web browser for desktop, based on [WebKit](https://webkit.org/) (provided by [Playwright](https://playwright.dev/)), [Ultralight](https://ultralig.ht/) and a native [webview](https://webview.dev/) (WebKit on macOS, WebKitGTK on Linux, Edge WebView2 on Windows), with split screen (tiled) view, made with [Qt](https://www.qt.io/).

![Split Browser](https://i.ibb.co/rcXz8Yd/Split-Browser.webp)

Every variant of Split Browser (WebKit, Ultralight, native webview) uses <100 MB of RAM to show the home page, which is much less than Chrome/Firefox/Edge. It also allows you to tile web pages side-by-side by dragging and dropping tabs.

Split Browser is in the alpha stage and provides only basic web browsing features, but no bookmarks, no history, no extensions, no advanced settings.

## Download

You can download the latest binary for Windows in the [releases](https://github.com/niutech/splitbrowser/releases). Keep in mind, this is an alpha version, so use at your own risk!

## Build

This project is being developed on Windows 10 using Qt 5.14, MSVC 2017 and qmake, but it should also run on Linux and macOS, provided that you have downloaded the lastest [Ultralight SDK](https://github.com/ultralight-ux/Ultralight#getting-the-latest-sdk) and [Playwright WebKit binaries](https://github.com/microsoft/playwright) for your platform. Extract them to folders: `../ultralight` and `../webkit` relative to `splitbrowser`, open this project in Qt Creator and run it.

## Contribute

Contributions are welcome!

## License

Split Browser &copy; 2022 Jerzy Głowacki under MIT License.

Ultralight &copy; 2022 Ultralight Inc. under [Ultralight Free License Agreement](https://github.com/ultralight-ux/Ultralight/blob/master/license/LICENSE.txt).

Playwright &copy; 2022 Microsoft Corp. under Apache 2.0 License.

Webview &copy; 2022 Serge Zaitsev et. al. under MIT license.
Binary file added WebView2Loader.dll
Binary file not shown.
Binary file added WebView2Loader.lib
Binary file not shown.
118 changes: 118 additions & 0 deletions ads/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
cmake_minimum_required(VERSION 3.5)
project(QtAdvancedDockingSystem LANGUAGES CXX VERSION ${VERSION_SHORT})
find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} 5.5 COMPONENTS Core Gui Widgets REQUIRED)
if (UNIX AND NOT APPLE)
include_directories(${Qt${QT_VERSION_MAJOR}Gui_PRIVATE_INCLUDE_DIRS})
endif()
set(CMAKE_INCLUDE_CURRENT_DIR ON)
if(BUILD_STATIC)
set(CMAKE_STATIC_LIBRARY_SUFFIX "_static${CMAKE_STATIC_LIBRARY_SUFFIX}")
endif()
set(ads_SRCS
ads_globals.cpp
DockAreaTabBar.cpp
DockAreaTitleBar.cpp
DockAreaWidget.cpp
DockContainerWidget.cpp
DockManager.cpp
DockOverlay.cpp
DockSplitter.cpp
DockWidget.cpp
DockWidgetTab.cpp
DockingStateReader.cpp
DockFocusController.cpp
ElidingLabel.cpp
FloatingDockContainer.cpp
FloatingDragPreview.cpp
IconProvider.cpp
DockComponentsFactory.cpp
ads.qrc
)
set(ads_HEADERS
ads_globals.h
DockAreaTabBar.h
DockAreaTitleBar.h
DockAreaTitleBar_p.h
DockAreaWidget.h
DockContainerWidget.h
DockManager.h
DockOverlay.h
DockSplitter.h
DockWidget.h
DockWidgetTab.h
DockingStateReader.h
DockFocusController.h
ElidingLabel.h
FloatingDockContainer.h
FloatingDragPreview.h
IconProvider.h
DockComponentsFactory.h
)
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
if (UNIX AND NOT APPLE)
set(ads_SRCS linux/FloatingWidgetTitleBar.cpp ${ads_SRCS})
set(ads_HEADERS linux/FloatingWidgetTitleBar.h ${ads_HEADERS})
endif()
if(BUILD_STATIC)
add_library(qtadvanceddocking STATIC ${ads_SRCS} ${ads_HEADERS})
target_compile_definitions(qtadvanceddocking PUBLIC ADS_STATIC)
else()
add_library(qtadvanceddocking SHARED ${ads_SRCS} ${ads_HEADERS})
target_compile_definitions(qtadvanceddocking PRIVATE ADS_SHARED_EXPORT)
endif()

add_library(ads::qtadvanceddocking ALIAS qtadvanceddocking)

target_link_libraries(qtadvanceddocking PUBLIC Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Gui
Qt${QT_VERSION_MAJOR}::Widgets)
set_target_properties(qtadvanceddocking PROPERTIES
AUTOMOC ON
AUTORCC ON
CXX_STANDARD 14
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
VERSION ${VERSION_SHORT}
EXPORT_NAME "qtadvanceddocking"
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/bin"
)
include(CMakePackageConfigHelpers)
write_basic_package_version_file(
"qtadvanceddockingConfigVersion.cmake"
VERSION ${VERSION_SHORT}
COMPATIBILITY SameMajorVersion
)
install(FILES ${ads_HEADERS}
DESTINATION include
COMPONENT headers
)
install(FILES
"${CMAKE_CURRENT_SOURCE_DIR}/../LICENSE"
"${CMAKE_CURRENT_SOURCE_DIR}/../gnu-lgpl-v2.1.md"
DESTINATION license/ads
COMPONENT license
)
install(TARGETS qtadvanceddocking
EXPORT adsTargets
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
INCLUDES DESTINATION include
)

install(EXPORT adsTargets
FILE adsTargets.cmake
NAMESPACE ads::
DESTINATION lib/cmake/qtadvanceddocking
)
install(FILES qtadvanceddockingConfig.cmake "${CMAKE_CURRENT_BINARY_DIR}/qtadvanceddockingConfigVersion.cmake"
DESTINATION lib/cmake/qtadvanceddocking
)

target_include_directories(qtadvanceddocking PUBLIC
$<INSTALL_INTERFACE:include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
)
Loading

0 comments on commit 9fc1b10

Please sign in to comment.