330 comments

[ 4.0 ms ] story [ 283 ms ] thread
Some people still enjoy « ricing » their desktop, especially the Linux desktop, from the wallpaper to their editor syntax highlighting scheme. It can even be automated. Bike shedding ninja level.
(comment deleted)
Generally I agree with the article, but it would be nice for the author to enable dark mode of the website for dark mode users :)

(it's possible in CSS to detect if the user is using dark mode, and adjust the colors automatically)

That's not a commonly known or used trick.
Only known to users of such niche websites as YouTube, Twitter, and Facebook.
Big sites might support it, sure, but have you visited the wider web recently?
It's becoming pretty widely used these days. ~25% of websites I visit flip dark mode correctly.
> Remember changing colours on the computer?

You can do that in Windows 10. It can also change automatically based on your current wallpaper.

Similarly to installing Nova Launcher, perhaps the author need to use GNU/Linux or Windows instead of a Mac.

Windows 10 has themes now too
Except that Windows 10 themes are a severe security/malware hazard, not a customization of harmless graphical elements.
Eh? Windows 10 themes are just wallpaper packs and a defined accent color.

I assume you’re referring to UxStyle etc as used since Windows XP? That doesn’t involve loading any executable code (unless there’s an RCE vulnerability in the theme resource loader, I suppose) - patching the signature checks in UxTheme.dll isn’t that big a deal, imo.

Windows XP themes are PE binaries. They totally run executable code.

This might even be the main reason that the operating system as-is only allowed themes signed by Microsoft.

They are PE binaries... that don't have any actual code, only resources. And there is a flag used with LoadLibraryEx, available since at least Win95, LOAD_LIBRARY_AS_DATAFILE, that tells the system to not attempt to execute code in the file (if present).
No. you cannot change colors in windows 10. You can only change 1 color which only Microsoft know on what exactly is used.
Not even 1. You can't select by RGB value something too light (or too dark) for the accent color if Windows think it would be illegible. It's even worse if you have enabled transparency.

I wish there was an override, because if I want pure white #FFFFFF as my accent color, that's my problem. I don't want to settle on a light grey.

Not quite.

You can set an Accent color and either a light or dark background - that’s it. You can’t specify each component color or named system color - such as separately specifying the colors of the scrollbar’ track and thumb - or icon text - or button shadows - and so on.

The old “Desktop Themes” feature for Windows 95 Plus! and Windows 98 let the user radically change the appearance of Windows - for better or for worse - when was the last time you saw a custom desktop icon pack or purple 3D face color?

But yes - all of this assumes the user is aesthetically capable - but neither was Microsoft: Google Image Search for “windows hot dog stand”. Be careful, you might get a migraine.

Yep, I remember that game well: switch to Hog Dog Stand, then see how long you can tolerate it before eyeball bleed forces you to revert.
I did that search and I didn't know I could get physical pain from pictures.
Supposedly Hot Dog Stand looked really good on monochrome monitors, at least.
Most of the options are pretty terrible, often unreadable depending on the color settings/abilities of the LCD panel. When I started using Windows 10 full time this was my biggest gripe - you can change the accent color, but Windows picks what it thinks will be the best text color.

I really, really miss the Windows 95 color picker. Sure, you could put grey text on a grey background, but you could also not do that. Microsoft has taken away the option one way or another.

I was just twiddling my GTK theme for the first time since the 90s the other day. I guess my tweaker gene got activated again. It is really fun though, and getting even more dark mode was worth it!
The question is: can we design deep configurability (and composeability), and hence put more accessible creative power in the hands of the user (instead of say having to edit obscure configuration files or even worse, do a full recompile, or simply have no choice at all), without exploding complexity of the system or is this fundamentally mutually exclusive?

Power + complexity will only ever remain niche. But if we can design a system (be it a single program or an entire machine with OS), that is both powerful but intuitive to use, even down to deep layers, then we could actually empower 'end' users into becoming authors of 'creative computing'.

Something like X resources gave the user deep configurability indeed; what's more, because they lived on the X server they communicated user preference to even remote clients.

A graphical tool to allow users to set preferences through X resources, similar perhaps to Visual Studio Code's preferences pane, might be a great way to allow users to tweak their apps with power and precision.

Of course, literally no one uses X resources these days, all settings live in XDG_CONFIG_HOME. And it's all moot under Wayland, which doesn't even allow remote clients.

I don't think that's the concern that led to the loss of color configuration. You probably aren't hardcoding colors anyway, but using widget toolkits and the like. It's mostly because marketers wanted it to look pretty, and that means more complex widgets, so they can't be configured as easily as the relatively flat UIs of Windows 2000 and before.

(The new era of flat uncustomisable flat widgets is a direct continuation of the branding approach — its their marketers saying "I know better than you what your working tools should look like".)

This attitude of “we know better than the user what the user wants” is pervasive throughout technology, not just software. Products of all kinds are getting less configurable, less adaptable for different purposes, less integratable with other products, and less suitable for uses beyond what the manufacturer intends.

If hammers were invented today, they would be locked to a particular manufacturer’s nails, have software that prevented them from hitting anything else besides nails, and have DRM that self-destructs the tool if you stopped paying the $5/mon subscription.

I remember before OS X on the Mac, one of the fun things to do was trade sound effects for system actions, like the Enterprise door swoosh for window actions, and so on. Then Apple took the fun away, because Jobs didn't like fun.
I remember having a lot of fun on Macs in the '90s. We used them in my high school typing class, and I loved the monkey "squeak" sound whenever an error dialog would appear. That was also the time you'd often see the Star Trek After Dark screensaver set up on them.
I used to love experimenting with LiteStep and Winamp themes and browser themes when I was younger, but honestly user interfaces are Good Enough now that I'm relatively happy with the out-of-the-box experience. But it's still disappointing that a generation of potential computer nerds won't have the same experience of being able to treat their primary computer as a blank slate for personal expression.
I was the same way with Windowmaker themes. Now I use a fairly boring desktop with a dark theme, and I'm happy if GTK and Qt themes coexist nicely.

With that being said, a lot of themes were UGLY or clones of OS X or Windows.

I spent years making litestep themes and moderating theme submission on litestep.net I still have a mirror up of the old owns.com minimalism site as well.

http://dave.oc7.org/minimalism/themes.shtml

Some folks still run litestep, but it's definitely not the community it was. We still have a small chat presence on discord and that is about it.

Hisham keeps popping up in my life, it seems. He's the guy who created both htop and LuaRocks.
There will always be tinkerers and people who want to customize their stuff to their personality, but I think the majority of people don't want to tinker, they want to "get shit done" and the standard wallpaper and theming of stuff now days is visually pleasing enough to not mess with it.
Personally I couldn't care less about things being "visually pleasing", to me this is an accessibility feature. People with sight issues or dyslexia might want to use different fonts and weights, they might want high contrast colors, etc. The aesthetic personalization opportunities are second to that.

More importantly: this isn't hard. They did it in Windows 3, an OS that had an 8MB install size and required a mere 2MB of RAM. That we can't provide this functionality in 2021 with all these supposedly highly skilled software "engineers" who consider themselves so ridiculously productive because of all the complicated abstractions they use, on hardware that is several orders of magnitude more powerful than was available to Win 3... well it's completely ridiculous and we, as an industry, should be ashamed.

I’m curious - have you experimented with the range of accessibility options in Mac OS?

Are there particular ones that are missing when it comes to dyslexia?

I don't run MacOS on any of the PCs I own, so no. Neither do I have any of the disabilities mentioned. I just feel that being able to change colors and fonts is a significantly broader and more simple solution than bespoke accessibility features tuned for specific disabilities.
> I don't run MacOS on any of the PCs I own, so no. Neither do I have any of the disabilities mentioned.

So what I'm understanding is you're saying an OS that is used by a LOT of people, is inaccessible, but you neither have any of the disabilities nor the OS you're complaining about to back this claim up?

Because macOS has tons of accessibility options including font sizes, etc.

I never claimed MacOS was inaccessible. I don't even use MacOS, and haven't since about 10.1. I don't believe I've made any claims about MacOS at all, actually.
macOS or Windows. Both are leading operating systems and are both very accessible.

You're ranting and raving for absolute zero reason at all. You have no facts to back up your claims nor any actual experience.

I don't get where you think that I am claiming these operating systems lack accessibility features. That's an invention of yours.

I do make the verifiable claim that they lack the configurability of Windows 3 as regards font and color choices throughout the UI, and further that this is in fact an accessibility feature in itself.

Windows 10, for instance, only allows you to change the "accent color" and select either "light mode" or "dark mode". While it does allow a change in font size, if there's a place in its settings dialogs to change the default font itself I couldn't find it, although I did find a place to change it in the registry.

> I don't get where you think that I am claiming these operating systems lack accessibility features. That's an invention of yours.

Because you're ranting about operating systems not being accessible, there's only 3 possible options, Windows, Linux or macOS.

No, that is not what I'm saying. I'm saying that this kind of configurability acts as an additional accessibility feature, and further could probably serve as a replacement for bespoke accessibility features these operating systems do have (like "dark mode" vs "light mode").
Arbitrary customization of color schemes may be useful as an accessibility feature for certain conditions.

However nobody has explained how they offer an accessibility benefit for any actual condition that isn’t covered by the existing accessibility features.

It would be good if someone could actually point to an example of this. Otherwise it really is just speculation.

General configurability of themes is definitely not a substitute for bespoke accessibility features, even though it might be a workaround in some cases.

> They did it in Windows 3, an OS that had an 8MB install size and required a mere 2MB of RAM

Technically Windows 3 required only 384KB of RAM... Windows 3.1 required 1MB (in Standard mode).

Additionally, vendors just want to ship software. I guess that's their version of getting shit done. For better or worse, functionality sells most software. The stock UI is an afterthought, let alone possible customizations to it. Spending time on features that at best don't sell, and, at worst, can introduce bugs, is a non-starter for most shops.

Maybe Microsoft/Apple are big enough that they can (and should) handle it, but I wouldn't generally expect this type of gold plating.

Default wallpapers are sometimes so good that people import them to other OSes :D
This seems to fly directly against recently articles about the massive uptick in iOS customisation after 14 launched. The #ios14homescreen hashtag on Twitter seems extremely popular: https://twitter.com/hashtag/ios14homescreen
How does it fly against it? To me it appears to say "well of course that's popular, the configurability gives users a sense of ownership over their device"
The post is from mid-2019. I think the development you mention tallies very well with how the post ends.
I remember having lots of fun with cheesy widgets like that on my first Android phone in 2011, nice to see the iOS folks catching on. Always thought that they were missing out!
> massive uptick in iOS customization

Take a look at r/jailbreak.

You renner the times where in a browser one picked colors and font for background, text and links and many sites followed those choices? Now one has to spent time to tweak the Userstyle By finding the right CSS classes and things to change ...
(comment deleted)
Still has settings in firefox. Right on the first page of options too.
Which are mostly useless, since "everybody" has CSS on their site ...
I sometimes use it to detect when someone sets foreground/background without setting them both.
And for fonts there's a check box to override site choices so even if the majority no longer support this Firefox will help you override that.

I don't usually mess with colors but I do like to set consistent fonts. It makes some sites look a bit off here and there but it helps me more than not overall.

Up to Windows XP I used to change Windows colours and occasionally fonts and border sizes in order to distinguish real windows from fake ones in popups and banners, now the Windows 10 automatic colour changes are a mediocre substitute.
I think what UI customization shows us is that software vendors providing customize-ability correlates with a lack of confidence in the defaults they ship.

When someone creating software has a strong opinion about the "right" way, they can't see the possibility that anyone would ever have legit disagreement with their brilliance so they take away control. And when they can't figure out the right solution to something, they ship flexibility so it can be the user's fault that it works like shit.

Or they have moved to the next level up and seen one size does not fit all?
After watching a computer chronicles episode with win2 or win3 MS marketing employee pitching the new options.. it felt exactly like the most recent apple/android talks (grossly: custom backgrounds, colors).

My conclusion: whenever the core product is done, the company will sell you the 'make it your own' pitch, because that's the easiest path.

Unfortunately, that does not imply they are right.
On the flip side of that argument, it shows an extraordinary mount of hubris in their ability to know what the user wants to see.

Allowing customization is considerate to the user, like saying "I made this and I think this default configuration works best, but you can change this if it doesn't work best for you." There is not necessarily a "right solution" for 100% of the users.

The best user experience comes from strong defaults that don't need to be changed, but can be if the user requires it.

I wish there were real high-quality Linux and Windows themes imitating Windows 3.x, 98 and XP (and some other old OSes perhaps) realistically, not just "kind of like that". I would even pay money for such if I were satisfied.

Ideally, they should also be easy to combine in different ways. E.g. I want Win3.11 pixel art icons, Win98 window&panel styles and WinXP non-antialiased fonts - these 3 things make me feel orgasmic.

Have you tried Chicago 95?

https://github.com/grassmunk/Chicago95

No, I haven't! Thank you very much! I have brought this subject up many many times and nobody could suggest anything which would be really close to any version of Windows (I don't insist really this old, interested in a good WinXP clone as well). This one seems by far the best. The screenshot makes me drool :-)
That’s dope AF, thanks
When I first started playing around with OS X the appearance section of the control panel seemed unfinished, and I naively hoped they would add more color options in a future update. Nope, just aqua or grey!

At the time I'd been using Internet Explorer for Mac and really wanted to see the color-configurable interface happen system-wide. I thought it made sense to let people set their interface colors to match the fruit of their iMac if they wanted, since you could do that in OS 8 and 9. Eventually the computers themselves lost color/individuality as well.

Intriguingly, this is one of the things Apple has recently made customizable…
RISC OS 3.11 (which was approximately contemporaneous) went a step further and allowed users to define the system palette LUT arbitrarily using the !Palette utility.

https://guidebookgallery.org/screenshots/riscos311#appearanc...

> RISC OS ... allowed users to define the system palette LUT arbitrarily

For 8-bpp LUT graphics, Windows 3.x had a palette negotiation mechanism in the API that reserved 20 color entries to the OS and let the focused app control the remaining 236. Applications that weren't focused got a combination of whatever was left over and dithering to fill in the gaps. (In 4-bpp modes, the palette was entirely fixed.)

This wasn't necessarily a bad solution to limited hardware, but non-LUT modes with 16 bits of depth were a huge, huge improvement once they were available.

Themeability doesn't rule out consistency. As long as all UIs use the system theme, they look consistent, no matter what that theme is. A good example of that was Windows XP and all the funny and atrocious themes you could put on it with WindowBlinds.
> Themeability doesn't rule out consistency. As long as all UIs use the system theme, they look consistent, no matter what that theme is.

Agreed. That's why the GUI toolkit must provide as exhaustive as possible a set of widgets, and those widgets must be versatile; so that applications developers can build basically everything from those widgets and not feel the need to build their own from a raw canvas or something like that.

Having just one widely used GUI toolkit would also help, something both Linux and Windows are struggling with (Windows especially, with Win32-style WPF vs Fluent-style UWP)
Also on Windows you’ve got WinForms and MFC and I think another C++ UI framework as well. Microsoft has switched their preferred UI framework every five years or so, often leaving behind the old framework in the dust when it comes to new UI paradigms they want people to adopt. So you’re kind of forced to roll your own if you’re stuck on a legacy framework but want your app to look modern. It’s a mess. Now they’re just starting to roll out a new one called “WinUI”. I’ll wait a few years before deciding if it’s worth the effort to learn or if it’s just another one for the scrapheap.
My choice, and it has stayed so for nearly 3 decades, is Win32. All the other bloaty trends just aren't really worth much to learn.

So you’re kind of forced to roll your own if you’re stuck on a legacy framework but want your app to look modern.

Perhaps "look modern" is not a good thing after all. Especially considering the discussion here.

> As long as all UIs use the system theme

That's the root problem, though, isn't it? It's a business/people problem. You won't have consistent UIs as long as software vendors consider look&feel as something to exploit for branding or competitive advantage. Since user feedback is rarely sought and routinely ignored in computing, you'd need the OS vendor to either disallow UIs not conforming to system theme, or make them impossible (by taking away the API for per-pixel drawing). Neither of those options is likely to happen.

Back in the XP days, there were generally two kinds of UIs: the ones that used the system theme, sometimes as much as trying their best to apply it to their custom controls, and the ones that disregarded the system appearance altogether and drew everything themselves, including the window borders.

> Since user feedback is rarely sought and routinely ignored in computing

This needs to change, too. I collect user feedback and act on it and my users love me more often than not. The world would be a better place if everyone was doing this.

On the Windows side, isn't it a side-effect of the shift from standardized common controls to WPF that happened around the vista time-frame? It's much harder to provide consistent user theming against non-standard controls. Similarly, on the early web you could theme sites easily with your browser settings, but as theming power shifted to web developers with CSS, that capability melted away.
> On the Windows side, isn't it a side-effect of the shift from standardized common controls to WPF that happened around the vista time-frame? It's much harder to provide consistent user theming against non-standard controls.

Not directly. If you code in Win32 on modern Windows, you pretty much have to enable themed widgets. Once you've enabled themed widgets, you give up the ability for the user to control the appearance.

I don't believe there was any technical reason for the change; it was the desire to have themed widgets (or in plain English: branded widgets) which made them uncustomisable.

Most native desktop development in Windows is nowadays based on WPF and as parent mentioned WPF broke the consistency with the rest of Win32. WPF does it's own vector-based drawing that completely ignores legacy Win32 API except for some basics such as control colors.

Even its standard Windows theme is a poor imitation of actual Windows style - you can easily spot WPF apps with default theme because they stick out like an eye sore.

Is WPF actually that popular though? Honest question... last time I did any WPF dev was 2008 and I haven’t really seen it used much since. MS certainly aren’t hyping it much (although that could just be the decline of the desktop app in general).

My impression was that it wasn’t worth it for small apps and not performant enough for things like CAD, etc.

It's highly popular for enterprise line of business and industrial apps you'll never hear about. Some of it is moving to web but web is not really competitive in terms of performance and integration (lots of legacy COM/ActiveX or closed source native libraries to integrate with). The only realistic alternative is using WinForms (more dead than WPF) or Qt but then you have to hire C++ programmers.

It's certainly perfomant enough (much faster than web) for complex apps like CAD - the actual editor/renderer won't be WPF of course but some custom OpenGL/Direct3D code.

I do agree that the modern love for “dark mode” has made developers realise — albeit in a limited way — that there is a pent-up demand for theming.

Products who do theming well tend to be popular among their users — eg IntelliJ and VSCode of course, but tbh Emacs and vim are no slouches in this regard.

Using the configured system colors is still trivial even with custom WPF controls. CSS2 also exposes system color settings, even though the selection is a bit limited ("inactivecaption", "threedhighlight" and friends).
WPF controls are still system provided/standardized "common" controls, though. Up until recently (.NET Core 3) all WPF releases were still Windows releases.

The issue isn't necessarily caused by the controls themselves or even the theming engine baked into WPF. Had Microsoft prioritized it, WPF might have had stronger system theming/retheming out of the box. It could have provided stronger design themes and more user choice in adopting theme. There's a brief window in the Zune development life cycle where they almost delivered exactly such a thing for WPF. IIRC there were 3 or 4 prominent Zune themes and easy style sheet swaps (including on the fly) to switch between them in WPF and those base stylesheets were almost productionized and included in the system WPF resources. (Then of course we all know what happened to the Zune and things moved to other platforms.) They still likely would have been opt-in because Microsoft prioritizes backwards compatibility, but they were a glimpse to the timeline where Microsoft had maybe done that sort of design work further ahead of time and forced it to be opt-out by default. (Admittedly which they tried and failed to with Windows 8 because developers complained too much that the opt-out was too hard and we'd already lost the war for "native controls/native themes" by that point to corporate/enterprise designers and branding efforts.)

Of course the "two worlds" problem of having multiple "competing" systems controls between the classic Win32 world and the WPF/XAML world is unlikely to ever be solved, given backwards compatibility assurances, but having "two worlds" shouldn't have stopped Microsoft from a single unified theming engine had they the initiative/prioritization. There's even hints that some people at Microsoft were considering it back before WPF was launched. WPF was always a partial shell of the "Avalon" dream of Longhorn's tumultuous development.

I hear what you're saying, and I agree that MS could have done much more to allow consistent theming by the user. But, I also know that even a beginner WPF tutorial shows how to arbitrarily adjust controls with a resource dictionary. Meanwhile, I don't recall ever learning how to change the color of a win32/c++ button short of taking over the entire drawing responsibility (I'm sure it's possible but that's beside the point). So as a result of that emphasis, it seems to me a lot more WPF/UWP apps use arbitrary non-standard colors/fonts/highlights/animations, which would be completely at odds with user-selected themes. I know mine did, anyway, so I guess I was part of the problem!
>Looking back, I feel like this trend of less aesthetic configurability has diminished the sense of user ownership from the computer experience, part of the general trend of the death of “personal computing”.

This, and end of story. What's personalized today are things like the extensions for your browser and your Google account. OSs are becoming terminals.

Unpopular opinion: optimising for "branding" is what killed theming. Everyone wants to have their own custom colour theme, brand-associated font or button style, which clashes with uniformity of system controls.

If everyone renders buttons in a custom way, they bypass the native, theming-capable, accessible-by-default system controls. As long as product managers are happy, it doesn't matter that users aren't.

This was true in the 90s as well, or have you never used Kai's Power Tools?

What's more recent is that the OS vendor now considers UI font and color choices part of their brand, and thus fixed them immutably for "consistency" i.e., to advertise the Apple-ness of the Apple UI even in screen shots of the OS in action.

>Kai's Power Tools

Page curls. Page curls everywhere!

(comment deleted)
I suspect there is more to it than branding. You can still establish a brand through the design and texture of controls, while letting the end user have limited control over colour. That is evident in the classic Mac OS as well as modern Windows.

What we are most likely seeing is push-back over some of the excesses of themes. Branding is likely part of that, but the astounding number of controls likely played a negative role in the user experience as well.

Theming was HUGE in Linux back in 2005-2010, consistency was paramount, adherence to toolkit was extremely important just like Apple claimed.

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.

I agree that theming was much more consistent a decade ago in linux-land. GTK2 + QT with GTK2-style would get you an almost seamless experience.

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.

> 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.

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.

Some UI toolkits use CSS or CSS-like styles for native widgets, hopefully those can still access system colors.
I still use gtk2 style for Qt to this day, as it's still supported in Qt 5. I run i3 as my window manager, and most of my applications are either Qt or still using GTK2 (like pcmanfm).
> 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.

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.

For whatever reason this is not well documented, but all the theme's colors are available with a special syntax in the CSS: https://gitlab.gnome.org/GNOME/gtk/-/blob/master/gtk/theme/A...

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.html

I 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.

Thanks for the pointers, this is very helpful!
I'm not sure why you're talking about Gtk/QT theming in the past tense, it all still works the same way with modern versions of Gtk/QT.
Reading this discussion got me thinking. I've been using KDE now for years specifically because every part of it can be customized, but for the most part, i've used the same theme and configurations now for pretty much the entire time i've been using kde.

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.

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).

I remember doing the same for Windows 2003. Got a little more difficult with the theme engine and having to use cmd shells running as SYSTEM but the end results were so satisfying. Sigh
> Theming was HUGE in Linux back in 2005-2010, consistency was paramount, adherence to toolkit was extremely important just like Apple claimed.

it still is, just look at how neat things in https://reddit.com/r/unixporn/ look

But none of that was configured in one place, with every other program taking its lead from that central configuration. Instead, effort must be made to work through every program individually, customizing its color scheme.
> But none of that was configured in one place, with every other program taking its lead from that central configuration

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_...).

For any apps written using Qt, sure.
Would you be surprised to learn the configuration is not for Qt/KDE only? Check packages xsettingsd, kde-gtk-config and qtcurve.
that's how it has always been. There isn't a system out there that does theming where some apps won't be left out. It's practically impossible. Even dark mode on iOS doesn't work on every app. And then there is Android... which is just unspeakably bad at all things UX.
I'm not sure when the last time you've used a Linux desktop is, but today that is mostly not the case. The third party app ecosystem is relatively strong today on Linux, with multiple implementations of Spotify, Discord and other "must have" apps. Since many of them are simply wrapped in Electron and shipped out to the end user, theming these apps are a cinch. If user empowerment is the topic of conversation, you shouldn't be ushering users to replace their systems with Macs "as soon as {they} have the money."
> Theming was HUGE in Linux back in 2005-2010

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.

> Eh? Theming was fizzling out by 2005, which starts to correspond to the rise of OS X and Macbooks.

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.

Enlightenment was awesome in the early 2000s, even having a translucent terminal feature. Then the Gnome project started giving the giant middle finger to their users and began removing all the features to use for customization. I remember the day when a Gnome update decided to change key bindings unannounced. Xchat flipped from Unix X11 key bindings to Windows bindings. The argument was that they were going after "Aunt Tilly", the mythical desktop Linux user who never actually appeared. This drove those of us who were developers away. I can't stand Gnome these days and use Openbox / xfce instead, 2 desktops that don't try to drive their users away. Sadly, Red Hat still funds Gnome primarily rather than the vibrant situation we had back then.
Just saying, if you're happy with a *box window manager that hasn't changed much in the last 15 years, you were probably not ever the target audience of gnome. I also don't see why those type of projects would need much funding, compared to ones that are actively seeking to expand their userbase beyond developers. (and I would agree that gnome is not perfect and is not the only contender in this category)
It's the loss of features that drove me away from Gnome. First configuration options were hidden, then removed. Window borders became larger, and bloated transitions slowed everything down. Menus were removed and replaced with incomprehensible drawings with no meaning. Keyboard shortcuts made non-obvious. Not at all an improvement over the state of the platform 20 years ago in my opinion when things were much more lightweight and interfaces were more discoverable. A lot has been lost for desktops in the push for an interface that "works" on tablets.
The current KDE does a great job allowing for customization.
No, it is currently barely sufficient, certainly not great.

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

These are small losses compared to the complete lack of customization in say ios or modern Windows. Still KDE2 was very good.
This has been bugging me for years. I was having a much better user experience ~20 years ago with Enlightenment desktop on top of Gnome or a lightweight window manager.
> consistency was paramount, adherence to toolkit was extremely important just like Apple claimed.

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.

I remember when office came out late 90s with the custom DLL to make everything grey and 3d looking instead of white. It was cool, but yeah breaks the consistent theme.
As a Technical PM, I fought against a former boss when they wanted to forego native controls because they wanted their app to be branded, because without a custom look they felt that their app would not be unique and memorable.

If an app can't survive on its usefulness alone, it probably shouldn't exist.

As a user, if an app doesn't have a native UI, I disregard it unless I need it for a specific and mandatory use.

The only time you should NOT be using a native control is when you have UX that demands something very custom. Or you're doing some multiplatform thing, in which case you should try and use a toolkit that can at least pretend to be native controls on all the platforms.
I believe Winamp became so popular because it had such a unique UI, that was also incredibly customizable. Compare that to Windows media player at the time...

On the flip side I want me email client, my desktop authoring tools and admin tools to all look and act the same.

Perhaps partly, but the UI was also useful compared to WMP. WMP was slow, bulky, and took up lots of screen real estate. WinAmp, while it was themed, was slim, but also packed far more control into a tinier space than WMP.

(The blue/grey theme that came later was far less performant; I mean the original dark green/black theme.)

And WinAmp would open & play literally any format under the sun. WMP was limited to something like MP3 and WMA. (And maybe WAV.)

WMP plays anything the system has a codec for.
Ah, codecs. The biggest PITA on Windows in the 1990s/2000s. I went through two or three different videoplayers for the sole reason they shipped with whatever was needed to open just about any format out there. Meanwhile, trying to coerce WMP to open popular video formats was an exercise in futility...
Making users care what codecs are and which are available on their system (and with no UI to even answer that question) is just another example of how bad some organizations are at UX.

That's how VLC became so popular. They realized "sorry, you don't have that codec" is only a bureaucrat's idea of good UX so they shipped every codec in software.

When Winamp first came out, everything was single core. Decoding mp3 took a significant bite out available CPU. Winamp was relatively efficient in CPU in RAM, especially compared to WMP.
> I believe Winamp became so popular because it had such a unique UI

Well, yes and no. Remember, Windows Media player used to be this:

https://www.windows-media-player.com/wp-content/uploads/2019...

and without system-installed codecs, which were hard to come by for something like MP3 files, it was basically useless; you could play MIDI files through your shitty OPL-3 FM synth and that's about it.

Winamp came with a remarkable set of capabilities: - A bunch of useful codecs out of the box - An extensible plugin system, with input, output, general, and visualization plugins - Skinnable UI

The secret sauce was the extensibility, really. You could kill hours just tweaking your Winamp, installing crazy audio effect plugins, and so forth. It was really a new breed of application for most users who were used to really business-like apps.

To corroborate your point, I loved fiddling with the Enhancer plugin:

https://i.imgur.com/DuxpATX.gif

It's what started my desire for better sound quality, pursuing better equipment and assembling my own crazy dsp stacks in order to... well, enhance sound quality, which I do to this day!

Dealing with equalizers, dynamics processors, crossover, convolvers/IR, applying hrtf/hrir found on the net, using room eq wizard to try and improve speaker/room response, buying a damn binaural microphone so I could make my own ears impulse responses... I ended up learning a lot about the subject, form such a tiny "seed"

The Winamp (classic) skinning was so brutally effective, considering how simple they were. AFAIK the bulk of the skin consisted of two or three .bmp-files which were spritesheet for all controls and fonts. Literally anyone could make one with a tiny bit of effort.

Now that screen resolutions vary quite a bit I suppose it wouldn't work as well as when all monitors were mediocre 800x600 or glorious high res 1024x768. Ah, the nostalgia.

> As a user, if an app doesn't have a native UI, I disregard it

I disagree rather strongly with this. You should use the UI elements that make sense. It doesn't make sense for Maya or Blender or Photoshop to constrain themselves to whatever Microsoft picked out for them to use. The palette of native widgets and native UX methods is woeful across all systems. It's constrained to the set of generic elements which are applicable to some theoretical business application, like Word or Excel (which, I must point out, could neither be implemented fully in terms of native UI widgets alone).

> If an app can't survive on its usefulness alone, it probably shouldn't exist.

Form follows function. And I would argue the opposite of the point you're making: if an app can exist purely in terms of native UI widgets, does it even need to exist? I can think of almost no useful apps outside of basic utility apps (file copying, patching, app installers, etc.) that are useful and fully native UI.

Arguably it's woeful because everyone goes off and does their own thing rather than having any notion of a shareable commons.
Parent here. I suppose my beliefs are more nuanced than what I specified in my post.

> You should use the UI elements that make sense. It doesn't make sense for Maya or Blender or Photoshop to constrain themselves to whatever Microsoft picked out for them to use.

The nuance in my beliefs is that if UI elements aren't available for the function, then apps should absolutely build custom UI. I agree with you there.

It's when you have a basic app that can entirely use native controls and chooses to forego them to do everything custom that I have a problem with.

For my particular example, we were building a cryptocurrency wallet for a new blockchain. It was simple enough to use entirely native controls but definitely didn't need a custom UI.

Photoshop definitely uses native UI:

http://wp.xin.at/wp-content/uploads/2017/08/photoshop-cs6-fu...

That said, I'm not entirely sure Photoshop makes a strong point for making custom UI controls, since besides the primary interaction of pointing and clicking on an image, everything else is either dialogs, menus, and toolbars --- all of which are available in the native UI.

Agreed. CSS is the worst thing to happen the web because it privileged advertising and designers over content and writers, and designers make more by going from client to client. Instead of the web being the world's library, it has ended up like an endless magazine stand, optimizing for sensationalist crap.
I agree wholeheartedly with this (2019) post. I’m still very much a fan of customizations, forever mourning the end of easy tweaking of icons and themes on non-Linux. I used to “refresh” my desktop every two or three years, but nowadays tweaking Windows or MacOS is unsustainable: every couple of months an update will likely break all your carefully-laid-out hacks, and the knowledge is getting harder and harder to acquire. So I limit myself to wallpapers, browsers, and IDEs (IntelliJ is quite skinnable).

I understand the rationale for the market evolving as it did: the world of computers is now much seedier than it was in the ‘90s... every customisation option will be jumped on by malware writers of all sorts. Tweakers are now effectively banished from commercial vendors, but at least we’ll always have Linux.

More configuration options come with an increased risk of inadvertently pointing one of the gun's barrels at ones own foot without noticing and then pulling the trigger.

To stay with the theming example: it's nice and dandy have control over theme colors. But what happems when you set button background, window background and text color to white by accident? How do you recover from that? Back in the 90s you'd have been stuck with a mostly unusable UI. Somehow that was OK.

Nowadays, things like that are tolerated a lot less. Configuration options in mainstream products are (often) fussed over to the nth degreee to make sure that there isn't a way to get the whole thing into a bad state. The result is usually somewhat more robust. And that's enough to satisfy most users most of the time.

I can understand what you mean, but let's be fair -- preventing things like "all white UI" can easily be coded into the configurability. Yes, the full iteration of possible situations you could get into are quite large, and maybe you miss some -- but there are also options for coding in some kind of "reset" quick-switch that doesn't require the UI.

Also, I'm not sure I buy the claim that "things like that are tolerated a lot less". Are they? Or has it just been so long since we've had anything like that, that we just assume people would hate it even more?

Well, I'm sure you'd hate it if your smartphone would keep white text labels without outlines on your home screen if you set a very bright custom background. I've just tried it on my phone: if I set a mostly white background image, I can still use the home screen because the text also has a dark drop shadow (for exactly these kinds of situations!). That illustrates my point quite nicely I think: there are fewer settings now, but - when done right - those that are available behave quite well.

Theming was just the first example that came to my mind. It's a pretty benign one in the grand scheme of things. There were other ways in which you could misconfigure your system. These were also the days before PCI, USB and hardware auto-detection. You could easily pick the wrong driver and/or wrong settings for some hardware and the system would mostly just try to run with it, not knowing that anything was amiss. Pick the wrong mouse driver? Set the wrong COM port for the serial mouse? Tough luck.

In Win3 era you will see a representation of what your new color theme will look like.

Also, you can do something similar to what happens when you change screen resolution.

A window pops up with a countdown for let's say 60 seconds (or more), and if you don't press ACCEPT before it reaches 0, it undoes the changes.

Someone did this to me as a prank back in the 90s, and I could easily undo it using keyboard commands. This was back in the day where companies were serious about making every mouse-invoked function also available via the keyboard, which is also sadly going out of style.
I want Linux-like anarchy^H^H^Hthemability on Windows and macOS. I'm not keen on tweaking the appearance of every little button, but I want to go 'theme-shopping' from time to time and change the appearance of my desktop. Just to make it look a bit different now and then.

It's interesting that the most slick and stylish desktops are now on Linux (of course there's 99% trash, but the remaining 1% are a lot more aesthetically pleasing than both the current Win10 and macOS themes).

The themeability ran on anarchy but on the community-organized kind. Users expected apps to use the Desktop's toolkit and having their custom widgets respond well to theme engines.

But that's only for KDE nowadays, there was a period where GNOME was breaking theming with new releases and its maintainers argued for why they just supported the standard Adwaita theme and not anything else. KDE comes with a historic sloppiness at the individual application level, you'll quickly notice that padding, margins, lines, orientation are all over the place and it's just how KDE application developers roll.

> of course there's 99% trash

I'm offended. 99% of the number of desktop environments, or the installation, or the stylized installations?

As with everything artistic, the last is a matter of taste, and the more opinionated a visual design is, the more you are likely to disagree with it.

For the rest, please give names.. I've seen magnificients {i3, sway, KDE, GNOME, XFCE, cinnamon, etc}. ricing is a popular sport.

When you look through the themes on sites like https://www.gnome-look.org/browse/cat/135/ord/rating/, sort by rating and then skip the first few result pages, most of those themes don't look that "great". I don't understand how that's offending though, it's a normal quality distribution (also see https://en.wikipedia.org/wiki/Sturgeon%27s_law)
> the most slick and stylish desktops are now on Linux (of course there's 99% trash

I read that as 99% of the Linux desktops being trash.

There are a number of desktop environments, but calling any of these "trash" is pretty harsh and subjective, even for something as barebones as weston.

For theme, icon, color packs, etc, for any desktop environment, I agree. That's always been the case for most user-generated content anyway.

But you do see a lot of subjectively great styles on reddit.com/r/unixporn, even for environments such as windowmaker or fluxbox!

> anarchy^H^H^Hthemability

What's anarthemability?

I'll agree, this is one of the things I don't like about macOS. It looks like in the past there were hacks to do this, but Apple broke them.

(Similarly, I'm so glad there's a hint of colour in the sidebar in the Finder again; I hate when Apple says, "We've got two indistinguishable shades of grey; one for available, and one for inactive. You can take it, or you can take it.")

As to the point about setting a desktop background, though, I hardly ever see my desktop background, so changing it doesn't seem very important.

I used to change my desktop background approximately once per afternoon. It was a disease. Modifying Gnome themes. Downloading custom launchers for Android. Tweaking the colors representing my calendars. All with good intentions, mind you. "This green mountain background will calm me down in the morning" etc.

At some point, I realised that if I just take a deep breath, slow down, and accept that I can modify myself to align with my tool rather than the other way around, a lot of friction is removed.

I set my background on every device to a solid black, and it's now three years since I changed them. My trello boards are still blue background. My calendars are whatever the default theme is. It's sometimes nice to tweak the tool for your need, but it's also sometimes nice to understand that everything doesn't need to be a huge annoyance. One can just adapt and move on.

You can adapt and move on. There's no need for everyone else to go with that, though.
Fair enough. Just the perspective of someone who was deep into all this stuff. I suppose I've become one of those born-again ascetics who become zen minimalists in their second birth and leave their .vimrc untouched.
I think it's worth being able to work like that, to be fair. I just don't think you should always work like that. My personal computer is "tricked out", for example, but I also know how to use the tools without my custom configs set up.
> We've got two indistinguishable shades of grey; one for available, and one for inactive. You can take it, or you can take it.")

What is up with this design choice to make the selection non obvious?

On Apple TV, it’s damn near impossible to see which app or show you have selected. The selected item is slightly enlarged, or slightly shaded, and I as a young tech literate person have to move around a bunch to figure out where I am.

Why not highlight the border of the damn thing? It’s like no one that works at Apple has older, non tech literate parents that use Apple TV.