Killa is a GUI process monitor written in Rust, targeted for Linux desktops. The primary goals are to be fast, be simple, and keyboard-driven, while being usable with mouse too. Works on Wayland and X.
tech: Iced (frontend) + Bottom (backend)
I wanted a desktop system monitor with looks and UX of gnome-system-monitor, but with faster statup times. I couldn't find any other UI system monitor that I like (including many terminal ones like atop, btop, htop, glances, etc.). So I've wrote my own.
For reference, I mainly use process monitors to kill processes, and so killa was made with optimizing workflow of killing processes in mind.
Gnome System Monitor startup times are around ~3-5s for me on NixOS, while killa is ~500ms.
All essential features are implemented. It is usable to the point that 99% of the time I no longer need to use other process monitors. No more significant features are planned at this point in time.
- Instant startup time (~500ms on my system)
- Shows a list of processes, sorted by CPU usage, refreshed every 1s
- Shows total memory usage %
- Advanced searching:
- Ctrl+F to focus search field.
- Case-insensitive.
- Terms split by spaces.
- Prefix with
-to revert the filter. - Search in specific by column using prefixes:
name,pid,cmd,any(default). Examples:name:nixpid:1cmd:chromeany:test:123(searches for literal "test:123")- can be combined with
-like this:-pid:1
- Allows killing processes
(you can press Esc at any step to cancel)
- Filter/search processes (at least 3 chars)
- Ctrl+J to freeze. This stops the search results from updating.
- Ctrl+K to stage SIGTERM / Ctrl+Shift+K to stage SIGKILL.
- Press Enter to actually send the staged signal to all filtered processes.
The primary way to install is to use Nix with flakes:
# flake.nix
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager.url = "github:nix-community/home-manager";
killa.url = "github:rszyma/killa";
};
outputs = { nixpkgs, ... } @ inputs: {
# set up for NixOS
nixosConfigurations.HOSTNAME = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
modules = [ ./configuration.nix ];
};
# or for Home Manager
homeConfigurations.HOSTNAME = inputs.home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs { inherit system; };
extraSpecialArgs = { inherit inputs; };
modules = [ ./home.nix ];
}
}
}Then, add the package:
{ pkgs, inputs, ... }:
{
environment.systemPackages = [ # or home.packages
inputs.killa.packages.${pkgs.system}.default
];
}