Improved Application Switcher for Elementary OS

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 dependencies

Show Plain Text
  1. sudo apt install elementary-sdk libclutter-1.0-dev libwnck-3-dev

Then clone the repository:

Show Plain Text
  1. git clone git@github.com:markstory/gala-alt-tab-plus

Then you can build the gala plugin:

Show Plain Text
  1. mkdir build
  2. cd build
  3. cmake ..
  4. make
  5. sudo make install
  6.  
  7. # Restart gala
  8. 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
  1. 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.

Comments

BRO THIS IS SO SMOOOTH AND NICEEE!
had to all caps this

Dev 1 week, 2 days ago

Have your say: