Skip to content

Releases: qutebrowser/qutebrowser

v1.0.0

12 Oct 08:16
Compare
Choose a tag to compare

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 a config.py file.
    • :config-edit to open the config.py file in an editor.
    • :config-write-py to write a config.py template file.
  • New :version command which opens qute://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

09 Oct 06:38
Compare
Choose a tag to compare

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

04 Jul 16:52
Compare
Choose a tag to compare

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
    : The general -> 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 accepts none 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 and tabs -> 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 use qute://* 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 now info, not error
  • 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-storagegot 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

08 Mar 05:28
Compare
Choose a tag to compare

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

25 Feb 20:53
Compare
Choose a tag to compare

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 wheel
  • network -> proxy can also be set to pac+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 detects rel attributes on <a> elements, and
    handles multiple rel 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

13 Jan 17:28
Compare
Choose a tag to compare

Fixed

  • Prevent websites from downloading files to a location outside of the download
    folder with QtWebEngine.

v0.9.0

28 Dec 22:57
Compare
Choose a tag to compare

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 and next-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 (like utm_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
    the readability-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 for colors -> hints.bg.
    • The hints -> font setting is not affected by
      fonts -> web-family-fixed anymore. Thus, a transformer got added to
      change Monospace 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 in user-stylesheet was
      never officially supported and does not work anymore.
    • Hints are now not affected by the page's stylesheet or zoom anymore.
  • :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 optional cmdline
    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 the hints -> 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 new new-instance-open-target.window setting.
    It can also be set to last-visible to show the pages in the most recently
    visible window, or first-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 for up/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 to always, 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 and no 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 from statusbar.fg.error)
    • colors -> messages.bg.error (renamed from statusbar.bg.error)
    • colors -> messages.border.error
    • colors -> messages.fg.warning (renamed from statusbar.fg.warning)
    • colors -> messages.bg.warning (renamed from statusbar.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 and qutebrowser --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 opens default-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 into completion -> 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

05 Nov 23:45
Compare
Choose a tag to compare

Fixed

v0.8.3 accidentally broke compatibility with Python 3.4, which is restored with this release.

v0.8.3

05 Nov 22:13
Compare
Choose a tag to compare

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 editing keys.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

02 Aug 16:46
Compare
Choose a tag to compare

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. with LC_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