The "dark or light" theme we have today is an absolute joke by comparison.
Many Gtk-engines were also much faster in terms of pure rendering speed.
Another issue as mentioned is that per-control CSS skinning breaks easily with custom themes. Instead of using system colors devs often hard-code a custom look.
Finally, some programs go for a fully custom theme that doesn't even work properly without. Darktable is one example. Darktable looks cool, but a long time I had a hard time reading it's controls since it didn't respect system's font sizes nor it allowed to change it. The contrast was poor. It now comes with several themes, but nothing matches my system theme, which is more accessible.
As much as I love darktable, I'd skip the custom UI any day.
After years of using MacOS, I made a commitment this year to use, support, and develop for Linux on a regular basis.
Starting off with little knowledge of GTK, I progressed from "hello world" to working on my first app, but end user customization has always been close to my heart, so naturally I started looking at what it takes to bring a GTK desktop app from "stock system UI" to "developer and user themable".
All this to say, it could be my inexperience, but I'm finding that GTK seems to be very much "all or nothing" here. I can use all the default widgets and be 100% native, and I can "* { background-color: pink; }" my way into a blank canvas, but if I want to make custom controls that build on the user's system theme and whatever accessibility he/she has set up for him/herself, I'm on my own to make my best guesses.
There's no reliable way to determine whether the user is scaling text, using a dark or light theme, or something super high contrast for accessibility. I can try to query some built in widgets and make decisions from there, but I've found that quite flaky as well.
Moreover, even finding which classes to assign to widgets to "piggy back" off the common system colors when building my own widgets is a chore of hunting through themes like Adwaita to find the piece of the system widget I'm trying to utilize. It's not quite WPF "copy the entire widget's XML and re-implement it from scratch to customize it" bad, but for as powerful as the CSS support seems to be in GTK, it feels like there's a layer in between "full system UI" and "total rebrand" that's missing.
So for example you should be using this to use the user's foreground and background color:
color: @theme_fg_color;
background-color: @theme_bg_color;
You can use some modifier functions on those colors too to compute additional colors: https://developer.gnome.org/gtk4/stable/ch39s02.htmlI would suggest against trying to piggy back on built-in CSS styles; usually with the default widgets you want to favor composition over inheritance. But if you really need to you can use the GTK inspector to look at the styles on any given system widget, that should be a bit easier than grepping through the CSS.
Ironically, you used to be able to use system colors via CSS. Like it usually happens on the web, that feature was also removed because of security reasons - apparently it made it easier for scammers to render fake system popups.
I still think it comes down to branding though, even with those totally customizable environments. The difference is, it's not someone else's brand. I get to turn my environment into my own 'brand'.
That's always kind of been the appeal of theming and customization to me, the ability to remove someone else's brand from my computer and replace it with my own.
In Windows 2000 and earlier, before system file protection, it was possible to use a resource editor and/or a specially crafted BMP file to change system icons, boot animations, start menu imagery, login screen, etc. With a hex editor you could change any UI text, too. I had a heavily customized W2K alongside my heavily customized Linux (even started working on my own graphical boot animations and graphical login for the text console as part of a media-focused distro project I had joined).
Eh? Theming was fizzling out by 2005, which starts to correspond to the rise of OS X and Macbooks.
Enlightenment came out in 1997 and was all about theming. But theming predated E by a few years already. https://en.wikipedia.org/wiki/Enlightenment_(software)
This is what I would call the "golden years" for Linux theming. Late '90s to early 2000s.
> Windows look and feel was never really a thing, nor was theming because of the same thing.
I mean. Did you even read the article you're commenting on? Windows 3.11 had themes. Windows 95 had Microsoft Plus: https://en.wikipedia.org/wiki/Microsoft_Plus!
> Then GNOME 3.0 came and they went for the consistently branded experience approach
This happened way before GNOME 3 was a thing. GNOME 2, Xfce, and others stopped their obsession with Windows and started thinking about OS X, which was eating the desktop UNIX lunch.
I don't know man, it's what I saw as more and more people came to Ubuntu with Windows Vista flopping, and they came with expectations of a flashy UX and a dynamic growth of the platform. Lots of theming, lots of hopeful mockups and GTK+ struggling to support transparency as theming engines hacked it in, the race to incorporate compositing and having everyone's graphics cards actually work.
I get it that there was a lull during the transition between GNOME 2 and GNOME 1, many of the myriad themes you found on repos in 2005 were ports of GTK 1.X themes, no more. But the influx of Windows users injected a lot of vitality into the theming scene.
> I mean. Did you even read the article you're commenting on? Windows 3.11 had themes. Windows 95 had Microsoft Plus: https://en.wikipedia.org/wiki/Microsoft_Plus!
Precisely, long-since retired technology. The Windows XP era lasted 8 long years, as people for the most part skipped Vista. It just wasn't very prominent and crazy custom UIs were rampant.
it still is, just look at how neat things in https://reddit.com/r/unixporn/ look
that's definitely not my experience with KDE, I just have to set a theme on the system settings and 99% of apps take it (e.g. with this theme in my case: https://www.reddit.com/r/unixporn/comments/b49l7k/kde_sweet_...).
That is not my memory. If you were careful to use just programs from KDE/Qt or GNOME/GTK, then this was about right, but every graphics toolkit had its own way of handling theming, and if you combined programs built with multiple graphics toolkits (additionally: Motif, Java, raw X) that would not respect your configuration.
The scrollbar in System Settings is impossible to customise (through the GUI). Tray icons and log-off dialogue icons and the task bar appearance cannot quickly or easily customised because due to "theme"ing changing one thing also changes the other.
The maintainers screwed up and it was all downhill after version 3. Each major version introduced an incompatibility that meant that some users were forced to abandon, e.g. KDE Classic icons or window decorations BⅡ https://cdn.pling.com/img//hive/content-pre2/5965-2.png or Crystal https://cdn.pling.com/img//hive/content-pre1/13969-1.jpg
For Apple it was about delivering a consistent branded experience, for the GNOME and KDE communities it was about being able to consistently customize the experience.
In Windows? Always a free-for-all of such heavy customization on the side of the third-party applications that a Windows look and feel was never really a thing, nor was theming because of the same thing.
Then GNOME 3.0 came and they went for the consistently branded experience approach, and you were left with a black and gray desktop environment that at best tolerated customization.
And it works alright, but Desktop Linux at most you'll get to work alright, the third party app ecosystem is small, without the feeling of ownership and freedom that an end-user can have with their system, customizing not the kernel but the things they're actually interacting with, what's left? An unremarkable desktop environment with few applications, that you'll want to replace with macOS as soon as you have the money.