The OS handled this, and it was just changing some colors and font settings. It's not like today where there's a whole Turing machine handling your needlessly complicated custom interface rendering.
I'll say it again: people did this in the 90s, with orders of magnitude less computing power, significantly more constrained development tools, and fewer developers. That we think this is something we can't do today is evidence of a deep sickness in our industry.
They're too busy dropping platforms support, dropping backends support, dropping 32-bit support... in the name of the burden of 'maintaining' code that works, is proven (on the field) and basically hasn't moved in 10 years.
Not to mention dropping features and taking what few powerful features remain, and burying them deep in a “hamburger” menu so the main screen can have more whitespace.
Sure, and OSes are written by developers and cost money to make. Companies have to make decisions on where to put their resources. Customization and configuration almost always gets the ax today, and cost is often a leading factor.
I'll say it again: people did this in the 90s, with orders of magnitude less computing power, significantly more constrained development tools, and fewer developers. That we think this is something we can't do today is evidence of a deep sickness in our industry.