Git Product home page Git Product logo

browser's Introduction

Liri Browser

License GitHub release GitHub issues Snap Status CI

A cross-platform Material Design web browser.

Dependencies

Qt >= 5.10.0 with at least the following modules is required:

The following modules and their dependencies are required:

Installation

mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/path/to/prefix ..
make
make install # use sudo if necessary

Replace /path/to/prefix to your installation prefix. Default is /usr/local.

You can also append the following options to the cmake command:

  • -DBROWSER_WITH_FLUID:BOOL=ON: Build with a local copy of the Fluid sources.

Documentation

Find more information in the Liri Browser documentation.

Credits

Many thanks to ...

Please refer to AUTHORS.md for a list of everyone who directly contributed code via Git.

Licensing

Contains the QtSingleApplication (see the 3rdparty/qtsingleapplication folder) module which is licensed under the 3-clause BSD license (see LICENSE.BSD).

Liri Browser is licensed under the terms of the GNU General Public License version 3 or, at your option, any later version.

browser's People

Contributors

fedya avatar liri-ci avatar plfiorini avatar poisonousjohn avatar probonopd avatar timsueberkrueb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

browser's Issues

Support Ubuntu Touch

Hello,
I know that at one point there was a preview release of Liri web browser for Ubuntu Touch and I wonder how hard would it be to support it again?

It seems that based on some internal UBports discussions the current system web browser wont receive much updates since Oxide is no longer developed and is missing maintainers. The talks are to utilize some other web browser amongst them Liri is one of the few feasible candidates.

So I guess my question is what would be necessary to change in Liri to run on Ubuntu Touch again?

Thank you very much for you answers :).

"SlimeEngine" is not installed ——archlinux

QQmlApplicationEngine failed to load component
qrc:/ui/Main.qml:25 module "SlimeEngine" is not installed

Using QtWebEngine
fish: './liri-browser' terminated by signal SIGSEGV (Address boundary error)

Open with url argument

  • Accept multiple urls as comand line argument
  • Local socket -> forward to already running instance

Refactor BrowserWindow layout

  • Drop DockCanvas
  • Elevate toolbar/expansion bar By design: won't be elevated
  • New search bar
  • Denser layout
  • Improve Material Design compliance

Dashboard

It would be nice to have a dashboard as optional homepage (liri://dash).

Thinks to consider:

  • Extensions support
  • Background
  • Search field

Consider providing an AppImage

As suggested by @probonopd we should consider to provide AppImage packages.

Living list of things to think about:

  • Automatic builds?

I haven't looked into AppImage yet, contributions are very welcome!


Would you be interested in an AppImage? Shouldn't be too hard using linuxdeployqt. Let me know if you'd like help.

Providing an AppImage would have, among others, these advantages:

  • Works for most Linux distributions (including Ubuntu, Fedora, openSUSE, CentOS, elementaryOS, Linux Mint, and others)
  • One app = one file = super simple for users: just download one AppImage file, make it executable, and run
  • No unpacking or installation necessary
  • No root needed
  • No system libraries changed
  • Just one format for all major distributions
  • Works out of the box, no installation of runtimes needed (unlike Snap and Flatpak)
  • Optional desktop integration with appimaged
  • Optional binary delta updates, e.g., for continuous builds (only download the binary diff) using AppImageUpdate
  • Can optionally GPG2-sign your AppImages (inside the file)
  • Works on Live ISOs (unlike Flatpak)
  • Can use the same AppImages when dual-booting multiple distributions

Here is an overview of projects that are already distributing upstream-provided, official AppImages.


@probonopd's comment

Extensions support

Support extensions, both declarative and script-based.

This was split up in the following milestones:

1. Base

Declarative:

  • Search engines
  • Themes

TODO:

  • Improve error handling (e.g. in extensionparser.cpp)
  • Static field naming (e.g. search.query in searchprovider.cpp
    Use $[search.query] or something like this instead to make clear it's a field not a value?
  • Fall back to default if other extension doesn't exist anymore
  • Search engines: support hash-bang urls like https://peekier.com/#!search query

2. Scripting

Dynamic:

  • Omnibar plugins (omniplets)

3. GUI

For discussion:

  • How should users create/search/install extensions?

Add Startpage.com to search pages

As the Liri Browser promotes its privacy, startpage.com should be added as one of the search pages delivered with installation. (IMHO) Startpage is one of the leading services in protecting the privacy of people. 👍

Incompatibility with latest Fluid changes

After installing liri-browser through the arch user repository, I get the following error when I try to start liri-browser:

QQmlApplicationEngine failed to load component
qrc:/ui/Main.qml:48 Type BrowserWindow unavailable
qrc:/ui/window/BrowserWindow.qml:390 Type DrawerDownloadsContent unavailable
qrc:/ui/drawer/content/downloads/DrawerDownloadsContent.qml:41 Type DownloadItemDelegate unavailable
qrc:/ui/drawer/content/downloads/DownloadItemDelegate.qml:31 BaseListItem is not a type

ASSERT failure in QList<T>::operator[]: "index out of range", file /usr/include/qt/QtCore/qlist.h, line 549
Abgebrochen (Speicherabzug geschrieben)

Then, the application exits with 134

QML import versions

QML import versions change frequently. Would it make sense to ...

  • create a script to update versions easily
  • use QtQuick 2.0 everywhere instead of QtQuick 2.X
    I'm not sure about this. What do you think?

Provide a Snap

Provide a Snap package for the browser.
Things to consider:

  • Oxide vs QtWebEngine
  • Use cloud part as reference.
  • App platform snap (like ubuntu-app-platform) with Fluid and Qt 5.8?
    • Provide standalone and version based on app platform snap?
  • Name: liri-browser vs io.liri.browser
  • Store account management

Icon

The browser needs an icon.

Adaptive Layout

Make the browser completely responsive to all form factors:

  • Mobile tabs view
  • Responsive settings

Support Windows

Hello guys, I wanted to know if you can build Liri Browser on Windows?

P.S.
It is a very interesting project.

Settings

Introduce an initial set of configuration options (e.g. search engine).
Settings should be presented as tab page with the url liri://settings.
Consider supporting sub categories like liri://settings/search-engine.
Consider to support searching through the settings.
Initial settings should include:

  • start page (default: start.liri.io, DuckDuckGo.com or Google.com)
  • search engine (default: DuckDuckGo or Google)

Can't load any web site

screenshot from 2016-10-14 00-27-16

file:///usr/lib/qt/qml/SlimeEngine/0.2/components/Wrap.qml:54: TypeError: Cannot read property 'anchors' of null
QString::arg: Argument missing: Error creating WebView engine component for WebView: , Oxide
qml: Error creating WebView engine component for WebView: 
qml: file:///usr/lib/qt/qml/SlimeEngine/0.2/engine/Oxide/WebView.qml:20 module "com.canonical.Oxide" is not installed

QQmlComponent: Component is not ready
file:///usr/lib/qt/qml/SlimeEngine/0.2/components/Wrap.qml:54: TypeError: Cannot read property 'anchors' of null
file:///usr/lib/qt/qml/SlimeEngine/0.2/wrap/WebView.qml:75: TypeError: Cannot read property 'loadStatus' of null
file:///usr/lib/qt/qml/SlimeEngine/0.2/wrap/WebView.qml:73: TypeError: Cannot read property 'isFullScreen' of null
file:///usr/lib/qt/qml/SlimeEngine/0.2/wrap/WebView.qml:76: TypeError: Cannot read property 'title' of null
file:///usr/lib/qt/qml/SlimeEngine/0.2/wrap/WebView.qml:72: TypeError: Cannot read property 'icon' of null
file:///usr/lib/qt/qml/SlimeEngine/0.2/wrap/WebView.qml:70: TypeError: Cannot read property 'canGoBack' of null
file:///usr/lib/qt/qml/SlimeEngine/0.2/wrap/WebView.qml:71: TypeError: Cannot read property 'canGoForward' of null
file:///usr/lib/qt/qml/SlimeEngine/0.2/wrap/WebView.qml:74: TypeError: Cannot read property 'loadProgress' of null

Unwanted autoplay for media

I think its very counterproductive, to start Youtube videos etc automatically, even without the tab activated.

Segfaults on exit

This might also be the reason for cookies not getting saved on exit.

gdb backtrace:

#0  0x00000000000403e8 in ?? ()
#1  0x00007fffeb42074e in QQuickWindow::mouseGrabberItem() const ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Quick.so.5
#2  0x00007fffeb422c68 in QQuickWindowPrivate::removeGrabber(QQuickItem*, bool, bool) () from /home/tim/Qt/5.9/gcc_64/lib/libQt5Quick.so.5
#3  0x00007fffeb411e3e in QQuickItemPrivate::derefWindow() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Quick.so.5
#4  0x00007fffeb412475 in QQuickItem::setParentItem(QQuickItem*) ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Quick.so.5
#5  0x00007fffeb412dbc in QQuickItem::~QQuickItem() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Quick.so.5
#6  0x00007fffbfbe9fd0 in ?? ()
   from /home/tim/Qt/5.9/gcc_64/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#7  0x00007fffbfbe7084 in ?? ()
   from /home/tim/Qt/5.9/gcc_64/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#8  0x00007ffff7938b83 in QObjectPrivate::deleteChildren() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Core.so.5
#9  0x00007ffff7942914 in QObject::~QObject() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Core.so.5
#10 0x00007fffeb412ec6 in QQuickItem::~QQuickItem() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Quick.so.5
#11 0x00007fffeb42ddbe in ?? ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Quick.so.5
---Type <return> to continue, or q <return> to quit---
#12 0x00007ffff7938b83 in QObjectPrivate::deleteChildren() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Core.so.5
#13 0x00007ffff7942914 in QObject::~QObject() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Core.so.5
#14 0x00007fffeb412ec6 in QQuickItem::~QQuickItem() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Quick.so.5
#15 0x00007fffeb42dd06 in ?? ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Quick.so.5
#16 0x00007ffff7938b83 in QObjectPrivate::deleteChildren() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Core.so.5
#17 0x00007ffff7942914 in QObject::~QObject() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Core.so.5
#18 0x00007fffeb412ec6 in QQuickItem::~QQuickItem() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Quick.so.5
#19 0x00007fffeb42e286 in ?? ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Quick.so.5
#20 0x00007ffff6be5d83 in QQmlDelegateModel::~QQmlDelegateModel() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Qml.so.5
#21 0x00007ffff6be5e69 in QQmlDelegateModel::~QQmlDelegateModel() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Qml.so.5
#22 0x00007fffeb4e1ffa in QQuickItemView::~QQuickItemView() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Quick.so.5
#23 0x00007fffeb42e0d6 in ?? ()
---Type <return> to continue, or q <return> to quit---
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Quick.so.5
#24 0x00007ffff7938b83 in QObjectPrivate::deleteChildren() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Core.so.5
#25 0x00007ffff7942914 in QObject::~QObject() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Core.so.5
#26 0x00007fffeb412ec6 in QQuickItem::~QQuickItem() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Quick.so.5
#27 0x00007fffbfbe9fd0 in ?? ()
   from /home/tim/Qt/5.9/gcc_64/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#28 0x00007fffbfbe7084 in ?? ()
   from /home/tim/Qt/5.9/gcc_64/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#29 0x00007ffff7938b83 in QObjectPrivate::deleteChildren() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Core.so.5
#30 0x00007ffff7942914 in QObject::~QObject() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Core.so.5
#31 0x00007fffeb412ec6 in QQuickItem::~QQuickItem() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Quick.so.5
#32 0x00007fffeb42dd06 in ?? ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Quick.so.5
#33 0x00007ffff7938b83 in QObjectPrivate::deleteChildren() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Core.so.5
#34 0x00007ffff7942914 in QObject::~QObject() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Core.so.5
---Type <return> to continue, or q <return> to quit---
#35 0x00007fffeb412ec6 in QQuickItem::~QQuickItem() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Quick.so.5
#36 0x00007fffbfbe9fd0 in ?? ()
   from /home/tim/Qt/5.9/gcc_64/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#37 0x00007fffbfbe7114 in ?? ()
   from /home/tim/Qt/5.9/gcc_64/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#38 0x00007ffff7938b83 in QObjectPrivate::deleteChildren() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Core.so.5
#39 0x00007ffff7942914 in QObject::~QObject() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Core.so.5
#40 0x00007fffeb412ec6 in QQuickItem::~QQuickItem() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Quick.so.5
#41 0x00007fffeb42dd06 in ?? ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Quick.so.5
#42 0x00007ffff7938b83 in QObjectPrivate::deleteChildren() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Core.so.5
#43 0x00007ffff7942914 in QObject::~QObject() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Core.so.5
#44 0x00007fffeb412ec6 in QQuickItem::~QQuickItem() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Quick.so.5
#45 0x00007fffbec9f45e in ?? ()
   from /home/tim/Qt/5.9/gcc_64/qml/QtQuick/Templates.2/libqtquicktemplates2plugin.so
---Type <return> to continue, or q <return> to quit---
#46 0x00007ffff7938b83 in QObjectPrivate::deleteChildren() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Core.so.5
#47 0x00007ffff7942914 in QObject::~QObject() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Core.so.5
#48 0x00007fffeb41fea4 in QQuickWindow::~QQuickWindow() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Quick.so.5
#49 0x00007fffbec9a411 in ?? ()
   from /home/tim/Qt/5.9/gcc_64/qml/QtQuick/Templates.2/libqtquicktemplates2plugin.so
#50 0x00007ffff7938b83 in QObjectPrivate::deleteChildren() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Core.so.5
#51 0x00007ffff7942914 in QObject::~QObject() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Core.so.5
#52 0x00007ffff6b3185b in ?? () from /home/tim/Qt/5.9/gcc_64/lib/libQt5Qml.so.5
#53 0x00007ffff6bb3f4e in QQmlApplicationEnginePrivate::cleanUp() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Qml.so.5
#54 0x00007ffff6bb3fd8 in QQmlApplicationEngine::~QQmlApplicationEngine() ()
   from /home/tim/Qt/5.9/gcc_64/lib/libQt5Qml.so.5
#55 0x000055555556c54a in main (argc=1, argv=0x7fffffffda88)
    at /home/tim/Dev/Liri/browser/src/main/main.cpp:100

Browsing history

Save the browsing history and display it in a list in the right edge drawer.
History could be internally saved as part of the settings (depends on #2) or separate.

Desktop file

Desktop file is missing.
Should be called io.liri.Browser.desktop and the appropriate QGuiApplication property should be set.

Can't open a url

After writing any url in address field Liri Browser redirects to google home page. The only way to navigate is to search teh site in Google and click in the result.

Improve logging

  • Use categories
  • Allow the user to select a logging category
  • Consider graphical log viewer for easier bug reporting (-> separate issue)

Bookmarks

Support bookmarking websites and display a list of bookmarks in the right edge drawer.
Bookmarks could be internally saved as part of the settings (depends on #2) or separate.

Incognito mode

Allow the user to create a new incognito mode window.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.