Live data from Hacker News

The end of the nice GTK button

blog.brixit.nl

231–240 of 666 posts

Re: The end of the nice GTK button

#231

Earlier quoted context omitted.

That's sort of what happened with ElementaryOS, isn't it?

Sort of. It largely was a copy of Apple, unfortunately. However I think it at least pushed the bar of what might be possible with Linux, and they're no longer around [1]. I'm hoping someone can come and give real high quality work to the FOSS community and take on a wider perspective. They had to basically do their own thing instead of pushing GNOME/KDE along, which may have to be unfortunately the case. It would be…

> Below is the full text, as posted to Twitter by elementary founder Daniel Foré.

Oh, Lunduke is misgendering people now? I'm sure that isn't on purpose.

Re: The end of the nice GTK button

#232

Earlier quoted context omitted.

I think the problem Gnome, and Microsoft, have is they keep throwing money at designers. So designers keep making designs for the sake of designing. They should stop designing, stick to the design they already have and only do incremental updates when new widgets come out.

It's not like everything was perfect in the past and so we're done. Far from it. Even beyond that, the world is changing. New needs, new expectations, new styles in design. Just like we wouldn't expect cars to be frozen in time in the 1950s, we shouldn't expect UI/UX to be either. Linux DE's have never had a particularly well thought out, well designed look. There's been a lot of themes that people create to mimic ot…

> Just like we wouldn't expect cars to be frozen in time in the 1950s, we shouldn't expect UI/UX to be either.

I think your example points to a peculiarity of UI/UX: cars have changed a lot since the 1950s, but their interface has remained surprisingly constant.

I think there is a point to be made that an interface can reach a point at which it cannot be improved, or at least not without a whole paradigm change.

Re: The end of the nice GTK button

#233
I like some parts of the flat design. The lists being flattened out (even without borders) looks immeasurably better, IMO.

However, buttons should have still remained buttons. I don’t understand why buttons need to look like Labels.

This is disappointing and I hope the Gnome folks revisit this decision with the next iteration of libadwaita.

Re: The end of the nice GTK button

#234

Earlier quoted context omitted.

> I have had to explain to people tons of times that the random word in the UI somewhere in an application is actually a button they can press to invoke an action. Exactly this. I often help others use computers and phones. In the old days it was easy to see what could be clicked. Now input and output look the same. It makes it harder to use. In many ways it is a victory of style over substance - UI's are now designe…

> In many ways it is a victory of style over substance - UI's are now designed by the same crowd who designs high fashion, that is clothes not designed to be worn but to be gawked at. Is it? Style is no style at all if the thing in question does not fulfill its function. The whole point of something stylish is that it accomplishes its end so well and respects the appropriate constraints that is pleases the intellect…

Fine, a Pyrrhic victory of style over substance.

Re: The end of the nice GTK button

#235

I agree 100% with the author, the old GTK button was gorgeous, it will be missed. > I have had to explain to people tons of times that the random word in the UI somewhere in an application is actually a button they can press to invoke an action. This is one of my biggest complaints with the super flat modern designs. Many widgets lost their skeuomorphic depth, which encoded a lot if visual information (the clickabili…

This. The author dumps on ms for going flat, but MS did it with rock solid consistency.

I had a win phone 7 device. It was the pinnacle of consistent Gui.

Is it colored? Then it's a button. Is it white? It's a Text box. Is it a giant title? It's tabbed horizontal scroll.

Are you a "designer" who wants to color something non-clickable? Piss off, you don't get to do that.

Re: The end of the nice GTK button

#236
post #229
post #221

Earlier quoted context omitted.

The font rasterizer is a massive hack in modern UIs. Subpixel rendering is a serious pain in the ass. When you render text using subpixel rendering, you render the actual vectors at 3x the spatial resolution. But, not simply as if the vectors were 3x wider, because that would look too sharp: it needs to render as if there was 3x as many pixels, which is different. Then there’s compositing. Normal layers can be compos…

OK, but there's clearly an existence proof, and it ran fine on 32 bit machines with slow processors (or even embedded CPUs in the 80's!) way before all the piled hacks you are describing were invented. As I understand it, all that's needed is a vector renderer, and you keep everything (even text) in vector format as long as possible. RGBA then becomes a special case, as it must be for any DPI independent rendering pi…

> OK, but there's clearly an existence proof, and it ran fine on 32 bit machines with slow processors (or even embedded CPUs in the 80's!) way before all the piled hacks you are describing were invented.

Yes. Driving ~1024x768 framebuffers, on single core processors, with far less demanding workloads, but still, yes. (They still badly needed good glyph caching to accomplish this.) (I’m assuming a Windows XP-tier machine since that was the era most people started using ClearType/subpixel rendering.)

(Single core processors are obviously slower than multicore processors, all else equals, but exploiting multi-core processors effectively is harder and often leads to code that is at least a bit slower in the single-core case…)

> As I understand it, all that's needed is a vector renderer, and you keep everything (even text) in vector format as long as possible. RGBA then becomes a special case, as it must be for any DPI independent rendering pipeline.

I don’t want to sound like I’m being patronizing, but I get the feeling that you may not be grasping the problem.

We can’t just use text rendering logic to power other vector graphics. For many reasons. Text is not just rendered like vectors, as that would simply be too blurry at 96 DPI. Old computers used bitmap fonts or aggressive hinting, and newer computers use anti-aliasing, often with subpixel anti-aliasing. Doing that with every line on screen isn’t feasible even if you wanted to write the code. Here’s an attempt to enumerate just the obvious reasons why:

- It’s slow. Yes, old 32 bit computers could do it, yadda yadda ya. But they did it for text. At the glyph level. And then cached it. They were most certainly not rendering anything near the entire size of the framebuffer at once.

- It’s difficult to GPU—accelerate. GPUs can do vector graphics and alpha blending fast, but subpixel rendering as its done with text is not something that can be done using typical GPU rendering paths. It could still be made to exploit GPUs, but it requires more work and is slower.

- Fonts achieve better crispness on lower DPI displays using hinting VMs. Without them, many glyphs would be quite blurry. Hinting VMs allow typographers making font outlines to make specific decisions about when and how vectors should be adjusted to look good on raster displays. In case it isn’t obvious, the problem here is that doing this for every line on the screen requires you to write special casing for every line on the screen. Maybe you could come up with a general rule that makes everything look good and doesn’t wind up with uneven looking margins or outlines ever (you really can’t, but…) — you have to run this logic for every line. That’s an increase in complexity.

- Glyphs only need to care about their relationships with eachother. UI elements on screen have arbitrary concerns. They have relationships with other things on screen; they line up with other shapes and the whitespace between them is significant. Glyphs only care about other glyphs horizontally adjacent to them (or vertically in some scripts, perhaps) but other UI elements care about their relationship with potentially any neighboring UI elements.

- UI rendering code does not exist in a vacuum. At some point, apps will need to do something that requires them to know the size of something on screen either in physical or logical dimensions. Normally, this isn’t a problem, but if all vector rendering was as complex as text, it would absolutely be an issue. The naive way of handling it would seem correct in many cases, but it would be wrong in many others, just like how old APIs that expose pixels instead of logical units tend to lead to apps with subtle scaling issues.

> Trying to compose rendered vectors using pixel based operations is madness, so... don't?

Yes, of course.

Except that, too, is hard. Think about web browsers: they need to support arbitrarily large layers for composition (like extremely long text in an overflow: scroll div,) and these layers can nest in arbitrarily deep and complex trees. Any node on this tree can apply transformations, masks, filters, drop shadows… In theory, most of this stuff should be doable without ever leaving vector land, but it’s absolutely not without its challenges.

> Or, just don't composite at all. A decade later, Linux desktop compositors are still an ergonomic regression vs. existing display drivers with vsync and double buffering support.

Hrm… I’m not talking about desktop compositing. Even modern desktop compositors render surfaces at pixel positions, so it doesn’t really cause any additional issues. I’m talking about the kind of compositing that GTK or Firefox do.

That said, I do agree that desktop compositing on Linux, especially X11, has been less than ideal. However, it certainly isn’t standing still; the situation with compositing on Wayland and open source GPU drivers has been much more promising. You still get a lot of the trademark issues with compositing that are pretty much inherent, but I have perfect vsync with good frame pacing and a solid 2 frame latency end-to-end in Chromium on SwayWM. I believe that’s close to ideal for a surface running under a compositor. A far cry from the compromise-riddled world of old GPU accelerated compositing.

Re: The end of the nice GTK button

#237

Earlier quoted context omitted.

> As for themes, I quite like the new libadwaita theme, and prefer it to the default GTK theme. You're free to disagree, but you can't say your opinion is correct, nor can I. I agree... but the gnome devs are directly telling me my opinion is incorrect, by removing the ability for me to change my apps i use to a theme I like. Oh wait sorry, i guess i should have said gnome's apps.

This is an unfortunately very common misconception: you can still set GTK_THEME on libadwaita apps, it's only the gsettings configuration that doesn't work (due to implementation constraints, unfortunately).

I've tried that, and besides it being a highly inconvenient workaround, it doesn't work on any of my machines.

Re: The end of the nice GTK button

#238
post #50

I agree 100% with the author, the old GTK button was gorgeous, it will be missed. > I have had to explain to people tons of times that the random word in the UI somewhere in an application is actually a button they can press to invoke an action. This is one of my biggest complaints with the super flat modern designs. Many widgets lost their skeuomorphic depth, which encoded a lot if visual information (the clickabili…

A couple of times i found myself clicking on various text labels just to see if it is a title or a button. All these flat minimalist designs are a step in a horribly wrong direction.

I've seen all 4 combinations of "looks like" vs "is actually" {button,static text} on a web app I was once forced to use. Some of the plain text was actually a clickable button (with NO hover effect), and some of the "buttons" (or more precisely, short actionable text with a rectangle around it) were actually just labels. Imagine the word "Order" presented in both styles, and my astonishment when I figured out which one I actually had to click.

Re: The end of the nice GTK button

#239
post #171

Earlier quoted context omitted.

But end users use the same mechanism to theme their apps as vendors and that one is being removed.

So what? Why should they continue to support some minor feature if it costs them a lot of resources and they think it's not worth it because it doesn't really fit their project? If you have a feature that is used by one customer out of thousands but it's causing problems at every update you push out. It might be better to remove the feature and fire the customer, than to keep supporting it no matter what.

Then let them enjoy their broken interface, and, yunno, let people fix it when it breaks. Like how Open Source works.

Re: The end of the nice GTK button

#240
post #230

Earlier quoted context omitted.

The flatness of some UIs along with the removal of some visual cues has happened that I have tapped on things that aren't actually a button thinking that they might be one. When I make my own apps one day, I am going to ignore design fads and only make intuitive interfaces.

If you really want to go against the grain, may I suggest radial menus, which allow the user to muscle-memory through menu selections: https://bindpose.com/custom-marking-menu-maya-python/

Interesting concept, but I would add keyboard shortcuts (underlined items) to the menu to make it more of a reminder than be forced to use the mouse all the time.
Post reply on HN