Unxitter – Twitter X Logo Remover

Userscript that Unxittifies Twitter

// ==UserScript==
// @name        Unxitter – Twitter X Logo Remover
// @description Userscript that Unxittifies Twitter
// @icon        https://abs.twimg.com/favicons/twitter.2.ico
// @namespace   Violentmonkey Scripts
// @match       https://twitter.com/*
// @match       https://mobile.twitter.com/*
// @grant       GM_addStyle
// @run-at      document-start
// @version     0.9
// @author      Mozzie
// @license     MIT
// ==/UserScript==

// REPLACE LOGO
// ==============================

// Find the elements to modify...
const svgSelector = `svg:is(.r-13v1u17, .r-1p0dtai, .r-16y2uox) > g > path`;
const faviconSelector = `link[rel="shortcut icon"]`;

// Replace the icon's SVG using CSS
const twitterLogoPath = `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`.replace(/\n/g, "");
const logoStyleRule = `
  :is(${svgSelector}) {
      fill: inherit;
      d: path("${twitterLogoPath}");
  }
`;
GM_addStyle(logoStyleRule);

// REPLACE FAVICON
// =================================
{
  const twitterFaviconURL = "https://abs.twimg.com/favicons/twitter.2.ico";
  const twitterFaviconPipURL = 'https://abs.twimg.com/favicons/twitter-pip.2.ico';

  // create a new <link>. the browser should show this one until the old one changes.
  const newLink = document.createElement("link");
  newLink.setAttribute("rel", "icon");
  newLink.setAttribute("href", twitterFaviconURL);
  document.head?.appendChild(newLink);

  // Replace the Favicon
  document.addEventListener("DOMContentLoaded", () => {
    // move new favicon to the end of the head in case the head wasn't done loading.
    document.head.appendChild(newLink);

    // the old <link rel="icon">
    const oldLink = document.querySelector(faviconSelector);
    oldLink.setAttribute("media", "print"); // <- try to stop it from loading

    // callback to update our URL
    const updateFavicon = () => {
      // check if the "real" link has the notification pip.
      const hasPip = oldLink.getAttribute("href").includes("pip");
      newLink.setAttribute("href", hasPip ? twitterFaviconPipURL : twitterFaviconURL);
    }

    const config = { attributes: true, attributeFilter: ["href"], attributeOldValue: true };

    // Watch the old link for changes.
    const observer = new MutationObserver(updateFavicon);
    observer.observe(oldLink, config);
  });
}
// RENAME TAB TITLE
// ================================
window.addEventListener("load", () => {
  // <title>Home / X</title>
  const title = document.querySelector("title");
  // get the X
  const regexp = /(\bX$|(?<=on )X(?=:))/g;
  // callback to replace it
  const updateTitle = () => {
    if (regexp.test(title.innerHTML)) {
      title.innerHTML = title.innerHTML
        .replace(regexp, "Twitter");
    }
  }
 // call once on load
  updateTitle();
  // watch the title element for changes.
  const observer = new MutationObserver(updateTitle);
  observer.observe(title, {
    childList: true
  });
});

// Done. Good puppy!

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址