Skip to content

Instantly share code, notes, and snippets.

@unixzii
Last active September 27, 2024 05:18
Show Gist options
  • Save unixzii/37369baa7996cdc8dd459c267785603b to your computer and use it in GitHub Desktop.
Save unixzii/37369baa7996cdc8dd459c267785603b to your computer and use it in GitHub Desktop.
Tampermonkey userscript to rescue your X (formerly Twitter) experience.
// ==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