summaryrefslogtreecommitdiff
path: root/ar
diff options
context:
space:
mode:
authorTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2025-02-10 08:24:09 +0900
committerTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2025-02-10 08:24:09 +0900
commit8db391ce6ca07ec78780c782a204abee357d73d0 (patch)
tree97df2788261b86c9e2cb1bb45116ebc51c55af71 /ar
parent9a1d363908228a4d9fffec191aff106598a6ac27 (diff)
modified qutebrowser/config.py, modified bin/bookmarks, created greasemonkey/, created bin/umpv
Diffstat (limited to 'ar')
-rw-r--r--ar/.config/qutebrowser/config.py46
-rw-r--r--ar/.config/qutebrowser/greasemonkey/0x0.css.js29
-rw-r--r--ar/.config/qutebrowser/greasemonkey/arstechnica.css.js21
-rw-r--r--ar/.config/qutebrowser/greasemonkey/cnn-lite.css.js31
-rw-r--r--ar/.config/qutebrowser/greasemonkey/csmonitor-text.css.js43
-rw-r--r--ar/.config/qutebrowser/greasemonkey/dienet.css.js67
-rw-r--r--ar/.config/qutebrowser/greasemonkey/dir.css.js72
-rw-r--r--ar/.config/qutebrowser/greasemonkey/fandom.css.js27
-rw-r--r--ar/.config/qutebrowser/greasemonkey/git-scm.css.js38
-rw-r--r--ar/.config/qutebrowser/greasemonkey/google.css.js12
-rw-r--r--ar/.config/qutebrowser/greasemonkey/imdb.css.js12
-rw-r--r--ar/.config/qutebrowser/greasemonkey/leadertelegram.css.js18
-rw-r--r--ar/.config/qutebrowser/greasemonkey/manpages.css.js75
-rw-r--r--ar/.config/qutebrowser/greasemonkey/npr-text.css.js33
-rw-r--r--ar/.config/qutebrowser/greasemonkey/opengroup.css.js50
-rw-r--r--ar/.config/qutebrowser/greasemonkey/rarbg.css.js12
-rw-r--r--ar/.config/qutebrowser/greasemonkey/reddit.css.js41
-rw-r--r--ar/.config/qutebrowser/greasemonkey/smbc-comics.css.js31
-rw-r--r--ar/.config/qutebrowser/greasemonkey/stackexchange.css.js44
-rw-r--r--ar/.config/qutebrowser/greasemonkey/termbin.css.js32
-rw-r--r--ar/.config/qutebrowser/greasemonkey/wiki.css.js33
-rw-r--r--ar/.config/qutebrowser/greasemonkey/xkcd.css.js44
-rw-r--r--ar/.config/qutebrowser/greasemonkey/ycombinator.css.js74
-rw-r--r--ar/.config/qutebrowser/greasemonkey/youtube-ads.js23
-rw-r--r--ar/.config/qutebrowser/greasemonkey/youtube.css.js18
-rwxr-xr-xar/.local/bin/bookmarks7
-rwxr-xr-xar/.local/bin/umpv103
27 files changed, 1010 insertions, 26 deletions
diff --git a/ar/.config/qutebrowser/config.py b/ar/.config/qutebrowser/config.py
index ad9cac6..a7841dc 100644
--- a/ar/.config/qutebrowser/config.py
+++ b/ar/.config/qutebrowser/config.py
@@ -2156,29 +2156,29 @@ c.url.default_page = "https://searx.thesiah.xyz/"
## qutebrowser`.
## Type: Dict
c.url.searchengines = {
- "DEFAULT": "https://searx.thesiah.xyz/search?q={}",
- "a": "https://www.amazon.com/s/?field-keywords=%s",
- "ar": "https://wiki.archlinux.org/index.php?search=%s",
- "b": "https://search.brave.com/search?q=%s",
- "cp": "https://www.coupang.com/np/search?component=&q=%s",
- "d": "https://duckduckgo.com/?q={}",
- "dc": "http://www.discogs.com/search?q=%s&type=all",
- "e": "http://www.ebay.com/sch/i.html?_from=R40&_trksid=p5197.m570.l1313&_nkw=%s&_sacat=See-All-Categories",
- "g": "https://www.google.com/search?q={}",
- "gd": "https://drive.google.com/drive/search?q=%s",
- "gm": "https://www.google.com/maps?q=%s"
- "gi": "https://www.google.com/search?tbm=isch&q=%s",
- "gh": "https://github.com/search?q=%s&ref=opensearch",
- "gs": "https://gist.github.com/search?q=%s&ref=opensearch",
- "gst": "https://github.com/issues?utf8=✓&q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22++%s",
- "gt": "https://translate.google.com/?hl=ko&sl=auto&tl=ko&text=%s%0A&op=translate",
- "home": "https://www.google.com/maps/dir/home/%s",
- "n": "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query={}",
- "pkg": "https://parcelsapp.com/en/tracking/%s",
- "site": "javascript:location='https://www.google.com/search?num=100&q=site:'+escape(location.hostname)+'+%s'",
- "so": "https://stackoverflow.com/search?q=%s",
- "y": "https://www.youtube.com/results?search_query=%s",
- "w": "https://www.wikipedia.org/w/index.php?title=Special:Search&search=%s",
+ "DEFAULT": "https://searx.thesiah.xyz/search?q={}", # default
+ "a": "https://www.amazon.com/s/?field-keywords={}", # amazon
+ "ar": "https://wiki.archlinux.org/index.php?search={}", # arch wiki
+ "b": "https://search.brave.com/search?q={}", # brave
+ "cp": "https://www.coupang.com/np/search?component=&q={}", # coupang
+ "d": "https://duckduckgo.com/?q={}", # duckduckgo
+ "dc": "http://www.discogs.com/search?q={}&type=all", # discord
+ "e": "http://www.ebay.com/sch/i.html?_from=R40&_trksid=p5197.m570.l1313&_nkw={}&_sacat=See-All-Categories", # ebay
+ "g": "https://www.google.com/search?q={}", # google
+ "gd": "https://drive.google.com/drive/search?q={}", # google drive
+ "gm": "https://www.google.com/maps?q={}", # google map
+ "gh": "https://github.com/search?q={}&ref=opensearch", # github
+ "gi": "https://www.google.com/search?tbm=isch&q={}", # google image
+ "gs": "https://gist.github.com/search?q={}&ref=opensearch", # gist
+ "ghi": "https://github.com/issues?utf8=✓&q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22++{}", # github issue
+ "gt": "https://translate.google.com/?hl=ko&sl=auto&tl=ko&text={}%0A&op=translate", # google translate
+ "home": "https://www.google.com/maps/dir/home/{}", # google home
+ "n": "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query={}", # naver
+ "pkg": "https://parcelsapp.com/en/tracking/{}", # package tracking
+ "site": "javascript:location='https://www.google.com/search?num=100&q=site:'+escape(location.hostname)+'+{}'", # google location
+ "so": "https://stackoverflow.com/search?q={}", # stack overflow
+ "y": "https://www.youtube.com/results?search_query={}", # youtube
+ "w": "https://www.wikipedia.org/w/index.php?title=Special:Search&search={}", # wikipedia
}
## Page(s) to open at the start.
diff --git a/ar/.config/qutebrowser/greasemonkey/0x0.css.js b/ar/.config/qutebrowser/greasemonkey/0x0.css.js
new file mode 100644
index 0000000..ec10275
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/0x0.css.js
@@ -0,0 +1,29 @@
+// ==UserScript==
+// @name 0x0.st
+// @include *://0x0.st*
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/0x0.css.js :: */
+
+GM_addStyle(`
+ body {
+ background: var(--color-bg) !important;
+ color: var(--color-fg) !important;
+ font-size: var(--font-size) !important;
+ }
+
+ u {
+ text-decoration: none !important
+ }
+
+ a {
+ color: var(--color-heading) !important;
+ text-decoration: none !important;
+ }
+ a:visited {
+ color: var(--color-link) !important;
+ }
+ a:hover {
+ color: var(--color-active) !important;
+ }
+`);
diff --git a/ar/.config/qutebrowser/greasemonkey/arstechnica.css.js b/ar/.config/qutebrowser/greasemonkey/arstechnica.css.js
new file mode 100644
index 0000000..723a7e4
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/arstechnica.css.js
@@ -0,0 +1,21 @@
+// ==UserScript==
+// @name Ars Technica
+// @include *://arstechnica.com/*
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/arstechnica.css.js :: */
+
+GM_addStyle(`
+ .ad.ad.ad, .ad_wrapper, .ad-wrapper {
+ display: none !important;
+ }
+ .listing-top.with-feature .article.top-feature figure .listing,
+ .listing-top.with-feature .article.top-latest figure .listing,
+ .listing-top.with-feature .article figure .listing,
+ .listing-earlier .article figure .listing,
+ .listing-latest .article figure .listing,
+ .listing-rest .article figure .listing,
+ .with-xrail .xrail .featured-video .video-thumbnail {
+ background: none;
+ }
+`);
diff --git a/ar/.config/qutebrowser/greasemonkey/cnn-lite.css.js b/ar/.config/qutebrowser/greasemonkey/cnn-lite.css.js
new file mode 100644
index 0000000..8c2c507
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/cnn-lite.css.js
@@ -0,0 +1,31 @@
+// ==UserScript==
+// @name CNN Lite
+// @include *://lite.cnn.com*
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/cnn-lite.css.js :: */
+
+GM_addStyle(`
+ body {
+ color: var(--color-fg) !important;
+ background: var(--color-bg) !important;
+ }
+
+ a, footer a:visited, header a:visited {
+ color: var(--color-heading) !important;
+ text-decoration: none !important;
+ }
+
+ a:visited {
+ color: var(--color-link) !important;
+ }
+
+ a:hover, footer a:hover, header a:hover {
+ color: var(--color-active) !important;
+ }
+
+ ul {
+ list-style-type: none !important;
+ padding-inline-start: unset !important;
+ }
+`);
diff --git a/ar/.config/qutebrowser/greasemonkey/csmonitor-text.css.js b/ar/.config/qutebrowser/greasemonkey/csmonitor-text.css.js
new file mode 100644
index 0000000..92a491d
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/csmonitor-text.css.js
@@ -0,0 +1,43 @@
+// ==UserScript==
+// @name Christian Science Monitor Text Edition
+// @include *://www.csmonitor.com/text_edition*
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/csmonitor-text.css.js :: */
+
+GM_addStyle(`
+ body, footer {
+ background: var(--color-bg) !important;
+ color: var(--color-fg) !important;
+ }
+
+ div[data-field='summary'] {
+ color: var(--color-fg) !important;
+ }
+
+ u {
+ text-decoration: none !important
+ }
+
+ a, .content-title>* {
+ border: none !important;
+ transition: none !important;
+ -webkit-transition: none !important;
+ }
+
+ a, footer a:visited, .top-navigation a:visited, a:visited.navbar-brand {
+ color: var(--color-heading) !important;
+ text-decoration: none !important;
+ }
+ a:visited {
+ color: var(--color-link) !important;
+ }
+ a:hover, footer a:hover, .top-navigation a:hover, a:hover.navbar-brand {
+ color: var(--color-active) !important;
+ }
+
+ span[data-view='kicker'], h2 + small, .underlined,
+ .footer-logo, #issn, .footer-social-links {
+ display: none !important;
+ }
+`);
diff --git a/ar/.config/qutebrowser/greasemonkey/dienet.css.js b/ar/.config/qutebrowser/greasemonkey/dienet.css.js
new file mode 100644
index 0000000..7031d05
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/dienet.css.js
@@ -0,0 +1,67 @@
+// ==UserScript==
+// @name die.net
+// @include *://linux.die.net*
+// @include *://die.net*
+// @include *://www.die.net*
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/dienet.css.js :: */
+
+GM_addStyle(`
+ body {
+ background: var(--color-bg) !important;
+ color: var(--color-fg) !important;
+ }
+ #logo, #menu {
+ background: var(--color-bg1) !important;
+ color: var(--color-fg) !important;
+ border: none !important;
+ }
+
+ #bg {
+ max-width: unset !important;
+ }
+
+ #content {
+ font-family: var(--font-family) !important;
+ font-size: var(--font-size) !important;
+ }
+
+ h1 {
+ border: none !important;
+ }
+
+ h1, h2, h3, h4, h5, h6 {
+ font-size: var(--font-size) !important;
+ color: var(--color-heading) !important;
+ padding: 0 !important;
+ margin-top: 2ch !important;
+ margin-bottom: 0 !important;
+ }
+
+ b {
+ color: var(--color-heading) !important;
+ }
+
+ input {
+ background: var(--color-bg) !important;
+ color: var(--color-code) !important;
+ border-color: 2px solid var(--color-bar) !important;
+ }
+
+ a {
+ color: var(--color-link) !important ;
+ text-decoration: none !important;
+ }
+ a:hover {
+ color: var(--color-active) !important;
+ text-decoration: none !important;
+ }
+ #logo a, #menu a {
+ background: none !important;
+ }
+
+ img[alt='Back'], #adright, #cse-search-box {
+ display: none !important;
+ }
+`);
diff --git a/ar/.config/qutebrowser/greasemonkey/dir.css.js b/ar/.config/qutebrowser/greasemonkey/dir.css.js
new file mode 100644
index 0000000..59ed68e
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/dir.css.js
@@ -0,0 +1,72 @@
+// ==UserScript==
+// @name local directory
+// @include file://*/
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/dir.css.js :: */
+
+var header = document.getElementById('header');
+var text = header.textContent.slice(9);
+header.textContent = text;
+document.title = text;
+
+if (text != '/') {
+ var table = document.getElementsByTagName('table')[0];
+ var row = table.insertRow(1);
+ var cell = row.insertCell();
+ var a = document.createElement('a');
+ var updir = document.createTextNode('../');
+ a.href = '../';
+ a.appendChild(updir);
+ cell.appendChild(a);
+};
+
+GM_addStyle(`
+ * {
+ border: none !important;
+ margin: 0px !important;
+ padding: 0px !important;
+ color: var(--color-fg) !important;
+ background: var(--color-bg) !important;
+ font-family: var(--font-family) !important;
+ font-size: var(--font-size) !important;
+ text-decoration: none !important;
+ }
+
+ body {
+ display: block !important;
+ color: var(--color-fg) !important;
+ background-color: var(--color-bg) !important;
+ font-style: none !important;
+ font-weight: normal !important;
+ padding-left: 1ch !important;
+ padding-right: 1ch !important;
+ }
+
+ h1 {
+ border-color: var(--color-heading) !important;
+ color: var(--color-heading) !important;
+ display: table !important;
+ font-weight: bold !important;
+ border-bottom: solid !important;
+ border-width: 2ch !important;
+ border-image: var(--box1-heading) !important;
+ }
+
+ a {
+ color: var(--color-link) !important ;
+ }
+
+ a:hover {
+ color: var(--color-active) !important;
+ }
+
+ td {
+ padding-right: 2ch !important;
+ }
+
+ #parentDirLinkBox, #parentDirLink, #parentDirText,
+ thead, #theader, td:nth-child(2), td:nth-child(3) {
+ display: none !important;
+ }
+`);
diff --git a/ar/.config/qutebrowser/greasemonkey/fandom.css.js b/ar/.config/qutebrowser/greasemonkey/fandom.css.js
new file mode 100644
index 0000000..e52987a
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/fandom.css.js
@@ -0,0 +1,27 @@
+// ==UserScript==
+// @name Fandom
+// @include *://*.fandom.com/*
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/fandom.css.js :: */
+
+GM_addStyle(`
+ div[itemprop=video],
+ #WikiaBar,
+ #mixed-content-footer,
+ .bottom-ads-container,
+ .fandom-sticky-header.is-visible,
+ .page__right-rail,
+ .top-ads-container {
+ display: none !important;
+ }
+
+ .main-container {
+ background: #ffffff !important;
+ }
+
+ body.theme-fandomdesktop-dark .main-page .mcwiki-header {
+ background: none !important;
+ border: none !important;
+ }
+`);
diff --git a/ar/.config/qutebrowser/greasemonkey/git-scm.css.js b/ar/.config/qutebrowser/greasemonkey/git-scm.css.js
new file mode 100644
index 0000000..4451840
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/git-scm.css.js
@@ -0,0 +1,38 @@
+// ==UserScript==
+// @name git-scm
+// @include *://git-scm.com*
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/git-scm.css.js :: */
+
+GM_addStyle(`
+ * {
+ font-family: var(--font-family) !important;
+ }
+
+ body {
+ background: var(--color-bg) !important;
+ }
+
+ #masthead, #main {
+ background: var(--color-bg1) !important;
+ }
+
+ code, pre {
+ background: var(--color-bg) !important;
+ color: var(--color-code) !important;
+ }
+
+ h1, h2, h3, h4, h5, h6 {
+ color: var(--color-heading) !important;
+ }
+
+ a {
+ color: var(--color-link) !important;
+ transition: none !important;
+ }
+ a:hover {
+ color: var(--color-active) !important;
+ }
+
+`);
diff --git a/ar/.config/qutebrowser/greasemonkey/google.css.js b/ar/.config/qutebrowser/greasemonkey/google.css.js
new file mode 100644
index 0000000..eea39c2
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/google.css.js
@@ -0,0 +1,12 @@
+// ==UserScript==
+// @name Google
+// @include *://*.google.com/*
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/google.css.js :: */
+
+GM_addStyle(`
+ #tadsb, #taw, .cu-container {
+ display: none !important;
+ }
+`);
diff --git a/ar/.config/qutebrowser/greasemonkey/imdb.css.js b/ar/.config/qutebrowser/greasemonkey/imdb.css.js
new file mode 100644
index 0000000..a21bc01
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/imdb.css.js
@@ -0,0 +1,12 @@
+// ==UserScript==
+// @name IMDB
+// @include *://*.imdb.com/*
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/imdb.css.js :: */
+
+GM_addStyle(`
+ .ipc-overflowText-overlay {
+ background: none !important;
+ }
+`);
diff --git a/ar/.config/qutebrowser/greasemonkey/leadertelegram.css.js b/ar/.config/qutebrowser/greasemonkey/leadertelegram.css.js
new file mode 100644
index 0000000..3fabb6e
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/leadertelegram.css.js
@@ -0,0 +1,18 @@
+// ==UserScript==
+// @name Leader Telegram
+// @include *://*.leadertelegram.com/*
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/leadertelegram.css.js :: */
+
+GM_addStyle(`
+ #app, #asset-below, #main-bottom-container, #main-top-container,
+ #site-footer-container, #site-header, #site-header-container,
+ #sticky-anchor, #tncms-region-article_bottom, #tncms-region-front-full-top,
+ .ad-col, .dfp-ad, .fixed-col-right, .grecaptcha-badge, .header-promo,
+ .hidden-print, .main-sidebar, .modal-body, .navbar-header, .nav-home,
+ .not-logged-in, .paging-link, .row-senary, .site-logo-container,
+ .subscription-required, .tnt-ads, .tnt-photo-purchase, .tnt-stack {
+ display: none !important;
+ }
+`);
diff --git a/ar/.config/qutebrowser/greasemonkey/manpages.css.js b/ar/.config/qutebrowser/greasemonkey/manpages.css.js
new file mode 100644
index 0000000..a013076
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/manpages.css.js
@@ -0,0 +1,75 @@
+// ==UserScript==
+// @name Man Pages
+// @include *://man7.org/*
+// @include *://man.freebsd.org/cgi/man.cgi*
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/man7.css.js :: */
+
+GM_addStyle(`
+ * {
+ background: var(--color-bg) !important;
+ color: var(--color-fg) !important;
+ font-family: Hack, Hack-Regular, monospace !important;
+ font-size: var(--font-size) !important;
+ }
+
+ h1, h2, h3, h4, h5, h6 {
+ color: var(--color-heading) !important;
+ padding: 0 !important;
+ margin-top: 2ch !important;
+ margin-bottom: 0 !important;
+ }
+
+ a {
+ color: var(--color-link) !important ;
+ background: var(--color-bg) !important;
+ text-decoration: none !important;
+ }
+ a:hover {
+ color: var(--color-active) !important;
+ text-decoration: none !important;
+ }
+
+ b {
+ color: var(--color-heading) !important;
+ font-weight: normal !important;
+ }
+
+ i {
+ color: var(--color-active) !important;
+ font-style: normal !important;
+ }
+
+ hr, hr.nav-end {
+ border: none !important;
+ clear: both !important;
+ border-bottom: solid !important;
+ border-image: var(--box2-comment) !important;
+ border-width: 2ch !important;
+ color: var(--color-comment) !important;
+ border-color: var(--color-comment) !important;
+ margin-bottom: 0 !important;
+ }
+
+ input, button, select {
+ border-color: var(--color-comment) !important;
+ border-style: solid !important;
+ }
+
+ #container {
+ width: 100% !important;
+ margin-left: 1ch !important;
+ margin-right: 1ch !important;
+ }
+
+ .footer, .top-link, td.search-box, hr.start-footer, hr.end-footer,
+ .nav-bar, hr.nav-end, #header, #headercontainer, #footer {
+ display: none !important;
+ }
+
+ pre {
+ margin-top: 0 !important;
+ }
+
+`);
diff --git a/ar/.config/qutebrowser/greasemonkey/npr-text.css.js b/ar/.config/qutebrowser/greasemonkey/npr-text.css.js
new file mode 100644
index 0000000..6f5020f
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/npr-text.css.js
@@ -0,0 +1,33 @@
+// ==UserScript==
+// @name NPR Text-Only
+// @include *://text.npr.org*
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/npr-text.css.js :: */
+
+GM_addStyle(`
+ body {
+ background: var(--color-bg) !important;
+ color: var(--color-fg) !important;
+ max-width: 750px !important;
+ }
+
+ u {
+ text-decoration: none !important
+ }
+
+ a {
+ color: var(--color-heading) !important;
+ text-decoration: none !important;
+ }
+ a:visited {
+ color: var(--color-link) !important;
+ }
+ a:hover {
+ color: var(--color-active) !important;
+ }
+
+ .hr-line {
+ display: none !important;
+ }
+`);
diff --git a/ar/.config/qutebrowser/greasemonkey/opengroup.css.js b/ar/.config/qutebrowser/greasemonkey/opengroup.css.js
new file mode 100644
index 0000000..fdce0d3
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/opengroup.css.js
@@ -0,0 +1,50 @@
+// ==UserScript==
+// @name Open Group Publications
+// @include https://pubs.opengroup.org/onlinepubs*
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/opengroup.css.js :: */
+
+var hrs = document.getElementsByTagName('hr');
+for (let i = 0; i < hrs.length; i++) {
+ while(hrs[i].attributes.length > 0) {
+ hrs[i].removeAttributeNode(hrs[i].attributes[0]);
+ };
+};
+
+GM_addStyle(`
+ body {
+ background: var(--color-bg) !important;
+ color: var(--color-fg) !important;
+ }
+
+ ul, li, table {
+ color: unset !important;
+ background: unset !important;
+ }
+
+ hr {
+ border-top: 2px solid var(--color-bar) !important;
+ color: var(--color-bar) !important;
+ }
+
+ a {
+ color: var(--color-heading) !important;
+ text-decoration: none !important;
+ }
+ a:visited {
+ color: var(--color-link) !important;
+ }
+ a:hover {
+ color: var(--color-active) !important;
+ }
+
+ h1, h2, h3, h4, h5, h6 {
+ color: var(--color-code) !important;
+ background: unset !important;
+ }
+
+ .topOfPage {
+ display: none !important;
+ }
+`);
diff --git a/ar/.config/qutebrowser/greasemonkey/rarbg.css.js b/ar/.config/qutebrowser/greasemonkey/rarbg.css.js
new file mode 100644
index 0000000..16e4666
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/rarbg.css.js
@@ -0,0 +1,12 @@
+// ==UserScript==
+// @name RARBG
+// @include *://rarbg.to/*
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/rarbg.css.js :: */
+
+GM_addStyle(`
+ body {
+ background: none !important;
+ }
+`);
diff --git a/ar/.config/qutebrowser/greasemonkey/reddit.css.js b/ar/.config/qutebrowser/greasemonkey/reddit.css.js
new file mode 100644
index 0000000..9677090
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/reddit.css.js
@@ -0,0 +1,41 @@
+// ==UserScript==
+// @name Reddit
+// @include *://*.reddit.com/*
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/reddit.css.js :: */
+
+GM_addStyle(`
+ body, body:before, textarea, #header, #siteTable, .comment, .commentarea,
+ .option, .side, .sitetable, .titlebox, .usertext-body {
+ background: var(--color-bg) !important;
+ background-image: none !important;
+ color: var(--color-fg) !important;
+ }
+
+ #sr-header-area {
+ background: var(--color-bg1) !important;
+ }
+ #sr-header-area a {
+ color: var(--color-heading) !important ;
+ }
+ #sr-header-area a:hover {
+ color: var(--color-active) !important;
+ }
+
+ a {
+ color: var(--color-heading) !important ;
+ text-decoration: none !important;
+ }
+ a:visited {
+ color: var(--color-link) !important ;
+ }
+ a:hover {
+ color: var(--color-active) !important;
+ }
+
+ .account-activity-box, .premium-banner, .premium-banner-outer, .promoted,
+ .promotedlink, .redesign-beta-optin, .sidebox.create {
+ display: none !important;
+ }
+`);
diff --git a/ar/.config/qutebrowser/greasemonkey/smbc-comics.css.js b/ar/.config/qutebrowser/greasemonkey/smbc-comics.css.js
new file mode 100644
index 0000000..926559c
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/smbc-comics.css.js
@@ -0,0 +1,31 @@
+// ==UserScript==
+// @name SMBC
+// @include *://*.smbc-comics.com/*
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/smbc-comics.css.js :: */
+
+GM_addStyle(`
+ body {
+ background: var(--color-bg) !important;
+ }
+
+ #mainwrap {
+ border: none !important;
+ background: none !important;
+ padding: 0px !important;
+ }
+
+ #comicleft {
+ float: none !important;
+ margin: auto !important;
+ }
+
+ #blogarea, #blogheader, #blogmsgmobile, #boardleader, #buythis,
+ #comicright, #commentarea, #comment-space, #footer, #header, #hw-jumpbar,
+ #midleader, #mobad1, #mobaftercomic, #mobfacebook, #mobilefooter,
+ #mobilemenu, #mobilepermalink, #mobtumblr, #mobtwitter,
+ #navtop + script + a, #permalink, #sharebar, #sharemob, .cc-tagline {
+ display: none !important;
+ }
+`);
diff --git a/ar/.config/qutebrowser/greasemonkey/stackexchange.css.js b/ar/.config/qutebrowser/greasemonkey/stackexchange.css.js
new file mode 100644
index 0000000..845b0a6
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/stackexchange.css.js
@@ -0,0 +1,44 @@
+// ==UserScript==
+// @name Stack Exchange
+// @include *://stackexchange.com*
+// @include *://*.stackexchange.com*
+// @include *://stackoverflow.com*
+// @include *://mathoverflow.net*
+// @include *://superuser.com*
+// @include *://askubuntu.com*
+// @include *://serverfault.com*
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/stackexchange.css.js :: */
+
+GM_addStyle(`
+ html, body, .s-sidebarwidget {
+ background: var(--color-bg) !important;
+ }
+ #content, header {
+ background: var(--color-bg1) !important;
+ border: 2px solid var(--color-bar) !important;
+ }
+ .s-sidebarwidget--header {
+ background: var(--color-bg1) !important;
+ }
+ .s-btn {
+ background: none !important;
+ }
+
+ a {
+ color: var(--color-heading) !important;
+ text-decoration: none !important;
+ transition: none !important;
+ }
+ a:visited {
+ color: var(--color-link) !important;
+ }
+ a:hover {
+ color: var(--color-active) !important;
+ }
+
+ .js-overflowai-cta {
+ display: none !important;
+ }
+`);
diff --git a/ar/.config/qutebrowser/greasemonkey/termbin.css.js b/ar/.config/qutebrowser/greasemonkey/termbin.css.js
new file mode 100644
index 0000000..0c559aa
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/termbin.css.js
@@ -0,0 +1,32 @@
+// ==UserScript==
+// @name termbin
+// @include *://termbin.com*
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/termbin.css.js :: */
+
+GM_addStyle(`
+ body {
+ background: var(--color-bg) !important;
+ color: var(--color-fg) !important;
+ }
+
+ pre {
+ font-size: var(--font-size) !important;
+ }
+
+ u {
+ text-decoration: none !important
+ }
+
+ a {
+ color: var(--color-heading) !important;
+ text-decoration: none !important;
+ }
+ a:visited {
+ color: var(--color-link) !important;
+ }
+ a:hover {
+ color: var(--color-active) !important;
+ }
+`);
diff --git a/ar/.config/qutebrowser/greasemonkey/wiki.css.js b/ar/.config/qutebrowser/greasemonkey/wiki.css.js
new file mode 100644
index 0000000..301f85e
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/wiki.css.js
@@ -0,0 +1,33 @@
+// ==UserScript==
+// @name ArchWiki/Wikimedia
+// @include *://*.wikibooks.org/*
+// @include *://*.wikidata.org/*
+// @include *://*.wikimedia.org/*
+// @include *://*.wikinews.org/*
+// @include *://*.wikipedia.org/*
+// @include *://*.wikiquote.org/*
+// @include *://*.wikisource.org/*
+// @include *://*.wikiversity.org/*
+// @include *://*.wikivoyage.org/*
+// @include *://*.wiktionary.org/*
+// @include *://wiki.archlinux.org/*
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/wiki.css.js :: */
+
+GM_addStyle(`
+ body, #mw-head, #mw-panel, .mw-list-item {
+ background: #ffffff !important;
+ }
+ .vector-menu-heading, .vector-menu-tabs a, .vector-menu-tabs,
+ .vector-toc::after {
+ background: none !important;
+ }
+
+ .vector-menu-heading {
+ border-bottom: 1px solid #606060 !important;
+ }
+ .cn-fundraising {
+ display: none !important;
+ }
+`);
diff --git a/ar/.config/qutebrowser/greasemonkey/xkcd.css.js b/ar/.config/qutebrowser/greasemonkey/xkcd.css.js
new file mode 100644
index 0000000..2dfaa1d
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/xkcd.css.js
@@ -0,0 +1,44 @@
+// ==UserScript==
+// @name xkcd
+// @include *://xkcd.com/*
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/xkcd.css.js :: */
+
+var content = document.getElementById('middleContainer');
+content.innerHTML = content.innerHTML.split('<br>')[0] + '<div>\n';
+
+GM_addStyle(`
+ body, #middleContainer {
+ background: var(--color-bg) !important;
+ color: var(--color-fg) !important;
+ }
+
+ #bottom,
+ #topContainer {
+ display: none !important;
+ }
+
+ ul.comicNav li a {
+ background: var(--color-bar) !important;
+ border: none !important;
+ box-shadow: none !important;
+ -mox-box-shadow: none !important;
+ -webkit-box-shadow: none !important;
+ }
+
+ .box {
+ border: none !important;
+ }
+
+ a {
+ text-decoration: none !important;
+ transition: none !important;
+ }
+ a, a:visited {
+ color: var(--color-link) !important;
+ }
+ a:hover {
+ color: var(--color-active) !important;
+ }
+`);
diff --git a/ar/.config/qutebrowser/greasemonkey/ycombinator.css.js b/ar/.config/qutebrowser/greasemonkey/ycombinator.css.js
new file mode 100644
index 0000000..cdc02a2
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/ycombinator.css.js
@@ -0,0 +1,74 @@
+// ==UserScript==
+// @name Hacker News
+// @include *://news.ycombinator.com*
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/ycominator.css.js :: */
+
+var style = getComputedStyle(document.body)
+var colorBg = style.getPropertyValue('--color-bg')
+var colorBg1 = style.getPropertyValue('--color-bg1')
+var colorBar = style.getPropertyValue('--color-bar')
+
+var hnmain = document.getElementById('hnmain');
+hnmain.style.background = colorBg1;
+
+var tds = document.getElementsByTagName('td');
+for (let i = 0; i < tds.length; i++) {
+ if (tds[i].bgColor.toLowerCase() == '#ff6600') {
+ tds[i].bgColor = colorBar;
+ };
+};
+
+var imgs = document.getElementsByTagName('img');
+for (let i = 0; i < imgs.length; i++) {
+ imgs[i].src = 'data:,';
+};
+
+GM_addStyle(`
+ body, td, input, textarea, .default, .title, .pagetop, .comment {
+ font-size: 14px !important;
+ }
+ .admin, .admin td {
+ font-size: 12px !important;
+ }
+ .subtext, .subtext td {
+ font-size: 10px !important;
+ }
+
+ body, input, textarea {
+ background: var(--color-bg) !important;
+ }
+ body {
+ color: var(--color-fg) !important;
+ }
+ input, textarea {
+ color: var(--color-bar) !important;
+ border-color: var(--color-bar) !important;
+ border-style: solid !important;
+ }
+
+ input[type='submit'] {
+ background: var(--color-bar) !important;
+ border-color: var(--color-bg) !important;
+ color: var(--color-heading) !important;
+ }
+ input[type='submit']:hover {
+ background: var(--color-bg1) !important;
+ border-color: var(--color-bar) !important;
+ border-style: solid !important;
+ color: var(--color-active) !important;
+ }
+
+ a, .pagetop a:visited, .yclinks a:visited,
+ a[href='https://www.ycombinator.com/apply/']:visited {
+ color: var(--color-heading) !important;
+ }
+ a:visited {
+ color: var(--color-link) !important;
+ }
+ a:hover, .pagetop a:hover, .yclinks a:hover,
+ a[href='https://www.ycombinator.com/apply/']:hover {
+ color: var(--color-active) !important;
+ }
+`);
diff --git a/ar/.config/qutebrowser/greasemonkey/youtube-ads.js b/ar/.config/qutebrowser/greasemonkey/youtube-ads.js
new file mode 100644
index 0000000..21d4214
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/youtube-ads.js
@@ -0,0 +1,23 @@
+// ==UserScript==
+// @name Skip YouTube ads
+// @description Skips the ads in YouTube videos
+// @run-at document-start
+// @include *.youtube.com/*
+// ==/UserScript==
+
+document.addEventListener(
+ "load",
+ () => {
+ const btn = document.querySelector(
+ ".videoAdUiSkipButton,.ytp-ad-skip-button-modern",
+ );
+ if (btn) {
+ btn.click();
+ }
+ const ad = [...document.querySelectorAll(".ad-showing")][0];
+ if (ad) {
+ document.querySelector("video").currentTime = 9999999999;
+ }
+ },
+ true,
+);
diff --git a/ar/.config/qutebrowser/greasemonkey/youtube.css.js b/ar/.config/qutebrowser/greasemonkey/youtube.css.js
new file mode 100644
index 0000000..e86edf9
--- /dev/null
+++ b/ar/.config/qutebrowser/greasemonkey/youtube.css.js
@@ -0,0 +1,18 @@
+// ==UserScript==
+// @name YouTube
+// @include *://*.youtube.com/*
+// ==/UserScript==
+
+/* ~/.config/qutebrowser/greasemonkey/youtube.css.js :: */
+
+document.addEventListener('load', () => {
+ try { document.querySelector('.ad-showing video').currentTime = 99999 } catch {}
+ try { document.querySelector('.ytp-ad-skip-button').click() } catch {}
+}, true);
+
+GM_addStyle(`
+ ytd-compact-promoted-video-renderer, .ytd-action-companion-ad-renderer,
+ .ytd-ad-slot-renderer, .ytd-promoted-sparkles-web-renderer {
+ display: none !important;
+ }
+`);
diff --git a/ar/.local/bin/bookmarks b/ar/.local/bin/bookmarks
index 306f47d..c365095 100755
--- a/ar/.local/bin/bookmarks
+++ b/ar/.local/bin/bookmarks
@@ -75,19 +75,19 @@ openwindow() {
openinbrowser() {
# Extract only the default part of the profile name
case $BROWSER in
- firefox)
+ *firefox*)
profiles_ini_path="$HOME/.mozilla/firefox/profiles.ini"
profile=$(awk '/\[Install/ {found=1} found && /^Default=/ {split($0, arr, "."); print arr[2]; exit}' "$profiles_ini_path")
profile_dir=$(find ~/.mozilla/firefox -type d -name "*.$profile*" | head -n 1)
db_path="$profile_dir/places.sqlite"
;;
- librewolf)
+ *librewolf*)
profiles_ini_path="$HOME/.librewolf/profiles.ini"
profile=$(awk '/\[Install/ {found=1} found && /^Default=/ {split($0, arr, "."); print arr[2]; exit}' "$profiles_ini_path")
profile_dir=$(find ~/.librewolf -type d -name "*.$profile*" | head -n 1)
db_path="$profile_dir/places.sqlite"
;;
- qutebrowser)
+ *qutebrowser*)
profile_dir="${XDG_DATA_HOME:-${HOME}/.local/share}/qutebrowser"
db_path="$profile_dir/history.sqlite"
;;
@@ -115,6 +115,7 @@ openinbrowser() {
ORDER BY b.title;
"
;;
+ *qutebrowser*) geturls && openwindow && exit ;;
esac
;;
*history*)
diff --git a/ar/.local/bin/umpv b/ar/.local/bin/umpv
new file mode 100755
index 0000000..da4a767
--- /dev/null
+++ b/ar/.local/bin/umpv
@@ -0,0 +1,103 @@
+#!/usr/bin/env python3
+
+"""
+This script emulates "unique application" functionality. When starting
+playback with this script, it will try to reuse an already running instance of
+mpv (but only if that was started with umpv). Other mpv instances (not started
+by umpv) are ignored, and the script doesn't know about them.
+
+This only takes filenames as arguments. Custom options can't be used; the script
+interprets them as filenames. If mpv is already running, the files passed to
+umpv are appended to mpv's internal playlist. If a file does not exist or is
+otherwise not playable, mpv will skip the playlist entry when attempting to
+play it (from the GUI perspective, it's silently ignored).
+
+If mpv isn't running yet, this script will start mpv and let it control the
+current terminal. It will not write output to stdout/stderr, because this
+will typically just fill ~/.xsession-errors with garbage.
+
+mpv will terminate if there are no more files to play, and running the umpv
+script after that will start a new mpv instance.
+
+Note: you can supply custom mpv path and options with the MPV environment
+ variable. The environment variable will be split on whitespace, and the
+ first item is used as path to mpv binary and the rest is passed as options
+ _if_ the script starts mpv. If mpv is not started by the script (i.e. mpv
+ is already running), this will be ignored.
+"""
+
+import os
+import shlex
+import socket
+import string
+import subprocess
+import sys
+from collections.abc import Iterable
+from typing import BinaryIO
+
+
+def is_url(filename: str) -> bool:
+ parts = filename.split("://", 1)
+ if len(parts) < 2:
+ return False
+ # protocol prefix has no special characters => it's an URL
+ allowed_symbols = string.ascii_letters + string.digits + "_"
+ prefix = parts[0]
+ return all(c in allowed_symbols for c in prefix)
+
+def get_socket_path() -> str:
+ if os.name == "nt":
+ return r"\\.\pipe\umpv"
+
+ base_dir = (
+ os.getenv("UMPV_SOCKET_DIR") or
+ os.getenv("XDG_RUNTIME_DIR") or
+ os.getenv("HOME") or
+ os.getenv("TMPDIR")
+ )
+
+ if not base_dir:
+ raise Exception("Could not determine a base directory for the socket. "
+ "Ensure that one of the following environment variables is set: "
+ "UMPV_SOCKET_DIR, XDG_RUNTIME_DIR, HOME or TMPDIR.")
+
+ return os.path.join(base_dir, ".umpv")
+
+def send_files_to_mpv(conn: socket.socket | BinaryIO, files: Iterable[str]) -> None:
+ try:
+ send = conn.send if isinstance(conn, socket.socket) else conn.write
+ for f in files:
+ f = f.replace("\\", "\\\\").replace('"', '\\"').replace("\n", "\\n")
+ send(f'raw loadfile "{f}" append-play\n'.encode())
+ except Exception:
+ print("mpv is terminating or the connection was lost.", file=sys.stderr)
+ sys.exit(1)
+
+def start_mpv(files: Iterable[str], socket_path: str) -> None:
+ mpv = "mpv" if os.name != "nt" else "mpv.exe"
+ mpv_command = shlex.split(os.getenv("MPV", mpv))
+ mpv_command.extend([
+ "--profile=builtin-pseudo-gui",
+ f"--input-ipc-server={socket_path}",
+ "--",
+ ])
+ mpv_command.extend(files)
+ subprocess.Popen(mpv_command, start_new_session=True)
+
+def main() -> None:
+ files = (os.path.abspath(f) if not is_url(f) else f for f in sys.argv[1:])
+ socket_path = get_socket_path()
+
+ try:
+ if os.name == "nt":
+ with open(socket_path, "r+b", buffering=0) as pipe:
+ send_files_to_mpv(pipe, files)
+ else:
+ with socket.socket(socket.AF_UNIX) as sock:
+ sock.connect(socket_path)
+ send_files_to_mpv(sock, files)
+ except (FileNotFoundError, ConnectionRefusedError):
+ start_mpv(files, socket_path)
+
+if __name__ == "__main__":
+ main()