Live data from Hacker News

The end of the nice GTK button

blog.brixit.nl

461–470 of 666 posts

Re: The end of the nice GTK button

#461
post #215

Earlier quoted context omitted.

Well, how much it Just Worked really depended on what you were doing and how. At a point, it all stopped Just Work-ing. Old old X11 apps used X11 drawing commands. These sucked, and nobody liked them. If you think you liked them, please show me your clean Xlib codebases for proof :P As far as I can recall, these still dealt with pixels, so clients were on the hook for dealing with scaling, though in theory it wasn’t…

> More modern apps (— early 2000s should be “modern” enough by X11 standards, but my memory is foggy and I’m too young to really be an expert here —) instead blit pixmaps sent over shmem, defeating both network transparency and the inherent “vector” nature of many of the old drawing commands. X11 didn’t really handle anything other than knowing the DPI (… that you told it …) This is entirely untrue. Did you even try…

> This is entirely untrue. Did you even try ? Qt even at version 6 still supports rendering through X11 commands, and afaik does that by default when ssh'ing on Debian distros.

When you connect over SSH, it will fail to setup XShm and then it will work as expected, only slower than the speed of smell, because now it’s shipping pixmaps over the network. Not all X11 clients continue to work properly if XShm can’t be established, and hardware acceleration is basically a no-go despite OpenGL/glx theoretically being a client/server ordeal.

> And I can set my Xft.dpi to, say, 144, ssh -X somewhere and the apps I launch (tried gtk2, gtk3, Qt 4 to 6) will so far all use the correct local DPI. Which other remote UI technology supports that ?

Waypipe. Unlike X11, Wayland doesn’t start with network transparency as a principle, but it is completely possible to proxy it. Other than not being able to get a hardware-accelerated OpenGL or Vulkan context, a client connected over Waypipe is very similar to a local client. The proxy can handle things like serializing data sent over shared memory, so UI toolkits and other client code doesn’t need to behave any differently over the network; it just needs to use synchronization primitives correctly.

Re: The end of the nice GTK button

#462

Just last week I found myself in a position where I was at a major event (SXSW in Austin TX) having to support normal users trying to do various things on mobile and it's really eye-opening when you see first-hand how bad the experience is. I had a conversation with a user recently which went something like this: 'Yeah I know they have an app but your thing won't show up in the app for about a day so you need to go t…

What was sxsw like this year? Haven’t been for a while, but am curious after the break and current covid context.

It was awesome actually. My first time but the vibe was fantastic. Lots of long-term "southbyers" said to me that it was because of a general feeling of being delighted to be back.

Re: The end of the nice GTK button

#463

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…

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

The one that irritates me these days is working out at a glance what has input focus. Window borders are so thin, and the difference between focused and not minimal, app have custom chrome so while titlebars are a good indicator sometimes often they are not, or are just two subtle, etc. MS Office apps are an offender here.

An example taken right now with Firefox under Windows: https://daveflix.deeohhtee.enneeetee.net/stuff/tmp/FocusNotO...

Which of those has focus? There is actually a difference (and to take the screenshot they overlapped making it obvious that way) but it is subtle. Try spotting it reliably when they are on different monitors.

At some point it'll annoy me enough that I'll write a util to scan for the current window that is top of the stack and draw a bright green border (or otherwise unmissable clue) around it… It'll look ugly, but I'll darn well know where what I'm about to type will go!

Re: The end of the nice GTK button

#464
post #430

Earlier quoted context omitted.

Goodness the start bar on Windows. For something that is meant to be a key part of both the mouse and the keyboard workflow, how can it be so slow? My work computers can hang for so long on it, that it is quicker to find the application shortcut on the desktop.

I believe it's not really an integrated part of the Explorer shell anymore, but rather a separate process that gets launched every time you open the start menu.

Yes, there are separate processes, however a new instance is not started each time you open it - the same window is re-shown.

    Taskbar: explorer.exe
    Start menu: StartMenuExperienceHost.exe
    Searching: SearchApp.exe
So, when you hit a key with the start menu focused, it closes the start menu and opens the search window (with the search text initialised with that key).

Perhaps keystrokes are lost during the switch.

Re: The end of the nice GTK button

#465

Earlier quoted context omitted.

> 4K (or better) monitors have long since become the choice for most of those who cares about how font rendering looks. This is the hardware solution to something that can be solved in software. If your game is laggy, of course upgrading to a 3090 is going to help, but that doesn't mean you're solving the problem.

It can't be solved in software, due to the Nyquist limit: Sharp high-contrast edges (text) necessarily have high frequencies, and you need a high sampling rate (pixel density) to produce a good approximation of that signal. People have spent a lot of effort to push anti-aliasing techniques as far as they can go, but displays with higher pixel density are just better for displaying text. I agree that if you are making…

Bitmap fonts (and hinted fonts are automatically generated bitmap fonts) are pixel art, so the Nyquist limit doesn't apply. In pixel art, the pixels are treated as little squares or rectangles, not band-limited point samples. This means you sacrifice the ability to display arbitrary shapes, but I'm not trying to reproduce printed text so I don't care.

I have perfectly sharp text on a 1080p monitor because I disable antialiasing in ~/.config/fontconfig/fonts.conf and force full hinting.

Re: The end of the nice GTK button

#466
post #236

Earlier quoted context omitted.

> 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 mach…

The underlying logic for rendering "hinted" line borders and UI widgets is a lot simpler than for hinting arbitrary text. It's a matter of snapping a few key control points to the pixel grid, and making sure that key line widths take up integer numbers of pixels. Much of the complexity you point out only arises because we now insist on having physically sized rendering for "mixed-DPI" graphics, like a single window s…

> The underlying logic for rendering "hinted" line borders and UI widgets is a lot simpler than for hinting arbitrary text. It's a matter of snapping a few key control points to the pixel grid, and making sure that key line widths take up integer numbers of pixels.

This is exactly what I was “hinting” at when I said coming up with a universal function that would work for anything. You can’t just snap some/all things to a pixel grid; it would look absolutely terrible because it would make lines and whitespace uneven. Even font autohinting, which does exist, is more sophisticated than just aligning key control points to a pixel grid.

> Much of the complexity you point out only arises because we now insist on having physically sized rendering for "mixed-DPI" graphics, like a single window spanning both a low- and a high-resolution display. That's not necessarily a very sensible goal, and it's not something that would've been insisted on back when achieving "pixel perfect" rendering was in fact a major concern, regardless of display resolution.

It’s not. Even under Wayland, which can achieve this, the application would only render one surface at a specific resolution at any given time. Nothing I’ve been talking about is related to being able to split a window across different DPI screens.

> A similar concern is the demand for arbitrary subpixel positioning of screen content, that basically only matters in the context of on-screen animations. Nobody really cares if an animation looks blurry, but it's somewhat more important for static content to look right. Trying to have one's cake and eat it too will always be harder than just focusing on what's actually important for good UX.

If you scale a UI that was designed for 96 DPI pixels to a screen that is around 160 DPI, you already have subpixels. If you then attempt to snap to a pixel grid instead of rendering elements at subpixel positions, then you have uneven, ugly looking UI elements.

This unevenness is arguably more tolerable for text than it is for UI elements, but Microsoft actually took the approach of not having it for text regardless; to make text look cleaner, text uses more aggressive gridfitting in Microsoft UIs, resulting in each glyph being gridfit. This is exactly why old Windows UI scaling lead to cut off text and other text oddities; it’s because the grid fitting lead to text that had different logical widths when rendered at different resolutions!

You can’t just wish away subpixels. Numbers that just happen to be whole numbers are the real edge cases in a world with arbitrary scale factors.

Re: The end of the nice GTK button

#467
post #164

Earlier quoted context omitted.

It's kind of cathartic watching this happen to a new generation of developers. They can't say I didn't warn them! Ultimately I think this will be quite good for QT/kde in the long term. Gnome/GTK gets a lot of corporate support, especially from red hat, but seeing the issues pop OS had with GTK makes me hopeful that more companies will adopt QT.

Dropbox desktop app is written in QT, at least on Windows and Linux. Mac uses its own custom UI to better fit with the Mac-app world.

Also EA Origin is written with Qt no? At least last I ran windows?

Re: The end of the nice GTK button

#468
I sorely miss the days when it was possible to explain to someone the principles of how an OS UI worked, and for those principles to be reusable across a wide array of applications.

Today, every application seems to just do its own thing, and continually churns its own UI, chasing trends.

There was a time when an elderly relative would say “computers are too hard to use”, and I could recommend a book or manual that would help make it clearer.

Nowadays I tend to just agree with them.

Re: The end of the nice GTK button

#469
post #321

Earlier quoted context omitted.

> Qt 6 […] there are no visual changes so far That's false, examine Strawberry 1.0.2 running in KDE 5. The menus have the wrong background colour. The font size is wrong.

That's because there's no Breeze theme for Qt 6, so it's using the builtin Fusion theme which is literal cow dung. If you port your theme to Qt 6, the app should look identical.

I do not use a theme. I think you have it the wrong way around. What's missing here is the Qt6 equivalent of KDE System Settings → Appearance, or configuration tool http://qt5ct.sf.net>, and it's not my task as the end user to provide these, but the toolkit and desktop environment developers'.

Re: The end of the nice GTK button

#470
post #403

Earlier quoted context omitted.

> If it's not obvious, it's probably not a critical feature, just a nicety for those who discover it. That's a really bad way to go about usability. It's pretty frustrating you're looking for a feature to have to hunt for it like you're playing a point & click game. At that point I wouldn't even call it a feature, it's an Easter egg.

Exactly my thoughts. Who's to say if a feature is critical or not? It's the user.

I would say this is not entirely correct as a standalone rule. Just to make it clear, I completely disagree with this statement the OP made:

> If it's not obvious, it's probably not a critical feature, just a nicety for those who discover it.

There is a huge difference between discoverability and hierarchy. If the user can't distinguish between an interactive element and a static label, the UI has failed. But there is definitely nuance in the degrees of hierarchy and importance. If every button looks the same with every affordance necessary for a user to recognise it as such, it might be great in terms of discoverability, but in most cases it would still be bad design because as a user I can't easily distinguish between primary, secondary or tertiary actions.

This is of course also highly dependent on the business goals and overall context of the design. If you have a marketing page you might want to clearly distinguish actions that lead to the sign up or download of your product (this – in most cases – is what you would like your users to do and also what your users eventually want to do themselves). If you have enterprise software that is highly customizable and completely different for each and every individual, you might want to shy away from opinionated hierarchy of importance. In this case, it would be very much dependent on the user and therefor their choice.

Typically the context is – at scale – more on the former side than the latter. If I have, for example, a notes app I would say the hierarchy favors the creation of new notes rather than going into settings to change the appearance of my notes. That doesn't mean it shouldn't be discoverable, only that the design should clearly dictate what's more important (especially on a temporal dimension: I'll add notes more often than I would edit the style) and therefor influence the appearance of both actions.

Let me know what you think.

Post reply on HN