My three-month-long elementary OS 6 upgrade adventure in three parts. (Part 1: Catts)
I just upgraded my operating system from elementary OS 5 to 6.
It only took me three months.
The journey begins
elementary OS 6 (Odin) was officially released on August 10th, 2021.
Since there is no auto-update tool, you have to back everything up, wipe your computer, and install the new operating system from scratch. It took me a few days to build up the courage to do so. On August 14th, after publicly documenting some of the things I was backing up, I took the plunge.
A bumpy start
I hit my first hurdle almost immediately when I realised that I’d been using a custom task switcher called gala-alt-tab-plus that hadn’t been updated for Odin. Speaking with Mark, the maintainer, it didn’t look like it was going to be a trivial update either.
So I decided to bite the nail on the head and make an Odin-only version called Calmer Alt-Tab Task Switcher (Catts).
’Mentary songs for ’mentary Catts
I wanted Catts to eventually become the default task manager in elementary OS, not languish as an option for a handful of technically-savvy people for over seven years, like its precursor.
One way of achieving that might have been to take part in endless bikeshedding in GitHub issues, etc. That’s really not what I’m built for. So, instead, I knew what I needed to do was to show not tell:
-
Make it easy to install (and uninstall) so anyone, including the elementary team, could try it out easily.
This way, even if it wasn’t immediately accepted, people could still install and use it and, if enough people did, it might be included as the default later on.
-
Make the design case for why it is better than the default task switcher and do so visually in a manner that is difficult to ignore.
-
Make it easy to adopt. Don’t create obstacles to it being incorporated into the OS (so, for example, adhere to coding conventions).
Fast forward a couple of days and I had a rudimentary version working and ready to test on elementary OS 6.
And this is how I announced it in the readme, to cover the points above:
Why Catts?
A quick visual demonstration should suffice (if it doesn’t, please read on for the various reasons outlined below.)
Elementary OS stock task switcher:
Catts:
In other words, because:
alt + tab is a hidden, shortcut gesture for quickly switching between the various windows you have open.
There is already a graphically-heavy, slower alternative with the “Show Desktop” (⌘ + ↓) gesture that gives you an overview of the windows within a workspace with window previews that >can be used if differentiating windows based on their contents is important.
In elementary OS, however, the task switcher:
Overloads the dock (the dock is transformed to include icons of windows and the icons there used to indicate which window you’re switching to). This breaks the physicality of the dock and overloads its >meaning. That said, due to the amount of other animation going on, willing myself to concentrate on the dock is the only way I can use it at all.
Has excessive motion (animates windows backwards or forwards while dimming them in/out every time you press alt + tab). Imagine that happening with maximized or half-screen windows >on a 24" monitor. I don’t normally have issues with motion and it makes me feel seasick after a few uses.
Gets stuck. Sometimes it will just get stuck in a state where no window is selected. Pressing alt + tab again gets you out of it.
Is one-way (shift + alt + tab) doesn’t do anything.
Basically, the task switcher in elementary OS is unusable.
This one, despite its limitations, at least fixes the above issues.
Catts:
Is calm. It does not animate my windows. I don’t want cognitive complexity when I’m fast switching between apps. I want to select the app I want to switch to and switch to it. That’s it.
Uses icons. There is very little cognitive load to recognising an icon. There’s a reason we use icons of applications in menus, etc., instead of tiny thumbnails of them. The same principles apply here.
Enables you to tell apart different windows of the same app (simply, by displaying the window title in the switcher alongside the icon).
Uses the system colour scheme. Love Dark Mode? Catts does too.
I feel elementary OS would be far more usable in general – not to mention more familiar for folks just coming over from macOS or Windows – if we were to replace the default task switcher with Catts.
In fact, I’ve opened a feature request on the elementary OS Gala to do just that. If you agree, please give it a thumbs up to show your support.
The happy ending?
To cut a long story short, Catts was brought into elementary OS as the default Window Switcher last week and should be in November’s operating system updates.
I want to take this opportunity to thank David M. Hewitt for taking the initiative and his hard work in making this happen. I also want to thank Cassidy and Dani for their support and input throughout the process.
And yet…
So is it time to put Catts to rest?
Not just yet.
While I’m very happy to see a version of Catts incorporated into elementary OS, there is one major outstanding issue. The version that is being added to elementary OS is inaccessible. I was able to cobble together some basic accessibility for the widget using whatever scant documentation and code I could find in the GNOME/Gtk/Vala/elementary OS world and the current release of Catts does have that implemented.
However, the version being merged into the OS will be entirely inaccessible.
So, if you need an (even if imperfectly) accessible task switcher, please still keep using Catts until the elementary folks manage to implement it properly in Gala.
I’ve opened an issue to track this here: https://github.com/elementary/gala/issues/1301
I’ve also opened a discussion in the elementary OS Human Interface Guidelines asking for accessibility/inclusivity to be adopted as a core tenet of the operating system and for both the operating system itself and the developer documentation to be updated accordingly. Please feel free to share your thoughts on that here: https://github.com/elementary/hig/discussions/51
Once the task switcher in Vala is accessible, I will most likely retire Catts.
But that’s not the end of the story
Three months? Surely, Catts didn’t take three months to build (it didn’t). Laura and I took about a month off after two years of the pandemic to go see our parents right after we got our vaccinations. It took me another few weeks1 to build out two other projects as the task switcher wasn’t the only thing that had issues.
You see, I had this little git commit message editor called Gnomit I wrote that I loved using everyday. With elementary OS 6, it stopped displaying correctly in dark mode. So, of course, this bugged me (because, hello, welcome to my life) so I decided to rewrite it specifically for elementary OS and to do so “properly” in Vala2 to get a feel for the recommended development process.
As I worked through the developer documentation, I saw there was a huge amount of boilerplate that needs to be implemented for every elementary OS app in order to adhere to the elementary OS Human Interface Guidelines.
So I decided to create a best-practices application template for elementary OS called Watson and to use that to create my new git commit message editor, Comet.3
I’ll cover Watson and Comet in Parts 2 and 3.
Like this? Fund us!
Small Technology Foundation is a tiny, independent not-for-profit.
We exist in part thanks to patronage by people like you. If you share our vision and want to support our work, please become a patron or donate to us today and help us continue to exist.