Randy
Conky inspired system info viewer written in Rust / GTK3
Cheezeburgerz!
Conky was named after the puppet... so this thing is Randy
A manβs gotta eat, Julian.
Goals
Learn a ton
I'm new to Rust (you can tell in the code!), having fun and learning a lot.
I'd like to come up with a more standard "module" interface once I've developed more of the modules and refactor based on what I have learned.
Feature parity with my old Conky config
Done! My old Conky setup looked more or less like the Randy screenshot.
Took 200+ commits to get there, but its there and working!
Frick Ricky, stay off the CPU
Strive to do things in as little cycles as possible. Not do things as fast as possible (hence to parallel scans of /proc/*).
ps -eo etimes,times,command | grep randy
Speed tests
- Check out the
bench
directory/sub-crate for some speed testing - Build with
--features timings
to see details about how long things take in Randy
Linux only
At the moment Randy only really runs on Linux. Running on other operating systems is not a goal.
Note: someone shared a screenshot of Randy running on Windows with WSfL though :D.
Features
Configurable modules
- Module list:
- system - system info
- cpus - all cpus usage stats bar
- cpu_consumers - top N pids using cpu and their usage
- mem_consumers - top N pids using mem and their usage
- filesystem - usage of a given mounted filesystem
- net - usage recv/trans for a given network interface
- battery - charging/discharging percentage of /sys/*/power_supply's
- Can order the modules how you wish
- Can enable/disable modules and sub items
UI settings
- bar_height - the height of the bars (default: 10px)
- base_opacity - the base opacity of the Randy window. affects
window
and all sub-widgets. (default: 1.0) - color_bar - base color of the usage bars
- color_bar_med - color of the usage bars > 50% < 80%
- color_bar_high - color of the usage bars > 80%
- color_borders - color of the GTK borders (frame borders, bar borders) defaults to same as color_text
- color_label - color of the "labels"
- color_text - color of all other text
- decoration - hide/show window decorations
- font_family - the CSS-style font family string (font names with spaces must be wrapped in escaped quotes, eg
fo_family: "\"Terminus (TTF)\", \"Liberation Mono\", monospace"
) - font_size
- mod_bat -modulo used to skip frames for getting battery data (default: 2)
- mod_fs - modulo used to skip frames for getting filesystem data (default: 2)
- mod_top - modulo used to skip frames for getting top data (default: 2)
- resizable - bool to make the GUI resizable
- skip_taskbar - in case you want to see a Randy item in the taskbar
- timeout - time in seconds to wait between frame updates
- xpos - starting position x
- ypos - starting position y
Building
Optional deps / features
nvidia
: Enable NVIDIA card temp sensing via NVML .sosensors
: Enable lm-sensors integration
Example:
cargo run --features sensors,nvidia
Required build packages
I have only barely looked into packaging but jhjaggars put some helpful hints for Raspbian and Fedora in here:
Example
cargo run --release --no-default-features # build with lm-sensors and nvml disabled
Running
Randy needs to be pointed at a config Yaml.
It will look for the default.yml
in $PWD/config
. Should work ootb if you launch from the root of the Git repo.
If you are launching Randy from elsewhere... point it at the config Yaml file of your choosing. Example:
randy /tmp/configs/my_cool_config.yml
Screenshots
FAQ
- Does randy work with Wayland?
- Yes, check out the proof
- Does randy work with X?
- Yes