Transmission support for Ayatana Indicators: use Qt or recompile against GTK3

Yesterday I finally had the opportunity to upgrade my main rig to UM 24.04 LTS
I waited so long because 24.04 started out pretty flakey (thanks to the horribly bad installer and some showstopper bugs) and I needed to do it during my holidays, so a year later I'm here :grin:

Although the transition was flawless, the quality of some apps obviously deteriorated.
Some apps were broken beyond repair out of the box and won't be fixed in this LTS so I ended up replacing them with older (better) versions.
I want to highlight only two of them:

Zenity:
The sub par UI elements of GTK4 (like: more difficult to grab UI-elements witout moving the whole window) forced me to switch my home made scipts over to yad (still GTK3 and that means that I ditched zenity because of usability problems due to GTK4/Adwaita)

But what really bothered me was this:

Transmission-gtk:

Since the move to GTK4/adwaita, transmission-gtk is hindered by 2 problems:

  1. visual clues are much more difficult to see because of the subpar colorsetting (inherent to the subpar hardcoded adwaita settings)
  2. impossible to keep running in the background because ayatana support is missing.

I first switched over to transmission-qt which not only does support MATE much better in the graphical department but (contrary to GTK4) also does support Ayatana indicators.

I really scratched my head when I had to conclude that KDE/Qt not only visually integrates better in MATE but it also supports MATE much better with more functionality than GNOME4x/GTK4.

I seriously wonder if it is time for Ubuntu MATE to ditch some of the broken GNOME4x/GTK4 apps and replace them with the KDE/Qt versions. Especially because GNOME refuses to incorporate Ayatana while MATE (and the rest of the world) want to have it as a standard for indicators.

However, I was not completely satisfied: transmission -qt has intrinsically a bit less visual clues than the old gtk version and it does not recognize the '.Trash'
(for which I can not blame KDE/Qt because they already bend over backwards to try to keep cross platform compatibility)

Thanks to N0rbert (who commented on the transmission github) I ended up recompiling transmission against GTK3 and it was not only visually superior but I also got the, for this app, highly important ayatana support back.

I followed his instructions but I discovered that he forgot to mention a few things so I added them to the instruction list and here it is:

# REBUILD TRANSMISSION AGAINST GTK3

# don't run this as a script
# just execute the commands one by one and check the status after each command.

# configure apt to incorporate sourcecode sources
sudo -- sed -i 's/^Types: deb$/Types: deb deb-src/' /etc/apt/sources.list.d/ubuntu.sources

# prepare
sudo apt-get install libgtk-3-dev libgtkmm-3.0-dev dpkg-dev
sudo apt-get build-dep transmission-gtk

# get source
mkdir ~/transmission_gtk3_build
cd ~/transmission_gtk3_build
apt-get source transmission-gtk

# patch the compile instructions
cd transmission-4.0.5  # or whatever version you ended up with
sed -i "s|-DCMAKE_BUILD_TYPE=RelWithDebInfo$|-DCMAKE_BUILD_TYPE=RelWithDebInfo -DUSE_GTK_VERSION=3|" debian/rules
rm -v debian/source/format
dpkg-buildpackage -uc -us

# remove preinstalled, install new
sudo apt-get autopurge transmission-gtk transmission-common
sudo apt-get install ../transmission*.deb

# prevent the updater to overwrite the new compiled version
echo transmission			hold | sudo dpkg --set-selections
echo transmission-cli		hold | sudo dpkg --set-selections
echo transmission-common	hold | sudo dpkg --set-selections
echo transmission-daemon	hold | sudo dpkg --set-selections
echo transmission-gtk		hold | sudo dpkg --set-selections
echo transmission-qt		hold | sudo dpkg --set-selections
7 Likes