Mojave introduces the concept of a dynamic desktop. Some of the things implemented here are health oriented.
- Dyanmic Wallpapers that change with time of day
- Gnome does this
/usr/share/backgrounds/gnome
- Gnome does this
- System wide dark mode
- Gnome does this, however it is not implemented in many themes.
- Application support is improving with this as they use newer gtk libs
- I will need to look into the gtk architecture as I scale this up
- Dark resources are masked using gamma levels from the current background
- This eleminates the issues of greys not ever looking uniform between gnome shell themes
- According to the patrickcoffey blog I can override .css elements for the shell using this. I could in theory fork most of the default shell theme for dark mode and use an extension to modify the grey.
This is an effort to create a content aware dark mode for gnome.
- Some notes on Gnome Shell themes here. Likely depreciated.
- gnome-shell theme elements are now part of gtk-3.0.
/usr/share/themes/Aadwaita/gtk-3.0/gtk.css
- Peek might be a good source on how to get the region under a screen area. They also explain that
xwayland
must be used in order for it to work on native wayland sessions at this moment. - See this line in Flameshot which imports a utility from the KDE framework.
- Blur is is considered by Apple an integral characteristic in Dark mode design. I should look into the efficacy of the css blur property.
- Button click states now lighten when active in dark mode
- Group boxes are almost the same color however 'illuminate' their
border-radius
so as to introduce the depth needed in dark mode - Shadows are modified see shadows
9:54 Dark-Mode is Content Focused Application design uses light elements carefully so as not to distract focus from content.
Mail offers an option. It would be nice to add a background option to geary to or even have it pull gnome or gtk's css color setting.
Implemneting Desktop Tinting should be the majority of the work in this project.
- Take sample of desktop portion that is behind the window (mutter/gtk)
- Derive average color for that x/y area
- Blend that average color with the dark-mode gray (css/js?)
- This final gray is used as the window-background property (css)
- Controls inherit some of this themeing because they do not use a full 100% opacity. This enables some of the tinted colors to leech into their blacks, grays, and whites. (gtk/css?)
2 Shadows, diffused-shadow and rim-shadow
- Rim shadow in dark mode is slightly crisper and higher (z index and contast / blur radius)
- Stroke is added to the inner rim of the rim-shadow so that the window has more definition above its shadows
- Find how and where to get the background average color from (bonus: get from region under window)
- Find how to store the background color as a css property of js variable so that I can mask it
- Implement the mask for the background color
- Implement hte mask to add the gnome-std dark gray to the masked color (bonus: dont hard-code gnome gray)
- Apply this to
gnome-shell.css
that overrides the .css properties defining the gray (bonus: apply this to gtk2 and qt-widgets as well) - Package this as a gnome theme and/or extension
- Look into further implementing this into the gnome-shell core for upstream
- ????
- Profit