nixpkgs icon indicating copy to clipboard operation
nixpkgs copied to clipboard

Package request: kando 🥧 The Cross-Platform Pie Menu.

Open Birdthatcantfly opened this issue 1 year ago • 10 comments

Project description

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

Metadata

  • homepage URL: https://ko-fi.com/post/Introducing-Ken-Do-L3L7L0FQ2
  • source URL: https://github.com/kando-menu/kando
  • license: mit
  • platforms: linux, darwin

Birdthatcantfly avatar Mar 19 '24 21:03 Birdthatcantfly

Packaging this from source seems a bit difficult at the moment:

  • The project uses electron-forge for building electron apps, which uses electron-packager as a build back-end, which is very annoying to work with.
    • There are no packages ATM in nixpkgs, which use it, however I have a pending PR https://github.com/NixOS/nixpkgs/pull/250627, which actually uses it
    • Here are the package subcommand docs: https://electron.github.io/packager/main/interfaces/Options.html
  • The app uses cmake-js which tries to fetch some node-api related files from the network, which we can't do. This is probably an issue with cmake-js, and I haven't been able to figure out how to work around this.

The latter made me give up on packaging it from source.

TomaSajt avatar Mar 19 '24 22:03 TomaSajt

@TomaSajt, there are Appimages available now for each release (starting in July), would it now be possible to work from one of those?

There's some early attempts in the above mentioned issue on the Kando repo

Zetaphor avatar Aug 26 '24 18:08 Zetaphor

Finally got it to compile from source, though it looks a bit buggy for me (I'm using i3 as the wm, probably that's the issue)

TomaSajt avatar Aug 26 '24 20:08 TomaSajt

Finally got it to compile from source, though it looks a bit buggy for me (I'm using i3 as the wm, probably that's the issue)

Got an idea on how I can test this package out, so I can see if it runs on Plasma?

Naitrate avatar Aug 26 '24 21:08 Naitrate

Finally got it to compile from source, though it looks a bit buggy for me (I'm using i3 as the wm, probably that's the issue)

Got an idea on how I can test this package out, so I can see if it runs on Plasma?

nix-shell -I nixpkgs=https://github.com/TomaSajt/nixpkgs/archive/kando.tar.gz -p kando

and then run kando


or just clone my branch, and run nix-build -A kando and then run result/bin/kando

TomaSajt avatar Aug 26 '24 22:08 TomaSajt

nix-shell -I nixpkgs=https://github.com/TomaSajt/nixpkgs/archive/kando.tar.gz -p kando

and then run kando

Sweet, this works fine. Got Kando up and running on my install of KDE Plasma. It's just currently missing a shortcut, but I'd imagine that the reason why it doesn't have that is because of how nix-shell functions.

Naitrate avatar Aug 26 '24 23:08 Naitrate

Finally got it to compile from source, though it looks a bit buggy for me (I'm using i3 as the wm, probably that's the issue)

On i3 you'll need a compositor for Kando to look good. Else the transparent background will be black.

Sweet, this works fine. Got Kando up and running on my install of KDE Plasma. It's just currently missing a shortcut, but I'd imagine that the reason why it doesn't have that is because of how nix-shell functions.

Are you using Wayland? If so, you'll need to configure the hotkey in KWin's global shortcut settings. See the platform-notes of Kando. On X11, it should be possible to adjust the hotkey in the settings of Kando.

Edit: I just looked at your PR. This looks like an awful lot of fiddling around to get this working. Thanks a ton! I'll try to not change much to the build system in the future :wink:

Schneegans avatar Aug 27 '24 03:08 Schneegans

Are you using Wayland? If so, you'll need to configure the hotkey in KWin's global shortcut settings.

Yeah, I'm using Wayland. It just seems like using CTRL + Win (Meta) might just be tripping up KDE or something. Will probably wait to play around further with this.

Naitrate avatar Aug 27 '24 03:08 Naitrate

I just looked at your PR. This looks like an awful lot of fiddling around to get this working. Thanks a ton! I'll try to not change much to the build system in the future 😉

Am I off base in thinking it would be easier/less fragile to just copy the binaries from the AppImage and bring in the same dependencies?

I assume this is not preferred in the Nix philosophy? I'm interested in making an attempt at writing that build script when I have some free time (currently moving)

Zetaphor avatar Aug 30 '24 14:08 Zetaphor

Am I off base in thinking it would be easier/less fragile to just copy the binaries from the AppImage and bring in the same dependencies?

I assume this is not preferred in the Nix philosophy? I'm interested in making an attempt at writing that build script when I have some free time (currently moving)

I think I got the derivation to a point where it is no longer that fragile. Sadly, this kind of complexity is required for electron apps.

Yes, it might be easier to package the AppImage, but that's even more fragile IMO. With AppImages we don't really know if we're missing a dependency or not until we run the program, (unlike when we package from source). So automated updates might break the app.

TomaSajt avatar Aug 30 '24 16:08 TomaSajt

I think I reached a point where I can't improve the derivation anymore, and I'm satisfied with it.

If you want to help this move forward a bit faster, please leave a review on the PR stating which platform you're testing on and whether certain features of the program worked for you or not. I'd appreciate the help.

TomaSajt avatar Sep 03 '24 15:09 TomaSajt

Alright, for those wondering, if you run it through nixshell, the shortcuts won't work.

So I managed to add it to my own dotfiles by adding this flake, and then adding kando under the outputs: kando.url = "github:TomaSajt/nixpkgs/kando";

Afterwards, I add this to my "systemPackages = with pkgs;": inputs.kando.legacyPackages.${pkgs.system}.kando

Just tested out this package, and it works.

Naitrate avatar Oct 26 '24 20:10 Naitrate