/r/qutebrowser

Photograph via snooOG

A subreddit for qutebrowser - a keyboard-driven, vim-like browser based on Python and Qt.

A keyboard-driven browser.

Rules:

  1. Be polite and considerate, follow qutebrowser's Code of Conduct

  2. No spam allowed

  3. Posts must be related to qutebrowser

Official website

Github repository

Cheatsheet

Frequently asked questions

/r/qutebrowser

3,818 Subscribers

3

Anyone know why I don't get hints for some links?

As an example, when I try to show hints for links on reddit's left sidebar, I see hints for the links at the top of the communities section, but not for any of the communities themselves.

I've been searching for an answer for this for the past few days and messing with adding things to the hints.selectors sections in my config.py, but haven't had any luck.

The objects do have <a href=...> associated with them, so they should just work, but for whatever reason, they're never given hints.

Love qutebrowser btw. Amazing idea.

https://preview.redd.it/t7ewuwfvlp4e1.png?width=270&format=png&auto=webp&s=8265b95369bb0665313b06a4c88a578bb98835b3

6 Comments
2024/12/03
22:24 UTC

1

I cannot share my screen

When I tried to share my screen on Google Meet, qutebrowser just stop working whitout showing any error. How can I solve that?

I use Swaywm. My info:

qutebrowser v3.3.1
Git commit: 07bd9a691 on main (2024-11-11 12:53:29 +0100)
Backend: QtWebEngine 6.7.3
  based on Chromium 118.0.5993.220
  with security patches up to 129.0.6668.58 (plus any distribution patches)
  (source: api)
Qt: 6.7.3 (compiled 6.7.1)

CPython: 3.12.3
PyQt: 6.7.1

Qt wrapper info:
  PyQt6: success
  PyQt5: not imported
  -> selected: PyQt6 (via autoselect)

colorama: 0.4.6
jinja2: 3.1.4
pygments: 2.18.0
yaml: 6.0.2
adblock: 0.6.0
objc: no
PyQt6.QtWebEngineCore: 6.7.0
PyQt6.sip: 6.8.6
pdf.js: no
sqlite: 3.46.1
QtNetwork SSL: OpenSSL 3.0.13 30 Jan 2024

Style: QFusionStyle
Platform plugin: wayland
OpenGL: Intel, 4.6 (Compatibility Profile) Mesa 24.0.9-0ubuntu0.2
Platform: Linux-6.8.0-49-generic-x86_64-with-glibc2.39, 64bit
Linux distribution: Ubuntu 24.04.1 LTS (ubuntu)
Frozen: False
Imported from ~/qutebrowser/qutebrowser
Using Python from ~/qutebrowser/.venv/bin/python3
Qt library executable path: ~/qutebrowser/.venv/lib/python3.12/site-packages/PyQt6/Qt6/libexec, data path: ~/qutebrowser/.venv/lib/python3.12/site-packages/PyQt6/Qt6

Paths:
cache: ~/.cache/qutebrowser
config: ~/.config/qutebrowser
data: ~/.local/share/qutebrowser
runtime: /run/user/1000/qutebrowser

Autoconfig loaded: yes
Config.py: no config.py was loaded
Uptime: 0:00:12qutebrowser v3.3.1
Git commit: 07bd9a691 on main (2024-11-11 12:53:29 +0100)
Backend: QtWebEngine 6.7.3
  based on Chromium 118.0.5993.220
  with security patches up to 129.0.6668.58 (plus any distribution patches)
  (source: api)
Qt: 6.7.3 (compiled 6.7.1)

CPython: 3.12.3
PyQt: 6.7.1

Qt wrapper info:
  PyQt6: success
  PyQt5: not imported
  -> selected: PyQt6 (via autoselect)

colorama: 0.4.6
jinja2: 3.1.4
pygments: 2.18.0
yaml: 6.0.2
adblock: 0.6.0
objc: no
PyQt6.QtWebEngineCore: 6.7.0
PyQt6.sip: 6.8.6
pdf.js: no
sqlite: 3.46.1
QtNetwork SSL: OpenSSL 3.0.13 30 Jan 2024

Style: QFusionStyle
Platform plugin: wayland
OpenGL: Intel, 4.6 (Compatibility Profile) Mesa 24.0.9-0ubuntu0.2
Platform: Linux-6.8.0-49-generic-x86_64-with-glibc2.39, 64bit
Linux distribution: Ubuntu 24.04.1 LTS (ubuntu)
Frozen: False
Imported from ~/qutebrowser/qutebrowser
Using Python from ~/qutebrowser/.venv/bin/python3
Qt library executable path: ~/qutebrowser/.venv/lib/python3.12/site-packages/PyQt6/Qt6/libexec, data path: ~/qutebrowser/.venv/lib/python3.12/site-packages/PyQt6/Qt6

Paths:
cache: ~/.cache/qutebrowser
config: ~/.config/qutebrowser
data: ~/.local/share/qutebrowser
runtime: /run/user/1000/qutebrowser

Autoconfig loaded: yes
Config.py: no config.py was loaded
Uptime: 0:00:12
7 Comments
2024/12/03
15:54 UTC

4

Looking for feedback on a password managing userscript I'm working on

I'm working on a userscript for managing passwords. I'm looking for a little feedback on my approach, hopefully I'm not missing something obvious. I use bitwarden and the qute-bitwarden script, which works great, except that its not very fast. Obviously that's no fault of the qute-bitwarden author, bw-cli is not super fast.

This password manager is a wrapper around qute-bitwarden, and other password managers. It encrypts credentials locally using gnupg and checks for credentials locally first, if the password is not found locally it checks whichever remote password manager the user has configured. I never write the unencrypted credentials to the disk. gnupg and bitwarden both require you to enter a master password before providing credentials.

Currently I have it in a proof of concept phase. It seems to work well for me. Logging in is significantly faster. I'm wondering if this is something anyone else is interested in. I'm hoping there's not a major security vulnerability that I'm missing. Right now its more a fun project to work on than anything else, but if someone else is interested in it I'd be happy to get some feedback and or help with testing.

7 Comments
2024/11/30
18:40 UTC

1

¿How are long web-histories handled?

Chromium-based browsers like Chrome or Opera or Edge keep a history of accessed webpages that's of a certain length, after which the oldest entries disappear. I believe, from my memories of using Firefox, this wasn't the case, or it was a longer length.

It seems that qutebrowser does something like this, because I searched for pages from months ago and didn't find them.

I have the following questions:

  1. Can it be confirmed whether this is the case?
  2. What delimits how long the history is?
  3. Is there some way to keep a longer history? To that end, I don't know if userscripts can trigger after a page loads.
1 Comment
2024/11/30
17:29 UTC

4

qutebrowser.el: Tight integration between Qutebrowser and Emacs/EXWM

0 Comments
2024/11/29
19:42 UTC

1

How can I reset just my settings to default

The config-clear command is not working. I want to keep my bookmarks and other shortcuts, but somehow my settings are all messed up. Webpages are literally unreadable.

1 Comment
2024/11/26
15:38 UTC

6

Adblock stopped working

Hello, I really enjoyed qutebrowser. It's native adblock with fuckfuckadblock and easylist filter was amazing, I've been so happy. But recently, it just stopped working, and it shows so many annoying ads on reddit and youtube. Anyone with same problems? Any solutions?

12 Comments
2024/11/26
13:48 UTC

4

How can I block popup tabs?

Certain shady websites have new tabs that popup whenever you click on any button. UBlock seems to block this, is there a way to stop this in qutebrowser?

5 Comments
2024/11/25
17:28 UTC

2

Qutebrowser and wibevinecdm.so

Hi! I cannot see video from Udemy or X. How can I solve it? I know this is because of DRM and qutebrowser doesn't have widevinecdm.so, but I don't know what to do?

I use Ubuntu 24.04 and Swaywm as window manager

6 Comments
2024/11/22
20:59 UTC

5

How does qutebrowser use vim binding?

Not a programmer of any sort, idk what goes on behind the scenes of applications but I am very interested in qutebrowser as I love its implementation of vim bindings, im just not a fan of webkit and prefer librewolf based browsers, but qb seems to be an exception!

May I ask how qb implements vim bindings? is it some kind of extension or....

Is qb light weight, as in, not very resource intensive, I would like a lightweight, minmal browser for wayland and so surf will not do, and qb, i already like but I want to know, is there anything i can do to make it less resource intensive? Is it more resource intensive that librewolf?

Great browser btw, normally i hate webkit and chromium based stuff, this is the only good/great none firefox browser I have come across and am planing to swap to it.

edit: another question lol, is qb supported on OpenBSD?

5 Comments
2024/11/22
14:47 UTC

4

Videos won't play

I am having an issue where videos will not play on most sites. I can play 80% of YouTube vids, but on X (twitter) for instance, the vids will not play. Is anyone else having the same issue? Is there a solution? Can you guys point me to the right research direction?

4 Comments
2024/11/21
12:27 UTC

3

Rule to always request mobile site from de.wikipedia.org

I find the mobile version of the german wikipedia much easier to read and would like qutebrowser to always request this version. Can anyone help me with creating such a rule?

Edit: I went with „The-Compiler“‘s suggestion and set it to present a mobile user agent for the german wikipedia site.

:set -u de.wikipedia.org content.headers.user_agent 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/{webkit_version} (KHTML, like Gecko) Chrome/{upstream_browser_version} Mobile Safari/{webkit_version}'

3 Comments
2024/11/21
11:11 UTC

1

Weird window behavior

My qutebrowser is acting weird all of a sudden. When I open it it goes Fullscreen automatically hiding even waybar. And my window layout key bindings don't work. I use void Linux with RiverWM. Even if there are windows open already it doesn't open in a split window but take full screen space and my Fullscreen key bindings doesn't work. I did update my system recently but it's hard to say what caused this.my qutebrowser version is 3.3.1_1 from void package repos

2 Comments
2024/11/20
16:20 UTC

1

WebGL(2) Support

I am finding qutebrowser is failing to load some map types on different websites due to WebGL2.0 support not being found. If I check https://webglreport.com/?v=1, both WebGL 1 and 2 tabs report "This browser supports WebGL X, but it is disabled or unavailable". Is this a known issue? I of course have content.webgl set to true (default).

EDIT: Solved, `qt.force_software_rendering` was set to `chromium` in `config.py`. Returning this to its default `none` resolved all WebGL issues.

2 Comments
2024/11/20
14:17 UTC

1

Chatgpt as search engine

There is a chrome-extension to make chatgpt your standard search engine. I know qb doesn't support extensions but maybe someone has an idea how I could configure it to achieve the same thing?

3 Comments
2024/11/13
13:29 UTC

5

Any advancements in using Gecko for the backend?

I saw this post with one of the top comments discussing the possibility of using Gecko with qutebrowser (similar to how there is a QtWebKit backend available). This is something im interested in, becuase I'd rather use something other than Chromium (although I know QtWebEngine is a bit less than Chromium), but QtWebKit was been way too slow in my experience (I initially tried luakit, but it was just unsuable, for me).

In the discussion, it was mentioned that there are efforts to separate Gecko from Firefox, but it was too early to tell. Well, that was 5 years ago, so I was wondering if there were any changes, or no luck?

I tried searching on the github issues for 'Gecko' and 'Engine', but wasn't able to find anything :/

5 Comments
2024/11/10
17:48 UTC

8

how do people get some adblock on this browser??

I thought adblock-update would activate it and I also installed python-adblock, but I'm still seeing ads everywhere : on Reddit, Youtube, and random web pages.

I really like everything else about this browser but the ads are just absolutely insufferable. Please help.

8 Comments
2024/11/09
15:03 UTC

25

OMG is it actually happening??

Unless my eyes are deceiving me and I'm jumping the gun, QtWebEngine will finally support chromium extensions come Qt 6.9!!! If this pans out, we're one step closer to qutebrowser becoming the ideal hackable browser!

8 Comments
2024/11/05
05:10 UTC

12

alternative keybindings cheatsheet

10 Comments
2024/11/04
23:04 UTC

2

Cosmetic word filtering?

I use an extension to censor OCD trigger words on webpages in firefox. I know I can’t install extensions, but could something similar be achieved in qute?

Here’s the extension for those curious https://addons.mozilla.org/en-US/firefox/addon/advanced_profanity_filter/

2 Comments
2024/10/29
10:41 UTC

6

I made a userscript that sorts and rearranges tabs (manual or automatic sorting)

This userscript rearranges tabs in qutebrowser. Feel free to use it and if you have improvements they are very welcome.

I made it as response to this post:

I think it works well, although it is not extensively tested and I am sure there are cases I have not thought of where it breaks.

So it uses this userscript (zsh) which calls a python script (tried doing it in zsh at first but it was too complicated for me, in python it was easy).

notes

  • In this version it does not close the non-rearranged window. THis is because I don't trust the script yet, and I want to see the diff.
  • it uses linux
  • the manual sorting method uses your $EDITOR for the rearranging
  • fzfmenu.sh is just my wrapper around fzf (basically it spawns a terminal with fzf that takes input from the pipe) - you can use dmenu or whatever you like instead. the if statement just below is because my script adds an empty line at the beginning of the output, so I remove it. If you use another menu you do not need this.

#!/bin/zsh

# Define file paths
input_file="$HOME/.local/share/qutebrowser/sessions/tab-rearrange-input.yml"
temp_file="/tmp/tab-reorder.md"
output_file="$HOME/.local/share/qutebrowser/sessions/tab-rearrange-output.yml"

# remove input  and output
rm -f "$input_file" "$output_file"

qutebrowser ":session-save --only-active $input_file"

sleep 1s 

# Extract titles and URLs with indices to handle duplicates
yq -r '.windows[].tabs[].history[] | "\(.title) - \(.url)"' "$input_file" | nl -ba -w1 -s' ' > "$temp_file"
# make it zero-based index without looing the original index

choice1=$(echo -e 'sort how:\nmanual\nsort title\nsort title (reverse)\nsort url sort url (reverse)' | fzfmenu.sh --header-lines --popup) 
if [ ! "$(printf %s "$choice1" | sed -n '$=')" -eq 1 ]; then choice1=$(echo "$choice1" | tail -n +2); fi
if [ -z "$choice1" ]; then exit; fi
# echo "$choice1"

case "$choice1" in
    manual)
    # Open the extracted data in the editor
    alacritty --title 'qutebrowser tab-reorder popup' -e $EDITOR "$temp_file"
    ;;
    sort\ title)
    # Sort the extracted data by title
    cat "$temp_file" | sort -k2 
    sort\ title\ \(reverse\)
    echo 'yes'
esac

# remove empty lines
sed -i '/^$/d' "$temp_file"

python  $HOME/Dropbox/share/qutebrowser/in-use/userscripts/qutebrowser-rearrange-tabs-helper.py

sleep 1s

# Read the edited file
qutebrowser ":session-load $output_file"

and here's the helper script:


#!/usr/bin/env python3
import yaml

input_file = '$HOME/.local/share/qutebrowser/sessions/tab-rearrange-input.yml'
temp_file = '/tmp/tab-reorder.md'
output_file = '$HOME/.local/share/qutebrowser/sessions/tab-rearrange-output.yml'
# replace $HOME with the actual path
import os
input_file = os.path.expandvars(input_file)
output_file = os.path.expandvars(output_file)

# Read the new order of indices from the temp file
new_order_indices = []
with open(temp_file, 'r') as f:
    for line in f:
        index_str = line.strip().split()[0]
        if index_str.isdigit():
            new_order_indices.append(int(index_str))

# Read the original session data
with open(input_file, 'r') as f:
    data = yaml.safe_load(f)

# Process each window in the session
for window in data.get('windows', []):
    tabs = window.get('tabs', [])
    num_tabs = len(tabs)
    original_indices = set(range(num_tabs))
    remaining_indices = original_indices - set(new_order_indices)
    
    # Rearrange the tabs based on the new indices
    new_tabs = [tabs[i] for i in new_order_indices if i < num_tabs]
    # Append any tabs not in the edited list to the end
    new_tabs.extend([tabs[i] for i in sorted(remaining_indices)])
    window['tabs'] = new_tabs

# Write the modified session data to the output file
with open(output_file, 'w') as f:
    yaml.safe_dump(data, f)

print(f"Session data rearranged and saved to {output_file}")
0 Comments
2024/10/27
09:36 UTC

2

How do i set brave search as default ctrl+t?

1 Comment
2024/10/26
13:59 UTC

1

Move location of the config folder

Hi ! My config folder for qutebrowser is located at ~/.qutebrowser but I would love to move it to another location where I have all my config files for other softwares. I checked all the help pages but found nothing ..

2 Comments
2024/10/25
13:35 UTC

1

Is qutebrowser really worth to use in 2024?

it barely works in a Google docs and such as.

For today websites, the ad blocker is absolutely useless.

Is anybody using this browser as a daily driver?

37 Comments
2024/10/21
20:56 UTC

5

[Userscript] archive web pages to waybackmachine, archive.ph, and ghostarchive.org

You can find the post here: https://gist.github.com/YasserKa/9a02bc50e75e7239f6f0c8f04fe4cfb1

I submitted this post a week ago [1], and the post is visible on my end, but for some reason other users can't view it, so I am re-posting it again using a gist.

[1] https://www.reddit.com/r/qutebrowser/comments/1g1zbel/userscript_archive_web_pages_to_waybackmachine/

Edit: It's the reddit post is visible thanks to the compiler

1 Comment
2024/10/21
09:25 UTC

3

¿Sorting currently open tabs?

(Windows 10)

I'd like to be able to access my currently open tabs programmatically in order to sort them.

As I understand it, batch userscripts can't continuously interface with qutebrowser, they're just given variables, allowed one final command to pass onto qb, and this then ends the script.

As per ww7k3v, if you're willing to reload all the tabs after modifying the session file, there may be a hack. But I just wanna sort them as if I've used tab-move multiple times.

6 Comments
2024/10/19
05:16 UTC

1

Arrow keys don't work in kagi.

Hello, i've been using qutebrowser the past few days and i love it, problem is, i've encountered a really frustrating problem with the search engine i use, kagi.

Kagi has a function that allows the user to scroll through the search results with the arrow (and j/k) keys but qutebrowser just won't let me do that.

When i try to use the arrow keys i just scroll through the page normally, and the kagi's search function doesn't work which is really frustrating.

It works fine on other browsers like firefox and looking online i can't find anyone facing the same problem.

3 Comments
2024/10/16
19:09 UTC

3

Yellow url in status bar

For some reason, links of www.reddit.com started showing as yellow in the status bar, which looking at the documentation means there's a warning.

But how can i find out what the actual warning is? There's not anything on :messages

3 Comments
2024/10/14
20:55 UTC

1

Userscript + IPC

I am trying to use the userscript functions with IPC commands to achieve the following behavior.

In a page with a list of links---such as a search result---, I call hints and forward them to a userscript. The first time, the userscript creates a new window and opens the URL on it without giving focus to it. The second time and later, the userscript finds the previous window and opens the URL in a new tab.

I cannot use the "last-focused" window because it is the one I am using. I pretend to open the windows using the "ipc" module from qutebrowser, which I already use to open new windows. The problem is that I do not find how to get a list of windows and how to specify a particular window through IPC.

If anybody has a suggestion on how to proceed to achieve the behavior I mention, please let me know. Thank you very much.

10 Comments
2024/10/14
03:58 UTC

42

qutebrowser v3.3.0/.1 released

I'm happy to announce that I just released qutebrowser v3.3.0, followed by v3.3.1 due to a few accidentally unpushed commits.

A short overview of future release plans:

  • v3.4.0 is coming very soon already (as soon as PyQt 6.8 is out and everything is ready from qutebrowser's side). Might be looking at a week or so potentially, but I decided to cut a release right away to get Qt 6.7.3 security fixes out to macOS/Windows binary users.
  • There might be a v3.4.1 with Qt 6.8.1 if timing permits (currently scheduled for November 21st; but GitHub drops macOS 12 support on December 3rd)
  • The next release after that will be v3.5.0, and it will remove support for macOS 12 Monterey and Python 3.8 (the latter might already be dropped in v3.4.0 if upstream dependencies require doing so).

Here is the combined changelog (.0 is missing the "Updated the workaround for Google sign-in issues." commit):

Added

  • Added the qt.workarounds.disable_hangouts_extension setting, for disabling the Google Hangouts extension built into Chromium/QtWebEngine.

Removed

  • Support for macOS 11 Big Sur is dropped. Binaries are now built on macOS 12 Monterey and are unlikely to still run on older macOS versions.
  • Failed end2end tests will now save screenshots of the browser window when run under xvfb (the default on linux). Screenshots will be under $TEMP/pytest-current/pytest-screenshots/ or attached to the GitHub actions run as an artifact. (#7625)

Changed

  • The qute-pass userscript now has better support for internationalized domain names when using the pass backend - both domain names and secret paths are normalized before comparing (#8133)
  • Ignored URL query parameters (via url.yank_ignored_parameters) are now respected when yanking any URL (for example, through hints with hint links yank). The {url:yank} substitution has also been added as a version of {url} that respects ignored URL query parameters. (#7879)
  • Windows and macOS releases now bundle Qt 6.7.3, which includes security fixes up to Chromium 129.0.6668.58.

Fixed

  • A minor memory leak of QItemSelectionModels triggered by closing the completion dialog has been resolved. (#7950)
  • The link to the chrome URL match pattern documentation in our settings docs now loads a live page again. (#8268)
  • A rare crash when on Qt 6, a renderer process terminates with an unknown termination reason.
  • Updated the workaround for Google sign-in issues.
0 Comments
2024/10/12
20:02 UTC

Back To Top