I’ve recently switched to Elementary OS after many years of MacOS. Elementary by and large has been fantastic, and I like the low-configuration approach to OS design. The default alt-tab handler is my biggest gripe. It uses a combination of animated zoom, and brightness changes that I find visually tiring. I hoped that others had shared my pain and built an alternate solution.
A partial solution
After a bit of googling, I found a partial solution in this GitHub project From this project, I learned that Elementary is primarily written in Vala. Vala is an interesting language that provides object-oriented syntax on top of C using the GObject system from Gnome.
I hoped that the project I found would work with minimal fuss. However, getting Vala projects to build takes a bit of work. Once I had gotten past those hurdles and got a binary built, it crashed my gala (the Elementary window manager). The code had a lot of settings that could be changed with
dconf to change how the application switcher renders, but they also added a lot of complexity to the code. I couldn’t be certain but was fairly confident that all the settings added more complexity which was the source of the crashes.
Elementary Alt Tab Plus
I forked the project , because. I didn’t think the maintainers would appreciate a pull request that replaced huge parts of the existing behavior, so a fork seemed more appropriate. In my fork, I aimed to greatly simplify the behavior. I removed:
- Window previews.
- All the zooming animations and opacity changing.
- All the settings to change the appearance. Instead of dconf settings, I used constants, as I didn’t see a need to reconfigure the plugin at runtime.
I also improved the window title handling so that it was centered and didn’t overflow. The end result looks like this:
I’m pretty happy with how it turned out, and it has been working well on my machine with multiple monitors.
Getting it yourself
First, Install all the dependenciesShow Plain Text
- sudo apt install elementary-sdk libclutter-1.0-dev libwnck-3-dev
Then clone the repository:Show Plain Text
- git clone firstname.lastname@example.org:markstory/gala-alt-tab-plus
Then you can build the gala plugin:Show Plain Text
- mkdir build
- cd build
- cmake ..
- sudo make install
- # Restart gala
- sudo gala --replace &
This should restart gala, with the new alt-tab plugin in place. If it doesn’t end up working for you, it can be uninstalled with:Show Plain Text
- rm /usr/lib/x86_64-linux-gnu/gala/plugins/libgala-alt-tab-plus.so
Hopefully if the default Elementary application switcher bothers you, this plugin will make your experience a bit smoother.