{ pkgs, config, ... }: let settings = config.programs.qutebrowser.settings; websites = { searx = "https://searx.be"; }; colors = { black = "#000000"; darker-gray = "#222222"; lighter-gray = "#333333"; white = "#ffffff"; dark-white = "#aaaaaa"; less-dark-white = "#cccccc"; blue = "#0000ff"; }; in { programs.qutebrowser = { enable = true; searchEngines = with websites; { DEFAULT = "${searx}/search?q={}&category_general=on&language=all"; w = "https://en.wikipedia.org/wiki/Special:Search?search={}&go=Go&ns0=1"; np = "https://search.nixos.org/packages?sort=relevance&type=packages&query={}"; no = "https://search.nixos.org/options?sort=relevance&type=options&query={}"; g = "https://google.com/search?q={}"; git = "https://github.com/search?q={}"; y = "https://www.youtube.com/results?search_query={}"; }; keyBindings = { normal = { "" = "spawn mpv --force-window=immediate {url}"; ",l" = ''config-cycle spellcheck.languages [" it-IT "] [" en-US "]''; }; insert = { "" = ''spawn --userscript qute-pass --dmenu-invocation '${pkgs.fuzzel}/bin/fuzzel --background-color=253559cc --border-radius=5 --border-width=0 -d' --password-only --unfiltered''; }; }; settings = { auto_save.session = true; url = with websites; { default_page = searx; start_pages = [searx]; }; editor.command = [ "emacsclient" "+{line}:{column}" "{file}" "-c" "-F" "'(name . \\\"{file} - editor - qutebrowser\\\"))" # this is needed to keep the Emacs frame in the correct Sway workspace ]; content.pdfjs = true; scrolling.smooth = false; fonts = { default_size = "11pt"; tabs = { selected = "13pt"; unselected = "13pt"; }; }; colors = with colors; { webpage.bg = black; # to avoid flashes when opening new tabs tabs = { even = { bg = darker-gray; fg = dark-white; }; odd = { bg = lighter-gray; fg = settings.colors.tabs.even.fg; }; }; completion = { even.bg = darker-gray; odd.bg = settings.colors.completion.even.bg; fg = less-dark-white; # match.fg = ""; item.selected = { match.fg = blue; # bg = ""; # fg = ""; border = { top = settings.colors.completion.even.bg; bottom = settings.colors.completion.even.bg; }; }; category = { bg = lighter-gray; border = { top = settings.colors.completion.even.bg; bottom = settings.colors.completion.even.bg; }; }; }; }; }; # `c.tabs.padding` must be set here since it's a python dict extraConfig = '' c.tabs.padding = { 'bottom': 4, 'left': 4, 'right': 4, 'top': 4 } ''; }; home.packages = with pkgs; [ fuzzel ( makeDesktopItem { name = "qutebrowser"; exec = "qutebrowser %u"; comment = "Qutebrowser"; desktopName = "qutebrowser"; type = "Application"; mimeTypes = ["x-scheme-handler/https"]; } ) ]; }