
In a vehicle, having easy access to the main controls, including on the steering column, the gear shift, and the dashboard, is critical to being able to control the vehicle effectively. It is also critical to safety and survival in a vehicle, as if you cannot turn on the headlights at night in the rain, for instance, then the chances of mishap would increase significantly.
With a graphical operating system on a computer, a key “dashboard control” is the dock. The place where you pin your most used application icons, so that you can quickly and easily launch the programs you need to launch to do the work you need to do. When the dock malfunctions or is buggy, it can be a big impediment to effectively using a computer, and it can be quite annoying.
Malfunctions of Dock
Some examples of possible dock malfunctions include these:
* You pin an icon to the dock, but when you load the application, it becomes another (unpinned) icon on the dock and doesn’t stay on the icon you clicked.
* You pin an icon to the dock, but when you click it there is no active icon for the application you just launched on the dock (including it’s own pinned icon, which is clearly not active), so if you’ve minimised the application you will need to use [Alt]+[Tab] to switch back to it.
* You load an application from the menu that is not pinned to the dock, and no icon at all appears for that application, once again resulting in the need to use [Alt]+[Tab] to switch back to it.
All of these malfunctions were indeed happening for me (and consistently so with particular applications) with the dock I’ve been using for years, which is MATE Dock Applet. Unfortunately, the applet hasn’t been maintained for those who still choose a GTK2 desktop. The stance of this writer and computer technician is clear relative to a GTK2 desktop – it is valuable as it is fast, light weight, not overly complex, relatively bug free, and really quite good. Other commentaries on this blog also clearly reflect this stance about a GTK2 desktop.
However, due “new features” (were they needed?) and “improvements” (for some, but not others) in the MATE Dock Applet, newer versions with many useful bugfixes were completely unusable on MATE 1.16 (GTK2) due to all those new features and improvements. Symptoms including no icons at all on the dock, or the dock spontaneously crashing happen consistently on GTK2 desktops with the newer applet versions. Thus, GTK2 desktop users have had to keep using buggy older versions if they happen to like MATE Dock Applet, yet this is a critical “dashboard control” for a computer!
This led me to take on the task of packaging a newer version of MATE Dock Applet than was available to GTK2 desktop users, such that people using such desktop environments can make use of this excellent (at least, if it was a bit more bug free!) dock. Big thanks to Robin Thompson for putting in all the hours to making this great dock applet a reality. Now that Robin no longer has time to maintain the applet it was clear that someone else needed to make a newer GTK2 version a reality.
Walking the Git Tree
All this git stuff is pretty new to me. A whole world of pushing and pulling, committing and reverting. What’s the git status? Let’s take a quick look at the git log. Hmm, what’s the current git diff situation? And so on, and on, and on. It’s a mini operating system in itself, the operating system of “code creation”.
There were about 80 commits in the tree since the version of MATE Dock Applet that I was using (0.78) on my fast and light weight GTK2 desktop. It was clear that the applet completely stops working at all with GTK2 after about version 0.85, so what commits happened around then? Well, some fancy HiDPI stuff for folk with super-expensive screens (which is not what the vast majority of computer users have, by the way). That sure looked suspicious.
Doing a hard reset of the git tree to any of the HiDPI commits and then building the applet gave the same result after installation: no dock icons at all. So one problem identified. Moving the tree further forwards in time and using a patch file to remove the code changes of those HiDPI commits gave a fully functional dock, also with bugfixes from newer commits than the not so useful HiDPI ones (at least not so useful for GTK2 desktop users with regular good ‘ol HD screens, you know, 1920 x 1080 pixels, quite a lot actually and do I really need more? No!).
Similar processes led to the necessary eradication of other “improvements” that were clearly focused on GTK3 desktops. This included changes to the way running applications were matched to the correct icon, the addition of a dark theme background (dark theme already works fine on older MATE Dock Applet versions, so what was this about?), and the use of a newer library than exists on Xenial 16.04 systems (ayatana) during the dock launch process (ie. initial desktop login) which was causing seconds of delay to the dock actually finishing loading.
It took about three days of work, so more than half a usual working week for sure, to walk that git tree sufficiently to nail down the various commits that were causing the issues and create patches to undo those commits. Yes, as a learner with all this, it might have taken longer than some “seasoned pro” git using developers. In any case, the end result is good and that counts for a lot.
Fully functional MATE Dock Applet on GTK2
Now when I load an application, I am confident it will have the correct icon, not add any spurious icons and that I can switch to it by clicking it. When I load an application from the menu, including obscure Java-based software that was not showing any icon on the dock, the icon appears and all is good.
A fully functional and relatively bug free dock is important in the use of a graphical desktop environment. Whatever modern operating system one uses, whether it is focused on penguins, fruit, or glass panes, the dock is a fast and easy way to launch applications and switch between them. The three days was worth it. And a lot of mistakes were made, yet a lot of learning also.
Cheers to the dock!