Knowledge Base

Preserving for the future: Shell scripts, AoC, and more

Devuan Ceres and zenity that uses gtk3

I tend to use zenity for my basic dialog needs, and sometimes yad. I found out recently that zenity now looks like a child drew it (read: the GNOME people use it) instead of showing a real dialog box.

So after some poking around, I found out that I cannot just purge it: Steam depends on zenity, and that zenity now (as of version 4.0.0-1) depends on libgtk-4-0. So, I found using one of the more helpful Debian web pages which version of zenity still uses gtk3: 3.44.2-1.

So I whipped up an Open Build Service project for zenity, but of course due to the ridiculous usrmerge problems Debian has introduced (and SUSE doesn't show any knack or willingness to fix on their behalf; can you blame them?!) the project doesn't build.

So I built it myself and host it on my own internal package repository. And then I updated my script with 2 new lines. Thankfully I wrote a function I can call again.

confirm_preferences "all" "zenity" "zenity" "release" "600" "3.44.2-1"
confirm_preferences "all" "zenity-common" "zenity-common" "release" "600" "3.44.2-1"

Which if you don't bother to click through to that previous post, makes two files on a system where you run the script:

# file /etc/apt/preferences.d/zenity
Package: zenity
Version: 3.44.2-1
Pin: release
Pin-Priority: 600
# file /etc/apt/preferences.d/zenity-common
Package: zenity-common
Version: 3.44.2-1
Pin: release
Pin-Priority: 600

Perhaps I should have forked the package and given it a higher version, and figured how to enforce the same version. The d/control already has Depends: zenity-common (= ${source:Version}) but somehow it doesn't take effect; I was able to install zenity=3.44.2-1 but it kept my zenity-common=4.0.0-1 which failed, because gtk4 changes the paradigms of gtk so much that they got rid of the /usr/share/zenity/ directory with its xml-defined ui (glade?) business.