pumopm/README.org

91 lines
4.6 KiB
Org Mode
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

* 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 [[https://guix.gnu.org/][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
[[http://spacemacs.org][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 four
dependencies are the crates [[https://github.com/svartalf/rust-battery][battery]], [[https://clap.rs/][clap]], [[https://crates.io/crates/time][time]], and [[https://github.com/hoodie/notify-rust][notify-rust]].
** What does Pumo mean?
Its my cats name.
** Why is the main branch called ~senpai~?
This is a joke that originated from [[https://www.reddit.com/r/ProgrammerAnimemes/][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 [[https://www.rust-lang.org/][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.
#+BEGIN_SRC sh
$ 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
#+END_SRC
* 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
#+BEGIN_SRC sh
$ pumopm -l 30 -L 32 -c 30
#+END_SRC
is the same as calling it like so
#+BEGIN_SRC sh
$ pumopm -l 30 -L 29 -c 28
#+END_SRC
* 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 [[file:LICENSE][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.