From 1afb4d5fa67cf5214ae6e7a8ae9d37c6e2eecaae Mon Sep 17 00:00:00 2001 From: Charles Magahern Date: Sun, 24 Aug 2025 17:21:11 -0700 Subject: [PATCH 1/3] gtkapplang: First two pages Conflicts: pages.yaml --- assets/css/gtkapplang.css | 53 ++++++++++++++++++++++++++++++++++++++ assets/img/logo-gtk.png | Bin 0 -> 68603 bytes pages.yaml | 2 ++ pages/gtkapplang-1.html | 35 +++++++++++++++++++++++++ pages/gtkapplang-2.html | 25 ++++++++++++++++++ 5 files changed, 115 insertions(+) create mode 100644 assets/css/gtkapplang.css create mode 100644 assets/img/logo-gtk.png create mode 100644 pages/gtkapplang-1.html create mode 100644 pages/gtkapplang-2.html diff --git a/assets/css/gtkapplang.css b/assets/css/gtkapplang.css new file mode 100644 index 0000000..5cb0476 --- /dev/null +++ b/assets/css/gtkapplang.css @@ -0,0 +1,53 @@ +#article-header { + background-color: #0d0d0d; + color: white; + text-align: center; + padding: 5pt 0 5pt 0; +} + +#article-header > div { + display: inline-block; + vertical-align: middle; + margin: 5pt; +} + +img#gtk-logo { + width: 50px; +} + +#article-body { + columns: 2; + font: 10pt/1.40 Helvetica, sans-serif; + padding: 5pt; +} + +#article-body p { + text-indent: 2em; +} + +#article-body p:first-child { + margin-top: 0; + text-indent: 0; +} + +/* +span.first-word { + font-size: xx-large; + font-weight: bold; + line-height: 0; +} +*/ + +h1, h2, h3 { + margin: 2pt; + text-align: left; + font-family: Helvetica, sans-serif; +} + +h3 { + font-weight: normal; +} + +.code { + font-family: monospace; +} diff --git a/assets/img/logo-gtk.png b/assets/img/logo-gtk.png new file mode 100644 index 0000000000000000000000000000000000000000..c45272fb3981642ce81eb16c7b254ddac7e18d89 GIT binary patch literal 68603 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 r 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%0DtrkPA$%lD6$ZN>Tz5~lzYMSNCj){OUl_G`T7 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 Bp_%{y literal 0 HcmV?d00001 diff --git a/pages.yaml b/pages.yaml index e56dd8c..31d6be2 100644 --- a/pages.yaml +++ b/pages.yaml @@ -2,5 +2,7 @@ - cover.html - bouba.html +- gtkapplang-1.html +- gtkapplang-2.html - drivingmissmuni.html diff --git a/pages/gtkapplang-1.html b/pages/gtkapplang-1.html new file mode 100644 index 0000000..f5f8bf1 --- /dev/null +++ b/pages/gtkapplang-1.html @@ -0,0 +1,35 @@ + + +
+ +
+
+ +
+
+

Linux GTK Apps

+

A Language Comparison

+

by P. Michael Cho

+
+
+ +
+ +

A famous hacker once said, "Linux is only free if your time has no value." Well, anyone who knows me knows that my time is about as worthless as a bag of salt. Thus, I really had nothing to lose when I decided to ditch the glitzy, glamorous commercial OS'es and go all-in on Linux this year.

+ +

It's really not that bad in 2025. Maybe it really is the Year of the Linux Desktop. A lot of stuff just works out of the box. You don't have to waste a whole weekend getting sound to work in YouTube videos. X11 isn't really a thing anymore, so fiddling with ancient hieroglyphic Xorg config files is no longer required just to get your anime girlfriend wallpaper desktop to show up on the screen.

+ +

Emboldened with a new sense of optimism for the Linux desktop, I decided to try writing a few native apps to see what the developer ecosystem is like. GTK, formerly known as the GIMP ToolKit, appears to be the de-facto widget toolkit for creating native GUI apps on Linux, so I decided to learn and explore how to develop apps using this toolkit.

+ +

The first problem I encountered was a severe sense of language paralysis. There are many, many choices of programming languages when developing GTK apps, which isn't necessarily a good thing. Apple doesn't always do everything right, but upholding Swift as the one true language for developing macOS and iOS apps reduces a lot of fragmentation for developers. A walled garden keeps the snakes out! Nevertheless, I decided to try and write a few small apps in a variety of different languages to see which one feels the best.

+ +

C (Rating: B-)

+ +

The first language I decided to try is an oldie-but-goodie. Just plain ol' C. Linux guys really like C, and really hate pretty much every other language, and the GTK toolkit itself is implemented in C, so it seemed like a good first choice.

+ +

One cool thing about GTK is that it is based on runtime library called GLib, which implements a bunch of object-oriented design patterns in C. It defines an object model, lifetime semantics, and a bunch of commonly used data structures that you can use in your app. Object-oriented programming is definitely out of style nowadays but I still think it is a solid paradigm for developing user interfaces. For example, it makes sense conceptually for all widgets to inherit from a base class that defines things like screen geometry and parent-child relationships.

+ +

My first couple of hours with C were glorious. The code was just falling out of my hands. The language is so simple, it's nearly impossible to waste any time on design.

+ +
+
diff --git a/pages/gtkapplang-2.html b/pages/gtkapplang-2.html new file mode 100644 index 0000000..448e5ce --- /dev/null +++ b/pages/gtkapplang-2.html @@ -0,0 +1,25 @@ + + +
+
+ +

Unfortunately this honeymoon phase quickly came to an end. Writing in C requires a lot of boilerplate code, and significant use of macros, against which I am generally ideologically opposed. For every "class" type that you define in your app, you have to implement several functions: one that initializes the class itself with the runtime, another for handling dynamic setting of properties, another to handle getting those properties, one for initializing instances of that class, and one for destroying or "finalizing" instances of that class. Confusingly there are two different functions for destroying objects, one called finalize and another called dispose, and I guess this was done to eliminate cycles in the reference counting mechanism implemented by GObject. Big yuck.

+ +

I eventually did finish the app I was writing in pure C, but it was a shitload of code. There are probably a couple of memory leaks too. One great thing about writing in C is that compiling the code is basically instantaneous. I actually started to feel angry and upset thinking about how much time we waste compiling code in newer languages. Do people know that complex C programs take only a few seconds to compile? Debugging was excellent too. GDB just works and I can see everything. Overall a pretty good experience I would say.

+ +

C++ (Rating: C-)

+ +

Linux guys are going to hate me for even mentioning C++, but I of course had to give it a try. Despite its numerous flaws, it's still the best bang for your buck when it comes to offering reasonably good object-oriented features with very fast performance.

+ +

For using GLib and GTK in C++ I decided to use the gtkmm library, which implements a variety of C++ bindings for all of the classes in the toolkit. Along with that I also used glibmm and giomm which are required to use the GLib and GIO dependencies in C++ code.

+ +

I was immediately disappointed to learn that a ton of boilerplate was still required just for defining some basic data types with properties. Properties are an important abstraction in GObject that let you bind data to various widgets, so this isn't something that can be easily avoided. Basically for each data member in your class, you need three accessor functions: two that 'get' and 'set' the data itself, and a third that returns a reference to the Glib::Property object representing that member.

+ +

Another disappointment was the documentation for gtkmm and glibmm. Just atrocious. Looks like autogenerated Doxygen slop. Come on guys, it's not 2008 anymore.

+ +

One positive thing I will say about using C++ is that memory management is a lot more tolerable than C. Using the Glib::RefPtr smart pointer class instead of manually managing GObject lifecycles is a blessing.

+ +

I did end up finishing this project as well and the end result was satisfactory. Overall I didn't really have a lot of fun writing C++, but then again, who does.

+ +
+
From cef6b7597b5c92b05696afc43d0e8240349eae74 Mon Sep 17 00:00:00 2001 From: Charles Magahern Date: Sun, 24 Aug 2025 18:09:05 -0700 Subject: [PATCH 2/3] gtkapplang: Pages 3 and 4, final edits Conflicts: pages.yaml --- assets/css/gtkapplang.css | 7 +++++++ pages.yaml | 2 ++ pages/gtkapplang-1.html | 2 +- pages/gtkapplang-2.html | 2 +- pages/gtkapplang-3.html | 29 +++++++++++++++++++++++++++++ pages/gtkapplang-4.html | 17 +++++++++++++++++ 6 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 pages/gtkapplang-3.html create mode 100644 pages/gtkapplang-4.html diff --git a/assets/css/gtkapplang.css b/assets/css/gtkapplang.css index 5cb0476..b0b47cd 100644 --- a/assets/css/gtkapplang.css +++ b/assets/css/gtkapplang.css @@ -46,8 +46,15 @@ h1, h2, h3 { h3 { font-weight: normal; + font-style: italic; } .code { font-family: monospace; } + +.endmark { + text-align: center; + margin-top: 1em; + color: #555; +} diff --git a/pages.yaml b/pages.yaml index 31d6be2..2a9585f 100644 --- a/pages.yaml +++ b/pages.yaml @@ -4,5 +4,7 @@ - bouba.html - gtkapplang-1.html - gtkapplang-2.html +- gtkapplang-3.html +- gtkapplang-4.html - drivingmissmuni.html diff --git a/pages/gtkapplang-1.html b/pages/gtkapplang-1.html index f5f8bf1..c2eb4c9 100644 --- a/pages/gtkapplang-1.html +++ b/pages/gtkapplang-1.html @@ -27,7 +27,7 @@

The first language I decided to try is an oldie-but-goodie. Just plain ol' C. Linux guys really like C, and really hate pretty much every other language, and the GTK toolkit itself is implemented in C, so it seemed like a good first choice.

-

One cool thing about GTK is that it is based on runtime library called GLib, which implements a bunch of object-oriented design patterns in C. It defines an object model, lifetime semantics, and a bunch of commonly used data structures that you can use in your app. Object-oriented programming is definitely out of style nowadays but I still think it is a solid paradigm for developing user interfaces. For example, it makes sense conceptually for all widgets to inherit from a base class that defines things like screen geometry and parent-child relationships.

+

One cool thing about GTK is that it is based on runtime library called GLib, which implements a bunch of object-oriented design patterns in C. It defines an object model, lifetime semantics, and a bunch of commonly used data structures that you can use in your app. Object-oriented programming is definitely out of style nowadays but I still think it is a solid paradigm for developing user interfaces. It makes sense conceptually for all widgets to inherit from a base class that defines things like screen geometry and parent-child relationships.

My first couple of hours with C were glorious. The code was just falling out of my hands. The language is so simple, it's nearly impossible to waste any time on design.

diff --git a/pages/gtkapplang-2.html b/pages/gtkapplang-2.html index 448e5ce..6834184 100644 --- a/pages/gtkapplang-2.html +++ b/pages/gtkapplang-2.html @@ -11,7 +11,7 @@

Linux guys are going to hate me for even mentioning C++, but I of course had to give it a try. Despite its numerous flaws, it's still the best bang for your buck when it comes to offering reasonably good object-oriented features with very fast performance.

-

For using GLib and GTK in C++ I decided to use the gtkmm library, which implements a variety of C++ bindings for all of the classes in the toolkit. Along with that I also used glibmm and giomm which are required to use the GLib and GIO dependencies in C++ code.

+

For using GLib and GTK in C++ I decided to use the gtkmm library, which implements a variety of C++ bindings for all of the classes in the toolkit. Along with that I also used glibmm and giomm which are required to use the GLib and GIO dependencies in C++ code.

I was immediately disappointed to learn that a ton of boilerplate was still required just for defining some basic data types with properties. Properties are an important abstraction in GObject that let you bind data to various widgets, so this isn't something that can be easily avoided. Basically for each data member in your class, you need three accessor functions: two that 'get' and 'set' the data itself, and a third that returns a reference to the Glib::Property object representing that member.

diff --git a/pages/gtkapplang-3.html b/pages/gtkapplang-3.html new file mode 100644 index 0000000..0f7d058 --- /dev/null +++ b/pages/gtkapplang-3.html @@ -0,0 +1,29 @@ + + +
+
+ +

Rust (Rating: C+)

+ +

Of course I cannot go without mentioning the fad language of the decade: Rust. I was actually pretty excited to try using Rust to write a GTK app. The users and designers of the language alike are very opinionated, Rust programs are usually very high quality, and I generally like the overall design of the language and the standard library.

+ +

I decided to use the gtkrs crate for my Rust app, which was trivial to setup using Rust's excellent build system. From what I can tell, a majority of the code in gtkrs is automatically generated, so there isn't a lot of manual wrapping done, which is quite nice.

+ +

First impressions were very positive. Just like with C++, memory management was straightforward and conventional. I didn't waste a lot of time allocating objects and passing them around the library. The designers of gtkrs did a really good job in creating the bindings while also making them memory safe, which is very much concordant with the Rust philosophy.

+ +

Significantly less boilerplate was required with Rust as well, thanks to macros provided by the glib crate like property and object_subclass. Getter and setter functions are optional and mostly for convenience.

+ +

So why did I give Rust a C+ rating? The main reason is because Rust is not an object-oriented language. It feels really unnatural to shoehorn object-oriented design patterns into Rust when it was clearly designed not to support that. Of course, it kinda works, and you can finish your app with some pretty nice code to maintain, but it feels sort of like writing classical poetry in LaTeX.

+ +

I finished writing my app in Rust and felt pretty good about it, but to be honest I did have to rewrite large parts of it multiple times. It took me a few tries to figure out how to make the compiler happy while still keeping things "Rusty" if you'll pardon the phrase.

+ +

Vala (Rating: B)

+ +

The last language I tried was one I've never heard of before, and probably you haven't either. Vala is an object-oriented language that is built by the GNOME team and sits on top of the GLib runtime. It has the standard set of nice-to-have features in modern languages such as async/await, generics, and type inference. It also has a few features that are specifically designed to interact nicely with the GObject runtime, such as signals and properties.

+ +

Another cool thing about Vala is that all of your code gets cross-compiled to decently human-readable C code. So there isn't a lot of worry about cross-platform support, debuggability, or performance, at least compared to C.

+ +

Vala has by far the least amount of boilerplate of all the languages I tried. Because it natively supports properties, your data classes and widget subclasses are extremely minimal and easy to understand.

+ +
+
diff --git a/pages/gtkapplang-4.html b/pages/gtkapplang-4.html new file mode 100644 index 0000000..d5686d1 --- /dev/null +++ b/pages/gtkapplang-4.html @@ -0,0 +1,17 @@ + + +
+
+ +

Documentation for Vala and its libraries is pretty good too. All of it is hosted at the Valadoc website which is really easy to search and has a nice layout. I can tell that quite a lot of it is autogenerated from the C documentation, so sometimes it's a bit awkward to read the parts written in prose, but overall not bad.

+ +

It's quite easy to create Vala bindings to C libraries, especially if those C libraries are also implemented using the GLib runtime and use GObjects. You create these little files called VAPI files and the compiler does most of the work for you. By far one of the easiest FFI's I've ever used.

+ +

I think the only thing I really don't like about Vala is that the language itself doesn't really spark joy. For language connoisseurs like myself, it just feels kind of meh. From what I can tell that was actually one of the goals of the language. The designers didn't really set out to push the boundaries of programming language theory with Vala, and instead just wanted a simple language that makes it easier to write apps. I respect that.

+ +

Another weird and perhaps surprising disappointment is that every LLM I tried is very poor at generating Vala code. There is actually quite a lot of Vala code out on the Internet, and so statistically speaking it seems likely that it would be part of some training data. My theory is that because a lot of these Linux guys still have a beef with Microsoft, they refuse to upload a lot of code to Github which is the primary website from where code gets scraped. If someone trains an LLM with all the code on these little Gitlab instances, I'm excited to try it.

+ +

Overall I found Vala very pleasant to use. I think if the community hivemind were to select a language as its primary language for GTK development, it would be Vala. Just make sure to brush up on your hands-on-the-keyboard coding skills, since you won't be able to vibe-code your way out of some problems with Vala.

+ +
+
From 7b55b65a345ed7b0c2a82c152d6cf8050eeee3e6 Mon Sep 17 00:00:00 2001 From: Charles Magahern Date: Sun, 24 Aug 2025 18:35:27 -0700 Subject: [PATCH 3/3] gtkapplang: Increase margin --- assets/css/gtkapplang.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/css/gtkapplang.css b/assets/css/gtkapplang.css index b0b47cd..d6725f5 100644 --- a/assets/css/gtkapplang.css +++ b/assets/css/gtkapplang.css @@ -17,8 +17,8 @@ img#gtk-logo { #article-body { columns: 2; - font: 10pt/1.40 Helvetica, sans-serif; - padding: 5pt; + font: 8.75pt/1.40 Helvetica, sans-serif; + padding: 0.25in 0.5in 0 0.5in; } #article-body p {