Releases: qutebrowser/qutebrowser
Releases · qutebrowser/qutebrowser
v1.0.0
Major changes
- Dependency changes:
- Support for legacy QtWebKit (before 5.212 which is distributed independently from Qt) is dropped.
- Support for Python 3.4 is dropped.
- Support for Qt before 5.7.1 and PyQt before 5.7 is dropped.
- New dependency on the QtSql module and Qt sqlite support.
- New dependency on the attrs project (packaged as
python-attr
in some distributions). - The depedency on PyOpenGL (when using QtWebEngine) got removed. Note that PyQt5.QtOpenGL is still a dependency.
- PyQt5.QtOpenGL is now always required, even with QtWebKit.
- The QtWebEngine backend is now used by default. Note this means that QtWebEngine now should be a required dependency, and QtWebKit (if new enough) should be changed to an optional dependency.
- Completely rewritten configuration system which ignores the old config file. See link:qute://help/configuring.html[] for details.
- Various documentation files got moved to the doc/ subfolder;
qutebrowser.desktop
got moved to misc/. :set
now doesn't support toggling/cycling values anymore, that functionality got moved to:config-cycle
.- New completion engine based on sqlite, which allows to complete the entire browsing history. The default for
completion.web_history_max_items
got changed to-1
(unlimited). If the completion is too slow on your machine, try setting it to a few 1000 items.
Added
- QtWebEngine: Spell checking support, see the
spellcheck.languages
setting. - New
qt.args
setting to pass additional arguments to Qt/Chromium. - New
backend
setting to select the backend to use. Together with the previous setting, this should make most wrapper scripts unnecessary. - qutebrowser can now be set as the default browser on macOS.
- New config commands:
:config-cycle
to cycle an option between multiple values.:config-unset
to remove a configured option.:config-clear
to remove all configured options.:config-source
to (re-)read aconfig.py
file.:config-edit
to open theconfig.py
file in an editor.:config-write-py
to write aconfig.py
template file.
- New
:version
command which opensqute://version
. - New back/forward indicator in the statusbar.
- New
bindings.key_mappings
setting to map keys to other keys. - QtWebEngine: Support for proxy authentication.
Changed
- Using
:download
now uses the page's title as filename. - Using
:back
or:forward
with a count now skips intermediate pages. - When there are multiple messages shown, the timeout is increased.
:search
now only clears the search if one was displayed before, so pressing<Escape>
doesn't un-focus inputs anymore.- Pinned tabs now adjust to their text's width, so the
tabs.width.pinned
setting got removed. :set-cmd-text
now has a--run-on-count
argument to run the underlying command directly if a count was given.:scroll-perc
got renamed to:scroll-to-perc
.
Removed
- Migrating QtWebEngine data written by versions before 2016-11-15 (before v0.9.0) is now not supported anymore.
- Upgrading qutebrowser with a version older than v0.4.0 still running now won't work properly anymore.
- The
--harfbuzz
and--relaxed-config
commandline arguments got dropped.
Fixes
- Exiting fullscreen via
:fullscreen
or buttons on a page now restores the correct previous window state (maximized/fullscreen). - When
input.insert_mode.auto_load
is set, background tabs now don't enter insert mode anymore. - The keybinding help widget now works correctly when using keybindings with a count.
- The
window.hide_wayland_decoration
setting now works correctly again.
v0.11.1
Fixes
- Fixed empty space being shown after tabs in the tabbar in some cases.
- Fixed
:restart
in private browsing mode. - Fixed printing on macOS.
- Closing a pinned tab via mouse now also prompts for confirmation.
- The "try again" button on error pages works correctly again.
- :spawn -u -d is now disallowed.
- :spawn -d shows error messages correctly now.
v0.11.0
New dependencies
- New dependency on
PyQt5.QtOpenGL
if QtWebEngine is used. QtWebEngine depends
on QtOpenGL already, but on distributions packaging split PyQt5 wrappers, the
wrappers for QtOpenGL are now required. - New dependency on
PyOpenGL
if QtWebEngine is used.
Added
- Private browsing is now implemented for QtWebEngine, and changed its
behavior: Thegeneral -> private-browsing
setting now only applies to newly
opened windows, and you can use the-p
flag to:open
to open a private
window. - New "pinned tabs" feature, with a new
:tab-pin
command (bound
to<Ctrl-p>
by default). - (QtWebEngine) Implemented
:follow-selected
. - New
:clear-messages
command to clear shown messages. - New
ui -> keyhint-delay
setting to configure the delay until
the keyhint overlay pops up. - New
-s
option for:open
to force a HTTPS scheme. :debug-log-filter
now acceptsnone
as an argument to clear any log
filters.- New
--debug-flag
argument which replaces--debug-exit
and
--pdb-postmortem
. - New
tabs -> favicon-scale
option to scale up/down favicons. colors -> statusbar.bg/fg.private
and.command.private
to
customize statusbar colors for private windows.- New
{private}
field displaying[Private Mode]
for
ui -> window-title-format
andtabs -> title-format
. - (QtWebEngine) Proxy support with Qt 5.7.1 (already was supported for 5.8 and
newer)
Changed
- To prevent elaborate phishing attacks, the Punycode version (
xn--*
) is now
shown in addition to the decoded version for international domain names
(IDN). - Starting with legacy QtWebKit now shows a warning message.
With the next release, support for it will be removed. - The Windows releases are redone from scratch, which means:
- They now use the new QtWebEngine backend
- The bundled Qt is updated from 5.5 to 5.9
- The bundled Python is updated from 3.4 to 3.6
- They are now generated with PyInstaller instead of cx_Freeze
- The installer is now generated using NSIS instead of being a MSI
- Improved
qute://history
page (with lazy loading) - Crash reports are not public anymore.
- Paths like
C:
are now treated as absolute paths on Windows for downloads,
and invalid paths are handled properly. - Comments in the config file are now placed before the individual options
instead of being before sections. - Messages are now hidden when clicked.
- stdin is now closed immediately for processes spawned from qutebrowser.
- When
ui -> message-timeout
is set to 0, messages are now never cleared. - Middle/right-clicking the blank parts of the tab bar (when vertical) now
closes the current tab. - The adblocker now also blocks non-GET requests (e.g. POST).
javascript:
links can now be hinted.:view-source
,:tab-clone
and:navigate --tab
now don't open the tab as
"explicit" anymore, i.e. (with the default settings) open it next to the
active tab.qute:*
pages now usequte://*
instead (e.g.qute://version
instead of
qute:version
), but the old versions are automatically redirected.- Texts in prompts are now selectable.
- The default level for
:messages
is nowinfo
, noterror
- Trying to focus the currently focused tab with
:tab-focus
now focuses the
last viewed tab. - (QtWebEngine) With Qt 5.9,
content -> cookies-store
can now be set without
a restart. - (QtWebEngine) With Qt 5.9, better error messages are now shown for failed
downloads. - (QtWebEngine) The underlying Chromium version is now shown in the version
info. - (QtWebKit) Renderer process crashes now show an error page on Qt 5.9 or newer.
- (QtWebKit) storage -> offline-web-application-storage
got renamed to
...-cache` - (QtWebKit) PAC now supports SOCKS5 as type.
Fixed
- The macOS .dmg is now built against Qt 5.9 which fixes various
important issues (such as not being able to type dead keys). - Fixed crash with
:download
on PyQt 5.9. - Cloning a page without history doesn't crash anymore.
- When a download results in a HTTP error, it now shows the error correctly
instead of crashing. - Pressing ctrl-c while a config error is shown works as intended now.
- When the key config isn't writable, we now show an error instead of crashing.
- Fixed crash when unbinding an unbound key in the key config.
- Fixed crash when using
:debug-log-filter
when--filter
wasn't given on startup. - Fixed crash with some invalid setting values.
- Continuing a search after clearing it now works correctly.
- The tabbar and completion should now be more consistently and correctly
styled with various system styles. - Applying styiles in
qt5ct
now shouldn't crash anymore. - The validation for colors in stylesheets is now less strict,
allowing for all valid Qt values. data:
URLs now aren't added to the history anymore.- Accidentally starting with Python 2 now shows a proper error message again.
- For some people, running some userscripts crashed - this should now be fixed.
- Various other rare crashes should now be fixed.
- The settings documentation was truncated with v0.10.1 which should now be
fixed. - Scrolling to an anchor in a background tab now works correctly, and javascript
gets the correct window size for background tabs. - (QtWebEngine) Added a workaround for a black screen with some setups
- (QtWebEngine) Starting with Nouveau graphics now shows an error message
instead of crashing in Qt. - (QtWebEngine) Retrying downloads now shows an error instead of crashing.
- (QtWebEngine) Cloning a view-source tab now doesn't crash anymore.
- (QtWebEngine)
window.navigator.userAgent
is now set correctly when
customizing the user agent. - (QtWebEngine) HTML fullscreen is now tracked for each tab separately, which
means it's not possible anymore to accidentally get stuck in fullscreen state
by closing a tab with a fullscreen video. - (QtWebEngine)
:scroll-page
with--bottom-navigate
now works correctly. - (QtWebKit) The HTTP cache is disabled on Qt 5.7.1 and 5.8 now as it leads to
frequent crashes due to a Qt bug. - (QtWebKit) Fixed Crash when a PAC file returns an invalid value.
v0.10.1
Changed
--qt-arg
and--qt-flag
can now also be used to pass arguments to Chromium when using QtWebEngine.
Fixed
- URLs are now redacted properly (username/password, and path/query for HTTPS) when using Proxy Autoconfig with QtWebKit
- Crash when updating adblock lists with invalid UTF8-chars in them
- Fixed the web inspector with QtWebEngine
- Version checks when starting qutebrowser now also take the Qt version PyQt was compiled against into account
- Hinting a input now doesn't select existing text anymore with QtWebKit
- The cursor now moves to the end when input elements are selected with QtWebEngine
- Download suffixes like (1) are now correctly stripped with QtWebEngine
- Crash when trying to print a tab which was closed in the meantime
- Crash when trying to open a file twice on Windows
v0.10.0
Added
- Userscripts now have a new
$QUTE_COMMANDLINE_TEXT
environment variable, containing the current commandline contents - New
ripbang
userscript to create a searchengine from a duckduckgo bang - QtWebKit Reloaded (also called QtWebKit-NG) is now fully supported
- Various new functionality with the QtWebEngine backend:
- Printing support with Qt >= 5.8
- Proxy support with Qt >= 5.8
- The
general -> print-element-backgrounds
option with Qt >= 5.8 - The
content -> cookies-store
option - The
storage -> cache-size
option - The
colors -> webpage.bg
option - The HTML5 fullscreen API (e.g. youtube videos) with QtWebEngine
:download --mhtml
- New
qute:history
URL and:history
command to show the browsing history - Open tabs are now auto-saved on each successful load and restored in case of a crash
:jseval
now has a--file
flag so you can pass a javascript file:session-save
now has a--only-active-window
flag to only save the active window- OS X builds are back, and built with QtWebEngine
Changed
- PyQt 5.7/Qt 5.7.1 is now required for the QtWebEngine backend
- Scrolling with the scrollwheel while holding shift now scrolls sideways
- New way of clicking hints which solves various small issues
- When yanking a mailto: link via hints, the mailto: prefix is now stripped
- Zoom level messages are now not stacked on top of each other anymore
- qutebrowser now automatically uses QtWebEngine if QtWebKit is unavailable
- :history-clear now asks for a confirmation, unless it's run with --force.
input -> mouse-zoom-divider
can now be 0 to disable zooming by mouse wheelnetwork -> proxy
can also be set topac+file://...
now to
use a local proxy autoconfig file (on QtWebKit)
Fixed
- Various bugs with Qt 5.8 and QtWebEngine:
- Segfault when closing a window
- Segfault when closing a tab with a search active
- Fixed various mouse actions (like automatically entering insert mode) not working
- Fixed hints sometimes not working
- Segfault when opening a URL after a QtWebEngine renderer process crash
- Other QtWebEngine fixes:
- Insert mode now gets entered correctly with a non-100% zoom
- Crash reports are now re-enabled when using QtWebEngine
- Fixed crashes when closing tabs while hinting
- Using :undo or :tab-clone with a view-source:// or chrome:// tab is now prevented, as it segfaults
:enter-mode
now refuses to enter modes which can't be entered manually (which caused crashes):record-macro
(q
) now doesn't try to record macros for special keys without a text- Fixed PAC (proxy autoconfig) not working with QtWebKit
:download --mhtml
now uses the new file dialog- Word hints are now upper-cased correctly when hints -> uppercase is true
- Font validation is now more permissive in the config, allowing e.g. "Terminus
(TTF)" as font name - Fixed starting on newer PyQt/sip versions with LibreSSL
- When downloading files with QtWebKit, a User-Agent header is set when possible
- Fixed showing of keybindings in the :help completion
:navigate prev/next
now detectsrel
attributes on<a>
elements, and
handles multiplerel
attributes correctly- Fixed a crash when hinting with target
userscript
and spawning a non-existing script - Lines in Jupyter notebook now trigger insert mode
v0.9.1
Fixed
- Prevent websites from downloading files to a location outside of the download
folder with QtWebEngine.
v0.9.0
Added
- New dependency: qutebrowser now depends on the Qt QML module, which is
packaged separately in some distributions (as Qt Declarative/QML/Quick). - New
:rl-backward-kill-word
command which does what:rl-unix-word-rubout
did before v0.8.0. - New
:rl-unix-filename-rubout
command which is similar to readline's
unix-filename-rubout
. - New
fonts -> completion.category
setting to customize the font used for
completion category headers. - New
:debug-log-capacity
command to adjust how many lines are logged into RAM
(to report bugs which are difficult to reproduce). - New
hide-unmatched-rapid-hints
option to not hide hint unmatched hint labels
in rapid mode. - New
{clipboard}
and{primary}
replacements for the commandline which
replace the:paste
command. - New
:insert-text
command to insert a given text into a field on the page,
which replaces:paste-primary
together with the{primary}
replacement. - New
:window-only
command to close all other windows. - New
prev-category
andnext-category
arguments to:completion-item-focus
to focus the previous/next category in the completion (bound to<Ctrl-Tab>
and<Ctrl-Shift-Tab>
by default). - New
:click-element
command to fake a click on a element. - New
:debug-log-filter
command to change console log filtering on-the-fly. - New
:debug-log-level
command to change the console loglevel on-the-fly. - New
general -> yank-ignored-url-parameters
option to configure which URL
parameters (likeutm_source
etc.) to strip off when yanking an URL. - Support for the HTML5 page visibility API
- New
readability
userscript which shows a readable version of a page (using
thereadability-lxml
python package) - New
cast
userscript to show a video on a Google Chromecast - New
:run-with-count
command which replaces the (undocumented):count:command
syntax. - New
:record-macro
(q
) and:run-macro
(@
) commands for keyboard macros. - New
ui -> hide-scrollbar
setting to hide the scrollbar independently of the
user-stylesheet
setting. - New
general -> default-open-dispatcher
setting to configure what to open
downloads with (instead of e.g.xdg-open
on Linux). - Support for PAC (proxy autoconfig) with QtWebKit
Changed
- Hints are now drawn natively in Qt instead of using web elements. This has a
few implications for users:- The
hints -> opacity
setting does not exist anymore, but you can use
rgba(r, g, b, alpha)
colors instead forcolors -> hints.bg
. - The
hints -> font
setting is not affected by
fonts -> web-family-fixed
anymore. Thus, a transformer got added to
changeMonospace
to${_monospace}
. - Gradients in hint colors can now be configured by using
qlineargradient
and friends instead of-webkit-gradient
. The most common cases get
migrated automatically, but if you drastically changed the defaults,
you'll need to manually adjust your config. - Styling hints by styling
qutehint
elements inuser-stylesheet
was
never officially supported and does not work anymore. - Hints are now not affected by the page's stylesheet or zoom anymore.
- The
:bookmark-add
now has a--toggle
flag which deletes the bookmark if it
already exists.:bookmark-load
now has a--delete
flag which deletes the bookmark after
loading it.:open
now also accepts quickmark names instead of URLs:tab-move
now optionally takes an index for absolute moving.- Commands taking either an argument or a count (like
:zoom
or:tab-focus
)
now prefer the count instead of showing an error message. :open
now has an--implicit
argument to treat the opened tab as implicit
(i.e. to open it at the position it would be opened if it was a clicked link):download-open
and:prompt-open-download
now have an optionalcmdline
argument to pass a commandline to open the download with.:yank
now has a position argument to select what to yank instead of using
flags.- Replacements like
{url}
can now also be used in the middle of an argument.
Consequently, commands taking another command (:later
,:repeat
and
:bind
) now don't immediately evaluate variables. - Tab titles in the
:buffer
completion now update correctly when a page's
title is changed via javascript. :hint
now has a--mode <mode>
flag to override the hint mode configured
using thehints -> mode
setting.- With
new-instance-open-target
set to a tab option, the tab is now opened in
the most recently focused (instead of the last opened) window. This can be
configured with the newnew-instance-open-target.window
setting.
It can also be set tolast-visible
to show the pages in the most recently
visible window, orfirst-opened
to use the first (oldest) available window. - Word hints now are more clever about getting the element text from some elements.
- Completions for
:help
and:bind
now also show hidden commands - The
:buffer
completion now also filters using the first column (id). :undo
has been improved to reopen tabs at the position they were closed.:navigate
now takes a count forup
/increment
/decrement
.- The
hints -> auto-follow
setting now can be set to
always
/full-match
/unique-match
/never
to more precisely control when
hints should be followed automatically. - Counts can now be used with special keybindings (e.g. with modifiers).
This was already implemented for v0.7.0 originally, but got reverted because
it caused some issues and then never re-applied. - Sending a command to an existing instance (via "qutebrowser :reload") now
doesn't mark it as urgent anymore. tabs -> title-format
now treats an empty string as valid.- Bindings for
:
,/
and?
are now configured explicitly and not hardcoded
anymore. - The
completion -> show
setting can now be set toalways
,auto
or
never
. :open-editor
can now be used in any mode.- Lots of improvements to and bugfixes for the QtWebEngine backend, such as
working hints. However, using qutebrowser directly from git is still advised
when using--backend webengine
. content -> javascript-can-open-windows
got renamed to
javascript-can-open-windows-automatically
.:prompt-accept
now optionally accepts a value which overrides the one
entered in the input box.yes
andno
can be used as values for yes/no
questions.- The new
--qt-arg
and--qt-flag
arguments can be used to pass
arguments/flags to Qt's commandline. - Error/warning/info messages are now shown stacked above the statusbar.
This also added various new settings:colors -> messages.fg.error
(renamed fromstatusbar.fg.error
)colors -> messages.bg.error
(renamed fromstatusbar.bg.error
)colors -> messages.border.error
colors -> messages.fg.warning
(renamed fromstatusbar.fg.warning
)colors -> messages.bg.warning
(renamed fromstatusbar.bg.warning
)colors -> messages.border.warning
colors -> messages.fg.info
colors -> messages.bg.info
colors -> messages.border.info
fonts -> messages.error
fonts -> messages.warning
fonts -> messages.info
- The
qute:settings
page now also shows option descriptions. qute:version
andqutebrowser --version
now show various important paths:spawn
/userscripts now show a nicer error when a script wasn't found- Various functionality now works when javascript is disabled with QtWebKit
- Various commands/settings taking
left
/right
/previous
arguments now take
prev
/next
/last-used
to remove ambiguity. - The
ui -> user-stylesheet
setting now only takes filenames, not CSS snippets ui -> window-title-format
now has a new{backend}
replacement:hint
has a new--add-history
argument to add the URL to the history for
yank/spawn targets.:set
now cycles through values if more than one argument is given.:open
now opensdefault-page
without an URL even without-t
/-b
/-w
given.
Deprecated
- The
:paste
command got deprecated as:open
with{clipboard}
and
{primary}
can be used instead. - The
:paste-primary
command got deprecated as:insert-text {primary}
can
be used instead. - The
:prompt-yes
and:prompt-no
commands got deprecated as
:prompt-accept yes
and:prompt-accept no
can be used instead.
Removed
- The
:yank-selected
command got merged into:yank
as:yank selection
and thus removed. - The
:completion-item-prev
and:completion-item-next
commands got merged
into a new:completion-focus {prev,next}
command and thus removed. - The
ui -> hide-mouse-cursor
setting since it was completely broken and
nobody seemed to care. - The
hints -> opacity
setting - see the "Changed" section for details. - The
completion -> auto-open
setting got merged intocompletion -> show
and
thus removed. - All
--qt-*
arguments got replaced by--qt-arg
and--qt-flag
and thus
removed. - The
-c
/--confdir
,--datadir
and--cachedir
arguments got removed, as
--basedir
should be sufficient.
Fixed
:undo
now doesn't undo tabs "closed" by:tab-detach
anymore.- Fixed an issue with hint chars not being cleared correctly when leaving hint
mode. :tab-detach
now fails correctly when there's only one tab open.- Various small issues with the command completion
- Fixed hang when using multiple spaces in a row with the URL completion
- qutebrowser now still starts with an incorrectly configured
$XDG_RUNTIME_DIR
. - Fixed crash when a userscript writes invalid unicode data to the FIFO
- Fixed crash when a included HTML was not found
v0.8.4
Fixed
v0.8.3 accidentally broke compatibility with Python 3.4, which is restored with this release.
v0.8.3
Fixed
- Fixed crash when doing
:<space><enter>
, another corner-case introduced in v0.8.0 - Fixed
:open-editor
(<Ctrl-e>
) on Windows - Fixed crash when setting
general -> auto-save-interval
to a too big value. - Fixed crash when using hints on Void Linux.
- Fixed compatibility with Python 3.5.2+ on Debian unstable
- Compatibility with pdfjs v1.6.210
:bind
can now be used to bind to an alias (binding by editingkeys.conf
already worked before)- The command completion now updates correctly when changing aliases
- The tabbar now displays correctly with the Adwaita Qt theme
- The default
sk
keybinding now sets the commandline to:bind
correctly - Fixed crash when closing a window without focusing it
qutebrowser v0.8.2
Fixed
- Fixed
general -> private-browsing
not being set correctly until a restart
(which caused e.g. local storage to be enabled). - Fixed crash when using hints with JS disabled in some rare circumstances.
- When hinting input fields (
:t
), also consider input elements without a type. - Fixed crash when opening an invalid URL with a percent-encoded and a real @ in it
- Fixed default
;o
and;O
bindings - Fixed local storage not working (and possible other bugs) when using a
relative path with--basedir
. - Fixed crash when deleting a quickmark with Ctrl-D
- Fixed HTML5 video playback on Windows
- Fixed crash when using
:prompt-open-download
with a file with chars not
encodable with the OS' filesystem encoding (e.g. withLC_ALL=C
) - Fixed
:prompt-open-download
with a too long filename (< 255 bytes) - Fixed crash when cancelling a download after doing
:prompt-open-download
- Fixed crash when writing a download to disk fails with
:prompt-open-download
. - Fixed HTML5 video playback on Windows