From 89de05dd25eab54c5ba8de6cb1a2de48b786fc55 Mon Sep 17 00:00:00 2001
From: "deepsource-autofix[bot]"
<62050782+deepsource-autofix[bot]@users.noreply.github.com>
Date: Tue, 13 Sep 2022 21:26:13 +0000
Subject: [PATCH 1/6] Remove commented out code
---
gradience/modules/css.py | 2 --
gradience/preset_row.py | 1 -
2 files changed, 3 deletions(-)
diff --git a/gradience/modules/css.py b/gradience/modules/css.py
index 6a327f48..9742de9c 100644
--- a/gradience/modules/css.py
+++ b/gradience/modules/css.py
@@ -39,5 +39,3 @@ def load_preset_from_css(path):
return variables, palette, css
-# if __name__ == "__main__":
-# load_preset_from_css("/home/user/.config/gtk-4.0/gtk.css")
diff --git a/gradience/preset_row.py b/gradience/preset_row.py
index 19721048..b0628d90 100644
--- a/gradience/preset_row.py
+++ b/gradience/preset_row.py
@@ -144,7 +144,6 @@ class GradiencePresetRow(Adw.ActionRow):
"custom_css": custom_css,
}
file.write(json.dumps(object_to_write, indent=4))
- # self.toast_overlay.add_toast(Adw.Toast(title=_("Preset renamed")))
os.remove(
os.path.join(
os.environ.get("XDG_CONFIG_HOME",
From 2db226c33d538960ee68916fa1549a4d0a849d94 Mon Sep 17 00:00:00 2001
From: "deepsource-autofix[bot]"
<62050782+deepsource-autofix[bot]@users.noreply.github.com>
Date: Tue, 13 Sep 2022 21:26:22 +0000
Subject: [PATCH 2/6] Format code with black and autopep8
---
gradience/modules/css.py | 2 --
1 file changed, 2 deletions(-)
diff --git a/gradience/modules/css.py b/gradience/modules/css.py
index 9742de9c..498e54a4 100644
--- a/gradience/modules/css.py
+++ b/gradience/modules/css.py
@@ -37,5 +37,3 @@ def load_preset_from_css(path):
elif rule.type == rule.STYLE_RULE:
css += f"\n{rule.cssText}"
return variables, palette, css
-
-
From fbf452c04a43c845afb938f66673ecf7ba9d3c50 Mon Sep 17 00:00:00 2001
From: "deepsource-autofix[bot]"
<62050782+deepsource-autofix[bot]@users.noreply.github.com>
Date: Tue, 13 Sep 2022 21:28:06 +0000
Subject: [PATCH 3/6] Remove unused imports
---
gradience/main.py | 1 -
gradience/presets_manager_window.py | 1 -
gradience/window.py | 1 -
3 files changed, 3 deletions(-)
diff --git a/gradience/main.py b/gradience/main.py
index cde326f3..e24c1194 100644
--- a/gradience/main.py
+++ b/gradience/main.py
@@ -19,7 +19,6 @@
import sys
import json
import os
-import traceback
from gi.repository import Gtk, Gdk, Gio, Adw, GLib, Xdp, XdpGtk4
from material_color_utilities_python import *
diff --git a/gradience/presets_manager_window.py b/gradience/presets_manager_window.py
index e584d2af..415cf3dc 100644
--- a/gradience/presets_manager_window.py
+++ b/gradience/presets_manager_window.py
@@ -31,7 +31,6 @@ from .modules.custom_presets import fetch_presets
from .repo_row import GradienceRepoRow
from .modules.utils import buglog
from .constants import rootdir
-from .modules.run_async import RunAsync
@Gtk.Template(resource_path=f"{rootdir}/ui/presets_manager_window.ui")
diff --git a/gradience/window.py b/gradience/window.py
index 1b45eea7..6f4c89c7 100644
--- a/gradience/window.py
+++ b/gradience/window.py
@@ -29,7 +29,6 @@ from .error import GradienceError
from .settings_schema import settings_schema
from .palette_shades import GradiencePaletteShades
from .option import GradienceOption
-from .presets_manager_window import GradiencePresetWindow
from .modules.utils import buglog
from .constants import rootdir, app_id, build_type
From 67bea243badd1ff7e89825b4f91bd34a3c31fe96 Mon Sep 17 00:00:00 2001
From: "deepsource-autofix[bot]"
<62050782+deepsource-autofix[bot]@users.noreply.github.com>
Date: Tue, 13 Sep 2022 21:28:21 +0000
Subject: [PATCH 4/6] Format code with black and autopep8
---
gradience/main.py | 12 +++++++++---
gradience/window.py | 4 +++-
2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/gradience/main.py b/gradience/main.py
index e24c1194..953e8162 100644
--- a/gradience/main.py
+++ b/gradience/main.py
@@ -43,6 +43,7 @@ from .plugins_list import GradiencePluginsList
from .presets_manager_window import GradiencePresetWindow
from pathlib import Path
+
class GradienceApplication(Adw.Application):
"""The main application singleton class."""
@@ -199,7 +200,11 @@ class GradienceApplication(Adw.Application):
buglog(self.custom_presets)
custom_menu_section = Gio.Menu()
- if self.custom_presets["user"] or self.custom_presets["curated"] or self.custom_presets["official"]:
+ if (
+ self.custom_presets["user"]
+ or self.custom_presets["curated"]
+ or self.custom_presets["official"]
+ ):
for repo, content in self.custom_presets.items():
for preset, preset_name in content.items():
@@ -207,7 +212,8 @@ class GradienceApplication(Adw.Application):
menu_item.set_label(preset_name)
if not preset.startswith("error"):
menu_item.set_action_and_target_value(
- "app.load_preset", GLib.Variant("s", "custom-" + preset)
+ "app.load_preset", GLib.Variant(
+ "s", "custom-" + preset)
)
else:
menu_item.set_action_and_target_value("")
@@ -228,7 +234,6 @@ class GradienceApplication(Adw.Application):
_("Installed Presets"), custom_menu_section
)
-
def manage_presets(self, *args):
presets = GradiencePresetWindow(self)
presets.set_transient_for(self.win)
@@ -750,6 +755,7 @@ class GradienceApplication(Adw.Application):
elif response == "discard":
self.clear_dirty()
self.win.close()
+
def apply_color_scheme(self, widget, response):
if response == "apply":
if widget.get_app_types()["gtk4"]:
diff --git a/gradience/window.py b/gradience/window.py
index 6f4c89c7..b1437a9f 100644
--- a/gradience/window.py
+++ b/gradience/window.py
@@ -51,7 +51,9 @@ class GradienceMainWindow(Adw.ApplicationWindow):
def __init__(self, **kwargs):
super().__init__(**kwargs)
- self.presets_dropdown.get_popover().connect("show", self.on_presets_dropdown_activate)
+ self.presets_dropdown.get_popover().connect(
+ "show", self.on_presets_dropdown_activate
+ )
# Set devel style
if build_type == "debug":
From ce924f6f32f6427a63aaf8260e70ef7598b2fa73 Mon Sep 17 00:00:00 2001
From: "deepsource-autofix[bot]"
<62050782+deepsource-autofix[bot]@users.noreply.github.com>
Date: Tue, 13 Sep 2022 21:31:17 +0000
Subject: [PATCH 5/6] Refactor unnecessary `else` / `elif` when `if` block has
a `return` statement
---
gradience/window.py | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/gradience/window.py b/gradience/window.py
index b1437a9f..5b5278af 100644
--- a/gradience/window.py
+++ b/gradience/window.py
@@ -115,8 +115,7 @@ class GradienceMainWindow(Adw.ApplicationWindow):
buglog("Window close request")
self.get_application().show_exit_dialog()
return True
- else:
- self.close()
+ self.close()
def on_monet_file_chooser_response(self, widget, response):
if response == Gtk.ResponseType.ACCEPT:
From 768a905e3ca1c34874f503da02645681ccf510f9 Mon Sep 17 00:00:00 2001
From: 0xMRTT <0xMRTT@tuta.io>
Date: Tue, 13 Sep 2022 23:39:03 +0200
Subject: [PATCH 6/6] feat: add themes
---
data/theme/42/calendar-today-light.svg | 1 +
data/theme/42/calendar-today.svg | 1 +
data/theme/42/checkbox-focused.svg | 1 +
data/theme/42/checkbox-off-focused-light.svg | 220 ++
data/theme/42/checkbox-off-focused.svg | 1 +
data/theme/42/checkbox-off-light.svg | 211 ++
data/theme/42/checkbox-off.svg | 1 +
data/theme/42/checkbox.svg | 1 +
data/theme/42/dash-placeholder.svg | 84 +
data/theme/42/gnome-shell-high-contrast.scss | 38 +
data/theme/42/gnome-shell-sass/COPYING | 339 ++
data/theme/42/gnome-shell-sass/_colors.scss | 69 +
data/theme/42/gnome-shell-sass/_colors.txt | 69 +
data/theme/42/gnome-shell-sass/_common.scss | 208 ++
data/theme/42/gnome-shell-sass/_drawing.scss | 312 ++
.../_high-contrast-colors.scss | 65 +
data/theme/42/gnome-shell-sass/_palette.scss | 46 +
data/theme/42/gnome-shell-sass/_widgets.scss | 51 +
.../42/gnome-shell-sass/gnome-shell-sass.doap | 37 +
.../42/gnome-shell-sass/widgets/_a11y.scss | 24 +
.../gnome-shell-sass/widgets/_app-grid.scss | 155 +
.../42/gnome-shell-sass/widgets/_base.scss | 18 +
.../42/gnome-shell-sass/widgets/_buttons.scss | 6 +
.../gnome-shell-sass/widgets/_calendar.scss | 257 ++
.../gnome-shell-sass/widgets/_check-box.scss | 18 +
.../widgets/_corner-ripple.scss | 15 +
.../42/gnome-shell-sass/widgets/_dash.scss | 75 +
.../42/gnome-shell-sass/widgets/_dialogs.scss | 172 +
.../42/gnome-shell-sass/widgets/_entries.scss | 31 +
.../42/gnome-shell-sass/widgets/_hotplug.scss | 10 +
.../gnome-shell-sass/widgets/_ibus-popup.scss | 36 +
.../gnome-shell-sass/widgets/_keyboard.scss | 153 +
.../widgets/_login-dialog.scss | 201 ++
.../widgets/_looking-glass.scss | 142 +
.../widgets/_message-list.scss | 176 +
.../42/gnome-shell-sass/widgets/_misc.scss | 65 +
.../widgets/_network-dialog.scss | 52 +
.../widgets/_notifications.scss | 61 +
.../42/gnome-shell-sass/widgets/_osd.scss | 64 +
.../gnome-shell-sass/widgets/_overview.scss | 13 +
.../42/gnome-shell-sass/widgets/_panel.scss | 208 ++
.../gnome-shell-sass/widgets/_popovers.scss | 204 ++
.../widgets/_screen-shield.scss | 78 +
.../gnome-shell-sass/widgets/_screenshot.scss | 203 ++
.../gnome-shell-sass/widgets/_scrollbars.scss | 29 +
.../widgets/_search-entry.scss | 26 +
.../widgets/_search-results.scss | 96 +
.../42/gnome-shell-sass/widgets/_slider.scss | 22 +
.../widgets/_switcher-popup.scss | 72 +
.../gnome-shell-sass/widgets/_switches.scss | 16 +
.../widgets/_window-picker.scss | 52 +
.../widgets/_workspace-switcher.scss | 25 +
.../widgets/_workspace-thumbnails.scss | 28 +
data/theme/42/gnome-shell-start.svg | 343 ++
data/theme/42/gnome-shell.scss | 6 +
data/theme/42/meson.build | 62 +
data/theme/42/pad-osd.css | 30 +
data/theme/42/process-working.svg | 3084 +++++++++++++++++
data/theme/42/running-indicator.svg | 130 +
data/theme/42/toggle-off-hc.svg | 1 +
data/theme/42/toggle-off-light.svg | 1 +
data/theme/42/toggle-off.svg | 1 +
data/theme/42/toggle-on-hc.svg | 1 +
data/theme/42/toggle-on-light.svg | 1 +
data/theme/42/toggle-on.svg | 1 +
data/theme/42/workspace-placeholder.svg | 119 +
data/theme/43/calendar-today-light.svg | 1 +
data/theme/43/calendar-today.svg | 1 +
data/theme/43/checkbox-focused.svg | 1 +
data/theme/43/checkbox-off-focused-light.svg | 220 ++
data/theme/43/checkbox-off-focused.svg | 1 +
data/theme/43/checkbox-off-light.svg | 211 ++
data/theme/43/checkbox-off.svg | 1 +
data/theme/43/checkbox.svg | 1 +
data/theme/43/dash-placeholder.svg | 84 +
data/theme/43/gnome-shell-high-contrast.scss | 38 +
data/theme/43/gnome-shell-sass/COPYING | 339 ++
data/theme/43/gnome-shell-sass/_colors.scss | 74 +
data/theme/43/gnome-shell-sass/_colors.txt | 74 +
data/theme/43/gnome-shell-sass/_common.scss | 231 ++
data/theme/43/gnome-shell-sass/_drawing.scss | 333 ++
.../_high-contrast-colors.scss | 71 +
data/theme/43/gnome-shell-sass/_palette.scss | 46 +
data/theme/43/gnome-shell-sass/_widgets.scss | 51 +
.../43/gnome-shell-sass/gnome-shell-sass.doap | 37 +
.../43/gnome-shell-sass/widgets/_a11y.scss | 24 +
.../gnome-shell-sass/widgets/_app-grid.scss | 161 +
.../43/gnome-shell-sass/widgets/_base.scss | 18 +
.../43/gnome-shell-sass/widgets/_buttons.scss | 10 +
.../gnome-shell-sass/widgets/_calendar.scss | 257 ++
.../gnome-shell-sass/widgets/_check-box.scss | 18 +
.../widgets/_corner-ripple.scss | 15 +
.../43/gnome-shell-sass/widgets/_dash.scss | 75 +
.../43/gnome-shell-sass/widgets/_dialogs.scss | 172 +
.../43/gnome-shell-sass/widgets/_entries.scss | 31 +
.../43/gnome-shell-sass/widgets/_hotplug.scss | 10 +
.../gnome-shell-sass/widgets/_ibus-popup.scss | 39 +
.../gnome-shell-sass/widgets/_keyboard.scss | 159 +
.../widgets/_login-dialog.scss | 201 ++
.../widgets/_looking-glass.scss | 144 +
.../widgets/_message-list.scss | 180 +
.../43/gnome-shell-sass/widgets/_misc.scss | 65 +
.../widgets/_notifications.scss | 61 +
.../43/gnome-shell-sass/widgets/_osd.scss | 64 +
.../gnome-shell-sass/widgets/_overview.scss | 13 +
.../43/gnome-shell-sass/widgets/_panel.scss | 233 ++
.../gnome-shell-sass/widgets/_popovers.scss | 182 +
.../widgets/_quick-settings.scss | 118 +
.../widgets/_screen-shield.scss | 78 +
.../gnome-shell-sass/widgets/_screenshot.scss | 204 ++
.../gnome-shell-sass/widgets/_scrollbars.scss | 29 +
.../widgets/_search-entry.scss | 26 +
.../widgets/_search-results.scss | 96 +
.../43/gnome-shell-sass/widgets/_slider.scss | 22 +
.../widgets/_switcher-popup.scss | 72 +
.../gnome-shell-sass/widgets/_switches.scss | 16 +
.../widgets/_window-picker.scss | 53 +
.../widgets/_workspace-switcher.scss | 25 +
.../widgets/_workspace-thumbnails.scss | 28 +
data/theme/43/gnome-shell-start.svg | 343 ++
data/theme/43/gnome-shell.scss | 6 +
data/theme/43/meson.build | 62 +
data/theme/43/pad-osd.css | 29 +
data/theme/43/process-working.svg | 3084 +++++++++++++++++
data/theme/43/running-indicator.svg | 130 +
data/theme/43/toggle-off-hc.svg | 1 +
data/theme/43/toggle-off-light.svg | 1 +
data/theme/43/toggle-off.svg | 1 +
data/theme/43/toggle-on-hc.svg | 1 +
data/theme/43/toggle-on-light.svg | 1 +
data/theme/43/toggle-on.svg | 1 +
data/theme/43/workspace-placeholder.svg | 119 +
data/theme/README.md | 682 ++++
133 files changed, 17513 insertions(+)
create mode 100644 data/theme/42/calendar-today-light.svg
create mode 100644 data/theme/42/calendar-today.svg
create mode 100644 data/theme/42/checkbox-focused.svg
create mode 100644 data/theme/42/checkbox-off-focused-light.svg
create mode 100644 data/theme/42/checkbox-off-focused.svg
create mode 100644 data/theme/42/checkbox-off-light.svg
create mode 100644 data/theme/42/checkbox-off.svg
create mode 100644 data/theme/42/checkbox.svg
create mode 100644 data/theme/42/dash-placeholder.svg
create mode 100644 data/theme/42/gnome-shell-high-contrast.scss
create mode 100644 data/theme/42/gnome-shell-sass/COPYING
create mode 100644 data/theme/42/gnome-shell-sass/_colors.scss
create mode 100644 data/theme/42/gnome-shell-sass/_colors.txt
create mode 100644 data/theme/42/gnome-shell-sass/_common.scss
create mode 100644 data/theme/42/gnome-shell-sass/_drawing.scss
create mode 100644 data/theme/42/gnome-shell-sass/_high-contrast-colors.scss
create mode 100644 data/theme/42/gnome-shell-sass/_palette.scss
create mode 100644 data/theme/42/gnome-shell-sass/_widgets.scss
create mode 100644 data/theme/42/gnome-shell-sass/gnome-shell-sass.doap
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_a11y.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_app-grid.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_base.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_buttons.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_calendar.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_check-box.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_corner-ripple.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_dash.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_dialogs.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_entries.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_hotplug.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_ibus-popup.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_keyboard.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_login-dialog.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_looking-glass.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_message-list.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_misc.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_network-dialog.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_notifications.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_osd.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_overview.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_panel.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_popovers.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_screen-shield.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_screenshot.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_scrollbars.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_search-entry.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_search-results.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_slider.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_switcher-popup.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_switches.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_window-picker.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_workspace-switcher.scss
create mode 100644 data/theme/42/gnome-shell-sass/widgets/_workspace-thumbnails.scss
create mode 100644 data/theme/42/gnome-shell-start.svg
create mode 100644 data/theme/42/gnome-shell.scss
create mode 100644 data/theme/42/meson.build
create mode 100644 data/theme/42/pad-osd.css
create mode 100644 data/theme/42/process-working.svg
create mode 100644 data/theme/42/running-indicator.svg
create mode 100644 data/theme/42/toggle-off-hc.svg
create mode 100644 data/theme/42/toggle-off-light.svg
create mode 100644 data/theme/42/toggle-off.svg
create mode 100644 data/theme/42/toggle-on-hc.svg
create mode 100644 data/theme/42/toggle-on-light.svg
create mode 100644 data/theme/42/toggle-on.svg
create mode 100644 data/theme/42/workspace-placeholder.svg
create mode 100644 data/theme/43/calendar-today-light.svg
create mode 100644 data/theme/43/calendar-today.svg
create mode 100644 data/theme/43/checkbox-focused.svg
create mode 100644 data/theme/43/checkbox-off-focused-light.svg
create mode 100644 data/theme/43/checkbox-off-focused.svg
create mode 100644 data/theme/43/checkbox-off-light.svg
create mode 100644 data/theme/43/checkbox-off.svg
create mode 100644 data/theme/43/checkbox.svg
create mode 100644 data/theme/43/dash-placeholder.svg
create mode 100644 data/theme/43/gnome-shell-high-contrast.scss
create mode 100644 data/theme/43/gnome-shell-sass/COPYING
create mode 100644 data/theme/43/gnome-shell-sass/_colors.scss
create mode 100644 data/theme/43/gnome-shell-sass/_colors.txt
create mode 100644 data/theme/43/gnome-shell-sass/_common.scss
create mode 100644 data/theme/43/gnome-shell-sass/_drawing.scss
create mode 100644 data/theme/43/gnome-shell-sass/_high-contrast-colors.scss
create mode 100644 data/theme/43/gnome-shell-sass/_palette.scss
create mode 100644 data/theme/43/gnome-shell-sass/_widgets.scss
create mode 100644 data/theme/43/gnome-shell-sass/gnome-shell-sass.doap
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_a11y.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_app-grid.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_base.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_buttons.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_calendar.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_check-box.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_corner-ripple.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_dash.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_dialogs.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_entries.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_hotplug.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_ibus-popup.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_keyboard.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_login-dialog.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_looking-glass.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_message-list.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_misc.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_notifications.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_osd.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_overview.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_panel.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_popovers.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_quick-settings.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_screen-shield.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_screenshot.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_scrollbars.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_search-entry.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_search-results.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_slider.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_switcher-popup.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_switches.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_window-picker.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_workspace-switcher.scss
create mode 100644 data/theme/43/gnome-shell-sass/widgets/_workspace-thumbnails.scss
create mode 100644 data/theme/43/gnome-shell-start.svg
create mode 100644 data/theme/43/gnome-shell.scss
create mode 100644 data/theme/43/meson.build
create mode 100644 data/theme/43/pad-osd.css
create mode 100644 data/theme/43/process-working.svg
create mode 100644 data/theme/43/running-indicator.svg
create mode 100644 data/theme/43/toggle-off-hc.svg
create mode 100644 data/theme/43/toggle-off-light.svg
create mode 100644 data/theme/43/toggle-off.svg
create mode 100644 data/theme/43/toggle-on-hc.svg
create mode 100644 data/theme/43/toggle-on-light.svg
create mode 100644 data/theme/43/toggle-on.svg
create mode 100644 data/theme/43/workspace-placeholder.svg
create mode 100644 data/theme/README.md
diff --git a/data/theme/42/calendar-today-light.svg b/data/theme/42/calendar-today-light.svg
new file mode 100644
index 00000000..b63f6e03
--- /dev/null
+++ b/data/theme/42/calendar-today-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/42/calendar-today.svg b/data/theme/42/calendar-today.svg
new file mode 100644
index 00000000..daf86ec0
--- /dev/null
+++ b/data/theme/42/calendar-today.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/42/checkbox-focused.svg b/data/theme/42/checkbox-focused.svg
new file mode 100644
index 00000000..01eb733d
--- /dev/null
+++ b/data/theme/42/checkbox-focused.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/42/checkbox-off-focused-light.svg b/data/theme/42/checkbox-off-focused-light.svg
new file mode 100644
index 00000000..47673776
--- /dev/null
+++ b/data/theme/42/checkbox-off-focused-light.svg
@@ -0,0 +1,220 @@
+
+
+
+
diff --git a/data/theme/42/checkbox-off-focused.svg b/data/theme/42/checkbox-off-focused.svg
new file mode 100644
index 00000000..d5a042e9
--- /dev/null
+++ b/data/theme/42/checkbox-off-focused.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/42/checkbox-off-light.svg b/data/theme/42/checkbox-off-light.svg
new file mode 100644
index 00000000..5d37c85d
--- /dev/null
+++ b/data/theme/42/checkbox-off-light.svg
@@ -0,0 +1,211 @@
+
+
+
+
diff --git a/data/theme/42/checkbox-off.svg b/data/theme/42/checkbox-off.svg
new file mode 100644
index 00000000..50eece1b
--- /dev/null
+++ b/data/theme/42/checkbox-off.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/42/checkbox.svg b/data/theme/42/checkbox.svg
new file mode 100644
index 00000000..da385b62
--- /dev/null
+++ b/data/theme/42/checkbox.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/42/dash-placeholder.svg b/data/theme/42/dash-placeholder.svg
new file mode 100644
index 00000000..cbae148a
--- /dev/null
+++ b/data/theme/42/dash-placeholder.svg
@@ -0,0 +1,84 @@
+
+
+
+
diff --git a/data/theme/42/gnome-shell-high-contrast.scss b/data/theme/42/gnome-shell-high-contrast.scss
new file mode 100644
index 00000000..55745f1a
--- /dev/null
+++ b/data/theme/42/gnome-shell-high-contrast.scss
@@ -0,0 +1,38 @@
+$variant: 'dark';
+
+@import "gnome-shell-sass/_high-contrast-colors"; //use gtk colors
+@import "gnome-shell-sass/_drawing";
+@import "gnome-shell-sass/_common";
+@import "gnome-shell-sass/_widgets";
+
+//force symbolic icons
+stage {
+ -st-icon-style: symbolic;
+}
+
+.toggle-switch { width: 48px; }
+.toggle-switch {
+ background-image: url("resource:///org/gnome/shell/theme/toggle-off-hc.svg");
+ &:checked { background-image: url("resource:///org/gnome/shell/theme/toggle-on-hc.svg"); }
+}
+
+//force opaque panel
+#panel {
+ &.login-screen,
+ &.unlock-screen,
+ &:overview {
+ background-color: #000;
+ }
+
+ .panel-button {
+ color: #fff !important;
+ }
+}
+
+//thumbnail app icons no dropshadow and forced color
+.window-picker .icon-dropshadow {
+ icon-shadow: none;
+ background-color: $osd_bg_color;
+ padding: $base_padding * 2;
+ border-radius: $modal_radius;
+}
diff --git a/data/theme/42/gnome-shell-sass/COPYING b/data/theme/42/gnome-shell-sass/COPYING
new file mode 100644
index 00000000..e55e5b8a
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/COPYING
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ , 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/data/theme/42/gnome-shell-sass/_colors.scss b/data/theme/42/gnome-shell-sass/_colors.scss
new file mode 100644
index 00000000..c22bfea8
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/_colors.scss
@@ -0,0 +1,69 @@
+// When color definition differs for dark and light variant,
+// it gets @if-ed depending on $variant
+
+@import '_palette.scss';
+
+$_dark_base_color: darken(desaturate(#241f31, 100%), 2%);
+
+$base_color: if($variant == 'light', #fff, $_dark_base_color);
+$bg_color: if($variant == 'light', #f6f5f4, lighten($base_color, 5%));
+$fg_color: if($variant == 'light', transparentize(black, .2), white);
+
+$selected_fg_color: #fff;
+$selected_bg_color: #3584e4;
+$selected_borders_color: if($variant== 'light', darken($selected_bg_color, 15%), darken($selected_bg_color, 30%));
+
+$borders_color: if($variant == 'light', transparentize($fg_color, .5), transparentize($fg_color, .9));
+$borders_edge: if($variant == 'light', rgba(255,255,255,0.8), lighten($bg_color, 5%));
+
+$link_color: if($variant == 'light', darken($selected_bg_color, 10%), lighten($selected_bg_color, 20%));
+$link_visited_color: if($variant == 'light', darken($selected_bg_color, 20%), lighten($selected_bg_color, 10%));
+
+$warning_color: if($variant == 'light', $yellow_5, #cd9309);
+$error_color: if($variant == 'light', $red_3, $red_4);
+$success_color: if($variant == 'light', $green_4, $green_5);
+$destructive_color: $error_color;
+
+$osd_fg_color: white;
+$osd_bg_color: $_dark_base_color; //hardcoded for both light & dark
+$osd_insensitive_bg_color: transparentize(mix($osd_fg_color, opacify($osd_bg_color, 1), 10%), 0.5);
+$osd_insensitive_fg_color: if($variant == 'light', mix($osd_fg_color, $osd_bg_color, 80%), mix($osd_fg_color, $osd_bg_color, 70%));
+$osd_borders_color: transparentize(black, 0.3);
+$osd_outer_borders_color: transparentize($osd_fg_color, 0.98);
+
+$shadow_color: if($variant == 'light', rgba(0,0,0,0.1), rgba(0,0,0,0.2));
+
+// cards
+$card_bg_color: if($variant == 'light', darken($bg_color, 5%), lighten($bg_color, 2%));
+
+// notifications
+$bubble_buttons_color: if($variant == 'light', darken($bg_color, 12%), lighten($bg_color, 10%));
+
+// overview background color
+$system_bg_color: $base_color;
+
+//insensitive state derived colors
+$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
+$insensitive_bg_color: mix($bg_color, $base_color, 60%);
+$insensitive_borders_color: mix($borders_color, $base_color, 60%);
+
+//colors for the backdrop state, derived from the main colors.
+$backdrop_base_color: if($variant =='light', darken($base_color,1%), lighten($base_color,1%));
+$backdrop_bg_color: $bg_color;
+$backdrop_fg_color: mix($fg_color, $backdrop_bg_color, 80%);
+$backdrop_insensitive_color: if($variant =='light', darken($backdrop_bg_color,15%), lighten($backdrop_bg_color,15%));
+$backdrop_borders_color: mix($borders_color, $bg_color, 90%);
+$backdrop_dark_fill: mix($backdrop_borders_color,$backdrop_bg_color, 35%);
+
+
+// derived checked colors
+$checked_bg_color: if($variant=='light', darken($bg_color, 7%), lighten($bg_color, 7%));
+$checked_fg_color: if($variant=='light', darken($fg_color, 7%), lighten($fg_color, 7%));
+
+// derived hover colors
+$hover_bg_color: if($variant=='light', darken($bg_color, 3%), lighten($bg_color, 10%));
+$hover_fg_color: if($variant=='light', darken($fg_color, 5%), lighten($fg_color, 10%));
+
+// derived active colors
+$active_bg_color: if($variant=='light', darken($bg_color, 5%), lighten($bg_color, 12%));
+$active_fg_color: if($variant=='light', darken($fg_color, 5%), lighten($fg_color, 12%));
diff --git a/data/theme/42/gnome-shell-sass/_colors.txt b/data/theme/42/gnome-shell-sass/_colors.txt
new file mode 100644
index 00000000..e654f008
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/_colors.txt
@@ -0,0 +1,69 @@
+// When color definition differs for dark and light variant,
+// it gets @if-ed depending on $variant
+
+@import '_palette.scss';
+
+$_dark_base_color: darken(desaturate({{window_bg_color}}, 2%), 2%);
+
+$base_color: if($variant == 'light', #fff, $_dark_base_color);
+$bg_color: if($variant == 'light', #f6f5f4, lighten($base_color, 5%));
+$fg_color: if($variant == 'light', transparentize(black, .2), white);
+
+$selected_fg_color: #fff;
+$selected_bg_color: {{accent_bg_color}};
+$selected_borders_color: if($variant== 'light', darken($selected_bg_color, 15%), darken($selected_bg_color, 30%));
+
+$borders_color: if($variant == 'light', transparentize($fg_color, .5), transparentize($fg_color, .9));
+$borders_edge: if($variant == 'light', rgba(255,255,255,0.8), lighten($bg_color, 5%));
+
+$link_color: if($variant == 'light', darken($selected_bg_color, 10%), lighten($selected_bg_color, 20%));
+$link_visited_color: if($variant == 'light', darken($selected_bg_color, 20%), lighten($selected_bg_color, 10%));
+
+$warning_color: if($variant == 'light', $yellow_5, #cd9309);
+$error_color: if($variant == 'light', $red_3, $red_4);
+$success_color: if($variant == 'light', $green_4, $green_5);
+$destructive_color: $error_color;
+
+$osd_fg_color: white;
+$osd_bg_color: $_dark_base_color; //hardcoded for both light & dark
+$osd_insensitive_bg_color: transparentize(mix($osd_fg_color, opacify($osd_bg_color, 1), 10%), 0.5);
+$osd_insensitive_fg_color: if($variant == 'light', mix($osd_fg_color, $osd_bg_color, 80%), mix($osd_fg_color, $osd_bg_color, 70%));
+$osd_borders_color: transparentize(black, 0.3);
+$osd_outer_borders_color: transparentize($osd_fg_color, 0.98);
+
+$shadow_color: if($variant == 'light', rgba(0,0,0,0.1), rgba(0,0,0,0.2));
+
+// cards
+$card_bg_color: if($variant == 'light', darken($bg_color, 5%), lighten($bg_color, 2%));
+
+// notifications
+$bubble_buttons_color: if($variant == 'light', darken($bg_color, 12%), lighten($bg_color, 10%));
+
+// overview background color
+$system_bg_color: $base_color;
+
+//insensitive state derived colors
+$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
+$insensitive_bg_color: mix($bg_color, $base_color, 60%);
+$insensitive_borders_color: mix($borders_color, $base_color, 60%);
+
+//colors for the backdrop state, derived from the main colors.
+$backdrop_base_color: if($variant =='light', darken($base_color,1%), lighten($base_color,1%));
+$backdrop_bg_color: $bg_color;
+$backdrop_fg_color: mix($fg_color, $backdrop_bg_color, 80%);
+$backdrop_insensitive_color: if($variant =='light', darken($backdrop_bg_color,15%), lighten($backdrop_bg_color,15%));
+$backdrop_borders_color: mix($borders_color, $bg_color, 90%);
+$backdrop_dark_fill: mix($backdrop_borders_color,$backdrop_bg_color, 35%);
+
+
+// derived checked colors
+$checked_bg_color: if($variant=='light', darken($bg_color, 7%), lighten($bg_color, 7%));
+$checked_fg_color: if($variant=='light', darken($fg_color, 7%), lighten($fg_color, 7%));
+
+// derived hover colors
+$hover_bg_color: if($variant=='light', darken($bg_color, 3%), lighten($bg_color, 10%));
+$hover_fg_color: if($variant=='light', darken($fg_color, 5%), lighten($fg_color, 10%));
+
+// derived active colors
+$active_bg_color: if($variant=='light', darken($bg_color, 5%), lighten($bg_color, 12%));
+$active_fg_color: if($variant=='light', darken($fg_color, 5%), lighten($fg_color, 12%));
\ No newline at end of file
diff --git a/data/theme/42/gnome-shell-sass/_common.scss b/data/theme/42/gnome-shell-sass/_common.scss
new file mode 100644
index 00000000..0b89700b
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/_common.scss
@@ -0,0 +1,208 @@
+//This is the RIGHT PLACE to edit the stylesheet
+
+//let's start by telling people not to edit the generated CSS:
+$cakeisalie: "This stylesheet is generated, DO NOT EDIT";
+/* #{$cakeisalie} */
+
+/* Copyright 2009, 2015 Red Hat, Inc.
+ *
+ * Portions adapted from Mx's data/style/default.css
+ * Copyright 2009 Intel Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU Lesser General Public License,
+ * version 2.1, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+/* Global Values */
+
+// padding, margin and spacing
+$base_padding: 6px;
+$base_margin: 4px;
+
+// border radii
+$base_border_radius: 8px;
+
+// radii of things that display over other things, e.g. popovers
+$modal_radius: $base_border_radius*2; // 24px
+
+// fonts
+$base_font_size: 11;
+$text_shadow_color: if($variant == 'light', rgba(255,255,255,0.3), rgba(0,0,0,0.2));
+
+// icons
+$base_icon_size: 1.09em;
+$large_icon_size: $base_icon_size*2; // 32px
+// $base_icon_size: 16px;
+
+// Stage
+stage {
+ @include fontsize($base_font_size);
+ color: $fg_color;
+}
+
+/* Common Stylings */
+
+// osd panels
+%osd_panel {
+ color: $osd_fg_color;
+ background-color: $osd_bg_color;
+ border: 1px solid $osd_outer_borders_color;
+ border-radius: 999px;
+ padding: $base_padding*2;
+}
+
+// Overview panels
+// for the dash and workspace switcher
+%overview_panel {
+ color: $osd_fg_color;
+ background-color: transparentize($osd_fg_color, 0.9);
+}
+
+// icon tiles
+%tile {
+ border-radius: $base_border_radius * 2; // 16px
+ padding: $base_padding;
+ spacing: $base_padding;
+ border: 2px solid transparent;
+ transition-duration: 200ms;
+ text-align: center;
+}
+
+// dialogs
+%bubble_panel {
+ color: $fg_color;
+ background-color: $bg_color;
+ border-radius: $base_border_radius*1.25 + 1px;
+ border: 1px solid $borders_edge;
+}
+
+// normal button styling
+%button {
+ border-radius: $base_border_radius - 2px; // 6px
+ border-style: solid;
+ border-width: 1px;
+ font-weight: bold;
+ padding: $base_padding*.5 $base_padding*4;
+
+ @include button(normal);
+ &:focus { @include button(focus);}
+ &:hover { @include button(hover);}
+ &:insensitive { @include button(insensitive);}
+ &:active { @include button(active);}
+ &:checked { @include button(checked);}
+}
+
+// buttons in dialogs/notifications
+// lighter in color and have a greater radius
+
+$bubble_button_radius:$base_border_radius*1.25;
+
+%bubble_button {
+ padding: $base_padding * 2;
+ font-weight: bold !important;
+
+ &:ltr {margin-right: 1px;}
+ &:rtl {margin-left: 1px;}
+
+ @include button(normal, $c:$bubble_buttons_color);
+ &:insensitive { @include button(insensitive, $c:$bubble_buttons_color);}
+ &:focus { @include button(focus, $c:$bubble_buttons_color);}
+ &:hover { @include button(hover, $c:$bubble_buttons_color);}
+ &:active { @include button(active, $c:$bubble_buttons_color);}
+ &:checked { @include button(checked, $c:$bubble_buttons_color);}
+
+ &:first-child:ltr {
+ border-radius: 0 0 0 $bubble_button_radius;
+ }
+
+ &:last-child:ltr {
+ border-radius: 0 0 $bubble_button_radius 0;
+ margin-right: 0 !important;
+ }
+
+ &:first-child:rtl {
+ border-radius: 0 0 $bubble_button_radius 0;
+ }
+
+ &:last-child:rtl {
+ border-radius: 0 0 0 $bubble_button_radius;
+ margin-left: 0 !important;
+ }
+
+ &:first-child:last-child {
+ border-radius: 0 0 $bubble_button_radius $bubble_button_radius !important;
+ margin-left: 0 !important;
+ margin-right: 0 !important;
+ }
+}
+
+// buttons on OSD elements
+// that are undecorated by default and use OSD colors
+%osd_button {
+ @include button(undecorated);
+ &:insensitive { @include button(undecorated, $tc:$osd_fg_color, $c:$osd_bg_color);}
+ &:focus { @include button(focus, $tc:$osd_fg_color, $c:$osd_bg_color);}
+ &:hover { @include button(hover, $tc:$osd_fg_color, $c:$osd_bg_color);}
+ &:active { @include button(active, $tc:$osd_fg_color, $c:$osd_bg_color);}
+ &:outlined,&:checked { @include button(checked, $tc:$osd_fg_color, $c:$osd_bg_color);}
+}
+
+/* General Typography */
+
+%large_title {
+ font-weight: 300;
+ @include fontsize(24);
+}
+
+%title_1 {
+ font-weight: 800;
+ @include fontsize(20);
+}
+
+%title_2 {
+ font-weight: 800;
+ @include fontsize(15);
+}
+
+%title_3 {
+ font-weight: 700;
+ @include fontsize(15);
+}
+
+%title_4 {
+ font-weight: 700;
+ @include fontsize(13);
+}
+
+%heading {
+ font-weight: 700;
+ @include fontsize(11);
+}
+
+%caption_heading {
+ font-weight: 700;
+ @include fontsize(9);
+}
+
+%caption {
+ font-weight: 400;
+ @include fontsize(9);
+}
+
+%smaller {
+ font-weight: 400;
+ @include fontsize(8);
+}
+
+%monospace {font-family: monospace;}
+%numeric { font-feature-settings: "tnum";}
diff --git a/data/theme/42/gnome-shell-sass/_drawing.scss b/data/theme/42/gnome-shell-sass/_drawing.scss
new file mode 100644
index 00000000..217aac99
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/_drawing.scss
@@ -0,0 +1,312 @@
+// Drawing mixins
+
+// generic drawing of more complex things
+
+@function draw_widget_edge($c:$borders_edge) {
+// outer highlight "used" on most widgets
+ @return 0 1px $c;
+}
+
+// provide font size in rem, with px fallback
+@mixin fontsize($size: 24, $base: 16) {
+ font-size: round($size) + pt;
+ //font-size: ($size / $base) * 1rem;
+}
+
+@mixin draw_shadows($shadow1, $shadow2:none, $shadow3:none, $shadow4:none) {
+//
+// Helper function to stack up to 4 box-shadows;
+//
+ @if $shadow4!=none { box-shadow: $shadow1, $shadow2, $shadow3, $shadow4; }
+ @else if $shadow3!=none { box-shadow: $shadow1, $shadow2, $shadow3; }
+ @else if $shadow2!=none { box-shadow: $shadow1, $shadow2; }
+ @else { box-shadow: $shadow1; }
+}
+
+// entries
+
+@mixin entry($t, $fc:$selected_bg_color) {
+//
+// Entries drawing function
+//
+// $t: entry type
+// $fc: focus color
+//
+// possible $t values:
+// normal, focus, insensitive
+//
+
+ @if $t==normal {
+ background-color: lighten($bg_color, 5%);
+ color: transparentize($fg_color,0.3);
+ border: 2px solid lighten($bg_color, 5%);
+ }
+
+ @if $t==focus {
+ background-color: mix(lighten($bg_color, 5%), $selected_bg_color, 95%);
+ border-color: $fc;
+ color: $fg_color;
+ &:hover {}
+ }
+
+ @if $t==hover {
+ background-color:lighten($hover_bg_color, 5%);
+ border-color:lighten($hover_bg_color, 5%);
+ color: transparentize($fg_color,0.3);
+ }
+
+ @if $t==insensitive {
+ background-color:lighten($insensitive_bg_color, 5%);
+ border-color: lighten($insensitive_bg_color, 5%);
+ color: $insensitive_fg_color;
+ }
+}
+
+// On-screen Keyboard
+@mixin keyboard_key($t, $c:$osd_bg_color, $tc:$osd_fg_color) {
+//
+// Keyboard key drawing function
+//
+// $t: key type,
+// $c: base key color for colored* types
+// $tc: optional text color for colored* types
+//
+// possible $t values:
+// normal, hover, active, insensitive, insensitive-active,
+// backdrop, backdrop-active, backdrop-insensitive, backdrop-insensitive-active,
+// osd, osd-hover, osd-active, osd-insensitive, osd-backdrop, undecorated
+//
+
+ // normal key
+ @if $t==normal {
+ color: $tc;
+ background-color: lighten($c, 3%);
+ }
+
+ // focused key
+ @if $t==focus {
+ color: $tc;
+ background-color: mix(lighten($c, 3%), $selected_bg_color, 90%);
+ box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.4);
+ &:hover {
+ background-color: mix(lighten($c, 8%), $selected_bg_color, 90%);
+ box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.3);
+ }
+ &:active {
+ background-color: mix(lighten($c, 10%), $selected_bg_color, 90%);
+ box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.3);
+ }
+ }
+
+ // hover key
+ @else if $t==hover {
+ color: $tc;
+ background-color: lighten($c, 7%);
+ }
+
+ // active key
+ @else if $t==active {
+ color: $tc;
+ background-color: lighten($c, 10%);
+ }
+
+ // checked key
+ @else if $t==checked {
+ color: $tc;
+ background-color: lighten($c, 15%);
+ }
+
+ // insensitive key
+ @else if $t==insensitive {
+ color: $insensitive_fg_color;
+ background-color: $insensitive_bg_color;
+ }
+
+ // reset
+ @else if $t==undecorated {
+ background-color: transparent;
+ background-image: none;
+ }
+}
+
+//
+// Button drawing function
+//
+// $t: button type,
+// $c: base button colors, derived from fg_color
+// $tc: base button colors, derived from fg_color
+//
+// possible $t values:
+// normal, hover, active, insensitive, insensitive-active,
+// backdrop, backdrop-active, backdrop-insensitive, backdrop-insensitive-active,
+// osd, osd-hover, osd-active, osd-insensitive, osd-backdrop, undecorated
+//
+// since buttons are all flat an borderless now the mixin is simpler
+
+@mixin button($t, $tc:$fg_color, $c:$bg_color) {
+
+ $button_bg_color: mix($tc, $c, 5%);
+ transition-duration: 100ms;
+
+ // normal button
+ @if $t==normal {
+ color: $tc;
+ background-color: $button_bg_color;
+ }
+
+ // focused button
+ @if $t==focus {
+ color: $tc;
+ background-color: mix($button_bg_color, $selected_bg_color, 90%);
+ box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.4);
+ &:hover {
+ background-color: mix(lighten($button_bg_color, 3%), $selected_bg_color, 90%);
+ box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.3);
+ }
+ &:active {
+ background-color: mix(lighten($button_bg_color, 6%), $selected_bg_color, 90%);
+ box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.3);
+ }
+ }
+
+ // hover button
+ @else if $t==hover {
+ color: $tc;
+ background-color: lighten($button_bg_color, 3%);
+ }
+
+ // active button
+ @else if $t==active {
+ color: $tc;
+ background-color: lighten($button_bg_color, 6%);
+ }
+
+ // checked button
+ @else if $t==checked {
+ color: $tc;
+ background-color: lighten($button_bg_color, 9%);
+ &:hover { background-color: lighten($button_bg_color, 12%);}
+ &:active { background-color: lighten($button_bg_color, 15%);}
+ }
+
+ // insensitive button
+ @else if $t==insensitive {
+ color: transparentize($tc, 0.5);
+ background-color: transparentize($tc, .95);
+ }
+
+ // default/suggested button
+ @else if $t==default {
+ background-color: $selected_bg_color;
+ color: $selected_fg_color;
+ &:focus {
+ box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.4);
+ }
+ &:hover, &:focus {
+ background-color: lighten($selected_bg_color, 5%);
+ color: lighten($selected_fg_color, 5%);
+ }
+ &:active {
+ background-color: darken($selected_bg_color, 7%);
+ color: darken($selected_fg_color, 7%);
+ }
+ &:insensitive {
+ @include button(insensitive);
+ background-color: transparentize($selected_bg_color, .5);
+ color: transparentize($selected_fg_color, .5);
+ }
+ }
+
+ // reset
+ @else if $t==undecorated {
+ background-color: transparent;
+ background-color: none;
+ &:insensitive {
+ @include button(insensitive);
+ background-color: transparent;
+ color: transparentize($selected_fg_color, .5);
+ }
+ }
+}
+
+// tile
+@mixin tile_button($color, $flat: true) {
+ @extend %tile;
+ @if $flat {
+ background-color: transparent;
+ } @else {
+ background-color: transparentize($color, .84);
+ }
+ &:hover { background-color: transparentize($color, .9);}
+ &:selected, &:focus {
+ background-color: transparentize($color, .87);
+ &:hover { background-color: transparentize($color, .84);}
+ &:active { background-color: transparentize($color, .87);}
+ }
+ &:active { background-color: transparentize($color, .84);}
+ &:outlined, &:checked {
+ background-color: transparentize($color, .81);
+ &:active { background-color: transparentize($color, .78);}
+ &:hover { background-color: transparentize($color, .75);}
+ }
+ &:drop {
+ border: 2px solid transparentize($selected_bg_color, .2); //already 2px transparent so no jumping
+ background-color: transparentize($selected_bg_color, .8);
+ }
+}
+
+// overview icon, dash, app grid
+@mixin overview_icon($color, $flat: true) {
+ transition-duration: 400ms;
+ .overview-icon { @extend %tile; }
+ @if $flat {
+ .overview-icon { background-color: transparent;}
+ } @else {
+ .overview-icon { background-color: transparentize($color, .81);}
+ }
+ &:hover .overview-icon { background-color: transparentize($color, .9);}
+
+ &:selected .overview-icon,
+ &:focus .overview-icon {
+ background-color: transparentize($color, .87);
+ &:hover .overview-icon { background-color: transparentize($color, .84);}
+ &:active .overview-icon { background-color: transparentize($color, .87);}
+ }
+ &:active .overview-icon { background-color: transparentize($color, .84);}
+ &:outlined .overview-icon,
+ &:checked .overview-icon {
+ background-color: transparentize($color, .81);
+ &:active .overview-icon { background-color: transparentize($color, .78);}
+ &:hover .overview-icon { background-color: transparentize($color, .75);}
+ }
+ &:drop .overview-icon {
+ border: 2px solid transparentize($selected_bg_color, .2); //already 2px transparent so no jumping
+ background-color: transparentize($selected_bg_color, .8);
+ }
+}
+
+// styling for elements within popovers that look like notifications
+@mixin card($flat: false) {
+ border-radius: $base_border_radius;
+ margin: $base_margin;
+ box-shadow: 0 1px 1px 0 $shadow_color;
+
+ @if $flat {
+ @include button(undecorated);
+ box-shadow: none !important;
+ } @else {
+ @include button(normal, $c:$card_bg_color);
+ }
+
+ &:focus {
+ @include button(focus, $c:$card_bg_color);
+ }
+
+ &:hover {
+ @include button(hover, $c:$card_bg_color);
+ }
+
+ &:active {
+ @include button(active, $c:$card_bg_color);
+ }
+}
diff --git a/data/theme/42/gnome-shell-sass/_high-contrast-colors.scss b/data/theme/42/gnome-shell-sass/_high-contrast-colors.scss
new file mode 100644
index 00000000..35e2d851
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/_high-contrast-colors.scss
@@ -0,0 +1,65 @@
+// When color definition differs for dark and light variant,
+// it gets @if ed depending on $variant
+
+@import '_palette.scss';
+
+$base_color: if($variant == 'light', #fff, #000);
+$bg_color: $base_color;
+$fg_color: if($variant == 'light', transparentize(black, .2), white);
+
+$selected_fg_color: #ffffff;
+$selected_bg_color: $blue_3;
+
+$selected_borders_color: darken($selected_bg_color, 20%);
+$borders_color: lighten($bg_color,17%);
+$borders_edge: $borders_color;
+$link_color: lighten($selected_bg_color,20%);
+$link_visited_color: lighten($selected_bg_color,10%);
+
+$warning_color: if($variant == 'light', $yellow_5, #cd9309);
+$error_color: if($variant == 'light', $red_3, $red_4);
+$success_color: if($variant == 'light', $green_4, $green_5);
+$destructive_color: $error_color;
+
+$osd_fg_color: white;
+$osd_bg_color: $base_color;
+$osd_insensitive_bg_color: transparentize(mix($osd_fg_color, opacify($osd_bg_color, 1), 10%), 0.5);
+$osd_insensitive_fg_color: if($variant == 'light', mix($osd_fg_color, $osd_bg_color, 80%), mix($osd_fg_color, $osd_bg_color, 70%));
+$osd_borders_color: $osd_bg_color;
+$osd_outer_borders_color: $osd_bg_color;
+
+$shadow_color: transparent;
+
+// cards
+$card_bg_color: if($variant == 'light', darken($bg_color, 12%), lighten($bg_color, 12%));
+
+// notifications
+$bubble_buttons_color: if($variant == 'light', darken($bg_color, 22%), lighten($bg_color, 31%));
+
+// overview background color
+$system_bg_color: lighten($base_color, 17%);
+
+//insensitive state derived colors
+$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
+$insensitive_bg_color: mix($bg_color, $base_color, 60%);
+$insensitive_borders_color: $borders_color;
+
+//colors for the backdrop state, derived from the main colors.
+$backdrop_base_color: lighten($base_color,1%);
+$backdrop_bg_color: $bg_color;
+$backdrop_fg_color: mix($fg_color, $backdrop_bg_color, 80%);
+$backdrop_insensitive_color: lighten($backdrop_bg_color,15%);
+$backdrop_borders_color: mix($borders_color, $bg_color, 90%);
+$backdrop_dark_fill: mix($backdrop_borders_color,$backdrop_bg_color, 35%);
+
+// derived checked colors
+$checked_bg_color: if($variant=='light', darken($bg_color, 12%), lighten($bg_color, 18%));
+$checked_fg_color: if($variant=='light', darken($fg_color, 12%), lighten($fg_color, 18%));
+
+// derived hover colors
+$hover_bg_color: if($variant=='light', darken($bg_color, 8%), lighten($bg_color, 20%));
+$hover_fg_color: if($variant=='light', darken($fg_color, 10%), lighten($fg_color, 20%));
+
+// derived active colors
+$active_bg_color: if($variant=='light', darken($bg_color, 10%), lighten($bg_color, 22%));
+$active_fg_color: if($variant=='light', darken($fg_color, 10%), lighten($fg_color, 22%));
diff --git a/data/theme/42/gnome-shell-sass/_palette.scss b/data/theme/42/gnome-shell-sass/_palette.scss
new file mode 100644
index 00000000..78847d95
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/_palette.scss
@@ -0,0 +1,46 @@
+//GNOME Color Palette
+$blue_1: #99c1f1;
+$blue_2: #62a0ea;
+$blue_3: #3584e4;
+$blue_4: #1c71d8;
+$blue_5: #1a5fb4;
+$green_1: #8ff0a4;
+$green_2: #57e389;
+$green_3: #33d17a;
+$green_4: #2ec27e;
+$green_5: #26a269;
+$yellow_1: #f9f06b;
+$yellow_2: #f8e45c;
+$yellow_3: #f6d32d;
+$yellow_4: #f5c211;
+$yellow_5: #e5a50a;
+$orange_1: #ffbe6f;
+$orange_2: #ffa348;
+$orange_3: #ff7800;
+$orange_4: #e66100;
+$orange_5: #c64600;
+$red_1: #f66151;
+$red_2: #ed333b;
+$red_3: #e01b24;
+$red_4: #c01c28;
+$red_5: #a51d2d;
+$purple_1: #dc8add;
+$purple_2: #c061cb;
+$purple_3: #9141ac;
+$purple_4: #813d9c;
+$purple_5: #613583;
+$brown_1: #cdab8f;
+$brown_2: #b5835a;
+$brown_3: #986a44;
+$brown_4: #865e3c;
+$brown_5: #63452c;
+$light_1: #ffffff;
+$light_2: #f6f5f4;
+$light_3: #deddda;
+$light_4: #c0bfbc;
+$light_5: #9a9996;
+$dark_1: #77767b;
+$dark_2: #5e5c64;
+$dark_3: #3d3846;
+$dark_4: #241f31;
+$dark_5: #000000;
\ No newline at end of file
diff --git a/data/theme/42/gnome-shell-sass/_widgets.scss b/data/theme/42/gnome-shell-sass/_widgets.scss
new file mode 100644
index 00000000..4ed082f1
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/_widgets.scss
@@ -0,0 +1,51 @@
+//
+// Shell widgets stylesheets are placed in separate .scss files
+// in 'widgets' and imported into the main stylesheet in this file.
+// To create or update a widget for the shell modify the list below.
+//
+
+/* WIDGETS */
+
+// Primary widgets
+@import 'widgets/base';
+@import 'widgets/entries';
+@import 'widgets/buttons';
+@import 'widgets/check-box';
+@import 'widgets/switches';
+@import 'widgets/slider';
+@import 'widgets/scrollbars';
+// Popovers
+@import 'widgets/popovers';
+@import 'widgets/calendar';
+@import 'widgets/message-list';
+@import 'widgets/ibus-popup';
+// Notifications
+@import 'widgets/notifications';
+@import 'widgets/hotplug';
+// Dialogs
+@import 'widgets/dialogs';
+@import 'widgets/network-dialog';
+// OSDs
+@import 'widgets/osd';
+@import 'widgets/switcher-popup';
+@import 'widgets/workspace-switcher';
+@import 'widgets/screenshot';
+// Panel
+@import 'widgets/panel';
+@import 'widgets/corner-ripple';
+// Overview
+@import 'widgets/overview';
+@import 'widgets/window-picker';
+@import 'widgets/search-entry';
+@import 'widgets/search-results';
+@import 'widgets/dash';
+@import 'widgets/app-grid';
+@import 'widgets/workspace-thumbnails';
+// A11y / misc
+@import 'widgets/a11y';
+@import 'widgets/misc';
+@import 'widgets/keyboard';
+@import 'widgets/looking-glass';
+// Lock / login screens
+@import 'widgets/login-dialog';
+@import 'widgets/screen-shield';
diff --git a/data/theme/42/gnome-shell-sass/gnome-shell-sass.doap b/data/theme/42/gnome-shell-sass/gnome-shell-sass.doap
new file mode 100644
index 00000000..f18ec1b8
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/gnome-shell-sass.doap
@@ -0,0 +1,37 @@
+
+
+ GNOME Shell Sass
+ Sass sources of GNOME Shell
+ GNOME Shell Sass is a project intended to allow the sharing of the
+ sass theme sources between gnome-shell and other projects like gnome-shell-extensions.
+
+
+ sass
+ css
+
+
+
+ Carlos Soriano
+
+ csoriano
+
+
+
+
+ Florian Müllner
+
+ fmuellner
+
+
+
+
+ Jakub Steiner
+
+ jimmac
+
+
+
diff --git a/data/theme/42/gnome-shell-sass/widgets/_a11y.scss b/data/theme/42/gnome-shell-sass/widgets/_a11y.scss
new file mode 100644
index 00000000..31b5c4b7
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_a11y.scss
@@ -0,0 +1,24 @@
+// Pointer location
+.ripple-pointer-location {
+ width: $ripple_size;
+ height: $ripple_size;
+ border-radius: $ripple_size * 0.5; // radius equals the size of the box to give us the curve
+ background-color: lighten(transparentize($selected_bg_color, 0.7), 30%);
+ box-shadow: 0 0 2px 2px lighten($selected_bg_color, 20%);
+}
+
+// Pointer accessibility notifications
+.pie-timer {
+ width: 60px;
+ height: 60px;
+ -pie-border-width: 3px;
+ -pie-border-color: $selected_bg_color;
+ -pie-background-color: lighten(transparentize($selected_bg_color, 0.7), 40%);
+}
+
+// Screen zoom/Magnifier
+.magnifier-zoom-region {
+ border: 2px solid $selected_bg_color;
+
+ &.full-screen { border-width: 0; }
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_app-grid.scss b/data/theme/42/gnome-shell-sass/widgets/_app-grid.scss
new file mode 100644
index 00000000..91cf023f
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_app-grid.scss
@@ -0,0 +1,155 @@
+/* App Grid */
+
+$app_icon_size: 96px;
+
+// app icons
+.icon-grid {
+ row-spacing: $base_padding * 2;
+ column-spacing: $base_padding * 2;
+ max-row-spacing: $base_padding * 7;
+ max-column-spacing: $base_padding * 7;
+ page-padding-top: $base_padding * 4;
+ page-padding-bottom: $base_padding * 4;
+ page-padding-left: $base_padding * 3;
+ page-padding-right: $base_padding * 3;
+}
+
+/* App Icons */
+
+// Icon tiles in the app grid
+.app-well-app {
+ @include overview_icon($osd_fg_color);
+
+ .overview-icon { padding: $base_padding*2;}
+ .overview-icon.overview-icon-with-label {
+ > StBoxLayout {
+ spacing: $base_padding;
+ }
+ }
+}
+
+// app folders
+.app-well-app.app-folder {
+ @include overview_icon($osd_fg_color, $flat: false);
+}
+
+// expanded folder
+.app-folder-dialog {
+ border-radius: $modal_radius*2;
+ background-color: $dash_background_color;
+
+ & .folder-name-container {
+ padding: 24px 36px 0;
+ spacing: 12px;
+
+ & .folder-name-label,
+ & .folder-name-entry {
+ @extend %title_1;
+ }
+
+ & .folder-name-entry { width: 300px }
+
+ /* FIXME: this is to keep the label in sync with the entry */
+ & .folder-name-label { padding: 5px 7px; color: $osd_fg_color; }
+
+ & .edit-folder-button {
+ @extend %button;
+ padding: 0;
+ width: 36px;
+ height: 36px;
+ border-radius: 99px;
+ & > StIcon { icon-size: $base_icon_size }
+ }
+ }
+
+ & .icon-grid {
+ row-spacing: $base_padding * 2;
+ column-spacing: $base_padding * 5;
+ page-padding-top: 0;
+ page-padding-bottom: 0;
+ page-padding-left: 0;
+ page-padding-right: 0;
+ }
+
+ & .page-indicators {
+ margin-bottom: 18px;
+ }
+}
+
+.app-folder-dialog-container {
+ padding: $base_padding*2;
+ width: 640px;
+ height: 640px;
+}
+
+// Running app indicator (also shown in dash)
+.app-well-app-running-dot {
+ height: 5px;
+ width: 5px;
+ border-radius:5px;
+ margin-bottom: 8px;
+ background-color: $osd_fg_color;
+}
+
+// Rename popup for app folders
+.rename-folder-popup {
+ .rename-folder-popup-item {
+ spacing: $base_padding;
+ &:ltr, &:rtl { padding: 0 $base_padding * 2; }
+ }
+}
+
+// App Grid pagination indicators
+.page-indicator {
+ padding: $base_padding $base_padding * 2 0;
+ transition-duration:400ms;
+
+ .page-indicator-icon {
+ width: 10px;
+ height: 10px;
+ border-radius: 10px; // the same as height&width
+ background-color: white;
+ }
+}
+
+.apps-scroll-view {
+ padding: 0;
+}
+
+// shutdown and other actions in the grid
+.system-action-icon {
+ background-color: rgba(0,0,0,0.8);
+ color: #fff;
+ border-radius: 99px;
+ icon-size: $app_icon_size * 0.5;
+}
+
+.page-navigation-hint {
+ width: 300px;
+
+ &.dnd {
+ background: rgba(255, 255, 255, 0.1);
+ }
+
+ &.next:ltr,
+ &.previous:rtl {
+ background-gradient-start: rgba(255, 255, 255, 0.05);
+ background-gradient-end: transparent;
+ background-gradient-direction: horizontal;
+ border-radius: $modal_radius*1.5 0px 0px $modal_radius*1.5;
+ }
+
+ &.previous:ltr,
+ &.next:rtl {
+ background-gradient-start: transparent;
+ background-gradient-end: rgba(255, 255, 255, 0.05);
+ background-gradient-direction: horizontal;
+ border-radius: 0px $modal_radius*1.5 $modal_radius*1.5 0px;
+ }
+}
+
+.page-navigation-arrow {
+ margin: 6px;
+ width: 24px;
+ height: 24px;
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_base.scss b/data/theme/42/gnome-shell-sass/widgets/_base.scss
new file mode 100644
index 00000000..69ebb301
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_base.scss
@@ -0,0 +1,18 @@
+// Links
+.shell-link {
+ color: $link_color;
+
+ &:hover {
+ color: lighten($link_color, 10%);
+ }
+}
+
+// Outline for low res icons
+.lowres-icon {
+ icon-shadow: 0 1px 2px rgba(black, 0.3);
+}
+
+// Dropshadow for large icons
+.icon-dropshadow {
+ icon-shadow: 0 1px 5px rgba(black, 0.8);
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_buttons.scss b/data/theme/42/gnome-shell-sass/widgets/_buttons.scss
new file mode 100644
index 00000000..6a72c079
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_buttons.scss
@@ -0,0 +1,6 @@
+/* Buttons */
+
+.button {
+ @extend %button; // that's it
+ min-height: 22px;
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_calendar.scss b/data/theme/42/gnome-shell-sass/widgets/_calendar.scss
new file mode 100644
index 00000000..336372cd
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_calendar.scss
@@ -0,0 +1,257 @@
+/* Date/Time Menu */
+
+// overall menu
+#calendarArea {
+ padding: $base_padding - 2px;
+}
+
+// Calendar menu side column
+.datemenu-calendar-column {
+ spacing: $base_padding;
+ &:ltr {padding-left: $base_padding;}
+ &:rtl {padding-right: $base_padding;}
+ .datemenu-displays-box {spacing: $base_padding;}
+}
+
+/* today button (the date) */
+.datemenu-today-button {
+ @include card($flat: true);
+ padding: $base_padding * 1.5;
+
+ // weekday label
+ .day-label {
+ @extend %heading;
+ }
+
+ // date label
+ .date-label {
+ @extend %title_2;
+ }
+}
+
+/* Calendar */
+.calendar {
+ @include card(flat);
+ margin-top: 0;
+
+ // month header
+ .calendar-month-header {
+
+ // prev/next month icons
+ .calendar-change-month-back StIcon,
+ .calendar-change-month-forward StIcon {
+ icon-size: $base_icon_size;
+ }
+
+ // month label
+ .calendar-month-label {
+ color: lighten($fg_color,5%);
+ @extend %heading;
+ padding: 8px 0;
+ }
+ .pager-button {
+ background-color: transparent;
+ height: 32px;
+ width: 32px;
+ margin: 2px;
+ border-radius: $base_border_radius - 2px;
+ &:hover, &:focus {background-color: $hover_bg_color;}
+ &:active {background-color: $active_bg_color;}
+ }
+ }
+
+ $calendar_day_size: 3em;
+
+ .calendar-day-base {
+ text-align: center;
+ margin: 2px;
+ padding: 0 !important;
+ height: $calendar_day_size !important;
+ width: $calendar_day_size !important;
+ border-radius: 99px;
+ transition-duration: 100ms;
+ @extend %numeric;
+ @extend %smaller;
+
+ &:hover {background-color: $hover_bg_color;}
+ &:focus {
+ background-color: mix($bg_color, $selected_bg_color, 80%);
+ color: $selected_fg_color;
+ box-shadow:inset 0 0 0 2px transparentize($selected_bg_color, 0.4);
+ }
+
+ &:active,&:selected {
+ color: $active_fg_color;
+ background-color: $active_bg_color;
+ &:focus {
+ background-color: mix($active_bg_color, $selected_bg_color, 80%);
+ }
+ }
+
+ // day of week heading
+ &.calendar-day-heading {
+ color: $insensitive_fg_color;
+ padding-top: $base_padding;
+ height: 16px !important; // force heading to be smaller height
+ font-weight: bold;
+ @extend %smaller;
+ }
+ }
+
+ .calendar-day {}
+ .calendar-work-day {}
+ .calendar-nonwork-day {color: $insensitive_fg_color;}
+ .calendar-other-month-day {
+ color: transparentize($fg_color, 0.5);
+ &.calendar-nonwork-day {
+ color: transparentize($insensitive_fg_color, 0.5);
+ }
+ }
+
+ // Today
+ .calendar-today {
+ background-color: $selected_bg_color;
+ font-weight: 800;
+ color: $selected_fg_color !important;
+
+ &:hover,&:focus {
+ background-color:lighten($selected_bg_color, 3%);
+ color: inherit;
+ }
+
+ &:active,&:selected {
+ background-color: $selected_bg_color;
+ color: inherit;
+
+ &:hover,&:focus {
+ background-color:lighten($selected_bg_color, 3%);
+ color: inherit;
+ }
+ }
+ }
+
+ .calendar-day-with-events {
+ background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/calendar-today-light.svg"),url("resource:///org/gnome/shell/theme/calendar-today.svg"));
+ background-size: contain;
+ }
+
+ .calendar-week-number {
+ @include fontsize($base_font_size - 4);
+ font-weight: bold;
+ font-feature-settings: "tnum";
+ margin: 6px;
+ padding: 0 $base_padding;
+ border-radius: 3px;
+ background-color: darken($bg_color, 2%);
+ color: $insensitive_fg_color
+ }
+}
+
+/* Events */
+.events-button {
+ @include card;
+ padding: $base_padding * 2;
+
+ .events-box {
+ spacing: $base_padding;
+ }
+
+ .events-list {
+ spacing: 2 * $base_padding;
+ }
+
+ .events-title {
+ @extend %heading;
+ color: $insensitive_fg_color;
+ margin-bottom: $base_margin;
+ }
+
+ .event-time {
+ @extend %numeric;
+ @extend %caption;
+ color: $insensitive_fg_color;
+ }
+}
+
+/* World clocks */
+.world-clocks-button {
+ @include card;
+ padding: $base_padding * 2;
+
+ .world-clocks-grid {
+ spacing-rows: $base_padding;
+ spacing-columns: $base_padding * 2;
+ }
+
+ // title
+ .world-clocks-header {
+ @extend %heading;
+ color: $insensitive_fg_color;
+ }
+
+ // city label
+ .world-clocks-city {
+ color: $fg_color;
+ }
+
+ // timezone time
+ .world-clocks-time {
+ @extend %heading;
+ @extend %numeric;
+ color: $fg_color;
+
+ &:ltr {text-align: right;}
+ &:rtl {text-align: left;}
+ }
+
+ // timezone offset label
+ .world-clocks-timezone {
+ @extend %numeric;
+ @extend %caption;
+ color: $insensitive_fg_color;
+ }
+}
+
+/* Weather */
+.weather-button {
+ @include card;
+ padding: $base_padding * 2;
+
+ .weather-box {
+ spacing: $base_padding + $base_margin;
+ }
+
+ .weather-header-box {
+ spacing: $base_padding;
+ }
+
+ .weather-header {
+ color: $insensitive_fg_color;
+ @extend %heading;
+
+ &.location {
+ font-weight: normal;
+ }
+ }
+
+ .weather-grid {
+ spacing-rows: $base_padding;
+ spacing-columns: $base_padding * 2;
+ }
+
+ .weather-forecast-time {
+ @extend %numeric;
+ @extend %caption;
+ color: darken($fg_color,30%);
+ padding-top: 0.2em;
+ padding-bottom: 0.4em;
+ }
+
+ .weather-forecast-icon {
+ icon-size: $large_icon_size;
+ }
+
+ .weather-forecast-temp {
+ @extend %heading;
+ }
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_check-box.scss b/data/theme/42/gnome-shell-sass/widgets/_check-box.scss
new file mode 100644
index 00000000..1480ade2
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_check-box.scss
@@ -0,0 +1,18 @@
+/* Check Boxes */
+
+// these are equal to the size of the SVG assets
+$check_height: 24px;
+$check_width: 24px;
+
+
+.check-box {
+ StBoxLayout { spacing: .8em; }
+ StBin {
+ width: $check_width;
+ height: $check_height;
+ background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/checkbox-off-light.svg"), url("resource:///org/gnome/shell/theme/checkbox-off.svg"));
+ }
+ &:focus StBin { background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/checkbox-off-focused-light.svg"), url("resource:///org/gnome/shell/theme/checkbox-off-focused.svg"));; }
+ &:checked StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox.svg"); }
+ &:focus:checked StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox-focused.svg"); }
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_corner-ripple.scss b/data/theme/42/gnome-shell-sass/widgets/_corner-ripple.scss
new file mode 100644
index 00000000..9137b67c
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_corner-ripple.scss
@@ -0,0 +1,15 @@
+/* Activities Ripple */
+
+$ripple_size: 50px;
+
+.ripple-box {
+ background-color: lighten(transparentize($selected_bg_color, 0.7), 40%);
+ box-shadow: 0 0 2px 2px lighten($selected_bg_color, 20%);
+ // plus + 2px for the border (box-shadow)
+ width: $ripple_size + 2px;
+ height: $ripple_size + 2px;
+ border-radius: 0 0 $ripple_size + 2px 0; // radius equals the size of the box to give us the curve
+
+ // just a simple change to the border radius position
+ &:rtl { border-radius: 0 0 0 $ripple_size + 2px; }
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_dash.scss b/data/theme/42/gnome-shell-sass/widgets/_dash.scss
new file mode 100644
index 00000000..8f5d5f93
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_dash.scss
@@ -0,0 +1,75 @@
+/* Dash */
+
+$dash_background_color: lighten($system_bg_color, 5%);
+$dash_placeholder_size: 32px;
+$dash_padding: $base_padding*2; // 12px
+$dash_border_radius: $modal_radius + $dash_padding;
+
+// container for the dash
+#dash {
+ @extend %caption;
+ margin-top: $dash_padding;
+
+ .placeholder {
+ // background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
+ background-image:none;
+ background-size: contain;
+ height: $dash_placeholder_size;
+ }
+
+ .empty-dash-drop-target {
+ width: $dash_placeholder_size;
+ height: $dash_placeholder_size;
+ }
+
+ // Running app indicator (also shown in app grid)
+ .app-well-app-running-dot {
+ margin-bottom: 14px; // hardcoded
+ }
+}
+
+// background of the dash behind app icons
+.dash-background {
+ background-color: $dash_background_color;
+ border-radius: $dash_border_radius;
+ padding: $dash_padding;
+ spacing: $base_padding;
+ margin-bottom: $dash_padding;
+}
+
+// items on the dash
+.dash-item-container {
+ > * {margin: 0 2px;}
+ &:ltr:first-child {margin-left: 0;}
+ &:rtl:first-child {margin-right: 0;}
+
+ // each app item on the dash
+ .app-well-app .overview-icon {
+ padding: $base_padding;
+ }
+
+ // show apps button
+ .show-apps { @include overview_icon($osd_fg_color);}
+
+ .show-apps, .app-well-app {
+ padding-bottom: $dash_padding;
+ }
+}
+
+// separator between favourites and running apps
+.dash-separator {
+ width: 1px;
+ margin: 0 $base_margin;
+ background-color: $borders_color;
+ margin-bottom: $dash_padding;
+}
+
+// OSD Tooltip
+.dash-label {
+ color: $osd_fg_color;
+ background-color: $osd_bg_color;
+ border-radius: 99px;
+ padding: $base_padding $base_padding * 2;
+ text-align: center;
+ -y-offset: $base_margin * 2; // distance from the dash edge
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_dialogs.scss b/data/theme/42/gnome-shell-sass/widgets/_dialogs.scss
new file mode 100644
index 00000000..defa20b3
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_dialogs.scss
@@ -0,0 +1,172 @@
+/* Modal Dialogs */
+
+.headline {
+ @extend %title_4;
+}
+
+.modal-dialog {
+ @extend %bubble_panel;
+
+ .modal-dialog-content-box {
+ margin: 32px 40px;
+ spacing: 32px;
+ max-width: 28em;
+ }
+
+ .modal-dialog-linked-button {
+ @extend %bubble_button;
+ }
+}
+
+/* End Session Dialog */
+.end-session-dialog {
+ width: 30em;
+
+ .end-session-dialog-battery-warning,
+ .dialog-list-title {
+ color: $warning_color;
+ }
+}
+
+/* Message Dialog */
+.message-dialog-content {
+ spacing: 18px;
+
+ .message-dialog-title {
+ text-align: center;
+ @extend %title_2;
+
+ &.lightweight { @extend %title_4;}
+ }
+ .message-dialog-description { text-align: center; }
+}
+
+/* Dialog List */
+.dialog-list {
+ spacing: 18px;
+
+ .dialog-list-title {
+ text-align: center;
+ @extend %heading;
+ }
+
+ .dialog-list-scrollview { max-height: 200px; }
+ .dialog-list-box {
+ spacing: 1em;
+
+ .dialog-list-item {
+ spacing: 1em;
+
+ .dialog-list-item-title { font-weight: bold; }
+ .dialog-list-item-description {
+ color: darken($fg_color,5%);
+ @extend %caption;
+ }
+ }
+ }
+}
+
+/* Run Dialog */
+.run-dialog {
+ .modal-dialog-content-box {
+ margin-top: 24px;
+ margin-bottom: 14px;
+ }
+ .run-dialog-entry { width: 20em; }
+ .run-dialog-description {
+ @extend %caption;
+ text-align: center;
+ color: darken($fg_color, 20%);
+ }
+}
+
+/* Password or Authentication Dialog */
+
+.prompt-dialog {
+ width: 28em;
+
+ .modal-dialog-content-box {
+ margin-bottom: 24px;
+ }
+}
+
+.prompt-dialog-password-grid {
+ spacing-rows: 8px;
+ spacing-columns: 4px;
+
+ .prompt-dialog-password-entry {
+ width: auto;
+
+ // 4px (spacing) + 16px (spinner-width)
+ &:ltr { margin-left: 20px; }
+ &:rtl { margin-right: 20px; }
+ }
+}
+
+.prompt-dialog-password-layout {
+ spacing: 8px;
+}
+
+.prompt-dialog-password-entry {
+ width: 20em;
+}
+
+.prompt-dialog-error-label,
+.prompt-dialog-info-label,
+.prompt-dialog-null-label {
+ text-align: center;
+ @extend %caption;
+}
+
+.prompt-dialog-error-label {
+ color: $warning_color;
+}
+
+
+/* Polkit Dialog */
+
+.polkit-dialog-user-layout {
+ text-align: center;
+ spacing: 8px;
+ margin-bottom: 6px;
+
+ .polkit-dialog-user-root-label { color: $warning_color; }
+}
+
+/* Audio selection dialog */
+.audio-device-selection-dialog {
+ .modal-dialog-content-box { margin-bottom: 28px; }
+ .audio-selection-box { spacing: 20px; }
+}
+
+.audio-selection-device {
+ border-radius: $base_border_radius*2;
+ &:hover,&:focus { background-color: $hover_bg_color; }
+ &:active {
+ background-color: $selected_bg_color;
+ color: $selected_fg_color;
+ }
+}
+
+.audio-selection-device-box {
+ padding: 20px;
+ spacing: 20px;
+}
+
+.audio-selection-device-icon {
+ icon-size: $base_icon_size * 4;
+}
+
+/* Welcome dialog */
+.welcome-dialog-image {
+ background-image: url("resource:///org/gnome/shell/theme/gnome-shell-start.svg");
+ background-size: contain;
+ /* Reasonable maximum dimensions */
+ height: 300px;
+ width: 300px;
+}
+
+/* Access portal dialog */
+.access-dialog {
+ text-align: center;
+}
\ No newline at end of file
diff --git a/data/theme/42/gnome-shell-sass/widgets/_entries.scss b/data/theme/42/gnome-shell-sass/widgets/_entries.scss
new file mode 100644
index 00000000..6be67609
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_entries.scss
@@ -0,0 +1,31 @@
+/* Entries */
+
+StEntry {
+ border-radius: $base_border_radius;
+ padding: 8px;
+ color: $fg_color;
+
+ @include entry(normal);
+ &:hover { @include entry(hover);}
+ &:focus { @include entry(focus);}
+ &:insensitive { @include entry(insensitive);}
+
+ selection-background-color: $selected_bg_color;
+ selected-color: $selected_fg_color;
+
+ StIcon.capslock-warning {
+ icon-size: 16px;
+ warning-color: $warning_color;
+ padding: 0 4px;
+ }
+
+ StIcon.peek-password {
+ icon-size: $base_icon_size;
+ padding: 0 4px;
+ }
+
+ StLabel.hint-text {
+ margin-left: 2px;
+ color: transparentize($fg_color, 0.3);
+ }
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_hotplug.scss b/data/theme/42/gnome-shell-sass/widgets/_hotplug.scss
new file mode 100644
index 00000000..acd0265d
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_hotplug.scss
@@ -0,0 +1,10 @@
+// hotplug
+
+.hotplug-notification-item {
+ @extend %bubble_button;
+}
+
+.hotplug-notification-item-icon {
+ icon-size: 24px;
+ padding: 0 4px;
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_ibus-popup.scss b/data/theme/42/gnome-shell-sass/widgets/_ibus-popup.scss
new file mode 100644
index 00000000..28f89f33
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_ibus-popup.scss
@@ -0,0 +1,36 @@
+// IBus Candidate Popup
+
+.candidate-popup-boxpointer {
+ @extend .popup-menu-boxpointer;
+}
+
+.candidate-popup-content {
+ padding: $base_padding;
+ spacing: $base_padding;
+ @extend .popup-menu-content;
+}
+
+.candidate-index {
+ padding: 0;
+ padding-right: $base_padding;
+ color: $insensitive_fg_color;
+}
+
+.candidate-box {
+ padding: $base_padding $base_padding*2 $base_padding $base_padding*2;
+ border-radius: $base_border_radius;
+ &:selected { background-color: $selected_bg_color; color: $selected_fg_color; }
+ &:hover { background-color: $hover_bg_color; color: $hover_fg_color; }
+}
+
+.candidate-page-button-box {
+ height: 2em;
+ .vertical & { padding-top: $base_padding*2; }
+ .horizontal & { padding-left: $base_padding*2; }
+}
+
+.candidate-page-button { padding: $base_padding;}
+
+.candidate-page-button-previous { border-radius: $base_border_radius 0px 0px $base_border_radius; border-right-width: 0;box-shadow: none;}
+.candidate-page-button-next { border-radius: 0px $base_border_radius $base_border_radius 0px;box-shadow: none;}
+.candidate-page-button-icon { icon-size: $base_icon_size; }
diff --git a/data/theme/42/gnome-shell-sass/widgets/_keyboard.scss b/data/theme/42/gnome-shell-sass/widgets/_keyboard.scss
new file mode 100644
index 00000000..91d9a3d5
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_keyboard.scss
@@ -0,0 +1,153 @@
+/* On-screen Keyboard */
+
+$key_size: 1.2em;
+$key_border_radius: $base_border_radius + 4px; // 12px
+$key_bg_color: darken($osd_fg_color, 70%);
+// $default_key_bg_color: darken($key_bg_color, 4%);
+$default_key_bg_color: if($variant=='light', darken($key_bg_color, 11%), darken($key_bg_color, 10%));
+
+
+// draw keys using button function
+#keyboard {
+ // background-color: transparentize(if($variant=='light', darken($bg_color, 5%), darken($bg_color, 8%)), 0.1);
+ background-color: $osd_bg_color;
+ box-shadow: inset 0 1px 0 0 $osd_outer_borders_color;
+
+ .page-indicator {
+ padding: $base_padding;
+
+ .page-indicator-icon {
+ width: 8px;
+ height: 8px;
+ }
+ }
+}
+
+// the container for individual keys
+.key-container {
+ padding: $base_margin;
+ spacing: $base_margin;
+}
+
+// the keys
+.keyboard-key {
+
+ @include fontsize($base_font_size + 5);
+ font-weight: bold;
+ min-height: $key_size;
+ min-width: $key_size;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: $key_border_radius;
+ box-shadow: 0 1px 0 0 $shadow_color;
+
+ @include keyboard_key(normal, $key_bg_color, $osd_fg_color);
+
+ &:focus { @include keyboard_key(focus);}
+ &:hover { @include keyboard_key(hover, $key_bg_color, $osd_fg_color);}
+ &:active { @include keyboard_key(active, $key_bg_color, $osd_fg_color); }
+ &:checked { @include keyboard_key(checked, $key_bg_color, $osd_fg_color); }
+
+ &:grayed { //FIXMEy
+ background-color: darken($bg_color, 3%);
+ color: $osd_fg_color;
+ border-color: $osd_borders_color;
+ }
+
+ // non-character keys
+ &.default-key {
+ @include keyboard_key(normal, $default_key_bg_color, $osd_fg_color);
+ &:hover {@include keyboard_key(hover, $default_key_bg_color, $osd_fg_color);}
+ &:active { @include keyboard_key(active, $default_key_bg_color, $osd_fg_color);}
+ &:checked { @include keyboard_key(checked, $default_key_bg_color, $osd_fg_color);}
+ border-radius: $key_border_radius;
+ }
+
+ // enter key is suggested-action
+ &.enter-key {
+ @include keyboard_key(normal, $selected_bg_color, $selected_fg_color);
+ &:hover { @include keyboard_key(hover, $selected_bg_color, $selected_fg_color);}
+ &:active {@include keyboard_key(active, $selected_bg_color, $selected_fg_color);}
+ &:checked {@include keyboard_key(checked, $selected_bg_color, $selected_fg_color);}
+ border-radius: $key_border_radius;
+ color: $osd_fg_color;
+ }
+
+ &.shift-key-lowercase {}
+
+ // pressed shift has different style
+ &.shift-key-uppercase {
+ background-color: lighten($key_bg_color, 20%);
+ color: $osd_bg_color;
+ &:hover {
+ background-color: lighten($key_bg_color, 25%);
+ color: lighten($osd_bg_color, 5%);
+ }
+ }
+
+ // size of icons on keys
+ StIcon { icon-size: 24px; }
+}
+
+// long press on a key popup
+.keyboard-subkeys {
+ -arrow-border-radius: $base_border_radius*2;
+ -arrow-background-color: $osd_bg_color;
+ -arrow-border-width: 1px;
+ -arrow-border-color: lighten($osd_bg_color, 9%);
+ -arrow-base: 20px;
+ -arrow-rise: 10px;
+ -boxpointer-gap: $base_padding;
+ padding: $base_padding;
+
+ .keyboard-key {
+ @include keyboard_key(normal, $key_bg_color, $osd_fg_color);
+
+ &:focus { @include keyboard_key(focus);}
+ &:hover { @include keyboard_key(hover, $key_bg_color, $osd_fg_color);}
+ &:active { @include keyboard_key(active, $key_bg_color, $osd_fg_color); }
+ &:checked { @include keyboard_key(checked, $key_bg_color, $osd_fg_color); }
+
+ border-radius:$key_border_radius;
+ }
+}
+
+// emoji
+.emoji-page {
+ .keyboard-key {
+ background-color: transparent;
+ border: none;
+ color: initial;
+ }
+}
+
+.emoji-panel {
+ .keyboard-key:latched {
+ border-color: lighten($selected_bg_color, 5%);
+ background-color: $selected_bg_color;
+ }
+}
+
+// suggestions
+.word-suggestions {
+ @include fontsize($base_font_size + 3);
+ spacing: 12px;
+ min-height: 20pt;
+ padding: $base_padding*2;
+ color: $osd_fg_color;
+
+ // each suggestion
+ StButton {
+ margin: 0 3px;
+ min-width: 32px;
+ border-radius: $base_border_radius - 2px;
+ padding: $base_padding $base_padding*3;
+
+ @include keyboard_key(undecorated, $key_bg_color, $osd_fg_color);
+
+ &:focus { @include keyboard_key(focus);}
+ &:hover { @include keyboard_key(hover, $key_bg_color, $osd_fg_color);}
+ &:active { @include keyboard_key(active, $key_bg_color, $osd_fg_color); }
+ &:checked { @include keyboard_key(checked, $key_bg_color, $osd_fg_color); }
+ }
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_login-dialog.scss b/data/theme/42/gnome-shell-sass/widgets/_login-dialog.scss
new file mode 100644
index 00000000..23456be5
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_login-dialog.scss
@@ -0,0 +1,201 @@
+/* Login Dialog */
+
+.login-dialog-banner-view {
+ padding-top: 24px;
+ max-width: 23em;
+}
+
+.login-dialog,
+.unlock-dialog {
+ //reset
+ border: none;
+ background-color: transparent;
+
+ $_gdm_bg: $system_bg_color;
+
+ .modal-dialog-button-box { spacing: 3px; }
+ .modal-dialog-button {
+ padding: 4px 18px;
+ background-color: darken($system_bg_color, 3%);
+ border-color: darken($system_bg_color, 3%);
+ color: $osd_fg_color;
+
+ $_hover_c: lighten($_gdm_bg, 5%);
+ &:hover, &:focus {
+ background-color: $_hover_c;
+ border-color: $_hover_c;
+ }
+ &:active {
+ $_active_c: darken($_gdm_bg, 5%);
+ background-color: $_active_c;
+ border-color: $_active_c;
+ }
+ &:insensitive {
+ @include button(insensitive);
+ border-color: darken($_gdm_bg, 5%);
+ background-color: darken($_gdm_bg, 5%);
+ color: transparentize($osd_fg_color, 0.3);
+ }
+ &:default {
+ @include button(default);
+ }
+ }
+
+ .cancel-button,
+ .switch-user-button,
+ .login-dialog-session-list-button {
+ padding: 0;
+ border-radius: 99px;
+ width: $large_icon_size;
+ height: $large_icon_size;
+ border-color: darken($system_bg_color, 3%);
+ background-color: darken($system_bg_color, 3%);
+
+ StIcon { icon-size: $base_icon_size; }
+ }
+
+ .caps-lock-warning-label,
+ .login-dialog-message-warning {
+ color: $osd_fg_color;
+ }
+}
+
+.login-dialog-logo-bin { padding: 24px 0px; }
+.login-dialog-banner { color: darken($osd_fg_color,10%); }
+.login-dialog-button-box { width: 23em; spacing: 5px; }
+.login-dialog-message { text-align: center; }
+.login-dialog-user-selection-box { padding: 100px 0px; }
+.login-dialog-not-listed-label {
+ padding-left: 2px;
+ .login-dialog-not-listed-button:focus &,
+ .login-dialog-not-listed-button:hover & {
+ color: $osd_fg_color;
+ }
+}
+
+.login-dialog-not-listed-label {
+ @extend %caption;
+ font-weight: bold;
+ color: darken($osd_fg_color,30%);
+ padding-top: 1em;
+}
+
+.login-dialog-auth-list-view { -st-vfade-offset: 1em; }
+.login-dialog-auth-list {
+ spacing: 6px;
+ margin-left: 2em;
+}
+
+.login-dialog-auth-list-title {
+ margin-left: 2em;
+}
+
+.login-dialog-auth-list-item {
+ border-radius: $base_border_radius + 4px;
+ padding: 6px;
+ color: darken($osd_fg_color,30%);
+ &:focus, &:selected { background-color: $selected_bg_color; color: $selected_fg_color; }
+}
+
+.login-dialog-auth-list-label {
+ @include fontsize($base_font_size + 2);
+ font-weight: bold;
+ padding-left: 15px;
+ &:ltr { padding-left: 14px; text-align: left; }
+ &:rtl { padding-right: 14px; text-align: right; }
+}
+
+.login-dialog-user-list-view { -st-vfade-offset: 1em; }
+.login-dialog-user-list {
+ spacing: 12px;
+ width: 23em;
+ &:expanded .login-dialog-user-list-item:selected { background-color: $selected_bg_color; color: $selected_fg_color; }
+ &:expanded .login-dialog-user-list-item:logged-in { border-right: 2px solid $selected_bg_color; }
+}
+
+.login-dialog-user-list-item {
+ border-radius: $base_border_radius + 4px;
+ padding: 6px;
+ color: darken($osd_fg_color,30%);
+ &:ltr .user-widget { padding-right: 1em; }
+ &:rtl .user-widget { padding-left: 1em; }
+ .login-dialog-timed-login-indicator {
+ height: 2px;
+ margin-top: 6px;
+ background-color: $osd_fg_color;
+ }
+ &:focus .login-dialog-timed-login-indicator { background-color: $selected_fg_color; }
+}
+
+.user-widget-label {
+ color: $osd_fg_color;
+}
+
+.user-widget.horizontal .user-widget-label {
+ @include fontsize($base_font_size + 2);
+ font-weight: bold;
+ padding-left: 15px;
+
+ &:ltr { padding-left: 14px; text-align: left; }
+ &:rtl { padding-right: 14px; text-align: right; }
+}
+
+.user-widget.vertical .user-widget-label {
+ @include fontsize($base_font_size + 5);
+ text-align: center;
+ font-weight: normal;
+ padding-top: 16px;
+}
+
+.login-dialog-timed-login-indicator {
+ height: 2px;
+ background-color: darken($fg_color,40%);
+}
+
+.login-dialog-prompt-layout {
+ padding-top: 24px;
+ padding-bottom: 12px;
+ spacing: $base_padding * 2;
+ width: 23em;
+}
+
+.login-dialog-prompt-entry {
+ height: 1.5em;
+}
+
+.login-dialog-prompt-label {
+ color: darken($osd_fg_color, 20%);
+ @include fontsize($base_font_size + 1);
+ padding-top: 1em;
+}
+
+.login-dialog {
+ StEntry {
+ @if $variant=='dark' {
+ $_gdm_entry_bg: darken($system_bg_color, 3%);
+ background-color: $_gdm_entry_bg;
+ color: $fg_color;
+ }
+ }
+}
+
+// Custom styling for unlock entry
+.unlock-dialog {
+ StEntry {
+ border:none !important;
+ &:focus {
+ background-color: transparentize($fg_color, 0.9);
+ }
+ &:insensitive {
+ color: transparentize($fg_color, 0.5);
+ background-color: transparentize($fg_color, 0.95);
+ }
+ }
+
+ .cancel-button,
+ .switch-user-button,
+ .login-dialog-session-list-button {
+ border-color: transparent;
+ background-color: transparentize($fg_color, 0.9);
+ }
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_looking-glass.scss b/data/theme/42/gnome-shell-sass/widgets/_looking-glass.scss
new file mode 100644
index 00000000..57d945d6
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_looking-glass.scss
@@ -0,0 +1,142 @@
+/* Looking Glass */
+
+// Dialog
+#LookingGlassDialog {
+ background-color: $osd_bg_color;
+ border-radius: 0 0 $modal_radius $modal_radius;
+ border-top-width: 0;
+ border: 1px solid $osd_outer_borders_color;
+ color: $osd_fg_color;
+ padding: $base_padding;
+ spacing: $base_padding;
+ box-shadow: 0 2px 4px 0 $shadow_color;
+
+ & > #Toolbar {
+ border: none;
+ padding: $base_padding;
+ border-radius: 0;
+ background-color: transparent;
+ spacing: $base_padding;
+
+ .lg-toolbar-button {
+ padding: $base_padding $base_padding*2;
+ @extend %button;
+
+ & > StIcon { icon-size: $base_icon_size; }
+ }
+ }
+
+ .labels {
+ spacing: $base_padding;
+ }
+
+ .notebook-tab {
+ -natural-hpadding: $base_padding*2;
+ -minimum-hpadding: $base_padding*2;
+
+ font-weight: bold;
+ padding: $base_padding $base_padding*2;
+ color: darken($osd_fg_color, 15%);
+ transition-duration: 100ms;
+ box-shadow:none;
+ border:none;
+ border-radius: $base_border_radius - 2px;
+ background-color: transparent;
+
+ &:hover {
+ color: $osd_fg_color;
+ background-color: transparentize($osd_fg_color, 0.95);
+ }
+
+ &:selected {
+ color: $osd_fg_color;
+ background-color: transparentize($osd_fg_color, 0.9);
+ }
+ }
+
+ StBoxLayout#EvalBox { padding: 4px; spacing: $base_padding; padding: $base_padding; }
+ StBoxLayout#ResultsArea { spacing: $base_padding; padding: $base_padding; }
+}
+
+.lg-dialog {
+
+ StEntry {
+ background-color: transparentize(lighten($osd_bg_color, 5%), 0.4);
+ color: $osd_fg_color;
+ border-color: transparentize($osd_fg_color, 0.8);
+ min-height: 22px;
+ selection-background-color: $selected_bg_color;
+ selected-color: $selected_fg_color;
+ }
+
+ .shell-link {
+ color: $link_color;
+ &:hover { color: lighten($link_color, 10%); }
+ &:active { color: darken($link_color, 10%); }
+ }
+
+ .actor-link {
+ color: $insensitive_fg_color;
+ &:hover { color: lighten($insensitive_fg_color, 20%); }
+ &:active { color: darken($insensitive_fg_color, 20%); }
+ }
+}
+
+.lg-completions-text {
+ @extend %caption;
+ font-style: italic;
+}
+
+.lg-obj-inspector-title {
+ spacing: $base_padding;
+}
+
+.lg-obj-inspector-button {
+ border: 1px solid $osd_borders_color;
+ padding: 4px;
+ border-radius: $base_border_radius;
+ &:hover { border: 1px solid #ffffff; }
+}
+
+// Extensions
+#lookingGlassExtensions { padding: $base_padding; }
+
+.lg-extensions-list {
+ padding: $base_padding;
+ spacing: $base_padding;
+}
+
+.lg-extension {
+ padding: $base_padding*2;
+ @include card;
+}
+
+.lg-extension-name {
+ @extend %heading;
+}
+
+.lg-extension-meta {
+ spacing: $base_padding;
+}
+
+// Inspector
+#LookingGlassPropertyInspector {
+ background: $osd_bg_color;
+ border: 1px solid $osd_borders_color;
+ border-radius: $base_border_radius;
+ padding: $base_padding;
+}
+
+.lg-debug-flag-button {
+ StLabel { padding: $base_padding, 2 * $base_padding; }
+
+ color: $fg_color;
+ &:hover { color: lighten($fg_color, 20%); }
+ &:active { color: darken($fg_color, 20%); }
+}
+
+.lg-debug-flags-header {
+ padding-top: 2 * $base_padding;
+ padding: $base_padding;
+ @extend %title_2;
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_message-list.scss b/data/theme/42/gnome-shell-sass/widgets/_message-list.scss
new file mode 100644
index 00000000..7f93e817
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_message-list.scss
@@ -0,0 +1,176 @@
+/* Message List */
+// a.k.a. notifications in the menu
+
+// main list
+.message-list {
+ width: 29em;
+ border: solid $borders_color;
+
+ // padding and margins to account for scrollbar
+ &:ltr {margin-left: 0; margin-right: $base_margin; padding-right: $base_padding; border-right-width: 1px; }
+ &:rtl {margin-right: 0; margin-left: $base_margin; padding-left: $base_padding; border-left-width: 1px; }
+
+ .message-list-placeholder {
+ @extend %title_2;
+ color: transparentize($insensitive_fg_color, .5);
+
+ // icon size and color
+ > StIcon {
+ icon-size: $base_icon_size*3; // 48px
+ margin-bottom: $base_margin*3;
+ -st-icon-style: symbolic;
+ }
+ }
+}
+
+.message-list-sections {
+ spacing: $base_padding;
+ margin: 0;
+ padding-bottom: $base_padding;
+
+ // to account for scrollbar
+ &:ltr {margin-right: $base_margin * 3; }
+ &:rtl {margin-left: $base_margin * 3;}
+}
+
+.message-list-section,
+.message-list-section-list {
+ spacing: $base_padding;
+}
+
+// do-not-disturb + clear button
+.message-list-controls {
+ // NOTE: remove the padding if notification_bubble could remove margin for drop shadow
+ padding: $base_padding;
+ spacing: $base_padding;
+ @extend %heading;
+
+ .dnd-button {
+ // We need this because the focus outline isn't inset like for the buttons
+ // so the dnd button would grow when it gets focus if we didn't change only
+ // its color when focusing.
+ border-width: 2px;
+ border-color: transparent;
+ border-radius: 32px;
+ border-style: solid;
+
+ &:focus {
+ border-color: transparentize($selected_bg_color, 0.4);
+ }
+ }
+}
+
+// message bubbles
+.message {
+ @include card;
+
+ // icon container
+ .message-icon-bin {
+ padding: ($base_padding * 3);
+
+ &:ltr {padding-right:$base_padding;}
+ &:rtl {padding-left:$base_padding;}
+
+ // icon size and color
+ > StIcon {
+ icon-size: $large_icon_size; // 32px
+ -st-icon-style: symbolic;
+ }
+
+ // fallback
+ > .fallback-app-icon {
+ width: $base_icon_size;
+ height: $base_icon_size;
+ }
+ }
+
+ // content
+ .message-content {
+ spacing: 4px;
+ padding: ($base_padding*1.5);
+ margin-bottom: $base_margin*2;
+ }
+
+ // title
+ .message-title {
+ font-weight: bold;
+ /* HACK: the label should be baseline-aligned with a 1em label, fake this with some bottom padding */
+ padding-top: 0.57em;
+ }
+
+ // secondary container in title box
+ .message-secondary-bin {
+ padding: 0 $base_margin * 2;
+
+ // notification time stamp
+ > .event-time {
+ color: transparentize($fg_color, 0.5);
+ @include fontsize($base_font_size - 2);
+ /* HACK: the label should be baseline-aligned with a 1em label, fake this with some bottom padding */
+ padding-bottom: 0.13em;
+
+ &:ltr { text-align: right };
+ &:rtl { text-align: left };
+ }
+ }
+
+ // close button
+ .message-close-button {
+ color: $fg_color;
+ background-color: transparentize($fg_color, 0.9);
+ border-radius: 99px;
+ padding: $base_padding - 1px;
+ margin: 1px;
+ &:hover {background-color: transparentize($fg_color, 0.8);}
+ &:active {background-color: transparentize($fg_color, 0.9);}
+ }
+
+ // body
+ .message-body {color: darken($fg_color, 10%);}
+}
+
+// URLs in messages
+.url-highlighter {
+ link-color: $link_color;
+}
+
+/* Media Controls */
+.message-media-control {
+ padding: 0 $base_padding*3;
+ margin: $base_padding*2 0;
+ border-radius: $base_border_radius;
+ color: $fg_color;
+
+ // colors are lightened since the media controls are in a card
+ &:hover {
+ background-color: lighten($hover_bg_color, 5%);
+ color: $fg_color;
+ }
+
+ &:active {
+ background-color: lighten($active_bg_color, 5%);
+ color: $fg_color;
+ }
+
+ &:insensitive { color: lighten($insensitive_fg_color, 5%); }
+
+ // fix margin for last button
+ &:last-child:ltr { margin-right: $base_margin*3; }
+ &:last-child:rtl { margin-left: $base_margin*3; }
+}
+
+// album-art
+.media-message-cover-icon {
+ icon-size: $base_icon_size*3 !important; // 48px
+ border-radius: $base_border_radius;
+
+ // when there is no artwork
+ &.fallback {
+ color: darken($fg_color, 17%);
+ background-color: $bg_color;
+ border: 1px solid transparent;
+ border-radius: $base_border_radius;
+ icon-size: $large_icon_size !important; // 32px
+ padding: ($base_padding*2 + 2); // 16px
+ }
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_misc.scss b/data/theme/42/gnome-shell-sass/widgets/_misc.scss
new file mode 100644
index 00000000..74092782
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_misc.scss
@@ -0,0 +1,65 @@
+// Rubberband for select-area screenshots
+.select-area-rubberband {
+ background-color: transparentize($selected_bg_color,0.7);
+ border: 1px solid $selected_bg_color;
+}
+
+// User icon
+.user-icon {
+ background-size: contain;
+ color: $osd_fg_color;
+ border-radius: 99px;
+ icon-size: $base_icon_size * 4; // 64px
+ &:hover {
+ color: lighten($osd_fg_color,30%);
+ }
+
+ & StIcon {
+ background-color: transparentize($osd_fg_color,0.95);
+ border-radius: 99px;
+ padding: $base_padding * 2 ; // 12px
+ width: $base_icon_size * 2.5; height: $base_icon_size * 2.5; // 40px;
+ }
+
+ &.user-avatar {
+ border: 2px $osd_fg_color;
+ }
+}
+
+.user-widget.vertical .user-icon {
+ icon-size: $base_icon_size * 6; // 128px
+
+ & StIcon {
+ padding: $base_padding * 3 + 2px; // 20px
+ padding-top: $base_padding * 3; // 18 px
+ padding-bottom: $base_padding * 3 + 4px; // 22px
+ width: $base_icon_size * 5.5; height: $base_icon_size * 5.5; // 88px;
+ }
+}
+
+.lightbox { background-color: black; }
+.flashspot { background-color: white; }
+
+
+// Hidden
+.hidden { color: rgba(0,0,0,0);}
+
+// Caps-lock warning
+.caps-lock-warning-label {
+ text-align: center;
+ padding-bottom: 8px;
+ @extend %caption;
+ color: $warning_color;
+}
+
+/* Workspace animation */
+
+.workspace-animation {
+ background-color: $system_bg_color;
+}
+
+/* Tiled window previews */
+.tile-preview {
+ background-color: transparentize($selected_bg_color,0.5);
+ border: 1px solid $selected_bg_color;
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_network-dialog.scss b/data/theme/42/gnome-shell-sass/widgets/_network-dialog.scss
new file mode 100644
index 00000000..7fc15245
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_network-dialog.scss
@@ -0,0 +1,52 @@
+/* Select Network dialogs */
+.nm-dialog {
+ max-height: 34em;
+ min-height: 31em;
+ min-width: 32em;
+}
+
+.nm-dialog-content {
+ spacing: 20px;
+ padding: 24px;
+}
+
+.nm-dialog-header { @extend %heading; }
+.nm-dialog-subheader { color: $insensitive_fg_color;}
+.nm-dialog-header-icon { icon-size: $large_icon_size;}
+.nm-dialog-header-hbox { spacing: 10px; }
+
+.nm-dialog-network-selected {
+ margin: 0 $base_margin*2;
+}
+
+.nm-dialog-scroll-view {
+ padding:$base_padding;
+ border-radius: $base_border_radius;
+ background-color: $base_color;
+}
+
+.nm-dialog-item {
+ padding: $base_padding * 2;
+
+ &:selected {
+ background-color: $selected_bg_color;
+ border-radius: $base_border_radius - 3px;
+ color: $selected_fg_color;
+ }
+ &:hover { background-color:$hover_bg_color;}
+}
+
+.nm-dialog-icon { icon-size: $base_icon_size; }
+.nm-dialog-icons { spacing: $base_padding * 2; }
+
+// no networks
+.no-networks-box { spacing: $base_padding; }
+.no-networks-label { color: $insensitive_fg_color; }
+
+// airplane mode
+.nm-dialog-airplane-box {
+ text-align: center;
+ spacing: 12px;
+}
+.nm-dialog-airplane-headline { @extend %title_3;}
+.nm-dialog-airplane-text { color: $insensitive_fg_color;}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_notifications.scss b/data/theme/42/gnome-shell-sass/widgets/_notifications.scss
new file mode 100644
index 00000000..86480a87
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_notifications.scss
@@ -0,0 +1,61 @@
+/* Notifications & Message Tray */
+
+$notification_banner_height: 64px;
+$notification_banner_width: 34em;
+$notification_banner_radius: $base_border_radius*1.5;
+
+// Banner notifications
+.notification-banner {
+ min-height: $notification_banner_height;
+ width: $notification_banner_width;
+ box-shadow: 0 2px 4px 2px $shadow_color;
+ border-radius: $notification_banner_radius;
+ margin: $base_margin;
+
+ .notification-actions {
+ spacing: 0;
+ }
+
+ .notification-button {
+ @extend %bubble_button;
+ }
+}
+
+// counter
+.summary-source-counter {
+ font-size: $base_font_size - 1pt;
+ font-weight: bold;
+ height: 1.6em;
+ width: 1.6em;
+ -shell-counter-overlap-x: 3px;
+ -shell-counter-overlap-y: 3px;
+ background-color: $selected_bg_color;
+ color: $selected_fg_color;
+ border: 2px solid $fg_color;
+ box-shadow: 0 2px 2px rgba(0,0,0,0.5);
+ border-radius: 0.9em; // should be 0.8 but whatever; wish I could do 50%;
+}
+
+// chat bubbles
+.chat-body { spacing: 5px; }
+.chat-response { margin: 5px; }
+.chat-log-message { color: darken($fg_color,10%); }
+.chat-new-group { padding-top: 1em; }
+.chat-received {
+ padding-left: 4px;
+ &:rtl { padding-left: 0px; padding-right: 4px; }
+}
+
+.chat-sent {
+ padding-left: 18pt;
+ color: lighten($fg_color, 15%);
+ &:rtl { padding-left: 0; padding-right: 18pt; }
+}
+
+.chat-meta-message {
+ padding-left: 4px;
+ @include fontsize($base_font_size - 2);
+ font-weight: bold;
+ color: lighten($fg_color,18%);
+ &:rtl { padding-left: 0; padding-right: 4px; }
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_osd.scss b/data/theme/42/gnome-shell-sass/widgets/_osd.scss
new file mode 100644
index 00000000..a8d1a55f
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_osd.scss
@@ -0,0 +1,64 @@
+/* OSD */
+
+$osd_levelbar_height:6px;
+
+.osd-window {
+ @extend %osd_panel;
+ @extend %heading;
+ text-align: center;
+ font-weight: bold;
+ spacing: $base_padding * 2; // 12px
+ padding: $base_padding * 2 $base_padding * 3;
+ & > * { spacing: 8px; }
+ margin-bottom: 4em;
+
+ StIcon { icon-size:$large_icon_size;}
+
+ StLabel {
+ &:ltr { margin-right: 6px; }
+ &:rtl { margin-left: 6px; }
+ }
+
+ .level {
+ margin-bottom: 4px;
+ &:first-child { margin-bottom: 0px; }
+
+ height: $osd_levelbar_height;
+ min-width:$base_icon_size * 10;
+ -barlevel-height: $osd_levelbar_height;
+ -barlevel-background-color: transparentize($osd_fg_color, if($variant=='light', 0.7, 0.9));
+ -barlevel-active-background-color: $osd_fg_color;
+ -barlevel-overdrive-color: $destructive_color;
+ -barlevel-overdrive-separator-width: 3px;
+ &:ltr { margin-right: 6px; }
+ &:rtl { margin-left: 6px; }
+ }
+}
+
+// Monitor number label
+.osd-monitor-label {
+ @extend %osd_panel;
+ border-radius: $modal_radius;
+ font-size: 3em;
+ font-weight: bold;
+ margin: $base_margin * 3;
+ text-align: center;
+ min-width: 1.3em;
+}
+
+/* Pad OSD */
+.pad-osd-window {
+ padding: 32px;
+ background-color: transparentize(#000, 0.2);
+
+ .pad-osd-title-box { spacing: 12px; }
+ .pad-osd-title-menu-box { spacing: 6px; }
+}
+
+.combo-box-label {
+ width: 15em;
+}
+
+.resize-popup {
+ @extend %osd_panel;
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_overview.scss b/data/theme/42/gnome-shell-sass/widgets/_overview.scss
new file mode 100644
index 00000000..d8e70eaf
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_overview.scss
@@ -0,0 +1,13 @@
+/* OVERVIEW */
+
+.controls-manager, .secondary-monitor-workspaces {
+ spacing: $base_padding * 2;
+}
+
+#overviewGroup {
+ background-color: $system_bg_color;
+}
+
+.overview-controls {
+ padding-bottom: 32px;
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_panel.scss b/data/theme/42/gnome-shell-sass/widgets/_panel.scss
new file mode 100644
index 00000000..3fc57eb0
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_panel.scss
@@ -0,0 +1,208 @@
+/* Top Bar */
+// a.k.a. the panel
+
+$panel_bg_color: #000;
+$panel_fg_color: if($variant == 'light', lighten($bg_color, 10%), darken($fg_color, 5%));
+$panel_height: 2.2em;
+$panel_transition_duration: 250ms; // same as the overview transition duration
+
+#panel {
+ background-color: $panel_bg_color;
+ font-weight: bold;
+ height: $panel_height;
+ @extend %numeric;
+ transition-duration: $panel_transition_duration;
+
+ // transparent panel on lock & login screens
+ &.unlock-screen,
+ &.login-screen,
+ &:overview {
+ background-color: transparent;
+ }
+
+ // panel menus
+ .panel-button {
+ font-weight: bold;
+ color: $panel_fg_color;
+ -natural-hpadding: $base_padding * 2;
+ -minimum-hpadding: $base_padding;
+ transition-duration: 150ms;
+ border: 3px solid transparent;
+ border-radius: 99px;
+
+ &.clock-display {
+ .clock {
+ transition-duration: 150ms;
+ border: 3px solid transparent;
+ border-radius: 99px;
+ }
+ }
+
+ &.screen-recording-indicator {
+ box-shadow: inset 0 0 0 100px $screenshot_ui_button_red;
+
+ StBoxLayout {
+ spacing: $base_padding;
+ }
+
+ StIcon {
+ icon-size: $base_icon_size;
+ }
+ }
+
+ &:active, &:overview, &:focus, &:checked {
+ box-shadow: inset 0 0 0 100px transparentize($panel_fg_color, 0.8);
+
+ // The clock display needs to have the background on .clock because
+ // we want to exclude the do-not-disturb indicator from the background
+ &.clock-display {
+ box-shadow: none;
+
+ .clock {
+ box-shadow: inset 0 0 0 100px transparentize($panel_fg_color, 0.8);
+ }
+ }
+
+ &.screen-recording-indicator {
+ box-shadow: inset 0 0 0 100px transparentize($screenshot_ui_button_red, 0.15);
+ }
+ }
+
+ &:hover {
+ box-shadow: inset 0 0 0 100px transparentize($panel_fg_color, 0.85);
+ &.clock-display {
+ box-shadow: none;
+ .clock {
+ box-shadow: inset 0 0 0 100px transparentize($panel_fg_color, 0.85);
+ }
+ }
+
+ &.screen-recording-indicator {
+ box-shadow: inset 0 0 0 100px transparentize($screenshot_ui_button_red, 0.1);
+ }
+ }
+
+ &:active:hover, &:overview:hover, &:focus:hover, &:checked:hover {
+ box-shadow: inset 0 0 0 100px transparentize($panel_fg_color, 0.75);
+ &.clock-display {
+ box-shadow: none;
+ .clock {
+ box-shadow: inset 0 0 0 100px transparentize($panel_fg_color, 0.75);
+ }
+ }
+
+ &.screen-recording-indicator {
+ box-shadow: inset 0 0 0 100px transparentize($screenshot_ui_button_red, 0.2);
+ }
+ }
+
+ // status area icons
+ .system-status-icon {
+ icon-size: $base_icon_size;
+ padding: $base_padding - 1px;
+ margin: 0 $base_margin;
+ }
+
+ .panel-status-indicators-box .system-status-icon,
+ .panel-status-menu-box .system-status-icon {
+ margin: 0;
+ }
+
+ // app menu icon
+ .app-menu-icon {
+ -st-icon-style: symbolic;
+ // dimensions of the icon are hardcoded
+ }
+
+ panelActivities {
+ -natural-hpadding: $base_padding * 3;
+ }
+ }
+
+ &.unlock-screen,
+ &.login-screen,
+ &:overview {
+ .panel-button {
+ &:active, &:overview, &:focus, &:checked {
+ box-shadow: inset 0 0 0 100px rgba(255,255,255, 0.15);
+
+ &.clock-display {
+ box-shadow: none;
+
+ .clock {
+ box-shadow: inset 0 0 0 100px rgba(255,255,255, 0.15);
+ }
+ }
+
+ &.screen-recording-indicator {
+ box-shadow: inset 0 0 0 100px transparentize($screenshot_ui_button_red, 0.15);
+ }
+ }
+
+ &:hover {
+ box-shadow: inset 0 0 0 100px rgba(255,255,255, 0.10);
+ &.clock-display {
+ box-shadow: none;
+ .clock {
+ box-shadow: inset 0 0 0 100px rgba(255,255,255, 0.10);
+ }
+ }
+
+ &.screen-recording-indicator {
+ box-shadow: inset 0 0 0 100px transparentize($screenshot_ui_button_red, 0.1);
+ }
+ }
+
+ &:active:hover, &:overview:hover, &:focus:hover, &:checked:hover {
+ box-shadow: inset 0 0 0 100px rgba(255,255,255, 0.2);
+ &.clock-display {
+ box-shadow: none;
+ .clock {
+ box-shadow: inset 0 0 0 100px rgba(255,255,255, 0.2);
+ }
+ }
+
+ &.screen-recording-indicator {
+ box-shadow: inset 0 0 0 100px transparentize($screenshot_ui_button_red, 0.2);
+ }
+ }
+ }
+ }
+
+ .panel-status-indicators-box,
+ .panel-status-menu-box {
+ spacing: 2px;
+ }
+
+ // spacing between power icon and (optional) percentage label
+ .power-status.panel-status-indicators-box {
+ spacing: 0;
+ }
+
+ // indicator for active
+ .screencast-indicator,
+ .remote-access-indicator { color: $warning_color; }
+}
+
+// App Menu
+#appMenu {
+ spacing: $base_padding;
+ .label-shadow { color: transparent; }
+}
+
+#appMenu .panel-status-menu-box {
+ padding: 0 $base_padding;
+ spacing: $base_padding;
+}
+
+
+// Clock
+
+.clock-display-box {
+ spacing: 2px;
+
+ .clock {
+ padding-left: $base_padding * 2;
+ padding-right: $base_padding * 2;
+ }
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_popovers.scss b/data/theme/42/gnome-shell-sass/widgets/_popovers.scss
new file mode 100644
index 00000000..4a86dd3f
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_popovers.scss
@@ -0,0 +1,204 @@
+/* Popovers/Menus */
+
+// the popover itself
+.popup-menu-boxpointer {
+ -arrow-rise: $base_margin+2px; // distance from the panel & screen edge
+}
+
+// container of the popover menu
+.popup-menu {
+ min-width: 15em;
+ color: $fg_color;
+
+ //.popup-status-menu-item {font-weight: normal; color: pink;} //dunno what that is
+ &.panel-menu {
+ margin-bottom: 1.75em; // so it doesn't touch the bottom of the screen
+ }
+}
+
+// popover content
+.popup-menu-content {
+ padding: $base_padding;
+ border-radius: $modal_radius - 2px;
+ border: 1px solid $borders_edge;
+ box-shadow: 0 2px 4px 0 $shadow_color;
+ background-color: $bg_color;
+}
+
+// menu items
+.popup-menu-item {
+ padding: $base_padding*1.5 $base_padding*2;
+ border-radius: $base_border_radius;
+ spacing: $base_padding;
+ transition-duration: 100ms;
+ background-color: transparent;
+
+ &:ltr {padding-left: $base_padding;}
+ &:rtl {padding-right: $base_padding;}
+
+ &:focus, &:hover {
+ background-color: $hover_bg_color !important;
+ &:active { background-color: $active_bg_color !important;}
+ }
+
+ &:checked {background-color: $checked_bg_color !important;}
+
+ &:checked {
+ margin-bottom: 0;
+ box-shadow: inset 0 -1px 0 0 darken($checked_bg_color, 5%);
+ border-radius: $base_border_radius $base_border_radius 0 0;
+ &:focus,&:hover { background-color: lighten($checked_bg_color, 3%) !important;}
+ &:active { background-color: lighten($checked_bg_color, 5%) !important;}
+ }
+
+ &:active {
+ background-color: lighten($active_bg_color, 5%);
+ color: $active_fg_color;
+ }
+
+ &:insensitive {color: transparentize($fg_color,0.5);}
+
+ // add margin to switches in menu items
+ .toggle-switch {
+ &:ltr { margin-left: $base_margin;}
+ &:rtl { margin-right: $base_margin;}
+ }
+}
+
+
+// all other graphical elements (sliders)
+.popup-inactive-menu-item {
+ color: $fg_color;
+ &:insensitive { color: $insensitive_fg_color; }
+}
+
+// symbolic icons in popover
+.popup-menu-arrow,
+.popup-menu-icon {
+ icon-size: 16px !important; // for some reason the variable doesn't work here
+}
+
+.popup-menu-arrow {
+}
+
+
+// popover submenus
+.popup-sub-menu {
+ background-color: $checked_bg_color;
+ border-radius: 0 0 $base_border_radius $base_border_radius;
+
+ .popup-menu-ornament {
+ min-width: $base_icon_size !important;
+ }
+
+ // submenu specific styles
+ .popup-menu-item {
+ border-radius: 0;
+ margin: 0;
+
+ &:last-child {
+ border-radius: 0 0 $base_border_radius $base_border_radius;
+ }
+
+ &:focus,&:hover { background-color: $hover_bg_color !important;}
+ &:checked {
+ background-color: $checked_bg_color !important;
+ &:focus,&:hover { background-color: lighten($checked_bg_color, 8%) !important;}
+ }
+ &:active { background-color: $active_bg_color !important;}
+ }
+
+ .popup-menu-section {
+ .popup-menu-item:last-child {
+ &:hover,&:focus { border-radius: 0;}
+ }
+ &:last-child .popup-menu-item:last-child {
+ border-radius: 0 0 $base_border_radius $base_border_radius;
+ }
+ }
+}
+
+// container for radio and check boxes
+.popup-menu-ornament {
+ @extend %heading;
+ width: 1.2em;
+ text-align: center !important;
+
+ &:ltr { text-align: right;}
+ &:rtl { text-align: left;}
+}
+
+// separator
+.popup-separator-menu-item {
+ margin: 6px 0;
+ padding:0 !important;
+ &:ltr { margin-right: $base_margin;}
+ &:rtl { margin-left: $base_margin;}
+
+ .popup-separator-menu-item-separator {
+ height: 1px; //not really the whole box
+ background-color: $borders_color;
+ }
+
+ .popup-menu-ornament {
+ width: 0 !important;
+ }
+
+ // separators in submenus
+ .popup-sub-menu & {
+ background-color: transparent;
+
+ // account for ornament
+ &:ltr { margin-right: 2.5em;}
+ &:rtl { margin-left: 2.5em;}
+
+ .popup-separator-menu-item-separator {
+ background-color: lighten($borders_color, 7%);
+ }
+ }
+}
+
+// desktop background menu
+.background-menu {
+ -boxpointer-gap: 0px;
+ -arrow-rise: 0px; // hide the beak on the menu
+}
+
+// system status menu
+.aggregate-menu {
+ min-width: 22em;
+
+ // this is unneeded at the top-level in this menu, hide it
+ .popup-menu-ornament { width: 0 !important; }
+
+ // lock screen, shutdown, etc. buttons
+ .popup-menu-icon {
+ -st-icon-style: symbolic;
+ &:ltr {margin-right: $base_margin*2;}
+ &:rtl {margin-left: $base_margin*2;}
+ }
+
+ // account for ornaments in submenus with padding
+ .popup-sub-menu .popup-menu-item > :first-child {
+ // this value is hardcoded for visual effect
+ &:ltr { margin-left: 1em;}
+ &:rtl { margin-right: 1em;}
+ }
+}
+
+// right-click (and panel) app menu
+.app-menu {
+ max-width: 27.25em;
+
+ // this is unneeded at the top-level in this menu, hide it
+ .popup-menu-ornament { width: 0 !important; }
+
+ .popup-inactive-menu-item:first-child {
+ // "Open Windows" label
+ > StLabel {
+ @extend %caption_heading;
+ &:ltr {margin-right: $base_margin*2;}
+ &:rtl {margin-left: $base_margin*2;}
+ }
+ }
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_screen-shield.scss b/data/theme/42/gnome-shell-sass/widgets/_screen-shield.scss
new file mode 100644
index 00000000..a459ba16
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_screen-shield.scss
@@ -0,0 +1,78 @@
+/* Screen Shield */
+
+.unlock-dialog-clock {
+ color: white;
+ font-weight: 300;
+ text-align: center;
+ spacing: 24px;
+ padding-bottom: 2.5em;
+}
+
+.unlock-dialog-clock-time {
+ font-size: 64pt;
+ padding-top: 42px;
+ @extend %numeric;
+}
+
+.unlock-dialog-clock-date {
+ font-size: 16pt;
+ font-weight: normal;
+}
+
+.unlock-dialog-clock-hint {
+ font-weight: normal;
+ padding-top: 48px;
+}
+
+.unlock-dialog-notifications-container {
+ margin: 12px;
+ spacing: 6px;
+ width: 23em;
+ background-color: transparent;
+
+ .summary-notification-stack-scrollview {
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .notification,
+ .unlock-dialog-notification-source {
+ padding: 12px 16px;
+ border: none;
+ background-color: transparentize($osd_fg_color,0.9);
+ color: $osd_fg_color;
+ border-radius: $modal_radius;
+
+ &.critical { background-color: transparentize($osd_fg_color,0.8) }
+ }
+}
+
+.unlock-dialog-notification-label {
+ padding-left: 12px;
+ padding-right: 0;
+ &:rtl { padding-right: 12px; padding-left: 0; }
+}
+
+.unlock-dialog-notification-count-text {
+ font-weight: bold;
+ padding: 0 12px;
+ color: $osd_fg_color;
+ background-color: transparentize($osd_fg_color, 0.9);
+ border-radius: 99px;
+}
+
+.screen-shield-background { //just the shadow, really
+ background: black;
+ box-shadow: 0 2px 4px rgba(0,0,0,0.6);
+}
+
+#lockDialogGroup {
+ background-color: $system_bg_color;
+}
+#unlockDialogNotifications {
+ StButton#vhandle, StButton#hhandle {
+ background-color: transparentize($bg_color,0.7);
+ &:hover, &:focus { background-color: transparentize($bg_color,0.5); }
+ &:active { background-color: transparentize($selected_bg_color,0.5); }
+ }
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_screenshot.scss b/data/theme/42/gnome-shell-sass/widgets/_screenshot.scss
new file mode 100644
index 00000000..f7fa3da2
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_screenshot.scss
@@ -0,0 +1,203 @@
+// Screenshot UI
+.icon-label-button-container {
+ spacing: $base_padding;
+ @extend %caption;
+
+ StIcon { icon-size: 32px;}
+}
+
+$screenshot_ui_panel_padding: $base_padding*3;
+$screenshot_ui_shot_cast_margin: 21px;
+$screenshot_ui_panel_border_radius: $modal_radius + $screenshot_ui_shot_cast_margin;
+$screenshot_ui_shot_cast_spacing: 3px;
+
+$screenshot_ui_button_red: $error_color;
+
+.screenshot-ui-panel {
+ @extend %osd_panel;
+ border-radius: $screenshot_ui_panel_border_radius;
+ padding: $screenshot_ui_panel_padding;
+ // Reduce the bottom padding a little to accommodate the large capture button.
+ padding-bottom: $screenshot_ui_panel_padding - 6px;
+ margin-bottom: 4em;
+ spacing: $base_padding * 2;
+}
+
+.screenshot-ui-close-button {
+ @extend .window-close; // copy window close button
+ padding: $base_padding !important; // but with more padding
+ margin-top: 12px;
+ box-shadow: 0 2px 4px 0 $shadow_color;
+ &.left { margin-left: 12px;}
+ &.right { margin-right: 12px;}
+}
+
+.screenshot-ui-type-button {
+ @extend %osd_button;
+ min-width: 48px;
+ padding: $base_padding * 2 $base_padding * 3 !important;
+ border-radius: $screenshot_ui_panel_border_radius - $screenshot_ui_panel_padding;
+}
+
+.screenshot-ui-capture-button {
+ width: 36px;
+ height: 36px;
+ border-radius: 99px;
+ border: 4px $osd_fg_color;
+ padding: 4px;
+
+ .screenshot-ui-capture-button-circle {
+ background-color: $osd_fg_color;
+ transition-duration: 200ms;
+ &:hover, &:focus { background-color: $hover_bg_color;}
+ border-radius: 99px;
+ }
+
+ &:hover, &:focus {
+ .screenshot-ui-capture-button-circle {
+ background-color: darken($osd_fg_color, 15%);
+ }
+ }
+
+ &:active {
+ .screenshot-ui-capture-button-circle {
+ background-color: darken($osd_fg_color, 50%);
+ }
+ }
+
+ &:cast {
+ .screenshot-ui-capture-button-circle {
+ background-color: $screenshot_ui_button_red;
+ }
+ &:hover, &:focus {
+ .screenshot-ui-capture-button-circle {
+ background-color: lighten($screenshot_ui_button_red, 5%);
+ }
+ }
+ &:active {
+ .screenshot-ui-capture-button-circle {
+ background-color: darken($screenshot_ui_button_red, 7%);
+ }
+ }
+ }
+}
+
+.screenshot-ui-shot-cast-container {
+ background-color: lighten($osd_bg_color,5%);
+ border-radius: $modal_radius;
+ padding: $screenshot_ui_shot_cast_spacing;
+ spacing: $screenshot_ui_shot_cast_spacing;
+
+ &:ltr { margin-left: $screenshot_ui_shot_cast_margin - $screenshot_ui_panel_padding;}
+ &:rtl { margin-right: $screenshot_ui_shot_cast_margin - $screenshot_ui_panel_padding;}
+}
+
+.screenshot-ui-shot-cast-button {
+ padding: $base_padding $base_padding*2;
+ background-color: transparent;
+ &:hover, &:focus { background-color: lighten($osd_bg_color, 10%);}
+ &:active { background-color: lighten($active_bg_color,5%);}
+ &:checked { background-color: white;color: black;}
+
+ border-radius: $modal_radius - $screenshot_ui_shot_cast_spacing;
+
+ StIcon { icon-size: $base_icon_size;}
+}
+
+.screenshot-ui-show-pointer-button {
+ @extend %osd_button;
+ border-radius: 99px;
+ padding: $base_padding * 2 !important;
+ StIcon { icon-size: $base_icon_size;}
+}
+
+.screenshot-ui-area-indicator-shade {
+ background-color: rgba(0,0,0,.3);
+}
+
+.screenshot-ui-area-selector {
+ .screenshot-ui-area-indicator-shade {
+ background-color: rgba(0,0,0,.5);
+ }
+
+ .screenshot-ui-area-indicator-selection {
+ border: 2px white;
+ }
+}
+
+.screenshot-ui-area-selector-handle {
+ border-radius: 99px;
+ background-color: white;
+ box-shadow: 0 1px 3px 2px rgba(0,0,0,0.2);
+ width: 24px;
+ height: 24px;
+}
+
+.screenshot-ui-window-selector {
+ background-color: $system_bg_color;
+
+ .screenshot-ui-window-selector-window-container {
+ margin: 100px;
+ }
+
+ &:primary-monitor {
+ .screenshot-ui-window-selector-window-container {
+ // Make some room for the panel.
+ margin-bottom: 200px;
+ }
+ }
+}
+
+.screenshot-ui-window-selector-window-border {
+ transition-duration: 200ms;
+ border-radius: $modal_radius;
+ border: 6px transparent;
+}
+
+.screenshot-ui-window-selector-check {
+ transition-duration: 200ms;
+ color: transparent;
+ border-radius: 99px;
+ border-width: 12px;
+ icon-size: 24px;
+}
+
+.screenshot-ui-window-selector-window {
+ &:hover {
+ .screenshot-ui-window-selector-window-border {
+ border-color: darken($selected_bg_color, 15%);
+ }
+ }
+ &:checked {
+ .screenshot-ui-window-selector-window-border {
+ border-color: $selected_bg_color;
+ background-color: transparentize($selected_bg_color, 0.8);
+ }
+
+ .screenshot-ui-window-selector-check {
+ color: $selected_fg_color;
+ background-color: $selected_bg_color;
+ }
+ }
+}
+
+.screenshot-ui-screen-selector {
+ transition-duration: 200ms;
+ background-color: rgba(0,0,0,.5);
+
+ &:hover { background-color: rgba(0,0,0,.3);}
+ &:active { background-color: rgba(0,0,0,.7);}
+ &:checked {
+ background-color: transparent;
+ border: 2px white;
+ }
+}
+
+.screenshot-ui-tooltip {
+ color: $osd_fg_color;
+ background-color: $osd_bg_color;
+ border-radius: 99px;
+ padding: $base_padding $base_padding * 2;
+ text-align: center;
+ -y-offset: 24px;
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_scrollbars.scss b/data/theme/42/gnome-shell-sass/widgets/_scrollbars.scss
new file mode 100644
index 00000000..77cde653
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_scrollbars.scss
@@ -0,0 +1,29 @@
+/* Scrollbars */
+
+StScrollView {
+ &.vfade { -st-vfade-offset: 68px; }
+ &.hfade { -st-hfade-offset: 68px; }
+}
+
+StScrollBar {
+ padding: 0;
+
+ StScrollView & {
+ min-width: 8px;
+ min-height: 8px;
+ }
+
+ StBin#trough {
+ border-radius: 0;
+ background-color: transparent;
+ }
+
+ StButton#vhandle, StButton#hhandle {
+ border-radius: 8px;
+ background-color: mix($fg_color, $bg_color, 30%);
+ border: 3px solid transparent; //would be nice to margin or at least to transparent
+ transition: 500ms all ease;
+ &:hover {background-color: mix($fg_color, $bg_color, 50%);}
+ &:active {background-color: mix($fg_color, $bg_color, 40%);}
+ }
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_search-entry.scss b/data/theme/42/gnome-shell-sass/widgets/_search-entry.scss
new file mode 100644
index 00000000..faca50e4
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_search-entry.scss
@@ -0,0 +1,26 @@
+// Search entry
+
+$search_entry_width: 320px;
+$search_entry_height: 36px;
+
+%search_entry,
+.search-entry {
+ border-radius: $search_entry_height * 0.5; // half the height
+
+ margin-top: $base_padding * 2;
+ margin-bottom: $base_padding;
+ padding: $base_padding+1 $base_padding+3;
+ width: $search_entry_width;
+
+ @include entry(normal);
+ &:hover { @include entry(hover);}
+ &:focus { @include entry(focus);}
+ &:insensitive { @include entry(insensitive);}
+
+ .search-entry-icon {
+ color: inherit;
+ icon-size: $base_icon_size;
+ margin-top: 2px; // center vertically
+ padding: 0 4px;
+ }
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_search-results.scss b/data/theme/42/gnome-shell-sass/widgets/_search-results.scss
new file mode 100644
index 00000000..644c53db
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_search-results.scss
@@ -0,0 +1,96 @@
+/* Search */
+
+// search overview container
+#searchResults {
+ margin: 0 $base_margin;
+}
+
+#searchResultsContent {
+ max-width: 1072px;
+}
+
+// search results sections "the boxes"
+.search-section {
+ // This should be equal to #searchResultsContent spacing
+ spacing: $base_padding*3;
+
+ // separator (unstyled)
+ .search-section-separator {
+ height: $base_margin*2; // use it as a spacer
+ background-color: transparent;
+ }
+}
+
+// content
+.search-section-content {
+ background-color: lighten($system_bg_color, 5%);
+ border-radius: $modal_radius*1.5;
+ border: 1px solid $osd_outer_borders_color;
+ color: $osd_fg_color;
+ padding: $base_padding*2;
+ margin:0 $base_margin*3;
+}
+
+%search_section_content_item {
+ @include tile_button($osd_fg_color);
+ border-radius: $base_border_radius+3px;
+}
+
+// "no results" text
+.search-statustext {
+ @extend %title_1;
+}
+
+.grid-search-results {
+ spacing: $base_padding*5;
+ margin:0 $base_margin*3;
+}
+
+// Search results with icons
+.grid-search-result {
+ @extend .app-well-app;
+}
+
+// search result provider
+.search-provider-icon {
+ @extend %search_section_content_item;
+ &:ltr {margin-right: $base_margin;}
+ &:rtl {margin-left: $base_margin;}
+
+ // content
+ .list-search-provider-content {
+ spacing: $base_padding * 2;
+
+ // provider labels
+ .list-search-provider-details {
+ width: 120px;
+ color: $osd_fg_color;
+ }
+ }
+}
+
+// search results list
+.list-search-results {
+ spacing: $base_padding;
+}
+
+// search result listitem
+.list-search-result {
+ @extend %search_section_content_item;
+
+ // content
+ .list-search-result-content {
+ spacing: $base_padding;
+ }
+
+ // list item title (with leading icon)
+ .list-search-result-title {
+ spacing: $base_padding * 2;
+ // font-weight: bold;
+ }
+
+ // list item description
+ .list-search-result-description {
+ color: $osd_insensitive_fg_color;
+ }
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_slider.scss b/data/theme/42/gnome-shell-sass/widgets/_slider.scss
new file mode 100644
index 00000000..500249aa
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_slider.scss
@@ -0,0 +1,22 @@
+/* Slider */
+
+$slider_size: 16px;
+
+.slider {
+ // slider trough
+ -barlevel-height: 4px;
+ -barlevel-background-color: if($variant == 'light', transparentize($fg_color, 0.6), transparentize($fg_color, 0.8)); //background of the trough
+ -barlevel-border-width: 2px;
+ -barlevel-border-color: transparent; // trough border color
+ // fill style
+ -barlevel-active-background-color: $selected_bg_color;
+ -barlevel-active-border-color: transparent;
+ // overfill style (red in this case)
+ -barlevel-overdrive-color: $destructive_color;
+ -barlevel-overdrive-border-color: transparent; //trough border when red;
+ -barlevel-overdrive-separator-width:1px;
+ // slider handler
+ -slider-handle-radius: $slider_size * 0.5; // half the size of the size
+ -slider-handle-border-width: 0;
+ -slider-handle-border-color: transparent; // because 0 width
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_switcher-popup.scss b/data/theme/42/gnome-shell-sass/widgets/_switcher-popup.scss
new file mode 100644
index 00000000..cec6c9aa
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_switcher-popup.scss
@@ -0,0 +1,72 @@
+/* App Switcher */
+
+// same as dash
+$switcher_padding: $base_padding + 4px; // 10px
+$switcher_border_radius: $modal_radius + 8px;
+
+
+// the full screen container of the switcher
+.switcher-popup {
+ padding: 0;
+ spacing: $base_padding * 4;
+}
+
+// switcher onscreen panel
+.switcher-list {
+ @extend %osd_panel;
+ padding: $switcher_padding;
+ border-radius: $switcher_border_radius;
+ box-shadow: 0 8px 8px 0 rgba(0,0,0,0.1);
+
+ // container for items in list
+ .switcher-list-item-container {
+ spacing: $base_padding * 2;
+ }
+
+ // each item in the list
+ .item-box {
+ @include tile_button($osd_fg_color);
+ // override over style so mouse doesn't steal focus
+ &:hover {background: none;}
+ }
+
+ .separator {
+ width: 1px;
+ background: $borders_color;
+ }
+
+ // container of thumbnails
+ .thumbnail-box {
+ padding: 2px;
+ spacing: $base_padding;
+ }
+
+ // window thumbnail itself
+ .thumbnail {
+ width: 256px; // equal to THUMBNAIL_DEFAULT_SIZE in altTab.js
+ border-radius:$base_border_radius;
+ }
+}
+
+// arrow if app has multiple windows
+.switcher-arrow {
+ border-color: transparentize($osd_fg_color, 0.2);
+ color: transparentize($osd_fg_color, 0.2);
+
+ &:highlighted {
+ border-color: $osd_fg_color;
+ color: $osd_fg_color;
+ }
+}
+
+// Input Source Switcher
+.input-source-switcher-symbol {
+ font-size: 34pt;
+ width: 96px;
+ height: 96px;
+}
+
+// Window cycler highlight
+.cycler-highlight {
+ border: 5px solid $selected_bg_color;
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_switches.scss b/data/theme/42/gnome-shell-sass/widgets/_switches.scss
new file mode 100644
index 00000000..b6d8fe83
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_switches.scss
@@ -0,0 +1,16 @@
+/* Switches */
+
+// these are equal to the size of the SVG assets
+$switch_height: 26px;
+$switch_width: 48px;
+
+.toggle-switch {
+ color: $fg_color;
+ height: $switch_height;
+ width: $switch_width;
+ background-size: contain;
+ background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/toggle-off-light.svg"),url("resource:///org/gnome/shell/theme/toggle-off.svg"));
+ &:checked {
+ background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/toggle-on-light.svg"),url("resource:///org/gnome/shell/theme/toggle-on.svg"));
+ }
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_window-picker.scss b/data/theme/42/gnome-shell-sass/widgets/_window-picker.scss
new file mode 100644
index 00000000..c71adad5
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_window-picker.scss
@@ -0,0 +1,52 @@
+/* Window Picker */
+
+$window_picker_spacing: $base_padding; // 6px
+$window_picker_padding: $base_padding * 2; // 12px
+
+$window_thumbnail_label_color: transparentize($osd_bg_color, 0.4);
+
+$window_close_button_color: transparentize(lighten($osd_bg_color, 7%), .02);
+$window_close_button_size: 30px;
+$window_close_button_padding: 3px;
+
+// Window picker
+.window-picker {
+ // Space between window thumbnails
+ spacing: $window_picker_spacing;
+}
+
+// Window titles
+.window-caption {
+ color: $osd_fg_color;
+ background-color: lighten($osd_bg_color, 5%);
+ border-radius: 99px;
+ padding: $base_padding $base_padding * 2;
+}
+
+// Close button
+.window-close {
+ background-color: $window_close_button_color;
+ color: $osd_fg_color;
+ border-radius: 99px;
+ box-shadow: 0 2px 4px 0 $shadow_color;
+ padding: $window_close_button_padding;
+ height: $window_close_button_size;
+ width: $window_close_button_size;
+ transition-duration: 100ms;
+
+ & StIcon { icon-size: 24px; } // uses non standard icon size
+
+ &:hover {
+ background-color: lighten($window_close_button_color, 7%);
+ }
+
+ &:active {
+ background-color: lighten($window_close_button_color, 13%);
+ }
+}
+
+.workspace-background {
+ // keep in sync with BACKGROUND_CORNER_RADIUS_PIXELS in workspace.js
+ border-radius: 30px;
+ box-shadow: 0 4px 16px 4px transparentize(darken($osd_bg_color, 30%), 0.7);
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_workspace-switcher.scss b/data/theme/42/gnome-shell-sass/widgets/_workspace-switcher.scss
new file mode 100644
index 00000000..f06130ba
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_workspace-switcher.scss
@@ -0,0 +1,25 @@
+/* Workspace Switcher */
+
+$ws_indicator_height: $large_icon_size;
+$ws_dot_active: $ws_indicator_height / 3;
+$ws_dot_inactive: $ws_indicator_height / 6;
+
+.workspace-switcher {
+ @extend %osd_panel;
+ margin-bottom: 4em;
+ spacing: $base_padding * 2;
+ padding: $base_padding * 2 $base_padding * 3;
+}
+
+.ws-switcher-indicator {
+ background-color: transparentize($osd_fg_color,0.5);
+ padding: $ws_dot_inactive / 2;
+ margin: ($ws_indicator_height - $ws_dot_inactive) / 2;
+ border-radius: $ws_indicator_height;
+
+ &:active {
+ background-color: $osd_fg_color;
+ padding: $ws_dot_active / 2;
+ margin: ($ws_indicator_height - $ws_dot_active) / 2;
+ }
+}
diff --git a/data/theme/42/gnome-shell-sass/widgets/_workspace-thumbnails.scss b/data/theme/42/gnome-shell-sass/widgets/_workspace-thumbnails.scss
new file mode 100644
index 00000000..0a1867cc
--- /dev/null
+++ b/data/theme/42/gnome-shell-sass/widgets/_workspace-thumbnails.scss
@@ -0,0 +1,28 @@
+/* Workspace pager */
+
+// thumbnails in overview
+.workspace-thumbnails {
+ visible-width: 32px; //amount visible before hover
+ spacing: $base_padding;
+ padding: $base_padding;
+
+ .workspace-thumbnail {
+ @extend %overview_panel;
+ border-radius: 3px;
+ }
+
+ // drag and drop indicator
+ .placeholder {
+ background-image: url("resource:///org/gnome/shell/theme/workspace-placeholder.svg");
+ background-size: contain;
+ width: 18px;
+ }
+}
+
+// selected indicator
+.workspace-thumbnail-indicator {
+ border: 3px solid $selected_bg_color;
+ border-radius: 3px;
+ padding: 0px;
+ // background-color: transparentize($selected_bg_color, 0.9);
+}
diff --git a/data/theme/42/gnome-shell-start.svg b/data/theme/42/gnome-shell-start.svg
new file mode 100644
index 00000000..af139cf0
--- /dev/null
+++ b/data/theme/42/gnome-shell-start.svg
@@ -0,0 +1,343 @@
+
+
diff --git a/data/theme/42/gnome-shell.scss b/data/theme/42/gnome-shell.scss
new file mode 100644
index 00000000..8ee49991
--- /dev/null
+++ b/data/theme/42/gnome-shell.scss
@@ -0,0 +1,6 @@
+$variant: 'dark';
+
+@import "gnome-shell-sass/_colors"; //use gtk colors
+@import "gnome-shell-sass/_drawing";
+@import "gnome-shell-sass/_common";
+@import "gnome-shell-sass/_widgets";
diff --git a/data/theme/42/meson.build b/data/theme/42/meson.build
new file mode 100644
index 00000000..26471b67
--- /dev/null
+++ b/data/theme/42/meson.build
@@ -0,0 +1,62 @@
+theme_sources = files([
+ 'gnome-shell-high-contrast.scss',
+ 'gnome-shell.scss',
+ 'gnome-shell-sass/_colors.scss',
+ 'gnome-shell-sass/_common.scss',
+ 'gnome-shell-sass/_drawing.scss',
+ 'gnome-shell-sass/_high-contrast-colors.scss',
+ 'gnome-shell-sass/_widgets.scss',
+ 'gnome-shell-sass/widgets/_a11y.scss',
+ 'gnome-shell-sass/widgets/_app-grid.scss',
+ 'gnome-shell-sass/widgets/_base.scss',
+ 'gnome-shell-sass/widgets/_buttons.scss',
+ 'gnome-shell-sass/widgets/_calendar.scss',
+ 'gnome-shell-sass/widgets/_check-box.scss',
+ 'gnome-shell-sass/widgets/_corner-ripple.scss',
+ 'gnome-shell-sass/widgets/_dash.scss',
+ 'gnome-shell-sass/widgets/_dialogs.scss',
+ 'gnome-shell-sass/widgets/_entries.scss',
+ 'gnome-shell-sass/widgets/_hotplug.scss',
+ 'gnome-shell-sass/widgets/_ibus-popup.scss',
+ 'gnome-shell-sass/widgets/_keyboard.scss',
+ 'gnome-shell-sass/widgets/_login-dialog.scss',
+ 'gnome-shell-sass/widgets/_looking-glass.scss',
+ 'gnome-shell-sass/widgets/_message-list.scss',
+ 'gnome-shell-sass/widgets/_misc.scss',
+ 'gnome-shell-sass/widgets/_network-dialog.scss',
+ 'gnome-shell-sass/widgets/_notifications.scss',
+ 'gnome-shell-sass/widgets/_osd.scss',
+ 'gnome-shell-sass/widgets/_overview.scss',
+ 'gnome-shell-sass/widgets/_panel.scss',
+ 'gnome-shell-sass/widgets/_popovers.scss',
+ 'gnome-shell-sass/widgets/_screen-shield.scss',
+ 'gnome-shell-sass/widgets/_screenshot.scss',
+ 'gnome-shell-sass/widgets/_scrollbars.scss',
+ 'gnome-shell-sass/widgets/_search-entry.scss',
+ 'gnome-shell-sass/widgets/_search-results.scss',
+ 'gnome-shell-sass/widgets/_slider.scss',
+ 'gnome-shell-sass/widgets/_switcher-popup.scss',
+ 'gnome-shell-sass/widgets/_switches.scss',
+ 'gnome-shell-sass/widgets/_window-picker.scss',
+ 'gnome-shell-sass/widgets/_workspace-switcher.scss',
+ 'gnome-shell-sass/widgets/_workspace-thumbnails.scss'
+])
+
+stylesheets = [
+ 'gnome-shell-high-contrast.css',
+ 'gnome-shell.css'
+]
+
+foreach stylesheet: stylesheets
+ if not fs.exists(stylesheet)
+ sassc = find_program('sassc')
+ theme_deps += custom_target(stylesheet,
+ input: fs.replace_suffix(stylesheet, '.scss'),
+ output: stylesheet,
+ command: [
+ sassc, '-a', '@INPUT@', '@OUTPUT@'
+ ],
+ depend_files: theme_sources)
+ endif
+endforeach
+
diff --git a/data/theme/42/pad-osd.css b/data/theme/42/pad-osd.css
new file mode 100644
index 00000000..31c23772
--- /dev/null
+++ b/data/theme/42/pad-osd.css
@@ -0,0 +1,30 @@
+.Leader {
+ stroke-width: .5 !important;
+ stroke: #535353;
+ fill: none !important;
+}
+
+.Button {
+ stroke-width: .25;
+ stroke: #ededed;
+ fill: #ededed;
+}
+
+.Ring {
+ stroke-width: .5 !important;
+ stroke: #535353 !important;
+ fill: none !important;
+}
+
+.Label {
+ stroke: none !important;
+ stroke-width: .1 !important;
+ font-size: .1 !important;
+ fill: transparent !important;
+}
+
+.TouchStrip, .TouchRing {
+ stroke-width: .1 !important;
+ stroke: #ededed !important;
+ fill: #535353 !important;
+}
diff --git a/data/theme/42/process-working.svg b/data/theme/42/process-working.svg
new file mode 100644
index 00000000..920a67d2
--- /dev/null
+++ b/data/theme/42/process-working.svg
@@ -0,0 +1,3084 @@
+
+
+
+
diff --git a/data/theme/42/running-indicator.svg b/data/theme/42/running-indicator.svg
new file mode 100644
index 00000000..ebe7ecfc
--- /dev/null
+++ b/data/theme/42/running-indicator.svg
@@ -0,0 +1,130 @@
+
+
+
+
diff --git a/data/theme/42/toggle-off-hc.svg b/data/theme/42/toggle-off-hc.svg
new file mode 100644
index 00000000..036794f5
--- /dev/null
+++ b/data/theme/42/toggle-off-hc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/42/toggle-off-light.svg b/data/theme/42/toggle-off-light.svg
new file mode 100644
index 00000000..14cb4246
--- /dev/null
+++ b/data/theme/42/toggle-off-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/42/toggle-off.svg b/data/theme/42/toggle-off.svg
new file mode 100644
index 00000000..323f73b9
--- /dev/null
+++ b/data/theme/42/toggle-off.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/42/toggle-on-hc.svg b/data/theme/42/toggle-on-hc.svg
new file mode 100644
index 00000000..2d553c64
--- /dev/null
+++ b/data/theme/42/toggle-on-hc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/42/toggle-on-light.svg b/data/theme/42/toggle-on-light.svg
new file mode 100644
index 00000000..f3dbf315
--- /dev/null
+++ b/data/theme/42/toggle-on-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/42/toggle-on.svg b/data/theme/42/toggle-on.svg
new file mode 100644
index 00000000..215760fa
--- /dev/null
+++ b/data/theme/42/toggle-on.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/42/workspace-placeholder.svg b/data/theme/42/workspace-placeholder.svg
new file mode 100644
index 00000000..ff5dc92c
--- /dev/null
+++ b/data/theme/42/workspace-placeholder.svg
@@ -0,0 +1,119 @@
+
+
diff --git a/data/theme/43/calendar-today-light.svg b/data/theme/43/calendar-today-light.svg
new file mode 100644
index 00000000..b63f6e03
--- /dev/null
+++ b/data/theme/43/calendar-today-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/43/calendar-today.svg b/data/theme/43/calendar-today.svg
new file mode 100644
index 00000000..daf86ec0
--- /dev/null
+++ b/data/theme/43/calendar-today.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/43/checkbox-focused.svg b/data/theme/43/checkbox-focused.svg
new file mode 100644
index 00000000..01eb733d
--- /dev/null
+++ b/data/theme/43/checkbox-focused.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/43/checkbox-off-focused-light.svg b/data/theme/43/checkbox-off-focused-light.svg
new file mode 100644
index 00000000..47673776
--- /dev/null
+++ b/data/theme/43/checkbox-off-focused-light.svg
@@ -0,0 +1,220 @@
+
+
+
+
diff --git a/data/theme/43/checkbox-off-focused.svg b/data/theme/43/checkbox-off-focused.svg
new file mode 100644
index 00000000..d5a042e9
--- /dev/null
+++ b/data/theme/43/checkbox-off-focused.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/43/checkbox-off-light.svg b/data/theme/43/checkbox-off-light.svg
new file mode 100644
index 00000000..5d37c85d
--- /dev/null
+++ b/data/theme/43/checkbox-off-light.svg
@@ -0,0 +1,211 @@
+
+
+
+
diff --git a/data/theme/43/checkbox-off.svg b/data/theme/43/checkbox-off.svg
new file mode 100644
index 00000000..50eece1b
--- /dev/null
+++ b/data/theme/43/checkbox-off.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/43/checkbox.svg b/data/theme/43/checkbox.svg
new file mode 100644
index 00000000..da385b62
--- /dev/null
+++ b/data/theme/43/checkbox.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/43/dash-placeholder.svg b/data/theme/43/dash-placeholder.svg
new file mode 100644
index 00000000..cbae148a
--- /dev/null
+++ b/data/theme/43/dash-placeholder.svg
@@ -0,0 +1,84 @@
+
+
+
+
diff --git a/data/theme/43/gnome-shell-high-contrast.scss b/data/theme/43/gnome-shell-high-contrast.scss
new file mode 100644
index 00000000..55745f1a
--- /dev/null
+++ b/data/theme/43/gnome-shell-high-contrast.scss
@@ -0,0 +1,38 @@
+$variant: 'dark';
+
+@import "gnome-shell-sass/_high-contrast-colors"; //use gtk colors
+@import "gnome-shell-sass/_drawing";
+@import "gnome-shell-sass/_common";
+@import "gnome-shell-sass/_widgets";
+
+//force symbolic icons
+stage {
+ -st-icon-style: symbolic;
+}
+
+.toggle-switch { width: 48px; }
+.toggle-switch {
+ background-image: url("resource:///org/gnome/shell/theme/toggle-off-hc.svg");
+ &:checked { background-image: url("resource:///org/gnome/shell/theme/toggle-on-hc.svg"); }
+}
+
+//force opaque panel
+#panel {
+ &.login-screen,
+ &.unlock-screen,
+ &:overview {
+ background-color: #000;
+ }
+
+ .panel-button {
+ color: #fff !important;
+ }
+}
+
+//thumbnail app icons no dropshadow and forced color
+.window-picker .icon-dropshadow {
+ icon-shadow: none;
+ background-color: $osd_bg_color;
+ padding: $base_padding * 2;
+ border-radius: $modal_radius;
+}
diff --git a/data/theme/43/gnome-shell-sass/COPYING b/data/theme/43/gnome-shell-sass/COPYING
new file mode 100644
index 00000000..e55e5b8a
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/COPYING
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ , 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/data/theme/43/gnome-shell-sass/_colors.scss b/data/theme/43/gnome-shell-sass/_colors.scss
new file mode 100644
index 00000000..c42a9554
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/_colors.scss
@@ -0,0 +1,74 @@
+// When color definition differs for dark and light variant,
+// it gets @if-ed depending on $variant
+
+@import '_palette.scss';
+
+$is_highcontrast: "false";
+
+$_dark_base_color: darken(desaturate(#241f31, 100%), 2%);
+
+$base_color: if($variant == 'light', #fff, $_dark_base_color);
+$bg_color: if($variant == 'light', #f6f5f4, lighten($base_color, 5%));
+$fg_color: if($variant == 'light', transparentize(black, .2), white);
+
+$selected_fg_color: #fff;
+$selected_bg_color: #3584e4;
+$selected_borders_color: if($variant== 'light', darken($selected_bg_color, 15%), darken($selected_bg_color, 30%));
+
+$borders_color: if($variant == 'light', transparentize($fg_color, .5), transparentize($fg_color, .9));
+$borders_edge: if($variant == 'light', rgba(255,255,255,0.8), lighten($bg_color, 5%));
+
+$link_color: if($variant == 'light', darken($selected_bg_color, 10%), lighten($selected_bg_color, 20%));
+$link_visited_color: if($variant == 'light', darken($selected_bg_color, 20%), lighten($selected_bg_color, 10%));
+
+$warning_color: if($variant == 'light', $yellow_5, #cd9309);
+$error_color: if($variant == 'light', $red_3, $red_4);
+$success_color: if($variant == 'light', $green_4, $green_5);
+$destructive_color: $error_color;
+
+$osd_fg_color: white;
+$osd_bg_color: $_dark_base_color; //hardcoded for both light & dark
+$osd_insensitive_bg_color: transparentize(mix($osd_fg_color, opacify($osd_bg_color, 1), 10%), 0.5);
+$osd_insensitive_fg_color: if($variant == 'light', mix($osd_fg_color, $osd_bg_color, 80%), mix($osd_fg_color, $osd_bg_color, 70%));
+$osd_borders_color: transparentize(black, 0.3);
+$osd_outer_borders_color: transparentize($osd_fg_color, 0.98);
+
+$shadow_color: if($variant == 'light', rgba(0,0,0,0.1), rgba(0,0,0,0.2));
+
+// button
+$button_mix_factor: 5%;
+
+// cards
+$card_bg_color: if($variant == 'light', darken($bg_color, 5%), lighten($bg_color, 2%));
+
+// notifications
+$bubble_buttons_color: if($variant == 'light', darken($bg_color, 12%), lighten($bg_color, 10%));
+
+// overview background color
+$system_bg_color: $base_color;
+
+//insensitive state derived colors
+$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
+$insensitive_bg_color: mix($bg_color, $base_color, 60%);
+$insensitive_borders_color: mix($borders_color, $base_color, 60%);
+
+//colors for the backdrop state, derived from the main colors.
+$backdrop_base_color: if($variant =='light', darken($base_color,1%), lighten($base_color,1%));
+$backdrop_bg_color: $bg_color;
+$backdrop_fg_color: mix($fg_color, $backdrop_bg_color, 80%);
+$backdrop_insensitive_color: if($variant =='light', darken($backdrop_bg_color,15%), lighten($backdrop_bg_color,15%));
+$backdrop_borders_color: mix($borders_color, $bg_color, 90%);
+$backdrop_dark_fill: mix($backdrop_borders_color,$backdrop_bg_color, 35%);
+
+
+// derived checked colors
+$checked_bg_color: if($variant=='light', darken($bg_color, 7%), lighten($bg_color, 7%));
+$checked_fg_color: if($variant=='light', darken($fg_color, 7%), lighten($fg_color, 7%));
+
+// derived hover colors
+$hover_bg_color: if($variant=='light', darken($bg_color, 3%), lighten($bg_color, 10%));
+$hover_fg_color: if($variant=='light', darken($fg_color, 5%), lighten($fg_color, 10%));
+
+// derived active colors
+$active_bg_color: if($variant=='light', darken($bg_color, 5%), lighten($bg_color, 12%));
+$active_fg_color: if($variant=='light', darken($fg_color, 5%), lighten($fg_color, 12%));
diff --git a/data/theme/43/gnome-shell-sass/_colors.txt b/data/theme/43/gnome-shell-sass/_colors.txt
new file mode 100644
index 00000000..3ef66462
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/_colors.txt
@@ -0,0 +1,74 @@
+// When color definition differs for dark and light variant,
+// it gets @if-ed depending on $variant
+
+@import '_palette.scss';
+
+$is_highcontrast: "false";
+
+$_dark_base_color: darken(desaturate({{window_bg_color}}, 100%), 2%);
+
+$base_color: if($variant == 'light', #fff, $_dark_base_color);
+$bg_color: if($variant == 'light', #f6f5f4, lighten($base_color, 5%));
+$fg_color: if($variant == 'light', transparentize(black, .2), white);
+
+$selected_fg_color: #fff;
+$selected_bg_color: {{accent_bg_color}};
+$selected_borders_color: if($variant== 'light', darken($selected_bg_color, 15%), darken($selected_bg_color, 30%));
+
+$borders_color: if($variant == 'light', transparentize($fg_color, .5), transparentize($fg_color, .9));
+$borders_edge: if($variant == 'light', rgba(255,255,255,0.8), lighten($bg_color, 5%));
+
+$link_color: if($variant == 'light', darken($selected_bg_color, 10%), lighten($selected_bg_color, 20%));
+$link_visited_color: if($variant == 'light', darken($selected_bg_color, 20%), lighten($selected_bg_color, 10%));
+
+$warning_color: if($variant == 'light', $yellow_5, #cd9309);
+$error_color: if($variant == 'light', $red_3, $red_4);
+$success_color: if($variant == 'light', $green_4, $green_5);
+$destructive_color: $error_color;
+
+$osd_fg_color: white;
+$osd_bg_color: $_dark_base_color; //hardcoded for both light & dark
+$osd_insensitive_bg_color: transparentize(mix($osd_fg_color, opacify($osd_bg_color, 1), 10%), 0.5);
+$osd_insensitive_fg_color: if($variant == 'light', mix($osd_fg_color, $osd_bg_color, 80%), mix($osd_fg_color, $osd_bg_color, 70%));
+$osd_borders_color: transparentize(black, 0.3);
+$osd_outer_borders_color: transparentize($osd_fg_color, 0.98);
+
+$shadow_color: if($variant == 'light', rgba(0,0,0,0.1), rgba(0,0,0,0.2));
+
+// button
+$button_mix_factor: 5%;
+
+// cards
+$card_bg_color: if($variant == 'light', darken($bg_color, 5%), lighten($bg_color, 2%));
+
+// notifications
+$bubble_buttons_color: if($variant == 'light', darken($bg_color, 12%), lighten($bg_color, 10%));
+
+// overview background color
+$system_bg_color: $base_color;
+
+//insensitive state derived colors
+$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
+$insensitive_bg_color: mix($bg_color, $base_color, 60%);
+$insensitive_borders_color: mix($borders_color, $base_color, 60%);
+
+//colors for the backdrop state, derived from the main colors.
+$backdrop_base_color: if($variant =='light', darken($base_color,1%), lighten($base_color,1%));
+$backdrop_bg_color: $bg_color;
+$backdrop_fg_color: mix($fg_color, $backdrop_bg_color, 80%);
+$backdrop_insensitive_color: if($variant =='light', darken($backdrop_bg_color,15%), lighten($backdrop_bg_color,15%));
+$backdrop_borders_color: mix($borders_color, $bg_color, 90%);
+$backdrop_dark_fill: mix($backdrop_borders_color,$backdrop_bg_color, 35%);
+
+
+// derived checked colors
+$checked_bg_color: if($variant=='light', darken($bg_color, 7%), lighten($bg_color, 7%));
+$checked_fg_color: if($variant=='light', darken($fg_color, 7%), lighten($fg_color, 7%));
+
+// derived hover colors
+$hover_bg_color: if($variant=='light', darken($bg_color, 3%), lighten($bg_color, 10%));
+$hover_fg_color: if($variant=='light', darken($fg_color, 5%), lighten($fg_color, 10%));
+
+// derived active colors
+$active_bg_color: if($variant=='light', darken($bg_color, 5%), lighten($bg_color, 12%));
+$active_fg_color: if($variant=='light', darken($fg_color, 5%), lighten($fg_color, 12%));
diff --git a/data/theme/43/gnome-shell-sass/_common.scss b/data/theme/43/gnome-shell-sass/_common.scss
new file mode 100644
index 00000000..f2fe78a3
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/_common.scss
@@ -0,0 +1,231 @@
+//This is the RIGHT PLACE to edit the stylesheet
+
+//let's start by telling people not to edit the generated CSS:
+$cakeisalie: "This stylesheet is generated, DO NOT EDIT";
+/* #{$cakeisalie} */
+
+/* Copyright 2009, 2015 Red Hat, Inc.
+ *
+ * Portions adapted from Mx's data/style/default.css
+ * Copyright 2009 Intel Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU Lesser General Public License,
+ * version 2.1, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+/* Global Values */
+
+// padding, margin and spacing
+$base_padding: 6px;
+$base_margin: 4px;
+
+// border radii
+$base_border_radius: 8px;
+
+// radii of things that display over other things, e.g. popovers
+$modal_radius: $base_border_radius*2; // 24px
+
+// Chroma key to flag when a background-color is always occluded, not visible.
+// This allows any box-shadow behind it to be rendered more efficiently by
+// omitting the middle rectangle.
+$invisible_occluded_bg_color: rgba(3,2,1,0);
+
+// fonts
+$base_font_size: 11;
+$text_shadow_color: if($variant == 'light', rgba(255,255,255,0.3), rgba(0,0,0,0.2));
+
+// icons
+$base_icon_size: 1.09em;
+$large_icon_size: $base_icon_size*2; // 32px
+// $base_icon_size: 16px;
+
+// Stage
+stage {
+ @include fontsize($base_font_size);
+ color: $fg_color;
+}
+
+/* Common Stylings */
+
+// osd panels
+%osd_panel {
+ color: $osd_fg_color;
+ background-color: $osd_bg_color;
+ border: 1px solid $osd_outer_borders_color;
+ border-radius: 999px;
+ padding: $base_padding*2;
+}
+
+// Overview panels
+// for the dash and workspace switcher
+%overview_panel {
+ color: $osd_fg_color;
+ background-color: transparentize($osd_fg_color, 0.9);
+}
+
+// icon tiles
+%tile {
+ border-radius: $base_border_radius * 2; // 16px
+ padding: $base_padding;
+ spacing: $base_padding;
+ border: 2px solid transparent;
+ transition-duration: 200ms;
+ text-align: center;
+}
+
+// dialogs
+%bubble_panel {
+ color: $fg_color;
+ background-color: $bg_color;
+ border-radius: $base_border_radius*1.25 + 1px;
+ border: 1px solid $borders_edge;
+}
+
+// normal button styling
+%button {
+ border-radius: $base_border_radius - 2px; // 6px
+ border-style: solid;
+ border-width: 1px;
+ font-weight: bold;
+ padding: $base_padding*.5 $base_padding*4;
+
+ @include button(normal);
+ &:focus { @include button(focus);}
+ &:hover { @include button(hover);}
+ &:insensitive { @include button(insensitive);}
+ &:active { @include button(active);}
+ &:checked { @include button(checked);}
+}
+
+// normal icon-only button
+%icon_button {
+ border-radius: 99px;
+ border-style: solid;
+ border-width: 1px;
+ font-weight: bold;
+ padding: $base_padding*2;
+
+ @include button(normal);
+ &:focus { @include button(focus);}
+ &:hover { @include button(hover);}
+ &:insensitive { @include button(insensitive);}
+ &:active { @include button(active);}
+ &:checked { @include button(checked);}
+
+ & > StIcon { icon-size: $base_icon_size; }
+}
+
+// buttons in dialogs/notifications
+// lighter in color and have a greater radius
+
+$bubble_button_radius:$base_border_radius*1.25;
+
+%bubble_button {
+ padding: $base_padding * 2;
+ font-weight: bold !important;
+
+ &:ltr {margin-right: 1px;}
+ &:rtl {margin-left: 1px;}
+
+ @include button(normal, $c:$bubble_buttons_color);
+ &:insensitive { @include button(insensitive, $c:$bubble_buttons_color);}
+ &:focus { @include button(focus, $c:$bubble_buttons_color);}
+ &:hover { @include button(hover, $c:$bubble_buttons_color);}
+ &:active { @include button(active, $c:$bubble_buttons_color);}
+ &:checked { @include button(checked, $c:$bubble_buttons_color);}
+
+ &:first-child:ltr {
+ border-radius: 0 0 0 $bubble_button_radius;
+ }
+
+ &:last-child:ltr {
+ border-radius: 0 0 $bubble_button_radius 0;
+ margin-right: 0 !important;
+ }
+
+ &:first-child:rtl {
+ border-radius: 0 0 $bubble_button_radius 0;
+ }
+
+ &:last-child:rtl {
+ border-radius: 0 0 0 $bubble_button_radius;
+ margin-left: 0 !important;
+ }
+
+ &:first-child:last-child {
+ border-radius: 0 0 $bubble_button_radius $bubble_button_radius !important;
+ margin-left: 0 !important;
+ margin-right: 0 !important;
+ }
+}
+
+// buttons on OSD elements
+// that are undecorated by default and use OSD colors
+%osd_button {
+ @include button(undecorated);
+ &:insensitive { @include button(undecorated, $tc:$osd_fg_color, $c:$osd_bg_color);}
+ &:focus { @include button(focus, $tc:$osd_fg_color, $c:$osd_bg_color);}
+ &:hover { @include button(hover, $tc:$osd_fg_color, $c:$osd_bg_color);}
+ &:active { @include button(active, $tc:$osd_fg_color, $c:$osd_bg_color);}
+ &:outlined,&:checked { @include button(checked, $tc:$osd_fg_color, $c:$osd_bg_color);}
+}
+
+/* General Typography */
+
+%large_title {
+ font-weight: 300;
+ @include fontsize(24);
+}
+
+%title_1 {
+ font-weight: 800;
+ @include fontsize(20);
+}
+
+%title_2 {
+ font-weight: 800;
+ @include fontsize(15);
+}
+
+%title_3 {
+ font-weight: 700;
+ @include fontsize(15);
+}
+
+%title_4 {
+ font-weight: 700;
+ @include fontsize(13);
+}
+
+%heading {
+ font-weight: 700;
+ @include fontsize(11);
+}
+
+%caption_heading {
+ font-weight: 700;
+ @include fontsize(9);
+}
+
+%caption {
+ font-weight: 400;
+ @include fontsize(9);
+}
+
+%smaller {
+ font-weight: 400;
+ @include fontsize(8);
+}
+
+%monospace {font-family: monospace;}
+%numeric { font-feature-settings: "tnum";}
diff --git a/data/theme/43/gnome-shell-sass/_drawing.scss b/data/theme/43/gnome-shell-sass/_drawing.scss
new file mode 100644
index 00000000..8d9a3307
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/_drawing.scss
@@ -0,0 +1,333 @@
+// Drawing mixins
+
+// generic drawing of more complex things
+
+@function draw_widget_edge($c:$borders_edge) {
+// outer highlight "used" on most widgets
+ @return 0 1px $c;
+}
+
+// provide font size in rem, with px fallback
+@mixin fontsize($size: 24, $base: 16) {
+ font-size: round($size) + pt;
+ //font-size: ($size / $base) * 1rem;
+}
+
+@mixin draw_shadows($shadow1, $shadow2:none, $shadow3:none, $shadow4:none) {
+//
+// Helper function to stack up to 4 box-shadows;
+//
+ @if $shadow4!=none { box-shadow: $shadow1, $shadow2, $shadow3, $shadow4; }
+ @else if $shadow3!=none { box-shadow: $shadow1, $shadow2, $shadow3; }
+ @else if $shadow2!=none { box-shadow: $shadow1, $shadow2; }
+ @else { box-shadow: $shadow1; }
+}
+
+// entries
+
+@mixin entry($t, $fc:$selected_bg_color) {
+//
+// Entries drawing function
+//
+// $t: entry type
+// $fc: focus color
+//
+// possible $t values:
+// normal, focus, insensitive
+//
+
+ @if $t==normal {
+ background-color: lighten($bg_color, 5%);
+ color: transparentize($fg_color,0.3);
+ border: 2px solid lighten($bg_color, 5%);
+ }
+
+ @if $t==focus {
+ background-color: mix(lighten($bg_color, 5%), $selected_bg_color, 95%);
+ border-color: $fc;
+ color: $fg_color;
+ &:hover {}
+ }
+
+ @if $t==hover {
+ background-color:lighten($hover_bg_color, 5%);
+ border-color:lighten($hover_bg_color, 5%);
+ color: transparentize($fg_color,0.3);
+ }
+
+ @if $t==insensitive {
+ background-color:lighten($insensitive_bg_color, 5%);
+ border-color: lighten($insensitive_bg_color, 5%);
+ color: $insensitive_fg_color;
+ }
+}
+
+// On-screen Keyboard
+@mixin keyboard_key($t, $c:$osd_bg_color, $tc:$osd_fg_color) {
+//
+// Keyboard key drawing function
+//
+// $t: key type,
+// $c: base key color for colored* types
+// $tc: optional text color for colored* types
+//
+// possible $t values:
+// normal, hover, active, insensitive, insensitive-active,
+// backdrop, backdrop-active, backdrop-insensitive, backdrop-insensitive-active,
+// osd, osd-hover, osd-active, osd-insensitive, osd-backdrop, undecorated
+//
+
+ // normal key
+ @if $t==normal {
+ color: $tc;
+ background-color: lighten($c, 3%);
+ }
+
+ // focused key
+ @if $t==focus {
+ color: $tc;
+ background-color: mix(lighten($c, 3%), $selected_bg_color, 90%);
+ box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.4);
+ &:hover {
+ background-color: mix(lighten($c, 8%), $selected_bg_color, 90%);
+ box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.3);
+ }
+ &:active {
+ background-color: mix(lighten($c, 10%), $selected_bg_color, 90%);
+ box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.3);
+ }
+ }
+
+ // hover key
+ @else if $t==hover {
+ color: $tc;
+ background-color: lighten($c, 7%);
+ }
+
+ // active key
+ @else if $t==active {
+ color: $tc;
+ background-color: lighten($c, 10%);
+ }
+
+ // checked key
+ @else if $t==checked {
+ color: $tc;
+ background-color: lighten($c, 15%);
+ }
+
+ // insensitive key
+ @else if $t==insensitive {
+ color: $insensitive_fg_color;
+ background-color: $insensitive_bg_color;
+ }
+
+ // reset
+ @else if $t==undecorated {
+ background-color: transparent;
+ background-image: none;
+ }
+}
+
+//
+// Button drawing function
+//
+// $t: button type,
+// $c: base button colors, derived from fg_color
+// $tc: base button colors, derived from fg_color
+//
+// possible $t values:
+// normal, hover, active, insensitive, insensitive-active,
+// backdrop, backdrop-active, backdrop-insensitive, backdrop-insensitive-active,
+// osd, osd-hover, osd-active, osd-insensitive, osd-backdrop, undecorated
+//
+// since buttons are all flat an borderless now the mixin is simpler
+
+@mixin button($t, $tc:$fg_color, $c:$bg_color) {
+
+ $button_bg_color: mix($tc, $c, $button_mix_factor);
+ transition-duration: 100ms;
+
+ // normal button
+ @if $t==normal {
+ color: $tc;
+ background-color: $button_bg_color;
+ @if $is_highcontrast == "true" {
+ box-shadow: inset 0 0 0 1px $button_inset_color;
+ }
+ }
+
+ // focused button
+ @if $t==focus {
+ color: $tc;
+ background-color: mix($button_bg_color, $selected_bg_color, 90%);
+ box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.4) !important;
+ &:hover {
+ background-color: mix(lighten($button_bg_color, 3%), $selected_bg_color, 90%);
+ box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.3) !important;
+ }
+ &:active {
+ background-color: mix(lighten($button_bg_color, 6%), $selected_bg_color, 90%);
+ box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.3) !important;
+ }
+ }
+
+ // hover button
+ @else if $t==hover {
+ color: $tc;
+ background-color: lighten($button_bg_color, 3%);
+
+ @if $is_highcontrast == "true" {
+ box-shadow: inset 0 0 0 1px lighten($button_inset_color, 3%);
+ background-color: mix(lighten($button_bg_color, 3%), $button_inset_color, 10%);
+ }
+ }
+
+ // active button
+ @else if $t==active {
+ color: $tc;
+ background-color: lighten($button_bg_color, 6%);
+ @if $is_highcontrast == "true" {
+ box-shadow: inset 0 0 0 1px lighten($button_inset_color, 6%);
+ background-color: mix(lighten($button_bg_color, 6%), $button_inset_color, 10%);
+ }
+ }
+
+ // checked button
+ @else if $t==checked {
+ color: $tc;
+ background-color: lighten($button_bg_color, 9%);
+ @if $is_highcontrast == "true" {
+ box-shadow: inset 0 0 0 1px lighten($button_inset_color, 9%);
+ background-color: mix(lighten($button_bg_color, 9%), $button_inset_color, 10%);
+ }
+ &:hover { background-color: lighten($button_bg_color, 12%);}
+ &:active { background-color: lighten($button_bg_color, 15%);}
+ }
+
+ // insensitive button
+ @else if $t==insensitive {
+ color: transparentize($tc, 0.5);
+ background-color: transparentize($tc, .95);
+ @if $is_highcontrast == "true" {
+ box-shadow: inset 0 0 0 1px transparentize($button_inset_color, 0.5);
+ }
+ }
+
+ // default/suggested button
+ @else if $t==default {
+ background-color: $selected_bg_color;
+ color: $selected_fg_color;
+ box-shadow: none;
+ &:focus {
+ box-shadow: inset 0 0 0 2px lighten($selected_bg_color, 10%);
+ }
+ &:hover, &:focus {
+ background-color: lighten($selected_bg_color, 5%);
+ color: lighten($selected_fg_color, 5%);
+ }
+ &:active {
+ background-color: darken($selected_bg_color, 7%);
+ color: darken($selected_fg_color, 7%);
+ }
+ &:insensitive {
+ @include button(insensitive);
+ background-color: transparentize($selected_bg_color, .5);
+ color: transparentize($selected_fg_color, .5);
+ }
+ }
+
+ // reset
+ @else if $t==undecorated {
+ background-color: transparent;
+ background-color: none;
+ box-shadow: none;
+ &:insensitive {
+ @include button(insensitive);
+ background-color: transparent;
+ color: transparentize($selected_fg_color, .5);
+ }
+ }
+}
+
+// tile
+@mixin tile_button($color, $flat: true) {
+ @extend %tile;
+ @if $flat {
+ background-color: transparent;
+ } @else {
+ background-color: transparentize($color, .84);
+ }
+ &:hover { background-color: transparentize($color, .9);}
+ &:selected, &:focus {
+ background-color: transparentize($color, .87);
+ &:hover { background-color: transparentize($color, .84);}
+ &:active { background-color: transparentize($color, .87);}
+ }
+ &:active { background-color: transparentize($color, .84);}
+ &:outlined, &:checked {
+ background-color: transparentize($color, .81);
+ &:active { background-color: transparentize($color, .78);}
+ &:hover { background-color: transparentize($color, .75);}
+ }
+ &:drop {
+ border: 2px solid transparentize($selected_bg_color, .2); //already 2px transparent so no jumping
+ background-color: transparentize($selected_bg_color, .8);
+ }
+}
+
+// overview icon, dash, app grid
+@mixin overview_icon($color, $flat: true) {
+ transition-duration: 400ms;
+ .overview-icon { @extend %tile; }
+ @if $flat {
+ .overview-icon { background-color: transparent;}
+ } @else {
+ .overview-icon { background-color: transparentize($color, .81);}
+ }
+ &:hover .overview-icon { background-color: transparentize($color, .9);}
+
+ &:selected .overview-icon,
+ &:focus .overview-icon {
+ background-color: transparentize($color, .87);
+ &:hover .overview-icon { background-color: transparentize($color, .84);}
+ &:active .overview-icon { background-color: transparentize($color, .87);}
+ }
+ &:active .overview-icon { background-color: transparentize($color, .84);}
+ &:outlined .overview-icon,
+ &:checked .overview-icon {
+ background-color: transparentize($color, .81);
+ &:active .overview-icon { background-color: transparentize($color, .78);}
+ &:hover .overview-icon { background-color: transparentize($color, .75);}
+ }
+ &:drop .overview-icon {
+ border: 2px solid transparentize($selected_bg_color, .2); //already 2px transparent so no jumping
+ background-color: transparentize($selected_bg_color, .8);
+ }
+}
+
+// styling for elements within popovers that look like notifications
+@mixin card($flat: false) {
+ border-radius: $base_border_radius;
+ margin: $base_margin;
+ box-shadow: 0 1px 1px 0 $shadow_color;
+
+ @if $flat {
+ @include button(undecorated);
+ box-shadow: none !important;
+ } @else {
+ @include button(normal, $c:$card_bg_color);
+ }
+
+ &:focus {
+ @include button(focus, $c:$card_bg_color);
+ }
+
+ &:hover {
+ @include button(hover, $c:$card_bg_color);
+ }
+
+ &:active {
+ @include button(active, $c:$card_bg_color);
+ }
+}
diff --git a/data/theme/43/gnome-shell-sass/_high-contrast-colors.scss b/data/theme/43/gnome-shell-sass/_high-contrast-colors.scss
new file mode 100644
index 00000000..0d48644a
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/_high-contrast-colors.scss
@@ -0,0 +1,71 @@
+// When color definition differs for dark and light variant,
+// it gets @if ed depending on $variant
+
+@import '_palette.scss';
+
+$is_highcontrast: 'true';
+
+$base_color: if($variant == 'light', #fff, #000);
+$bg_color: $base_color;
+$fg_color: if($variant == 'light', transparentize(black, .2), white);
+
+$selected_fg_color: #ffffff;
+$selected_bg_color: $blue_3;
+
+$selected_borders_color: darken($selected_bg_color, 20%);
+$borders_color: lighten($bg_color,17%);
+$borders_edge: $borders_color;
+$link_color: lighten($selected_bg_color,20%);
+$link_visited_color: lighten($selected_bg_color,10%);
+
+$warning_color: if($variant == 'light', $yellow_5, #cd9309);
+$error_color: if($variant == 'light', $red_3, $red_4);
+$success_color: if($variant == 'light', $green_4, $green_5);
+$destructive_color: $error_color;
+
+$osd_fg_color: white;
+$osd_bg_color: $base_color;
+$osd_insensitive_bg_color: transparentize(mix($osd_fg_color, opacify($osd_bg_color, 1), 10%), 0.5);
+$osd_insensitive_fg_color: if($variant == 'light', mix($osd_fg_color, $osd_bg_color, 80%), mix($osd_fg_color, $osd_bg_color, 70%));
+$osd_borders_color: $osd_bg_color;
+$osd_outer_borders_color: $osd_bg_color;
+
+$shadow_color: transparent;
+
+// button
+$button_inset_color: transparentize($fg_color, 0.8);
+$button_mix_factor: 10%;
+
+// cards
+$card_bg_color: if($variant == 'light', darken($bg_color, 12%), lighten($bg_color, 12%));
+
+// notifications
+$bubble_buttons_color: if($variant == 'light', darken($bg_color, 22%), lighten($bg_color, 31%));
+
+// overview background color
+$system_bg_color: lighten($base_color, 17%);
+
+//insensitive state derived colors
+$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
+$insensitive_bg_color: mix($bg_color, $base_color, 60%);
+$insensitive_borders_color: $borders_color;
+
+//colors for the backdrop state, derived from the main colors.
+$backdrop_base_color: lighten($base_color,1%);
+$backdrop_bg_color: $bg_color;
+$backdrop_fg_color: mix($fg_color, $backdrop_bg_color, 80%);
+$backdrop_insensitive_color: lighten($backdrop_bg_color,15%);
+$backdrop_borders_color: mix($borders_color, $bg_color, 90%);
+$backdrop_dark_fill: mix($backdrop_borders_color,$backdrop_bg_color, 35%);
+
+// derived checked colors
+$checked_bg_color: if($variant=='light', darken($bg_color, 12%), lighten($bg_color, 18%));
+$checked_fg_color: if($variant=='light', darken($fg_color, 12%), lighten($fg_color, 18%));
+
+// derived hover colors
+$hover_bg_color: if($variant=='light', darken($bg_color, 8%), lighten($bg_color, 20%));
+$hover_fg_color: if($variant=='light', darken($fg_color, 10%), lighten($fg_color, 20%));
+
+// derived active colors
+$active_bg_color: if($variant=='light', darken($bg_color, 10%), lighten($bg_color, 22%));
+$active_fg_color: if($variant=='light', darken($fg_color, 10%), lighten($fg_color, 22%));
diff --git a/data/theme/43/gnome-shell-sass/_palette.scss b/data/theme/43/gnome-shell-sass/_palette.scss
new file mode 100644
index 00000000..78847d95
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/_palette.scss
@@ -0,0 +1,46 @@
+//GNOME Color Palette
+$blue_1: #99c1f1;
+$blue_2: #62a0ea;
+$blue_3: #3584e4;
+$blue_4: #1c71d8;
+$blue_5: #1a5fb4;
+$green_1: #8ff0a4;
+$green_2: #57e389;
+$green_3: #33d17a;
+$green_4: #2ec27e;
+$green_5: #26a269;
+$yellow_1: #f9f06b;
+$yellow_2: #f8e45c;
+$yellow_3: #f6d32d;
+$yellow_4: #f5c211;
+$yellow_5: #e5a50a;
+$orange_1: #ffbe6f;
+$orange_2: #ffa348;
+$orange_3: #ff7800;
+$orange_4: #e66100;
+$orange_5: #c64600;
+$red_1: #f66151;
+$red_2: #ed333b;
+$red_3: #e01b24;
+$red_4: #c01c28;
+$red_5: #a51d2d;
+$purple_1: #dc8add;
+$purple_2: #c061cb;
+$purple_3: #9141ac;
+$purple_4: #813d9c;
+$purple_5: #613583;
+$brown_1: #cdab8f;
+$brown_2: #b5835a;
+$brown_3: #986a44;
+$brown_4: #865e3c;
+$brown_5: #63452c;
+$light_1: #ffffff;
+$light_2: #f6f5f4;
+$light_3: #deddda;
+$light_4: #c0bfbc;
+$light_5: #9a9996;
+$dark_1: #77767b;
+$dark_2: #5e5c64;
+$dark_3: #3d3846;
+$dark_4: #241f31;
+$dark_5: #000000;
\ No newline at end of file
diff --git a/data/theme/43/gnome-shell-sass/_widgets.scss b/data/theme/43/gnome-shell-sass/_widgets.scss
new file mode 100644
index 00000000..a09e0b54
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/_widgets.scss
@@ -0,0 +1,51 @@
+//
+// Shell widgets stylesheets are placed in separate .scss files
+// in 'widgets' and imported into the main stylesheet in this file.
+// To create or update a widget for the shell modify the list below.
+//
+
+/* WIDGETS */
+
+// Primary widgets
+@import 'widgets/base';
+@import 'widgets/entries';
+@import 'widgets/buttons';
+@import 'widgets/check-box';
+@import 'widgets/switches';
+@import 'widgets/slider';
+@import 'widgets/scrollbars';
+// Popovers
+@import 'widgets/popovers';
+@import 'widgets/calendar';
+@import 'widgets/message-list';
+@import 'widgets/ibus-popup';
+// Notifications
+@import 'widgets/notifications';
+@import 'widgets/hotplug';
+// Dialogs
+@import 'widgets/dialogs';
+// OSDs
+@import 'widgets/osd';
+@import 'widgets/switcher-popup';
+@import 'widgets/workspace-switcher';
+@import 'widgets/screenshot';
+// Panel
+@import 'widgets/panel';
+@import 'widgets/corner-ripple';
+@import 'widgets/quick-settings';
+// Overview
+@import 'widgets/overview';
+@import 'widgets/window-picker';
+@import 'widgets/search-entry';
+@import 'widgets/search-results';
+@import 'widgets/dash';
+@import 'widgets/app-grid';
+@import 'widgets/workspace-thumbnails';
+// A11y / misc
+@import 'widgets/a11y';
+@import 'widgets/misc';
+@import 'widgets/keyboard';
+@import 'widgets/looking-glass';
+// Lock / login screens
+@import 'widgets/login-dialog';
+@import 'widgets/screen-shield';
diff --git a/data/theme/43/gnome-shell-sass/gnome-shell-sass.doap b/data/theme/43/gnome-shell-sass/gnome-shell-sass.doap
new file mode 100644
index 00000000..f18ec1b8
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/gnome-shell-sass.doap
@@ -0,0 +1,37 @@
+
+
+ GNOME Shell Sass
+ Sass sources of GNOME Shell
+ GNOME Shell Sass is a project intended to allow the sharing of the
+ sass theme sources between gnome-shell and other projects like gnome-shell-extensions.
+
+
+ sass
+ css
+
+
+
+ Carlos Soriano
+
+ csoriano
+
+
+
+
+ Florian Müllner
+
+ fmuellner
+
+
+
+
+ Jakub Steiner
+
+ jimmac
+
+
+
diff --git a/data/theme/43/gnome-shell-sass/widgets/_a11y.scss b/data/theme/43/gnome-shell-sass/widgets/_a11y.scss
new file mode 100644
index 00000000..31b5c4b7
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_a11y.scss
@@ -0,0 +1,24 @@
+// Pointer location
+.ripple-pointer-location {
+ width: $ripple_size;
+ height: $ripple_size;
+ border-radius: $ripple_size * 0.5; // radius equals the size of the box to give us the curve
+ background-color: lighten(transparentize($selected_bg_color, 0.7), 30%);
+ box-shadow: 0 0 2px 2px lighten($selected_bg_color, 20%);
+}
+
+// Pointer accessibility notifications
+.pie-timer {
+ width: 60px;
+ height: 60px;
+ -pie-border-width: 3px;
+ -pie-border-color: $selected_bg_color;
+ -pie-background-color: lighten(transparentize($selected_bg_color, 0.7), 40%);
+}
+
+// Screen zoom/Magnifier
+.magnifier-zoom-region {
+ border: 2px solid $selected_bg_color;
+
+ &.full-screen { border-width: 0; }
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_app-grid.scss b/data/theme/43/gnome-shell-sass/widgets/_app-grid.scss
new file mode 100644
index 00000000..9da650cf
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_app-grid.scss
@@ -0,0 +1,161 @@
+/* App Grid */
+
+$app_icon_size: 96px;
+
+// app icons
+.icon-grid {
+ row-spacing: $base_padding * 2;
+ column-spacing: $base_padding * 2;
+ max-row-spacing: $base_padding * 7;
+ max-column-spacing: $base_padding * 7;
+ page-padding-top: $base_padding * 4;
+ page-padding-bottom: $base_padding * 4;
+ page-padding-left: $base_padding * 3;
+ page-padding-right: $base_padding * 3;
+}
+
+/* App Icons */
+
+// Icon tiles in the app grid
+.app-well-app {
+ @include overview_icon($osd_fg_color);
+
+ .overview-icon { padding: $base_padding*2;}
+ .overview-icon.overview-icon-with-label {
+ > StBoxLayout {
+ spacing: $base_padding;
+ }
+ }
+}
+
+// app folders
+.app-well-app.app-folder {
+ @include overview_icon($osd_fg_color, $flat: false);
+}
+
+// expanded folder
+.app-folder-dialog {
+ border-radius: $modal_radius*2;
+ background-color: $dash_background_color;
+
+ & .folder-name-container {
+ padding: 24px 36px 0;
+ spacing: 12px;
+
+ & .folder-name-label,
+ & .folder-name-entry {
+ @extend %title_1;
+ }
+
+ & .folder-name-entry { width: 300px }
+
+ /* FIXME: this is to keep the label in sync with the entry */
+ & .folder-name-label { padding: 5px 7px; color: $osd_fg_color; }
+
+ & .edit-folder-button {
+ @extend %button;
+ padding: 0;
+ width: 36px;
+ height: 36px;
+ border-radius: 99px;
+ & > StIcon { icon-size: $base_icon_size }
+ }
+ }
+
+ & .icon-grid {
+ row-spacing: $base_padding * 2;
+ column-spacing: $base_padding * 5;
+ page-padding-top: 0;
+ page-padding-bottom: 0;
+ page-padding-left: 0;
+ page-padding-right: 0;
+ }
+
+ & .page-indicators {
+ margin-bottom: 18px;
+ }
+}
+
+.app-folder-dialog-container {
+ padding: $base_padding*2;
+ width: 720px;
+ height: 720px;
+}
+
+// Running app indicator (also shown in dash)
+.app-well-app-running-dot {
+ height: 5px;
+ width: 5px;
+ border-radius:5px;
+ margin-bottom: 8px;
+ background-color: $osd_fg_color;
+}
+
+// Rename popup for app folders
+.rename-folder-popup {
+ .rename-folder-popup-item {
+ spacing: $base_padding;
+ &:ltr, &:rtl { padding: 0 $base_padding * 2; }
+ }
+}
+
+// App Grid pagination indicators
+.page-indicator {
+ padding: $base_padding $base_padding * 2 0;
+ transition-duration:400ms;
+
+ .page-indicator-icon {
+ width: 10px;
+ height: 10px;
+ border-radius: 10px; // the same as height&width
+ background-color: white;
+ }
+}
+
+.apps-scroll-view {
+ padding: 0;
+}
+
+// shutdown and other actions in the grid
+.system-action-icon {
+ background-color: rgba(0,0,0,0.8);
+ color: #fff;
+ border-radius: 99px;
+ icon-size: $app_icon_size * 0.5;
+}
+
+.page-navigation-hint {
+ &.dnd {
+ background: rgba(255, 255, 255, 0.1);
+ }
+
+ &.next:ltr,
+ &.previous:rtl {
+ background-gradient-start: rgba(255, 255, 255, 0.05);
+ background-gradient-end: transparent;
+ background-gradient-direction: horizontal;
+ border-radius: $modal_radius*1.5 0px 0px $modal_radius*1.5;
+ }
+
+ &.previous:ltr,
+ &.next:rtl {
+ background-gradient-start: transparent;
+ background-gradient-end: rgba(255, 255, 255, 0.05);
+ background-gradient-direction: horizontal;
+ border-radius: 0px $modal_radius*1.5 $modal_radius*1.5 0px;
+ }
+}
+
+.page-navigation-arrow {
+ & > StIcon {
+ margin: 6px;
+ padding: 18px;
+ width: 24px;
+ height: 24px;
+ border-radius: 99px;
+ }
+
+ &:insensitive > StIcon { @include button(undecorated, $osd_fg_color, transparentize($osd_bg_color, 0.5));}
+ &:hover > StIcon { @include button(hover, $osd_fg_color, transparentize($osd_bg_color, 0.5));}
+ &:active > StIcon { @include button(active, $osd_fg_color, transparentize($osd_bg_color, 0.5));}
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_base.scss b/data/theme/43/gnome-shell-sass/widgets/_base.scss
new file mode 100644
index 00000000..69ebb301
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_base.scss
@@ -0,0 +1,18 @@
+// Links
+.shell-link {
+ color: $link_color;
+
+ &:hover {
+ color: lighten($link_color, 10%);
+ }
+}
+
+// Outline for low res icons
+.lowres-icon {
+ icon-shadow: 0 1px 2px rgba(black, 0.3);
+}
+
+// Dropshadow for large icons
+.icon-dropshadow {
+ icon-shadow: 0 1px 5px rgba(black, 0.8);
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_buttons.scss b/data/theme/43/gnome-shell-sass/widgets/_buttons.scss
new file mode 100644
index 00000000..df995245
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_buttons.scss
@@ -0,0 +1,10 @@
+/* Buttons */
+
+.button {
+ @extend %button; // that's it
+ min-height: 22px;
+}
+
+.icon-button {
+ @extend %icon_button; // that's it
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_calendar.scss b/data/theme/43/gnome-shell-sass/widgets/_calendar.scss
new file mode 100644
index 00000000..336372cd
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_calendar.scss
@@ -0,0 +1,257 @@
+/* Date/Time Menu */
+
+// overall menu
+#calendarArea {
+ padding: $base_padding - 2px;
+}
+
+// Calendar menu side column
+.datemenu-calendar-column {
+ spacing: $base_padding;
+ &:ltr {padding-left: $base_padding;}
+ &:rtl {padding-right: $base_padding;}
+ .datemenu-displays-box {spacing: $base_padding;}
+}
+
+/* today button (the date) */
+.datemenu-today-button {
+ @include card($flat: true);
+ padding: $base_padding * 1.5;
+
+ // weekday label
+ .day-label {
+ @extend %heading;
+ }
+
+ // date label
+ .date-label {
+ @extend %title_2;
+ }
+}
+
+/* Calendar */
+.calendar {
+ @include card(flat);
+ margin-top: 0;
+
+ // month header
+ .calendar-month-header {
+
+ // prev/next month icons
+ .calendar-change-month-back StIcon,
+ .calendar-change-month-forward StIcon {
+ icon-size: $base_icon_size;
+ }
+
+ // month label
+ .calendar-month-label {
+ color: lighten($fg_color,5%);
+ @extend %heading;
+ padding: 8px 0;
+ }
+ .pager-button {
+ background-color: transparent;
+ height: 32px;
+ width: 32px;
+ margin: 2px;
+ border-radius: $base_border_radius - 2px;
+ &:hover, &:focus {background-color: $hover_bg_color;}
+ &:active {background-color: $active_bg_color;}
+ }
+ }
+
+ $calendar_day_size: 3em;
+
+ .calendar-day-base {
+ text-align: center;
+ margin: 2px;
+ padding: 0 !important;
+ height: $calendar_day_size !important;
+ width: $calendar_day_size !important;
+ border-radius: 99px;
+ transition-duration: 100ms;
+ @extend %numeric;
+ @extend %smaller;
+
+ &:hover {background-color: $hover_bg_color;}
+ &:focus {
+ background-color: mix($bg_color, $selected_bg_color, 80%);
+ color: $selected_fg_color;
+ box-shadow:inset 0 0 0 2px transparentize($selected_bg_color, 0.4);
+ }
+
+ &:active,&:selected {
+ color: $active_fg_color;
+ background-color: $active_bg_color;
+ &:focus {
+ background-color: mix($active_bg_color, $selected_bg_color, 80%);
+ }
+ }
+
+ // day of week heading
+ &.calendar-day-heading {
+ color: $insensitive_fg_color;
+ padding-top: $base_padding;
+ height: 16px !important; // force heading to be smaller height
+ font-weight: bold;
+ @extend %smaller;
+ }
+ }
+
+ .calendar-day {}
+ .calendar-work-day {}
+ .calendar-nonwork-day {color: $insensitive_fg_color;}
+ .calendar-other-month-day {
+ color: transparentize($fg_color, 0.5);
+ &.calendar-nonwork-day {
+ color: transparentize($insensitive_fg_color, 0.5);
+ }
+ }
+
+ // Today
+ .calendar-today {
+ background-color: $selected_bg_color;
+ font-weight: 800;
+ color: $selected_fg_color !important;
+
+ &:hover,&:focus {
+ background-color:lighten($selected_bg_color, 3%);
+ color: inherit;
+ }
+
+ &:active,&:selected {
+ background-color: $selected_bg_color;
+ color: inherit;
+
+ &:hover,&:focus {
+ background-color:lighten($selected_bg_color, 3%);
+ color: inherit;
+ }
+ }
+ }
+
+ .calendar-day-with-events {
+ background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/calendar-today-light.svg"),url("resource:///org/gnome/shell/theme/calendar-today.svg"));
+ background-size: contain;
+ }
+
+ .calendar-week-number {
+ @include fontsize($base_font_size - 4);
+ font-weight: bold;
+ font-feature-settings: "tnum";
+ margin: 6px;
+ padding: 0 $base_padding;
+ border-radius: 3px;
+ background-color: darken($bg_color, 2%);
+ color: $insensitive_fg_color
+ }
+}
+
+/* Events */
+.events-button {
+ @include card;
+ padding: $base_padding * 2;
+
+ .events-box {
+ spacing: $base_padding;
+ }
+
+ .events-list {
+ spacing: 2 * $base_padding;
+ }
+
+ .events-title {
+ @extend %heading;
+ color: $insensitive_fg_color;
+ margin-bottom: $base_margin;
+ }
+
+ .event-time {
+ @extend %numeric;
+ @extend %caption;
+ color: $insensitive_fg_color;
+ }
+}
+
+/* World clocks */
+.world-clocks-button {
+ @include card;
+ padding: $base_padding * 2;
+
+ .world-clocks-grid {
+ spacing-rows: $base_padding;
+ spacing-columns: $base_padding * 2;
+ }
+
+ // title
+ .world-clocks-header {
+ @extend %heading;
+ color: $insensitive_fg_color;
+ }
+
+ // city label
+ .world-clocks-city {
+ color: $fg_color;
+ }
+
+ // timezone time
+ .world-clocks-time {
+ @extend %heading;
+ @extend %numeric;
+ color: $fg_color;
+
+ &:ltr {text-align: right;}
+ &:rtl {text-align: left;}
+ }
+
+ // timezone offset label
+ .world-clocks-timezone {
+ @extend %numeric;
+ @extend %caption;
+ color: $insensitive_fg_color;
+ }
+}
+
+/* Weather */
+.weather-button {
+ @include card;
+ padding: $base_padding * 2;
+
+ .weather-box {
+ spacing: $base_padding + $base_margin;
+ }
+
+ .weather-header-box {
+ spacing: $base_padding;
+ }
+
+ .weather-header {
+ color: $insensitive_fg_color;
+ @extend %heading;
+
+ &.location {
+ font-weight: normal;
+ }
+ }
+
+ .weather-grid {
+ spacing-rows: $base_padding;
+ spacing-columns: $base_padding * 2;
+ }
+
+ .weather-forecast-time {
+ @extend %numeric;
+ @extend %caption;
+ color: darken($fg_color,30%);
+ padding-top: 0.2em;
+ padding-bottom: 0.4em;
+ }
+
+ .weather-forecast-icon {
+ icon-size: $large_icon_size;
+ }
+
+ .weather-forecast-temp {
+ @extend %heading;
+ }
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_check-box.scss b/data/theme/43/gnome-shell-sass/widgets/_check-box.scss
new file mode 100644
index 00000000..1480ade2
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_check-box.scss
@@ -0,0 +1,18 @@
+/* Check Boxes */
+
+// these are equal to the size of the SVG assets
+$check_height: 24px;
+$check_width: 24px;
+
+
+.check-box {
+ StBoxLayout { spacing: .8em; }
+ StBin {
+ width: $check_width;
+ height: $check_height;
+ background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/checkbox-off-light.svg"), url("resource:///org/gnome/shell/theme/checkbox-off.svg"));
+ }
+ &:focus StBin { background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/checkbox-off-focused-light.svg"), url("resource:///org/gnome/shell/theme/checkbox-off-focused.svg"));; }
+ &:checked StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox.svg"); }
+ &:focus:checked StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox-focused.svg"); }
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_corner-ripple.scss b/data/theme/43/gnome-shell-sass/widgets/_corner-ripple.scss
new file mode 100644
index 00000000..9aff4317
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_corner-ripple.scss
@@ -0,0 +1,15 @@
+/* Activities Ripple */
+
+$ripple_size: 50px;
+
+.ripple-box {
+ background-color: rgba(255,255,255,0.2);
+ box-shadow: 0 0 2px 2px rgba(255,255,255,0.2);
+ // plus + 2px for the border (box-shadow)
+ width: $ripple_size + 2px;
+ height: $ripple_size + 2px;
+ border-radius: 0 0 $ripple_size + 2px 0; // radius equals the size of the box to give us the curve
+
+ // just a simple change to the border radius position
+ &:rtl { border-radius: 0 0 0 $ripple_size + 2px; }
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_dash.scss b/data/theme/43/gnome-shell-sass/widgets/_dash.scss
new file mode 100644
index 00000000..8f5d5f93
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_dash.scss
@@ -0,0 +1,75 @@
+/* Dash */
+
+$dash_background_color: lighten($system_bg_color, 5%);
+$dash_placeholder_size: 32px;
+$dash_padding: $base_padding*2; // 12px
+$dash_border_radius: $modal_radius + $dash_padding;
+
+// container for the dash
+#dash {
+ @extend %caption;
+ margin-top: $dash_padding;
+
+ .placeholder {
+ // background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
+ background-image:none;
+ background-size: contain;
+ height: $dash_placeholder_size;
+ }
+
+ .empty-dash-drop-target {
+ width: $dash_placeholder_size;
+ height: $dash_placeholder_size;
+ }
+
+ // Running app indicator (also shown in app grid)
+ .app-well-app-running-dot {
+ margin-bottom: 14px; // hardcoded
+ }
+}
+
+// background of the dash behind app icons
+.dash-background {
+ background-color: $dash_background_color;
+ border-radius: $dash_border_radius;
+ padding: $dash_padding;
+ spacing: $base_padding;
+ margin-bottom: $dash_padding;
+}
+
+// items on the dash
+.dash-item-container {
+ > * {margin: 0 2px;}
+ &:ltr:first-child {margin-left: 0;}
+ &:rtl:first-child {margin-right: 0;}
+
+ // each app item on the dash
+ .app-well-app .overview-icon {
+ padding: $base_padding;
+ }
+
+ // show apps button
+ .show-apps { @include overview_icon($osd_fg_color);}
+
+ .show-apps, .app-well-app {
+ padding-bottom: $dash_padding;
+ }
+}
+
+// separator between favourites and running apps
+.dash-separator {
+ width: 1px;
+ margin: 0 $base_margin;
+ background-color: $borders_color;
+ margin-bottom: $dash_padding;
+}
+
+// OSD Tooltip
+.dash-label {
+ color: $osd_fg_color;
+ background-color: $osd_bg_color;
+ border-radius: 99px;
+ padding: $base_padding $base_padding * 2;
+ text-align: center;
+ -y-offset: $base_margin * 2; // distance from the dash edge
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_dialogs.scss b/data/theme/43/gnome-shell-sass/widgets/_dialogs.scss
new file mode 100644
index 00000000..defa20b3
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_dialogs.scss
@@ -0,0 +1,172 @@
+/* Modal Dialogs */
+
+.headline {
+ @extend %title_4;
+}
+
+.modal-dialog {
+ @extend %bubble_panel;
+
+ .modal-dialog-content-box {
+ margin: 32px 40px;
+ spacing: 32px;
+ max-width: 28em;
+ }
+
+ .modal-dialog-linked-button {
+ @extend %bubble_button;
+ }
+}
+
+/* End Session Dialog */
+.end-session-dialog {
+ width: 30em;
+
+ .end-session-dialog-battery-warning,
+ .dialog-list-title {
+ color: $warning_color;
+ }
+}
+
+/* Message Dialog */
+.message-dialog-content {
+ spacing: 18px;
+
+ .message-dialog-title {
+ text-align: center;
+ @extend %title_2;
+
+ &.lightweight { @extend %title_4;}
+ }
+ .message-dialog-description { text-align: center; }
+}
+
+/* Dialog List */
+.dialog-list {
+ spacing: 18px;
+
+ .dialog-list-title {
+ text-align: center;
+ @extend %heading;
+ }
+
+ .dialog-list-scrollview { max-height: 200px; }
+ .dialog-list-box {
+ spacing: 1em;
+
+ .dialog-list-item {
+ spacing: 1em;
+
+ .dialog-list-item-title { font-weight: bold; }
+ .dialog-list-item-description {
+ color: darken($fg_color,5%);
+ @extend %caption;
+ }
+ }
+ }
+}
+
+/* Run Dialog */
+.run-dialog {
+ .modal-dialog-content-box {
+ margin-top: 24px;
+ margin-bottom: 14px;
+ }
+ .run-dialog-entry { width: 20em; }
+ .run-dialog-description {
+ @extend %caption;
+ text-align: center;
+ color: darken($fg_color, 20%);
+ }
+}
+
+/* Password or Authentication Dialog */
+
+.prompt-dialog {
+ width: 28em;
+
+ .modal-dialog-content-box {
+ margin-bottom: 24px;
+ }
+}
+
+.prompt-dialog-password-grid {
+ spacing-rows: 8px;
+ spacing-columns: 4px;
+
+ .prompt-dialog-password-entry {
+ width: auto;
+
+ // 4px (spacing) + 16px (spinner-width)
+ &:ltr { margin-left: 20px; }
+ &:rtl { margin-right: 20px; }
+ }
+}
+
+.prompt-dialog-password-layout {
+ spacing: 8px;
+}
+
+.prompt-dialog-password-entry {
+ width: 20em;
+}
+
+.prompt-dialog-error-label,
+.prompt-dialog-info-label,
+.prompt-dialog-null-label {
+ text-align: center;
+ @extend %caption;
+}
+
+.prompt-dialog-error-label {
+ color: $warning_color;
+}
+
+
+/* Polkit Dialog */
+
+.polkit-dialog-user-layout {
+ text-align: center;
+ spacing: 8px;
+ margin-bottom: 6px;
+
+ .polkit-dialog-user-root-label { color: $warning_color; }
+}
+
+/* Audio selection dialog */
+.audio-device-selection-dialog {
+ .modal-dialog-content-box { margin-bottom: 28px; }
+ .audio-selection-box { spacing: 20px; }
+}
+
+.audio-selection-device {
+ border-radius: $base_border_radius*2;
+ &:hover,&:focus { background-color: $hover_bg_color; }
+ &:active {
+ background-color: $selected_bg_color;
+ color: $selected_fg_color;
+ }
+}
+
+.audio-selection-device-box {
+ padding: 20px;
+ spacing: 20px;
+}
+
+.audio-selection-device-icon {
+ icon-size: $base_icon_size * 4;
+}
+
+/* Welcome dialog */
+.welcome-dialog-image {
+ background-image: url("resource:///org/gnome/shell/theme/gnome-shell-start.svg");
+ background-size: contain;
+ /* Reasonable maximum dimensions */
+ height: 300px;
+ width: 300px;
+}
+
+/* Access portal dialog */
+.access-dialog {
+ text-align: center;
+}
\ No newline at end of file
diff --git a/data/theme/43/gnome-shell-sass/widgets/_entries.scss b/data/theme/43/gnome-shell-sass/widgets/_entries.scss
new file mode 100644
index 00000000..6be67609
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_entries.scss
@@ -0,0 +1,31 @@
+/* Entries */
+
+StEntry {
+ border-radius: $base_border_radius;
+ padding: 8px;
+ color: $fg_color;
+
+ @include entry(normal);
+ &:hover { @include entry(hover);}
+ &:focus { @include entry(focus);}
+ &:insensitive { @include entry(insensitive);}
+
+ selection-background-color: $selected_bg_color;
+ selected-color: $selected_fg_color;
+
+ StIcon.capslock-warning {
+ icon-size: 16px;
+ warning-color: $warning_color;
+ padding: 0 4px;
+ }
+
+ StIcon.peek-password {
+ icon-size: $base_icon_size;
+ padding: 0 4px;
+ }
+
+ StLabel.hint-text {
+ margin-left: 2px;
+ color: transparentize($fg_color, 0.3);
+ }
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_hotplug.scss b/data/theme/43/gnome-shell-sass/widgets/_hotplug.scss
new file mode 100644
index 00000000..acd0265d
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_hotplug.scss
@@ -0,0 +1,10 @@
+// hotplug
+
+.hotplug-notification-item {
+ @extend %bubble_button;
+}
+
+.hotplug-notification-item-icon {
+ icon-size: 24px;
+ padding: 0 4px;
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_ibus-popup.scss b/data/theme/43/gnome-shell-sass/widgets/_ibus-popup.scss
new file mode 100644
index 00000000..8cbaa952
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_ibus-popup.scss
@@ -0,0 +1,39 @@
+// IBus Candidate Popup
+
+.candidate-popup-boxpointer {
+ @extend .popup-menu-boxpointer;
+}
+
+.candidate-popup-content {
+ padding: $base_padding;
+ spacing: $base_padding;
+ @extend .popup-menu-content;
+}
+
+.candidate-index {
+ padding: 0;
+ padding-right: $base_padding;
+ color: $insensitive_fg_color;
+}
+
+.candidate-box {
+ padding: $base_padding $base_padding*2 $base_padding $base_padding*2;
+ border-radius: $base_border_radius;
+ &:selected { background-color: $selected_bg_color; color: $selected_fg_color; }
+ &:hover { background-color: $hover_bg_color; color: $hover_fg_color; }
+}
+
+.candidate-page-button-box {
+ height: 2em;
+ .vertical & { padding-top: $base_padding*2; }
+ .horizontal & { padding-left: $base_padding*2; }
+}
+
+.candidate-page-button {
+ padding: $base_padding;
+
+ & StIcon { icon-size: $base_icon_size; }
+}
+
+.candidate-page-button-previous { border-radius: $base_border_radius 0px 0px $base_border_radius; border-right-width: 0;box-shadow: none;}
+.candidate-page-button-next { border-radius: 0px $base_border_radius $base_border_radius 0px;box-shadow: none;}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_keyboard.scss b/data/theme/43/gnome-shell-sass/widgets/_keyboard.scss
new file mode 100644
index 00000000..1dc6b953
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_keyboard.scss
@@ -0,0 +1,159 @@
+/* On-screen Keyboard */
+
+$key_size: 1.2em;
+$key_border_radius: $base_border_radius + 4px; // 12px
+$key_bg_color: darken($osd_fg_color, 70%);
+// $default_key_bg_color: darken($key_bg_color, 4%);
+$default_key_bg_color: if($variant=='light', darken($key_bg_color, 11%), darken($key_bg_color, 10%));
+
+
+// draw keys using button function
+#keyboard {
+ // background-color: transparentize(if($variant=='light', darken($bg_color, 5%), darken($bg_color, 8%)), 0.1);
+ background-color: $osd_bg_color;
+ box-shadow: inset 0 1px 0 0 $osd_outer_borders_color;
+
+ .page-indicator {
+ padding: $base_padding;
+
+ .page-indicator-icon {
+ width: 8px;
+ height: 8px;
+ }
+ }
+}
+
+// the container for individual keys
+.key-container {
+ padding: $base_margin;
+ spacing: $base_margin;
+}
+
+// the keys
+.keyboard-key {
+
+ @include fontsize($base_font_size + 5);
+ font-weight: bold;
+ min-height: $key_size;
+ min-width: $key_size;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: $key_border_radius;
+ box-shadow: 0 1px 0 0 $shadow_color;
+
+ @include keyboard_key(normal, $key_bg_color, $osd_fg_color);
+
+ &:focus { @include keyboard_key(focus);}
+ &:hover { @include keyboard_key(hover, $key_bg_color, $osd_fg_color);}
+ &:active { @include keyboard_key(active, $key_bg_color, $osd_fg_color); }
+ &:checked { @include keyboard_key(checked, $key_bg_color, $osd_fg_color); }
+
+ &:grayed { //FIXMEy
+ background-color: darken($bg_color, 3%);
+ color: $osd_fg_color;
+ border-color: $osd_borders_color;
+ }
+
+ // non-character keys
+ &.default-key {
+ @include keyboard_key(normal, $default_key_bg_color, $osd_fg_color);
+ &:hover {@include keyboard_key(hover, $default_key_bg_color, $osd_fg_color);}
+ &:active { @include keyboard_key(active, $default_key_bg_color, $osd_fg_color);}
+ &:checked { @include keyboard_key(checked, $default_key_bg_color, $osd_fg_color);}
+ border-radius: $key_border_radius;
+
+ // keys that may be latched: ctrl/alt/shift
+ &:latched {
+ border-color: lighten($selected_bg_color, 5%);
+ background-color: $selected_bg_color;
+ }
+ }
+
+ // enter key is suggested-action
+ &.enter-key {
+ @include keyboard_key(normal, $selected_bg_color, $selected_fg_color);
+ &:hover { @include keyboard_key(hover, $selected_bg_color, $selected_fg_color);}
+ &:active {@include keyboard_key(active, $selected_bg_color, $selected_fg_color);}
+ &:checked {@include keyboard_key(checked, $selected_bg_color, $selected_fg_color);}
+ border-radius: $key_border_radius;
+ color: $osd_fg_color;
+ }
+
+ &.shift-key-lowercase {}
+
+ // pressed shift has different style
+ &.shift-key-uppercase {
+ background-color: lighten($key_bg_color, 20%);
+ color: $osd_bg_color;
+ &:hover {
+ background-color: lighten($key_bg_color, 25%);
+ color: lighten($osd_bg_color, 5%);
+ }
+ }
+
+ // size of icons on keys
+ StIcon { icon-size: 24px; }
+}
+
+// long press on a key popup
+.keyboard-subkeys {
+ -arrow-border-radius: $base_border_radius*2;
+ -arrow-background-color: $osd_bg_color;
+ -arrow-border-width: 1px;
+ -arrow-border-color: lighten($osd_bg_color, 9%);
+ -arrow-base: 20px;
+ -arrow-rise: 10px;
+ -boxpointer-gap: $base_padding;
+ padding: $base_padding;
+
+ .keyboard-key {
+ @include keyboard_key(normal, $key_bg_color, $osd_fg_color);
+
+ &:focus { @include keyboard_key(focus);}
+ &:hover { @include keyboard_key(hover, $key_bg_color, $osd_fg_color);}
+ &:active { @include keyboard_key(active, $key_bg_color, $osd_fg_color); }
+ &:checked { @include keyboard_key(checked, $key_bg_color, $osd_fg_color); }
+
+ border-radius:$key_border_radius;
+ }
+}
+
+// emoji
+.emoji-page {
+ .keyboard-key {
+ background-color: transparent;
+ border: none;
+ color: initial;
+ }
+}
+
+.emoji-panel {
+ .keyboard-key:latched {
+ border-color: lighten($selected_bg_color, 5%);
+ background-color: $selected_bg_color;
+ }
+}
+
+// suggestions
+.word-suggestions {
+ @include fontsize($base_font_size + 1);
+ spacing: 12px;
+ min-height: 17pt;
+ padding: $base_padding*2;
+ color: $osd_fg_color;
+
+ // each suggestion
+ StButton {
+ margin: 0 3px;
+ min-width: 32px;
+ border-radius: $base_border_radius - 2px;
+ padding: 0px $base_padding*3;
+
+ @include keyboard_key(undecorated, $key_bg_color, $osd_fg_color);
+
+ &:focus { @include keyboard_key(focus);}
+ &:hover { @include keyboard_key(hover, $key_bg_color, $osd_fg_color);}
+ &:active { @include keyboard_key(active, $key_bg_color, $osd_fg_color); }
+ &:checked { @include keyboard_key(checked, $key_bg_color, $osd_fg_color); }
+ }
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_login-dialog.scss b/data/theme/43/gnome-shell-sass/widgets/_login-dialog.scss
new file mode 100644
index 00000000..23456be5
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_login-dialog.scss
@@ -0,0 +1,201 @@
+/* Login Dialog */
+
+.login-dialog-banner-view {
+ padding-top: 24px;
+ max-width: 23em;
+}
+
+.login-dialog,
+.unlock-dialog {
+ //reset
+ border: none;
+ background-color: transparent;
+
+ $_gdm_bg: $system_bg_color;
+
+ .modal-dialog-button-box { spacing: 3px; }
+ .modal-dialog-button {
+ padding: 4px 18px;
+ background-color: darken($system_bg_color, 3%);
+ border-color: darken($system_bg_color, 3%);
+ color: $osd_fg_color;
+
+ $_hover_c: lighten($_gdm_bg, 5%);
+ &:hover, &:focus {
+ background-color: $_hover_c;
+ border-color: $_hover_c;
+ }
+ &:active {
+ $_active_c: darken($_gdm_bg, 5%);
+ background-color: $_active_c;
+ border-color: $_active_c;
+ }
+ &:insensitive {
+ @include button(insensitive);
+ border-color: darken($_gdm_bg, 5%);
+ background-color: darken($_gdm_bg, 5%);
+ color: transparentize($osd_fg_color, 0.3);
+ }
+ &:default {
+ @include button(default);
+ }
+ }
+
+ .cancel-button,
+ .switch-user-button,
+ .login-dialog-session-list-button {
+ padding: 0;
+ border-radius: 99px;
+ width: $large_icon_size;
+ height: $large_icon_size;
+ border-color: darken($system_bg_color, 3%);
+ background-color: darken($system_bg_color, 3%);
+
+ StIcon { icon-size: $base_icon_size; }
+ }
+
+ .caps-lock-warning-label,
+ .login-dialog-message-warning {
+ color: $osd_fg_color;
+ }
+}
+
+.login-dialog-logo-bin { padding: 24px 0px; }
+.login-dialog-banner { color: darken($osd_fg_color,10%); }
+.login-dialog-button-box { width: 23em; spacing: 5px; }
+.login-dialog-message { text-align: center; }
+.login-dialog-user-selection-box { padding: 100px 0px; }
+.login-dialog-not-listed-label {
+ padding-left: 2px;
+ .login-dialog-not-listed-button:focus &,
+ .login-dialog-not-listed-button:hover & {
+ color: $osd_fg_color;
+ }
+}
+
+.login-dialog-not-listed-label {
+ @extend %caption;
+ font-weight: bold;
+ color: darken($osd_fg_color,30%);
+ padding-top: 1em;
+}
+
+.login-dialog-auth-list-view { -st-vfade-offset: 1em; }
+.login-dialog-auth-list {
+ spacing: 6px;
+ margin-left: 2em;
+}
+
+.login-dialog-auth-list-title {
+ margin-left: 2em;
+}
+
+.login-dialog-auth-list-item {
+ border-radius: $base_border_radius + 4px;
+ padding: 6px;
+ color: darken($osd_fg_color,30%);
+ &:focus, &:selected { background-color: $selected_bg_color; color: $selected_fg_color; }
+}
+
+.login-dialog-auth-list-label {
+ @include fontsize($base_font_size + 2);
+ font-weight: bold;
+ padding-left: 15px;
+ &:ltr { padding-left: 14px; text-align: left; }
+ &:rtl { padding-right: 14px; text-align: right; }
+}
+
+.login-dialog-user-list-view { -st-vfade-offset: 1em; }
+.login-dialog-user-list {
+ spacing: 12px;
+ width: 23em;
+ &:expanded .login-dialog-user-list-item:selected { background-color: $selected_bg_color; color: $selected_fg_color; }
+ &:expanded .login-dialog-user-list-item:logged-in { border-right: 2px solid $selected_bg_color; }
+}
+
+.login-dialog-user-list-item {
+ border-radius: $base_border_radius + 4px;
+ padding: 6px;
+ color: darken($osd_fg_color,30%);
+ &:ltr .user-widget { padding-right: 1em; }
+ &:rtl .user-widget { padding-left: 1em; }
+ .login-dialog-timed-login-indicator {
+ height: 2px;
+ margin-top: 6px;
+ background-color: $osd_fg_color;
+ }
+ &:focus .login-dialog-timed-login-indicator { background-color: $selected_fg_color; }
+}
+
+.user-widget-label {
+ color: $osd_fg_color;
+}
+
+.user-widget.horizontal .user-widget-label {
+ @include fontsize($base_font_size + 2);
+ font-weight: bold;
+ padding-left: 15px;
+
+ &:ltr { padding-left: 14px; text-align: left; }
+ &:rtl { padding-right: 14px; text-align: right; }
+}
+
+.user-widget.vertical .user-widget-label {
+ @include fontsize($base_font_size + 5);
+ text-align: center;
+ font-weight: normal;
+ padding-top: 16px;
+}
+
+.login-dialog-timed-login-indicator {
+ height: 2px;
+ background-color: darken($fg_color,40%);
+}
+
+.login-dialog-prompt-layout {
+ padding-top: 24px;
+ padding-bottom: 12px;
+ spacing: $base_padding * 2;
+ width: 23em;
+}
+
+.login-dialog-prompt-entry {
+ height: 1.5em;
+}
+
+.login-dialog-prompt-label {
+ color: darken($osd_fg_color, 20%);
+ @include fontsize($base_font_size + 1);
+ padding-top: 1em;
+}
+
+.login-dialog {
+ StEntry {
+ @if $variant=='dark' {
+ $_gdm_entry_bg: darken($system_bg_color, 3%);
+ background-color: $_gdm_entry_bg;
+ color: $fg_color;
+ }
+ }
+}
+
+// Custom styling for unlock entry
+.unlock-dialog {
+ StEntry {
+ border:none !important;
+ &:focus {
+ background-color: transparentize($fg_color, 0.9);
+ }
+ &:insensitive {
+ color: transparentize($fg_color, 0.5);
+ background-color: transparentize($fg_color, 0.95);
+ }
+ }
+
+ .cancel-button,
+ .switch-user-button,
+ .login-dialog-session-list-button {
+ border-color: transparent;
+ background-color: transparentize($fg_color, 0.9);
+ }
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_looking-glass.scss b/data/theme/43/gnome-shell-sass/widgets/_looking-glass.scss
new file mode 100644
index 00000000..00630c33
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_looking-glass.scss
@@ -0,0 +1,144 @@
+/* Looking Glass */
+
+// Dialog
+#LookingGlassDialog {
+ background-color: $osd_bg_color;
+ border-radius: 0 0 $modal_radius $modal_radius;
+ border-top-width: 0;
+ border: 1px solid $osd_outer_borders_color;
+ color: $osd_fg_color;
+ padding: $base_padding;
+ spacing: $base_padding;
+ box-shadow: 0 2px 4px 0 $shadow_color;
+
+ & > #Toolbar {
+ border: none;
+ padding: $base_padding;
+ border-radius: 0;
+ background-color: transparent;
+ spacing: $base_padding;
+
+ .lg-toolbar-button {
+ padding: $base_padding $base_padding*2;
+ @extend %button;
+
+ & > StIcon { icon-size: $base_icon_size; }
+ }
+ }
+
+ .labels {
+ spacing: $base_padding;
+ }
+
+ .notebook-tab {
+ -natural-hpadding: $base_padding*2;
+ -minimum-hpadding: $base_padding*2;
+
+ font-weight: bold;
+ padding: $base_padding $base_padding*2;
+ color: darken($osd_fg_color, 15%);
+ transition-duration: 100ms;
+ box-shadow:none;
+ border:none;
+ border-radius: $base_border_radius - 2px;
+ background-color: transparent;
+
+ &:hover {
+ color: $osd_fg_color;
+ background-color: transparentize($osd_fg_color, 0.95);
+ }
+
+ &:selected {
+ color: $osd_fg_color;
+ background-color: transparentize($osd_fg_color, 0.9);
+ }
+ }
+
+ StBoxLayout#EvalBox { padding: 4px; spacing: $base_padding; padding: $base_padding; }
+ StBoxLayout#ResultsArea { spacing: $base_padding; padding: $base_padding; }
+}
+
+.lg-dialog {
+
+ StEntry {
+ background-color: transparentize(lighten($osd_bg_color, 5%), 0.4);
+ color: $osd_fg_color;
+ border-color: transparentize($osd_fg_color, 0.8);
+ min-height: 22px;
+ selection-background-color: $selected_bg_color;
+ selected-color: $selected_fg_color;
+ }
+
+ .shell-link {
+ color: $link_color;
+ &:hover { color: lighten($link_color, 10%); }
+ &:active { color: darken($link_color, 10%); }
+ }
+
+ .actor-link {
+ color: $insensitive_fg_color;
+ &:hover { color: lighten($insensitive_fg_color, 20%); }
+ &:active { color: darken($insensitive_fg_color, 20%); }
+
+ & StIcon { icon-size: 12px; }
+ }
+}
+
+.lg-completions-text {
+ @extend %caption;
+ font-style: italic;
+}
+
+.lg-obj-inspector-title {
+ spacing: $base_padding;
+}
+
+.lg-obj-inspector-button {
+ border: 1px solid $osd_borders_color;
+ padding: 4px;
+ border-radius: $base_border_radius;
+ &:hover { border: 1px solid #ffffff; }
+}
+
+// Extensions
+#lookingGlassExtensions { padding: $base_padding; }
+
+.lg-extensions-list {
+ padding: $base_padding;
+ spacing: $base_padding;
+}
+
+.lg-extension {
+ padding: $base_padding*2;
+ @include card;
+}
+
+.lg-extension-name {
+ @extend %heading;
+}
+
+.lg-extension-meta {
+ spacing: $base_padding;
+}
+
+// Inspector
+#LookingGlassPropertyInspector {
+ background: $osd_bg_color;
+ border: 1px solid $osd_borders_color;
+ border-radius: $base_border_radius;
+ padding: $base_padding;
+}
+
+.lg-debug-flag-button {
+ StLabel { padding: $base_padding, 2 * $base_padding; }
+
+ color: $fg_color;
+ &:hover { color: lighten($fg_color, 20%); }
+ &:active { color: darken($fg_color, 20%); }
+}
+
+.lg-debug-flags-header {
+ padding-top: 2 * $base_padding;
+ padding: $base_padding;
+ @extend %title_2;
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_message-list.scss b/data/theme/43/gnome-shell-sass/widgets/_message-list.scss
new file mode 100644
index 00000000..5196661c
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_message-list.scss
@@ -0,0 +1,180 @@
+/* Message List */
+// a.k.a. notifications in the menu
+
+// main list
+.message-list {
+ width: 29em;
+ border: solid $borders_color;
+
+ // padding and margins to account for scrollbar
+ &:ltr {margin-left: 0; margin-right: $base_margin; padding-right: $base_padding; border-right-width: 1px; }
+ &:rtl {margin-right: 0; margin-left: $base_margin; padding-left: $base_padding; border-left-width: 1px; }
+
+ .message-list-placeholder {
+ @extend %title_2;
+ color: transparentize($insensitive_fg_color, .5);
+
+ // icon size and color
+ > StIcon {
+ icon-size: $base_icon_size*3; // 48px
+ margin-bottom: $base_margin*3;
+ -st-icon-style: symbolic;
+ }
+ }
+}
+
+.message-list-sections {
+ spacing: $base_padding;
+ margin: 0;
+ padding-bottom: $base_padding;
+
+ // to account for scrollbar
+ &:ltr {margin-right: $base_margin * 3; }
+ &:rtl {margin-left: $base_margin * 3;}
+}
+
+.message-list-section,
+.message-list-section-list {
+ spacing: $base_padding;
+}
+
+// do-not-disturb + clear button
+.message-list-controls {
+ // NOTE: remove the padding if notification_bubble could remove margin for drop shadow
+ padding: $base_padding;
+ spacing: $base_padding;
+ @extend %heading;
+
+ .dnd-button {
+ // We need this because the focus outline isn't inset like for the buttons
+ // so the dnd button would grow when it gets focus if we didn't change only
+ // its color when focusing.
+ border-width: 2px;
+ border-color: transparent;
+ border-radius: 32px;
+ border-style: solid;
+
+ &:focus {
+ border-color: transparentize($selected_bg_color, 0.4);
+ }
+ }
+}
+
+// message bubbles
+.message {
+ @include card;
+
+ // icon container
+ .message-icon-bin {
+ padding: ($base_padding * 3);
+
+ &:ltr {padding-right:$base_padding;}
+ &:rtl {padding-left:$base_padding;}
+
+ // icon size and color
+ > StIcon {
+ icon-size: $large_icon_size; // 32px
+ -st-icon-style: symbolic;
+ }
+
+ // fallback
+ > .fallback-app-icon {
+ width: $base_icon_size;
+ height: $base_icon_size;
+ }
+ }
+
+ // content
+ .message-content {
+ spacing: 4px;
+ padding: ($base_padding*1.5);
+ margin-bottom: $base_margin*2;
+ }
+
+ // title
+ .message-title {
+ font-weight: bold;
+ /* HACK: the label should be baseline-aligned with a 1em label, fake this with some bottom padding */
+ padding-top: 0.57em;
+ }
+
+ // secondary container in title box
+ .message-secondary-bin {
+ padding: 0 $base_margin * 2;
+
+ // notification time stamp
+ > .event-time {
+ color: transparentize($fg_color, 0.5);
+ @include fontsize($base_font_size - 2);
+ /* HACK: the label should be baseline-aligned with a 1em label, fake this with some bottom padding */
+ padding-bottom: 0.13em;
+
+ &:ltr { text-align: right };
+ &:rtl { text-align: left };
+ }
+ }
+
+ // close button
+ .message-close-button {
+ color: $fg_color;
+ background-color: transparentize($fg_color, 0.9);
+ border-radius: 99px;
+ padding: $base_padding - 1px;
+ margin: 1px;
+ &:hover {background-color: transparentize($fg_color, 0.8);}
+ &:active {background-color: transparentize($fg_color, 0.9);}
+
+ & StIcon { icon-size: $base_icon_size; }
+ }
+
+ // body
+ .message-body {color: darken($fg_color, 10%);}
+}
+
+// URLs in messages
+.url-highlighter {
+ link-color: $link_color;
+}
+
+/* Media Controls */
+.message-media-control {
+ padding: 0 $base_padding*3;
+ margin: $base_padding*2 0;
+ border-radius: $base_border_radius;
+ color: $fg_color;
+
+ // colors are lightened since the media controls are in a card
+ &:hover {
+ background-color: lighten($hover_bg_color, 5%);
+ color: $fg_color;
+ }
+
+ &:active {
+ background-color: lighten($active_bg_color, 5%);
+ color: $fg_color;
+ }
+
+ &:insensitive { color: lighten($insensitive_fg_color, 5%); }
+
+ // fix margin for last button
+ &:last-child:ltr { margin-right: $base_margin*3; }
+ &:last-child:rtl { margin-left: $base_margin*3; }
+
+ & StIcon { icon-size: $base_icon_size; }
+}
+
+// album-art
+.media-message-cover-icon {
+ icon-size: $base_icon_size*3 !important; // 48px
+ border-radius: $base_border_radius;
+
+ // when there is no artwork
+ &.fallback {
+ color: darken($fg_color, 17%);
+ background-color: $bg_color;
+ border: 1px solid transparent;
+ border-radius: $base_border_radius;
+ icon-size: $large_icon_size !important; // 32px
+ padding: ($base_padding*2 + 2); // 16px
+ }
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_misc.scss b/data/theme/43/gnome-shell-sass/widgets/_misc.scss
new file mode 100644
index 00000000..74092782
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_misc.scss
@@ -0,0 +1,65 @@
+// Rubberband for select-area screenshots
+.select-area-rubberband {
+ background-color: transparentize($selected_bg_color,0.7);
+ border: 1px solid $selected_bg_color;
+}
+
+// User icon
+.user-icon {
+ background-size: contain;
+ color: $osd_fg_color;
+ border-radius: 99px;
+ icon-size: $base_icon_size * 4; // 64px
+ &:hover {
+ color: lighten($osd_fg_color,30%);
+ }
+
+ & StIcon {
+ background-color: transparentize($osd_fg_color,0.95);
+ border-radius: 99px;
+ padding: $base_padding * 2 ; // 12px
+ width: $base_icon_size * 2.5; height: $base_icon_size * 2.5; // 40px;
+ }
+
+ &.user-avatar {
+ border: 2px $osd_fg_color;
+ }
+}
+
+.user-widget.vertical .user-icon {
+ icon-size: $base_icon_size * 6; // 128px
+
+ & StIcon {
+ padding: $base_padding * 3 + 2px; // 20px
+ padding-top: $base_padding * 3; // 18 px
+ padding-bottom: $base_padding * 3 + 4px; // 22px
+ width: $base_icon_size * 5.5; height: $base_icon_size * 5.5; // 88px;
+ }
+}
+
+.lightbox { background-color: black; }
+.flashspot { background-color: white; }
+
+
+// Hidden
+.hidden { color: rgba(0,0,0,0);}
+
+// Caps-lock warning
+.caps-lock-warning-label {
+ text-align: center;
+ padding-bottom: 8px;
+ @extend %caption;
+ color: $warning_color;
+}
+
+/* Workspace animation */
+
+.workspace-animation {
+ background-color: $system_bg_color;
+}
+
+/* Tiled window previews */
+.tile-preview {
+ background-color: transparentize($selected_bg_color,0.5);
+ border: 1px solid $selected_bg_color;
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_notifications.scss b/data/theme/43/gnome-shell-sass/widgets/_notifications.scss
new file mode 100644
index 00000000..86480a87
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_notifications.scss
@@ -0,0 +1,61 @@
+/* Notifications & Message Tray */
+
+$notification_banner_height: 64px;
+$notification_banner_width: 34em;
+$notification_banner_radius: $base_border_radius*1.5;
+
+// Banner notifications
+.notification-banner {
+ min-height: $notification_banner_height;
+ width: $notification_banner_width;
+ box-shadow: 0 2px 4px 2px $shadow_color;
+ border-radius: $notification_banner_radius;
+ margin: $base_margin;
+
+ .notification-actions {
+ spacing: 0;
+ }
+
+ .notification-button {
+ @extend %bubble_button;
+ }
+}
+
+// counter
+.summary-source-counter {
+ font-size: $base_font_size - 1pt;
+ font-weight: bold;
+ height: 1.6em;
+ width: 1.6em;
+ -shell-counter-overlap-x: 3px;
+ -shell-counter-overlap-y: 3px;
+ background-color: $selected_bg_color;
+ color: $selected_fg_color;
+ border: 2px solid $fg_color;
+ box-shadow: 0 2px 2px rgba(0,0,0,0.5);
+ border-radius: 0.9em; // should be 0.8 but whatever; wish I could do 50%;
+}
+
+// chat bubbles
+.chat-body { spacing: 5px; }
+.chat-response { margin: 5px; }
+.chat-log-message { color: darken($fg_color,10%); }
+.chat-new-group { padding-top: 1em; }
+.chat-received {
+ padding-left: 4px;
+ &:rtl { padding-left: 0px; padding-right: 4px; }
+}
+
+.chat-sent {
+ padding-left: 18pt;
+ color: lighten($fg_color, 15%);
+ &:rtl { padding-left: 0; padding-right: 18pt; }
+}
+
+.chat-meta-message {
+ padding-left: 4px;
+ @include fontsize($base_font_size - 2);
+ font-weight: bold;
+ color: lighten($fg_color,18%);
+ &:rtl { padding-left: 0; padding-right: 4px; }
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_osd.scss b/data/theme/43/gnome-shell-sass/widgets/_osd.scss
new file mode 100644
index 00000000..a8d1a55f
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_osd.scss
@@ -0,0 +1,64 @@
+/* OSD */
+
+$osd_levelbar_height:6px;
+
+.osd-window {
+ @extend %osd_panel;
+ @extend %heading;
+ text-align: center;
+ font-weight: bold;
+ spacing: $base_padding * 2; // 12px
+ padding: $base_padding * 2 $base_padding * 3;
+ & > * { spacing: 8px; }
+ margin-bottom: 4em;
+
+ StIcon { icon-size:$large_icon_size;}
+
+ StLabel {
+ &:ltr { margin-right: 6px; }
+ &:rtl { margin-left: 6px; }
+ }
+
+ .level {
+ margin-bottom: 4px;
+ &:first-child { margin-bottom: 0px; }
+
+ height: $osd_levelbar_height;
+ min-width:$base_icon_size * 10;
+ -barlevel-height: $osd_levelbar_height;
+ -barlevel-background-color: transparentize($osd_fg_color, if($variant=='light', 0.7, 0.9));
+ -barlevel-active-background-color: $osd_fg_color;
+ -barlevel-overdrive-color: $destructive_color;
+ -barlevel-overdrive-separator-width: 3px;
+ &:ltr { margin-right: 6px; }
+ &:rtl { margin-left: 6px; }
+ }
+}
+
+// Monitor number label
+.osd-monitor-label {
+ @extend %osd_panel;
+ border-radius: $modal_radius;
+ font-size: 3em;
+ font-weight: bold;
+ margin: $base_margin * 3;
+ text-align: center;
+ min-width: 1.3em;
+}
+
+/* Pad OSD */
+.pad-osd-window {
+ padding: 32px;
+ background-color: transparentize(#000, 0.2);
+
+ .pad-osd-title-box { spacing: 12px; }
+ .pad-osd-title-menu-box { spacing: 6px; }
+}
+
+.combo-box-label {
+ width: 15em;
+}
+
+.resize-popup {
+ @extend %osd_panel;
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_overview.scss b/data/theme/43/gnome-shell-sass/widgets/_overview.scss
new file mode 100644
index 00000000..d8e70eaf
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_overview.scss
@@ -0,0 +1,13 @@
+/* OVERVIEW */
+
+.controls-manager, .secondary-monitor-workspaces {
+ spacing: $base_padding * 2;
+}
+
+#overviewGroup {
+ background-color: $system_bg_color;
+}
+
+.overview-controls {
+ padding-bottom: 32px;
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_panel.scss b/data/theme/43/gnome-shell-sass/widgets/_panel.scss
new file mode 100644
index 00000000..fd3e7d2d
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_panel.scss
@@ -0,0 +1,233 @@
+/* Top Bar */
+// a.k.a. the panel
+
+$panel_bg_color: #000;
+$panel_fg_color: if($variant == 'light', lighten($bg_color, 10%), darken($fg_color, 5%));
+$panel_height: 2.2em;
+$panel_transition_duration: 250ms; // same as the overview transition duration
+
+#panel {
+ background-color: $panel_bg_color;
+ font-weight: bold;
+ height: $panel_height;
+ @extend %numeric;
+ transition-duration: $panel_transition_duration;
+
+ // transparent panel on lock & login screens
+ &.unlock-screen,
+ &.login-screen,
+ &:overview {
+ background-color: transparent;
+ }
+
+ // panel menus
+ .panel-button {
+ font-weight: bold;
+ color: $panel_fg_color;
+ -natural-hpadding: $base_padding * 2;
+ -minimum-hpadding: $base_padding;
+ transition-duration: 150ms;
+ border: 3px solid transparent;
+ border-radius: 99px;
+
+ &.clock-display {
+ .clock {
+ transition-duration: 150ms;
+ border: 3px solid transparent;
+ border-radius: 99px;
+ }
+ }
+
+ &.screen-recording-indicator {
+ box-shadow: inset 0 0 0 100px $screenshot_ui_button_red;
+ }
+ &.screen-sharing-indicator {
+ box-shadow: inset 0 0 0 100px $warning_color;
+ StBoxLayout { margin: 0 $base_padding; }
+ }
+
+ &.screen-recording-indicator,
+ &.screen-sharing-indicator {
+ StBoxLayout {
+ spacing: $base_padding;
+ }
+
+ StIcon {
+ icon-size: $base_icon_size;
+ }
+ }
+
+ &:active, &:overview, &:focus, &:checked {
+ box-shadow: inset 0 0 0 100px transparentize($panel_fg_color, 0.8);
+
+ // The clock display needs to have the background on .clock because
+ // we want to exclude the do-not-disturb indicator from the background
+ &.clock-display {
+ box-shadow: none;
+
+ .clock {
+ box-shadow: inset 0 0 0 100px transparentize($panel_fg_color, 0.8);
+ }
+ }
+
+ &.screen-recording-indicator {
+ box-shadow: inset 0 0 0 100px transparentize($screenshot_ui_button_red, 0.15);
+ }
+ &.screen-sharing-indicator {
+ box-shadow: inset 0 0 0 100px transparentize($warning_color, 0.15);
+ }
+ }
+
+ &:hover {
+ box-shadow: inset 0 0 0 100px transparentize($panel_fg_color, 0.85);
+ &.clock-display {
+ box-shadow: none;
+ .clock {
+ box-shadow: inset 0 0 0 100px transparentize($panel_fg_color, 0.85);
+ }
+ }
+
+ &.screen-recording-indicator {
+ box-shadow: inset 0 0 0 100px transparentize($screenshot_ui_button_red, 0.1);
+ }
+ &.screen-sharing-indicator {
+ box-shadow: inset 0 0 0 100px transparentize($warning_color, 0.1);
+ }
+ }
+
+ &:active:hover, &:overview:hover, &:focus:hover, &:checked:hover {
+ box-shadow: inset 0 0 0 100px transparentize($panel_fg_color, 0.75);
+ &.clock-display {
+ box-shadow: none;
+ .clock {
+ box-shadow: inset 0 0 0 100px transparentize($panel_fg_color, 0.75);
+ }
+ }
+
+ &.screen-recording-indicator {
+ box-shadow: inset 0 0 0 100px transparentize($screenshot_ui_button_red, 0.2);
+ }
+ &.screen-sharing-indicator {
+ box-shadow: inset 0 0 0 100px transparentize($warning_color, 0.2);
+ }
+ }
+
+ // status area icons
+ .system-status-icon {
+ icon-size: $base_icon_size;
+ padding: $base_padding - 1px;
+ margin: 0 $base_margin;
+ }
+
+ .panel-status-indicators-box .system-status-icon,
+ .panel-status-menu-box .system-status-icon {
+ margin: 0;
+ }
+
+ // app menu icon
+ .app-menu-icon {
+ -st-icon-style: symbolic;
+ // dimensions of the icon are hardcoded
+ }
+
+ panelActivities {
+ -natural-hpadding: $base_padding * 3;
+ }
+ }
+
+ &.unlock-screen,
+ &.login-screen,
+ &:overview {
+ .panel-button {
+ &:active, &:overview, &:focus, &:checked {
+ box-shadow: inset 0 0 0 100px rgba(255,255,255, 0.15);
+
+ &.clock-display {
+ box-shadow: none;
+
+ .clock {
+ box-shadow: inset 0 0 0 100px rgba(255,255,255, 0.15);
+ }
+ }
+
+ &.screen-recording-indicator {
+ box-shadow: inset 0 0 0 100px transparentize($screenshot_ui_button_red, 0.15);
+ }
+ &.screen-sharing-indicator {
+ box-shadow: inset 0 0 0 100px transparentize($warning_color, 0.15);
+ }
+ }
+
+ &:hover {
+ box-shadow: inset 0 0 0 100px rgba(255,255,255, 0.10);
+ &.clock-display {
+ box-shadow: none;
+ .clock {
+ box-shadow: inset 0 0 0 100px rgba(255,255,255, 0.10);
+ }
+ }
+
+ &.screen-recording-indicator {
+ box-shadow: inset 0 0 0 100px transparentize($screenshot_ui_button_red, 0.1);
+ }
+ &.screen-sharing-indicator {
+ box-shadow: inset 0 0 0 100px transparentize($warning_color, 0.1);
+ }
+ }
+
+ &:active:hover, &:overview:hover, &:focus:hover, &:checked:hover {
+ box-shadow: inset 0 0 0 100px rgba(255,255,255, 0.2);
+ &.clock-display {
+ box-shadow: none;
+ .clock {
+ box-shadow: inset 0 0 0 100px rgba(255,255,255, 0.2);
+ }
+ }
+
+ &.screen-recording-indicator {
+ box-shadow: inset 0 0 0 100px transparentize($screenshot_ui_button_red, 0.2);
+ }
+ &.screen-sharing-indicator {
+ box-shadow: inset 0 0 0 100px transparentize($warning_color, 0.2);
+ }
+ }
+ }
+ }
+
+ .panel-status-indicators-box,
+ .panel-status-menu-box {
+ spacing: 2px;
+ }
+
+ // spacing between power icon and (optional) percentage label
+ .power-status.panel-status-indicators-box {
+ spacing: 0;
+ }
+
+ // indicator for active
+ .screencast-indicator,
+ .remote-access-indicator { color: $warning_color; }
+}
+
+// App Menu
+#appMenu {
+ spacing: $base_padding;
+ .label-shadow { color: transparent; }
+}
+
+#appMenu .panel-status-menu-box {
+ padding: 0 $base_padding;
+ spacing: $base_padding;
+}
+
+
+// Clock
+
+.clock-display-box {
+ spacing: 2px;
+
+ .clock {
+ padding-left: $base_padding * 2;
+ padding-right: $base_padding * 2;
+ }
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_popovers.scss b/data/theme/43/gnome-shell-sass/widgets/_popovers.scss
new file mode 100644
index 00000000..138a4fc0
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_popovers.scss
@@ -0,0 +1,182 @@
+/* Popovers/Menus */
+
+// the popover itself
+.popup-menu-boxpointer {
+ -arrow-rise: $base_margin+2px; // distance from the panel & screen edge
+}
+
+// container of the popover menu
+.popup-menu {
+ min-width: 15em;
+ color: $fg_color;
+
+ //.popup-status-menu-item {font-weight: normal; color: pink;} //dunno what that is
+ &.panel-menu {
+ margin-bottom: 1.75em; // so it doesn't touch the bottom of the screen
+ }
+}
+
+// popover content
+.popup-menu-content {
+ padding: $base_padding;
+ border-radius: $modal_radius*1.25;
+ border: 1px solid $borders_edge;
+ box-shadow: 0 2px 4px 0 $shadow_color;
+ background-color: $bg_color;
+}
+
+// menu items
+.popup-menu-item {
+ padding: $base_padding*1.5 $base_padding*2;
+ border-radius: $base_border_radius*1.5;
+ spacing: $base_padding;
+ transition-duration: 100ms;
+ background-color: transparent;
+
+ &:ltr {padding-left: $base_padding;}
+ &:rtl {padding-right: $base_padding;}
+
+ &:focus, &:hover {
+ background-color: $hover_bg_color !important;
+ &:active { background-color: $active_bg_color !important;}
+ }
+
+ &:checked {background-color: $checked_bg_color !important;}
+
+ &:checked {
+ margin-bottom: 0;
+ box-shadow: inset 0 -1px 0 0 darken($checked_bg_color, 5%);
+ border-radius: $base_border_radius $base_border_radius 0 0;
+ &:focus,&:hover { background-color: lighten($checked_bg_color, 3%) !important;}
+ &:active { background-color: lighten($checked_bg_color, 5%) !important;}
+ }
+
+ &:active {
+ background-color: lighten($active_bg_color, 5%);
+ color: $active_fg_color;
+ }
+
+ &:insensitive {color: transparentize($fg_color,0.5);}
+
+ // add margin to switches in menu items
+ .toggle-switch {
+ &:ltr { margin-left: $base_margin;}
+ &:rtl { margin-right: $base_margin;}
+ }
+}
+
+
+// all other graphical elements (sliders)
+.popup-inactive-menu-item {
+ color: $fg_color;
+ &:insensitive { color: $insensitive_fg_color; }
+}
+
+// symbolic icons in popover
+.popup-menu-arrow,
+.popup-menu-icon {
+ icon-size: 16px !important; // for some reason the variable doesn't work here
+}
+
+.popup-menu-arrow {
+}
+
+
+// popover submenus
+.popup-sub-menu {
+ background-color: $checked_bg_color;
+ border-radius: 0 0 $base_border_radius $base_border_radius;
+
+ .popup-menu-ornament {
+ min-width: $base_icon_size !important;
+ }
+
+ // submenu specific styles
+ .popup-menu-item {
+ border-radius: 0;
+ margin: 0;
+
+ &:last-child {
+ border-radius: 0 0 $base_border_radius $base_border_radius;
+ }
+
+ &:focus,&:hover { background-color: $hover_bg_color !important;}
+ &:checked {
+ background-color: $checked_bg_color !important;
+ &:focus,&:hover { background-color: lighten($checked_bg_color, 8%) !important;}
+ }
+ &:active { background-color: $active_bg_color !important;}
+ }
+
+ .popup-menu-section {
+ .popup-menu-item:last-child {
+ &:hover,&:focus { border-radius: 0;}
+ }
+ &:last-child .popup-menu-item:last-child {
+ border-radius: 0 0 $base_border_radius $base_border_radius;
+ }
+ }
+}
+
+// container for radio and check boxes
+.popup-menu-ornament {
+ @extend %heading;
+ width: 1.2em;
+ text-align: center !important;
+
+ &:ltr { text-align: right;}
+ &:rtl { text-align: left;}
+}
+
+// separator
+.popup-separator-menu-item {
+ margin: 6px 0;
+ padding:0 !important;
+ &:ltr { margin-right: $base_margin;}
+ &:rtl { margin-left: $base_margin;}
+
+ .popup-separator-menu-item-separator {
+ height: 1px; //not really the whole box
+ background-color: $borders_color;
+ }
+
+ .popup-menu-ornament {
+ width: 0 !important;
+ }
+
+ // separators in submenus
+ .popup-sub-menu & {
+ background-color: transparent;
+
+ // account for ornament
+ &:ltr { margin-right: 2.5em;}
+ &:rtl { margin-left: 2.5em;}
+
+ .popup-separator-menu-item-separator {
+ background-color: lighten($borders_color, 7%);
+ }
+ }
+}
+
+// desktop background menu
+.background-menu {
+ -boxpointer-gap: 0px;
+ -arrow-rise: 0px; // hide the beak on the menu
+}
+
+// right-click (and panel) app menu
+.app-menu {
+ max-width: 27.25em;
+
+ // this is unneeded at the top-level in this menu, hide it
+ .popup-menu-ornament { width: 0 !important; }
+
+ .popup-inactive-menu-item:first-child {
+ // "Open Windows" label
+ > StLabel {
+ @extend %caption_heading;
+ &:ltr {margin-right: $base_margin*2;}
+ &:rtl {margin-left: $base_margin*2;}
+ }
+ }
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_quick-settings.scss b/data/theme/43/gnome-shell-sass/widgets/_quick-settings.scss
new file mode 100644
index 00000000..4e84cdf6
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_quick-settings.scss
@@ -0,0 +1,118 @@
+.quick-settings {
+ padding: $base_padding*3;
+ border-radius: $modal_radius*2.25;
+
+ .icon-button, .button {
+ padding: $base_padding*1.75;
+ }
+}
+
+.quick-settings-grid {
+ spacing-rows: $base_padding*2;
+ spacing-columns: $base_padding*2;
+}
+
+.quick-toggle {
+ border-radius: 99px;
+ min-width: 12em;
+ max-width: 12em;
+ min-height: 40px;
+ border:none;
+
+ &:checked { @include button(default); }
+
+ & > StBoxLayout { spacing: $base_padding; }
+
+ /* Move padding into the box; this is to allow menu arrows
+ to extend to the border */
+ &.button { padding: 0; }
+ & > StBoxLayout { padding: 0 $base_padding*2; }
+ &:ltr > StBoxLayout { padding-left: $base_padding*2.5; }
+ &:rtl > StBoxLayout { padding-right: $base_padding*2.5; }
+
+ .quick-toggle-label { font-weight: bold; }
+ .quick-toggle-icon, .quick-toggle-arrow { icon-size: $base_icon_size; }
+}
+
+.quick-menu-toggle {
+ &:ltr > StBoxLayout { padding-right: 0; }
+ &:rtl > StBoxLayout { padding-left: 0; }
+
+ & .quick-toggle-arrow {
+ background-color: transparentize($fg_color, 0.9);
+ padding: $base_padding $base_padding*1.75;
+
+ &:ltr { border-radius: 0 99px 99px 0; }
+ &:rtl { border-radius: 99px 0 0 99px; }
+ }
+}
+
+.quick-slider {
+ padding: 0 $base_padding;
+
+ & > StBoxLayout { spacing: $base_padding; }
+
+ .slider-bin {
+ &:focus {@include button(focus);}
+ min-height: 16px; // slider size
+ padding: $base_padding;
+ border-radius: 99px;
+ }
+ .quick-toggle-icon { icon-size: $base_icon_size; }
+ .icon-button { background-color: transparent; }
+}
+
+.quick-toggle-menu {
+ background-color: $card_bg_color;
+ border-radius: $base_border_radius*3;
+ padding: $base_padding*2;
+ margin: $base_padding*2 $base_padding*3 0;
+
+ .popup-menu-item > StIcon { -st-icon-style: symbolic; }
+
+ & .header {
+ spacing-rows: 0.5 * $base_padding;
+ spacing-columns: $base_padding*2;
+ padding-bottom: 2 * $base_padding;
+
+ & .icon {
+ icon-size: $base_icon_size*1.5; // a non-standard symbolic size but ok
+ border-radius: 999px;
+ padding: 1.5 * $base_padding;
+ background-color: lighten($bg_color, 10%);
+
+ &.active { background-color: $selected_bg_color; }
+ }
+
+ & .title {
+ @extend %title_3;
+ }
+
+ & .subtitle {
+ @extend %caption_heading;
+ }
+ }
+}
+
+.quick-toggle-menu-container {
+}
+
+.quick-settings-system-item {
+ & > StBoxLayout { spacing: 2 * $base_padding; }
+
+ .icon-button > StIcon { -st-icon-style: symbolic; }
+
+ & .power-item {
+ min-height: 0;
+ min-width: 0;
+
+ &:insensitive {
+ @include button(normal);
+ background-color: transparent;
+ }
+ }
+}
+
+.nm-network-item {
+ .wireless-secure-icon { icon-size: 0.5 * $base_icon_size; }
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_screen-shield.scss b/data/theme/43/gnome-shell-sass/widgets/_screen-shield.scss
new file mode 100644
index 00000000..a459ba16
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_screen-shield.scss
@@ -0,0 +1,78 @@
+/* Screen Shield */
+
+.unlock-dialog-clock {
+ color: white;
+ font-weight: 300;
+ text-align: center;
+ spacing: 24px;
+ padding-bottom: 2.5em;
+}
+
+.unlock-dialog-clock-time {
+ font-size: 64pt;
+ padding-top: 42px;
+ @extend %numeric;
+}
+
+.unlock-dialog-clock-date {
+ font-size: 16pt;
+ font-weight: normal;
+}
+
+.unlock-dialog-clock-hint {
+ font-weight: normal;
+ padding-top: 48px;
+}
+
+.unlock-dialog-notifications-container {
+ margin: 12px;
+ spacing: 6px;
+ width: 23em;
+ background-color: transparent;
+
+ .summary-notification-stack-scrollview {
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .notification,
+ .unlock-dialog-notification-source {
+ padding: 12px 16px;
+ border: none;
+ background-color: transparentize($osd_fg_color,0.9);
+ color: $osd_fg_color;
+ border-radius: $modal_radius;
+
+ &.critical { background-color: transparentize($osd_fg_color,0.8) }
+ }
+}
+
+.unlock-dialog-notification-label {
+ padding-left: 12px;
+ padding-right: 0;
+ &:rtl { padding-right: 12px; padding-left: 0; }
+}
+
+.unlock-dialog-notification-count-text {
+ font-weight: bold;
+ padding: 0 12px;
+ color: $osd_fg_color;
+ background-color: transparentize($osd_fg_color, 0.9);
+ border-radius: 99px;
+}
+
+.screen-shield-background { //just the shadow, really
+ background: black;
+ box-shadow: 0 2px 4px rgba(0,0,0,0.6);
+}
+
+#lockDialogGroup {
+ background-color: $system_bg_color;
+}
+#unlockDialogNotifications {
+ StButton#vhandle, StButton#hhandle {
+ background-color: transparentize($bg_color,0.7);
+ &:hover, &:focus { background-color: transparentize($bg_color,0.5); }
+ &:active { background-color: transparentize($selected_bg_color,0.5); }
+ }
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_screenshot.scss b/data/theme/43/gnome-shell-sass/widgets/_screenshot.scss
new file mode 100644
index 00000000..150f273b
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_screenshot.scss
@@ -0,0 +1,204 @@
+// Screenshot UI
+.icon-label-button-container {
+ spacing: $base_padding;
+ @extend %caption;
+
+ StIcon { icon-size: 32px;}
+}
+
+$screenshot_ui_panel_padding: $base_padding*3;
+$screenshot_ui_shot_cast_margin: 21px;
+$screenshot_ui_panel_border_radius: $modal_radius + $screenshot_ui_shot_cast_margin;
+$screenshot_ui_shot_cast_spacing: 3px;
+
+$screenshot_ui_button_red: $error_color;
+
+.screenshot-ui-panel {
+ @extend %osd_panel;
+ border-radius: $screenshot_ui_panel_border_radius;
+ padding: $screenshot_ui_panel_padding;
+ // Reduce the bottom padding a little to accommodate the large capture button.
+ padding-bottom: $screenshot_ui_panel_padding - 6px;
+ margin-bottom: 4em;
+ spacing: $base_padding * 2;
+}
+
+.screenshot-ui-close-button {
+ @extend .window-close; // copy window close button
+ padding: $base_padding !important; // but with more padding
+ margin-top: 12px;
+ box-shadow: 0 2px 4px 0 $shadow_color;
+ &.left { margin-left: 12px;}
+ &.right { margin-right: 12px;}
+}
+
+.screenshot-ui-type-button {
+ @extend %osd_button;
+ min-width: 48px;
+ padding: $base_padding * 2 $base_padding * 3 !important;
+ border-radius: $screenshot_ui_panel_border_radius - $screenshot_ui_panel_padding;
+}
+
+.screenshot-ui-capture-button {
+ width: 36px;
+ height: 36px;
+ border-radius: 99px;
+ border: 4px $osd_fg_color;
+ padding: 4px;
+
+ .screenshot-ui-capture-button-circle {
+ background-color: $osd_fg_color;
+ transition-duration: 200ms;
+ &:hover, &:focus { background-color: $hover_bg_color;}
+ border-radius: 99px;
+ }
+
+ &:hover, &:focus {
+ .screenshot-ui-capture-button-circle {
+ background-color: darken($osd_fg_color, 15%);
+ }
+ }
+
+ &:active {
+ .screenshot-ui-capture-button-circle {
+ background-color: darken($osd_fg_color, 50%);
+ }
+ }
+
+ &:cast {
+ .screenshot-ui-capture-button-circle {
+ background-color: $screenshot_ui_button_red;
+ }
+ &:hover, &:focus {
+ .screenshot-ui-capture-button-circle {
+ background-color: lighten($screenshot_ui_button_red, 5%);
+ }
+ }
+ &:active {
+ .screenshot-ui-capture-button-circle {
+ background-color: darken($screenshot_ui_button_red, 7%);
+ }
+ }
+ }
+}
+
+.screenshot-ui-shot-cast-container {
+ background-color: lighten($osd_bg_color,5%);
+ border-radius: $modal_radius;
+ padding: $screenshot_ui_shot_cast_spacing;
+ spacing: $screenshot_ui_shot_cast_spacing;
+
+ &:ltr { margin-left: $screenshot_ui_shot_cast_margin - $screenshot_ui_panel_padding;}
+ &:rtl { margin-right: $screenshot_ui_shot_cast_margin - $screenshot_ui_panel_padding;}
+}
+
+.screenshot-ui-shot-cast-button {
+ padding: $base_padding $base_padding*2;
+ background-color: transparent;
+ &:hover, &:focus { background-color: lighten($osd_bg_color, 10%);}
+ &:active { background-color: lighten($active_bg_color,5%);}
+ &:checked { background-color: white;color: black;}
+ &:insensitive { color: transparentize($osd_fg_color, 0.5);}
+
+ border-radius: $modal_radius - $screenshot_ui_shot_cast_spacing;
+
+ StIcon { icon-size: $base_icon_size;}
+}
+
+.screenshot-ui-show-pointer-button {
+ @extend %osd_button;
+ border-radius: 99px;
+ padding: $base_padding * 2 !important;
+ StIcon { icon-size: $base_icon_size;}
+}
+
+.screenshot-ui-area-indicator-shade {
+ background-color: rgba(0,0,0,.3);
+}
+
+.screenshot-ui-area-selector {
+ .screenshot-ui-area-indicator-shade {
+ background-color: rgba(0,0,0,.5);
+ }
+
+ .screenshot-ui-area-indicator-selection {
+ border: 2px white;
+ }
+}
+
+.screenshot-ui-area-selector-handle {
+ border-radius: 99px;
+ background-color: white;
+ box-shadow: 0 1px 3px 2px rgba(0,0,0,0.2);
+ width: 24px;
+ height: 24px;
+}
+
+.screenshot-ui-window-selector {
+ background-color: $system_bg_color;
+
+ .screenshot-ui-window-selector-window-container {
+ margin: 100px;
+ }
+
+ &:primary-monitor {
+ .screenshot-ui-window-selector-window-container {
+ // Make some room for the panel.
+ margin-bottom: 200px;
+ }
+ }
+}
+
+.screenshot-ui-window-selector-window-border {
+ transition-duration: 200ms;
+ border-radius: $modal_radius;
+ border: 6px transparent;
+}
+
+.screenshot-ui-window-selector-check {
+ transition-duration: 200ms;
+ color: transparent;
+ border-radius: 99px;
+ border-width: 12px;
+ icon-size: 24px;
+}
+
+.screenshot-ui-window-selector-window {
+ &:hover {
+ .screenshot-ui-window-selector-window-border {
+ border-color: darken($selected_bg_color, 15%);
+ }
+ }
+ &:checked {
+ .screenshot-ui-window-selector-window-border {
+ border-color: $selected_bg_color;
+ background-color: transparentize($selected_bg_color, 0.8);
+ }
+
+ .screenshot-ui-window-selector-check {
+ color: $selected_fg_color;
+ background-color: $selected_bg_color;
+ }
+ }
+}
+
+.screenshot-ui-screen-selector {
+ transition-duration: 200ms;
+ background-color: rgba(0,0,0,.5);
+
+ &:hover { background-color: rgba(0,0,0,.3);}
+ &:active { background-color: rgba(0,0,0,.7);}
+ &:checked {
+ background-color: transparent;
+ border: 2px white;
+ }
+}
+
+.screenshot-ui-tooltip {
+ color: $osd_fg_color;
+ background-color: $osd_bg_color;
+ border-radius: 99px;
+ padding: $base_padding $base_padding * 2;
+ text-align: center;
+ -y-offset: 24px;
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_scrollbars.scss b/data/theme/43/gnome-shell-sass/widgets/_scrollbars.scss
new file mode 100644
index 00000000..77cde653
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_scrollbars.scss
@@ -0,0 +1,29 @@
+/* Scrollbars */
+
+StScrollView {
+ &.vfade { -st-vfade-offset: 68px; }
+ &.hfade { -st-hfade-offset: 68px; }
+}
+
+StScrollBar {
+ padding: 0;
+
+ StScrollView & {
+ min-width: 8px;
+ min-height: 8px;
+ }
+
+ StBin#trough {
+ border-radius: 0;
+ background-color: transparent;
+ }
+
+ StButton#vhandle, StButton#hhandle {
+ border-radius: 8px;
+ background-color: mix($fg_color, $bg_color, 30%);
+ border: 3px solid transparent; //would be nice to margin or at least to transparent
+ transition: 500ms all ease;
+ &:hover {background-color: mix($fg_color, $bg_color, 50%);}
+ &:active {background-color: mix($fg_color, $bg_color, 40%);}
+ }
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_search-entry.scss b/data/theme/43/gnome-shell-sass/widgets/_search-entry.scss
new file mode 100644
index 00000000..faca50e4
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_search-entry.scss
@@ -0,0 +1,26 @@
+// Search entry
+
+$search_entry_width: 320px;
+$search_entry_height: 36px;
+
+%search_entry,
+.search-entry {
+ border-radius: $search_entry_height * 0.5; // half the height
+
+ margin-top: $base_padding * 2;
+ margin-bottom: $base_padding;
+ padding: $base_padding+1 $base_padding+3;
+ width: $search_entry_width;
+
+ @include entry(normal);
+ &:hover { @include entry(hover);}
+ &:focus { @include entry(focus);}
+ &:insensitive { @include entry(insensitive);}
+
+ .search-entry-icon {
+ color: inherit;
+ icon-size: $base_icon_size;
+ margin-top: 2px; // center vertically
+ padding: 0 4px;
+ }
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_search-results.scss b/data/theme/43/gnome-shell-sass/widgets/_search-results.scss
new file mode 100644
index 00000000..644c53db
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_search-results.scss
@@ -0,0 +1,96 @@
+/* Search */
+
+// search overview container
+#searchResults {
+ margin: 0 $base_margin;
+}
+
+#searchResultsContent {
+ max-width: 1072px;
+}
+
+// search results sections "the boxes"
+.search-section {
+ // This should be equal to #searchResultsContent spacing
+ spacing: $base_padding*3;
+
+ // separator (unstyled)
+ .search-section-separator {
+ height: $base_margin*2; // use it as a spacer
+ background-color: transparent;
+ }
+}
+
+// content
+.search-section-content {
+ background-color: lighten($system_bg_color, 5%);
+ border-radius: $modal_radius*1.5;
+ border: 1px solid $osd_outer_borders_color;
+ color: $osd_fg_color;
+ padding: $base_padding*2;
+ margin:0 $base_margin*3;
+}
+
+%search_section_content_item {
+ @include tile_button($osd_fg_color);
+ border-radius: $base_border_radius+3px;
+}
+
+// "no results" text
+.search-statustext {
+ @extend %title_1;
+}
+
+.grid-search-results {
+ spacing: $base_padding*5;
+ margin:0 $base_margin*3;
+}
+
+// Search results with icons
+.grid-search-result {
+ @extend .app-well-app;
+}
+
+// search result provider
+.search-provider-icon {
+ @extend %search_section_content_item;
+ &:ltr {margin-right: $base_margin;}
+ &:rtl {margin-left: $base_margin;}
+
+ // content
+ .list-search-provider-content {
+ spacing: $base_padding * 2;
+
+ // provider labels
+ .list-search-provider-details {
+ width: 120px;
+ color: $osd_fg_color;
+ }
+ }
+}
+
+// search results list
+.list-search-results {
+ spacing: $base_padding;
+}
+
+// search result listitem
+.list-search-result {
+ @extend %search_section_content_item;
+
+ // content
+ .list-search-result-content {
+ spacing: $base_padding;
+ }
+
+ // list item title (with leading icon)
+ .list-search-result-title {
+ spacing: $base_padding * 2;
+ // font-weight: bold;
+ }
+
+ // list item description
+ .list-search-result-description {
+ color: $osd_insensitive_fg_color;
+ }
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_slider.scss b/data/theme/43/gnome-shell-sass/widgets/_slider.scss
new file mode 100644
index 00000000..500249aa
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_slider.scss
@@ -0,0 +1,22 @@
+/* Slider */
+
+$slider_size: 16px;
+
+.slider {
+ // slider trough
+ -barlevel-height: 4px;
+ -barlevel-background-color: if($variant == 'light', transparentize($fg_color, 0.6), transparentize($fg_color, 0.8)); //background of the trough
+ -barlevel-border-width: 2px;
+ -barlevel-border-color: transparent; // trough border color
+ // fill style
+ -barlevel-active-background-color: $selected_bg_color;
+ -barlevel-active-border-color: transparent;
+ // overfill style (red in this case)
+ -barlevel-overdrive-color: $destructive_color;
+ -barlevel-overdrive-border-color: transparent; //trough border when red;
+ -barlevel-overdrive-separator-width:1px;
+ // slider handler
+ -slider-handle-radius: $slider_size * 0.5; // half the size of the size
+ -slider-handle-border-width: 0;
+ -slider-handle-border-color: transparent; // because 0 width
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_switcher-popup.scss b/data/theme/43/gnome-shell-sass/widgets/_switcher-popup.scss
new file mode 100644
index 00000000..cec6c9aa
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_switcher-popup.scss
@@ -0,0 +1,72 @@
+/* App Switcher */
+
+// same as dash
+$switcher_padding: $base_padding + 4px; // 10px
+$switcher_border_radius: $modal_radius + 8px;
+
+
+// the full screen container of the switcher
+.switcher-popup {
+ padding: 0;
+ spacing: $base_padding * 4;
+}
+
+// switcher onscreen panel
+.switcher-list {
+ @extend %osd_panel;
+ padding: $switcher_padding;
+ border-radius: $switcher_border_radius;
+ box-shadow: 0 8px 8px 0 rgba(0,0,0,0.1);
+
+ // container for items in list
+ .switcher-list-item-container {
+ spacing: $base_padding * 2;
+ }
+
+ // each item in the list
+ .item-box {
+ @include tile_button($osd_fg_color);
+ // override over style so mouse doesn't steal focus
+ &:hover {background: none;}
+ }
+
+ .separator {
+ width: 1px;
+ background: $borders_color;
+ }
+
+ // container of thumbnails
+ .thumbnail-box {
+ padding: 2px;
+ spacing: $base_padding;
+ }
+
+ // window thumbnail itself
+ .thumbnail {
+ width: 256px; // equal to THUMBNAIL_DEFAULT_SIZE in altTab.js
+ border-radius:$base_border_radius;
+ }
+}
+
+// arrow if app has multiple windows
+.switcher-arrow {
+ border-color: transparentize($osd_fg_color, 0.2);
+ color: transparentize($osd_fg_color, 0.2);
+
+ &:highlighted {
+ border-color: $osd_fg_color;
+ color: $osd_fg_color;
+ }
+}
+
+// Input Source Switcher
+.input-source-switcher-symbol {
+ font-size: 34pt;
+ width: 96px;
+ height: 96px;
+}
+
+// Window cycler highlight
+.cycler-highlight {
+ border: 5px solid $selected_bg_color;
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_switches.scss b/data/theme/43/gnome-shell-sass/widgets/_switches.scss
new file mode 100644
index 00000000..b6d8fe83
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_switches.scss
@@ -0,0 +1,16 @@
+/* Switches */
+
+// these are equal to the size of the SVG assets
+$switch_height: 26px;
+$switch_width: 48px;
+
+.toggle-switch {
+ color: $fg_color;
+ height: $switch_height;
+ width: $switch_width;
+ background-size: contain;
+ background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/toggle-off-light.svg"),url("resource:///org/gnome/shell/theme/toggle-off.svg"));
+ &:checked {
+ background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/toggle-on-light.svg"),url("resource:///org/gnome/shell/theme/toggle-on.svg"));
+ }
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_window-picker.scss b/data/theme/43/gnome-shell-sass/widgets/_window-picker.scss
new file mode 100644
index 00000000..9067a6d4
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_window-picker.scss
@@ -0,0 +1,53 @@
+/* Window Picker */
+
+$window_picker_spacing: $base_padding; // 6px
+$window_picker_padding: $base_padding * 2; // 12px
+
+$window_thumbnail_label_color: transparentize($osd_bg_color, 0.4);
+
+$window_close_button_color: transparentize(lighten($osd_bg_color, 7%), .02);
+$window_close_button_size: 30px;
+$window_close_button_padding: 3px;
+
+// Window picker
+.window-picker {
+ // Space between window thumbnails
+ spacing: $window_picker_spacing;
+}
+
+// Window titles
+.window-caption {
+ color: $osd_fg_color;
+ background-color: lighten($osd_bg_color, 5%);
+ border-radius: 99px;
+ padding: $base_padding $base_padding * 2;
+}
+
+// Close button
+.window-close {
+ background-color: $window_close_button_color;
+ color: $osd_fg_color;
+ border-radius: 99px;
+ box-shadow: 0 2px 4px 0 $shadow_color;
+ padding: $window_close_button_padding;
+ height: $window_close_button_size;
+ width: $window_close_button_size;
+ transition-duration: 100ms;
+
+ & StIcon { icon-size: 24px; } // uses non standard icon size
+
+ &:hover {
+ background-color: lighten($window_close_button_color, 7%);
+ }
+
+ &:active {
+ background-color: lighten($window_close_button_color, 13%);
+ }
+}
+
+.workspace-background {
+ // keep in sync with BACKGROUND_CORNER_RADIUS_PIXELS in workspace.js
+ border-radius: 30px;
+ background-color: $invisible_occluded_bg_color;
+ box-shadow: 0 4px 16px 4px transparentize(darken($osd_bg_color, 30%), 0.7);
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_workspace-switcher.scss b/data/theme/43/gnome-shell-sass/widgets/_workspace-switcher.scss
new file mode 100644
index 00000000..f06130ba
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_workspace-switcher.scss
@@ -0,0 +1,25 @@
+/* Workspace Switcher */
+
+$ws_indicator_height: $large_icon_size;
+$ws_dot_active: $ws_indicator_height / 3;
+$ws_dot_inactive: $ws_indicator_height / 6;
+
+.workspace-switcher {
+ @extend %osd_panel;
+ margin-bottom: 4em;
+ spacing: $base_padding * 2;
+ padding: $base_padding * 2 $base_padding * 3;
+}
+
+.ws-switcher-indicator {
+ background-color: transparentize($osd_fg_color,0.5);
+ padding: $ws_dot_inactive / 2;
+ margin: ($ws_indicator_height - $ws_dot_inactive) / 2;
+ border-radius: $ws_indicator_height;
+
+ &:active {
+ background-color: $osd_fg_color;
+ padding: $ws_dot_active / 2;
+ margin: ($ws_indicator_height - $ws_dot_active) / 2;
+ }
+}
diff --git a/data/theme/43/gnome-shell-sass/widgets/_workspace-thumbnails.scss b/data/theme/43/gnome-shell-sass/widgets/_workspace-thumbnails.scss
new file mode 100644
index 00000000..0a1867cc
--- /dev/null
+++ b/data/theme/43/gnome-shell-sass/widgets/_workspace-thumbnails.scss
@@ -0,0 +1,28 @@
+/* Workspace pager */
+
+// thumbnails in overview
+.workspace-thumbnails {
+ visible-width: 32px; //amount visible before hover
+ spacing: $base_padding;
+ padding: $base_padding;
+
+ .workspace-thumbnail {
+ @extend %overview_panel;
+ border-radius: 3px;
+ }
+
+ // drag and drop indicator
+ .placeholder {
+ background-image: url("resource:///org/gnome/shell/theme/workspace-placeholder.svg");
+ background-size: contain;
+ width: 18px;
+ }
+}
+
+// selected indicator
+.workspace-thumbnail-indicator {
+ border: 3px solid $selected_bg_color;
+ border-radius: 3px;
+ padding: 0px;
+ // background-color: transparentize($selected_bg_color, 0.9);
+}
diff --git a/data/theme/43/gnome-shell-start.svg b/data/theme/43/gnome-shell-start.svg
new file mode 100644
index 00000000..af139cf0
--- /dev/null
+++ b/data/theme/43/gnome-shell-start.svg
@@ -0,0 +1,343 @@
+
+
diff --git a/data/theme/43/gnome-shell.scss b/data/theme/43/gnome-shell.scss
new file mode 100644
index 00000000..8ee49991
--- /dev/null
+++ b/data/theme/43/gnome-shell.scss
@@ -0,0 +1,6 @@
+$variant: 'dark';
+
+@import "gnome-shell-sass/_colors"; //use gtk colors
+@import "gnome-shell-sass/_drawing";
+@import "gnome-shell-sass/_common";
+@import "gnome-shell-sass/_widgets";
diff --git a/data/theme/43/meson.build b/data/theme/43/meson.build
new file mode 100644
index 00000000..e6c1723d
--- /dev/null
+++ b/data/theme/43/meson.build
@@ -0,0 +1,62 @@
+theme_sources = files([
+ 'gnome-shell-high-contrast.scss',
+ 'gnome-shell.scss',
+ 'gnome-shell-sass/_colors.scss',
+ 'gnome-shell-sass/_common.scss',
+ 'gnome-shell-sass/_drawing.scss',
+ 'gnome-shell-sass/_high-contrast-colors.scss',
+ 'gnome-shell-sass/_widgets.scss',
+ 'gnome-shell-sass/widgets/_a11y.scss',
+ 'gnome-shell-sass/widgets/_app-grid.scss',
+ 'gnome-shell-sass/widgets/_base.scss',
+ 'gnome-shell-sass/widgets/_buttons.scss',
+ 'gnome-shell-sass/widgets/_calendar.scss',
+ 'gnome-shell-sass/widgets/_check-box.scss',
+ 'gnome-shell-sass/widgets/_corner-ripple.scss',
+ 'gnome-shell-sass/widgets/_dash.scss',
+ 'gnome-shell-sass/widgets/_dialogs.scss',
+ 'gnome-shell-sass/widgets/_entries.scss',
+ 'gnome-shell-sass/widgets/_hotplug.scss',
+ 'gnome-shell-sass/widgets/_ibus-popup.scss',
+ 'gnome-shell-sass/widgets/_keyboard.scss',
+ 'gnome-shell-sass/widgets/_login-dialog.scss',
+ 'gnome-shell-sass/widgets/_looking-glass.scss',
+ 'gnome-shell-sass/widgets/_message-list.scss',
+ 'gnome-shell-sass/widgets/_misc.scss',
+ 'gnome-shell-sass/widgets/_notifications.scss',
+ 'gnome-shell-sass/widgets/_osd.scss',
+ 'gnome-shell-sass/widgets/_overview.scss',
+ 'gnome-shell-sass/widgets/_panel.scss',
+ 'gnome-shell-sass/widgets/_popovers.scss',
+ 'gnome-shell-sass/widgets/_quick-settings.scss',
+ 'gnome-shell-sass/widgets/_screen-shield.scss',
+ 'gnome-shell-sass/widgets/_screenshot.scss',
+ 'gnome-shell-sass/widgets/_scrollbars.scss',
+ 'gnome-shell-sass/widgets/_search-entry.scss',
+ 'gnome-shell-sass/widgets/_search-results.scss',
+ 'gnome-shell-sass/widgets/_slider.scss',
+ 'gnome-shell-sass/widgets/_switcher-popup.scss',
+ 'gnome-shell-sass/widgets/_switches.scss',
+ 'gnome-shell-sass/widgets/_window-picker.scss',
+ 'gnome-shell-sass/widgets/_workspace-switcher.scss',
+ 'gnome-shell-sass/widgets/_workspace-thumbnails.scss'
+])
+
+stylesheets = [
+ 'gnome-shell-high-contrast.css',
+ 'gnome-shell.css'
+]
+
+foreach stylesheet: stylesheets
+ if not fs.exists(stylesheet)
+ sassc = find_program('sassc')
+ theme_deps += custom_target(stylesheet,
+ input: fs.replace_suffix(stylesheet, '.scss'),
+ output: stylesheet,
+ command: [
+ sassc, '-a', '@INPUT@', '@OUTPUT@'
+ ],
+ depend_files: theme_sources)
+ endif
+endforeach
+
diff --git a/data/theme/43/pad-osd.css b/data/theme/43/pad-osd.css
new file mode 100644
index 00000000..e0c90484
--- /dev/null
+++ b/data/theme/43/pad-osd.css
@@ -0,0 +1,29 @@
+.Leader {
+ stroke-width: .5 !important;
+ stroke: #535353;
+ fill: none !important;
+}
+
+.Button {
+ stroke-width: .25;
+ stroke: #ededed;
+ fill: #ededed;
+}
+
+.Ring {
+ stroke-width: .5 !important;
+ stroke: #535353 !important;
+ fill: none !important;
+}
+
+.Label {
+ stroke: none !important;
+ stroke-width: .1 !important;
+ fill: transparent !important;
+}
+
+.TouchStrip, .TouchRing {
+ stroke-width: .1 !important;
+ stroke: #ededed !important;
+ fill: #535353 !important;
+}
diff --git a/data/theme/43/process-working.svg b/data/theme/43/process-working.svg
new file mode 100644
index 00000000..920a67d2
--- /dev/null
+++ b/data/theme/43/process-working.svg
@@ -0,0 +1,3084 @@
+
+
+
+
diff --git a/data/theme/43/running-indicator.svg b/data/theme/43/running-indicator.svg
new file mode 100644
index 00000000..ebe7ecfc
--- /dev/null
+++ b/data/theme/43/running-indicator.svg
@@ -0,0 +1,130 @@
+
+
+
+
diff --git a/data/theme/43/toggle-off-hc.svg b/data/theme/43/toggle-off-hc.svg
new file mode 100644
index 00000000..036794f5
--- /dev/null
+++ b/data/theme/43/toggle-off-hc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/43/toggle-off-light.svg b/data/theme/43/toggle-off-light.svg
new file mode 100644
index 00000000..14cb4246
--- /dev/null
+++ b/data/theme/43/toggle-off-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/43/toggle-off.svg b/data/theme/43/toggle-off.svg
new file mode 100644
index 00000000..323f73b9
--- /dev/null
+++ b/data/theme/43/toggle-off.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/43/toggle-on-hc.svg b/data/theme/43/toggle-on-hc.svg
new file mode 100644
index 00000000..2d553c64
--- /dev/null
+++ b/data/theme/43/toggle-on-hc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/43/toggle-on-light.svg b/data/theme/43/toggle-on-light.svg
new file mode 100644
index 00000000..f3dbf315
--- /dev/null
+++ b/data/theme/43/toggle-on-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/43/toggle-on.svg b/data/theme/43/toggle-on.svg
new file mode 100644
index 00000000..215760fa
--- /dev/null
+++ b/data/theme/43/toggle-on.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/theme/43/workspace-placeholder.svg b/data/theme/43/workspace-placeholder.svg
new file mode 100644
index 00000000..ff5dc92c
--- /dev/null
+++ b/data/theme/43/workspace-placeholder.svg
@@ -0,0 +1,119 @@
+
+
diff --git a/data/theme/README.md b/data/theme/README.md
new file mode 100644
index 00000000..9c07ed4e
--- /dev/null
+++ b/data/theme/README.md
@@ -0,0 +1,682 @@
+# GNOME Shell themes
+
+This directory contains the themes for GNOME Shell. The themes was taken from [avanishsubbiah/material-you-theme](https://github.com/avanishsubbiah/material-you-theme).
+
+## License
+
+```
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
+```