new branch
This commit is contained in:
commit
8eac634cb8
22 changed files with 1329 additions and 0 deletions
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
out
|
||||
node_modules
|
||||
package-lock.json
|
||||
|
||||
diskort.xpi
|
||||
btfl.css
|
31
Makefile
Normal file
31
Makefile
Normal file
|
@ -0,0 +1,31 @@
|
|||
|
||||
OSTYLES = $(wildcard src/style/*.less)
|
||||
OSCRIPTS= $(wildcard src/script/*.coffee)
|
||||
|
||||
STYLES = $(OSTYLES:src/style/%.less=out/css/%.css)
|
||||
SCRIPTS = $(OSCRIPTS:src/script/%.coffee=out/js/%.js)
|
||||
|
||||
all: prepare build
|
||||
build: style script
|
||||
dist: xpi
|
||||
|
||||
style: out/css/base.css
|
||||
script: $(SCRIPTS)
|
||||
|
||||
prepare:
|
||||
npm i lessc coffeescript
|
||||
mkdir -p out
|
||||
mkdir -p out/css
|
||||
mkdir -p out/js
|
||||
|
||||
diskort.xpi xpi firefox: build
|
||||
cp manifest.json out/
|
||||
cd out; zip -r diskort.xpi manifest.json css js
|
||||
@echo "goto about:config and set xpinstall.signatures.required to false"
|
||||
@echo "then goto about:addons -> settings icon below search -> install add-on from file"
|
||||
|
||||
out/css/base.css: src/style/base.less $(OSTYLES)
|
||||
npx lessc $< > $@
|
||||
|
||||
out/js/%.js: src/script/%.coffee
|
||||
npx coffee --no-header -bco $@ $<
|
BIN
ext.png
Normal file
BIN
ext.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 544 B |
19
license
Normal file
19
license
Normal file
|
@ -0,0 +1,19 @@
|
|||
Zlib License
|
||||
|
||||
Copyright (c) 2022 Er2 <er2@dismail.de>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgement in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
34
manifest.json
Normal file
34
manifest.json
Normal file
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"manifest_version": 2,
|
||||
"name": "DisKort",
|
||||
"version": "3.0.0",
|
||||
|
||||
"description": "Custom theme for Discord",
|
||||
|
||||
"icons": {
|
||||
"48": "ext.png"
|
||||
},
|
||||
|
||||
"permissions": [
|
||||
"https://raw.githubusercontent.com/Er2ch/diskort/*",
|
||||
"*://discord.com/",
|
||||
"webRequest",
|
||||
"webRequestBlocking"
|
||||
],
|
||||
|
||||
"background": {
|
||||
"scripts": ["js/bg.js"],
|
||||
"persistent": true
|
||||
},
|
||||
|
||||
"content_scripts": [{
|
||||
"matches": ["*://discord.com/*"],
|
||||
"js": ["js/inj.js"]
|
||||
}],
|
||||
|
||||
"browser_specific_settings": {
|
||||
"gecko": {
|
||||
"id": "{7e79557e-5773-4be8-b0e2-9e35b34b692c}"
|
||||
}
|
||||
}
|
||||
}
|
9
package.json
Normal file
9
package.json
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"name": "diskort",
|
||||
"version": "3.0.0",
|
||||
"description": "Custom script and style engine for Discord",
|
||||
"dependencies": {
|
||||
"coffeescript": "^2.6.1",
|
||||
"lessc": "^1.0.2"
|
||||
}
|
||||
}
|
40
readme.org
Normal file
40
readme.org
Normal file
|
@ -0,0 +1,40 @@
|
|||
|
||||
*DisKort* - extension for browser which decreases Discord elements.
|
||||
|
||||
Currently it's in beta, more of design was merged into css.
|
||||
|
||||
[[https://addons.mozilla.org/en-US/firefox/addon/diskort/][Add to Firefox]]
|
||||
|
||||
* Installation
|
||||
|
||||
** Firefox
|
||||
|
||||
Highly recommend to enable backdrop-filter for acrylic.
|
||||
1. Go to ~about:config~
|
||||
2. Set ~layout.css.backdrop-filter.enabled~ and ~gfx.webrender.all~ to true.
|
||||
3. Reload Discord.
|
||||
|
||||
Debug mode:
|
||||
|
||||
1. Download [[https://gitdab.com/er2/diskort/archive/dev.zip][dev tag archive]] and unpack it.
|
||||
2. Copy btfl.css from [[https://raw.githubusercontent.com/Er2ch/diskort/main/btfl.css][GitHub]] or compile own.
|
||||
3. Go to ~about:debugging#/runtime/this-firefox~
|
||||
3. Click on *Load Temponary Add-on...*
|
||||
4. Choose any file in extension folder.
|
||||
|
||||
** Chrome, etc.
|
||||
|
||||
Release mode:
|
||||
|
||||
1. Go to ~chrome://extensions/~
|
||||
2. Enable ~Developer mode~.
|
||||
3. Create own (~Pack extension~) or download [[https://gitdab.com/er2/diskort/releases][from releases]].
|
||||
4. Drag and drop ~diskort.crx~ to browser.
|
||||
|
||||
Debug mode:
|
||||
|
||||
1. Download [[https://gitdab.com/er2/diskort/archive/dev.zip][dev tag archive]] and unpack it.
|
||||
2. Copy btfl.css from [[https://raw.githubusercontent.com/Er2ch/diskort/main/btfl.css][GitHub]] or compile own.
|
||||
3. Go to ~chrome://extensions/~
|
||||
3. Enable ~Developer mode~.
|
||||
4. Click on ~Load unpacked~ and choose extension folder.
|
28
src/script/bg.coffee
Normal file
28
src/script/bg.coffee
Normal file
|
@ -0,0 +1,28 @@
|
|||
### DisKort
|
||||
# (c) Er2 2022
|
||||
# Zlib License
|
||||
###
|
||||
|
||||
# Disable CSP
|
||||
chrome.webRequest.onHeadersReceived.addListener(
|
||||
(det) ->
|
||||
for head from det.responseHeaders
|
||||
n = head.name.toLowerCase()
|
||||
head.value = '' if n is 'content-security-policy' or n == 'content-security-policy-report-only'
|
||||
{ responseHeaders: det.responseHeaders }
|
||||
|
||||
, urls: ['<all_urls>']
|
||||
, ['blocking', 'responseHeaders']
|
||||
)
|
||||
|
||||
# Simulate user-agent
|
||||
chrome.webRequest.onBeforeSendHeaders.addListener(
|
||||
(det) ->
|
||||
for head from det.requestHeaders
|
||||
n = head.name.toLowerCase()
|
||||
head.value = 'DisKort/3.0 (Linux) Firefox/99.0' if n is 'user-agent'
|
||||
{ requestHeaders: det.requestHeaders }
|
||||
|
||||
, urls: ['<all_urls>']
|
||||
, ['blocking', 'requestHeaders']
|
||||
)
|
23
src/script/inj.coffee
Normal file
23
src/script/inj.coffee
Normal file
|
@ -0,0 +1,23 @@
|
|||
### DisKort
|
||||
# (c) Er2 2022
|
||||
# Zlib License
|
||||
###
|
||||
|
||||
### Base URL
|
||||
# Source code is here: https://gitdab.com/er2/diskort
|
||||
# / at end is required
|
||||
###
|
||||
base = 'https://raw.githubusercontent.com/Er2ch/diskort/main/'
|
||||
|
||||
inject = ->
|
||||
try
|
||||
resp = await fetch base + 'btfl.css'
|
||||
text = await resp.text()
|
||||
s = document.createElement 'style'
|
||||
s.innerHTML = text
|
||||
document.head.appendChild s
|
||||
catch e
|
||||
console.error e
|
||||
|
||||
# Call it!
|
||||
inject()
|
32
src/style/base.less
Normal file
32
src/style/base.less
Normal file
|
@ -0,0 +1,32 @@
|
|||
/** DisKort
|
||||
* (c) Er2 2022 <er2@dismail.de>
|
||||
* Zlib License
|
||||
*/
|
||||
|
||||
@no-nitro: true;
|
||||
@no-banner: false;
|
||||
|
||||
@round: 8px;
|
||||
@rounder: 16px;
|
||||
@roundest: 24px; // text area
|
||||
|
||||
@div-width: (@rounder / 2);
|
||||
@tab-height: 40px;
|
||||
|
||||
// Required
|
||||
@import "func";
|
||||
@import "fixes";
|
||||
|
||||
// Optional
|
||||
@import "hide";
|
||||
@import "mobile";
|
||||
@import "nitro";
|
||||
|
||||
// Style
|
||||
@import "materials";
|
||||
@import "style";
|
||||
@import "ui";
|
||||
@import "dimmer";
|
||||
@import "profile";
|
||||
@import "people";
|
||||
@import "settings";
|
47
src/style/dimmer.less
Normal file
47
src/style/dimmer.less
Normal file
|
@ -0,0 +1,47 @@
|
|||
.theme-dimmer {
|
||||
--header-primary: #dedede;
|
||||
--header-secondary: #cacaca;
|
||||
--text-normal: #dcddde;
|
||||
--text-muted: #cbcccd;
|
||||
--interactive-normal: #cacaca;
|
||||
--interactive-hover: #dedede;
|
||||
--interactive-active: #dcddde;
|
||||
--interactive-muted: #bebebe;
|
||||
--background-primary: #3e3e3e;
|
||||
--background-secondary: #2e2e2e;
|
||||
--background-secondary-alt: #2e2e2e;
|
||||
--background-accent: #4f545c;
|
||||
--background-floating: #18191c;
|
||||
--background-tertiary: #1e1e1e;
|
||||
--input-background: #1e1e1e;
|
||||
color: var(--header-primary);
|
||||
|
||||
& [class*="close-"] {
|
||||
color: var(--interactive-normal);
|
||||
|
||||
&:hover
|
||||
{ color: var(--interactive-hover); }
|
||||
}
|
||||
}
|
||||
|
||||
div[class^="layer-"] div.theme-light,
|
||||
div[class^="downloadApps-"] {
|
||||
&:extend(.theme-dimmer all);
|
||||
|
||||
div[class*="root-"] {
|
||||
background-color: var(--background-secondary);
|
||||
}
|
||||
|
||||
div[class*="footer-"] {
|
||||
background-color: var(--background-primary);
|
||||
}
|
||||
}
|
||||
|
||||
div[class^="downloadApps"] {
|
||||
& {
|
||||
background-color: var(--background-secondary) !important;
|
||||
}
|
||||
h3, div[class*="footer-"] {
|
||||
color: var(--header-primary);
|
||||
}
|
||||
}
|
72
src/style/fixes.less
Normal file
72
src/style/fixes.less
Normal file
|
@ -0,0 +1,72 @@
|
|||
// fix guild selector at left part
|
||||
ul[data-list-id="guildsnav"] div[class^="scroller-"] {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden !important;
|
||||
|
||||
// servers
|
||||
& > div[aria-label] {
|
||||
overflow: hidden scroll;
|
||||
scrollbar-width: none;
|
||||
flex-grow: 1;
|
||||
|
||||
// add button
|
||||
& + div {
|
||||
margin-top: 4px;
|
||||
// all others
|
||||
& ~ div
|
||||
{ &:extend(.hide); }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
div[class^="messagesWrapper-"] div {
|
||||
scrollbar-width: thin;
|
||||
}
|
||||
|
||||
#emoji-picker-tab-panel {
|
||||
&:not([role="dialog"]) {
|
||||
// if add reaction (role=dialog), it breaks
|
||||
position: absolute;
|
||||
top: 0; bottom: 0;
|
||||
left: 0; right: 0;
|
||||
}
|
||||
|
||||
div[class^="wrapper-"] {
|
||||
top: 0;
|
||||
border-radius: 5px 0 0 5px; // for add reaction
|
||||
}
|
||||
}
|
||||
|
||||
div[class*="fullscreenOnMobile"] div[class^="flex"] * {
|
||||
// fix overflow
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
div[class*="templatesList-"] {
|
||||
// fix tempates list (it was removed)
|
||||
height: 128px;
|
||||
}
|
||||
|
||||
// Fix positioning
|
||||
div[class^="toolsContainer-"] { // in settings
|
||||
position: fixed !important;
|
||||
right: 21px;
|
||||
padding: 0;
|
||||
margin-top: 60px;
|
||||
border-radius: 16px;
|
||||
|
||||
& > div {
|
||||
position: unset !important;
|
||||
|
||||
div[class^="container"] > * {
|
||||
background-color: var(--background-nested-floating);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
div[class^="contentContainer-"] div[class*="stickyHeader-"] {
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
margin: 0;
|
||||
}
|
31
src/style/func.less
Normal file
31
src/style/func.less
Normal file
|
@ -0,0 +1,31 @@
|
|||
.left-border(@r: 0) {
|
||||
border-top-left-radius: @r !important;
|
||||
border-bottom-left-radius: @r !important;
|
||||
}
|
||||
|
||||
.right-border(@r: 0) {
|
||||
border-top-right-radius: @r !important;
|
||||
border-bottom-right-radius: @r !important;
|
||||
}
|
||||
|
||||
.bottom-border(@r: 0) {
|
||||
border-bottom-left-radius: @r !important;
|
||||
border-bottom-right-radius: @r !important;
|
||||
}
|
||||
|
||||
.top-border(@r: 0) {
|
||||
border-top-left-radius: @r !important;
|
||||
border-top-right-radius: @r !important;
|
||||
}
|
||||
|
||||
.radius(@r: 0) {
|
||||
border-radius: @r !important;
|
||||
}
|
||||
|
||||
.hide {
|
||||
all: unset !important;
|
||||
display: none !important;
|
||||
width: 0 !important;
|
||||
height: 0 !important;
|
||||
}
|
||||
|
95
src/style/hide.less
Normal file
95
src/style/hide.less
Normal file
|
@ -0,0 +1,95 @@
|
|||
|
||||
// Site
|
||||
[class*="perksContainer-"],
|
||||
[class^="DocSearch"], // Algolia, f you
|
||||
{ &:extend(.hide); }
|
||||
|
||||
#app-mount div:not([class]) div[class=""] {
|
||||
div:not([class]), // main page content
|
||||
div div[class*="background-"], // nitro animation at top
|
||||
div[class^="grid-"] div[class^="animation-"], // nitro animation at bottom
|
||||
{ &:extend(.hide); }
|
||||
}
|
||||
|
||||
// Remove background (invite, login)
|
||||
[class*="artwork-"],
|
||||
div[class^="characterBackground-"] [class*="rightSplit-"],
|
||||
div[class^="art-"],
|
||||
{ &:extend(.hide); }
|
||||
|
||||
// Nicks
|
||||
[class^="username-"] {
|
||||
li[class^="messageListItem-"]
|
||||
[class*="cozyMessage-"] &, // inside message
|
||||
:not([class^="headerText-"])
|
||||
> div[class*="nameTag-"] &, // outside message
|
||||
{ &:extend(.hide); }
|
||||
}
|
||||
|
||||
[class^="discrimBase-"],
|
||||
div[class^="discordTag-"] [class^="username-"], // friends tab
|
||||
div[class^="nameTag-"],
|
||||
[class^="usernameInnerRow-"], // at settings
|
||||
{ &:extend(.hide); }
|
||||
|
||||
// Suggestions
|
||||
button[class*="followButton-"], // at top in channels
|
||||
[class^="nowPlaying"], // in friends tab
|
||||
div[class^="threadSuggestionBar-"], // create thread because many replies
|
||||
div[class^="welcomeCTA-"], // wave to say hi on server
|
||||
div[role="separator"]:not([id$="new-messages-bar"]), // aren't needed
|
||||
|
||||
div[class^="channelNotice-"], // sh** at bottom of server name like invite people, server boost etc.
|
||||
h2[class^="privateChannelsHeaderContainer"], // direct messages label
|
||||
|
||||
div[class*="templatesList-"] button[class^="container-"] ~ *, // templates are really useless
|
||||
|
||||
{ &:extend(.hide); }
|
||||
|
||||
// Emoji picker
|
||||
#gif-picker-tab, #sticker-picker-tab,
|
||||
#emoji-picker-tab-panel
|
||||
div[class^="emojiPicker-"]
|
||||
> div[class^="header-"],
|
||||
nav[class^="nav-"], // breaks emoji panel, fixed at fixes.less
|
||||
{ &:extend(.hide); }
|
||||
|
||||
// Search
|
||||
nav > [class^="searchBar-"], // in dm
|
||||
[role^="tab"] > [class^="searchBar-"], // in tabs
|
||||
div[class^="toolbar-3_"] > :nth-child(3)
|
||||
~ *:not([class^="search-"]), // remove after 3 elements except search
|
||||
{ &:extend(.hide); }
|
||||
|
||||
// Text area
|
||||
div[class^="channelTextArea-"] {
|
||||
div div > div[class^="buttons-"] { // button
|
||||
& > button // gift button, f you
|
||||
{ &:extend(.hide); }
|
||||
|
||||
& > div.expression-picker-chat-input-button {
|
||||
&:not(:nth-child(4)) // except emoji (and send button, if exists)
|
||||
{ &:extend(.hide); }
|
||||
}
|
||||
}
|
||||
& > div[class^="scrollableContainer-"]
|
||||
div[class^="divider-"] // breaks redesigned text area
|
||||
{ &:extend(.hide); }
|
||||
}
|
||||
|
||||
// Other
|
||||
div[class^="autocompleteShadow-"], // bugged
|
||||
[class^="unreadPill-"], // NEW at right, not needed
|
||||
div[class^="overviewSidebar-"], // at community creation, not needed
|
||||
|
||||
form::before, // message input shadow
|
||||
div[class^="children-"]::after, // shadow at title
|
||||
{ &:extend(.hide); }
|
||||
|
||||
div[class^="base-"] div[class^="children-"] {
|
||||
// channel title
|
||||
div[class^="divider-"] {
|
||||
&, & ~ div:not([class^="tabBar-"]),
|
||||
{ &:extend(.hide); }
|
||||
}
|
||||
}
|
118
src/style/materials.less
Normal file
118
src/style/materials.less
Normal file
|
@ -0,0 +1,118 @@
|
|||
// Mica-like material from Windows 11
|
||||
|
||||
[class^="sidebar-"] {
|
||||
&, & > nav {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
& > nav,
|
||||
div[class*="scroller"] {
|
||||
.top-border(@rounder);
|
||||
}
|
||||
|
||||
div[class*="scroller"] {
|
||||
background-color: var(--background-secondary);
|
||||
}
|
||||
|
||||
nav[class^="private"] {
|
||||
&::before {
|
||||
content: "Discord";
|
||||
color: var(--header-primary);
|
||||
margin: ((48px - 20px) / 2) 16px; // 20px is line-height
|
||||
font-size: 15px;
|
||||
line-height: 20px;
|
||||
font-weight: 500;
|
||||
font-family: var(--font-display);
|
||||
}
|
||||
}
|
||||
|
||||
section { // bottom panel
|
||||
.bottom-border(@rounder);
|
||||
}
|
||||
}
|
||||
|
||||
div[class^="base-"] > div[class^="content-"] > div[class^="container"],
|
||||
div[class^="chat-"]
|
||||
{
|
||||
background-color: unset;
|
||||
& > div {
|
||||
background-color: var(--background-primary);
|
||||
}
|
||||
}
|
||||
|
||||
[class^="sidebar"] header,
|
||||
[class^="chat"] > section:not([class^="chat"]),
|
||||
[class^="container-"] > section {
|
||||
background-color: var(--background-tertiary) !important;
|
||||
}
|
||||
|
||||
@keyframes glow {
|
||||
from { box-shadow: 0 0 2px 4px var(--interactive-normal); }
|
||||
to { box-shadow: 0 0 1px 2px var(--interactive-muted); }
|
||||
}
|
||||
|
||||
[class^="item-"] {
|
||||
&[class*="focused-"] {
|
||||
background-color: var(--text-muted);
|
||||
color: var(--interactive-active);
|
||||
animation: glow 0.7s linear infinite alternate;
|
||||
}
|
||||
}
|
||||
|
||||
// Acrylic
|
||||
.acrylic {
|
||||
--acrylic-blur: @round;
|
||||
--acrylic-color: var(--background-secondary-alt);
|
||||
--acrylic-opacity: 50%;
|
||||
|
||||
&, & > *, div[class^="body"] {
|
||||
background: unset;
|
||||
}
|
||||
|
||||
&::before, &::after {
|
||||
border-radius: inherit;
|
||||
position: absolute;
|
||||
top: 0; bottom: 0;
|
||||
left: 0; right: 0;
|
||||
content: "";
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
&::before {
|
||||
backdrop-filter: blur(var(--acrylic-blur)) saturate(125%);
|
||||
}
|
||||
&::after {
|
||||
background-color: var(--acrylic-color);
|
||||
background-image: url(data:image/png;base64,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);
|
||||
opacity: var(--acrylic-opacity);
|
||||
}
|
||||
}
|
||||
|
||||
// Acrylic patches
|
||||
div[class^="layers-"] {
|
||||
& > div[class*="baseLayer"] {
|
||||
opacity: 1 !important;
|
||||
}
|
||||
|
||||
& > div[class^="layer"]:not([class*="baseLayer"]) {
|
||||
div[class*="View-"] {
|
||||
--acrylic-color: var(--background-primary);
|
||||
--acrylic-opacity: 80%;
|
||||
}
|
||||
&, & > div[class*="View-"], div[class*="scroller"] {
|
||||
background: unset;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
div[class^="header-"],
|
||||
div[class^="title"],
|
||||
div[class^="channelTextArea-"],
|
||||
div[class^="quickswitcher-"] div[class^="scroll"],
|
||||
div[class^="focusLock-"] > div,
|
||||
div[class^="avatar-"],
|
||||
{
|
||||
background: unset !important;
|
||||
border-color: transparent;
|
||||
scrollbar-color: var(--scrollbar-auto-scrollbar-color-track) transparent;
|
||||
}
|
53
src/style/mobile.less
Normal file
53
src/style/mobile.less
Normal file
|
@ -0,0 +1,53 @@
|
|||
// TODO: comment this
|
||||
|
||||
@media screen and (max-device-width: 800px) {
|
||||
/* FIXME: add close buttons to emoji panel */
|
||||
|
||||
[class^="channel-"] { max-width: unset; margin: 0 8px; }
|
||||
[class^="layer-"] { padding: 0; margin: auto; }
|
||||
[class^="layer-"] > [class^="container-"],
|
||||
[class^="standardSidebarView-"] { overflow-x: scroll; }
|
||||
[class^="content-"] [class^="sidebar"] { width: calc(50% - 8px - 72px); }
|
||||
[class^="chat-"] { width: 100%; }
|
||||
[class^="tools"] { position: unset !important; }
|
||||
|
||||
[class*="positionLayer-"],
|
||||
[class*="fullscreenOnMobile"] {
|
||||
overflow: auto;
|
||||
width: 100%; min-width: 100%;
|
||||
}
|
||||
[class^="positionLayer-"] {
|
||||
position: absolute;
|
||||
top: 0 !important;
|
||||
left: 0 !important;
|
||||
right: 0 !important;
|
||||
bottom: 0 !important;
|
||||
}
|
||||
[class*="fullscreenOnMobile"] [class^="body"] {
|
||||
width: 100%; height: 100%;
|
||||
}
|
||||
|
||||
[class^="side-"] > [class^="item-"] {
|
||||
margin-top: 4px !important;
|
||||
padding: 6px 10px !important;
|
||||
}
|
||||
|
||||
[class^="side-"] > [class^="item-"],
|
||||
:not([class*="pill"]):not([class*="Pill"]) > [class*="item-"],
|
||||
:not([class*="pill"]):not([class*="Pill"]) > [role="tab"],
|
||||
[class^="member-"],
|
||||
#channels li,
|
||||
div[class^="tabBarItem-"] {
|
||||
margin-top: 8px;
|
||||
padding: 8px;
|
||||
font-size: 11pt;
|
||||
}
|
||||
|
||||
[class^="base-"],
|
||||
[class^="contentRegion-"],
|
||||
div[class^="sidebarRegion-"], // all in settings
|
||||
{
|
||||
width: 200%;
|
||||
min-width: 200%;
|
||||
}
|
||||
}
|
44
src/style/nitro.less
Normal file
44
src/style/nitro.less
Normal file
|
@ -0,0 +1,44 @@
|
|||
|
||||
.nitroblock() when (@no-nitro = true) {
|
||||
|
||||
.nitro { &:extend(.hide); }
|
||||
|
||||
[class^="marketing"],
|
||||
[class*="tier"],
|
||||
[class*="perks-"],
|
||||
[class*="nitro"],
|
||||
[class^="upsell"],
|
||||
[class^="availabilityIndicator-"],
|
||||
div[class^="serverBoostTabItem-"],
|
||||
div[class*="hero"],
|
||||
div[class*="premium"],
|
||||
div[id*="premium"],
|
||||
div[class*="goal"],
|
||||
button[class^="shinyButton"],
|
||||
[class*="giftButton"],
|
||||
span[class^="questionMark-"], // at tag change
|
||||
div[class^="characterCount-"] div[class^="root-"], // at many characters
|
||||
[class^="clickableSticker-"], // stickers
|
||||
nav[class^="privateChannels-"] div div // Nitro tab at DM
|
||||
[data-list-item-id$="nitro"],
|
||||
{ &:extend(.nitro); }
|
||||
|
||||
#channels > ul {
|
||||
div[class^="container-"] {
|
||||
// boosts
|
||||
&:extend(.nitro);
|
||||
|
||||
// space
|
||||
& + li {
|
||||
padding-top: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
.nitroblock() when (@no-banner = true) {
|
||||
[class^="bannerContainer-"],
|
||||
[class*="banner-"]
|
||||
{ &:extend(.hide); }
|
||||
}
|
||||
.nitroblock();
|
22
src/style/people.less
Normal file
22
src/style/people.less
Normal file
|
@ -0,0 +1,22 @@
|
|||
|
||||
[class^="membersGroup-"] // groups (roles)
|
||||
{ &:extend(.hide); }
|
||||
|
||||
[class^="membersWrap-"] {
|
||||
// make it shorter
|
||||
&, div[class^="members-"] {
|
||||
min-width: 48px;
|
||||
width: 0;
|
||||
}
|
||||
|
||||
// remove fixed height
|
||||
div[class^="content-"] {
|
||||
height: unset !important;
|
||||
flex-grow: 0;
|
||||
}
|
||||
|
||||
div[class^="member-"] {
|
||||
padding: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
146
src/style/profile.less
Normal file
146
src/style/profile.less
Normal file
|
@ -0,0 +1,146 @@
|
|||
|
||||
div[class^="accountProfileCard-"] div[class^="userInfo-"] {
|
||||
// settings
|
||||
justify-content: left;
|
||||
padding-top: 24px;
|
||||
height: 56px;
|
||||
|
||||
button {
|
||||
margin-left: 32px;
|
||||
margin-top: -8px;
|
||||
}
|
||||
|
||||
div[class^="avatar-"] {
|
||||
background-color: var(--background-tertiary) !important;
|
||||
top: 0;
|
||||
border-radius: 0 !important;
|
||||
border-bottom-right-radius: 50% !important;
|
||||
}
|
||||
}
|
||||
|
||||
.profile() when (@no-nitro = true) {
|
||||
[class^="botTagVerified-"],
|
||||
[class^="badgeList-"],
|
||||
[class^="profileBadges-"],
|
||||
{ &:extend(.nitro); }
|
||||
}
|
||||
.profile() when (@no-banner = true) {
|
||||
div[class^="listItemContents-"] div[class^="userInfo"] {
|
||||
padding-top: 0;
|
||||
div[class^="avatar-"] {
|
||||
top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
div[class^="userPopout-"],
|
||||
div[class^="profileBannerPreview-"] {
|
||||
div[class^="avatarWrapper"] {
|
||||
top: 8px; // fix divider bug
|
||||
}
|
||||
|
||||
div[class^="headerTop-"] {
|
||||
padding-top: 72px; // also fix divider bug
|
||||
div[class^="headerText"] {
|
||||
margin-left: 96px; // fix nickname
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
div[class^="profileBanner"] div[class*="avatar"]:not([class^="imageUploaderInner"]) {
|
||||
margin-left: -8px;
|
||||
margin-top: -8px;
|
||||
}
|
||||
}
|
||||
.profile();
|
||||
|
||||
// Profile card in settings
|
||||
div[class^="accountProfileCard-"] {
|
||||
div[class^="field-"]:nth-child(1) {
|
||||
height: 0;
|
||||
div[class^="constrainedRow-"] {
|
||||
display: none;
|
||||
}
|
||||
button {
|
||||
top: -48pt;
|
||||
left: 300pt;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
div[class^="banner-"] {
|
||||
position: absolute;
|
||||
width: inherit;
|
||||
max-height: 84px;
|
||||
&:extend(.rounder);
|
||||
&[class*="popoutBanner"] {
|
||||
position: relative;
|
||||
max-height: 128px;
|
||||
.bottom-border();
|
||||
}
|
||||
}
|
||||
|
||||
div[class^="avatarWrapper-"] {
|
||||
margin-right: auto; // make some space after avatar (sidebar at bottom)
|
||||
}
|
||||
|
||||
// Redesigned profile page
|
||||
header div[class^="nameTagWithCustomStatus-"],
|
||||
header div[class^="nameTagNoCustomStatus-"] {
|
||||
margin-bottom: 48px; // some space under avatar
|
||||
margin-left: 160px; // after avatar, not before
|
||||
}
|
||||
|
||||
div[class^="focusLock-"]:not([aria-labelledby]) > div[class^="root-"][class*="small-"] {
|
||||
flex-direction: row;
|
||||
|
||||
header {
|
||||
width: 260px;
|
||||
margin: 24px;
|
||||
|
||||
div[class^="avatar-"] {
|
||||
top: 0; left: 0;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
div[class^="headerTop-"] {
|
||||
position: unset;
|
||||
justify-content: left;
|
||||
}
|
||||
|
||||
div[class^="nameTag"] {
|
||||
width: 64px;
|
||||
position: absolute;
|
||||
margin-top: -84px;
|
||||
margin-left: 130px;
|
||||
}
|
||||
|
||||
div[class^="customStatus"] {
|
||||
margin-top: 16px;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
div[class^="body-"] {
|
||||
border: none;
|
||||
margin-left: 16px;
|
||||
height: 370px;
|
||||
& > *
|
||||
{ padding: 0 !important; }
|
||||
}
|
||||
div[class^="tabBarContainer"]
|
||||
{ border: none; }
|
||||
div[class^="tabBar-"] {
|
||||
flex-direction: column;
|
||||
height: unset;
|
||||
margin: 8px;
|
||||
}
|
||||
|
||||
div[class^="tabBarItem-"] {
|
||||
margin-right: 0;
|
||||
border-bottom: unset;
|
||||
&:hover, &[class*="selected-"] {
|
||||
border-right: 2px solid var(--interactive-active) !important;
|
||||
}
|
||||
.top-border();
|
||||
.left-border(@round);
|
||||
}
|
||||
}
|
254
src/style/settings.less
Normal file
254
src/style/settings.less
Normal file
|
@ -0,0 +1,254 @@
|
|||
|
||||
div[class^="keybind-"], // true must know it!
|
||||
[class*="socialLink-"], // in change log
|
||||
div[class^="socialLinks-"], // in settings at bottom
|
||||
{ &:extend(.hide); }
|
||||
|
||||
// New sidebar in settings
|
||||
div[class^="standardSidebarView-"] {
|
||||
flex-direction: column;
|
||||
|
||||
div[class^="sidebarRegion-"] {
|
||||
overflow: hidden;
|
||||
flex-basis: unset; // bugfix to normalize height
|
||||
flex-grow: 0; // fix scaling
|
||||
|
||||
div[class^="header-"],
|
||||
div[class^="separator-"]
|
||||
{ display: none; }
|
||||
|
||||
& > div {
|
||||
background: var(--background-primary);
|
||||
scrollbar-width: thin;
|
||||
overflow: auto hidden !important;
|
||||
justify-content: left;
|
||||
max-width: 100%;
|
||||
|
||||
& > nav {
|
||||
padding: 0;
|
||||
width: unset; // to increase size
|
||||
background: var(--background-secondary); // bugfix
|
||||
& > div {
|
||||
padding-left: @rounder;
|
||||
flex-direction: row;
|
||||
height: @tab-height;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
div[class^="contentRegion-"] {
|
||||
overflow-y: auto;
|
||||
scrollbar-width: thin;
|
||||
|
||||
* {
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
div[aria-controls*="nitro"],
|
||||
div[aria-controls="library-inventory-tab"],
|
||||
div[aria-controls="subscriptions-tab"],
|
||||
div[aria-controls="billing-tab"],
|
||||
div[aria-controls^="hypesquad"],
|
||||
div[aria-controls="stickers-tab"],
|
||||
{ &:extend(.nitro); }
|
||||
|
||||
div[aria-controls="keybinds-tab"],
|
||||
div[aria-controls="game-activity-tab"],
|
||||
div[aria-controls="analytics-tab"],
|
||||
div[aria-controls="partner-tab"],
|
||||
{ &:extend(.hide); }
|
||||
|
||||
.horiz-tab(@cols: 2) {
|
||||
@gap: @div-width * 2;
|
||||
@el-width: calc(100% / @cols - @gap);
|
||||
display: flex;
|
||||
flex-flow: row wrap;
|
||||
column-gap: @gap;
|
||||
row-gap: @gap / 2;
|
||||
& > * {
|
||||
width: @el-width;
|
||||
}
|
||||
|
||||
div[class^="divider"]:empty {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
#my-account-tab > div {
|
||||
.horiz-tab();
|
||||
& > div:first-child {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
#profile-customization-tab div[class^="children"]
|
||||
div[class^="baseLayout-"] {
|
||||
& > div:not([class]) {
|
||||
width: 100%;
|
||||
|
||||
div[class^="customizationSection-"] {
|
||||
&:nth-child(2), &:nth-child(3) {
|
||||
&:extend(.nitro);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
div[class^="bioTextArea-"] {
|
||||
height: 30vh;
|
||||
}
|
||||
}
|
||||
|
||||
// TrY AnImAtEd AvAtAr, eh... f you
|
||||
[class^="optionBox-"]:nth-child(2)
|
||||
{ &:extend(.nitro); }
|
||||
|
||||
#connections-tab div[class^="children-"] {
|
||||
flex-direction: row;
|
||||
div[class^="accountList-"] {
|
||||
margin-right: @div-width;
|
||||
height: 100%; // decreases height? 0_0
|
||||
}
|
||||
div[class^="connectionList-"] {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
#appearance-tab div[class^="children-"] {
|
||||
.horiz-tab();
|
||||
|
||||
& > div:first-child {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
div[class^="marginTop20-"] > div[class^="slider-"] {
|
||||
margin-top: 28px;
|
||||
}
|
||||
}
|
||||
|
||||
#accessibility-tab div div[class^="children-"] {
|
||||
& > div {
|
||||
&:nth-child(2),
|
||||
&:nth-child(3),
|
||||
&:nth-child(6),
|
||||
&:nth-child(7)
|
||||
{ &:extend(.hide); }
|
||||
|
||||
&:nth-child(4) {
|
||||
margin-top: @div-width * 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#notifications-tab div[class^="children"] {
|
||||
div:nth-child(6)
|
||||
{ &:extend(.hide); }
|
||||
}
|
||||
|
||||
#language-tab div[class^="children-"] {
|
||||
div div > div[role="radiogroup"] {
|
||||
.horiz-tab(3);
|
||||
}
|
||||
}
|
||||
|
||||
#streamer-mode-tab div[class^="children-"] {
|
||||
.horiz-tab();
|
||||
& > * {
|
||||
&:nth-child(1),
|
||||
&:nth-child(2)
|
||||
{ width: 100%; }
|
||||
&:nth-child(3)
|
||||
{ display: none; }
|
||||
}
|
||||
}
|
||||
|
||||
// Server settings
|
||||
#overview-tab div[class^="children-"] > div {
|
||||
// system messages
|
||||
&:nth-child(3) {
|
||||
.horiz-tab();
|
||||
|
||||
& > :nth-child(1),
|
||||
& > :nth-child(2)
|
||||
{ width: 100%; }
|
||||
|
||||
& > :nth-child(3) // description
|
||||
{ display: none; }
|
||||
}
|
||||
|
||||
// notification settings
|
||||
&:nth-child(4) > div > div:last-child {
|
||||
.horiz-tab();
|
||||
}
|
||||
|
||||
// nitro features
|
||||
&:nth-child(5) > div > div:last-child {
|
||||
.horiz-tab(3);
|
||||
& > * {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: none;
|
||||
}
|
||||
& > div:first-child div[class^="flexChild-"]
|
||||
{ display: none; }
|
||||
}
|
||||
}
|
||||
|
||||
#moderation-tab div[class^="children-"] {
|
||||
div[role="radiogroup"] {
|
||||
.horiz-tab();
|
||||
}
|
||||
}
|
||||
|
||||
div[data-list-id="audit-log"] {
|
||||
.horiz-tab();
|
||||
& > * {
|
||||
height: min-content;
|
||||
}
|
||||
}
|
||||
|
||||
#integrations-tab > div:nth-child(2) {
|
||||
.horiz-tab();
|
||||
|
||||
img[class^="iconWrapper-"] {
|
||||
width: unset;
|
||||
}
|
||||
|
||||
button[class^="createButton-"],
|
||||
[class^="sectionHeader-"],
|
||||
& > div:first-child {
|
||||
width: 100%;
|
||||
margin-bottom: @div-width * 3;
|
||||
}
|
||||
}
|
||||
|
||||
#widget-tab div[class^="children-"] {
|
||||
&, & > div[class^="infoWrapper-"] {
|
||||
.horiz-tab();
|
||||
row-gap: @gap * 2;
|
||||
}
|
||||
|
||||
img[class^="infoItem-"]
|
||||
{ display: none; }
|
||||
|
||||
div[class^="infoItem-"],
|
||||
& > div:first-child,
|
||||
& > div:last-child {
|
||||
width: 100%;
|
||||
flex-basis: unset;
|
||||
}
|
||||
}
|
||||
|
||||
#community-tab > div[class^="container-"] {
|
||||
& > div[class^="banner-"]
|
||||
{ &:extend(.hide); }
|
||||
}
|
||||
|
||||
#discovery-tab > div[class^="container-"] {
|
||||
.horiz-tab();
|
||||
span[class*="Button"] {
|
||||
align-self: start;
|
||||
}
|
||||
}
|
149
src/style/style.less
Normal file
149
src/style/style.less
Normal file
|
@ -0,0 +1,149 @@
|
|||
.round { .radius(@round); }
|
||||
.rounder { .radius(@rounder); }
|
||||
|
||||
// Space between sidebar and chat
|
||||
div[class^="sidebar-"] {
|
||||
margin-right: @div-width;
|
||||
}
|
||||
|
||||
// Old-school embed
|
||||
[class*="embed"] {
|
||||
.left-border(3px);
|
||||
max-width: unset;
|
||||
background: unset;
|
||||
}
|
||||
|
||||
// Round
|
||||
// UI parts
|
||||
li[class^="channel-"],
|
||||
[class^="avatar-"],
|
||||
[role="dialog"],
|
||||
div[class^="menu-"] [role="menuitem"],
|
||||
div[class^="role-"],
|
||||
div[class^="colorPicker"] div div[class^="saturation"] div,
|
||||
#channels ul li div > div[class^="content-"],
|
||||
|
||||
// Input
|
||||
div[class^="searchBox-"],
|
||||
[class*="input"],
|
||||
input[class^="inputDefault-"],
|
||||
div[class*="TextArea"],
|
||||
textarea,
|
||||
{ &:extend(.round); }
|
||||
|
||||
// Rounder
|
||||
// Popouts
|
||||
[class^="authBox"], // login
|
||||
[role="menu"],
|
||||
div[class*="popout"],
|
||||
div[class*="Popout"],
|
||||
div[class*="fullscreenOnMobile"],
|
||||
div[class*="root"] div[class^="flex-"],
|
||||
|
||||
// UI parts
|
||||
div[class^="chat-"],
|
||||
div[class^="noticeRegion"] > div, // you have unsaved changes bottom bar
|
||||
[class^="resultsGroup-"], // search
|
||||
div[class^="auditLog-"],
|
||||
div[class^="auditLog-"] > div,
|
||||
|
||||
div[class^="connectedAccount-"], // in profile
|
||||
div[class^="profileBanner"],
|
||||
div[class^="accountProfile"],
|
||||
|
||||
div[class^="quickswitcher-"] input,
|
||||
|
||||
div[class^="autocomplete-"], // input
|
||||
div[class^="pictureInPicture-"],
|
||||
|
||||
div[class^="select-"],
|
||||
div[class^="messagesWrapper-"] div:not([class*="Inner"]):not([class^="filename"]),
|
||||
|
||||
div[class^="layer-"] > div[class^="container-"],
|
||||
div[class^="base-"] div[class^="content-"] > div:nth-child(2),
|
||||
div[class^="guildList-"] div[class^="container-"],
|
||||
div[class^="container"] > div,
|
||||
div[class^="chat-"] > div[class^="content-"],
|
||||
{ &:extend(.rounder); }
|
||||
|
||||
div[class^="auditLog"] {
|
||||
div[class^="headerExpanded-"]
|
||||
{ .bottom-border(); }
|
||||
div[class^="changeDetails-"]
|
||||
{ .top-border(); }
|
||||
}
|
||||
|
||||
div[class^="messagesWrapper-"]
|
||||
div[class^="message-"][class*="mentioned"]
|
||||
{ .left-border(4px); }
|
||||
|
||||
// no shadows
|
||||
section, header,
|
||||
div[class^="content-"]::before,
|
||||
div[class^="tabBody-"]::before
|
||||
{ box-shadow: unset !important; }
|
||||
|
||||
// Pins
|
||||
div[class^="messageGroupWrapper-"] {
|
||||
border: none;
|
||||
background: unset;
|
||||
}
|
||||
|
||||
// Redesigned text input
|
||||
|
||||
div[class^="attachedBars-"],
|
||||
div[class^="messagesWrapper-"] div[class*="Bar-"]:not([class^="newMessagesBar-"]) {
|
||||
bottom: 16px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
div[class^="attachedBars-"]
|
||||
{ position: relative; }
|
||||
|
||||
div[class^="channelTextArea-"] {
|
||||
& > div[class^="scrollableContainer-"] {
|
||||
background-color: unset;
|
||||
|
||||
button[class^="attachButton-"],
|
||||
div[class^="textArea-"],
|
||||
div[class^="buttons-"] {
|
||||
background-color: var(--background-secondary);
|
||||
border-radius: @roundest !important;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
& > div[class^="inner-"]
|
||||
{ padding: 0; }
|
||||
|
||||
button[class^="attachButton-"] {
|
||||
padding: 8px;
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
div[class^="textArea-"] {
|
||||
margin-left: 8px;
|
||||
.right-border();
|
||||
|
||||
div > * { left: (@roundest / 2); }
|
||||
}
|
||||
|
||||
div[class^="buttons-"] {
|
||||
height: auto; // to match input height
|
||||
& > * {
|
||||
align-items: center; // center buttons
|
||||
}
|
||||
.left-border();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[role="menu"],
|
||||
[role="dialog"]:not([class^="focusLock-"]),
|
||||
div[class^="focusLock-"] > div,
|
||||
div[class^="channelHeader-"],
|
||||
div[class^="layers-"] > div[class^="layer-"] div[class*="View-"],
|
||||
div[class*="stickyHeader-"],
|
||||
{
|
||||
&:extend(.acrylic all);
|
||||
}
|
76
src/style/ui.less
Normal file
76
src/style/ui.less
Normal file
|
@ -0,0 +1,76 @@
|
|||
// UI element changes
|
||||
|
||||
// slider
|
||||
div[class^="slider-"] {
|
||||
div[class^="track-"] {
|
||||
div[class^="grabber-"] {
|
||||
@half: (@rounder / 2);
|
||||
position: relative;
|
||||
width: @rounder;
|
||||
height: @rounder;
|
||||
border: none;
|
||||
border-radius: @half;
|
||||
top: @half * 1.5;
|
||||
margin-top: unset;
|
||||
margin-left: -@half;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// tabs
|
||||
div[role="tab"],
|
||||
div[class^="tabBarItem-"] {
|
||||
.bottom-border();
|
||||
margin: 0;
|
||||
margin-top: 8px;
|
||||
margin-right: 16px;
|
||||
padding: 4px 8px;
|
||||
|
||||
&:hover,
|
||||
&[class*="selected-"] {
|
||||
background-color: var(--interactive-muted) !important;
|
||||
color: var(--text-normal) !important;
|
||||
}
|
||||
}
|
||||
|
||||
// slider
|
||||
div[class^="container-"] {
|
||||
&[class*="disabled-"] {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
svg[class^="slider-"] {
|
||||
width: 16px !important;
|
||||
height: 16px !important;
|
||||
border-radius: 50%;
|
||||
margin: 4px 8px;
|
||||
margin-right: 0;
|
||||
background-color: white;
|
||||
|
||||
> * {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
div[class^="radioBar-"] {
|
||||
border: none;
|
||||
}
|
||||
|
||||
// Round
|
||||
div[class^="tabBarItem-"],
|
||||
div[class^="checkbox"],
|
||||
button[class*="button"],
|
||||
{ &:extend(.round); }
|
||||
|
||||
// Rounder
|
||||
div[class^="markup-"] pre code, // ```code```
|
||||
span[class^="spoiler"],
|
||||
span.mention,
|
||||
code.inline,
|
||||
[class^="item-"], // in settings
|
||||
div[class^="group-"], // radiogroup
|
||||
div[class*="card"],
|
||||
div[class^="categoryItem-"] > *, // in Discovery
|
||||
div[class^="content-"] img[class^="image-"],
|
||||
{ &:extend(.rounder); }
|
Loading…
Reference in a new issue