pumo-system-info/README.org

70 lines
2.1 KiB
Org Mode

#+TITLE: pumo-system-info
A Rust-based utility for gathering and presenting system information
in JSON format.
* Overview
=pumo-system-info= is designed to retrieve detailed information about
connected Bluetooth devices and present it in a structured JSON
format. This utility can be integrated with other tools or scripts for
system monitoring and management. In particular, this tool is meant to
be used with my [[https://elkowar.github.io/eww/][eww]] configuration.
* Prerequisites
- DBus
- BlueZ (for retrieving Bluetooth-related information)
- UPower (for retrieving power information)
- Rust (specified in =rustup-toolchain.toml=)
- Nix package manager with flakes (optional, for building and managing
dependencies)
* Installation
1. Clone the repository
#+begin_src sh
git clone https://labs.phundrak.com/phundrak/pumo-system-info.git
cd pumo-system-info
#+end_src
2. Build the project
1. With Nix
#+begin_src sh
nix build
./result/bin/pumo-system-info
#+end_src
2. Without Nix
#+begin_src sh
cargo build --release
./target/release/pumo-system-info
#+end_src
* Performance
Since this is a utility for bringing information to eww, this project
needs to run fast. Fortunately, it does! Here are some benchmarks I
ran on the computers I can run it on. The results are obtained through
[[https://github.com/sharkdp/hyperfine][hyperfine]].
#+begin_src sh
cargo build --release
hyperfine --warmup 3 -N ./target/release/pumo-system-info
#+end_src
| CPU | Mean | Min | Max |
|----------------------------+---------------+-------+--------|
| Intel(R) Core(TM) i5-2540M | 6.5ms ± 1.9ms | 4.7ms | 15.2ms |
| AMD Ryzen 7 5700G | 3.1ms ± 0.2ms | 2.7ms | 4.4ms |
| AMD Ryzen 7 9800X3D | 1.1ms ± 0.1ms | 1.0ms | 1.5ms |
* Contributing
Contributions are welcome! Please fork the repository and submit a
pull request with your changes. Ensure that your commits follow the
recommendations of [[https://www.conventionalcommits.org/][Conventional Commits]].
* License
This project is licensed under the GPL-3 license. See the [[file:./LICENSE.md][LICENSE]] file
for more details.