[qutebrowser] Add config
This commit is contained in:
parent
ecf804e1ca
commit
703a0c29c8
9 changed files with 2552 additions and 0 deletions
4
config/qutebrowser/.gitignore
vendored
Normal file
4
config/qutebrowser/.gitignore
vendored
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
local.py
|
||||||
|
qsettings
|
||||||
|
bookmarks
|
||||||
|
quickmarks
|
20
config/qutebrowser/base16_gruvbox_dark_medium.py
Normal file
20
config/qutebrowser/base16_gruvbox_dark_medium.py
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# base16-qutebrowser (https://github.com/theova/base16-qutebrowser)
|
||||||
|
# Base16 qutebrowser template by theova
|
||||||
|
# Gruvbox dark, medium scheme by Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)
|
||||||
|
|
||||||
|
base00 = "#282828"
|
||||||
|
base01 = "#3c3836"
|
||||||
|
base02 = "#504945"
|
||||||
|
base03 = "#665c54"
|
||||||
|
base04 = "#bdae93"
|
||||||
|
base05 = "#d5c4a1"
|
||||||
|
base06 = "#ebdbb2"
|
||||||
|
base07 = "#fbf1c7"
|
||||||
|
base08 = "#fb4934"
|
||||||
|
base09 = "#fe8019"
|
||||||
|
base0A = "#fabd2f"
|
||||||
|
base0B = "#b8bb26"
|
||||||
|
base0C = "#8ec07c"
|
||||||
|
base0D = "#83a598"
|
||||||
|
base0E = "#d3869b"
|
||||||
|
base0F = "#d65d0e"
|
378
config/qutebrowser/config.py
Normal file
378
config/qutebrowser/config.py
Normal file
|
@ -0,0 +1,378 @@
|
||||||
|
import base16_gruvbox_dark_medium as b16
|
||||||
|
from local import GPG_KEY, NOTIF_GRANTS
|
||||||
|
|
||||||
|
# pylint: disable=C0111
|
||||||
|
c = c # noqa: F821 pylint: disable=E0602,C0103
|
||||||
|
config = config # noqa: F821 pylint: disable=E0602,C0103
|
||||||
|
|
||||||
|
########
|
||||||
|
# Misc #
|
||||||
|
########
|
||||||
|
|
||||||
|
config.set("auto_save.session", True)
|
||||||
|
config.set("colors.webpage.preferred_color_scheme", "dark")
|
||||||
|
config.set("content.autoplay", False)
|
||||||
|
config.set("content.default_encoding", "utf-8")
|
||||||
|
config.set("content.pdfjs", False)
|
||||||
|
config.set("content.plugins", False)
|
||||||
|
config.set("downloads.location.directory", "~/dl")
|
||||||
|
config.set("session.lazy_restore", True)
|
||||||
|
config.set("tabs.background", True)
|
||||||
|
config.set("tabs.last_close", "close")
|
||||||
|
config.set("tabs.mousewheel_switching", False)
|
||||||
|
config.set("tabs.new_position.unrelated", "next")
|
||||||
|
config.set("tabs.position", "left")
|
||||||
|
config.set("tabs.show", "multiple")
|
||||||
|
config.set("tabs.width", "10%")
|
||||||
|
|
||||||
|
##############
|
||||||
|
# Privileges #
|
||||||
|
##############
|
||||||
|
|
||||||
|
# Cookies
|
||||||
|
config.set("content.cookies.accept", "never", "*://*.medium.com/*")
|
||||||
|
|
||||||
|
# Media capture
|
||||||
|
config.set("content.media.audio_capture", True, "*://discord.com/*")
|
||||||
|
config.set("content.media.audio_video_capture", True, "*://discord.com/*")
|
||||||
|
config.set("content.media.video_capture", True, "*://discord.com/*")
|
||||||
|
|
||||||
|
# Notifications
|
||||||
|
for pattern in NOTIF_GRANTS:
|
||||||
|
config.set("content.notifications.enabled", True, pattern)
|
||||||
|
config.set("content.notifications.enabled", True, "*://app.slack.com/*")
|
||||||
|
config.set("content.notifications.enabled", True, "*://discord.com/*")
|
||||||
|
config.set("content.notifications.enabled", False, "*://*.reddit.com/*")
|
||||||
|
|
||||||
|
############
|
||||||
|
# Bindings #
|
||||||
|
############
|
||||||
|
|
||||||
|
# Hinting
|
||||||
|
config.bind("F", "hint all tab-bg")
|
||||||
|
config.bind(";v", "hint links spawn playvideo {hint-url}")
|
||||||
|
config.bind(";i", "hint images download")
|
||||||
|
|
||||||
|
config.bind("wi", "devtools window")
|
||||||
|
|
||||||
|
# Keepass autotype
|
||||||
|
config.bind("<Alt-Shift-u>",
|
||||||
|
"spawn --userscript qute-keepassxc --key " + GPG_KEY,
|
||||||
|
mode="insert")
|
||||||
|
config.bind("pw",
|
||||||
|
"spawn --userscript qute-keepassxc --key " + GPG_KEY,
|
||||||
|
mode="normal")
|
||||||
|
|
||||||
|
# Toggle socks proxy
|
||||||
|
config.bind("gp",
|
||||||
|
(
|
||||||
|
'config-cycle -t -p content.proxy '
|
||||||
|
'"socks://127.0.0.1:8080/" '
|
||||||
|
'"system"'
|
||||||
|
))
|
||||||
|
|
||||||
|
# Gruvbox dark theme hotswappable on demand
|
||||||
|
config.bind("<Ctrl-R>",
|
||||||
|
(
|
||||||
|
'config-cycle -t content.user_stylesheets '
|
||||||
|
'"~/.config/qutebrowser/css/gruvbox-all-sites.css" '
|
||||||
|
'""'
|
||||||
|
))
|
||||||
|
|
||||||
|
##############
|
||||||
|
# Adblocking #
|
||||||
|
##############
|
||||||
|
|
||||||
|
config.set("content.blocking.enabled", True)
|
||||||
|
config.set("content.blocking.method", "adblock")
|
||||||
|
|
||||||
|
config.set(
|
||||||
|
"content.blocking.adblock.lists",
|
||||||
|
[
|
||||||
|
str(config.configdir) + "/custom-block.txt",
|
||||||
|
"https://easylist.to/easylist/easylist.txt",
|
||||||
|
"https://easylist.to/easylist/easyprivacy.txt",
|
||||||
|
# "https://easylist.to/easylist/fanboy-annoyance.txt",
|
||||||
|
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters.txt",
|
||||||
|
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/annoyances.txt",
|
||||||
|
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/badware.txt",
|
||||||
|
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/privacy.txt",
|
||||||
|
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/resource-abuse.txt",
|
||||||
|
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/unbreak.txt",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
###############
|
||||||
|
# Color theme #
|
||||||
|
###############
|
||||||
|
|
||||||
|
# Text color of the completion widget. May be a single color to use for
|
||||||
|
# all columns or a list of three colors, one for each column.
|
||||||
|
c.colors.completion.fg = b16.base05
|
||||||
|
|
||||||
|
# Background color of the completion widget for odd rows.
|
||||||
|
c.colors.completion.odd.bg = b16.base03
|
||||||
|
|
||||||
|
# Background color of the completion widget for even rows.
|
||||||
|
c.colors.completion.even.bg = b16.base00
|
||||||
|
|
||||||
|
# Foreground color of completion widget category headers.
|
||||||
|
c.colors.completion.category.fg = b16.base0A
|
||||||
|
|
||||||
|
# Background color of the completion widget category headers.
|
||||||
|
c.colors.completion.category.bg = b16.base00
|
||||||
|
|
||||||
|
# Top border color of the completion widget category headers.
|
||||||
|
c.colors.completion.category.border.top = b16.base00
|
||||||
|
|
||||||
|
# Bottom border color of the completion widget category headers.
|
||||||
|
c.colors.completion.category.border.bottom = b16.base00
|
||||||
|
|
||||||
|
# Foreground color of the selected completion item.
|
||||||
|
c.colors.completion.item.selected.fg = b16.base01
|
||||||
|
|
||||||
|
# Background color of the selected completion item.
|
||||||
|
c.colors.completion.item.selected.bg = b16.base0A
|
||||||
|
|
||||||
|
# Top border color of the selected completion item.
|
||||||
|
c.colors.completion.item.selected.border.top = b16.base0A
|
||||||
|
|
||||||
|
# Bottom border color of the selected completion item.
|
||||||
|
c.colors.completion.item.selected.border.bottom = b16.base0A
|
||||||
|
|
||||||
|
# Foreground color of the matched text in the selected completion item.
|
||||||
|
c.colors.completion.item.selected.match.fg = b16.base08
|
||||||
|
|
||||||
|
# Foreground color of the matched text in the completion.
|
||||||
|
c.colors.completion.match.fg = b16.base0B
|
||||||
|
|
||||||
|
# Color of the scrollbar handle in the completion view.
|
||||||
|
c.colors.completion.scrollbar.fg = b16.base05
|
||||||
|
|
||||||
|
# Color of the scrollbar in the completion view.
|
||||||
|
c.colors.completion.scrollbar.bg = b16.base00
|
||||||
|
|
||||||
|
# Background color of the context menu. If set to null, the Qt default is used.
|
||||||
|
c.colors.contextmenu.menu.bg = b16.base00
|
||||||
|
|
||||||
|
# Foreground color of the context menu. If set to null, the Qt default is used.
|
||||||
|
c.colors.contextmenu.menu.fg = b16.base05
|
||||||
|
|
||||||
|
# Background color of the context menu’s selected item.
|
||||||
|
# If set to null, the Qt default is used.
|
||||||
|
c.colors.contextmenu.selected.bg = b16.base0A
|
||||||
|
|
||||||
|
# Foreground color of the context menu’s selected item.
|
||||||
|
# If set to null, the Qt default is used.
|
||||||
|
c.colors.contextmenu.selected.fg = b16.base01
|
||||||
|
|
||||||
|
# Background color for the download bar.
|
||||||
|
c.colors.downloads.bar.bg = b16.base00
|
||||||
|
|
||||||
|
# Color gradient start for download text.
|
||||||
|
c.colors.downloads.start.fg = b16.base00
|
||||||
|
|
||||||
|
# Color gradient start for download backgrounds.
|
||||||
|
c.colors.downloads.start.bg = b16.base0D
|
||||||
|
|
||||||
|
# Color gradient end for download text.
|
||||||
|
c.colors.downloads.stop.fg = b16.base00
|
||||||
|
|
||||||
|
# Color gradient stop for download backgrounds.
|
||||||
|
c.colors.downloads.stop.bg = b16.base0C
|
||||||
|
|
||||||
|
# Foreground color for downloads with errors.
|
||||||
|
c.colors.downloads.error.fg = b16.base08
|
||||||
|
|
||||||
|
# Font color for hints.
|
||||||
|
c.colors.hints.fg = b16.base00
|
||||||
|
|
||||||
|
# Background color for hints. Note that you can use a `rgba(...)` value
|
||||||
|
# for transparency.
|
||||||
|
c.colors.hints.bg = b16.base0A
|
||||||
|
|
||||||
|
# Font color for the matched part of hints.
|
||||||
|
c.colors.hints.match.fg = b16.base05
|
||||||
|
|
||||||
|
# Text color for the keyhint widget.
|
||||||
|
c.colors.keyhint.fg = b16.base05
|
||||||
|
|
||||||
|
# Highlight color for keys to complete the current keychain.
|
||||||
|
c.colors.keyhint.suffix.fg = b16.base05
|
||||||
|
|
||||||
|
# Background color of the keyhint widget.
|
||||||
|
c.colors.keyhint.bg = b16.base00
|
||||||
|
|
||||||
|
# Foreground color of an error message.
|
||||||
|
c.colors.messages.error.fg = b16.base00
|
||||||
|
|
||||||
|
# Background color of an error message.
|
||||||
|
c.colors.messages.error.bg = b16.base08
|
||||||
|
|
||||||
|
# Border color of an error message.
|
||||||
|
c.colors.messages.error.border = b16.base08
|
||||||
|
|
||||||
|
# Foreground color of a warning message.
|
||||||
|
c.colors.messages.warning.fg = b16.base00
|
||||||
|
|
||||||
|
# Background color of a warning message.
|
||||||
|
c.colors.messages.warning.bg = b16.base0E
|
||||||
|
|
||||||
|
# Border color of a warning message.
|
||||||
|
c.colors.messages.warning.border = b16.base0E
|
||||||
|
|
||||||
|
# Foreground color of an info message.
|
||||||
|
c.colors.messages.info.fg = b16.base05
|
||||||
|
|
||||||
|
# Background color of an info message.
|
||||||
|
c.colors.messages.info.bg = b16.base00
|
||||||
|
|
||||||
|
# Border color of an info message.
|
||||||
|
c.colors.messages.info.border = b16.base00
|
||||||
|
|
||||||
|
# Foreground color for prompts.
|
||||||
|
c.colors.prompts.fg = b16.base05
|
||||||
|
|
||||||
|
# Border used around UI elements in prompts.
|
||||||
|
c.colors.prompts.border = b16.base00
|
||||||
|
|
||||||
|
# Background color for prompts.
|
||||||
|
c.colors.prompts.bg = b16.base00
|
||||||
|
|
||||||
|
# Background color for the selected item in filename prompts.
|
||||||
|
c.colors.prompts.selected.bg = b16.base0A
|
||||||
|
|
||||||
|
# Foreground color of the statusbar.
|
||||||
|
c.colors.statusbar.normal.fg = b16.base0B
|
||||||
|
|
||||||
|
# Background color of the statusbar.
|
||||||
|
c.colors.statusbar.normal.bg = b16.base00
|
||||||
|
|
||||||
|
# Foreground color of the statusbar in insert mode.
|
||||||
|
c.colors.statusbar.insert.fg = b16.base00
|
||||||
|
|
||||||
|
# Background color of the statusbar in insert mode.
|
||||||
|
c.colors.statusbar.insert.bg = b16.base0D
|
||||||
|
|
||||||
|
# Foreground color of the statusbar in passthrough mode.
|
||||||
|
c.colors.statusbar.passthrough.fg = b16.base00
|
||||||
|
|
||||||
|
# Background color of the statusbar in passthrough mode.
|
||||||
|
c.colors.statusbar.passthrough.bg = b16.base0C
|
||||||
|
|
||||||
|
# Foreground color of the statusbar in private browsing mode.
|
||||||
|
c.colors.statusbar.private.fg = b16.base00
|
||||||
|
|
||||||
|
# Background color of the statusbar in private browsing mode.
|
||||||
|
c.colors.statusbar.private.bg = b16.base03
|
||||||
|
|
||||||
|
# Foreground color of the statusbar in command mode.
|
||||||
|
c.colors.statusbar.command.fg = b16.base05
|
||||||
|
|
||||||
|
# Background color of the statusbar in command mode.
|
||||||
|
c.colors.statusbar.command.bg = b16.base00
|
||||||
|
|
||||||
|
# Foreground color of the statusbar in private browsing + command mode.
|
||||||
|
c.colors.statusbar.command.private.fg = b16.base05
|
||||||
|
|
||||||
|
# Background color of the statusbar in private browsing + command mode.
|
||||||
|
c.colors.statusbar.command.private.bg = b16.base00
|
||||||
|
|
||||||
|
# Foreground color of the statusbar in caret mode.
|
||||||
|
c.colors.statusbar.caret.fg = b16.base00
|
||||||
|
|
||||||
|
# Background color of the statusbar in caret mode.
|
||||||
|
c.colors.statusbar.caret.bg = b16.base0E
|
||||||
|
|
||||||
|
# Foreground color of the statusbar in caret mode with a selection.
|
||||||
|
c.colors.statusbar.caret.selection.fg = b16.base00
|
||||||
|
|
||||||
|
# Background color of the statusbar in caret mode with a selection.
|
||||||
|
c.colors.statusbar.caret.selection.bg = b16.base0D
|
||||||
|
|
||||||
|
# Background color of the progress bar.
|
||||||
|
c.colors.statusbar.progress.bg = b16.base0D
|
||||||
|
|
||||||
|
# Default foreground color of the URL in the statusbar.
|
||||||
|
c.colors.statusbar.url.fg = b16.base05
|
||||||
|
|
||||||
|
# Foreground color of the URL in the statusbar on error.
|
||||||
|
c.colors.statusbar.url.error.fg = b16.base08
|
||||||
|
|
||||||
|
# Foreground color of the URL in the statusbar for hovered links.
|
||||||
|
c.colors.statusbar.url.hover.fg = b16.base05
|
||||||
|
|
||||||
|
# Foreground color of the URL in the statusbar on successful load
|
||||||
|
# (http).
|
||||||
|
c.colors.statusbar.url.success.http.fg = b16.base0C
|
||||||
|
|
||||||
|
# Foreground color of the URL in the statusbar on successful load
|
||||||
|
# (https).
|
||||||
|
c.colors.statusbar.url.success.https.fg = b16.base0B
|
||||||
|
|
||||||
|
# Foreground color of the URL in the statusbar when there's a warning.
|
||||||
|
c.colors.statusbar.url.warn.fg = b16.base0E
|
||||||
|
|
||||||
|
# Background color of the tab bar.
|
||||||
|
c.colors.tabs.bar.bg = b16.base00
|
||||||
|
|
||||||
|
# Color gradient start for the tab indicator.
|
||||||
|
c.colors.tabs.indicator.start = b16.base0D
|
||||||
|
|
||||||
|
# Color gradient end for the tab indicator.
|
||||||
|
c.colors.tabs.indicator.stop = b16.base0C
|
||||||
|
|
||||||
|
# Color for the tab indicator on errors.
|
||||||
|
c.colors.tabs.indicator.error = b16.base08
|
||||||
|
|
||||||
|
# Foreground color of unselected odd tabs.
|
||||||
|
c.colors.tabs.odd.fg = b16.base05
|
||||||
|
|
||||||
|
# Background color of unselected odd tabs.
|
||||||
|
c.colors.tabs.odd.bg = b16.base03
|
||||||
|
|
||||||
|
# Foreground color of unselected even tabs.
|
||||||
|
c.colors.tabs.even.fg = b16.base05
|
||||||
|
|
||||||
|
# Background color of unselected even tabs.
|
||||||
|
c.colors.tabs.even.bg = b16.base00
|
||||||
|
|
||||||
|
# Background color of pinned unselected even tabs.
|
||||||
|
c.colors.tabs.pinned.even.bg = b16.base0C
|
||||||
|
|
||||||
|
# Foreground color of pinned unselected even tabs.
|
||||||
|
c.colors.tabs.pinned.even.fg = b16.base07
|
||||||
|
|
||||||
|
# Background color of pinned unselected odd tabs.
|
||||||
|
c.colors.tabs.pinned.odd.bg = b16.base0B
|
||||||
|
|
||||||
|
# Foreground color of pinned unselected odd tabs.
|
||||||
|
c.colors.tabs.pinned.odd.fg = b16.base07
|
||||||
|
|
||||||
|
# Background color of pinned selected even tabs.
|
||||||
|
c.colors.tabs.pinned.selected.even.bg = b16.base05
|
||||||
|
|
||||||
|
# Foreground color of pinned selected even tabs.
|
||||||
|
c.colors.tabs.pinned.selected.even.fg = b16.base00
|
||||||
|
|
||||||
|
# Background color of pinned selected odd tabs.
|
||||||
|
c.colors.tabs.pinned.selected.odd.bg = b16.base05
|
||||||
|
|
||||||
|
# Foreground color of pinned selected odd tabs.
|
||||||
|
c.colors.tabs.pinned.selected.odd.fg = b16.base0E
|
||||||
|
|
||||||
|
# Foreground color of selected odd tabs.
|
||||||
|
c.colors.tabs.selected.odd.fg = b16.base00
|
||||||
|
|
||||||
|
# Background color of selected odd tabs.
|
||||||
|
c.colors.tabs.selected.odd.bg = b16.base05
|
||||||
|
|
||||||
|
# Foreground color of selected even tabs.
|
||||||
|
c.colors.tabs.selected.even.fg = b16.base00
|
||||||
|
|
||||||
|
# Background color of selected even tabs.
|
||||||
|
c.colors.tabs.selected.even.bg = b16.base05
|
||||||
|
|
||||||
|
# Background color for webpages if unset (or empty to use the theme's
|
||||||
|
# color).
|
||||||
|
# c.colors.webpage.bg = b16.base00
|
1714
config/qutebrowser/css/gruvbox-all-sites.css
Normal file
1714
config/qutebrowser/css/gruvbox-all-sites.css
Normal file
File diff suppressed because it is too large
Load diff
3
config/qutebrowser/custom-block.txt
Normal file
3
config/qutebrowser/custom-block.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
||*.youtube.com
|
||||||
|
||tweetdeck.twitter.com
|
||||||
|
||twitter.com
|
332
config/qutebrowser/greasemonkey/direct_links_out.js
Normal file
332
config/qutebrowser/greasemonkey/direct_links_out.js
Normal file
|
@ -0,0 +1,332 @@
|
||||||
|
// ==UserScript==
|
||||||
|
// @name Direct links out
|
||||||
|
// @name:ru Прямые ссылки наружу
|
||||||
|
// @description Removes all "You are leaving our site" and redirection stuff from links
|
||||||
|
// @description:ru Убирает "Бла-бла-бла, Вы покидаете наш сайт" и переадресации из ссылок
|
||||||
|
// @namespace https://github.com/nokeya
|
||||||
|
// @author nokeya
|
||||||
|
// @update https://github.com/nokeya/direct-links-out/raw/master/direct-links-out.user.js
|
||||||
|
// @icon https://raw.githubusercontent.com/nokeya/direct-links-out/master/icon.png
|
||||||
|
// @version 2.19
|
||||||
|
// @grant none
|
||||||
|
//google
|
||||||
|
// @include *://google.*
|
||||||
|
// @include *://www.google.*
|
||||||
|
// @include *://encrypted.google.*
|
||||||
|
//yandex
|
||||||
|
// @match *://yandex.ru/*
|
||||||
|
// @match *://yandex.ua/*
|
||||||
|
// @match *://yandex.by/*
|
||||||
|
// @match *://yandex.kz/*
|
||||||
|
// @match *://yandex.com.tr/*
|
||||||
|
// @match *://yandex.com/*
|
||||||
|
// @match *://*.yandex.ru/*
|
||||||
|
// @match *://*.yandex.ua/*
|
||||||
|
// @match *://*.yandex.by/*
|
||||||
|
// @match *://*.yandex.kz/*
|
||||||
|
// @match *://*.yandex.com.tr/*
|
||||||
|
// @match *://*.yandex.com/*
|
||||||
|
//youtube
|
||||||
|
// @match *://youtube.com/*
|
||||||
|
// @match *://*.youtube.com/*
|
||||||
|
//wikimapia
|
||||||
|
// @match *://wikimapia.org/*
|
||||||
|
//deviantart
|
||||||
|
// @match *://deviantart.com/*
|
||||||
|
// @match *://*.deviantart.com/*
|
||||||
|
//joyreactor
|
||||||
|
// @match *://joyreactor.cc/*
|
||||||
|
// @match *://*.joyreactor.cc/*
|
||||||
|
// @match *://reactor.cc/*
|
||||||
|
// @match *://*.reactor.cc/*
|
||||||
|
// @match *://joyreactor.com/*
|
||||||
|
// @match *://*.joyreactor.com/*
|
||||||
|
//vk
|
||||||
|
// @match *://vk.com/*
|
||||||
|
// @match *://*.vk.com/*
|
||||||
|
//ok
|
||||||
|
// @match *://ok.ru/*
|
||||||
|
// @match *://*.ok.ru/*
|
||||||
|
//steam
|
||||||
|
// @match *://steamcommunity.com/*
|
||||||
|
// @match *://*.steamcommunity.com/*
|
||||||
|
//fb
|
||||||
|
// @match *://facebook.com/*
|
||||||
|
// @match *://*.facebook.com/*
|
||||||
|
//twitter
|
||||||
|
// @match *://twitter.com/*
|
||||||
|
// @match *://*.twitter.com/*
|
||||||
|
//4pda
|
||||||
|
// @match *://4pda.ru/*
|
||||||
|
// @match *://*.4pda.ru/*
|
||||||
|
//kickass
|
||||||
|
// @match *://kat.cr/*
|
||||||
|
// @match *://kickassto.co/*
|
||||||
|
// @match *://katproxy.is/*
|
||||||
|
// @match *://thekat.tv/*
|
||||||
|
// @match *://*.kat.cr/*
|
||||||
|
// @match *://*.kickassto.co/*
|
||||||
|
// @match *://*.katproxy.is/*
|
||||||
|
// @match *://*.thekat.tv/*
|
||||||
|
//AMO
|
||||||
|
// @match *://addons.mozilla.org/*
|
||||||
|
//pixiv
|
||||||
|
// @match *://pixiv.net/*
|
||||||
|
// @match *://*.pixiv.net/*
|
||||||
|
//tumblr
|
||||||
|
// @match *://tumblr.com/*
|
||||||
|
// @match *://*.tumblr.com/*
|
||||||
|
//danieldefo
|
||||||
|
// @match *://danieldefo.ru/*
|
||||||
|
// @match *://*.danieldefo.ru/*
|
||||||
|
//yaplakal
|
||||||
|
// @match *://yaplakal.com/*
|
||||||
|
// @match *://*.yaplakal.com/*
|
||||||
|
//soundcloud
|
||||||
|
// @match *://soundcloud.com/*
|
||||||
|
// @match *://*.soundcloud.com/*
|
||||||
|
//upwork
|
||||||
|
// @match *://upwork.com/*
|
||||||
|
// @match *://*.upwork.com/*
|
||||||
|
//picarto
|
||||||
|
// @match *://picarto.tv/*
|
||||||
|
// @match *://*.picarto.tv/*
|
||||||
|
//taker
|
||||||
|
// @match *://taker.im/*
|
||||||
|
// @match *://*.taker.im/*
|
||||||
|
//forumavia
|
||||||
|
// @match *://*.forumavia.ru/*
|
||||||
|
//slack
|
||||||
|
// @match *://*.slack.com/*
|
||||||
|
//instagram
|
||||||
|
// @match *://instagram.com/*
|
||||||
|
// @match *://*.instagram.com/*
|
||||||
|
|
||||||
|
// ==/UserScript==
|
||||||
|
(function() {
|
||||||
|
// anchors and functions
|
||||||
|
var anchor;
|
||||||
|
var after;
|
||||||
|
var rwLink = function(){};
|
||||||
|
var rwAll = function(){};
|
||||||
|
var retTrue = function() { return true; }; //dummy function to always return true
|
||||||
|
|
||||||
|
// simple rewrite link - based on anchors
|
||||||
|
function rwSimple(link){
|
||||||
|
if (anchor){
|
||||||
|
var ndx = link.href.indexOf(anchor);
|
||||||
|
if (ndx != -1){
|
||||||
|
var newlink = link.href.substring(ndx + anchor.length);
|
||||||
|
if (after){
|
||||||
|
ndx = newlink.indexOf(after);
|
||||||
|
if (ndx != -1)
|
||||||
|
newlink = newlink.substring(0, ndx);
|
||||||
|
}
|
||||||
|
link.href = unescape(newlink);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function rwaSimple(){
|
||||||
|
var links = document.getElementsByTagName('a');
|
||||||
|
for (var i = 0; i < links.length; ++i)
|
||||||
|
rwLink(links[i]);
|
||||||
|
}
|
||||||
|
// vk
|
||||||
|
function rwVK(link){
|
||||||
|
if (link.className === 'page_media_link_thumb')
|
||||||
|
{
|
||||||
|
var parent = link.parentNode;
|
||||||
|
link.href = parent.getAttribute("href");
|
||||||
|
parent.removeAttribute('href');
|
||||||
|
parent.removeAttribute('onclick');
|
||||||
|
link.removeAttribute('onclick');
|
||||||
|
}
|
||||||
|
|
||||||
|
var ndx = link.href.indexOf(anchor);
|
||||||
|
if (ndx != -1){
|
||||||
|
var newlink = link.href.substring(ndx + anchor.length);
|
||||||
|
var afterArr = ['&post=', '&el=snippet', '&cc_key='];
|
||||||
|
for (var i = 0; i < afterArr.length; ++i){
|
||||||
|
ndx = newlink.indexOf(afterArr[i]);
|
||||||
|
if (ndx != -1)
|
||||||
|
newlink = newlink.substring(0, ndx);
|
||||||
|
}
|
||||||
|
link.href = unescape(newlink);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// twitter
|
||||||
|
function rwTwitter(link){
|
||||||
|
if (link.hasAttribute('data-expanded-url')){
|
||||||
|
link.href = link.getAttribute('data-expanded-url');
|
||||||
|
link.removeAttribute('data-expanded-url');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function rwaTwitter(){
|
||||||
|
var links = document.getElementsByClassName('twitter-timeline-link');
|
||||||
|
for (var i = 0; i < links.length; ++i)
|
||||||
|
rwLink(links[i]);
|
||||||
|
}
|
||||||
|
// kickass
|
||||||
|
function rwKickass(link){
|
||||||
|
var ndx = link.href.indexOf(anchor);
|
||||||
|
if (ndx != -1){
|
||||||
|
link.href = window.atob(unescape(link.href.substring(ndx + anchor.length, link.href.length - 1)));
|
||||||
|
link.className = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// youtube
|
||||||
|
function rwYoutube(link){
|
||||||
|
if (/redirect/i.test(link.className))
|
||||||
|
link.setAttribute('data-redirect-href-updated', 'true');
|
||||||
|
rwSimple(link);
|
||||||
|
}
|
||||||
|
// facebook
|
||||||
|
function rwFacebook(link){
|
||||||
|
if (/referrer_log/i.test(link.onclick)){
|
||||||
|
link.removeAttribute('onclick');
|
||||||
|
link.removeAttribute('onmouseover');
|
||||||
|
}
|
||||||
|
rwSimple(link);
|
||||||
|
}
|
||||||
|
// google
|
||||||
|
function rwGoogle(link){
|
||||||
|
// replace global rwt script
|
||||||
|
if (window.rwt && window.rwt != retTrue){
|
||||||
|
delete window.rwt;
|
||||||
|
Object.defineProperty(window, 'rwt', { value: retTrue, writable: false });
|
||||||
|
}
|
||||||
|
|
||||||
|
// main search
|
||||||
|
if (link.hasAttribute('onmousedown'))
|
||||||
|
link.removeAttribute('onmousedown');
|
||||||
|
// images
|
||||||
|
if (link.hasAttribute('jsaction')){
|
||||||
|
var tmp = link.getAttribute('jsaction');
|
||||||
|
if (tmp)
|
||||||
|
link.setAttribute('jsaction', tmp.replace(/(mousedown:irc.rl|keydown:irc.rlk)/g,''));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// yandex
|
||||||
|
function rwYandex(link){
|
||||||
|
// main search
|
||||||
|
if (link.hasAttribute('onmousedown'))
|
||||||
|
link.removeAttribute('onmousedown');
|
||||||
|
// images
|
||||||
|
anchor = '&img_url=';
|
||||||
|
after = '&pos=';
|
||||||
|
rwSimple(link);
|
||||||
|
}
|
||||||
|
//mozilla addons store
|
||||||
|
function rwAMO(link){
|
||||||
|
if (/outgoing.prod.mozaws.net/i.test(link.href)){
|
||||||
|
var tmp = link.href;
|
||||||
|
link.href = "#";
|
||||||
|
// we have to fight mozilla's replacing of direct redirect string with jquery events
|
||||||
|
setTimeout(function(){ link.href = unescape(tmp.replace(/(http|https):\/\/outgoing.prod.mozaws.net\/v1\/[0-9a-zA-Z]+\//i,'')); }, 100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// daniueldefo
|
||||||
|
function rwDanielDefo(link){
|
||||||
|
if (link.hasAttribute('data-proxy-href'))
|
||||||
|
link.removeAttribute('data-proxy-href');
|
||||||
|
}
|
||||||
|
|
||||||
|
// slack
|
||||||
|
function rwSlack(link){
|
||||||
|
link.removeAttribute('onclick');
|
||||||
|
link.removeAttribute('onmouseover');
|
||||||
|
}
|
||||||
|
|
||||||
|
// determine anchors, functions and listeners
|
||||||
|
(function ()
|
||||||
|
{
|
||||||
|
rwLink = rwSimple;
|
||||||
|
rwAll = rwaSimple;
|
||||||
|
|
||||||
|
var loc = window.location.hostname;
|
||||||
|
if (/google/i.test(loc))
|
||||||
|
rwLink = rwGoogle;
|
||||||
|
else if (/youtube/i.test(loc)){
|
||||||
|
anchor = 'redirect?q=';
|
||||||
|
after = '&redir_token=';
|
||||||
|
rwLink = rwYoutube;
|
||||||
|
}
|
||||||
|
else if (/facebook/i.test(loc)){
|
||||||
|
anchor = 'u=';
|
||||||
|
after = '&h=';
|
||||||
|
rwLink = rwFacebook;
|
||||||
|
}
|
||||||
|
else if (/instagram/i.test(loc)){
|
||||||
|
anchor = 'u=';
|
||||||
|
after = '&e=';
|
||||||
|
}
|
||||||
|
else if (/twitter/i.test(loc)){
|
||||||
|
rwLink = rwTwitter;
|
||||||
|
rwAll = rwaTwitter;
|
||||||
|
}
|
||||||
|
else if (/yandex/i.test(loc))
|
||||||
|
rwLink = rwYandex;
|
||||||
|
else if (/vk/i.test(loc)){
|
||||||
|
anchor = 'to=';
|
||||||
|
rwLink = rwVK;
|
||||||
|
}
|
||||||
|
else if (/ok/i.test(loc)){
|
||||||
|
anchor = 'st.link=';
|
||||||
|
after = '&st.name=';
|
||||||
|
}
|
||||||
|
else if (/pixiv/i.test(loc))
|
||||||
|
anchor = 'jump.php?';
|
||||||
|
else if (/tumblr/i.test(loc)){
|
||||||
|
anchor = "redirect?z=";
|
||||||
|
after = "&t=";
|
||||||
|
}
|
||||||
|
else if (/deviantart/i.test(loc))
|
||||||
|
anchor = 'outgoing?';
|
||||||
|
else if (/(steam|reactor)/i.test(loc))
|
||||||
|
anchor = 'url=';
|
||||||
|
else if (/(kat|kickass)/i.test(loc)){
|
||||||
|
anchor = 'confirm/url/';
|
||||||
|
rwLink = rwKickass;
|
||||||
|
}
|
||||||
|
else if (/soundcloud/i.test(loc))
|
||||||
|
anchor = "exit.sc/?url=";
|
||||||
|
else if (/upwork/i.test(loc))
|
||||||
|
anchor = 'leaving-odesk?ref=';
|
||||||
|
else if (/4pda/i.test(loc)){
|
||||||
|
anchor = 'go/?u=';
|
||||||
|
after = '&e=';
|
||||||
|
}
|
||||||
|
else if (/mozilla/i.test(loc))
|
||||||
|
rwLink = rwAMO;
|
||||||
|
else if (/danieldefo/i.test(loc))
|
||||||
|
rwLink = rwDanielDefo;
|
||||||
|
else if (/yaplakal/i.test(loc))
|
||||||
|
anchor = "go/?";
|
||||||
|
else if (/wikimapia.org/i.test(loc))
|
||||||
|
anchor = 'external_link?url=';
|
||||||
|
else if (/forumavia.ru/i.test(loc))
|
||||||
|
anchor = '/e/?l=';
|
||||||
|
else if (/picarto/i.test(loc)){
|
||||||
|
anchor = "referrer?go=";
|
||||||
|
after = "&ref=";
|
||||||
|
}
|
||||||
|
else if (/taker/i.test(loc))
|
||||||
|
anchor = "phpBB2/goto/";
|
||||||
|
else if (/slack/i.test(loc))
|
||||||
|
rwLink = rwSlack;
|
||||||
|
|
||||||
|
document.addEventListener('DOMNodeInserted', function(event){
|
||||||
|
if (!event || !event.target || !(event.target instanceof HTMLElement))
|
||||||
|
return;
|
||||||
|
var node = event.target;
|
||||||
|
if (node instanceof HTMLAnchorElement)
|
||||||
|
rwLink(node);
|
||||||
|
var links = node.getElementsByTagName('a');
|
||||||
|
for (var i = 0; i < links.length; ++i)
|
||||||
|
rwLink(links[i]);
|
||||||
|
}, false);
|
||||||
|
})();
|
||||||
|
rwAll();
|
||||||
|
})();
|
79
config/qutebrowser/greasemonkey/disable_autogain.js
Normal file
79
config/qutebrowser/greasemonkey/disable_autogain.js
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
// https://github.com/joeywatts/disable-autogain-control-extension/blob/master/disableAutogain.js
|
||||||
|
(function() {
|
||||||
|
function setLegacyChromeConstraint(constraint, name, value) {
|
||||||
|
if (constraint.mandatory && name in constraint.mandatory) {
|
||||||
|
constraint.mandatory[name] = value;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (constraint.optional) {
|
||||||
|
const element = constraint.optional.find(opt => name in opt);
|
||||||
|
if (element) {
|
||||||
|
element[name] = value;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// `mandatory` options throw errors for unknown keys, so avoid that by
|
||||||
|
// setting it under optional.
|
||||||
|
if (!constraint.optional) {
|
||||||
|
constraint.optional = [];
|
||||||
|
}
|
||||||
|
constraint.optional.push({ [name]: value });
|
||||||
|
}
|
||||||
|
function setConstraint(constraint, name, value) {
|
||||||
|
if (constraint.advanced) {
|
||||||
|
const element = constraint.advanced.find(opt => name in opt);
|
||||||
|
if (element) {
|
||||||
|
element[name] = value;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
constraint[name] = value;
|
||||||
|
}
|
||||||
|
function disableAutogain(constraints) {
|
||||||
|
console.log("Automatically unsetting gain!", constraints);
|
||||||
|
if (constraints && constraints.audio) {
|
||||||
|
if (typeof constraints.audio !== "object") {
|
||||||
|
constraints.audio = {};
|
||||||
|
}
|
||||||
|
if (constraints.audio.optional || constraints.audio.mandatory) {
|
||||||
|
setLegacyChromeConstraint(constraints.audio, "googAutoGainControl", false);
|
||||||
|
setLegacyChromeConstraint(constraints.audio, "googAutoGainControl2", false);
|
||||||
|
} else {
|
||||||
|
setConstraint(constraints.audio, "autoGainControl", false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function patchFunction(object, name, createNewFunction) {
|
||||||
|
if (name in object) {
|
||||||
|
var original = object[name];
|
||||||
|
object[name] = createNewFunction(original);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
patchFunction(navigator.mediaDevices, "getUserMedia", function (original) {
|
||||||
|
return function getUserMedia(constraints) {
|
||||||
|
disableAutogain(constraints);
|
||||||
|
return original.call(this, constraints);
|
||||||
|
};
|
||||||
|
});
|
||||||
|
function patchDeprecatedGetUserMedia(original) {
|
||||||
|
return function getUserMedia(constraints, success, error) {
|
||||||
|
disableAutogain(constraints);
|
||||||
|
return original.call(this, constraints, success, error);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
patchFunction(navigator, "getUserMedia", patchDeprecatedGetUserMedia);
|
||||||
|
patchFunction(navigator, "mozGetUserMedia", patchDeprecatedGetUserMedia);
|
||||||
|
patchFunction(navigator, "webkitGetUserMedia", patchDeprecatedGetUserMedia);
|
||||||
|
patchFunction(MediaStreamTrack.prototype, "applyConstraints", function (original) {
|
||||||
|
return function applyConstraints(constraints) {
|
||||||
|
disableAutogain(constraints);
|
||||||
|
return original.call(this, constraints);
|
||||||
|
};
|
||||||
|
});
|
||||||
|
console.log(
|
||||||
|
"Disable Autogain by Joey Watts!",
|
||||||
|
navigator.mediaDevices.getUserMedia
|
||||||
|
);
|
||||||
|
})();
|
15
config/qutebrowser/greasemonkey/nitter_redirect.js
Normal file
15
config/qutebrowser/greasemonkey/nitter_redirect.js
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
// ==UserScript==
|
||||||
|
// @name Nitter redirector
|
||||||
|
// @namespace https://gist.github.com/bitraid/d1901de54382532a03b9b22a207f0417
|
||||||
|
// @version 1.0
|
||||||
|
// @description reddit to teddit
|
||||||
|
// @match *://*.twitter.com/*
|
||||||
|
// @match *://twitter.com/*
|
||||||
|
// @grant none
|
||||||
|
// @run-at document-start
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
top.location.hostname = "nitter.pussthecat.org";
|
||||||
|
})();
|
7
config/qutebrowser/local.py.example
Normal file
7
config/qutebrowser/local.py.example
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
GPG_KEY = "D1D400EBE283A278E72A6ED40FDA27891A60E157"
|
||||||
|
NOTIF_GRANTS = [
|
||||||
|
"*://example.com/*",
|
||||||
|
"*://cool.website/*",
|
||||||
|
]
|
||||||
|
|
||||||
|
# vim: syntax=python
|
Loading…
Add table
Reference in a new issue