Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Nice to see that someone is still maintaining the original GTK1 toolkit. It's like the classic Win32 UI API for the Linux/Unix. Linux UI libraries are a constantly moving target and one can be easily more occupied by adapting to those toolkit API changes instead of focusing on the features of the application itself. I guess that CinePaint developers decided at some point that they don't want to endure API changes in the UI toolkit anymore.

On the other hand, I think GTK1 doesn't even support Unicode.



It doesn't support Unicode, doesn't support font antialiasing, and instead of fontconfig, you need to grapple with X11 core font support, using ttmkfdir and friends, and make the X11 server aware of where the fonts are.

It's some experience I definitely don't miss from those days.


Oh, yes, I remember those early times as well. :) The question is whether it's possible to maintain the legacy API and upgrade the internal architecture to use more modern approaches. I think it's almost always possible, but perhaps the cost to develop and maintain such a legacy layer is too high for an open-source desktop environment and toolkit. The Windows OS managed to support old APIs quite well, but the available resources are incomparable.


Are you sure no antialiasing? No subpixel for sure.

I think I have some rusty memory of LD_PRELOAD my own .so with AA enabled (special patch? I don’t recall) with a game’s installer I shipped to get the statically linked GTK+1.2 Loki Games setup utility looking modern. That plus a QUITE SPIFFY looking splash bitmap slapped onto it would hopefully let the installation complete before anyone realized it was a creaky old thing.



…and recompile mozilla and nautilus and maybe all other stuff using gtk1…

As someone who used to build Mozilla suite back when their gtk2 support was experimental, I’d say this is too much faff.


GTK 1.x used GDK which was a thin veneer on top of Xlib, and I think it defaulted to use Xlib calls for text rendering.

If the X server supported antialiased text (and subpixel rendering) then GTK should have done too.


Do any X servers do? Antialiased text on X is generally done by rendering the glyphs client side.


They did with the XFT font server?

https://en.m.wikipedia.org/wiki/X_Font_Server


Did it? I can't find documentation that suggest it returned antialiased font data. The server could of course request a larger font size and scale it down, but did any do that?

I'm not questioning that it'd be possible to render antialiased fonts server side as there's nothing in X that really prevent it, I just don't recall that being a thing, rather than upgrading apps to use Xrender to render fonts client side and send the servers and atlas of pre-rendered glyphs the way we currently do.

I could very well be wrong - I didn't do much X programming in the brief period it'd have been relevant.


Back in the day there was a font server for antialiased fonts, xfstt:

https://tldp.org/LDP/LG/issue28/ayers1.html

That was what I was looking for.


Thanks for the pointer, but from the page you linked to:

> Even though xfstt doesn't do any anti-aliasing of the fonts (since there's no support for this in X)

The page it links to for xfsft as well, says this:

> Although FreeType does support font smoothing, the modified libfont.a does not. Adding font smoothing to X would require a major change to the system: in X, glyphs are (monochrome) bitmaps, and there is no support for using pixmaps as glyphs. Changing this would require the design and implementation of an extension to both the X protocol and the font server protocol, and changing applications to use the extensions.

It goes on to link to the Xrender extension as a solution.


Well, my fault again. I remember a daemon doing XFT rendering for plain X, from Debian Woody days.


You were half right which is something for stuff this old. I'd entirely forgotten about the font servers, and looking at them, at least xfsft does use FreeType/Xft. It's just that it's still rendering to monochrome bitmaps.

It'd have been a logical extension to figure out the changes to support AA for them as well, so it's a reasonable assumption, especially given the short cutover before Xrender took over and we started getting AA most places. Indeed, Xrender provides all the server-side infra that'd have made it easy-ish to do, by allowing glyph sets with depth...

In retrospect it's also surprising that it wasn't done, because it wouldn't instantly given AA to a lot of applications "stuck" on server side font rendering...


Motif was improved with XFT/Fontconfig support. GTK1 can be patched too'


I wonder how many llm tokens are burned dealing with Unicode issues?


Yeah, I think GTK2 would be a better candidate to keep maintaining. GTK3 is where it started to go to hell in a handbasket.


Gtk2 also had exceptionally long lifetime, initial release in 2002 and last release in 2020. In contrast Gtk1 was initially released in 1998 and last release was 2001.


The "classic API" would probably be Xaw or Motif. Those haven't changed since practically before there was Linux.


Motif was the real "classic" API. But let's do a little justice to GTK1. Motif was still a proprietary library when GTK1 was released. GTK1 was also already easier to develop with, and the default look&feel was somehow better. For some reason, all the widgets in the Motif UI were huge. Given the small resolutions of that time, it was very space inefficient.


The free clone "LessTif" already existed when "GTK+" 1.x came along.

I agree that GTK was much easier to program, and had a better feel but the look was mimicking Motif except that every widget instead used a shaded button-style border — and that looked very ugly IMHO.

However, GTK 1.x supported theme engines. Back in the day, my theme for GTK 1.x was one of the most popular, giving programs a look reminiscent of NeXTStep and Windows 95. The engine also (optionally) hacked the GTK widgets, adding triangular tabs and subtly improved menu behaviour. When GTK 2.0 came along, it had a much improved default look that felt like its own thing, and also the new menu behaviour so my theme wasn't needed any more.


If I remember correctly, Xaw was part of X and predated Motif although it’s hard to really call Xaw a full UI; it was pretty bare bones and limited.

It’s worth keeping in mind that there were other Unix UIs that didn’t make it. For example, Sun NeWS was quite interesting (based on PostScript).

> For some reason, all the widgets in the Motif UI were huge.

Huge and IMO quite ugly. Also slow. Not that Xaw was pretty ( or even that functional). GTK1 was definitely a step in the right direction.


Xaw was also really awful to program in. When I tried using it once I ended up reverting to just plain Xlib and was much happier, even having to build my own widgets out of low level primitives.


Both Motif and Xaw were configurable with XResources, they could be as big and small as you wanted.


Then I would vote for Motif. But since it predates Linux, it is a classic Unix look, not Linux. For the younger crowd: <https://en.wikipedia.org/wiki/Motif_(software)>


OpenLook/XView is contemporary as well. And CDE is a thing, still.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: