NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Discord Tweaks // @namespace https://greasyfork.org/en/users/8615-joeytwiddle // @version 0.1.9 // @description Reduce gap between messages, optionally unbrighten name of selected channel // @author joeytwiddle // @match https://discord.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=discord.com // @license MIT // @grant GM_addStyle // ==/UserScript== (function() { 'use strict'; //// Options // Around 21/10/2022 Discord put a larger vertical gap between messages. // his reduces the gap size similar to how it was before. const reduceGapBetweenMessages = false; // Turned off while I try Appearance > Compact Mode. I also see some settings in Discord we could play with. // When a channel has activity (new messages), Discord makes the name of that channel bold and white, which is fine. // But Discord also does that for the selected channel, which makes it look like it has new activity, when maybe it doesn't. // I can't stand that behaviour, so I disable it. const doNotBrightenSelectedChannel = true; // It turns out that on Windows, my Discord tab was zoomed to 70%, although I'm not sure how, because that wasn't in zoomValues. Was it copying the zoom from Linux? const usePreferredFont = false; // navigator.userAgent.match(/Linux/); const giveTextInputBoxADarkBackground = true; //// End Options // if (reduceGapBetweenMessages) { GM_addStyle(` /* Original fix for 21/10/2022 */ .group-spacing-16 .groupStart-3Mlgv1 { margin: 0.25em; } /* New CSS classes. It looks like [role=article] will be the most resilient. I haven't seen it used for any other elements on a standard page, but it could be used in some Discord UI / menus. */ [role=article], .message-2CShn3, .cozy-VmLDNB, .zalgo-26OfGz { padding-top: 0rem !important; padding-bottom: 0rem !important; margin-top: 0.05rem !important; } `); } if (doNotBrightenSelectedChannel) { // The problem is this CSS rule, specifically the .modeSelected selector, which highlights the currently selected channel the same as channels with unread activity. /* .modeConnected-NrO4cP .name-28HaxV, .modeConnected-NrO4cP:hover .name-28HaxV, .modeSelected-3DmyhH .name-28HaxV, .modeSelected-3DmyhH:hover .name-28HaxV, .modeUnread-3Cxepe .name-28HaxV, .modeUnread-3Cxepe:hover .name-28HaxV, .notInteractive-2tFrlE.modeConnected-NrO4cP .name-28HaxV, .notInteractive-2tFrlE.modeSelected-3DmyhH .name-28HaxV { color: var(--interactive-active); } */ // Let's try to fix it GM_addStyle(` .modeSelected-3DmyhH .name-28HaxV { color: var(--channels-default); } /* But if it really IS unread, then we will brighten the channel name */ .modeSelected-3DmyhH.modeUnread-3Cxepe .name-28HaxV { color: var(--interactive-active); } `); } if (usePreferredFont) { // TODO: Isn't `font-family` set to `inherit` for this selector? If so, we should just set this rule on `body`, to override `--font-primary` for the entire page. // I note that Windows uses "gg sans", but "Noto Sans" also looks ok for me (slightly more dense and maybe slighly thicker) GM_addStyle(` a, abbr, acronym, address, applet, big, blockquote, body, caption, cite, code, dd, del, dfn, div, dl, dt, em, fieldset, form, h1, h2, h3, h4, h5, h6, html, iframe, img, ins, kbd, label, legend, li, object, ol, p, pre, q, s, samp, small, span, strike, strong, table, tbody, td, tfoot, th, thead, tr, tt, ul, var { font-family: "Bitstream Vera Sans", "Sans", "Open Sans", "gg sans","Noto Sans","Helvetica Neue",Helvetica,Arial,sans-serif; } /* html { font-size: 91%; } */ `); //const fontScale = '91%'; // when using Firefox with zoom 80% const fontScale = '102%'; // when using Firefox with zoom 67% document.firstElementChild.style.fontSize = fontScale; window.addEventListener('focus', () => { setTimeout(() => { document.firstElementChild.style.fontSize = fontScale; }, 1); }) window.addEventListener('blur', () => { setTimeout(() => { document.firstElementChild.style.fontSize = fontScale; }, 1); }) } if (giveTextInputBoxADarkBackground) { GM_addStyle(` /* The text input box used this (quite light): background: var(--bg-overlay-3,var(--channeltextarea-background)); background: hsl(225, 6.5%, 23.5%); The search textbox used this (nicely dark): background: var(--bg-overlay-3,var(--background-tertiary)); background: hsl(225, 6.5%, 12.5%); */ /* But we will do something different, for both: slightly dark when unfocused, quite dark when focused */ /* Old selector, no longer working: .channelTextArea-1FufC0 .scrollableContainer-15eg7h, .searchBar-jGtisZ { */ /* This new selector might last a bit longer than the class, but it requires !important, and I couldn't find a new selector for the search box */ main > form > div > div, .searchBar_e0c60b { background: hsl(225, 6.5%, 18%) !important; } main > form > div > div:focus-within, .searchBar_e0c60b:focus-within { background: hsl(225, 6.5%, 17%) !important; } `); } })();