diff --git a/src/main/base/browserwindow.ts b/src/main/base/browserwindow.ts index e5115fad..755bba14 100644 --- a/src/main/base/browserwindow.ts +++ b/src/main/base/browserwindow.ts @@ -150,6 +150,20 @@ export class BrowserWindow { res.render("main", this.EnvironmentVariables); }); + app.get("/themes/:theme", (req, res) => { + const theme = req.params.theme.toLowerCase(); + const themePath = path.join(utils.getPath('srcPath'), "./renderer/themes/", theme); + const userThemePath = path.join(utils.getPath('themes'), theme); + if (fs.existsSync(userThemePath)) { + res.sendFile(userThemePath); + } else if (fs.existsSync(themePath)) { + res.sendFile(themePath); + } else { + res.send(`// Theme not found - ${userThemePath}`); + } + + }); + app.get("/audio.webm", (req, res) => { try { req.socket.setTimeout(Number.MAX_SAFE_INTEGER); @@ -276,6 +290,14 @@ export class BrowserWindow { event.returnValue = process.platform; }); + ipcMain.on("get-themes", (event, key) => { + if (fs.existsSync(utils.getPath("themes"))) { + event.returnValue = fs.readdirSync(utils.getPath("themes")); + } else { + event.returnValue = []; + } + }); + ipcMain.on("get-i18n", (event, key) => { event.returnValue = utils.getLocale(key); }); diff --git a/src/renderer/index.js b/src/renderer/index.js index 0154a5c1..42855963 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -586,6 +586,9 @@ const app = new Vue({ }, async init() { let self = this + if(this.cfg.visual.theme != "default.less" || this.cfg.visual.theme != "") { + this.setTheme() + } this.setLz(this.cfg.general.language) this.setLzManual() clearTimeout(this.hangtimer) @@ -840,6 +843,18 @@ const app = new Vue({ this.$forceUpdate() }, 500) }, + setTheme(theme = "") { + if(this.cfg.visual.theme == "") { + this.cfg.visual.theme = "default.less" + } + if(theme == ""){ + theme = this.cfg.visual.theme + }else{ + this.cfg.visual.theme = theme + } + document.querySelector("#userTheme").href = `themes/${this.cfg.visual.theme}` + document.querySelectorAll(`[id*='less']`).forEach(el => { el.remove() });less.refresh() + }, unauthorize() { this.mk.unauthorize() document.location.reload() diff --git a/src/renderer/style.less b/src/renderer/style.less index 583798a8..32c31859 100644 --- a/src/renderer/style.less +++ b/src/renderer/style.less @@ -502,6 +502,7 @@ input[type=range].web-slider::-webkit-slider-runnable-track { } .app-sidebar-footer { + border-top: 1px solid rgba(200, 200, 200, 0.15); padding: 11px; .app-playback-controls { @@ -1392,7 +1393,7 @@ input[type="range"].web-slider.display--small::-webkit-slider-thumb { } /* Window is smaller <= 1023px width */ -@media only screen and (max-width: 1023px) { +@media only screen and (max-width: 1120px) { .display--small { display: inherit !important;; @@ -4579,7 +4580,7 @@ input[type="range"].web-slider.display--small::-webkit-slider-thumb { height: 50vh; } - @media only screen and (max-width: 1023px) { + @media only screen and (max-width: 1121px) { .display--large { display: flex !important; } @@ -4970,7 +4971,7 @@ input[type="range"].web-slider.display--small::-webkit-slider-thumb { height: 50vh; } - @media only screen and (max-width: 1023px) { + @media only screen and (max-width: 1121px) { .display--large { display: flex !important; } diff --git a/src/renderer/themes/WIP.md b/src/renderer/themes/WIP.md new file mode 100644 index 00000000..9bac366d --- /dev/null +++ b/src/renderer/themes/WIP.md @@ -0,0 +1,14 @@ +# Themes (WIP) + +## Making a theme +* If one does not already exist, create a new theme directory in the user data folder. + * **Windows:** `%appdata%/Cider/themes` + * **Mac:** `~/Library/Application Support/Cider/themes` + * **Linux:** `~/.config/Cider/themes` +* Create a `theme.less` file with the name of the theme. +* In Cider, select the theme in the settings. +* To enable hot reloading for the theme, open the DevTools and enter `less.watch()` in the console. + +## Resources +* The default styles.less can be found in: [src/renderer/style.less](https://github.com/ciderapp/Cider/tree/main/src/renderer/style.less) +* [Less.js documentation](https://lesscss.org/) \ No newline at end of file diff --git a/src/renderer/themes/default.less b/src/renderer/themes/default.less new file mode 100644 index 00000000..29f60626 --- /dev/null +++ b/src/renderer/themes/default.less @@ -0,0 +1 @@ +// Default theme \ No newline at end of file diff --git a/src/renderer/views/main.ejs b/src/renderer/views/main.ejs index 7517b412..4973ed00 100644 --- a/src/renderer/views/main.ejs +++ b/src/renderer/views/main.ejs @@ -16,6 +16,7 @@