Tiny power manager written in Rust
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Lucien Cartier-Tilet 7d77b2d401
updated PKGBUILD
7 months ago
arch-pkg updated PKGBUILD 7 months ago
src Bumped version number 8 months ago
.gitignore initial commit 8 months ago
Cargo.lock Bumped version number 8 months ago
Cargo.toml Bumped version number 8 months ago
LICENSE Update README and LICENSE files 8 months ago
README.org Add PKGBUILD to repository, fix untrue statement in README 8 months ago
pumopm.1 Added manpage and systemd service 7 months ago
pumopm.service Updated systemd service, gitignores 7 months ago


About PumoPM

The Pumo Power Manager (PumoPM for short) is a custom power manager I wrote for myself in order to have a lightweight one that does exactly what I want, how I want. Basically: I want to be informed of a low level of battery (I consider 25% to be low, hence the defaults), very low (again, my preference is at 15%), and then at critical level (10%) I want the computer to automatically sleep, and if it stays asleep for a certain duration it will be suspended.

This project is written for a GNU/Linux operating system running with systemd. I have currently no plan on making it available on other platforms, except maybe one day with Guix (if you don’t value your time, take a look at it, it’s an awesome operating system, much better than NixOS in my opinion).

Built with

file:<img src=" title="file:https://cdn.rawgit.com/syl20bnr/spacemacs/442d025779da2f62fc86c2082703697714db6514/assets/spacemacs-badge.svg" />

PumoPM is written in pure, stable Rust (at least >= 1.45.2). Its three dependencies are the crates battery, clap, and notify-rust.

What does Pumo mean?

It’s my cat’s name.

Why is the main branch called senpai?

This is a joke that originated from r/ProgrammerAnimemes when news were about defaulting to another name than master for git’s main branch. As a joke, someone proposed senpai on this reddit as an alternative to master, and here we are. This is a weeb’s joke.

Getting started

To run the project, you currently only have one option: download the project’s source code, compile it, and run it. You will need to have Rust installed. Update your Rust installation if needed with rustup update. Then, simply begin with a git clone, then cd into the project’s directory. You can then build the project with cargo, and even install it locally if you want to.

  $ git clone https://labs.phundrak.com/phundrak/pumopm
  $ cd pumopm
  $ cargo build --release
  $ cargo run --release # to run the project
  $ cargo install --path . # optional, to install for the user the project

If you are an Arch Linux user, make sure you have rustup installed, and then you can install PumoPM using the PKGBUILD available in the repository. To do so, simply run

  $ makepkg -si

You will then have PumoPM installed as a native package on your machine which you can uninstall using Pacman.


It is possible to run PumoPM with a couple of different flags. You will find their description here:

-h --help

displays a help message

-V --version

displays the program’s version

-l --low

level at which the battery is considered to be low

-L --very-low

level at which the battery is considered to be very low

-c --critical

level at which the battery is considered to be critical

-r --refresh-rate

refresh rate of the battery’s reads

-v --verbose

augment the program’s verbosity, can be repeated

The arguments -l, -L and -c accept an integer between 5 and 95 (actually any value that will fit in an unsigned byte, but it will be rounded up to 5 or down to 95), while -r accepts any integer that can fit in a u64, although I’m sure you’ll never need that long of a refresh time.

The levels will also see their values ordered. If the -L value is higher than -l, then the program will automatically set it to one percent lower, or to 5% (whichever is higher). Same goes for the value of -c if it goes over the -L value, including after the re-evaluation of the latter’s value. For instance, calling the program like so

  $ pumopm -l 30 -L 32 -c 30

is the same as calling it like so

  $ pumopm -l 30 -L 29 -c 28

TODO Roadmap [0/2]

  • system tray

  • close the program with the exit code 0


This project is under the GPL-3.0 or later license. You can read it here, but basically, the following are allowed:

  • Commercial use of this program and its source code

  • Modification of the program and the source code

  • Distribution of the program and the source code

  • Patent use of the program and the source code

  • Private use of the program and the source code

However, this program comes with no warranty and I am under no liability for what you do with it. The conditions of using this program are:

  • Notice your users of the license and copyright

  • State any changes in the code

  • Disclose the source code

  • Use the same license

Please note that I am no lawyer, and the only legal document you can read is the one linked above.