Greasy Fork is available in English.
Displays the clickable favicon of scripts.
// ==UserScript== // @name Greasyfork/Sleazyfork Script Icon Display // @description Displays the clickable favicon of scripts. // @icon https://greasyfork.org/vite/assets/blacklogo96-CxYTSM_T.png // @version 1.1 // @author afkarxyz // @namespace https://github.com/afkarxyz/misc-scripts/ // @supportURL https://github.com/afkarxyz/misc-scripts/issues // @license MIT // @match https://greasyfork.org/*/scripts/* // @match https://sleazyfork.org/*/scripts/* // @grant none // @run-at document-start // ==/UserScript== (function() { 'use strict'; function addIconToHeader() { const firstListItem = document.querySelector('.script-show-applies-to .block-list li:first-child'); const h2Element = document.querySelector('header h2'); if (!firstListItem || !h2Element || h2Element.querySelector('img')) return false; const domain = (firstListItem.querySelector('a')?.textContent || firstListItem.textContent).trim(); if (!domain) return false; h2Element.style.cssText = 'display:flex;align-items:center;gap:10px;margin:0;min-height:32px;'; const iconLink = document.createElement('a'); iconLink.href = `http://${domain}`; iconLink.target = '_blank'; iconLink.style.cssText = 'text-decoration:none;display:flex;align-items:center;'; const iconImg = document.createElement('img'); iconImg.src = `https://t1.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=http://${domain}&size=64`; iconImg.style.cssText = 'width:32px;height:32px;flex-shrink:0;cursor:pointer;display:block;'; iconImg.title = `Visit ${domain}`; const textSpan = document.createElement('span'); textSpan.style.cssText = 'display:flex;align-items:center;flex:1;'; textSpan.textContent = h2Element.textContent; iconLink.appendChild(iconImg); h2Element.replaceChildren(iconLink, textSpan); return true; } function init(attempts = 10) { if (addIconToHeader() || attempts < 1) return; setTimeout(() => init(attempts - 1), 50); } document.readyState === 'loading' ? document.addEventListener('DOMContentLoaded', () => init()) : init(); new MutationObserver(() => init(5)).observe(document.documentElement, { childList: true, subtree: true }); })();