* move widgets
* reduce allocations needed
* ah
* more possible optimizations around reducing allocs
* some fixes
* I forgot to clear the buffer oops
* missing
* only run terminal cleanup after certain point
* refactor: add new method of storing timeseries data
* mostly finish adding data
* tmp
* migrate over to separate lib
* prepare to migrate over to new timeseries storage
* prepare to migrate frozen state
* migrate frozen state
* name
* migrate data collection
* migrate network
* fix some stuff
* fix a panic from bad pruning
* Fix pruning issues
* migrate RAM
* migrate swap
* migrate cache label
* refactor out to function
* migrate ram points
* migrate swap points
* migrate cache points
* migrate arc
* migrate gpu, remove a bunch of state code around force update
* rename cache, also some comments
* some temp cleanup
* migrate disk
* comments to remind me above fixmes, fix bug around time graph spans
* migrate load avg
* port temps
* style
* fix bug wiwth left edge gap
* partial migration of cpu, reorganize data file structure
* migrate cpu
* some cleanup
* fix bug with cpu widget + clippy
* start some small optimization work
* fix some things for some platforms
* refactor: rename data_collection to collection
* refactor: only process temp type in data eat step
* flatten components folder a bit
* partially migrate to new graph system and fix cpu bug
* driveby migration of process list to reduce allocs + more migration of points drawing
* revert the collection change
Forgot that I cut a new `Data` on each collection so that change was
useless.
* port over network stuff...
* fully migrate network, and fix some log bugs while we're at it
This is something I never noticed, but the log of 0 is inf - so there
were gaps in the lines when using log scaling!
* fix cpu colour in all mode
* clean up some disk table stuff
* run a dep bump
* add widget border type
* feature: support custom widget borders
* fmt
* remove none since it looks really bad
* fix bug with title for tables with no title when expanded
* fix jsonschema
* fix some unused stuff
* refactor: lines
* shift around some stuff in Cargo.toml
* some docs
* some more cargo stuff
* clean up a bunch of stuff after making things less public
* clippy lints
* a lot more cleanup
* clippy
* fix some errors
* fix for windows
A loooooong time ago (wow, it's been 4 years apparently...), I made the brilliant (/s) decision to use both lib.rs and main.rs because I was trying to add tests in the tests folder that needed private access to some functions in the src - and at the time, the only way I could think of doing so was exposing bottom as a library and a binary.
This isn't necessarily bad, but for my use case, it's pretty unnecessary nowadays (since I've moved all my tests back into the source files) and adds complexity in looking for certain things, so it's high time we move things around and remove lib.rs. I also took the time to clean up some weird code I spotted along the way.
* other: organize some utility function files
* deps: remove kstring
* refactor: some naming changes
* refactor: some more small refactoring/naming changes
* simplify to_cell to return a Cow
* enable lints
* refactor: group together some canvas files
* rename file
* more shuffling around
* fmt
* more shuffling
Going to flatten widgets in another PR.
* some docs
* naming
* fmt
* Add gpu util, power and procs.
Consolidated gpu calls into `data_harvester`.
Changed config flag from `enable_gpu_memory` to `enable_gpu`.
Added GPU utilization to the cpu widget.
Added GPU process memory usage and utilization percentage to the proc widget.
Added key binds for gpu process toggling.
Added GPU power usage to the battery widget.
Added bounds check to battery widget header.
Show battery widget header when `gpu_enable`.
Added feature flag `legacy-functions` to `nvml-wrapper`.
updated config file(s).
updated help text.
updated docs.
* Code Review:
Remove GPU util from cpu widget
Remove GPU power from battery widget
Use reference for gpu widgets_to_harvest
Extract match arm to function for feature gate
* Code Review: add gmem% toggle
* Do not poll gpu temp when filtered
* Code Review Two Changes:
adjust doc wordings
remove extra references
remove extra widget harvest checks
init proc gpu values
use convert_temp_unit for gpu temp
* Fixed uninlined args
First ran this, and fixed a few more similar issues by hand
```
cargo clippy --workspace --fix --benches --tests --bins -- -A clippy::all -W clippy::uninlined_format_args
```
Note that in a few cases, format args were passed by ref - which is actually a tiny perf hit - compiler would not be able to optimize them.
* revert change here
since it contains a non-inlineable variable I'm not a fan of using it partially here
* revert
given the other formats above/below I would prefer keeping it like this
---------
Co-authored-by: Clement Tsang <34804052+ClementTsang@users.noreply.github.com>
* deps: use clap 4.4.0 to remove is-terminal
* fmt
* appease clippy
* fmt again
* Revert "deps: use clap 4.4.0 to remove is-terminal"
This reverts commit 78aa6ec848.
* other: use f32 for process percentage values
This cuts down memory by a tiny bit, and we don't need a full f64 for
percentage values.
* fix for macos and windows
* feature: show running time of processes
* fix clippy
* add time searching
* update changelog
* use safer duration for linux in case of 0
* some cleanup
* quick hack to deal with some Windows processes returning unix epoch time as start time
---------
Co-authored-by: Clement Tsang <34804052+ClementTsang@users.noreply.github.com>
* feature: add customizable process columns
* Add some tests and actual logic
* more tests
* update changelog
* update config field
* even more tests
* update documentation
* more testing
* deps: remove const_format dependency
I was importing it for just one use case, but I could just define the
const string manually and not pull it in at all.
* update husky entry
Migrates existing heim-based disk data collection code off of it to either sysinfo or vendored code based on heim/sysinfo/other sources. This also allows us to remove heim completely from bottom.
---
* refactor: fix some refresh code
* remove async from the freebsd code
* some file/implementation organization
Turns out sysinfo lacks a lot of data I need. I can still use it for the
Windows disk usage implementation, but I'm probably going to manually
implement macos/linux usage and all io usage stats.
* more restructuring
* Some other fixes
* remove futures
* ready for some big changes?
* big changes
* linux io + reads
* use lossy conversion for mount point
* add windows refresh
* so long heim, and thanks for all the fish
* fix filter behaviour, remove string allocation when reading lines
* rename unix -> system for more accurate file struct representation
* fix freebsd
* port generic unix partition code
* add bindings and fix errors
* finish macOS bindings for I/O
* disable conform check, this seems to... make disk I/O work on macOS?????
* fix linux
* add safety comments
* more comments
* update changelog
* changelog
* We're going full 0.9.0 for this
* update lock
* fix some typing
* bleh
* some file management
* hoist out get_disk_usage
* fix some stuff for Windows
* typing and remove dead code allow lint
* unify typing
* fix
* fix 2
* macOS fix
* Add bindings file for windows
* add windows implementation
* fix macos
* refactor: optimize kept list in tree to just store filtered values in a set
* change: show all direct children of a tree process children if the parent matches
* change: show process in tree if any ancestor or descendent matches