My gripes and frustrations with Libadwaita (and GNOME)

Listen, I think Libadwaita is great. I love the fact that it has made it so much easier to develop GNOME apps, unified and modernized the look & feel, and the interface of the apps while also making them cross-device compatible/ adaptive without too many compromises but even I’ve got to admit, it’s not perfect and has some issues that are kinda hard for me to ignore right now.

For example, I hate the fact that Libadwaita UI elements like hamburger and secondary-click context menus in apps were made bigger and more padded compared to their older GTK counterparts which is a problem on my 14" FHD screen. The increased size of some UI elements also makes me have to slide my fingers further on my touchpad than before when compared to older GTK apps to interact with certain UI elements which is an issue for me because of my neverending fatigue and weakness, especially in the hands. Also, the shell and the apps look too bulky to me because of it.

This second issue is not specific only to Libadwaita but also to GTK4. I have a low-res FHD screen that does not have that good of a contrast ratio so I don’t like the fact that GTK4 and by extension, Libadwaita apps have no support for subpixel (rgba) rendering which makes the font rendering in Libadwaita apps look more fuzzy and therefore harder to read for people like me with poor vision, on LCD screens. Legacy GTK apps on distros other than Ubuntu and a few based on it already didn’t have that outstanding text rendering in terms of sharpness and contrast when compared to Windows and Mac but now it’s even worse in Libadwaita apps. This for me is the biggest issue because of my quite poor eyesight.

My last issue with Libadwaita is that you have to click on the submenus in context menus to open another page where their options are exposed instead of just being able to expose them by hovering over them, which is an extra unnecessary step much to my annoyance and increases my aforemensioned fatigue & weakness. The behavior of the submenus in context menus is also not consistent with apps not using Libadwaita which most desktop users have installed so I wish it worked the old way on non-touch devices.

In the end, I love GNOME and love the direction it is going in (thank you GNOME devs for all your hard work!), and I believe it is the only Linux desktop that works this well for me but I wish these issues were to be addressed. My suggestion to fix the latter two issues is to maybe add a desktop mode to GNOME that automatically gets enabled on non-touch devices and makes the submenus in the app context menus instead while also making the apps and the shell more compact. This would make GNOME much better for desktop use while also making it much better looking IMO.

1 Like

Hi,

The typical issue with font rendering is a bad configuration. It’s easy to achieve a perfect pixel-fitted rendering, which looks very nice on low resolution displays:

  • use a properly hinted font like “DejaVu Sans”. Absolutely avoid Cantarell or Liberation.

  • make sure you use proper font rendering settings (call gtk4-query-settings to check):

    • gtk-font-rendering = manual (gtk >= 4.15 only)
    • gtk-hint-font-metrics = true
    • gtk-xft-antialias = 1
    • gtk-xft-hinting = 1
    • gtk-xft-hintstyle = hintmedium
    • gtk-xft-rgba = none
  • use a proper hinting algorithm: export FREETYPE_PROPERTIES="truetype:interpreter-version=35"

This will look like this:

Hello.
I have seen the screenshot and honestly, it doesn’t look that good to me. My preference for font rendering on LCD screens is Windows like. any idea how to get that on Fedora?

“Windows-like” can mean a lot of different things. A screenshot of what you mean would help in figuring out an answer.

As far as I know, RGB subpixel aliasing like “cleartype” on Windows isn’t supported by Gtk4.

If I remember well, the reasons for this are:

  • rgb aliasing needs knowledge of the background color for properly rendering, which was technically hard to achieve with the rendering implementation (I read that several years ago, not sure if still the case nowadays)
  • rgb aliasing from freetype won’t work anymore as soon as the text is rotated or animated (or something like that, not exactly sure either)
  • some modern display technologies (example) don’t use simple rgb patterns anyway, so will defeat the whole thing

The current grayscale rendering avoids most of these issues.

There are some settings to play with (see above) to try improving the rendering, I suggest to look a the gtk4-demo > “Pango” > “Font rendering” to try some settings and visualize the impact.

I mean the default ClearType font rendering in Windows without modifications through the ClearType tuner.

hi, libadwaita maintainer here. None of what you’re mentioning is specific to libadwaita.

UI elements are for the most part exactly same size as what they were in GTK3. There are exceptions, but not many. In fact, in some cases it’s more compact than before, e.g. toolbar view allows to remove a border (and thus double spacing) between toolbars.

I’m a touchpad user as well, and I personally find that large widgets actually help a lot with it - it’s so much easier to aim when the widgets are not tiny - old systems in VMs are very painful because of that.

Menus are not handled in libadwaita either, and, like large widgets, predate it by a long time, having been identical in GTK3 ever since GtkPopoverMenu hsa been a thing, so since GTK 3.16 (2015). I do actually want to move menus to libadwaita since the GTK ones are fairly limited and designers keep coming up with menu designs that aren’t implementable, but that’s tricky and as of now not completely possible, as some action-related APIs in GTK are private to the point it’s impossible to implement GtkActionable outside GTK other than by proxying to existing widgets.

1 Like

Sorry, I should probably specify that I was talking about the hamburger menu and context menu size increase (due to larger option labels font sizes). I’ll correct that.

Here’s a screenshot showing what kind of font rendering I want:

Here’s your screenshot at the top and the same 1st paragraph in Text Editor at the bottom, on GNOME 46:

I don’t have the sharpest eyesight but can you describe the differences you see?

All I changed in Text Editor was increase the font size from default 11pt to 15pt. And I have my system monospace font set to DejaVu Sans Mono Book instead of the default Source Code Pro. The text looks very similar to me. Your screenshot has a bit washed out text but that’s because you have it as a JPEG.


adding:

I’ve got a 24.1" 1920x1200 display and text has looked fine to me. A few GNOME releases back (I don’t recall which) GTK4 didn’t do subpixel rendering which was noticeable in text but could be worked around by creating a file ~/.config/gtk-4.0/settings.ini containing:

[Settings]
gtk-hint-font-metrics=1

Since a more recent GNOME release that’s no longer needed as on normal DPI screens that’s now the default. I no longer need the file on GNOME 46. Only HiDPI screens don’t use subpixel rendering now. Excuse me if I’m mixing up terminology or timelines. To the best as I recall it.

The text on your screenshot isn’t using subpixel rendering.

Subpixel rendering is when text edges become blue and yellow so that from the distance they blend in with the black text and basically increase the horizontal resolution 3x. Assuming the (still visible) colorful edges don’t bother you ofc.

Meanwhile notepad screenshot?

Sure, it’s a jpeg, but even then we can clearly see it’s grayscale.

image

My guess that Windows is only doing this on lower scale factors - because on hidpi it’s basically useless.

gtk-hint-font-metrics isn’t subpixel rendering either, it’s just rounding glyph positions, more or less. GTK indeed can’t do subpixel rendering, but their preferred screenshot isn’t doing it either, so indeed looks almost identical to yours.

Sorry there @jakedane @alicem , I didn’t realize if it wasn’t using subpixel anti-aliasing. Here’s a new screenshot with the font rendering (subpixel) that I am happy with:

I think it is also similar to Windows (and possible under Linux).

I mean sure, I know how it looks like, but it’s rather hard to take you seriously if you talk about how it’s such a big problem, and yet you don’t notice that it’s missing on your own screenshot… Surely, if it was such a big problem, you’d have immediately noticed?

I have vivid hallucinations, severe brain fog/ dissociation/ confusion, and vision issues (floaters and greyed-out vision) from anxiety, etc along with a host of other cognitive issues that sometimes make it quite difficult for me to make out what is in front of me especially if it is on a low contrast screen like mine and sometimes I confuse my hallucination with what I am seeing and that made me think that it was using subpixel rendering.

The reason why I want better font rendering is that I need it to be the most legible as it can be so I can clearly and fully understand what I am reading and keep my eye strain to a minimum since these are already issues I have a lot due to my health. I feel that the fonts in Libadwaita are not of adequate contrast (on light mode, they look kind of grey to me) compared to the backgrounds they lie on and are not bold enough for them to look good on my low-ppi screen.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.