Tiny power manager written in Rust
Go to file
2020-08-11 18:19:15 +02:00
src Bring PumoPM to a working state 2020-08-11 18:06:06 +02:00
.gitignore initial commit 2020-08-10 18:26:41 +02:00
Cargo.lock Bring PumoPM to a working state 2020-08-11 18:06:06 +02:00
Cargo.toml Bring PumoPM to a working state 2020-08-11 18:06:06 +02:00
LICENSE Update README and LICENSE files 2020-08-11 18:03:54 +02:00
README.org Update README 2020-08-11 18:19:15 +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

https://cdn.rawgit.com/syl20bnr/spacemacs/442d025779da2f62fc86c2082703697714db6514/assets/spacemacs-badge.svg

PumoPM is written in pure, stable Rust (at least >= 1.45.2). Its four dependencies are the crates battery, clap, time, 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

Usage

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 75 (actually any value that will fit in an unsigned byte, but it will be rounded up to 5 or down to 75), 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

License

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.