Skip to content

Instantly share code, notes, and snippets.

@SolideSpoke
Forked from busybox11/twitter-logo.user.js
Last active July 31, 2023 23:43
Show Gist options
  • Save SolideSpoke/0cb3bb5b426a7e83beb73626b2a4e7e1 to your computer and use it in GitHub Desktop.
Save SolideSpoke/0cb3bb5b426a7e83beb73626b2a4e7e1 to your computer and use it in GitHub Desktop.
Bring back old twitter logo
// ==UserScript==
// @name Bring back bird logo - twitter.com
// @namespace twitter scripts
// @match *://*.twitter.com/*
// @grant none
// @version 1.4
// @author -
// @description 7/24/2023, 1:47:07 PM
// @updateURL https://gist.github.com/busybox11/0fea71f136ead45efc470f01f23de94b/raw/6f8ea1acfe92b6fed9e534259887d8ed99ec61af
// @downloadURL https://gist.github.com/busybox11/0fea71f136ead45efc470f01f23de94b/raw/6f8ea1acfe92b6fed9e534259887d8ed99ec61af
// ==/UserScript==
const lang = document.getElementsByTagName("html")[0].lang;
const tweetBtntxt = lang == "fr" ? "Tweeter" : "Tweet";
const handleFaviconUpdate = (element) => {
element.href = element.href.replace('.3.ico', '.2.ico');
}
const handleMutation = (mutationsList, observer) => {
for (const mutation of mutationsList) {
if (mutation.type === 'childList') {
const nodes = mutation.addedNodes
for (const node of nodes) {
if (node) {
const logoElems = node.querySelectorAll('h1[role="heading"]')
for (const logoElemCont of logoElems) {
logoElemCont.querySelectorAll('svg').forEach((svgElem) => {
svgElem.innerHTML = `
<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"></path></g>
`
})
}
if (node.tagName == "TITLE") {
new MutationObserver(function(mutations) {
const titleElem = mutations[0].target;
if (titleElem.innerHTML.slice(-1) == "X") {
titleElem.innerHTML = titleElem.innerHTML.slice(0, -1) + 'Twitter'
}
}).observe(
document.querySelector('title'),
{ subtree: true, characterData: true, childList: true }
);
}
else if(node.className == "css-1dbjc4n"){
document.querySelector("[data-testid='tweetButton']").lastChild.innerText = tweetBtntxt;
}
}
}
} else if (mutation.type === 'attributes') {
if (mutation.target.localName === 'link' && mutation.target.rel === 'shortcut icon' && mutation.target.href?.endsWith('.3.ico')) {
handleFaviconUpdate(mutation.target)
}
}
}
}
const splashElems = document.querySelectorAll('#placeholder')
for (const logoElemCont of splashElems) {
logoElemCont.querySelectorAll('svg').forEach((svgElem) => {
svgElem.innerHTML = `
<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"></path></g>
`
svgElem.style.fill = 'rgba(29,161,242,1.00)';
})
}
// Initialize favicon
handleFaviconUpdate(document.querySelector("link[rel='shortcut icon']"))
const sc = {
log: (...args) => {
console.log('[twitter-logo]', ...args)
}
}
const observer = new MutationObserver(handleMutation)
observer.observe(document, {
childList: true,
subtree: true,
attributeFilter: ["href"],
attributeOldValue: true
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment