elkowar / eww

ElKowars wacky widgets
https://elkowar.github.io/eww
MIT License
9.21k stars 379 forks source link

Update GTK and related dependencies to 0.18 #1137

Closed geluk closed 1 month ago

geluk commented 2 months ago

Description

This PR updates GTK, GDK, and all related dependencies to 0.18.

Additionally, since gtk re-exports gdk, gdk-pixbuf, glib, pango, and cairo, it is possible (and I'd argue preferable) to depend directly on the re-exported versions. This way, we don't have to worry about keeping the versions aligned anymore - Cargo will take care of that. Notably, the re-exported version of gdk-pixbuf was already used everywhere, so it could just be removed without any import changes.

Motivation

I'd love to see eww updated to GTK 4, but I understand that this is complex and time consuming, and while I wouldn't mind assisting, I don't have enough experience with GTK to be of much use.

That said, what I can at least do is get the 0.17->0.18 breaking changes out of the way, and simplify the dependencies a bit to make the eventual migration ever so slightly easier.

Checklist

Please make sure you can check all the boxes that apply to this PR.

yuki0iq commented 2 months ago

glib-macros dependency is unneeded, as its contents are reexported by glib crate

geluk commented 2 months ago

Well spotted, fixed.

w-lfchen commented 2 months ago

cargo wants to add 4 dependencies for some reason when using cargo update:

      Adding gdk-pixbuf-sys v0.20.0
      Adding gio-sys v0.20.0
      Adding glib-sys v0.20.0
      Adding gobject-sys v0.20.0

adding them (specifically, gio-sys, which seems to be required by gdk-pixbuf-sys, adding the other two on their own is fine) breaks dbusmenu-glib:

error[E0277]: the trait bound `menuitem::Menuitem: glib::translate::FromGlibPtrArrayContainerAsVec<_, *mut glib_sys::GList>` is not satisfied

i am at a loss here, do you by any chance have an idea what could be causing this? my only guess is some kind of export or should i file an issue against the dbusmenu-glib repo?

elkowar commented 1 month ago

Thanks a lot for your work, @geluk! closing as this has been included in #1144

elkowar commented 1 month ago

Regarding GTK4: I even already had a working build of GTK4 eww a couple of years ago. Sadly, there where some showstoppers that I don't think have been fully resolved yet, especially regarding wayland compatibility (GTK4 makes rendering on layershell surfaces a lot more complex, and back then it was fully impossible), as well as some other larger architectural changes that affected eww quite negatively. I don't have any concrete plans on when to retry a GTK4 migration currently, as I think most of the features GTK4 adds don't really affect eww directly.