From 56ff139535bcd7cbff1897f0c038174feda4de27 Mon Sep 17 00:00:00 2001 From: Romain Vigier Date: Wed, 3 Nov 2021 14:05:14 +0100 Subject: [PATCH] Add Fluent theme support --- README.md | 2 ++ src/modules/GtkVariants.js | 2 +- src/modules/ShellVariants.js | 2 +- tests/gtk_themes/Fluent.js | 27 +++++++++++++++++++++++++++ tests/shell_themes/Fluent.js | 27 +++++++++++++++++++++++++++ 5 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 tests/gtk_themes/Fluent.js create mode 100644 tests/shell_themes/Fluent.js diff --git a/README.md b/README.md index d74db89..cce670b 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,7 @@ These themes have been tested and work out of the box without any configuration. - Cabinet - ChromeOS - Flat-Remix-GTK +- Fluent - HighContrast - Kimi - Layan @@ -70,6 +71,7 @@ These themes have been tested and work out of the box without any configuration. - Canta - ChromeOS - Flat-Remix +- Fluent - Kimi - Layan - Matcha (Manjaro default) diff --git a/src/modules/GtkVariants.js b/src/modules/GtkVariants.js index b187b3f..36339ce 100644 --- a/src/modules/GtkVariants.js +++ b/src/modules/GtkVariants.js @@ -44,7 +44,7 @@ var GtkVariants = class { } else if (name.match('Cabinet')) { variants.set(Time.DAY, name.replace(/-Dark(?!er)/, '-Light')); variants.set(Time.NIGHT, variants.get(Time.DAY).replace(/(-Light|-Darker)/, '-Dark')); - } else if (name.match(/^(Canta|ChromeOS|Materia|Orchis).*-compact/)) { + } else if (name.match(/^(Canta|ChromeOS|Fluent|Materia|Orchis).*-compact/)) { variants.set(Time.DAY, name.replace('-dark', '')); variants.set(Time.NIGHT, variants.get(Time.DAY).replace(/(-light)?-compact/, '-dark-compact')); } else if (name.includes('Flat-Remix-GTK')) { diff --git a/src/modules/ShellVariants.js b/src/modules/ShellVariants.js index aea46d8..7f1a4d7 100644 --- a/src/modules/ShellVariants.js +++ b/src/modules/ShellVariants.js @@ -44,7 +44,7 @@ var ShellVariants = class { } else if (name.includes('Arc')) { variants.set(Time.DAY, name.replace('-Dark', '')); variants.set(Time.NIGHT, variants.get(Time.DAY).replace('Arc', 'Arc-Dark')); - } else if (name.match(/^(Canta|ChromeOS|Materia|Orchis).*-compact/)) { + } else if (name.match(/^(Canta|ChromeOS|Fluent|Materia|Orchis).*-compact/)) { variants.set(Time.DAY, name.replace('-dark', '')); variants.set(Time.NIGHT, variants.get(Time.DAY).replace(/(-light)?-compact/, '-dark-compact')); } else if (name.includes('Flat-Remix')) { diff --git a/tests/gtk_themes/Fluent.js b/tests/gtk_themes/Fluent.js new file mode 100644 index 0000000..b90b6f3 --- /dev/null +++ b/tests/gtk_themes/Fluent.js @@ -0,0 +1,27 @@ +// SPDX-FileCopyrightText: 2020, 2021 Romain Vigier +// SPDX-License-Identifier: GPL-3.0-or-later + +const test = require('ava'); +const { Time, Variants } = require('./_variants'); + + +['', '-green', '-grey', '-orange', '-pink', '-purple', '-red', '-teal', '-yellow'].forEach(color => { + ['', '-compact'].forEach(size => { + test(`Fluent${color}${size}`, t => { + const variants = Variants.guessFrom(`Fluent${color}${size}`); + t.is(variants.get(Time.DAY), `Fluent${color}${size}`); + t.is(variants.get(Time.NIGHT), `Fluent${color}-dark${size}`); + }); + + test(`Fluent${color}-light${size}`, t => { + const variants = Variants.guessFrom(`Fluent${color}-light${size}`); + t.is(variants.get(Time.DAY), `Fluent${color}-light${size}`); + t.is(variants.get(Time.NIGHT), `Fluent${color}-dark${size}`); + }); + test(`Fluent${color}-dark${size}`, t => { + const variants = Variants.guessFrom(`Fluent${color}-dark${size}`); + t.is(variants.get(Time.DAY), `Fluent${color}${size}`); + t.is(variants.get(Time.NIGHT), `Fluent${color}-dark${size}`); + }); + }); +}); diff --git a/tests/shell_themes/Fluent.js b/tests/shell_themes/Fluent.js new file mode 100644 index 0000000..b90b6f3 --- /dev/null +++ b/tests/shell_themes/Fluent.js @@ -0,0 +1,27 @@ +// SPDX-FileCopyrightText: 2020, 2021 Romain Vigier +// SPDX-License-Identifier: GPL-3.0-or-later + +const test = require('ava'); +const { Time, Variants } = require('./_variants'); + + +['', '-green', '-grey', '-orange', '-pink', '-purple', '-red', '-teal', '-yellow'].forEach(color => { + ['', '-compact'].forEach(size => { + test(`Fluent${color}${size}`, t => { + const variants = Variants.guessFrom(`Fluent${color}${size}`); + t.is(variants.get(Time.DAY), `Fluent${color}${size}`); + t.is(variants.get(Time.NIGHT), `Fluent${color}-dark${size}`); + }); + + test(`Fluent${color}-light${size}`, t => { + const variants = Variants.guessFrom(`Fluent${color}-light${size}`); + t.is(variants.get(Time.DAY), `Fluent${color}-light${size}`); + t.is(variants.get(Time.NIGHT), `Fluent${color}-dark${size}`); + }); + test(`Fluent${color}-dark${size}`, t => { + const variants = Variants.guessFrom(`Fluent${color}-dark${size}`); + t.is(variants.get(Time.DAY), `Fluent${color}${size}`); + t.is(variants.get(Time.NIGHT), `Fluent${color}-dark${size}`); + }); + }); +});