home.social

#gobject — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #gobject, aggregated by home.social.

  1. Finally got my YouTube live chat API client library working with the peel C++ bindings generator for #GLib / #GObject. I built a small coroutine task abstraction that makes working with GLib-style async functions much cleaner.

    Still a lot more work to do to with caching/refreshing OAuth tokens and processing of messages, but hopefully I can get a prototype libpurple plugin (the ultimate goal) working fairly soon

  2. Nothing to see here, just a MacBook Neo and a GNOME OS laptop talking to each other via the #p2panda #GObject bindings for #Go . They even found each other via mDNS! (Needed a 5 line patch to the Rust build config, but that's it - everything just kind of works!)

  3. Nothing to see here, just a MacBook Neo and a GNOME OS laptop talking to each other via the #p2panda #GObject bindings for #Go . They even found each other via mDNS! (Needed a 5 line patch to the Rust build config, but that's it - everything just kind of works!)

  4. Nothing to see here, just a MacBook Neo and a GNOME OS laptop talking to each other via the #p2panda #GObject bindings for #Go . They even found each other via mDNS! (Needed a 5 line patch to the Rust build config, but that's it - everything just kind of works!)

  5. Nothing to see here, just a MacBook Neo and a GNOME OS laptop talking to each other via the #p2panda #GObject bindings for #Go. They even found each other via mDNS!

    (Needed a 5 line patch to the Rust build config, but that's it - everything just kind of works!)

  6. Nothing to see here, just a MacBook Neo and a GNOME OS laptop talking to each other via the #p2panda #GObject bindings for #Go. They even found each other via mDNS!

    (Needed a 5 line patch to the Rust build config, but that's it - everything just kind of works!)

  7. Nothing to see here, just a MacBook Neo and a GNOME OS laptop talking to each other via the #p2panda #GObject bindings for #Go. They even found each other via mDNS!

    (Needed a 5 line patch to the Rust build config, but that's it - everything just kind of works!)

  8. Nothing to see here, just a MacBook Neo and a GNOME OS laptop talking to each other via the #p2panda #GObject bindings for #Go. They even found each other via mDNS!

    (Needed a 5 line patch to the Rust build config, but that's it - everything just kind of works!)

  9. Nothing to see here, just a MacBook Neo and a GNOME OS laptop talking to each other via the #p2panda #GObject bindings for #Go. They even found each other via mDNS!

    (Needed a 5 line patch to the Rust build config, but that's it - everything just kind of works!)

  10. Let me share some updates about peel 😀

    As a reminder, #peel is a project that implements modern :cpp_language: bindings for #GObject libraries, most notably the #GTK stack, and now also #GStreamer.

    🧵

    Sebastian @slomo has been tirelessly working (and me, helping and reviewing and merging his work) on improving the GStreamer+peel experience, resulting in many improvements all over peel, and also in GStreamer, GLib, and other components of the stack.

  11. Let me share some updates about peel 😀

    As a reminder, #peel is a project that implements modern :cpp_language: bindings for #GObject libraries, most notably the #GTK stack, and now also #GStreamer.

    🧵

    Sebastian @slomo has been tirelessly working (and me, helping and reviewing and merging his work) on improving the GStreamer+peel experience, resulting in many improvements all over peel, and also in GStreamer, GLib, and other components of the stack.

  12. New progress on the #puregotk #GObject introspection things I'm working on in #Go. It's super early, but I added preliminary support for generated getters/setters for properties. No more manual value setup & `SetProperty` calls required, just a simple `SetPropertyX` call. We're getting closer and closer to more readable code here with this IMHO, GJS on the right for comparison!

  13. @razze sure, good idea. The general stack is C (but, thankfully #GObject), and with that we also deal with almost All The File Formats (tm) thanks to firmware vendors all doing slightly different thing.

    We're slowly migrating bits of the code to Rust, but just don't ask how. We're also bit into fuzzing and testing hundreds of emulated devices in CI. There are quite a few build tools in #python too.

  14. Continued some #GObject subclassing support in Go. Turns out I messed up the C memory alignment in #Go for and ended up embedding the parent class as a reference, when GObject expects it to be the actual struct.

  15. Continued some #GObject subclassing support in Go. Turns out I messed up the C memory alignment in #Go for and ended up embedding the parent class as a reference, when GObject expects it to be the actual struct. Funnily enough some callbacks still worked before this, but now even the ones like `Snapshot` and `Activate` work. To demonstrate, here is a Go application subclassing AdwApplication and overwriting the `activate` callback instead of calling `ConnectCallback`!

  16. Now that my PRs for #GObject subclassing support in Go are up on GitHub and ready for review, I can get started porting over Sessions to GSK instead of Cairo. It was easier to do find examples in JS, so that's what I used, but next up is getting this to work with the freshly implemented `snapshot` function override!

  17. May I present: Typed subclassing of #GObject classes in Golang! Still a WIP, but this is enough now to create proper custom #GTK widgets in #Golang without needing to import any `purego`/CGo code to subclass. Please ignore the `Constructed` callback call here, it's just there to test if getting a callback (e.g. a constructor works), too. 🥳

  18. First a bit of context for the GLib project, which is comprised of three main parts: GLib, GObject and GIO. #GLib contains things you'd generally get from a standard library, #GObject defines the OOP semantics (methods/properties/signals, inheritance, etc), and #GIO provides reasonably high-level APIs for everything from sockets and files to D-Bus and Gio.DesktopAppInfo.

    andyholmes.ca/posts/best-inten

  19. First a bit of context for the GLib project, which is comprised of three main parts: GLib, GObject and GIO. #GLib contains things you'd generally get from a standard library, #GObject defines the OOP semantics (methods/properties/signals, inheritance, etc), and #GIO provides reasonably high-level APIs for everything from sockets and files to D-Bus and Gio.DesktopAppInfo.

    andyholmes.ca/posts/best-inten

  20. First a bit of context for the GLib project, which is comprised of three main parts: GLib, GObject and GIO. #GLib contains things you'd generally get from a standard library, #GObject defines the OOP semantics (methods/properties/signals, inheritance, etc), and #GIO provides reasonably high-level APIs for everything from sockets and files to D-Bus and Gio.DesktopAppInfo.

    andyholmes.ca/posts/best-inten

  21. First a bit of context for the GLib project, which is comprised of three main parts: GLib, GObject and GIO. #GLib contains things you'd generally get from a standard library, #GObject defines the OOP semantics (methods/properties/signals, inheritance, etc), and #GIO provides reasonably high-level APIs for everything from sockets and files to D-Bus and Gio.DesktopAppInfo.

    andyholmes.ca/posts/best-inten

  22. First a bit of context for the GLib project, which is comprised of three main parts: GLib, GObject and GIO. #GLib contains things you'd generally get from a standard library, #GObject defines the OOP semantics (methods/properties/signals, inheritance, etc), and #GIO provides reasonably high-level APIs for everything from sockets and files to D-Bus and Gio.DesktopAppInfo.

    andyholmes.ca/posts/best-inten

  23. Just got GTK #GObject subclassing to work in #Go thanks to some new bindings by github.com/jwijenbergh 👀

  24. 🚀 Wow, rewriting #Ghostty with #Zig and #GObject is like knitting a sweater with spaghetti - impressive, but why? 🤔 Meanwhile, using #Valgrind to verify memory is just a fancy way of saying "I found #bugs in my own code, again." 🍝💻
    mitchellh.com/writing/ghostty- #programming #HackerNews #ngated

  25. Well, @bugaevc runs very quickly through some very sophisticated implementation details. It probably took months to get right what he references in some seconds…

    #GObject #bindings #guadec2025 #peel #Cplusplus

  26. Well, @bugaevc runs very quickly through some very sophisticated implementation details. It probably took months to get right what he references in some seconds…

  27. Like the way @bugaevc starts with presenting GTK C boilerplate for setting a property. It really *IS* a reason for new developers not to use at all.

  28. Folks, I can definitely recommend this talk from @bugaevc at !

    floss.social/@gnome/1148734447

    Sergey has been of great help for my minor stumblings of trying to write bindings for . He's got formidable knowledge und deep insight into especially and Cxx languages in general.

  29. 🔧 "Bridging type systems"
    with Sergey Bugaev at #GUADEC2025
    📅 25 July 🕒 09:00 CEST 📍 Brescia

    💡 Sergey introduces peel, a fresh take on C++ bindings for GObject: zero overhead, full API coverage, deep type support.

    🔗 events.gnome.org/event/259/con

    #GNOME #CPlusPlus #GObject #Bindings #GTK

  30. What kind of worries me is the observation that many / projects are in a somewhat abondoned state since the overwhelming use of mobile apps and web services around 2012 to 2014. There are some great exemptions like the support by and all the tools by @linuxmint.

    Same is to apply to the ecosystem which has seen few new projects since 2015 or so.

  31. So the conclusion is: If I want to improve what I'm using, I need to get my hands dirty and learn to write and fix that kind of software written in .

    I'm happy there is @objfw as well which makes facing C less of a pain.

    probably will never be "finished", but it already helps using without me needing to learn , which I won't be able to achieve in my spare hours.

  32. It's not that I'm a great fan of the type system and its way to build object-oriented code in C. I know some of the maintainers aren't as well, which I don't consider a surprise given the age and origin of that GObject ecosystem. So I absolutely understand considered switching to for , now .

    But that's only one part of the story. The other part is I'm now using based desktop environments almost full time (only some occasions I turn on my old Mac).

  33. It's not that I'm a great fan of the #GObject type system and its way to build object-oriented code in C. I know some of the maintainers aren't as well, which I don't consider a surprise given the age and origin of that GObject ecosystem. So I absolutely understand #Canonical considered switching to #Qt for #Unity8, now #Lomiri.

    But that's only one part of the story. The other part is I'm now using #GTK based desktop environments almost full time (only some occasions I turn on my old Mac).

  34. It's not that I'm a great fan of the #GObject type system and its way to build object-oriented code in C. I know some of the maintainers aren't as well, which I don't consider a surprise given the age and origin of that GObject ecosystem. So I absolutely understand #Canonical considered switching to #Qt for #Unity8, now #Lomiri.

    But that's only one part of the story. The other part is I'm now using #GTK based desktop environments almost full time (only some occasions I turn on my old Mac).

  35. It's not that I'm a great fan of the #GObject type system and its way to build object-oriented code in C. I know some of the maintainers aren't as well, which I don't consider a surprise given the age and origin of that GObject ecosystem. So I absolutely understand #Canonical considered switching to #Qt for #Unity8, now #Lomiri.

    But that's only one part of the story. The other part is I'm now using #GTK based desktop environments almost full time (only some occasions I turn on my old Mac).

  36. It's not that I'm a great fan of the #GObject type system and its way to build object-oriented code in C. I know some of the maintainers aren't as well, which I don't consider a surprise given the age and origin of that GObject ecosystem. So I absolutely understand #Canonical considered switching to #Qt for #Unity8, now #Lomiri.

    But that's only one part of the story. The other part is I'm now using #GTK based desktop environments almost full time (only some occasions I turn on my old Mac).

  37. I have not blogged or talked about the follow-up work to my "GType Next" blog post that I've been doing in my spare time, mainly because it is happening *in my spare time*, and I don't want to give false impressions to people; the other reason is that the time consuming bit is not writing a bunch of code, but it's planning ahead, because the goal is to avoid breaking stuff at all costs…

    #glib #gobject #gtk

  38. I have not blogged or talked about the follow-up work to my "GType Next" blog post that I've been doing in my spare time, mainly because it is happening *in my spare time*, and I don't want to give false impressions to people; the other reason is that the time consuming bit is not writing a bunch of code, but it's planning ahead, because the goal is to avoid breaking stuff at all costs…

    #glib #gobject #gtk

  39. I have not blogged or talked about the follow-up work to my "GType Next" blog post that I've been doing in my spare time, mainly because it is happening *in my spare time*, and I don't want to give false impressions to people; the other reason is that the time consuming bit is not writing a bunch of code, but it's planning ahead, because the goal is to avoid breaking stuff at all costs…

    #glib #gobject #gtk

  40. I have not blogged or talked about the follow-up work to my "GType Next" blog post that I've been doing in my spare time, mainly because it is happening *in my spare time*, and I don't want to give false impressions to people; the other reason is that the time consuming bit is not writing a bunch of code, but it's planning ahead, because the goal is to avoid breaking stuff at all costs…

    #glib #gobject #gtk

  41. I have not blogged or talked about the follow-up work to my "GType Next" blog post that I've been doing in my spare time, mainly because it is happening *in my spare time*, and I don't want to give false impressions to people; the other reason is that the time consuming bit is not writing a bunch of code, but it's planning ahead, because the goal is to avoid breaking stuff at all costs…

    #glib #gobject #gtk

  42. #RayLib + #Vala bindings + #OOP #GObject wrapper library written in #Vala = the *best* #gamedev experience of all time!!??
    Well, we are working on it! :D At least @halfmexican is one of them!
    Check out the vapi and WIP wrapper library, for example look at this beautiful `RaylibOOP.Color` class: github.com/Charadon/raylib-vap
    Also this library can of course be used by *all* other GObject language bindings.
    And this sample is just the first, more are coming! For direct updates join our discord server!

  43. About time to update the shield parsing/rendering to deal with the updated defintions with short-hand "banner maps" from OpenStreetMap Americana.

    So, let's dive down into C (pun kinda intended) again… 😁

  44. Write your own Wayland Desktop!
    The "Astal" framework, which is written in Vala, makes it super-simple! (you can use it with any gobject-introspection language though)
    aylur.github.io/astal/
    Here a WIP project from our community. So far a custom status bar, quick settings, MPRIS, etc. Together with the Hyprland window manager. Built with #GTK4, #Blueprint, #Libadwaita and of course #Vala!
    github.com/ARKye03/morghulis

    #GTK #GObject #GObjectIntrospection #Wayland #Hyprland #Astal #freedesktop