您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Give the chat more screen space
当前为
// ==UserScript== // @name Hide Discord sidebars // @namespace https://github.com/Dragosarus/Userscripts/ // @version 2.0 // @description Give the chat more screen space // @author Dragosarus // @match *discord.com/* // @grant GM_registerMenuCommand // @grant GM_unregisterMenuCommand // @require http://code.jquery.com/jquery-latest.js // ==/UserScript== (function() { 'use strict'; var hide = { serverSidebar : true, channelSidebar: true, memberSidebar : true // also adds 2nd button }; var serverSelector = "nav[aria-label='Servers sidebar']"; var channelSelector = "div[class*='sidebar']"; var memberSelector = "div[class*='membersWrap']"; var baseSelector = "div[class*='base']"; // needed when hiding server sidebar var chatSelector = "div[class*='chat']"; // needed for observer var hideMenu = "Hide sidebars"; var showMenu = "Show sidebars"; var memberToggleMenu = "Toggle member sidebar"; // + " [current: (in)visible]" var hideSidebarMenuShortcut = 's'; var memberToggleMenuShortcut = 't'; var hideSidebarMenuId; var memberToggleMenuId; var baseOffset; // e.g. "72px" var sidebarsHidden = false; var memberSidebarHidden = false; // overrides sidebarsHidden var selectors = { serverSidebar: serverSelector, channelSidebar: channelSelector, memberSidebar: memberSelector }; const memberObserver = new MutationObserver(memberObserverCallback); const options = {attributes:true, childList:true}; init(); function init() { updateMemberToggleMenu(); // if hide.memberSidebar == true updateHideSidebarMenu(); } // Called when switching servers/channels function memberObserverCallback() { setSidebar(memberSelector, !memberSidebarHidden); } function onMemberToggleMenuClick() { // (re-)activate observer memberObserver.observe($(chatSelector)[0], options); if (!(sidebarsHidden)) { setSidebar(memberSelector, memberSidebarHidden); } memberSidebarHidden ^= true; // Update menus (both of them to preserve order) updateMemberToggleMenu(); updateHideSidebarMenu(); } function onHideSidebarMenuClick() { // Toggle visibility of sidebars for (var sidebar in selectors) { // hideMemberSidebar = memberSidebarHidden || sidebarsHidden if (sidebar == "memberSidebar" && memberSidebarHidden) {continue;} if (hide[sidebar]) { setSidebar(selectors[sidebar], sidebarsHidden); } } // Extra work is needed to properly hide the server sidebar if (hide.serverSidebar) { var base = $(baseSelector); if (sidebarsHidden) { base.css("left", baseOffset); } else { baseOffset = base[0].style.left; base.css("left", "0px"); } } sidebarsHidden ^= true; // Update menu updateHideSidebarMenu(); } function updateMemberToggleMenu() { if (hide.memberSidebar) { GM_unregisterMenuCommand(memberToggleMenuId); var v = memberSidebarHidden ? "in" : ""; memberToggleMenuId = GM_registerMenuCommand(memberToggleMenu + " [current: " + v + "visible]", onMemberToggleMenuClick, memberToggleMenuShortcut); } } function updateHideSidebarMenu() { GM_unregisterMenuCommand(hideSidebarMenuId); var menu = sidebarsHidden ? showMenu : hideMenu; hideSidebarMenuId = GM_registerMenuCommand(menu, onHideSidebarMenuClick, hideSidebarMenuShortcut); } function setSidebar(selector, boolValue) { if (boolValue) { showSidebar(selector); } else { hideSidebar(selector); } } function hideSidebar(selector) { var node = $(selector)[0]; node.style.display = "none"; } function showSidebar(selector) { var node = $(selector)[0]; node.style.removeProperty("display"); } })(); /*eslint-env jquery*/ // stop eslint from showing "'$' is not defined" warnings