Tiny power manager written in Rust
Go to file
Lucien Cartier-Tilet 7d77b2d401
updated PKGBUILD
2020-09-27 15:07:13 +02:00
arch-pkg updated PKGBUILD 2020-09-27 15:07:13 +02:00
src Bumped version number 2020-08-12 23:29:55 +02:00
.gitignore Updated systemd service, gitignores 2020-09-27 14:54:37 +02:00
Cargo.lock Bumped version number 2020-08-12 23:29:55 +02:00
Cargo.toml Bumped version number 2020-08-12 23:29:55 +02:00
LICENSE Update README and LICENSE files 2020-08-11 18:03:54 +02:00
README.org Add PKGBUILD to repository, fix untrue statement in README 2020-08-11 19:01:15 +02:00
pumopm.1 Added manpage and systemd service 2020-09-27 13:00:36 +02:00
pumopm.service Updated systemd service, gitignores 2020-09-27 14:54:37 +02:00


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 dont value your time, take a look at it, its an awesome operating system, much better than NixOS in my opinion).

Built with


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?

Its my cats 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 gits main branch. As a joke, someone proposed senpai on this reddit as an alternative to master, and here we are. This is a weebs joke.

Getting started

To run the project, you currently only have one option: download the projects 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 projects 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 programs 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 batterys reads
-v --verbose
augment the programs 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 Im sure youll 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 latters 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.