Skip to content

Add qutebrowser, with ad blocking and ad-free YouTube - #12172

Open
Maximilian-Maag wants to merge 1 commit into
omacom:quattrofrom
Maximilian-Maag:add-qutebrowser
Open

Maximilian-Maag wants to merge 1 commit into
omacom:quattrofrom
Maximilian-Maag:add-qutebrowser

Conversation

@Maximilian-Maag

Copy link
Copy Markdown

Adds qutebrowser alongside the other browsers, set up so it is actually pleasant out of the box rather than a bare profile with no blocklists.

  • omarchy install browser qutebrowser installs qutebrowser, python-adblock, mpv and yt-dlp, and drops in the config below.
  • omarchy remove browser qutebrowser drops qutebrowser and python-adblock and removes omarchy.py. The profile, config.py, bookmarks and history stay, and so do mpv and yt-dlp, which are useful on their own.
  • Both appear under Install → Browser and Remove → Browser.

Ad blocking. content.blocking.method = "both" runs the Brave filter-list engine next to the hosts blocklist, with EasyList, EasyPrivacy, Fanboy's annoyances and the uBlock Origin filter and privacy lists.

YouTube. Worth being straight about why this is not just another filter list: qutebrowser's blocker is network-level only — no cosmetic filtering, no scriptlet injection — and YouTube serves its video ads from the same hosts as the video. No blocklist will make YouTube ad-free here. What does work is handing the URL to mpv: yt-dlp resolves the stream directly and the ad breaks are never part of it. ,m plays the current page, ,M hints a link on the page first.

Config layout. config/qutebrowser/omarchy.py holds the managed settings and is refreshed on upgrade through omarchy-refresh-config. config.py is written once, sources omarchy.py and then calls config.load_autoconfig(True), so :set changes and hand edits outlive an upgrade. A config.py that predates the install is never overwritten — instead the installer prints the one line that wires the defaults up, so the settings cannot silently do nothing.

Tested with test/cli, by checking the routes resolve via omarchy commands --all, and by exercising setup_qutebrowser_config against a sandboxed HOME: first install, re-running it as an upgrade (managed file restored and backed up, user's config.py untouched), a pre-existing config.py (left alone, notice printed), and one already sourcing omarchy.py (no notice). The desktop id used for the default-browser fallback was checked against the package contents rather than assumed.

🤖 Generated with Claude Code

qutebrowser ships with no blocklists configured and its blocker is
network-level only, so it has no way to strip YouTube's video ads: those
come from the same hosts as the video itself. Configure the Brave filter
engine for everything a blocklist can catch, and bind ,m to hand the URL
to mpv, which pulls the stream through yt-dlp and never sees an ad break.

omarchy.py holds the managed settings and is refreshed on upgrade;
config.py is written once and then left alone, so :set changes and hand
edits survive. A config.py that predates the install is kept as-is, with
a note saying which line wires the defaults up.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@omarchybot omarchybot added the enhancement New feature or request label Sep 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants