# ============================================================================= # Qutebrowser Configuration # Author: Kris Yotam # Based on: DistroTube's config.py # Date: 2026-02-10 # ============================================================================= # Load settings from autoconfig.yml (disabled) config.load_autoconfig(False) # Aliases for commands c.aliases = {'q': 'quit', 'w': 'session-save', 'wq': 'quit --save'} # YouTube minimal CSS is injected via Greasemonkey script # See: ~/.local/share/qutebrowser/greasemonkey/youtube-minimal.user.js # Cookie settings for devtools config.set('content.cookies.accept', 'all', 'chrome-devtools://*') config.set('content.cookies.accept', 'all', 'devtools://*') # User agent overrides for specific sites config.set('content.headers.user_agent', 'Mozilla/5.0 ({os_info}) AppleWebKit/{webkit_version} (KHTML, like Gecko) {upstream_browser_key}/{upstream_browser_version} Safari/{webkit_version}', 'https://web.whatsapp.com/') config.set('content.headers.user_agent', 'Mozilla/5.0 ({os_info}; rv:71.0) Gecko/20100101 Firefox/71.0', 'https://accounts.google.com/*') config.set('content.headers.user_agent', 'Mozilla/5.0 ({os_info}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99 Safari/537.36', 'https://*.slack.com/*') config.set('content.headers.user_agent', 'Mozilla/5.0 ({os_info}; rv:71.0) Gecko/20100101 Firefox/71.0', 'https://docs.google.com/*') config.set('content.headers.user_agent', 'Mozilla/5.0 ({os_info}; rv:71.0) Gecko/20100101 Firefox/71.0', 'https://drive.google.com/*') # Load images in devtools config.set('content.images', True, 'chrome-devtools://*') config.set('content.images', True, 'devtools://*') # Enable JavaScript for devtools and internal pages config.set('content.javascript.enabled', True, 'chrome-devtools://*') config.set('content.javascript.enabled', True, 'devtools://*') config.set('content.javascript.enabled', True, 'chrome://*/*') config.set('content.javascript.enabled', True, 'qute://*/*') # Notifications config.set('content.notifications.enabled', True, 'https://www.reddit.com') config.set('content.notifications.enabled', True, 'https://www.youtube.com') # Downloads directory c.downloads.location.directory = '~/Downloads' # Tab bar visibility c.tabs.show = 'always' # Start page and default page (blank) c.url.default_page = 'about:blank' c.url.start_pages = 'about:blank' # Search engines (Kagi as default) c.url.searchengines = { 'DEFAULT': 'https://kagi.com/search?q={}', 'k': 'https://kagi.com/search?q={}', 'aa': 'https://annas-archive.org/search?q={}', 'am': 'https://www.amazon.com/s?k={}', 'aw': 'https://wiki.archlinux.org/?search={}', 'ddg': 'https://duckduckgo.com/?q={}', 'goog': 'https://www.google.com/search?q={}', 'gh': 'https://github.com/search?o=desc&q={}&s=stars', 're': 'https://www.reddit.com/r/{}', 'ub': 'https://www.urbandictionary.com/define.php?term={}', 'wiki': 'https://en.wikipedia.org/wiki/{}', 'yt': 'https://www.youtube.com/results?search_query={}' } # ============================================================================= # Colors - Light mode with blue accents (no green) # ============================================================================= # Webpage colors - force light mode c.colors.webpage.bg = 'white' c.colors.webpage.darkmode.enabled = False c.colors.webpage.preferred_color_scheme = 'light' # Web fonts - Brave/Chrome defaults c.fonts.web.family.standard = '' c.fonts.web.family.serif = '' c.fonts.web.family.sans_serif = '' c.fonts.web.family.fixed = '' c.fonts.web.size.default = 16 c.fonts.web.size.default_fixed = 13 c.fonts.web.size.minimum = 0 # Completion widget c.colors.completion.fg = '#1f2933' c.colors.completion.odd.bg = '#f5f7f9' c.colors.completion.even.bg = '#eef2f5' c.colors.completion.category.fg = '#1f2933' c.colors.completion.category.bg = '#dae4ee' c.colors.completion.category.border.top = '#B0C5DA' c.colors.completion.category.border.bottom = '#B0C5DA' c.colors.completion.item.selected.fg = '#1f2933' c.colors.completion.item.selected.bg = '#B0C5DA' c.colors.completion.item.selected.match.fg = '#1f2933' c.colors.completion.match.fg = '#90B0D2' c.colors.completion.scrollbar.fg = '#90B0D2' # Downloads c.colors.downloads.bar.bg = '#eef2f5' c.colors.downloads.error.bg = '#DEC292' # Hints c.colors.hints.fg = '#1f2933' c.colors.hints.bg = '#dae4ee' c.colors.hints.match.fg = '#90B0D2' # Messages c.colors.messages.info.bg = '#eef2f5' c.colors.messages.info.fg = '#1f2933' # Statusbar c.colors.statusbar.normal.bg = '#eef2f5' c.colors.statusbar.normal.fg = '#1f2933' c.colors.statusbar.insert.fg = '#1f2933' c.colors.statusbar.insert.bg = '#B0C5DA' c.colors.statusbar.passthrough.bg = '#9CC2EC' c.colors.statusbar.passthrough.fg = '#1f2933' c.colors.statusbar.command.bg = '#eef2f5' c.colors.statusbar.command.fg = '#1f2933' c.colors.statusbar.url.fg = '#1f2933' c.colors.statusbar.url.success.http.fg = '#90B0D2' c.colors.statusbar.url.success.https.fg = '#90B0D2' c.colors.statusbar.url.warn.fg = '#DEC292' # Tabs c.colors.tabs.bar.bg = '#eef2f5' c.colors.tabs.odd.bg = '#f5f7f9' c.colors.tabs.odd.fg = '#1f2933' c.colors.tabs.even.bg = '#eef2f5' c.colors.tabs.even.fg = '#1f2933' c.colors.tabs.selected.odd.bg = '#B0C5DA' c.colors.tabs.selected.odd.fg = '#1f2933' c.colors.tabs.selected.even.bg = '#B0C5DA' c.colors.tabs.selected.even.fg = '#1f2933' c.colors.tabs.pinned.odd.bg = '#9CC2EC' c.colors.tabs.pinned.odd.fg = '#1f2933' c.colors.tabs.pinned.even.bg = '#AECDEC' c.colors.tabs.pinned.even.fg = '#1f2933' c.colors.tabs.pinned.selected.odd.bg = '#B0C5DA' c.colors.tabs.pinned.selected.odd.fg = '#1f2933' c.colors.tabs.pinned.selected.even.bg = '#B0C5DA' c.colors.tabs.pinned.selected.even.fg = '#1f2933' # ============================================================================= # Keybindings # ============================================================================= # dmenu integration (commented out for consideration) # config.bind('o', 'spawn --userscript dmenu-open') # config.bind('O', 'spawn --userscript dmenu-open --tab') # Normal mode bindings config.bind('M', 'hint links spawn mpv {hint-url}') config.bind('Z', 'hint links spawn st -e youtube-dl {hint-url}') config.bind('t', 'set-cmd-text -s :open -t') config.bind('xb', 'config-cycle statusbar.show always never') config.bind('xt', 'config-cycle tabs.show always never') config.bind('xx', 'config-cycle statusbar.show always never;; config-cycle tabs.show always never') # CSS stylesheet cycling (Solarized Everything CSS) # https://github.com/alphapapa/solarized-everything-css config.bind(',ap', 'config-cycle content.user_stylesheets ~/.config/qutebrowser/solarized-everything-css/css/apprentice/apprentice-all-sites.css ""') config.bind(',dr', 'config-cycle content.user_stylesheets ~/.config/qutebrowser/solarized-everything-css/css/darculized/darculized-all-sites.css ""') config.bind(',gr', 'config-cycle content.user_stylesheets ~/.config/qutebrowser/solarized-everything-css/css/gruvbox/gruvbox-all-sites.css ""') config.bind(',sd', 'config-cycle content.user_stylesheets ~/.config/qutebrowser/solarized-everything-css/css/solarized-dark/solarized-dark-all-sites.css ""') config.bind(',sl', 'config-cycle content.user_stylesheets ~/.config/qutebrowser/solarized-everything-css/css/solarized-light/solarized-light-all-sites.css ""') # Dark mode toggle config.bind(',dm', 'config-cycle colors.webpage.darkmode.enabled true false')