I'm sorry, this is an extreme noob question, but I have been trying my hand at proper gui programming and have a ton of questions.
-
I'm sorry, this is an extreme noob question, but I have been trying my hand at proper gui programming and have a ton of questions.
To make gnome and related windows, you use gtk. To make kde and related windows, you use qt. gtk has become so obtuse in C that gnome devs made their own higher language called Vala that compiles down to C source. Qt has become so convoluted that even the guides on how to use KDE creator don't always work. Lots and lots of programs now exist that do not follow your window manager's decorations at all.
How did we get here? How did we do it back in the day?
I look at old screenshots of late 90s to early 2000s era linux, and I see a lot of windows that follow the menu conventions of the host window manager. I've found some tutorials from the 90s for X11 programming that makes a window, but doesn't include how to add window decoration elements to it.
I, a fool, thought that there was some standard for GUI applications that gets read by your desktop environment of choice to put the menus and things in their right place, which I guess is sort of true with gtk and qt, but I thought it was some centrally defined part of x11 or wayland instead of a couple of frameworks that we all collectively decided are good but different from each other.
@Dio9sys There's never been any coherent standard in the Unix world. For a while, GTK and QT played nicer together than they do now, but GNOME and KDE have grown outright hostile to one another now.
-
I'm sorry, this is an extreme noob question, but I have been trying my hand at proper gui programming and have a ton of questions.
To make gnome and related windows, you use gtk. To make kde and related windows, you use qt. gtk has become so obtuse in C that gnome devs made their own higher language called Vala that compiles down to C source. Qt has become so convoluted that even the guides on how to use KDE creator don't always work. Lots and lots of programs now exist that do not follow your window manager's decorations at all.
How did we get here? How did we do it back in the day?
I look at old screenshots of late 90s to early 2000s era linux, and I see a lot of windows that follow the menu conventions of the host window manager. I've found some tutorials from the 90s for X11 programming that makes a window, but doesn't include how to add window decoration elements to it.
I, a fool, thought that there was some standard for GUI applications that gets read by your desktop environment of choice to put the menus and things in their right place, which I guess is sort of true with gtk and qt, but I thought it was some centrally defined part of x11 or wayland instead of a couple of frameworks that we all collectively decided are good but different from each other.
So, turns out GUI programming has always sucked terribly. One of the reasons Windows won back in the day was because as bad as it was, its API was significantly better than most of the other options out there (Mac classic had a bunch of weird global variables and fixed point thingies, Intuition on the Amiga was so bad, the primary GUI API ended up being a paid-for third-party library).
For X, as someone who’s written a couple of window managers… (cont)
-
@Dio9sys There's never been any coherent standard in the Unix world. For a while, GTK and QT played nicer together than they do now, but GNOME and KDE have grown outright hostile to one another now.
@Dio9sys The closest we ever came to a "standard UI" was Motif, and that was killed by being proprietary until far too late.
-
I'm sorry, this is an extreme noob question, but I have been trying my hand at proper gui programming and have a ton of questions.
To make gnome and related windows, you use gtk. To make kde and related windows, you use qt. gtk has become so obtuse in C that gnome devs made their own higher language called Vala that compiles down to C source. Qt has become so convoluted that even the guides on how to use KDE creator don't always work. Lots and lots of programs now exist that do not follow your window manager's decorations at all.
How did we get here? How did we do it back in the day?
I look at old screenshots of late 90s to early 2000s era linux, and I see a lot of windows that follow the menu conventions of the host window manager. I've found some tutorials from the 90s for X11 programming that makes a window, but doesn't include how to add window decoration elements to it.
I, a fool, thought that there was some standard for GUI applications that gets read by your desktop environment of choice to put the menus and things in their right place, which I guess is sort of true with gtk and qt, but I thought it was some centrally defined part of x11 or wayland instead of a couple of frameworks that we all collectively decided are good but different from each other.
@Dio9sys I’m not a programmer, but as a user this drives me bonkers.
Right now on my Debian desktop, I have 3 applications open and they’re all displaying different borders, different chrome, different scroll bars.
WTF, computers?!?!
-
@Dio9sys There's never been any coherent standard in the Unix world. For a while, GTK and QT played nicer together than they do now, but GNOME and KDE have grown outright hostile to one another now.
@mos_8502
ugh, painful.I was going through Vala tutorials last night in preparation for a game project, and spent the whole time feeling like I was going on a furniture store tour that happens to be on top of a junkyard.
-
So, turns out GUI programming has always sucked terribly. One of the reasons Windows won back in the day was because as bad as it was, its API was significantly better than most of the other options out there (Mac classic had a bunch of weird global variables and fixed point thingies, Intuition on the Amiga was so bad, the primary GUI API ended up being a paid-for third-party library).
For X, as someone who’s written a couple of window managers… (cont)
(Forgive me if I tell you things you already know.)
X was all about “mechanism not policy) because it was a bunch of different vendors. The grand idea was network-transparent windowing, with an event-driven architecture and the server controlling the screen and input devices.
The X server of course only knows about windows and font IDs and bitmaps and drawing instructions. One client can request that certain events be forwarded to it, and it can modify/intercept them.
(cont)
-
@Dio9sys There's never been any coherent standard in the Unix world. For a while, GTK and QT played nicer together than they do now, but GNOME and KDE have grown outright hostile to one another now.
-
(Forgive me if I tell you things you already know.)
X was all about “mechanism not policy) because it was a bunch of different vendors. The grand idea was network-transparent windowing, with an event-driven architecture and the server controlling the screen and input devices.
The X server of course only knows about windows and font IDs and bitmaps and drawing instructions. One client can request that certain events be forwarded to it, and it can modify/intercept them.
(cont)
That distinguished client is the window manager. In the classic X workflow, it was responsible for drawing window decorations. That’s not built into the protocol, and GTK for example now draws its own decorations on client windows.
But traditionally the window manager drew decorations and reparented client windows into this hierarchy of decorations.
(Cont)
-
I'm sorry, this is an extreme noob question, but I have been trying my hand at proper gui programming and have a ton of questions.
To make gnome and related windows, you use gtk. To make kde and related windows, you use qt. gtk has become so obtuse in C that gnome devs made their own higher language called Vala that compiles down to C source. Qt has become so convoluted that even the guides on how to use KDE creator don't always work. Lots and lots of programs now exist that do not follow your window manager's decorations at all.
How did we get here? How did we do it back in the day?
I look at old screenshots of late 90s to early 2000s era linux, and I see a lot of windows that follow the menu conventions of the host window manager. I've found some tutorials from the 90s for X11 programming that makes a window, but doesn't include how to add window decoration elements to it.
I, a fool, thought that there was some standard for GUI applications that gets read by your desktop environment of choice to put the menus and things in their right place, which I guess is sort of true with gtk and qt, but I thought it was some centrally defined part of x11 or wayland instead of a couple of frameworks that we all collectively decided are good but different from each other.
@Dio9sys window decorations used to be the responsibility of the window manager, apps did not deal with managing them themselves
a lot of old X11 apps were written using the Athena widget set; vendors used to theme things by distributing their own custom libXaw that drew the widgets differently; I vaguely recall one version that would make your apps look like (classic) Mac OS
-
@Dio9sys The closest we ever came to a "standard UI" was Motif, and that was killed by being proprietary until far too late.
@Dio9sys CDE looks odd to a modern eye, but it was, in its time, the Unix desktop of choice. This was back when you had to pay for developer tools.
-
R ActivityRelay shared this topic