Last active
September 27, 2024 05:18
-
-
Save unixzii/37369baa7996cdc8dd459c267785603b to your computer and use it in GitHub Desktop.
Tampermonkey userscript to rescue your X (formerly Twitter) experience.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Fuck X | |
// @namespace http://tampermonkey.net/ | |
// @version 0.1 | |
// @description Save your eyes while using X (formerly Twitter) | |
// @author Cyandev <[email protected]> | |
// @match https://twitter.com/* | |
// @grant none | |
// ==/UserScript== | |
(function() { | |
'use strict'; | |
const mo = new MutationObserver(handleDOMMutations); | |
let pendingMods = []; | |
function addMod(selector, fn) { | |
pendingMods.push({ selector, fn }); | |
} | |
function runPendingMods() { | |
pendingMods = pendingMods.filter(m => { | |
const el = document.querySelector(m.selector); | |
if (!el) { | |
// The element is not ready, keep it in the queue. | |
return true; | |
} | |
console.debug(`running mod for \`${m.selector}\``); | |
try { | |
m.fn(el); | |
} catch { | |
// An error occurred, maybe we should retry later. | |
return true; | |
} | |
return false; | |
}); | |
return pendingMods.length > 0; | |
} | |
function handleDOMMutations(records) { | |
if (!records.some(r => !!r.addedNodes.length)) { | |
return; | |
} | |
if (!runPendingMods()) { | |
this.disconnect(); | |
} | |
} | |
addMod('header[role="banner"] h1>a>div>svg', (el) => { | |
const replacement = '<g><path d="M23.643 4.937c-.835.37-1.732.62-2.675.733.962-.576 1.7-1.49 2.048-2.578-.9.534-1.897.922-2.958 1.13-.85-.904-2.06-1.47-3.4-1.47-2.572 0-4.658 2.086-4.658 4.66 0 .364.042.718.12 1.06-3.873-.195-7.304-2.05-9.602-4.868-.4.69-.63 1.49-.63 2.342 0 1.616.823 3.043 2.072 3.878-.764-.025-1.482-.234-2.11-.583v.06c0 2.257 1.605 4.14 3.737 4.568-.392.106-.803.162-1.227.162-.3 0-.593-.028-.877-.082.593 1.85 2.313 3.198 4.352 3.234-1.595 1.25-3.604 1.995-5.786 1.995-.376 0-.747-.022-1.112-.065 2.062 1.323 4.51 2.093 7.14 2.093 8.57 0 13.255-7.098 13.255-13.254 0-.2-.005-.402-.014-.602.91-.658 1.7-1.477 2.323-2.41z"/></g>'; | |
el.innerHTML = replacement; | |
}); | |
addMod('link[rel="shortcut icon"]', (el) => { | |
const origFaviconUri = '//abs.twimg.com/favicons/twitter.ico'; | |
el.href = origFaviconUri; | |
}); | |
mo.observe(document, { | |
childList: true, | |
subtree: true, | |
}); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment