Introducing: Fly-Pie!
Fly-Pie is a new marking menu for Gnome Shell which can be used to launch applications, simulate hotkeys, open URLs and much more.
What is Fly-Pie?
Eight years ago (puh - time passes quickly) I explored several innovative menu types in my Bachelor Thesis. One of them I liked in particular - I always planned to implement it as an application launcher for Linux! Then, two years ago, I wrote about an idea I called OpenPie. Today, I present to you Fly-Pie - it’s not what I described as OpenPie, but it inherits some of the ideas.
In this blog post I will explain some of the thoughts behind Fly-Pie and try to highlight the key differences to Gnome-Pie. To learn about the features of Fly-Pie, visit its homepage on GitHub:
codeGot to Fly-Pie’s Homepage on GitHub!
What are the key differences to Gnome-Pie?
While Gnome-Pie is a traditional pie menu, Fly-Pie is actually a marking menu. This special form of a pie menu was invented by Gordon Kurtenbach and William Buxton in 1994.
A weak point of Gnome-Pie has always been its support for menu hierarchies. Marking menus however, support hierarchies of items very well. They feature a special operation mode (called marking mode) which allows to quickly select items in a menu hierarchy by drawing a gesture.
The main advantage of the marking mode is that you can gradually transition from a novice to an expert. At first, you will use the point-and-click selection of items. As soon as your muscles remembered the direction of particular items, you can start selecting them by clicking-and-dragging in the corresponding direction. At some point, you will be able to select items deep inside the menu hierarchy with one continuous gesture.
Another novel feature is Fly-Pie’s D-Bus Interface. This allows for two things: On the one hand you can open your configured menus via the commandline (this is possible with Gnome-Pie as well); on the other hand you can create menus on-the-fly! This way you can integrate Fly-Pie into third-party applications! Read more about this on Fly-Pie’s GitHub page!
Why are the new features not implemented in Gnome-Pie?
Several core aspects of Gnome-Pie strongly depend on X11. Therefore its functionality is very restricted when run under Wayland. Here are some things which are - to the best of my knowledge - impossible for a normal Wayland Client application:
- No client side window placement - Menus cannot be opened at cursor location.
- No global input grabbing - When a menu is opened, you will still be able to Alt-Tab to another application, etc.
- No global key bindings - No global hot-keys from within Gnome-Pie. Only cumbersome configuration in your window manager.
- No client side application management - No Alt-Tab window list features.
As a Gnome Shell extension, Fly-Pie actually becomes part of the Wayland Compositor which makes all of the things listed above possible. This is the reason why I decided to create a completely new application rather than implementing a marking mode into Gnome-Pie.
On the down-side, Fly-Pie runs on Gnome Shell only.
Why is it not called Gnome-Pie 2.0?
I decided not to call it Gnome-Pie 2.0 because there are several major differences between both applications, especially in the platform the application runs on. They should be rather considered as alternatives to each other!
Funny though: Fly-Pie is much more closely coupled to the GNOME ecosystem than Gnome-Pie ever was… However, I think that using the word “Gnome” in an application which legally has nothing to do with the GNOME Foundation is both confusing and misleading. Especially in the light of recent discussions at GNOME.
Where can I get it?
Head over to its homepage on GitHub and read installation notes. But keep in mind: Fly-Pie is still under heavy development! For now, Fly-Pie has been only tested on Ubuntu 20.04 and Gnome Shell 3.36. Whenever you encounter a bug or have feature request, report this via Github issues.
What if I am not using Gnome Shell…?
For now, you are out of luck. While many parts of Fly-Pie would also work in a standalone application, some would not, especially not on Wayland (grabbing global input, binding shortcuts, listing running applications, …).
Anyways, if you feel adventurous - fork the project and see what is possible! There’s a lot of documentation in the source code of Fly-Pie, it should be not too hard to dive into it!