I always see new GTK apps popup on Flathub. I dont really care and think GTK looks fancy, although CSD suck a bit and they waste space and often functionality.

But they work, are solid, and do what they should.

Qt on the other hand may seem more like a complex job to code with. I dont actually think so, but I heard especially writing rust with GTK is way better than with Qt.

I like KDE a lot, and even though I am excited for Cosmic I think Qt is the better toolkit for many things and a lot of time. But Dolphin seems to suffer from memory safety issues all the time, as well as other projects.

Do you have experience in rust, using GTK or Qt? How do they compare?

  • Max-P@lemmy.max-p.me
    link
    fedilink
    arrow-up
    61
    ·
    10 months ago

    C bindings and APIs generally work much better in Rust because the language works a lot more like C than it does C++.

    Qt depends a lot on C++ class inheritance, and even does some preprocessing of C++ files to generate code in those classes. That’s obviously not possible when using Rust. And it looks like you need a fair bit of unsafe there and there to use it at all too.

    Meanwhile, GTK being a C library, its integration with Rust is much more transparent and nice.

    So if you’re making a GUI Rust app, you’re just kind of better off with GTK at the moment. It’s significantly easier and nicer.

  • teolan@lemmy.world
    link
    fedilink
    arrow-up
    37
    ·
    10 months ago

    GTK is in bare C, which is rather easy to interop with Rust. Even if using GLib from Rust is a pain, GTK can and does have decent Rust bindings.

    QT on the other hand is C++ with object oriented stuff, and therefore cannot have easy bindings to Rust.

    • Pantherina@feddit.deOP
      link
      fedilink
      arrow-up
      1
      ·
      10 months ago

      Could you explain C bindings in Rust to a nonprogrammer? Does this mean GTK can’t use Rust natively, at least for the interface?

      • ani@endlesstalk.org
        link
        fedilink
        arrow-up
        4
        ·
        10 months ago

        Bindings are like translations of the relevant C code to Rust so they can use Rust to talk (interop) with the C library instead of having to use C.

        Does this mean GTK can’t use Rust natively, at least for the interface?

        I never used GTK, but I suppose from this conversation that yes.

  • Michael Murphy (S76)@lemmy.world
    link
    fedilink
    English
    arrow-up
    23
    ·
    edit-2
    10 months ago

    GNOME was focusing on building Rust bindings for GTK for many years before Qt development picked up. The GTK bindings were usable within a year or two after Rust’s 1.0 release. Yet even today, those looking to build applications in Rust will find that GTK is the only mature toolkit right now. And if you’re doing that today, I’d recommend starting with Relm4 for the best GTK Rust experience.

    Rust does not support the C++ ABI, and Qt does not provide a C interface, so much work has to be done on building the tooling for binding C++ libraries to Rust. That work is still ongoing, so some have opted to use QML instead of interfacing with Qt C++ libraries. Yet if you’re looking to use Qt or QML, you may as well use Slint instead. It’s developed by former Qt/Trolltech developers and has a similar approach as QML.

  • TeryVeneno@lemmy.ml
    link
    fedilink
    arrow-up
    24
    arrow-down
    1
    ·
    edit-2
    10 months ago

    I think there’s a pretty big thing here that people are kinda missing and it’s the ease of app creation. Recently gnome has done a lot for app developers to make the experience really good. Workbench, gnome builder, biblioteca all combined with the ease of libadwaita and the gnome circle make app development significantly easier for gtk than qt. There’s a big community now with a lot of inertia. I think workbench has around 100 tutorials now or so. Super low barrier to entry. Also libadwaita is pretty.

    I already use gnome now, but even before I had settled on a DE, I took a look at both ecosystems and was heavily leaning towards gtk because of all these factors and against qt because of its reliance on c++. Until all of those factors are replicated well for qt (and by extension kde), I don’t think they’ll see the same level of development.

  • Avid Amoeba@lemmy.ca
    link
    fedilink
    arrow-up
    15
    arrow-down
    4
    ·
    edit-2
    10 months ago

    Qt with C++ is a spectacular environment to develop UI apps in. Coupled with QtQuick it’s even better. It’s perhaps only outclassed by Flutter. As others have mentioned, there’s lots of inertia behind GTK+. There’s also past issues with licensing which made the OSS community prefer GTK+ to Qt.

    I’ve no idea what’s involved in using Qt in Rust but people starting new UI apps in C and GTK+ today are likely doing a disservice to themselves and the larger OSS community that could contribute to development and maintenance.

  • drwankingstein@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    9
    ·
    10 months ago

    a few reasons I think, the QT bindings are split between cxx-qt and qmetaobject-rs . Neither of which are super great IMO, but even if they were, we have UI frame works like slint and egui which are already becoming quite good, slint has a good native look that resembles QT so people wanting that design can use that instead.

    • Giooschi@lemmy.world
      link
      fedilink
      English
      arrow-up
      7
      ·
      10 months ago

      slint has a good native look that resembles QT

      It doesn’t just resembles QT, it uses QT as backend.

      • drwankingstein@lemmy.dbzer0.com
        link
        fedilink
        English
        arrow-up
        3
        ·
        10 months ago

        It’s worth stating that QT is an optional backend and is only used for native styling, even the pure rust, Native styling still looks close to native. QT is fully optional and is not a dep even for linux apps

      • Pantherina@feddit.deOP
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        10 months ago

        Damn, thanks for the tip! So does it support native KDR Styling and all too?

        Could in theory Apps like Dolphin be entirely rewritten in Rust, using Slint as Frontend, and still be native in KDE?

        • Giooschi@lemmy.world
          link
          fedilink
          English
          arrow-up
          3
          ·
          10 months ago

          From their github:

          NOTE: When Qt is installed on the system, the native style uses Qt’s QStyle to achieve native looking widgets.

          I’m not that familiar with KDE’s styling, but if I remember well it should just be a Qt style, so it should work.

          Regarding rewriting Dolphin, I think in theory you could do that, in practice it’s probably pretty challenging given the amount of features Dolphin has.

  • d0ntpan1c@lemmy.blahaj.zone
    link
    fedilink
    arrow-up
    3
    arrow-down
    5
    ·
    10 months ago

    No specific rust experience with either, but some thoughts on the popularity reasons outside of the language:

    I suspect a bit part of this difference in framework popularity may be due to GTK being more attached to gnome and friends, and by extension, Ubuntu (for better or worse, the most used desktop distro for quite a while) Most of the time that’ll be mainline Ubuntu which has always been GTK.

    So if a developer or company is going to target something, then it may come down to “what is the ideal platform to build on for Ubuntu as our main target? GTK? Cool, that’s what we will use.” Of course, either framework is just fine, and either framework targets other OSs as well. I don’t have any experience with either, but it wouldn’t surprise me if the choice of GTK more often is akin to Swift + Apple’s toolkits for iphone development being more popular by a large margin than Ionic/Capacitor, React Native, Xamarin, etc, even though the others provide some benefits (and some significant context-dependent downsides, of course)

    If i remember correctly, Qt was not fully FOSS for a while, so GTK was much more widely adopted and recommended early on. But that was pre-2005, I think.

    • drwankingstein@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      5
      ·
      10 months ago

      I generally don’t really think this is the case, there are still plenty of apps from other languages in QT. in fact, for cross platform apps, QT is immensely more popular then GTK is. Rust itself had disproportionately less apps developed in QT then other stuff, (Python for instance). especially when you consider cross platform. and at least for open source anyways. closed source I cant comment on