Add a backend warning when using QtWebKit
This commit is contained in:
parent
4cb82af11e
commit
1c6fd6f725
@ -53,7 +53,7 @@ from qutebrowser.browser.webkit.network import networkmanager
|
|||||||
from qutebrowser.keyinput import macros
|
from qutebrowser.keyinput import macros
|
||||||
from qutebrowser.mainwindow import mainwindow, prompt
|
from qutebrowser.mainwindow import mainwindow, prompt
|
||||||
from qutebrowser.misc import (readline, ipc, savemanager, sessions,
|
from qutebrowser.misc import (readline, ipc, savemanager, sessions,
|
||||||
crashsignal, earlyinit)
|
crashsignal, earlyinit, objects)
|
||||||
from qutebrowser.misc import utilcmds # pylint: disable=unused-import
|
from qutebrowser.misc import utilcmds # pylint: disable=unused-import
|
||||||
from qutebrowser.utils import (log, version, message, utils, qtutils, urlutils,
|
from qutebrowser.utils import (log, version, message, utils, qtutils, urlutils,
|
||||||
objreg, usertypes, standarddir, error, debug)
|
objreg, usertypes, standarddir, error, debug)
|
||||||
@ -202,7 +202,7 @@ def _process_args(args):
|
|||||||
|
|
||||||
process_pos_args(args.command)
|
process_pos_args(args.command)
|
||||||
_open_startpage()
|
_open_startpage()
|
||||||
_open_quickstart(args)
|
_open_special_pages(args)
|
||||||
|
|
||||||
delta = datetime.datetime.now() - earlyinit.START_TIME
|
delta = datetime.datetime.now() - earlyinit.START_TIME
|
||||||
log.init.debug("Init finished after {}s".format(delta.total_seconds()))
|
log.init.debug("Init finished after {}s".format(delta.total_seconds()))
|
||||||
@ -319,23 +319,40 @@ def _open_startpage(win_id=None):
|
|||||||
tabbed_browser.tabopen(url)
|
tabbed_browser.tabopen(url)
|
||||||
|
|
||||||
|
|
||||||
def _open_quickstart(args):
|
def _open_special_pages(args):
|
||||||
"""Open quickstart if it's the first start.
|
"""Open special notification pages which are only shown once.
|
||||||
|
|
||||||
|
Currently this is:
|
||||||
|
- Quickstart page if it's the first start.
|
||||||
|
- Legacy QtWebKit warning if needed.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
args: The argparse namespace.
|
args: The argparse namespace.
|
||||||
"""
|
"""
|
||||||
if args.basedir is not None:
|
if args.basedir is not None:
|
||||||
# With --basedir given, don't open quickstart.
|
# With --basedir given, don't open anything.
|
||||||
return
|
return
|
||||||
|
|
||||||
state_config = objreg.get('state-config')
|
state_config = objreg.get('state-config')
|
||||||
try:
|
tabbed_browser = objreg.get('tabbed-browser', scope='window',
|
||||||
quickstart_done = state_config['general']['quickstart-done'] == '1'
|
window='last-focused')
|
||||||
except KeyError:
|
|
||||||
quickstart_done = False
|
# Legacy QtWebKit warning
|
||||||
|
|
||||||
|
needs_warning = (objects.backend == usertypes.Backend.QtWebKit and
|
||||||
|
not qtutils.is_qtwebkit_ng())
|
||||||
|
warning_shown = state_config['general'].get('backend-warning-shown') == '1'
|
||||||
|
|
||||||
|
if not warning_shown and needs_warning:
|
||||||
|
tabbed_browser.tabopen(QUrl('qute://backend-warning'),
|
||||||
|
background=False)
|
||||||
|
state_config['general']['backend-warning-shown'] = '1'
|
||||||
|
|
||||||
|
# Quickstart page
|
||||||
|
|
||||||
|
quickstart_done = state_config['general'].get('quickstart-done') == '1'
|
||||||
|
|
||||||
if not quickstart_done:
|
if not quickstart_done:
|
||||||
tabbed_browser = objreg.get('tabbed-browser', scope='window',
|
|
||||||
window='last-focused')
|
|
||||||
tabbed_browser.tabopen(
|
tabbed_browser.tabopen(
|
||||||
QUrl('https://www.qutebrowser.org/quickstart.html'))
|
QUrl('https://www.qutebrowser.org/quickstart.html'))
|
||||||
state_config['general']['quickstart-done'] = '1'
|
state_config['general']['quickstart-done'] = '1'
|
||||||
|
@ -30,6 +30,7 @@ import sys
|
|||||||
import time
|
import time
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
import datetime
|
import datetime
|
||||||
|
import pkg_resources
|
||||||
|
|
||||||
from PyQt5.QtCore import QUrlQuery, QUrl
|
from PyQt5.QtCore import QUrlQuery, QUrl
|
||||||
|
|
||||||
@ -431,3 +432,13 @@ def qute_help(url):
|
|||||||
else:
|
else:
|
||||||
data = utils.read_file(path)
|
data = utils.read_file(path)
|
||||||
return 'text/html', data
|
return 'text/html', data
|
||||||
|
|
||||||
|
|
||||||
|
@add_handler('backend-warning')
|
||||||
|
def qute_backend_warning(url):
|
||||||
|
"""Handler for qute://backend-warning."""
|
||||||
|
html = jinja.render('backend-warning.html',
|
||||||
|
distribution=version.distribution(),
|
||||||
|
Distribution=version.Distribution,
|
||||||
|
version=pkg_resources.parse_version)
|
||||||
|
return 'text/html', html
|
||||||
|
90
qutebrowser/html/backend-warning.html
Normal file
90
qutebrowser/html/backend-warning.html
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
{% extends "styled.html" %}
|
||||||
|
|
||||||
|
{% block style %}
|
||||||
|
{{super()}}
|
||||||
|
.note {
|
||||||
|
font-size: smaller;
|
||||||
|
color: grey;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mono {
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1>Legacy QtWebKit backend</h1>
|
||||||
|
|
||||||
|
<span class="note">Note this warning will only appear once. Use <span class="mono">:open
|
||||||
|
qute://backend-warning</span> to show it again at a later time.</span>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
You're using qutebrowser with the legacy QtWebKit backend. It's still the
|
||||||
|
default until a few remaining issues are sorted out. If you can, it's
|
||||||
|
strongly suggested to switch earlier, as legacy QtWebKit has known security
|
||||||
|
issues and also breaks things on various websites.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Using QtWebEngine instead</h2>
|
||||||
|
|
||||||
|
<span class="note">This is usually the better choice if you aren't using Nouveau graphics, and
|
||||||
|
don't need any features which are currently unavailable with QtWebEngine (like
|
||||||
|
the <span class="mono">qute://settings</span> page or caret browsing).</span>
|
||||||
|
|
||||||
|
{% macro install_webengine(package) -%}
|
||||||
|
You should be able to install <span class="mono">{{ package }}</span> and start qutebrowser with <span class="mono">--backend webengine</span> to use the new backend.
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{% macro please_open_issue() -%}
|
||||||
|
If you know more, please <a href="https://github.com/qutebrowser/qutebrowser/issues/new">open an issue</a>!
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
<p>
|
||||||
|
{% if distribution.parsed == Distribution.ubuntu %}
|
||||||
|
{% if distribution.version >= version('17.04') %}
|
||||||
|
{{ install_webengine('python3-pyqt5.qtwebengine') }}
|
||||||
|
{% elif distribution.version >= version('16.04') %}
|
||||||
|
QtWebEngine is only available in Ubuntu's repositories since 17.04, but you can <a href="https://github.com/qutebrowser/qutebrowser/blob/master/INSTALL.asciidoc#installing-qutebrowser-with-tox">install qutebrowser via tox</a> with <span class="mono">tox -e mkvenv-pypi</span> to use the new backend.
|
||||||
|
{% else %}
|
||||||
|
Unfortunately, no easy way is known to install QtWebEngine on Ubuntu < 16.04. {{ please_open_issue() }}
|
||||||
|
{% endif %}
|
||||||
|
{% elif distribution.parsed == Distribution.debian %}
|
||||||
|
{% if distribution.version >= version('9') %}
|
||||||
|
{{ install_webengine('python3-pyqt5.qtwebengine') }}
|
||||||
|
{% else %}
|
||||||
|
Unfortunately, no easy way is known to install QtWebEngine on Debian < 9. {{ please_open_issue() }}
|
||||||
|
{% endif %}
|
||||||
|
{% elif distribution.parsed in [Distribution.arch, Distribution.manjaro] %}
|
||||||
|
{{ install_webengine('qt5-webengine') }}
|
||||||
|
{% elif distribution.parsed == Distribution.void %}
|
||||||
|
{{ install_webengine('python-PyQt5-webengine') }}
|
||||||
|
{% elif distribution.parsed == Distribution.fedora %}
|
||||||
|
{{ install_webengine('qt5-qtwebengine') }}
|
||||||
|
{% elif distribution.parsed == Distribution.opensuse %}
|
||||||
|
{{ install_webengine('libqt5-qtwebengine') }}
|
||||||
|
{% else %}
|
||||||
|
There's no information available for your system. {{ please_open_issue() }}
|
||||||
|
{% endif %}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Using QtWebKit-NG instead</h2>
|
||||||
|
|
||||||
|
<span class="note" >This is a drop-in replacement for legacy QtWebKit. Note <b>private browsing won't work with it properly</b> until its next release.</span>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
{% if distribution.parsed == Distribution.debian and distribution.version >= version('9') %}
|
||||||
|
There are unofficial QtWebKit-NG packages <a href="http://repo.paretje.be/unstable/">available</a>.
|
||||||
|
{% elif distribution.parsed in [Distribution.ubuntu, Distribution.debian] %}
|
||||||
|
No easy way is known to install QtWebKit-NG on your system.
|
||||||
|
There are unofficial QtWebKit-NG packages <a href="http://repo.paretje.be/unstable/">available</a>, but they are intended for Debian Unstable.
|
||||||
|
{{ please_open_issue() }}
|
||||||
|
{% elif distribution.parsed in [Distribution.arch, Distribution.manjaro] %}
|
||||||
|
You should be able to install <span class="mono">qt5-webkit-ng</span> via <span class="mono">pacman</span>.
|
||||||
|
{% elif distribution.parsed == Distribution.gentoo %}
|
||||||
|
There's an unofficial <a href="https://gist.github.com/annulen/309569fb61e5d64a703c055c1e726f71">ebuild</a> available.
|
||||||
|
{% else %}
|
||||||
|
There's no information available for your system. {{ please_open_issue() }}
|
||||||
|
{% endif %}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
{% endblock %}
|
Loading…
Reference in New Issue
Block a user