summaryrefslogtreecommitdiffstats
path: root/.config/qutebrowser/config.py
diff options
context:
space:
mode:
Diffstat (limited to '.config/qutebrowser/config.py')
-rwxr-xr-x.config/qutebrowser/config.py105
1 files changed, 81 insertions, 24 deletions
diff --git a/.config/qutebrowser/config.py b/.config/qutebrowser/config.py
index c86a473..e24591b 100755
--- a/.config/qutebrowser/config.py
+++ b/.config/qutebrowser/config.py
@@ -2,38 +2,78 @@
# ~/.config/qutebrowser/config.py
# rgoncalves.se
+import html
import logging
import os
import re
-import subprocess
-import platform
+import socket
+
+from PyQt5.QtCore import QUrl
+
+from qutebrowser.api import cmdutils
+from qutebrowser.browser.urlmarks import (
+ AlreadyExistsError as UrlAlreadyExistsError
+)
+from qutebrowser.browser.urlmarks import UrlMarkManager
+from qutebrowser.config.config import ConfigContainer
+from qutebrowser.config.configfiles import ConfigAPI
+from qutebrowser.utils import message, objreg
+from qutebrowser.utils.usertypes import PromptMode
+from userscripts.urlmarks import urlmarkmanager_save
+
+config: ConfigAPI = config # noqa: F821 pylint: disable=E0602,C0103
+c: ConfigContainer = c # noqa: F821 pylint: disable=E0602,C0103
logging.basicConfig(level=logging.DEBUG)
-"""
-Bypass flake8 warnings.
-"""
-try:
- config
-except NameError:
- config = None
+
+UrlMarkManager.save = (
+ lambda manager: urlmarkmanager_save(manager, config.configdir)
+)
-def is_musl_system():
- return bool(re.search('musl', os.popen("ldd /bin/ls").read()))
+def is_musl_system() -> bool:
+ return bool(re.search('musl', os.popen('ldd /bin/ls').read()))
-def select_qt_arguments():
+def get_qt_arguments() -> list:
"""
Select best arguments for launching qutebrowser.
Empty by default, it picks lag free options for musl systems.
"""
- args = []
+ filters = {
+ 'disable-seccomp-filter-sandbox': is_musl_system()
+ }
- if is_musl_system():
- args.append('disable-seccomp-filter-sandbox')
+ return list(
+ filter(lambda x: x, map(lambda x: x[1], list(filters.items())))
+ )
- return args
+
+try:
+ @cmdutils.register()
+ def bookmark_save(url: QUrl):
+ """Save the current page as a bookmark."""
+ manager = objreg.get('bookmark-manager')
+ tags = message.ask(
+ title="Add bookmark:",
+ mode=PromptMode.text,
+ url=url.toString(QUrl.RemovePassword | QUrl.FullyEncoded),
+ text=(
+ "Please enter bookmark tags for<br/><b>"
+ f"{html.escape(url.toDisplayString())}</b>"
+ ),
+ )
+
+ if not tags:
+ return
+
+ try:
+ manager.add(url, tags)
+ except UrlAlreadyExistsError:
+ message.warning("Bookmark already exists.")
+except ValueError:
+ pass
config.load_autoconfig(False)
@@ -41,9 +81,8 @@ config.set('auto_save.session', True)
config.set('scrolling.smooth', False)
config.set('qt.highdpi', False)
config.set('qt.force_software_rendering', 'none')
-config.set('qt.args', select_qt_arguments())
-
-config.bind(',m', 'spawn mpv {url}')
+config.set('qt.args', get_qt_arguments())
+config.set('messages.timeout', 2500)
config.set('content.images', True, 'chrome-devtools://*')
config.set('content.images', True, 'devtools://*')
@@ -56,12 +95,17 @@ config.set('content.notifications.enabled', False)
config.set('content.notifications.enabled', True, '*://*.zoho.eu/*')
config.set('content.notifications.enabled', True, '*://*.viperdev.io/*')
config.set('content.notifications.enabled', True, '*://*.rgoncalves.se/*')
+config.set('content.notifications.enabled', True, '*://app.slack.com/*')
+config.set('content.notifications.enabled', True, '*://mail.google.com/*')
config.set('content.register_protocol_handler', False)
config.set('content.geolocation', False)
-config.set('content.media.audio_video_capture', True, '*://*.zoho.eu/*')
-config.set('content.media.audio_capture', True, '*://*.zoho.eu/*')
-config.set('content.media.video_capture', True, '*://*.zoho.eu/*')
+# config.set('content.media.audio_video_capture', True, '*://*.zoho.eu/*')
+# config.set('content.media.audio_capture', True, '*://*.zoho.eu/*')
+# config.set('content.media.video_capture', True, '*://*.zoho.eu/*')
+config.set('content.media.audio_video_capture', True, 'https://meet.google.com/*')
+config.set('content.media.audio_capture', True, 'https://meet.google.com/*')
+config.set('content.media.video_capture', True, 'https://meet.google.com/*')
config.set('completion.web_history.max_items', 0)
config.set('tabs.background', True)
@@ -92,13 +136,26 @@ config.set('content.prefers_reduced_motion', True)
config.set('content.headers.referer', 'same-domain')
config.set('url.default_page', 'https://lite.duckduckgo.com/lite/')
config.set('url.start_pages', 'https://lite.duckduckgo.com/lite/')
-config.set('url.searchengines',
- {'DEFAULT': 'https://lite.duckduckgo.com/lite/?q={}'})
+config.set(
+ 'url.searchengines', {'DEFAULT': 'https://lite.duckduckgo.com/lite/?q={}'}
+)
config.set('downloads.location.directory', f'{os.environ["HOME"]}/downloads')
+config.set('downloads.prevent_mixed_content', False)
config.set('content.autoplay', False)
config.set('content.cookies.accept', 'no-3rdparty')
+config.set('content.javascript.alert', False)
config.set('content.headers.do_not_track', False, '*://*.thetrainline.com/*')
config.set('content.blocking.enabled', False, '*://*.thetrainline.com/*')
config.set('content.cookies.accept', 'all', '*://*.thetrainline.com/*')
+
+config.set(
+ 'editor.command', ["st", "nvim", "+normal {line}G{column0}l", "{file}"]
+)
+
+config.bind(',m', 'spawn mpv --force-window=immediate {url}')
+config.bind('M', 'bookmark-save {url}')
+
+if socket.gethostname() == 'ws-work01':
+ config.set('fonts.default_size', '14pt')
remember that computers suck.