Skip to content

saeedp89/kando

 
 

Repository files navigation

🚧 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.

The Vision

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

The prototype already features the same interaction methods as Fly-Pie (point-and-click, marking mode, and turbo mode). It currently comes with support for the following platforms:

  • Windows 10 / 11
  • Linux
    • There is an X11 backend which should work on many Linux desktop environments. For now, it has been tested on GNOME, KDE, and XFCE.
    • There is a specific backend for GNOME under Wayland.
    • There is a specific backend for KDE under Wayland.
  • macOS is not yet supported, but I plan to add support for it in the future.

Implementing a menu like Kando is pretty hard on Wayland due to the client isolation. 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 possible.

For Wayland support on GNOME, I have created a GNOME Shell extension which provides a DBus interface for Kando to communicate with. On KDE, I have used the KWin Scripting API and the Remote-Desktop Portal to implement the required functionality.

With a similar approach, Kando could also be made to work on other Wayland-based desktop environments.

⬇️ Installation

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.

⚠️ If you are using GNOME under Wayland, you will also need to install the adapter extension!

Manual Compilation

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.

Windows

On Windows, you can install either Visual Studio or run this:

npm install -g windows-build-tools

Linux

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

On Arch-based distributions you can install them with:

sudo pacman -S cmake libx11 libxtst

On RPM-based distributions you can install them with:

sudo dnf install cmake libX11-devel libXtst-devel

On GNOME under Wayland you will also need to install the adapter extension.

🚀 Running the Prototype

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.

📦 Creating a Release Executable

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.

🚢 Creating a Distributable Package

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.

💞 I want to contribute!

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.
  • Sponsor the development! Time is by far the most limiting factor. If you like the idea, you can also support me financially. You can do this either on Ko-fi or by sponsoring me on GitHub. If enough people do this, I will be able to spend much more time on Kando and make it a reality.

About

🥧 The Cross-Platform Pie Menu.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 78.0%
  • C++ 9.9%
  • HTML 6.2%
  • SCSS 4.6%
  • Other 1.3%