// ==UserScript== // @name X/Twitter Clean menu and sidebar (Supports multiple language) // @name:ja X/Twitter きれいなメニューとサイドバー(多言語対応) // @name:zh-TW X/Twitter 乾淨的選單和側邊欄(支持多種語言) // @name:zh-cn X/Twitter 干净的选单和侧边栏(支持多种语言) // @version 1.1 // @description hidden Menu,Grok,Premium subscription,Explore,Notifications,Messages,Bookmarks and Customizable Settings // @description:ja 清潔なメニュー、Grok、高度なサブスクリプション、探索、通知、メッセージ、ブックマーク、およびカスタム設定 // @description:zh-tw 乾淨的 選單、Grok、高級訂閱、探索、通知、訊息、書籤和可自訂設定 // @description:zh-cn 干净的 选单、Grok、高级订阅、探索、通知、私信、书签和可自订设定 // @license MIT // @author movwei // @match https://x.com/* // @match https://twitter.com/* // @grant GM_registerMenuCommand // @grant GM_setValue // @grant GM_getValue // @grant GM_addStyle // @namespace https://greasyfork.org/users/1041101 // @downloadURL none // ==/UserScript== (function() { 'use strict'; const defaultSettings = { hideGrok: true, hidePremiumSignUp: true, hideSelectors: true, hideExplore: false, hideNotifications: false, hideBookmarks: false, hideMessages: false }; const settings = { hideGrok: GM_getValue('hideGrok', defaultSettings.hideGrok), hidePremiumSignUp: GM_getValue('hidePremiumSignUp', defaultSettings.hidePremiumSignUp), hideSelectors: GM_getValue('hideSelectors', defaultSettings.hideSelectors), hideExplore: GM_getValue('hideExplore', defaultSettings.hideExplore), hideNotifications: GM_getValue('hideNotifications', defaultSettings.hideNotifications), hideBookmarks: GM_getValue('hideBookmarks', defaultSettings.hideBookmarks), hideMessages: GM_getValue('hideMessages', defaultSettings.hideMessages) }; // 多語言支持 const language = navigator.language || navigator.userLanguage; const languages = { 'en': { 'hideGrok': 'Hide Grok', 'hidePremiumSignUp': 'Hide Premium Sign-up', 'hideSelectors': 'Hide Subscribe Message', 'hideExplore': 'Hide Explore', 'hideNotifications': 'Hide Notifications', 'hideMessages': 'Hide Messages', 'hideBookmarks': 'Hide Bookmarks', 'settings': 'Settings', 'saveRefresh': 'Save & refresh', 'close': 'Close' }, 'zh-TW': { 'hideGrok': '隱藏 Grok', 'hidePremiumSignUp': '隱藏 高級訂閱', 'hideSelectors': '隱藏 訂閱訊息', 'hideExplore': '隱藏 探索', 'hideNotifications': '隱藏 通知', 'hideMessages': '隱藏 訊息', 'hideBookmarks': '隱藏 書籤', 'settings': '設定', 'saveRefresh': '保存並刷新', 'close': '關閉' }, 'zh-CN': { 'hideGrok': '隐藏 Grok', 'hidePremiumSignUp': '隐藏 高级订阅', 'hideSelectors': '隐藏 订阅消息', 'hideExplore': '隐藏 探索', 'hideNotifications': '隐藏 通知', 'hideMessages': '隐藏 私信', 'hideBookmarks': '隐藏 书签', 'settings': '设置', 'saveRefresh': '保存并刷新', 'close': '关闭' }, 'ja': { 'hideGrok': 'Grokを非表示', 'hidePremiumSignUp': 'プレミアムサインアップを非表示', 'hideSelectors': 'サブスクライブメッセージを非表示', 'hideExplore': '話題を検索を非表示', 'hideNotifications': '通知を非表示', 'hideMessages': 'メッセージを非表示', 'hideBookmarks': 'ブックマークを非表示', 'settings': '設定', 'saveRefresh': '保存してリフレッシュ', 'close': '閉じる' }, }; const currentLanguage = languages[language] || languages['en']; function createSettingsPanel() { const panel = document.createElement('div'); panel.id = 'settingsPanel'; panel.innerHTML = `

${currentLanguage['settings']}








`; document.body.appendChild(panel); document.getElementById('saveSettingsButton').addEventListener('click', saveSettings); document.getElementById('closeSettingsButton').addEventListener('click', () => { document.getElementById('settingsPanel').style.display = 'none'; }); } function saveSettings() { settings.hideGrok = document.getElementById('hideGrokCheckbox').checked; settings.hidePremiumSignUp = document.getElementById('hidePremiumSignUpCheckbox').checked; settings.hideSelectors = document.getElementById('hideSelectorsCheckbox').checked; settings.hideExplore = document.getElementById('hideExploreCheckbox').checked; settings.hideNotifications = document.getElementById('hideNotificationsCheckbox').checked; settings.hideBookmarks = document.getElementById('hideBookmarksCheckbox').checked; settings.hideMessages = document.getElementById('hideMessagesCheckbox').checked; GM_setValue('hideGrok', settings.hideGrok); GM_setValue('hidePremiumSignUp', settings.hidePremiumSignUp); GM_setValue('hideSelectors', settings.hideSelectors); GM_setValue('hideExplore', settings.hideExplore); GM_setValue('hideNotifications', settings.hideNotifications); GM_setValue('hideBookmarks', settings.hideBookmarks); GM_setValue('hideMessages', settings.hideMessages); location.reload(); } GM_addStyle(` #settingsPanel { width: 250px; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: white; border: 1px solid #ccc; padding: 20px; z-index: 10000; display: none; box-shadow: 0 4px 8px rgba(0,0,0,0.1); border-radius: 8px; } #settingsPanelContent { display: flex; flex-direction: column; align-items: flex-start; width: 100%; } #settingsPanel h2 { margin: 0 0 15px 0; font-size: 18px; color: #333; text-align: center; width: 100%; } #settingsPanel label { margin: 5px 0; font-size: 14px; color: #333; } #settingsPanel button { margin-top: 10px; padding: 8px 15px; font-size: 14px; color: white; background-color: #007BFF; border: none; border-radius: 4px; cursor: pointer; width: 100%; } #settingsPanel button#closeSettingsButton { background-color: #6c757d; } `); createSettingsPanel(); GM_registerMenuCommand(currentLanguage['settings'], () => { const panel = document.getElementById('settingsPanel'); panel.style.display = 'block'; }); function addGlobalStyle(css) { var head, style; head = document.getElementsByTagName('head')[0]; if (!head) { return; } style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = css; head.appendChild(style); } var phrases = [ 'Premium\'a Abone Ol', // 土耳其文 - Türkçe 'Abonner på Premium', // 丹麥文 - dansk '', // 巴斯克文 (測試版) - euskara 'プレミアムにサブスクライブ', // 日文 - 日本語 '', // 加利西亞文 (測試版) - galego 'Subscriu-te a Premium', // 加泰蘭文 - català 'પ્રીમિયમ પર સબ્સ્ક્રાઇબ કરો', // 古吉拉特文 - ગુજરાતી 'Fizess elő a Premiumra!', // 匈牙利文 - magyar 'Berlangganan Premium', // 印尼文 - Indonesia 'Premium को सब्सक्राइब करें', // 印地文 - हिन्दी 'Suscríbete a Premium', // 西班牙文 - español 'Pretplatite se na Premium', // 克羅埃西亞文 - hrvatski 'Premiumಗೆ ಸಬ್‌ಸ್ರೈಬ್ ಮಾಡಿ', // 坎那達文 - ಕನ್ನಡ 'הרשמה ל-Premium', // 希伯來文 - עברית 'Εγγραφή στο Premium', // 希臘文 - Ελληνικά 'Premium-க்குச் சப்ஸ்கிரைப் செய்', // 坦米爾文 - தமிழ் 'Premium-এ সাবস্ক্রাইব করুন', // 孟加拉文 - বাংলা 'Abonnez‑vous à Premium', // 法文 - français 'اشتراک در Premium', // 波斯文 - فارسی 'Zasubskrybuj usługę Premium', // 波蘭文 - polski 'Tilaa Premium', // 芬蘭文 - suomi 'الاشتراك في Premium', // 阿拉伯文 - العربية 'الاشتراك في Premium', // 阿拉伯文 (陰性) - العربية (مؤنث) 'Подпишитесь на Premium', // 俄文 - русский 'Абонирайте се за Premium', // 保加利亞文 - български 'Subscribe to Premium', // 英文 - English 'Subscribe to Premium', // 英文(英國) - British English '', // 挪威文 - norsk 'สมัครสมาชิก Premium', // 泰文 - ไทย 'Передплатити Premium', // 烏克蘭文 - українська '', // 烏都文 (測試版) - اردو 'Langgan Premium', // 馬來文 - Melayu 'Premium ची सदस्यता घ्या', // 馬拉地文 - मराठी 'Přihlaste se k odběru předplatného Premium', // 捷克文 - čeština X 'Abonneren op Premium', // 荷蘭文 - Nederlands 'Zaregistrujte sa do služby Premium', // 斯洛伐克文 - slovenčina 'Mag-subscribe sa Premium', // 菲律賓文 - Filipino 'Đăng ký gói Premium', // 越南文 - Tiếng Việt 'Претплати се на Premium', // 塞爾維亞文 - српски '', // 愛爾蘭文 (測試版) - Gaeilge 'Prenumerera på Premium', // 瑞典文 - svenska 'Abbonati a Premium', // 義大利文 - italiano 'Assine o Premium', // 葡萄牙文 - português 'Premium abonnieren', // 德文 - Deutsch '訂閱 Premium', // 繁體中文 'Premium 구독하기', // 韓文 - 한국어 '订阅 Premium', // 简体中文 'Abonează-te la Premium', // 羅馬尼亞文 - română ]; var selectors = phrases.map(function(phrase) { if (phrase !== '') { return 'aside[aria-label="' + phrase + '"]'; } else { return ''; } }).filter(selector => selector !== '').join(', '); var cssRules = ''; if (settings.hideSelectors) { cssRules += selectors + '{ display: none !important; }'; } if (settings.hideGrok) { cssRules += 'a[href="/i/grok"] { display: none !important; }'; } if (settings.hidePremiumSignUp) { cssRules += 'a[href="/i/premium_sign_up"] { display: none !important; }'; } if (settings.hideExplore) { cssRules += 'a[href="/explore"] { display: none !important; }'; } if (settings.hideNotifications) { cssRules += 'a[href="/notifications"] { display: none !important; }'; } if (settings.hideBookmarks) { cssRules += 'a[href="/i/bookmarks"] { display: none !important; }'; } if (settings.hideMessages) { cssRules += 'a[href="/messages"] { display: none !important; }'; } addGlobalStyle(cssRules); })();