I'm delighted to announce that I just released qutebrowser v1.0.0!
qutebrowser is a keyboard driven browser with a vim-like, minimalistic interface. It's written using PyQt and cross-platform.
This release comes with many big breaking changes such as the new config and QtWebEngine by default, so please take a look at the changelog.
As announced previously, per-domain settings unfortunately didn't make it into v1.0.0 - it's the next thing I plan on tackling. However, there's more than enough big things in v1.0.0! :)
edit: I just released v1.0.1 which fixes three bugs introduced in v1.0.0:
- Fixed starting after customizing fonts.tabs or fonts.debug_console.
- Fixed starting with old PyQt versions compiled against newer Qt versions.
- Fixed check for PyQt version to correctly enforce 5.7 (not 5.2).
The full changelog for v1.0.0:
- 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 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.
- 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.
- 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.
- 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.
- 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.
- qutebrowser v1.0.0 is coming closer
- New config merged!
- Config revolution - Part 1 finished
- Refactoring more things, a working YAML config, and more!
- Refactoring all the things!
- First week
- First 2 days
- Getting started again
- Second qutebrowser crowdfunding launched!
- qutebrowser v0.10.0 released
- Wrapping up and looking at the future
- Days 39/40/41: Lots of features!
- Days 37/38: Hints in master, tests
- Day 36: Hints!
- Days 33-35: Mouse functionality, and rewriting hints
- Days 31/32: More web elements
- Days 29/30: Web elements
- Days 27/28: Settings and web inspector
- Day 24-26: Refactoring the WebElement API
- Day 21-23: After Europython and releases
- Day 19/20: Bugs everywhere!
- qutebrowser v0.8.0 released
- Day 17: Printing and searching
- Sending out qutebrowser and pytest stickers
- Day 15/16: Merged!
- Day 13/14: Almost merged!
- Day 12: Tests running!
- Day 10/11: Refactoring!
- Day 9: A bit of everything
- Day 8: More fixing and pytest sprint/training
- Day 7: Fixing things
- Day 6: Branching off
- qutebrowser v0.7.0 released
- Day 4: Playing whack-a-mole
- Day 3: Last pull requests and managing requirement files
- Day 2: More pull requests and nicer test output
- Day 1: Merging pull requests, and a stupid bug
- About and Timeline