179 points•tybulewicz•7 days ago•120 comments•

120 comments

bartread7 days ago
> Sadly, almost nobody uses Win32 scroll bars any more. Everybody uses frameworks that provide their own custom scroll bars.

Yeah and, sadly, those framework implementations are all mired in some amount of bollocks due to lack of care, attention, or interest from their creators. And by bollocks I mean they either behave differently or do less.

But I very much miss the days of consistent UX across Windows applications, or indeed applications on any other OS.

I don’t mind if you want a custom look and feel for your application: I very much do mind if your widgets don’t behave like other widgets of the same type or, at least, where any variance is at least a superset of OS level functionality rather than a crippled subset.

I was always frustrated by how hard Microsoft made this as time wore on and they moved through more and more UI frameworks, and then offerings like CEF and Electron entered the mix as well. The UI story on Windows started getting particularly messy around 2007 or so and has been in an awful state of confusion for at least 15 years now.

I literally have no idea what I’d use to develop a Windows desktop app nowadays and, honestly, none of the options fill me with enthusiasm. With more recent desktop experiments, partly because whilst I might want them to run on Windows I don’t primarily work on Windows, I’ve gone the Rust + Qt route simply because it offers native performance and it doesn’t feel like I’m getting rug pulled by either set of creators any time soon.

kccqzy7 days ago
> I don’t mind if you want a custom look and feel for your application

I would go further and say that I don’t want a custom look and feel for each app unless the app is a game, especially if your app is a regular line of business app. The default Win32 widgets are good enough. The default Cocoa widgets are also good enough.

EvanAnderson7 days ago
I want apps to use the default widgets because I want theming and color selection in the OS to work again. That's about the extent I care about look and feel. Microsoft has ruined that on current Windows versions anyway-- making me resort to registry modifications to get the colors I want. Every time I see an application with a "dark mode", which should be an OS-wide theme function, I get a little sad at the wasted developer time.

Beyond the now-denied choice of UI color scheme I do not expect (or even desire) deriving any joy or pleasure from the look and feel of software I use. Most of my computing is for "work"-- be that my job, or paying bills, shopping, etc. I want the UI to get out of my way and, most of all, not to insult my 30+ years of muscle memory and visual intuition. I derive joy and pleasure from software that allows me to quickly accomplish my tasks with minimal thought or friction on my part.

I experience massive frustration with software using UI widgets that don't work like the native OS. Not having the standard keyboard shortcuts, for example, is a great way to make me hate your software. It's an immediate "tell" that I'm going to be disappointed if a program has bad tab order on its UI elements, for example.

Moreover, eschewing the time-tested and battle-hardened native UI widgets speaks to arrogance. It feels like an ego trip and it's almost certainly unearned. Random developers probably can't pull off a widget replacement that replicates all the nuance of the native. Good luck pulling off accessibility and internationalization, too. Even if they can how is reinventing that wheel a good use of their time?

My rage is amplified when I find bugs in software with non-native widgets. They had time to dick around with the widgets-- something already done for them in a vastly more competent and comprehensive manner for free-- but not to ship bug-free code for the software's actual purpose?

The same goes for animations, fades, gradients, etc. The vast majority of software I use is not special or dear to me. It's a tool. I don't want to, in a manner of speaking, look at pictures of the developers kids or vacations as a "toll" for using the software. Making software "pretty" is only self-serving and egotistical.

abanana7 days ago
> I don’t want a custom look and feel for each app

I'd agree personally, but when you look at the huge success of things like WinAmp's themes back in the day, there clearly is (was?) a large market for it.

bartread7 days ago
Yeah, I think that’s probably fair. Games and media apps certainly get a pass from me. Not so much corporate chat apps that are shipped as part of the most popular productivity suite in history (as one example).

Also agree with you on both Win32 and Cocoa widgets.

izacus7 days ago
The designers of your software and their bosses disagree though, default widgets don't provide "branding" and allow the poor designers to express themselves.
hahn-kev6 days ago
Would you really want to use a chat app with just win32 elements?
doodpants7 days ago
> I literally have no idea what I’d use to develop a Windows desktop app nowadays

C#/.NET and WinForms is still a viable choice. Though for a new project I might try WPF, for a slightly more modern appearance.

tonyedgecombe7 days ago
WinForms is still a bit of a mess if you want high dpi support.
bartread7 days ago
You're right, it is. I did a lot of C#/WinForms development back in the day. I never liked it but I liked the people I worked with and the company I worked for so I tolerated it.

Reasons? OK, this is going back about 20 years but, and without going on a massive ranty screed [EDIT: oops, failed], compare something like Swing's JTable to WinForms' DataGrid. One is a really nicely designed and abstracted component with a fully pluggable architecture and an out of the box capability to deal with an arbitrarily large data model (perhaps within the limits of 32-bit integers) and the other... isn't. I tried with DataGrid, I really did. I thought other developers at my employer were "doing it wrong" by reaching for third party controls from the likes of DevExpress and Actipro but... they weren't: I was wrong. If you wanted a proper table/grid control that was easy to customise and extend and wouldn't chunder on millions and millions of rows of data you forked over the money to DevExpress for their control and then you got on with your day solving your real problems that you could charge customers actual money for.

We leaned hard on third party control libraries from DevExpress (particularly grid and tree), Actipro (wizard), and Syncfusion (again, grid). To me, with WinForms, and bearing in mind I'd come from Java Swing (which is by no means perfect) it was really weird working with a UI toolkit where what came in the box wasn't sufficient to build any arbitrarily complex UI I might desire. Weird. And frustrating. Same for the lack of abstraction/separation of concerns. In my Java days, when I wanted a wizard I ripped the one out of NetBeans: I did that in at least two prior jobs using it as the basis for multiple wizards across the relevant applications.

And WPF... although architecturally a lot better, IIRC it didn't even have a proper table/grid control: you had to build your own, and when you start thinking about how rich a proper table/grid is, taking into account accessibility, keyboard shortcuts, picking up OS level settings (palette, scaling, etc.), making it behave like a table in any other application on Windows, I just couldn't be bothered building all that... so then it's back to third parties again.

I don't know what third party support for these frameworks is like nowadays but, fundamentally, for the sort of independent experiments I'm working on I don't want to either (i) fork over hundreds or thousands of dollars to third parties for (I think) basic functionality that (I think) should be available as part of the framework and should have been there since day one, or (ii) spend time wrangling the framework to implement this basic functionality because it isn't a core part of the problem I'm trying to solve or the value I'm trying to deliver.

I'd rather just use Qt or something, which at least has what I need.

userbinator7 days ago
I literally have no idea what I’d use to develop a Windows desktop app nowadays

Pure Win32 still works, and is the most efficient and consistent.

mrpippy6 days ago
It works, but gives you zero help with dark mode or HiDPI (both are possible, it's just entirely on the developer)
the__alchemist7 days ago
Anecdote: I do it not because I want a custom feel, but because I want my programs to work on Windows, Linux, and Mac without any special per-OS work. Granted, perhaps the framework I've been using could use native APIs smartly instead of its own...

FWIW I think your Rust + Qt route is fantastic. I've been using Rust + EGUI myself, but have Qt in mind for future projects.

someonebaggy7 days ago
I want my web apps to work in the web, Geminispace, FTP and dead-tree paper, too, but you have to pick a platform.
TonyStr7 days ago
>I very much miss the days of consistent UX

This is why I love GNOME. The community is doing a great job with creating GTK4 native applications. I'll often pick a GTK app over a more featured app, because they usually do enough. It's very satisfying to be able to use the same shortcuts in most applications.

mrob7 days ago
IMO, "scroll here" should be the default action for clicking on a scrollbar. There are already good keyboard shortcuts for page up and page down, but there cannot be a keyboard shortcut for "scroll here". It's wasting the capability of the mouse to duplicate keyboard functionality when you could be benefiting from unique mouse-only functionality.

GTK gets this right, and Qt does not.

userbinator7 days ago
Oh hell no. If you think "scroll here" is a sane default, you haven't experienced the pain of jumping possibly thousands of lines in a long document with an accidental click, and no easy way to go back to where you were.
mrob7 days ago
I don't think that's a serious problem. There are three possibilities I can think of:

1. You're editing text outside of Emacs. Your cursor remains where it was, so you insert a single character and the document scrolls back to the cursor. You can then delete that character.

2. You're editing text in Emacs. You like to pretend it's still the 1970s and off-screen cursors are some pie-in-the-sky fantasy. You solve the problem with some unspecified ELISP wizardry, which as a self-respecting Emacs user you are surely capable of.

3. You're reading a read-only document. You activate your full-text search, which every good document viewer has, and start typing the last sentence you read while it's still fresh in your memory.

winrid7 days ago
Make it an option so those with a skill issue don't make everyone else use a less powerful tool :)
eviks7 days ago
What's stops you from adding an easy way to go back?
renehsz7 days ago
How about making it configurable system-wide? Except that ain't gonna happen with the insane fragmentation we're seeing in UI libraries
layer87 days ago
Mouse and keyboard should be alternatives on equal footing as much as possible. The gutter for page up/down has the benefit that you don’t have to move the mouse all the way up and down to the arrow buttons when repeatedly switching between the same adjacent pages, or when you positioned the scroll button slightly off where you wanted the position to be, and adjust it a little by paging up or down — especially when the scroll range is so long that a small mouse move on the scroll bar corresponds to more than one page.

For scroll ranges that aren’t overly long, you can long-press so that the area ends up scrolling to that position. Only for long scroll ranges is it necessary to drag, use the context menu, or the Shift key, for absolute positioning.

There are certainly trade-offs, but it’s not like there aren’t justified reasons for the way it is.

wtallis7 days ago
The ubiquity of mouse wheels and two-finger scrolling on trackpads drastically weakens your case for prioritizing the page up and page down behaviors in the scroll gutter. The mouse already offers a low-effort way to adjust scroll position at small to medium scales, generally much easier that repositioning the cursor from above to below the scroll thumb unless you really need to scroll by precisely one page (usually not possible on the web anymore because of floating dickbars).
timbit423 days ago
When you want to go somewhere, the scroll bar doesn't show where anything is so how do you know where somewhere is?

I've never found it of any use.

garciansmith7 days ago
With regards to Qt, does that mean Qt apps on Windows or something? I use KDE so there are a lot of Qt apps and they are all click-to-scroll in the scrollbar. Of course it's KDE so it's configurable so you can change it to click-for-page-up/down and middle click to scroll, but left-click to scroll is the default.
danadam7 days ago
> IMO, "scroll here" should be the default action for clicking on a scrollbar.

> and Qt does not.

Isn't that what middle click does in Qt?

mrob7 days ago
Thanks, that does indeed do "scroll here". Now to figure out how to swap the left click and middle click functionality...
butz7 days ago
Very worrying trend is thin scrollbars on websites, or in some rare cases - scrollbar just hidden. Fortunately Firefox has a setting in about:config: layout.css.scrollbar-width-thin.disabled=true .
tveyben7 days ago
That is so sad!! The larger our screens gets the smaller the scrollbars get, making it at least twice as difficult to use.

Where do you remove the option for me to see how long your (now often AI generated) blog post is just by glancing at the scroll bar, why do you remove it. That’s really crappy UX…

Also - apps (mainly Office 365) no longer use a framework that allows the OS supported use of Accent Color (the thing that allows the active windows toolbar to get a Color that quickly and effectively signals ‘I’m the active one now). No no - I am Office I am so important that I need to always be green (Excel) or blue (Word) etc. No need for you to know if I am the active window or not - you’ll find out when starting to type and the ‘wrong’ windows receives your input!

It seems that there is a design pattern where product owners favor apps to look nice in board room presentations over making them effective to use for professional users (as well as average Joe).

Don’t get me started on the often lack of keyboard shortcuts - just use the mouse (no thanx - way too much clicking, only use mouse where it makes sense, please)…

notafox7 days ago
There's also

  widget.gtk.overlay-scrollbars.enabled: false - always show normal scrollbar, don't just expand on hover
  widget.non-native-theme.scrollbar.style: (it seems that values 1-5 are allowed)
  widget.non-native-theme.scrollbar.size.override: width
Works in Thunderbird too.
jeroenhd7 days ago
I'm not surprised scrollbars are hidden. They're hidden by default on macOS and when you find out that every other OS turns your design into a scrollbar mess, disabling all of them is the quickest fix.
abanana7 days ago
A "scrollbar mess"!? That type of designer is exactly the cause of the problem.

Usability breaks the look of my design, so I'll break usability! Obviously it's more important that everyone sees my amazing graphic design skills, than that they can actually use it!

lintfordpickle7 days ago
yes, that and I've noticed many scrollbars have very little contrast with the background color, making them ever more difficult for me to see.
hulitu6 days ago
And the best: they often are rendered above the window content (hello Mozilla). They call it: accessibility.
PcChip7 days ago
yes, I absolutely hate the new trend of tiny slivers that are basically invisible

I just want normal OS-controlled scrollbars everywhere

layer87 days ago
It’s about time that Raymond Chen starts ranting about the increasing amount of UI inconsistencies and loss of formerly ubiquitous features. (Or maybe I missed previous installments.)
publlus_enigma7 days ago
The absurd UI inconsistencies ushered in with Windows 8 were a big part of my I moved back to macOS and Linux.

If I want a dozen different UI toolkits and three different settings apps in my day, Linux has that covered, with a lot more freedom and reliability.

The days when everything was WinForms were glorious.

Telaneo7 days ago
I suspect there are reasons he doesn't talk much about anything newer than about Windows 8.
Kipters7 days ago
Apparently he also has a MASSIVE backlog of scheduled posts, so it's possible the queue hasn't caught up yet
chrismorgan7 days ago
In Linux/GTK, clicking in the gutter navigates to that position, and I have just discovered that Shift+clicking is equivalent to PageUp/PageDown, and that right-clicking seems to also be equivalent to PageUp/PageDown in Firefox, but scrolls at a fixed slow pace while the button is held in LibreOffice (15s per screenful at 6fps in Writer) and Inkscape (3s per screenful, smooth), and that middle-clicking is mostly PageUp/PageDown, but noop in Firefox; and I think those are the only apps I use (maybe even have installed) with regular scroll bars.

Oh yeah, one more, BibleTime which is Qt: it’s fairly Windowsy, click is PageUp/PageDown, right click is context menu (Scroll here, ---, Top, Bottom, ---, Page up, Page down, ---, Scroll up, Scroll down), Shift+click is same as click, middle-click is scroll here.

(These sorts of things are also one reason why you shouldn’t implement your own scroll bars in web pages: different platforms behave differently, and you can’t match it all sanely or sometimes at all.)

crtasm7 days ago
Strangely in Tor Browser I can middle click but not right click, despite it being based on Firefox and running in the same xfce session.
applfanboysbgon7 days ago
> different platforms behave differently, and you can’t match it all

Why do I care about matching it all? Do we need a scrollbar with all kinds of bespoke per-platform functionality? If I have a scrollbar, that people can use to scroll on all platforms, and it fits the visual aesthetic of my application instead of looking like an absolute dogshit eyesore, is that not good enough? What percentage of the population would you reckon is shift+clicking their scrollbars on a routine enough basis to notice a web-app that doesn't meet their expectations? 1%? 0.1%? 0.0001%? And in this fail case, when they shift+click the scrollbar and it doesn't behave as they expected, how much harm is really being caused? Will it ruin their day or will they maybe just go 'tch' and then use the scrollbar normally to achieve their scrolling needs like everyone else?

Apparently I have angered the scrollbar shift+clicking hordes. There might be dozens of you!

joshuaissac7 days ago
They'll just assume your site/app is broken, because their reference for what's correct is their platform. If they're annoyed enough, they go to a competitor unless it's a site/app mandated by their employer.

Read the full thread on Hacker News →

Related stories