Can I make app with Adwaita design without Libadwaita

I use only little amount of dependencies and that’s why I won’t use Libadwaita. Although I want follow GNOME HIG and its Adwaita design. Can I make app with Adwaita without Libadwaita library? My app uses GTK.

If you’re asking purely about the visual style, you could go through the generated Adwaita.css (and variants for dark/hi-contrast) and pick out the styles that apply to widgets in GTK4. You would then need to include them in your application’s stylesheets.

If you are also asking about the widgets included in Adwaita, then you’re just going end up re-writing libadwaita.

Needless to say, this will be a lot of work and anyone you ask for help will probably just say “use libadwaita”. So the answer is yes, but the road ahead of you is long and lonely :slightly_frowning_face:

2 Likes

I asking about both. I want follow GNOME HIG and its Adwaita design accurately.
So I include the stylesheets and the widgets I need to my code and it’s okay?

I think so too :laughing: Literally anyone will.

I believe libadwaita is licensed LGPL-2.1, so it is legally okay, and technically possible. But including both the stylesheets and the widgets isn’t avoiding the dependency at all.

To be clear, libadwaita mostly is just widgets and stylesheets.

1 Like

Yeah, at this point it’s just reinventing subprojects/static linking.

1 Like

:+1:

But my app needs only a few of the widgets in Libadwaita to following GNOME HIG/Adwaita design.

But in times when there was no Libadwaita Adwaita design was followed sometimes without libraries, with small libraries and by just copying pieces from these libraries. It was common then.

reinventing subprojects

What do you mean by reinventing subprojects? What subprojects?
I understand “reinventing static linking” part.

Subprojects these.
Let’s ask a different question: what’s the problem with depending on it? This feels like X/Y problem.

Oh, I see now.

Because in one environment it’s pain install many dependencies. It’s more comfy install just one binary (GTK and a few other libs aren’t problem).

Answer to this: :slight_smile:

So yes, this looks like it’s reinventing subprojects. Just use those.

Sort of. I like avoids unnecessary (Libadwaita is not necessity) dependencies.

No dependency is necessary. GTK is not necessary either, you can implement your own toolkit or copypaste it in tree.

It’s all about the amount of duplicated work and whether you have somebody fixing bugs for you or not.

But in times when there was no Libadwaita Adwaita design was followed sometimes without libraries, with small libraries and by just copying pieces from these libraries. It was common then.

Yes, it was. You know how at one point gnome-control-center had almost completely broken keyboard navigation and every panel looked and behaved subtly different? Guess why.

And libadwaita is also not the first attempt to fix that situation. GTK 3.x contained a lot of GNOME-specific widgets for that reason. Libhandy contained a lot of non-mobile widgets for that reason. Libadwaita just continues that concept, it’s nothing new.

Of course, you’re free to still do that, but don’t be surprised when it goes badly.

2 Likes

Maybe, but GTK is a library from completely different class. It’s huge. Libadway is just a stylesheet and widgets, of which a small application only needs a few.

I highly recommend against doing this. There is no benefit.

If targeting a non-GNOME system, there will need to be a different HIG you need to follow, so there is no use for Adwaita styles and widgets.

If targeting a GNOME system, libadwaita will already be installed, so you gain nothing from not using it.

2 Likes

I targeting Linux system. I need decide one UI design and I decided Adwaita. Regardless it, my app is for Linux systems in general, not just for GNOME, and that’s why libadwaita isn’t always installed.

Anyway this topic is solved, thanks for answers!

This topic was automatically closed 45 days after the last reply. New replies are no longer allowed.