Warning
This project is currently in a very early stage of development. Kando is not yet a functional menu but rather a prototype which demonstrates the feasibility of the concept. You can read regular updates on the project on my Ko-fi page.
Kando will be a pie menu for the desktop. It will be highly customizable and will allow you to create your own menus and actions. For instance, you can use it to control your music player, to open your favorite websites or to simulate shortcuts. It will be available for Windows, Linux and maybe macOS.
I am the developer of Fly-Pie, which is a similar project but limited to the GNOME desktop. I have been working on Fly-Pie for more than 3 years now and I am very happy with the result. However, I have always wanted to create a similar application for the desktop in general. This is why I started this project.
Kando is very similar to Fly-Pie in terms of interaction and appearance. At the same time, there will be some major differences. You can read more in this blog post!
The prototype already features the same interaction methods as Fly-Pie (point-and-click, marking mode, and turbo mode).
Implementing a menu like Kando is pretty hard on Wayland. Things like getting the mouse position before opening a window, simulating key presses, or getting the name of the currently focused application window is not easily possible.
Nevertheless, I have managed to implement the prototype for several Wayland-based desktop environments. I have tested it on the following platforms:
TestedΒ Environment | Status | Notes |
---|---|---|
βοΈ | ||
βοΈ | ||
β | Not yet supported, but I plan to add support for it in the future. | |
βοΈ | ||
βοΈ | Requires adapter GNOME Shell extension which provides a DBus interface for Kando to communicate with. | |
βοΈ | ||
βοΈ | Uses the KWin Scripting API and the Remote-Desktop Portal to implement the required functionality. | |
βοΈ | Uses some wlroots Wayland protocols, the hyprctl command line tool and the Hyprland Global Shortcuts protocol to implement the required functionality. |
|
βοΈ | ||
βοΈ | ||
βοΈ | ||
βοΈ | ||
βοΈ | ||
βοΈ | Requires a compositor for the transparency to work. | |
βοΈ | Requires a compositor for the transparency to work. | |
β | Could actually work, but I haven't managed to properly get the transparency to work even with a compositor. |
You can either download a pre-built package from the releases page or build the prototype yourself. With a pre-built package, you can just run the executable; no installation is required.
Important
If you are using GNOME under Wayland, you will also need to install the adapter extension!
If you want to test the latest development version of the prototype, you will have to install node
and npm
.
You will also need cmake
for building the native backends.
Additionally, you will need a C++ toolchain.
On Windows, you can install either Visual Studio or run this:
npm install -g windows-build-tools
On Linux, gcc
should already be installed.
However, some additional packages may be required for the native backend modules.
On Debian-based distributions you can install them with:
sudo apt install cmake libx11-dev libxtst-dev libwayland-dev libxkbcommon-dev
On Arch-based distributions you can install them with:
sudo pacman -S cmake libx11 libxtst wayland libxkbcommon
On RPM-based distributions you can install them with:
sudo dnf install cmake libX11-devel libXtst-devel wayland-devel libxkbcommon-devel
On GNOME under Wayland you will also need to install the adapter extension.
Once these dependencies are installed, only these two commands are required:
npm install
npm start
Once this is running, you can press Ctrl+Space to open the test window.
To create an executable compiled in release mode, run this:
npm install
npm run package
This will create a directory in the out/
directory containing the kando
executable.
To create a distributable archive, just run this:
npm install
npm run make
This will create several packages in the out/
directory.
On Windows, it will create a squirrel installer and a portable zip archive.
On Linux, it will create Debian, an RPM and a portable zip archive.
That's great! If you like the idea of Kando, you can help in many ways:
- Discuss the idea! Tell me what you think about Kando and what features you would like to see. You can do this by opening a discussion.
- Spread the word! Tell your friends about Kando and share this post on social media.
- Contribute code! If you are a developer, you can help me with the implementation. I have never worked with Electron before, so I'm sure there is a lot of room for improvement. Please read the contributing guidelines for more information!
While direct contributions are the most awesome way to support the development, donations will encourage me to invest my spare time for developing free and open-source software.
These awesome people have already donated to the development of my open-source projects:
This README uses icons from Simple Icons.