commit
122036fd14
|
@ -44,7 +44,7 @@ export default class {
|
||||||
* returns {String}
|
* returns {String}
|
||||||
*/
|
*/
|
||||||
static get contentPath() {
|
static get contentPath() {
|
||||||
return this._contentPath ? this._contentPath : (this._contentPath = Globals.getObject('paths').find(path => path.id === this.pathId).path);
|
return Globals.getPath(this.pathId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -63,4 +63,16 @@ export default new class extends Module {
|
||||||
return this.state[name];
|
return this.state[name];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getPath(id) {
|
||||||
|
return this.state.paths.find(path => path.id === id).path;
|
||||||
|
}
|
||||||
|
|
||||||
|
static get paths() {
|
||||||
|
return this.state.paths;
|
||||||
|
}
|
||||||
|
|
||||||
|
static get version() {
|
||||||
|
return this.state.version;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -133,6 +133,6 @@ export default new class Settings {
|
||||||
}
|
}
|
||||||
|
|
||||||
get dataPath() {
|
get dataPath() {
|
||||||
return this._dataPath ? this._dataPath : (this._dataPath = Globals.getObject('paths').find(p => p.id === 'data').path);
|
return Globals.getPath('data');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,8 +48,8 @@ export default class {
|
||||||
try {
|
try {
|
||||||
Events.emit('update-check-end');
|
Events.emit('update-check-end');
|
||||||
Logger.info('Updater',
|
Logger.info('Updater',
|
||||||
`Latest Version: ${e.version} - Current Version: ${Globals.getObject('version')}`);
|
`Latest Version: ${e.version} - Current Version: ${Globals.version}`);
|
||||||
if (e.version !== Globals.getObject('version')) {
|
if (e.version !== Globals.version) {
|
||||||
this.updatesAvailable = true;
|
this.updatesAvailable = true;
|
||||||
Events.emit('updates-available');
|
Events.emit('updates-available');
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,39 +11,41 @@
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const sass = require('node-sass');
|
const sass = require('node-sass');
|
||||||
|
|
||||||
/**
|
const { FileUtils, BDIpc, Config, WindowUtils, CSSEditor, Database } = require('./modules');
|
||||||
* DEVELOPMENT VARIABLES
|
|
||||||
*/
|
|
||||||
const clientScriptPath = path.resolve(__dirname, '..', '..', 'client', 'dist').replace(/\\/g, '/');
|
|
||||||
|
|
||||||
const __DEV = {
|
|
||||||
TESTING: false,
|
|
||||||
clientScriptPath: `${clientScriptPath}/betterdiscord.client.js`
|
|
||||||
}
|
|
||||||
|
|
||||||
const __dataPath = path.resolve(__dirname, '..', '..', 'tests', 'data');
|
|
||||||
const __pluginPath = path.resolve(__dirname, '..', '..', 'tests', 'plugins');
|
|
||||||
const __themePath = path.resolve(__dirname, '..', '..', 'tests', 'themes');
|
|
||||||
const __modulePath = path.resolve(__dirname, '..', '..', 'tests', 'modules');
|
|
||||||
|
|
||||||
const { Utils, FileUtils, BDIpc, Config, WindowUtils, CSSEditor, Database } = require('./modules');
|
|
||||||
const { BrowserWindow, dialog } = require('electron');
|
const { BrowserWindow, dialog } = require('electron');
|
||||||
|
|
||||||
|
const tests = true;
|
||||||
|
const _clientScript = tests
|
||||||
|
? path.resolve(__dirname, '..', '..', 'client', 'dist', 'betterdiscord.client.js')
|
||||||
|
: path.resolve(__dirname, 'betterdiscord.client.js');
|
||||||
|
const _dataPath = tests
|
||||||
|
? path.resolve(__dirname, '..', '..', 'tests', 'data')
|
||||||
|
: path.resolve(__dirname, 'data');
|
||||||
|
const _extPath = tests
|
||||||
|
? path.resolve(__dirname, '..', '..', 'tests', 'ext')
|
||||||
|
: path.resolve(__dirname, 'ext');
|
||||||
|
const _pluginPath = path.resolve(_extPath, 'plugins');
|
||||||
|
const _themePath = path.resolve(_extPath, 'themes');
|
||||||
|
const _modulePath = path.resolve(_extPath, 'modules');
|
||||||
|
|
||||||
|
const paths = [
|
||||||
|
{ id: 'cs', path: _clientScript.replace(/\\/g, '/') },
|
||||||
|
{ id: 'data', path: _dataPath.replace(/\\/g, '/') },
|
||||||
|
{ id: 'ext', path: _extPath.replace(/\\/g, '/') },
|
||||||
|
{ id: 'plugins', path: _pluginPath.replace(/\\/g, '/') },
|
||||||
|
{ id: 'themes', path: _themePath.replace(/\\/g, '/') },
|
||||||
|
{ id: 'modules', path: _modulePath.replace(/\\/g, '/') }
|
||||||
|
];
|
||||||
|
|
||||||
|
const sparkplug = path.resolve(__dirname, 'sparkplug.js').replace(/\\/g, '/');
|
||||||
|
|
||||||
const Common = {};
|
const Common = {};
|
||||||
|
const globals = {
|
||||||
|
version: '2.0.0a',
|
||||||
|
paths
|
||||||
|
}
|
||||||
|
|
||||||
const dummyArgs = {
|
const dbInstance = new Database(paths.find(path => path.id === 'data').path);
|
||||||
'version': '2.0.0a',
|
|
||||||
'paths': [
|
|
||||||
{ 'id': 'base', 'path': 'basePath' },
|
|
||||||
{ 'id': 'data', 'path': __dataPath },
|
|
||||||
{ 'id': 'plugins', 'path': __pluginPath },
|
|
||||||
{ 'id': 'themes', 'path': __themePath },
|
|
||||||
{ 'id': 'modules', 'path': __modulePath }
|
|
||||||
]
|
|
||||||
};
|
|
||||||
const dbInstance = new Database(dummyArgs.paths.find(path => path.id === 'data').path);
|
|
||||||
console.log(dummyArgs);
|
|
||||||
|
|
||||||
|
|
||||||
class Comms {
|
class Comms {
|
||||||
|
|
||||||
|
@ -120,7 +122,6 @@ class BetterDiscord {
|
||||||
|
|
||||||
constructor(args) {
|
constructor(args) {
|
||||||
if (BetterDiscord.loaded) {
|
if (BetterDiscord.loaded) {
|
||||||
// Creating two BetterDiscord objects???
|
|
||||||
console.log('Creating two BetterDiscord objects???');
|
console.log('Creating two BetterDiscord objects???');
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -128,7 +129,7 @@ class BetterDiscord {
|
||||||
|
|
||||||
this.injectScripts = this.injectScripts.bind(this);
|
this.injectScripts = this.injectScripts.bind(this);
|
||||||
this.ignite = this.ignite.bind(this);
|
this.ignite = this.ignite.bind(this);
|
||||||
Common.Config = new Config(args || dummyArgs);
|
Common.Config = new Config(globals);
|
||||||
this.comms = new Comms(this);
|
this.comms = new Comms(this);
|
||||||
this.init();
|
this.init();
|
||||||
}
|
}
|
||||||
|
@ -139,16 +140,6 @@ class BetterDiscord {
|
||||||
|
|
||||||
this.csseditor = new CSSEditor(this);
|
this.csseditor = new CSSEditor(this);
|
||||||
|
|
||||||
//Log some events for now
|
|
||||||
//this.windowUtils.webContents.on('did-start-loading', e => this.windowUtils.executeJavascript(`console.info('did-start-loading');`));
|
|
||||||
//this.windowUtils.webContents.on('did-stop-loading', e => this.windowUtils.executeJavascript(`console.info('did-stop-loading');`));
|
|
||||||
//this.windowUtils.webContents.on('did-get-response-details', e => this.ignite(this.windowUtils.window));
|
|
||||||
//this.windowUtils.webContents.on('page-favicon-updated', e => this.windowUtils.executeJavascript(`console.info('page-favicon-updated');`));
|
|
||||||
//this.windowUtils.webContents.on('will-navigate', e => this.windowUtils.executeJavascript(`console.info('will-navigate');`));
|
|
||||||
//this.windowUtils.webContents.on('did-navigate', e => this.windowUtils.executeJavascript(`console.info('did-navigate');`));
|
|
||||||
//this.windowUtils.webContents.on('did-navigate-in-page', e => this.windowUtils.executeJavascript(`console.info('did-navigate-in-page');`));
|
|
||||||
//this.windowUtils.webContents.on('did-finish-load', e => this.injectScripts(true));
|
|
||||||
|
|
||||||
this.windowUtils.events('did-get-response-details', () => this.ignite(this.windowUtils.window));
|
this.windowUtils.events('did-get-response-details', () => this.ignite(this.windowUtils.window));
|
||||||
this.windowUtils.events('did-finish-load', e => this.injectScripts(true));
|
this.windowUtils.events('did-finish-load', e => this.injectScripts(true));
|
||||||
|
|
||||||
|
@ -157,13 +148,13 @@ class BetterDiscord {
|
||||||
});
|
});
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
if (__DEV) { this.injectScripts(); }
|
this.injectScripts();
|
||||||
}, 500);
|
}, 500);
|
||||||
}
|
}
|
||||||
|
|
||||||
async waitForWindow() {
|
async waitForWindow() {
|
||||||
const self = this;
|
const self = this;
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise(resolve => {
|
||||||
const defer = setInterval(() => {
|
const defer = setInterval(() => {
|
||||||
const windows = BrowserWindow.getAllWindows();
|
const windows = BrowserWindow.getAllWindows();
|
||||||
|
|
||||||
|
@ -173,13 +164,7 @@ class BetterDiscord {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (__DEV && __DEV.TESTING && windows.length > 0) {
|
if (windows.length === 1 && windows[0].webContents.getURL().includes('discordapp.com')) {
|
||||||
resolve(windows[0]);
|
|
||||||
clearInterval(defer);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (windows.length === 1 && windows[0].webContents.getURL().includes("discordapp.com")) {
|
|
||||||
resolve(windows[0]);
|
resolve(windows[0]);
|
||||||
clearInterval(defer);
|
clearInterval(defer);
|
||||||
}
|
}
|
||||||
|
@ -189,15 +174,12 @@ class BetterDiscord {
|
||||||
|
|
||||||
ignite(window) {
|
ignite(window) {
|
||||||
//Hook things that Discord removes from global. These will be removed again in the client script
|
//Hook things that Discord removes from global. These will be removed again in the client script
|
||||||
const sp = path.resolve(__dirname, 'sparkplug.js').replace(/\\/g, '/');
|
window.webContents.executeJavaScript(`require("${sparkplug}");`);
|
||||||
window.webContents.executeJavaScript(`require("${sp}");`);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
injectScripts(reload = false) {
|
injectScripts(reload = false) {
|
||||||
console.log(`RELOAD? ${reload}`);
|
console.log(`RELOAD? ${reload}`);
|
||||||
if (__DEV) {
|
this.windowUtils.injectScript(paths.find(path => path.id === 'cs').path);
|
||||||
this.windowUtils.injectScript(__DEV.clientScriptPath);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
get fileUtils() { return FileUtils; }
|
get fileUtils() { return FileUtils; }
|
||||||
|
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
Binary file not shown.
|
@ -0,0 +1,198 @@
|
||||||
|
{
|
||||||
|
"info": {
|
||||||
|
"name": "SimplerFlat",
|
||||||
|
"authors": [ "Qwerasd" ],
|
||||||
|
"version": 1.02,
|
||||||
|
"description": "SimplerFlat is a solid colored dark flat theme with customizable colors.",
|
||||||
|
"type": "sass"
|
||||||
|
},
|
||||||
|
"main": "index.scss",
|
||||||
|
"defaultConfig": [
|
||||||
|
{
|
||||||
|
"category": "not default",
|
||||||
|
"category_name": "not default",
|
||||||
|
"type": "drawer",
|
||||||
|
"settings": [
|
||||||
|
{
|
||||||
|
"id": "color-light",
|
||||||
|
"type": "color",
|
||||||
|
"value": "#3E3E3E",
|
||||||
|
"text": "Light Color",
|
||||||
|
"hint": "The color of things that are lighter than the chat panel."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "color-medium",
|
||||||
|
"type": "color",
|
||||||
|
"value": "#2E2E2E",
|
||||||
|
"text": "Medium Color",
|
||||||
|
"hint": "The color of the chat panel."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "color-dark",
|
||||||
|
"type": "color",
|
||||||
|
"value": "#1E1E1E",
|
||||||
|
"text": "Dark Color",
|
||||||
|
"hint": "The color of the channels, and members panels."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "color-very-dark",
|
||||||
|
"type": "color",
|
||||||
|
"value": "#0E0E0E",
|
||||||
|
"text": "Very Dark Color",
|
||||||
|
"hint": "The color of the guilds sidebar."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "main-color",
|
||||||
|
"type": "color",
|
||||||
|
"value": "#00FAFA",
|
||||||
|
"text": "Accent Color",
|
||||||
|
"hint": "For when a little bit of sophistication is required."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "main-text-color",
|
||||||
|
"type": "color",
|
||||||
|
"value": "#FAFAFA",
|
||||||
|
"text": "Text Color",
|
||||||
|
"hint": "Most text will be this color."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "chat-text-color",
|
||||||
|
"type": "color",
|
||||||
|
"value": "#FFFFFF",
|
||||||
|
"text": "Chat Color",
|
||||||
|
"hint": "Text in the chat pane will be this color."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "code-text-color",
|
||||||
|
"type": "color",
|
||||||
|
"value": "#CCCCCC",
|
||||||
|
"text": "Code Color",
|
||||||
|
"hint": "Non syntax-highlighted code in codeblocks will be this color."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "tint-color",
|
||||||
|
"type": "color",
|
||||||
|
"value": "#00FAFA",
|
||||||
|
"text": "Tint Color",
|
||||||
|
"hint": "Tint all of the background colors using this color."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "tint-strength",
|
||||||
|
"type": "slider",
|
||||||
|
"value": 0,
|
||||||
|
"min": 0,
|
||||||
|
"max": 100,
|
||||||
|
"step": 0.5,
|
||||||
|
"unit": "%",
|
||||||
|
"multi": "0.5",
|
||||||
|
"text": "Tint Strength",
|
||||||
|
"hint": "How strongly to tint the background colors."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "collapsing-panels",
|
||||||
|
"type": "bool",
|
||||||
|
"value": false,
|
||||||
|
"text": "Collapsing Side Panels",
|
||||||
|
"hint": "Fancy channels and members panels that hide themselves when not needed."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "compact-server-list",
|
||||||
|
"type": "bool",
|
||||||
|
"value": false,
|
||||||
|
"text": "Compact Server List",
|
||||||
|
"hint": "Squishes together your servers so that they take up less space."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"configSchemes": [
|
||||||
|
{
|
||||||
|
"id": "default",
|
||||||
|
"name": "Default Colors",
|
||||||
|
"hint": "The basic colors -- good for tinting.",
|
||||||
|
"settings": [
|
||||||
|
{
|
||||||
|
"category": "default",
|
||||||
|
"settings": [
|
||||||
|
{
|
||||||
|
"id": "color-light",
|
||||||
|
"value": "#3E3E3E"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "color-medium",
|
||||||
|
"value": "#2E2E2E"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "color-dark",
|
||||||
|
"value": "#1E1E1E"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "color-very-dark",
|
||||||
|
"value": "#0E0E0E"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "main-color",
|
||||||
|
"value": "#00FAFA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "main-text-color",
|
||||||
|
"value": "#FAFAFA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "chat-text-color",
|
||||||
|
"value": "#FFFFFF"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "code-text-color",
|
||||||
|
"value": "#CCCCCC"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "high-contrast",
|
||||||
|
"name": "High Contrast",
|
||||||
|
"hint": "Very high contrast scheme.",
|
||||||
|
"settings": [
|
||||||
|
{
|
||||||
|
"category": "default",
|
||||||
|
"settings": [
|
||||||
|
{
|
||||||
|
"id": "color-light",
|
||||||
|
"value": "#CCCCCC"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "color-medium",
|
||||||
|
"value": "#000000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "color-dark",
|
||||||
|
"value": "#000000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "color-very-dark",
|
||||||
|
"value": "#000000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "main-color",
|
||||||
|
"value": "#FFFFFF"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "main-text-color",
|
||||||
|
"value": "#FFFFFF"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "chat-text-color",
|
||||||
|
"value": "#FFFFFF"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "code-text-color",
|
||||||
|
"value": "#FFFFFF"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,479 @@
|
||||||
|
/*
|
||||||
|
SimplerFlat | Copyright © 2018, Qwerasd | All rights reserved | DO NOT DISTRIBUTE
|
||||||
|
*/
|
||||||
|
|
||||||
|
@import 'vars';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Panel colors */
|
||||||
|
|
||||||
|
/* Center panel */
|
||||||
|
|
||||||
|
.chat, .messages-wrapper, .chat>.content, .chat form, .chat div[class^="titleWrapper"]>div, div[class^="typing"] {
|
||||||
|
background-color: $color-medium!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* User list panel */
|
||||||
|
|
||||||
|
.channel-members-wrap, .channel-members {
|
||||||
|
background-color: $color-dark!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Channel list panel */
|
||||||
|
|
||||||
|
div[class^="channels"], div[class^="channels"]>div[class^="flex"] {
|
||||||
|
background-color: $color-dark!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.guild {
|
||||||
|
background-color: transparent!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.guilds-add {
|
||||||
|
background-color: $color-very-dark!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.guilds-add, .guilds-add-inner {
|
||||||
|
color: $color-light!important;
|
||||||
|
border-color: $color-light!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Guilds list panel */
|
||||||
|
|
||||||
|
div#app-mount[class^="appMount"], div.guilds-wrapper {
|
||||||
|
background-color: $color-very-dark;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app.flex-vertical>div[class^="layers-"],
|
||||||
|
.app.flex-vertical>div[class^="layers-"]>div[class^="layer-"],
|
||||||
|
.app.flex-vertical>div[class^="layers-"]>div[class^="layer-"]>div[class^="flex-"] {
|
||||||
|
background-color: $color-very-dark;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Right settings panel */
|
||||||
|
|
||||||
|
.ui-standard-sidebar-view .content-region {
|
||||||
|
background-color: $color-medium!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Left settings panel */
|
||||||
|
|
||||||
|
.ui-standard-sidebar-view .sidebar-region {
|
||||||
|
background-color: $color-dark!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Friends panel */
|
||||||
|
|
||||||
|
#friends, #friends>div {
|
||||||
|
background-color: $color-medium!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Context menus */
|
||||||
|
|
||||||
|
div[class^="contextMenu"] {
|
||||||
|
background-color: $color-dark!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[class^="contextMenu"] div[class^="itemGroup"] div[class^="item"] {
|
||||||
|
background-color: $color-dark!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[class^="contextMenu"] div[class^="itemGroup"] div[class^="item"]:hover {
|
||||||
|
background-color: $color-very-dark!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* nochannel */
|
||||||
|
|
||||||
|
div[class^="noChannel"] {
|
||||||
|
background-color: $color-medium!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* cards */
|
||||||
|
|
||||||
|
div[class^="row"]>div[class^="flex"]:before {
|
||||||
|
background-color: $color-dark!important;
|
||||||
|
border-color: $color-very-dark!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* modals */
|
||||||
|
|
||||||
|
div[class^="theme-light wrapper"] {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-header header, div[class^="blurb"], div[class^="expireText"] {
|
||||||
|
color: $main-text-color!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[class^="modal-"] form {
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[class^="modal-"] form, .form-header, .form-inner {
|
||||||
|
background-color: $color-medium!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[class^="modal-"] form>div:last-child, .form-actions {
|
||||||
|
background-color: $color-dark!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* themed popouts */
|
||||||
|
|
||||||
|
.themed-popout {
|
||||||
|
background-color: $color-dark!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.themed-popout .header, .messages-popout .message-group {
|
||||||
|
background-color: $color-medium!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* search results */
|
||||||
|
|
||||||
|
.search-results-wrap {
|
||||||
|
background-color: $color-medium!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-header {
|
||||||
|
background-color: $color-dark!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-result-message.hit {
|
||||||
|
background-color: $color-dark!important;
|
||||||
|
box-shadow: none!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-results-wrap .channel-separator .channel-name, .search-result:before, .search-result:after {
|
||||||
|
background: transparent!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.message-group:hover .action-buttons {
|
||||||
|
background: transparent!important;
|
||||||
|
box-shadow: none!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.action-buttons>div {
|
||||||
|
background-color: $color-light!important;
|
||||||
|
color: $color-very-dark!important;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.action-buttons>div>.text {
|
||||||
|
color: $color-very-dark!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Various other things */
|
||||||
|
|
||||||
|
.popout>div>div[class^="body"], .popout>div>div[class^="footer"] {
|
||||||
|
background-color: $color-dark!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Scroll bars */
|
||||||
|
|
||||||
|
.scroller-wrap .scroller::-webkit-scrollbar-track-piece, .bd-scroller-wrap .bd-scroller::-webkit-scrollbar-track-piece {
|
||||||
|
background-color: $color-medium!important;
|
||||||
|
background-clip:padding-box;
|
||||||
|
border:3px solid $color-light!important;
|
||||||
|
border-radius:7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scroller-wrap .scroller::-webkit-scrollbar-thumb, .bd-scroller-wrap .bd-scroller::-webkit-scrollbar-thumb {
|
||||||
|
background-clip:padding-box;
|
||||||
|
background-color:$color-dark!important;
|
||||||
|
border:3px solid $color-light!important;
|
||||||
|
border-radius:7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Other bits and bobs */
|
||||||
|
|
||||||
|
div[class^="searchBar"], .searchBar-YMJBu9 {
|
||||||
|
background-color: $color-light!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* message inside modal */
|
||||||
|
|
||||||
|
form div[class^="message"] {
|
||||||
|
background-color: $color-dark!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* new messages divider */
|
||||||
|
|
||||||
|
.messages .divider span {
|
||||||
|
background-color: $color-medium!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Command autosuggest */
|
||||||
|
|
||||||
|
div[class^="autocomplete-"] {
|
||||||
|
background-color: $color-dark!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[class^="selectorSelected"] {
|
||||||
|
background-color: $color-medium!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Code blocks */
|
||||||
|
|
||||||
|
.markup pre, .markup code {
|
||||||
|
background-color: $color-dark!important;
|
||||||
|
border-color: $color-very-dark!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* message accessories */
|
||||||
|
|
||||||
|
.message .accessory>div {
|
||||||
|
background-color: $color-dark;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Text stuff */
|
||||||
|
|
||||||
|
.app :not(div[class^="channels"]) :not(code):not(.kawaii-linenumbers):not(li):not(span):not(.user-name):not(.member-username):not(.markup):not(form):not(textarea):not(button):not(.guild):not(a):not(.discord-tag):not(.username):not(.discriminator):not(.ui-button-contents) {
|
||||||
|
color:$main-text-color!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
:not(code):not(kawaii-linenumbers):not(li):not(span):not(.markup):not(form):not(textarea) {
|
||||||
|
font-family:$global-font, Whitney, Helvetica Neue, Helvetica, Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markup,form,textarea {
|
||||||
|
color:$chat-text-color!important;
|
||||||
|
font-family:$chat-font, Whitney, Helvetica Neue, Helvetica, Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markup {
|
||||||
|
font-size:$chat-font-size!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[class^="ace_"] {
|
||||||
|
font-family: $code-font, monospace!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
code,code span,.kawaii-linenumbers,.kawaii-linenumbers li {
|
||||||
|
font-family: $code-font, Whitney, Helvetica Neue, Helvetica, Arial, sans-serif!important;
|
||||||
|
font-size: $code-font-size!important;
|
||||||
|
font-weight: $code-font-weight!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
code,.kawaii-linenumbers {
|
||||||
|
color:$code-text-color!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Emoji Picker */
|
||||||
|
|
||||||
|
div[class^="emojiPicker-"] div[class^="stickyHeader-"] {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[class^="emojiPicker-"] {
|
||||||
|
background-color: $color-light;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-bar.search-bar-light {
|
||||||
|
background-color: $color-light;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-bar.search-bar-light input, .search-bar.search-bar-light input::-webkit-input-placeholder {
|
||||||
|
color: $main-text-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-bar.search-bar-light input::-webkit-input-placeholder {
|
||||||
|
opacity: 0.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-bar-light .search-bar-icon .icon {
|
||||||
|
filter: invert(100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
div[class^="emojiPicker-"] div[class^="scroller-"]::-webkit-scrollbar-track-piece {
|
||||||
|
background-color: $color-medium;
|
||||||
|
background-clip:padding-box;
|
||||||
|
border-radius:7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[class^="emojiPicker-"] div[class^="scroller-"]::-webkit-scrollbar-thumb {
|
||||||
|
background-clip:padding-box;
|
||||||
|
background-color:$color-dark!important;
|
||||||
|
border: none!important;
|
||||||
|
border-radius:7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Emoji drop shadow so that dark emojis are visible on the dark background */
|
||||||
|
|
||||||
|
.message-group .emoji {
|
||||||
|
filter: drop-shadow(0px 0px 1px #FFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* BD button */
|
||||||
|
|
||||||
|
.bd-settings-wrapper .bd-settings-button:not(.bd-active) {
|
||||||
|
background-color: $color-very-dark;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* BD interface */
|
||||||
|
|
||||||
|
|
||||||
|
/*sidebar*/
|
||||||
|
|
||||||
|
.bd-sidebar-view .bd-sidebar-region {
|
||||||
|
background-color: $color-dark;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*content*/
|
||||||
|
|
||||||
|
.bd-sidebar-view .bd-content-region {
|
||||||
|
background-color: $color-medium;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*modals*/
|
||||||
|
|
||||||
|
.bd-modal .bd-modal-inner {
|
||||||
|
background-color: $color-medium;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*color picker*/
|
||||||
|
|
||||||
|
.bd-form-colourpicker .vc-chrome {
|
||||||
|
z-index: 1;
|
||||||
|
|
||||||
|
& .vc-chrome-body {
|
||||||
|
background-color: $color-medium;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Channel List stuff */
|
||||||
|
|
||||||
|
*[class^="colorUnread"] {
|
||||||
|
color: $main-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[class^="wrapperHovered"] div[class^="content"] {
|
||||||
|
background-color: $color-very-dark;
|
||||||
|
}
|
||||||
|
|
||||||
|
*[class^="colorHovered"], *[class^="colorSelected"] {
|
||||||
|
color: #FFFFFF;
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[class^="nameUnread"] {
|
||||||
|
color: $main-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Collapsing stuff **/
|
||||||
|
|
||||||
|
@if $collapsing-panels {
|
||||||
|
|
||||||
|
/* Channels list */
|
||||||
|
|
||||||
|
div[class^="channels"]:not(:hover) {
|
||||||
|
width: 3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.channel.private a {
|
||||||
|
padding-left: 0.4em;
|
||||||
|
margin-left: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.private-channels .search-bar, .private-channels .btn-friends, .private-channels header {
|
||||||
|
overflow: hidden;
|
||||||
|
transition: height 0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.private-channels:not(:hover) .search-bar, .private-channels:not(:hover) .btn-friends, .private-channels:not(:hover) header {
|
||||||
|
height: 0px;
|
||||||
|
font-size: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div[class^="wrapperDefaultVoice"]+div, div[class^="wrapperHoveredVoice"]+div, div[class^="wrapperSelectedVoice"]+div {
|
||||||
|
padding-left: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Foldaway channel members sidebar */
|
||||||
|
|
||||||
|
.channel-members-wrap {
|
||||||
|
min-width:1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.channel-members-wrap:not(:hover) {
|
||||||
|
width: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.channel-members {
|
||||||
|
padding-top:0;
|
||||||
|
padding-bottom:0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Compact Server List */
|
||||||
|
|
||||||
|
@if $compact-server-list {
|
||||||
|
|
||||||
|
.guilds-wrapper .guilds .guild.selected:before {
|
||||||
|
margin-top: -10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.guilds-wrapper .guilds .guild.selected {
|
||||||
|
z-index: 2;
|
||||||
|
transform: scale(1.2);
|
||||||
|
margin: 10px;
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.guilds-wrapper .guilds .guild.unread:not(.selected)::before {
|
||||||
|
margin-top: 1px;
|
||||||
|
height: 15px;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.guilds-wrapper .guilds .guild:not(.guilds-add) {
|
||||||
|
height: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.guilds-wrapper .guilds .guild:first-child {
|
||||||
|
height: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.guilds-wrapper .guilds .guild.selected::before {
|
||||||
|
animation: selectserver 0.4s cubic-bezier(1, 0, 1, 0);
|
||||||
|
-webkit-animation: selectserver 0.4s cubic-bezier(1, 0, 1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.guilds-wrapper .guilds .guild:not(:first-child):not(.selected) div:not(.badge) {
|
||||||
|
transition: height 0.5s;
|
||||||
|
-webkit-transition: height 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.guilds-wrapper .guilds .guild:not(:first-child):not(.selected):hover div:not(.badge) {
|
||||||
|
height: 50px;
|
||||||
|
transform: scale(1.2);
|
||||||
|
-webkit-transform: scale(1.2);
|
||||||
|
transition: height 0.5s;
|
||||||
|
-webkit-transition: height 0.5s;
|
||||||
|
margin-bottom: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.guilds-wrapper .guilds .guild:not(:first-child):not(.selected):hover {
|
||||||
|
z-index: 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.guilds-wrapper .guilds .guild .badge {
|
||||||
|
bottom: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.guilds-wrapper .guilds .guild:not(:first-child):not(.selected):hover .badge {
|
||||||
|
transform:scale(1.35);
|
||||||
|
bottom: 19px;
|
||||||
|
right: -7px;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
|
||||||
|
|
||||||
|
/* Theme */
|
||||||
|
$main-color: #00FAFA !default; /*Main general theme color (#00FAFA Light Cyan by default)*/
|
||||||
|
|
||||||
|
/* Text */
|
||||||
|
$main-text-color: #FAFAFA !default; /*The colour of text onscreen in most places (#FAFAFA light grey by default)*/
|
||||||
|
$chat-text-color: #FFFFFF !default; /*The chat will be this color*/
|
||||||
|
$code-text-color: #CCCCCC !default; /*The non-syntax hilighted bits in code blocks will be this color*/
|
||||||
|
|
||||||
|
/* Background */
|
||||||
|
$color-light: #3E3E3E !default; /*These are all colors used in the background*/
|
||||||
|
$color-medium: #2E2E2E !default;
|
||||||
|
$color-dark: #1E1E1E !default;
|
||||||
|
$color-very-dark: #0E0E0E !default;
|
||||||
|
|
||||||
|
/* Tinting */
|
||||||
|
|
||||||
|
$tint-color: $main-color !default;
|
||||||
|
$tint-strength: 0% !default;
|
||||||
|
|
||||||
|
/* Font */
|
||||||
|
$global-font: 'Whitney' !default; /*This font will appear most places*/
|
||||||
|
$chat-font: 'Whitney' !default; /*This font will appear in the main chat*/
|
||||||
|
$chat-font-size: 15px !default;
|
||||||
|
$code-font: monospace !default; /*This will appear in code blocks*/
|
||||||
|
$code-font-size: 14px !default;
|
||||||
|
$code-font-weight: 700 !default;
|
||||||
|
|
||||||
|
/* other */
|
||||||
|
|
||||||
|
$collapsing-panels: false !default;
|
||||||
|
$compact-server-list: false !default;
|
||||||
|
|
||||||
|
/* do some stuff with the vars */
|
||||||
|
|
||||||
|
$color-light: mix($tint-color, $color-light, $tint-strength);
|
||||||
|
$color-medium: mix($tint-color, $color-medium, $tint-strength);
|
||||||
|
$color-dark: mix($tint-color, $color-dark, $tint-strength);
|
||||||
|
$color-very-dark: mix($tint-color, $color-very-dark, $tint-strength);
|
Loading…
Reference in New Issue