from qutebrowser.config.configfiles import ConfigAPI # noqa: F401 from qutebrowser.config.config import ConfigContainer # noqa: F401 import os # Autogenerated config.py # Documentation: # qute://help/configuring.html # qute://help/settings.html # Uncomment this to still load settings configured via autoconfig.yml config.load_autoconfig() c.completion.web_history.max_items = 1000 c.hints.uppercase = True c.content.host_blocking.enabled = True c.content.host_blocking.lists = [ "http://www.malwaredomainlist.com/hostslist/hosts.txt", "http://someonewhocares.org/hosts/hosts", "http://winhelp2002.mvps.org/hosts.zip", "http://malwaredomains.lehigh.edu/files/justdomains.zip", "http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&mimetype=plaintext", ] c.content.host_blocking.whitelist = ['piwik.org'] c.content.pdfjs = False c.content.javascript.enabled = False js_whitelist = [ "*://*.youtube.com/*", "*://127.0.0.1/*", "*://darksky.net/*" "*://deepl.com/*", "*://duckduckgo.com/*", "*://github.com/*", "*://localhost/*", "*://news.ycombinator.com/*", "*://reddit.com/*", "*://translate.google.com/*", "*://maps.google.com/*", "*://mail.google.com/*", "*://todoist.com/*", "*://toggl.com/*", "file://*", "chrome://*/*", "qute://*/*", ] for page in js_whitelist: with config.pattern(page) as p: p.content.javascript.enabled = True c.editor.command = ["alacritty", "-e", "nvim", "-f", "{file}"] # LOOK # ---- # Tab-Bar # have tab bar on the right, not on the top c.tabs.background = True c.tabs.title.format = '{index} {audio}{perc}{current_title}' c.tabs.position = "right" c.tabs.width = "15%" # give the browser nice nord theme colors config.source('themes/nordtheme.py') # Status bar # should be visible to prevent 'jumping' bug, see https://github.com/qutebrowser/qutebrowser/issues/2236 # TODO think about implementing a simple toggle for the statusbar, like for the tabs c.statusbar.hide = False # CSS DARK_STYLESHEET = config.configdir / \ "stylesheets/solarized-dark.css" LIGHT_STYLESHEET = config.configdir / \ "stylesheets/solarized-light.css" if DARK_STYLESHEET.exists() and LIGHT_STYLESHEET.exists(): css = [str(DARK_STYLESHEET), str(LIGHT_STYLESHEET)] # FUNCTION # -------- # Prevents *all* tabs from being loaded on restore, only loads on activating them c.session.lazy_restore = True # Binds # 'Leader' key binding leader = "" # toggles ('cycles') between tabs always showing, or only when switching between them config.bind(leader + 'tt', 'config-cycle -t tabs.show always switching') config.bind(leader + 'th', 'set tabs.position bottom') config.bind(leader + 'tH', 'set tabs.position top') config.bind(leader + 'tv', 'set tabs.position right') config.bind(leader + 'tV', 'set tabs.position left') # [M]edia shortcuts - watch, queue, download media # bind mpv to play the current page/links, using a single instance which queues the next link passed config.bind(leader + 'M', 'spawn umpv {url}') config.bind(leader + 'm', 'hint links spawn umpv {hint-url}') # bind youtube-dl to download the current page/links config.bind(leader + 'dM', 'spawn youtube-dl -o ~/videos/%(title)s.%(ext)s {url}') config.bind(leader + 'dm', 'hint --rapid links spawn youtube-dl -o ~/videos/%(title)s.%(ext)s {url}') # Let me close tabs more easily, and 'unclose' them with the same key config.bind('x', 'tab-close', mode='normal') config.bind('X', 'undo', mode='normal') # Use q for quitting a tab (mimicks vim buffer) - qa is used for exiting c.aliases["q"] = "tab-close" # if we save sessions with w, load sessions with e (again, mimicks vim) c.aliases["e"] = "session-load" # bookmarklet aliases: # currently the idea is to prefix bookmarklets with b (as in open "bookmarklet") # wallabag add current page, either with walla command, or bw c.aliases["wallabag-add"] = "spawn --userscript wallabag_add.sh" config.bind(leader + 'bw', 'wallabag-add', mode='normal') # re-opens the current page on the web archive overview page c.aliases["archive-open"] = "open https://web.archive.org/web/{url}" config.bind(leader + 'ba', 'archive-open', mode='normal') # set stylesheets for the browser to use # leader - ss to remove all applied stylesheets config.bind(leader + 'ss', 'set content.user_stylesheets ""') # leader - sd for dark mode solarized config.bind(leader + 'sd', 'set content.user_stylesheets ' + str(css[0]) ) # leader - sl for light mode solarized config.bind(leader + 'sl', 'set content.user_stylesheets ' + str(css[1]) ) # Enable and disable javascript config.bind(leader + "js", "config-cycle content.javascript.enabled true false") # Reload this config config.bind(leader + "VV", "config-source") c.url.searchengines = { "DEFAULT": "https://duckduckgo.com/?q={}", "d": "https://www.dict.cc/?s={}", "gt": "https://translate.google.com/#auto/de/{}", "dt": "https://www.deepl.com/translator#en/de/{}", "g": "https://www.google.com/search?q={}", "r": "https://old.reddit.com/r/{}", "w": "https://en.wikipedia.org/w/index.php?search={}", "gh": "https://github.com/search?q={}", "al": "https://wiki.archlinux.org/index.php/{}", "aur": "https://aur.archlinux.org/packages/?K={}", "yt": "https://www.youtube.com/results?search_query={}", "maps": "https://www.google.fr/maps?q={}", "gol": "https://golang.org/pkg/{}/", }