Online is Real
** NOT READY FOR USE. PRE-ALPHA **
TurtleBrowser is intended to become a full featured browser on at least Linux, MacOS, Windows, iOS and Android. Currently it should build on Linux, MacOS and Windows.
The foundation will be: privacy, security, user is the customer, open source, data minimization
-
WebView updating: The browser needs to follow the upstream webview releases, on platforms where this likely will be the platform webview this is not an issue (iOS and Android), but on desktop the QtWebEngine is probably too far behind Chromium/Blink to be considered secure. An update process needs to be in place that is "lightweight" enough to be preformed every month more or less.
-
Sandboxing: It is unclear how well the Chromium sandbox works on the different platforms.
-
Diverse browser space: Chromium/Blink is dominating the browser space and that makes a web designed by an ad company. Google needs the web, but their incentives might not always align with the end user. More competition would probably be healthier than what we have today. It would be good to try to support another WebView implementation (Servo or WebKit?)
The goal is to use Qt WebView as the abstraction for the webview, on iOS and Android it will wrap the platform webview, on Linux, MacOS and Windows it will be powered by QtWebEngine, at least initially. Issue 11: Make a Proof of Concept Servo implementation of QtWebView is looking to investigate making an alternative implementation of Qt WebView using Servo.
Qt WebView provides a way to display web content in a QML application without necessarily including a full web browser stack by using native APIs where it makes sense.
This is useful on mobile platforms such as Android, iOS, and UWP (Universal Windows Platform); especially on iOS, where policy dictates that all web content is displayed using the operating system's web view.
On Windows, Linux, and macOS, Qt WebView depends on the Qt WebEngine module to render content.
Tracked in issue 16
Using Qt and Chromium comes with a wide range of licences that all have to be taken into account. Not exactly sure what that means for TurtleBrowser yet.
Icons: Material icons licence: Apache license version 2.0
Contributions: "inbound=outbound"
https://wiki.qt.io/Building_Qt_5_from_Git
Clone the appropriate branch of conan-cache-turtlebrowser according to the instructions here.
Configuration:
[settings]
arch=x86_64
arch_build=x86_64
build_type=Release
compiler=Visual Studio
compiler.runtime=MD
compiler.version=16
os=Windows
os_build=Windows
[options]
[build_requires]
[env]
Configuration:
[settings]
arch=x86_64
arch_build=x86_64
build_type=Release
compiler=gcc
compiler.libcxx=libstdc++11
compiler.version=7
os=Linux
os_build=Linux
[options]
[build_requires]
[env]
Use the script in conan-cache
./update_cache_windows.sh <path to TurtleBrowser checkout>
Use the script in conan-cache
./update_cache_linux.sh <path to TurtleBrowser checkout>
- Conan needs Python 3 - so make sure to install it with pip3
- Chromium needs Python greater than equal to 2.7.5 and less than 3
- Chromium generates very long filenames/paths - put .conan at the root of the filesystem [https://docs.conan.io/en/latest/mastering/custom_cache.html]
- git config --system core.longpaths true (probably not needed)
$ pip3 install conan --upgrade
$ python --version
Python 2.7.17
$ sudo pip3 install conan --upgrade
$ python --version
Python 2.7.17
$ export CONAN_USER_HOME=/Code/
$ conan remote add bincrafters https://api.bintray.com/conan/bincrafters/public-conan
$ conan install . -s build_type=Debug -s compiler=gcc -s compiler.version=7 -s compiler.libcxx=libstdc++11 -g=cmake --build=missing
See Qt dependencies for help in what you need to build Qt
sudo apt-get install libxcb-xinput0 xorg-dev libxcb-render-util0-dev libxcb-xkb-dev libxcb-icccm4-dev libxcb-keysyms1-dev libxcb-xinerama0-dev
If you need to test conan-qt changes locally.
conan export /path/to/conan-qt qt/5.15.0@user/channel
- Options for palette, syntax
- Options for font
- QT_QUICK_CONTROLS_IMAGINE_PATH=imagine-assets
- Command line: ./app -style material
- Environment: QT_QUICK_CONTROLS_STYLE=universal ./app
- Icon Themes