diff options
| author | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2025-02-10 08:24:09 +0900 |
|---|---|---|
| committer | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2025-02-10 08:24:09 +0900 |
| commit | 8db391ce6ca07ec78780c782a204abee357d73d0 (patch) | |
| tree | 97df2788261b86c9e2cb1bb45116ebc51c55af71 | |
| parent | 9a1d363908228a4d9fffec191aff106598a6ac27 (diff) | |
modified qutebrowser/config.py, modified bin/bookmarks, created greasemonkey/, created bin/umpv
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() |
