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 on 11/17/20

Thank you :)

Aral Balkan on 12/13/20

Thank you very much! Otherwise I would have gone completely crazy. Alt-Tab is OOTB in elementaryOS completely unusable.
Now I’m looking for something that displays the red notification icons in the dock.

Hessi on 1/12/21

Thank you!

thank you on 4/27/21

it’s cool .
notes :
-it’s bit sluggish especially at the first alt-tab
-the notifications theme got altered for some reason .
hopefully you can provide any fixes especially for the notifications part .

s on 5/8/21

This is fantastic. You have improved this functionality several fold. I think it belongs in the core install of Elementary for sure!

Have you considered showing this to any of the community devs who contribute to EOS?

Happy Linux User on 6/5/21

This is fantastic. You have improved this functionality several fold. I think it belongs in the core install of Elementary for sure!

Have you considered showing this to any of the community devs who contribute to EOS?

Happy Linux User on 6/6/21

Hi… It gives the following error when I try to clone your git repo:

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Can you pls help?

Rajesh on 1/17/22

Have your say: