Compare commits

...

2056 Commits
v0.1.2 ... main

Author SHA1 Message Date
Clement Tsang
f1017d6f6f
bug: fix issue with process name isolation on Linux (#1809)
* driveby fix for dash cmdline bin name

* fmt
2025-09-01 21:50:53 -04:00
Clement Tsang
d55e1a674f
docs: fix missing pages + delete old filtering page (#1806) 2025-08-29 23:27:26 -04:00
Clement Tsang
a35b81a187
docs: update docs page with missing features (#1805)
* add no key setting

* do it here instead of in main loop

* add a warning

* docs: update a bunch of docs with features

* linux-only test

* oop

* skip field check for other os

* oop

* easier way of doing it

* use dead code

* oop

* huh guess I don't need it
2025-08-29 23:12:19 -04:00
Clement Tsang
d799c656aa
feature: support ignoring all keypresses (#1719)
* refactor

* add no key setting

* do it here instead of in main loop
2025-08-29 21:30:50 -04:00
Clement Tsang
43e1b34899
bug/refactor: draw average CPU last, refactor CPU data code (#1804)
This PR makes it so we draw the average CPU on top again. This also refactors internals to have the average CPU stored separately.
2025-08-22 04:19:03 +00:00
Clement Tsang
58a9a643a4
docs: update default config (#1803) 2025-08-21 23:31:12 -04:00
Clement Tsang
6c62e7817f
ci: build and check Windows ARM (#1801)
* ci: build and check Windows ARM

* forgot to update these

* ???

* is it the image or smth

* nope not that

* Update build_releases.yml

* Update ci.yml

* Update build_releases.yml

* fix build

* ???

* ????

* ????????

* okay that works, now just set the output file
2025-08-21 22:40:30 -04:00
Clement Tsang
47cc0b346a
bug: fix colon at end of process name for now on Linux (#1800)
* driveby use rustix

* refactor some code aeround

* bug: fix colon at end of process name for now

* clippy

* comments

* changelog

* some other changes + test

* extra test
2025-08-21 07:21:44 -04:00
Clement Tsang
6409f67dbc
deps: bump deps as of 2025-08-19 (#1799)
* deps: downgrade sysinfo, bump other things

* revert sysinfo back to 0.37.0
2025-08-19 20:16:10 -04:00
allcontributors[bot]
1442010f1f
docs: add marverix as a contributor for doc (#1792)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2025-08-19 19:55:04 -04:00
Marek Sierociński
3edd3e1a47
docs: Add installation with gah (#1780) 2025-08-19 19:54:44 -04:00
Clement Tsang
b87f45a9c5
other: fix lockfile (#1798) 2025-08-19 23:45:48 +00:00
Clement Tsang
0418ad6dcf
other: use normal version to avoid wix issues (#1797) 2025-08-18 21:51:26 +00:00
Clement Tsang
3ff7977e6f
feature: add support for threads in linux (#1793)
* feature: add support for threads in linux

* bump version too

* only enable for linux for now

* thread some things around

* update changelog

* add highlighting support

* fmt and run schema

* how did this get added

* hmmm cfg in if seems to not work

* fix updated fields

* fixes

* revert uptime rename

* some cleanup

* fix doc

* oop
2025-08-17 07:07:50 +00:00
Clement Tsang
2578f20ce5
uptick: 0.11.1 (#1786) 2025-08-14 23:56:41 -04:00
Clement Tsang
f846fdcc05
bug: fix reported usage spike at the start on some OSes (#1788)
* bug: fix spike at the start on some OSes

* add clean

* bake things in better I guess

* hmmm no nvm

* tiny sleep

* update changelog
2025-08-14 22:04:48 -04:00
Clement Tsang
849edf71db
bug: fix issue with battery widget time and small widths (#1787)
* bug: fix issue with battery time and small widths

* changelog
2025-08-15 00:56:06 +00:00
Clement Tsang
e23af2f393
other: bump btm's cargo version to 0.11.1 (#1783) 2025-08-14 23:34:14 +00:00
Clement Tsang
c29647eaf8
ci: use cargo-deb 3.5.0 (#1782)
* ci: use cargo-deb 3.5.0

* change default location for debian release
2025-08-14 03:56:51 -04:00
Clement Tsang
74ddb592e8
deps: bump deps as of 2025-08-14 (#1781) 2025-08-14 03:23:42 -04:00
Clement Tsang
0f212183fe
other: skip the initial sleep on data collection initialization (#1779)
* deps: bump sysinfo

* remove sleep on startup

* missing collection set

* some logic around updating the battery list to match how it is now

* more refactoring

* oops

* forgot to initialize battery manager

* fix list updating logic + battery manager logic

* comment

* initialize should refresh list to true

* ah

* this works a bit nicer
2025-08-13 06:57:45 +00:00
Clement Tsang
868667add8
deps: bump deps as of 2025-08-11 (#1778)
* docs: update changelog

* bump deps
2025-08-12 08:47:02 +00:00
Frederick Zhang
9fe558183b
fix: use default disk.columns when only other disk.* configs exist (#1776)
I configured `[disk.name_filter]` and after upgrading to v0.11.0, the
disk widget became empty since `disk.columns` was parsed as an empty
vector unless I added `disk.columns` to my config as well.
2025-08-08 15:01:48 +00:00
Clement Tsang
c17110caf2
ci: remove winget job (#1775)
* ci: remove winget job

Seems like it's not necessary for me to do this anymore?

* driveby update
2025-08-07 02:53:31 -04:00
Clement Tsang
65a5d5314c
docs: bump mkdocs-material, hide navigation for home page (#1774) 2025-08-06 23:57:35 +00:00
Clement Tsang
858dea3e65
docs: forgot some entries in my changelog (#1773) 2025-08-06 05:04:52 +00:00
Clement Tsang
566502347e
docs: update things to reference 0.11.0 in prep for release (#1765)
* docs: update things to reference 0.11.0 in prep for release

Things still missing:
- Update schema
- Release notes
- Any doc site updates?
- Any GIF updates?
- Take a pass over README?

* update schema with 0.11

* update schema with virt

* update

* update date

* an attempt and failure to update the gif

* bump freebsd

* bump

* I swear

* okay so no freebsd 15, got it
2025-08-06 04:09:39 +00:00
allcontributors[bot]
e18217c619
docs: add Bucket-Bucket-Bucket as a contributor for code (#1771)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2025-08-04 19:34:19 -04:00
Clement Tsang
2132da2f8b
feature: option to have process tree entries be collapsed by default (#1770)
* Add option to have process tree collapsed by default

* Fix collapse logic

* format

* tweak how it's done

* oops

* slight tweaks to the no-children collapse logic

* update schema

---------

Co-authored-by: ceres <ceres.bezuidenhout@trintel.co.za>
Co-authored-by: Bucket-Bucket-Bucket <107044719+Bucket-Bucket-Bucket@users.noreply.github.com>
2025-08-04 23:29:42 +00:00
Clement Tsang
51c67ee599
other: change how we calculate swap usage in Windows (#1769)
* bump sysinfo

* other: change how we calculate swap usage in Windows

* update changelog

* update comments

* add test?

* adjust test
2025-08-03 05:25:11 +00:00
Clement Tsang
4d935bdd70
feature: support virtual memory column for processes (#1767)
* quick refactor of bytes/name

* oop

* Add virt mem field

* add value

* add virtual memory columns + tests

* fix

* Changelog
2025-07-30 04:24:21 +00:00
Clement Tsang
d06f239b5f
docs: revert 0.11.0 docs change (#1764)
This reverts commit 4416cf6b29701a67b093678e60e005de74c9642c.

Didn't mean to merge this yet -_-
2025-07-29 04:39:01 -04:00
Clement Tsang
bb0d4bdd32
refactor: refactor the data table increment position code (#1762)
* refactor: refactor the data table increment position code

* some comments

* changelog
2025-07-29 08:24:49 +00:00
Clement Tsang
4416cf6b29
docs: update things to reference 0.11.0 in prep for release (#1763)
Things still missing:
- Update schema
- Release notes
- Any doc site updates?
- Any GIF updates?
- Take a pass over README?
2025-07-29 08:16:39 +00:00
allcontributors[bot]
d74d94f4e1
docs: add yahlia as a contributor for code (#1761)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2025-07-29 04:12:09 -04:00
yahlia
4356ab7b24
bug: fix increment for data tables if the change is greater than the number of entries left (#1759) 2025-07-29 03:52:58 -04:00
Clement Tsang
2e6ac01f99
bug: fix parsing issue around certain disk names (#1755)
* bug: fix parsing issue around certain disk names

Turns out that in /proc/mount disk names may have weird escape
characters - these need to be changed when parsing it.

* update changelog

* back to the slow

* Add test
2025-07-17 02:15:55 +00:00
Clement Tsang
4605e88927
ci: replace windows-2019 runner with windows-2022 (#1756)
As it's deprecated and causing problems.
2025-07-17 02:02:38 +00:00
Clement Tsang
16b805b0a2
deps: bump root and lock deps (#1751) 2025-07-06 21:31:36 +00:00
allcontributors[bot]
fe13ef8997
docs: add kachick as a contributor for code (#1750)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2025-07-01 11:27:03 -04:00
Kenichi Kamiya
d057fd141b
bug: fix invalid values in desktop file (#1749)
The current desktop file caused an error and a hint from `desktop-file-validate` 0.28.
This commit addresses those issues:

- The "Version" field must be empty or a desktop entry specification version (e.g., 1.0, 1.5),
  not the tool's version.
- The "Categories" field should only contain one main category to avoid warnings.

ref: https://specifications.freedesktop.org/desktop-entry-spec/1.5/recognized-keys.html
2025-07-01 11:26:55 -04:00
Clement Tsang
0f878c4ae2
refactor: fix clippy warnings for 1.88.0 (#1748) 2025-06-26 22:47:56 +00:00
Clement Tsang
760a2bc884
deps: bump root and lock deps (#1747) 2025-06-25 04:41:08 +00:00
Clement Tsang
16f7084f94
docs: actually fix actions shield (#1745) 2025-06-21 01:35:25 -04:00
Clement Tsang
5989da07a4
docs: fix CI shield (#1744) 2025-06-21 05:07:28 +00:00
Clement Tsang
7e3b5810fd
docs: update changelog about process kill change (#1743) 2025-06-16 01:46:01 -04:00
Clement Tsang
9ba7d2c04e
deps: bump dependencies (#1742)
* deps: bump root dependencies

* bump lockfile

* didn't need that tempfile dep since it's just for testing

* driveby note
2025-06-12 06:45:42 +00:00
Clement Tsang
631ce94f9c
ci: retry codecov manually (#1741)
* ci: retry codecov manually

* test

* ok what about now

* test
2025-06-11 19:30:27 -04:00
Clement Tsang
3b8f00415f
ci: update ubuntu version for builds to 22.04 (#1740)
The 20.04 runner image is deprecated, see https://github.com/actions/runner-images/issues/11101
2025-06-11 18:02:33 -04:00
Clement Tsang
881d609f31
deps: bump dependencies as of 2025-06-09 (#1739)
* deps: bump root dependencies

* bump lockfile
2025-06-09 03:28:01 -04:00
Clement Tsang
1769ee0987
deps: bump sysinfo to 0.35 (#1738)
* deps: bump sysinfo, fix cpu

* fix things for at least Linux

* bump some other stuff

* more things

* windows

* more stuff

* display

* ahhhh it's not stable

* redundant f32

* fix freebsd
2025-06-09 03:00:09 -04:00
Clement Tsang
7728c76419
bug: fix some bugs around key bindings with new process kill dialog (#1737)
* bug: fix some bugs around key bindings with new process kill dialog

* clippy
2025-06-08 05:27:09 -04:00
Clement Tsang
98342617a1
refactor: update how we render and handle process kill dialogs (#1701)
* fmt

* temp work

* get yes/no working

* cleanup

* fill out some more buttons

* conditional compilation

* update

* update docs

* wait this just works

* like 80% of the way there

* some stuff around the killing screen

* mouse works

* done!

* clippy

* more stuff

* fix some imports for windows

* android fixes

* oop

* ahh

* hmm
2025-06-08 04:46:31 -04:00
Clement Tsang
00afd66006
refactor: share implementation for pecentage-based time graphs (#1736)
* refactor: move components to a 'drawing' folder

* Revert "refactor: move components to a 'drawing' folder"

This reverts commit a1316bdf3aa4437bed2ca786896c2b387ccf5f0e.

* move stuff out of constants because it sucks

* move more things!

* cleanup

* some restructuring

* refactor percent time graph to common impl

* wow thanks copilot
2025-06-03 04:13:10 +00:00
Clement Tsang
3d35d08347
deps: bump root deps as of 2025-06-01 (#1734)
* deps: bump root deps as of 2025-06-01

* update schema generation

* update config file link too

* rerun
2025-06-01 19:49:05 -04:00
Clement Tsang
0633ed96c6
other: add other samply files to gitignore (#1732) 2025-06-01 02:54:39 +00:00
Clement Tsang
89546bf672
docs: add back CI badge (#1731)
Second thoughts on this, it's useful I guess.
2025-05-26 01:18:10 +00:00
Clement Tsang
b2506e5e85
ci: bump freebsd-vm to v1.2.0 (#1730)
* ci: bump freebsd-vm to v1.2.0

* also bump freebsd versions

* oops it was clippy

* fix ci pass check
2025-05-25 20:59:31 -04:00
Clement Tsang
7e0c6aa286
deps: bump deps as of 2025-05-25 (#1729)
* docs: update README to remove check badge

* deps: bump deps as of 2025-05-25

* deps: bump lock deps as of 2025-05-25
2025-05-26 00:05:38 +00:00
Clement Tsang
6e31c3aeca
ci: bump rust-cache to 2.7.8 (#1728) 2025-05-24 06:58:35 +00:00
Clement Tsang
134888dfec
refactor: refactor some process grouping code (#1727)
Remove one clone for process grouping.
2025-05-10 22:24:06 +00:00
Clement Tsang
33e070bfa3
deps: bump root and lock deps as of 2025-04-29 (#1726)
* bump root deps

* bump lock
2025-04-29 04:42:31 +00:00
Clement Tsang
b1be6b2cb9
ci: update the cross version for the Android CI test (#1725) 2025-04-21 03:47:16 -04:00
Clement Tsang
7b95977e5a
deps: bump lock deps as of 2025-04-20 (#1722) 2025-04-21 07:46:57 +00:00
Clement Tsang
34feeafe17
deps: bump root deps as of 2025-04-20 (#1721) 2025-04-21 07:33:54 +00:00
allcontributors[bot]
16ae12ff7b
docs: add nyurik as a contributor for code, and doc (#1724)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

* fix things

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: ClementTsang <34804052+ClementTsang@users.noreply.github.com>
2025-04-21 07:13:07 +00:00
Yuri Astrakhan
729f714bf9
feature: allow left to collapse trees and right to expand them (#1306)
Allow using the left arrow to collapse a tree branch in the process widget, or a right arrow to expand it.

---------

Co-authored-by: Clement Tsang <34804052+ClementTsang@users.noreply.github.com>
2025-04-21 03:01:18 -04:00
Clement Tsang
86b7ef331e
feature: support delete key to kill processes (#1717)
* feature: support delete key to kill processes

* clippy

* Changelog

* fn + delete
2025-04-19 06:51:49 +00:00
Clement Tsang
508f05b640
bug: revert accidental time start change from another commit (#1716) 2025-04-14 02:21:42 -04:00
Clement Tsang
146b8596cf
refactor: some refactoring while stable graphs (#1715)
* update grids

* asdfadf

* asdf

* b

* update loggers

* some formatting and refactoring

* docs

* some comments

* more docs
2025-04-14 06:13:20 +00:00
Clement Tsang
c68b190388
bug: fix incorrect disable mouse click condition on cleanup (#1713)
Looks like a bug slipped through in #1706 so when stopping the program click events would continue. I could just fix the condition but I think it's fine to just unconditionally disable click events on cleanup.
2025-04-10 23:53:55 +00:00
Clement Tsang
69a4b59573
other: fix clippy warnings (#1712) 2025-04-10 23:20:11 +00:00
Grace Stok
d50285075d
docs: name change in contributor list (#1709) 2025-04-04 16:30:10 -04:00
allcontributors[bot]
60aac16ff0
docs: add benjamb as a contributor for code (#1707)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2025-03-30 12:28:38 -04:00
Ben Brown
3330c1f1e7
fix: Disable mouse capture when disable_click is set (#1706) 2025-03-30 12:28:21 -04:00
Clement Tsang
f8b8a21748
docs: use local link in docs to reference itself & missing CPU config (#1704)
* docs: use local link in docs to reference itself

* also fix missing cpu config docs
2025-03-28 04:22:40 +00:00
Clement Tsang
dd995c170f
docs: bump docs requirements.txt (#1702) 2025-03-28 04:05:52 +00:00
Clement Tsang
b1f969880e
other: remove comment about skipping timeseries in basic (#1700)
Turns out I already did this. Nice.
2025-03-28 03:56:24 +00:00
Ada Ahmed
37a546ab0f
other: update amdgpu marketing names and trim excess keywords (#1692) 2025-03-21 20:04:31 -04:00
Clement Tsang
a90490fe83
docs: update README and autocomplete docs (#1699)
* formatting

* update autocomplete
2025-03-21 09:21:04 +00:00
Clement Tsang
40087d1203
docs: image tags are hard (#1698)
* docs: image tags are hard

* come on what

* ??

* img
2025-03-21 05:01:30 -04:00
Clement Tsang
95ac255557
docs: update thanks again (#1697)
It's thankin' time
2025-03-21 04:57:38 -04:00
Clement Tsang
235fd837a3
docs: update thanks (#1696) 2025-03-21 04:36:51 -04:00
Clement Tsang
2afd32fbb0
docs: update font-related troubleshooting (#1695) 2025-03-21 02:56:19 -04:00
Clement Tsang
5e95f8fac8
deps: bump lock deps as of 2025-03-19 (#1691) 2025-03-20 02:29:01 +00:00
Clement Tsang
769372ead6
deps: bump root dependencies as of 2025-03-19 (#1690)
* deps: bump root deps as of 2025-03-19

Tried this with cursor, worked alright after some nudging.

* looks like it missed a few

* nvm it missed a lot
2025-03-20 01:03:20 +00:00
Julius Enriquez
a608a1bf83
docs: Add Alpine Linux installation instructions (#1689) 2025-03-10 10:23:11 -04:00
allcontributors[bot]
a02257e6af
docs: add win8linux as a contributor for doc (#1688)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2025-03-10 02:45:05 -04:00
Julius Enriquez
5442529888
docs: Add openSUSE installation instructions (#1687) 2025-03-10 02:44:55 -04:00
Clement Tsang
3113c24e37
other: allow for hyphen versions of arguments to be used (#1686)
This PR allows both args like `--autohide-time` _and_ `--autohide_time` to work.
2025-03-06 04:59:50 +00:00
Clement Tsang
05e1adc0b4
docs: Update CHANGELOG.md for #1683 (#1685) 2025-02-28 04:07:19 -05:00
allcontributors[bot]
40cc08d6d9
docs: add mtoohey31 as a contributor for code (#1684)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2025-02-28 04:05:54 -05:00
Matthew Toohey
f8cfd962f3
fix: prevent graph lines from showing up behind legend (#1683)
* fix: prevent graph lines from showing up behind legend

* use cell_mut instead
2025-02-28 09:00:08 +00:00
Clement Tsang
d2177ed022
refactor: don't duplicate AMD GPU temperature retrieval (#1682)
* some file/struct renaming

* refactor: don't get AMD gpu temperatures twice
2025-02-23 06:21:12 +00:00
Clement Tsang
f7d070f944
refactor: somewhat migrate to Rust 2024 edition (#1681)
* refactor: try bumping to rust 2024 edition

* now run nightly fmt

* fix some macos changes

* only apply a few of these settings
2025-02-22 02:12:08 +00:00
Clement Tsang
9999a4824a
docs: update documentation around how grouping processes and tree mode are incompatible (#1679)
* update default config

* use info, not note
2025-02-21 11:04:08 +00:00
Clement Tsang
393c24d303
docs: bump mkdocs-material to 9.6.5 (#1680) 2025-02-21 05:49:13 -05:00
Clement Tsang
d63ca07cae
refactor: clean up some file structure, process code, and terminal cleanup (#1676)
* 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
2025-02-15 02:32:09 -05:00
allcontributors[bot]
2b5441ca8b
docs: add SigmaSquadron as a contributor for doc (#1675)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2025-02-13 13:25:57 -05:00
Fernando Rodrigues
7f98651541
docs: update Nix install instructions (#1674)
This commit contains the following changes:
1. Corrects the source of the package in the Nix instructions: `bottom` isn't coming from `nix-community`, but Nixpkgs itself.
2. Updates the Nix install instructions to use the new Nix CLI.
3. The original link was pointing to a home-manager module for bottom. We now include instructions on how to enable said module.
2025-02-13 13:25:45 -05:00
Clement Tsang
702775f58d
refactor: use nonzero in mem data (#1673)
* refactor: use nonzerou64 for mem data

* clippy

* comment
2025-02-12 05:58:15 +00:00
Justin Martin
22fbd7d630
other: return None when mem_total is zero (#1667) 2025-02-07 19:02:07 -05:00
Clement Tsang
ec1a4cb7e5
refactor: move conversion code to utils (#1671) 2025-02-07 01:54:03 +00:00
Clement Tsang
a82d8578cf
fix/other: fix bug with network y-axis labels and cache height calculations (#1670)
* test

* implement network height calc caching
2025-02-06 20:29:06 -05:00
Clement Tsang
8ac03b5962
other: don't collect time series data in basic mode (#1669)
Ideally I also introduce a way to ensure basic mode widgets straight up
cannot accidentally access ts data, but this works for now.
2025-02-06 19:21:18 -05:00
Clement Tsang
43a4a36429
pkg: add completion files to winget/msi installer (#1666)
* pkg: add completion files to winget/msi installer

* hmmm

* hmmmm

* oh lol
2025-02-04 06:43:21 +00:00
Clement Tsang
f3a2067a78
docs: mention conda as an install option (#1665) 2025-02-03 19:20:23 -05:00
Clement Tsang
d6ad688ab8
refactor: use cow for disk widget io read/write strings (#1664) 2025-02-03 06:48:12 +00:00
Clement Tsang
837e23560f
refactor: points rework (v1) (#1663)
* 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
2025-02-03 06:34:58 +00:00
allcontributors[bot]
0aae119cfa
docs: add fgimian as a contributor for code, and doc (#1662)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2025-01-18 15:28:43 -05:00
Fotis Gimian
cf91c73b60
feature: make it possible to override generate dirs via env (#1658) 2025-01-18 15:27:24 -05:00
Clement Tsang
1edd8d81ed
deps: bump Cargo.toml and Cargo.lock dependencies (#1659)
* deps: bump dependencies

* update lockfile dependencies
2025-01-18 03:23:06 +00:00
Clement Tsang
c970037546
bug: handle terminal cleanup if main.rs panics from an Err (#1660)
* bug: handle terminal cleanup if main.rs panics from an Err

* add comment

* changelog
2025-01-18 02:43:58 +00:00
Clement Tsang
873434b4b7
other: fix non-applicable warning about regex creation in loop (#1661) 2025-01-18 02:30:00 +00:00
Clement Tsang
c9ffc41e51
deps: bump dependencies (#1656) 2025-01-07 00:44:48 -05:00
allcontributors[bot]
ee360f9391
docs: add al42and as a contributor for code (#1657)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2025-01-06 23:36:30 -05:00
Andrey Alekseenko
915c25a50e
other: handle systems with only libnvidia-ml.so.1 (#1655)
Recently, NVIDIA CUDA repository packages started shipping only
`libnvidia-ml.so.1` file, without `libnvidia-ml.so`. The upstream
`nvml-wrapper` package has a fix proposed
(https://github.com/Cldfire/nvml-wrapper/pull/63), yet the package is
in search of a maintainer at the moment.

To allow `bottom` to correctly detect NVIDIA GPUs on Ubuntu with
official NVIDIA packages, add a wrapper around `Nvml::init` to be more
persistent in its search for the NVML library.
2025-01-06 23:36:20 -05:00
Clement Tsang
dbda1ee56f
refactor: more data conversion cleanup (#1653)
* clean up some battery stuff

* dedupe battery from data conversion

* idk why we had a Value type alias

* clean up dupe load avg, and remove memory use percent from memharvest

* hmm

* nvm
2024-12-24 15:54:41 -05:00
Clement Tsang
cd6c60c054
refactor: remove battery conversion step (#1652)
* refactor: remove battery conversion step

* also fix a bug with margins in battery

* fixes
2024-12-22 22:54:19 -05:00
allcontributors[bot]
4a4d53dafb
docs: add Wateir as a contributor for doc (#1651)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2024-12-22 14:51:59 -05:00
Wateir
d738790c7a
Update README.md (#1650)
Avoid using sudo for AUR helper
2024-12-22 14:51:48 -05:00
Clement Tsang
603d8fe698
deps: bump lockfile as of 2024-12-20 (#1649) 2024-12-20 08:29:13 +00:00
Clement Tsang
3ca753f4b9
deps: bump root deps as of 2024-12-20 (#1648)
* deps: bump root deps as of 2024-12-20

* remove deprecated code
2024-12-20 03:17:27 -05:00
Clement Tsang
35662fc3c0
docs: update changelog for #1641 (#1647) 2024-12-20 08:02:23 +00:00
allcontributors[bot]
ccdf0b402b
docs: add yretenai as a contributor for code (#1646)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2024-12-20 02:48:47 -05:00
Ada Ahmed
479276bd53
feature: Support AMDGPU Data Collection (#1641)
* gpu: support amdgpu tracking

Co-authored-by: lvxnull2 <184518908+lvxnull2@users.noreply.github.com>

* gpu: dependency-free amdgpu parsing

gpu: fix clippy issues

Co-authored-by: lvxnull2 <184518908+lvxnull2@users.noreply.github.com>

* gpu: change memory usage percentage to be scaled to total memory instead of current memory usage

gpu: requested syntax changes

Co-authored-by: lvxnull2 <184518908+lvxnull2@users.noreply.github.com>

---------

Co-authored-by: lvxnull2 <184518908+lvxnull2@users.noreply.github.com>
2024-12-20 02:48:32 -05:00
Clement Tsang
797179b3dc
docs: update changelog for #1642 (#1644) 2024-12-05 23:55:25 +00:00
Clement Tsang
0d182e4b3a
feature: support custom widget borders (#1642)
* 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
2024-12-05 06:52:55 +00:00
Clement Tsang
1fe17ddc21
ci: migrate FreeBSD release builds to GHA, update macOS and FreeBSD targets (#1640)
* ci: migrate FreeBSD release builds to GHA

* fix

* ci: bump macOS image from macos-12

* fix

* fix for nightly
2024-11-29 17:41:35 -05:00
Clement Tsang
70d0a6cbf7
ci: update jsonschema to 0.26.1 for schema validation (#1637)
* ci: update jsonschema to 0.26.1 for schema validation

* make sure to rerun schema validation
2024-11-29 20:29:30 +00:00
Clement Tsang
3597e0a9fd
ci: remove unused ci packaging script (#1639) 2024-11-29 20:27:37 +00:00
Clement Tsang
8f8c467f8b
docs: bump docs requirements.txt (#1638) 2024-11-29 20:19:04 +00:00
Clement Tsang
5b1163d29b
ci: clean up CI, update python action + version (#1636)
* ci: clean up CI

* bump python action, also version to 3.12
2024-11-29 20:16:43 +00:00
Clement Tsang
bc3032cf10
bug: fix incorrect versions in schemas (#1635) 2024-11-29 04:30:23 +00:00
Clement Tsang
ae0d350122
refactor: a bunch of cleanup of dead code and misc. stuff (#1634)
* 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
2024-11-28 22:42:17 +00:00
Clement Tsang
182c718d0e
bug: fix incorrect colours for gruvbox-light (#1633) 2024-11-28 19:27:15 +00:00
Clement Tsang
991cc3eed8
refactor: clean up some clippy lints from 1.83 (#1632) 2024-11-28 19:16:15 +00:00
Clement Tsang
24cb8a417c
refactor: move schema generation to its own binary, go back to lib-bin (#1630)
* refactor: separate schema generation to its own binary, go back to lib-bin setup

Decided it might be nicer to separate the schema generation bit to its
own binary. This does mean that we have to go back to the lib-bin
system, as otherwise passing shared code is _really_ hard.

* handle versioning

* run fmt
2024-11-28 08:05:25 +00:00
Clement Tsang
196d6d18c6
feature: add the ability to configure the disk widget's table columns (#1625)
* a bit of refactoring here...

* some refactoring, add columns

* cleanup

* add disk column feature

* update changelog
2024-11-18 02:28:20 +00:00
Clement Tsang
c8cba49463
other: add missing process column comment/schema description (#1623)
* add todo

* rerun schema
2024-11-14 10:34:05 +00:00
Clement Tsang
6d37d5756f
refactor: combine process column code (#1622)
* rename some files

* refactor: combine process column code

* rename some and sort the schema columns
2024-11-14 10:24:24 +00:00
Clement Tsang
103c4f6ab4
deps: bump various dependencies (#1621)
Bumps various dependencies, including ratatui
2024-11-14 09:23:07 +00:00
Clement Tsang
02b947dd2d
refactor: quick variable/struct/file rename (#1620)
Some renames and file movement. No functional changes.
2024-11-08 04:54:52 +00:00
Clement Tsang
ae14685913
refactor: clean up some unused serde code (#1619) 2024-11-08 04:13:07 +00:00
Clement Tsang
16a2fd6a41
deps: bump to ratatui 0.28 (#1618)
* deps: bump ratatui to 0.28, and crossterm to 0.28

* fix warnings
2024-11-03 16:11:00 +00:00
Clement Tsang
dc378ebd42
github: update bug report template around filesystem type (#1617) 2024-11-03 15:41:35 +00:00
Clement Tsang
4f92ffc1cc
deps: bump lock and some root deps (#1616) 2024-11-03 10:37:02 -05:00
Clement Tsang
776f8cb3d3
refactor: bump 'msrv' to 1.81 and update deprecated code (#1615)
* refactor: ignore warning for deprecated panic hook from Rust 1.82.0

* refactor: bump 'msrv' to 1.81 and update deprecated code

* some more cleanup

* even more cleanup
2024-11-01 17:51:12 +00:00
Clement Tsang
f2e329b00a
docs: bump docs requirements.txt (#1609) 2024-10-16 00:25:43 +00:00
Clement Tsang
76fb7598e9
deps: bump lockfile deps (#1608)
* deps: bump lockfile deps

* left one
2024-10-15 02:03:13 +00:00
Clement Tsang
318ed9fd6f
deps: bump starship-battery to 0.10.0 (#1607) 2024-10-14 21:53:44 -04:00
Clement Tsang
4189ae0935
deps: bump a few root deps (#1606) 2024-10-15 01:00:57 +00:00
Clement Tsang
ca6ee28fb1
ci: fix nightly job not skipping if no change (#1601) 2024-09-21 02:09:16 -04:00
Clement Tsang
5b3803f905
docs: update changelog for #1596 (#1599) 2024-09-16 05:38:21 +00:00
allcontributors[bot]
d8a83cdf90
docs: add llc0930 as a contributor for code (#1597)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2024-09-13 14:39:31 -04:00
llc0930
fe25055cc1
bug: fix support for nilfs2 file system (#1596)
Fix the problem that the nilfs2 file system partition is not displayed in the disk list.
2024-09-13 14:39:20 -04:00
Clement Tsang
4e47f9b51a
bug: fix incorrect default config definitions for chart legends (#1594)
I had changed how this was parsed in-code but I forgot to update the default configs. This also adds some e2e tests to hopefully catch this all for real in the future, since the schema ones don't catch this stuff and the constants test doesn't actually run the binary for a proper e2e test.
2024-09-12 09:51:23 +00:00
Clement Tsang
3edf430908
bug: fix using 'none' for chart legend position in configs (#1593)
* bug: fix using 'none' for legend position in configs

* forgot memory oops

* update changelog
2024-09-12 05:23:20 -04:00
allcontributors[bot]
eaa56238be
docs: add jasongwartz as a contributor for doc (#1589)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2024-09-09 10:16:18 -04:00
Jason Gwartz
35a7eca134
docs: Update demo caption from "--color" to "--theme" (#1588)
As per [the changelog](d20dc49c95/CHANGELOG.md (L90)), `--color` was replaced by `--theme`. This updates the screenshot comment in the README to reflect this change.
2024-09-09 10:16:09 -04:00
Clement Tsang
d20dc49c95
deps: bump a few root deps (#1587) 2024-09-09 02:24:51 +00:00
Clement Tsang
7678c46f42
docs: update README (#1585)
* docs: update README

* also fix ci if
2024-09-06 02:15:00 +00:00
Clement Tsang
2e5000e399
ci: merge mock + init job in nightly (#1584)
* ci: merge mock + init job in nightly

* also slightly bump timeout as a safeguard
2024-09-04 22:56:48 -04:00
Clement Tsang
6c42770b5e
ci: fix a few actions (#1583)
A few small things:

- Tweak timeouts
- Disable audit workflow as codecov mostly handles it now
- Fix mock check in nightly
2024-09-05 02:08:01 +00:00
Clement Tsang
c9a99886a5
deps: bump a few root deps as of 2024-09-03 (#1582)
* deps: bump a few root deps as of 2024-09-03

I didn't touch the TUI ones (crossterm, ratatui) or sysinfo for now.

* also run cargo update
2024-09-03 21:58:34 -04:00
Clement Tsang
97358d09c3
ci: fix CI pass check conditions (#1581)
* ci: fix CI pass check conditions

* also disable test because it's borked for some things
2024-09-03 23:58:07 +00:00
Clement Tsang
78879fc068
docs: update changelog (#1580) 2024-09-03 19:46:28 -04:00
Clement Tsang
1a715206be
ci: try using GHA instead of Cirrus for FreeBSD in basic CI (#1577)
Ideally we minimize our usage of Cirrus CI, especially for typical PR CI workflows, since it's a bit cludgy to work with. This method is also more extendable to things like OpenBSD.

Fine for deploys I guess since that's not super frequent and at this point I have that working fairly well when automated + I don't usually have to wait for it.
2024-09-03 08:33:13 +00:00
allcontributors[bot]
21a09fd6bc
docs: add stephen-huan as a contributor for code (#1579)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2024-09-03 03:27:26 -04:00
Stephen Huan
7c35def686
fix: selected text bg in default-light theme (#1578) 2024-09-03 03:27:03 -04:00
Clement Tsang
c63574dc78
deps: bump some CI actions as of 2024-09-01 (#1576)
* deps: bump some CI actions as of 2024-09-01

* missed one
2024-09-01 21:23:07 -04:00
Clement Tsang
2c03525945
other: regenerate the sample default config to match 0.10.2 (#1573)
The default sample config was outdated.
2024-08-27 18:10:31 -04:00
Clement Tsang
a095e67179
change: default config location on macOS considers XDG config var (#1570)
Actually support $XDG_CONFIG_HOME on macOS. Apparently in our docs we also say we do, but we, uh, don't, because dirs doesn't.

Note this is backwards-compatible, in that if a config file exists in the old default locations, we will check those first.
2024-08-22 01:00:55 +00:00
allcontributors[bot]
bb6a996c42
docs: add woodsb02 as a contributor for doc (#1567)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2024-08-19 10:56:58 -04:00
Ben Woods
74ae124fcc
docs: Add Terra installation instructions (#1566)
* README.md: Add Terra RPM repo instructions

* update some wording

---------

Co-authored-by: Clement Tsang <34804052+ClementTsang@users.noreply.github.com>
2024-08-19 10:56:47 -04:00
Zeb Piasecki
cbe27997bd
fix: add extra row for basic cpu widget if using avg row on cores % 4 != 0 (#1565) 2024-08-19 10:51:03 -04:00
Clement Tsang
5a009987ac
docs: update docs around disable_gpu change. (#1562)
* docs: update changelog

* update docs
2024-08-14 20:27:32 -04:00
shurizzle
6b0a285541
refactor: rename flags.enable_gpu to flags.disable_gpu (false by default) (#1559)
Co-authored-by: shurizzle <me@shurizzle.dev>
2024-08-14 18:22:47 -04:00
Clement Tsang
1f011bd918
docs: update doc about mkdocs, changelog, and versioning (#1561)
* docs: update doc about mkdocs

* docs: more readme docs wording

* add some details about versioning
2024-08-13 22:44:32 -04:00
Clement Tsang
277a30bca5
docs: update changelog to mention the change to enable_gpu (#1560) 2024-08-13 22:31:41 -04:00
Clement Tsang
d9d9e1df9f
other: show N/A for Nvidia GPUs if we detect one but can't get temps (#1557)
* other: show N/A for Nvidia GPUs if we detect one but can't get the temperature

* refactor: driveby refactor of filter system and code for temp

* missed one
2024-08-11 17:20:07 -04:00
Clement Tsang
c65121c43a
refactor: clean up some config and panic code (#1556)
* clean up some code

* refactor cancellation system to a separate cancellation token struct and clean up panic code
2024-08-11 02:04:44 -04:00
Clement Tsang
96ed26d87a
other: add another test to validate default config (#1553)
* update changelog

* add another lib test to make sure valid integration configs are actually valid

* only test these on default config

* clippy

* add extra CI fail check

* fix windows
2024-08-08 04:44:48 -04:00
Clement Tsang
cf47cb9fae
other: add test to make sure default config is valid (#1552) 2024-08-08 01:36:42 +00:00
Frederick Zhang
4c8367225a
fix: missing parent section names in TOML (#1551) 2024-08-07 12:59:44 -04:00
Clement Tsang
218d1899fc
docs: fix Debian package links (#1550)
Fixes .deb package links in examples.
2024-08-06 11:17:42 -04:00
Clement Tsang
537a67152f
docs: fix all-contributors chart alignment (#1548) 2024-08-06 00:33:01 -04:00
Clement Tsang
53079c698a
docs: fix dupe in all-contributors chart (#1547) 2024-08-06 00:32:01 -04:00
Clement Tsang
2ec1fb56c9
uptick: 0.10.2 (#1544) 2024-08-05 20:28:17 -04:00
Clement Tsang
32f64f4d52
bug: fix occasionally wrong run time reported by sysinfo (#1542)
* bug: fix occasionally wrong runtime reported by sysinfo

Seems like on other platforms, sysinfo will sometimes report a run time
that starts from UNIX epoch - this gives a non-sensical value of 19000+
days, and it at least looks a little more reasonable to just return 0 in
this case. I guess we can also make it return N/A in the future but this
is a quick fix for now.

* update changelog
2024-08-05 20:15:22 -04:00
Clement Tsang
39672853e2
ci: bump codecov action to v4.5.0 (#1546) 2024-08-05 19:12:21 -04:00
Clement Tsang
b5b36f7c73
docs: update docs and requirements as of 2024-08-05 (#1545) 2024-08-05 19:03:18 -04:00
Clement Tsang
feb0c6912c
bug: fix default_cpu_entry arg not being used and missing from docs (#1543) 2024-08-05 18:55:05 -04:00
Clement Tsang
9f7e00497d
bug: fix not updating sysinfo processes correctly (#1541)
* bug: fix not updating sysinfo processes correctly

* also fix a potential panic spot on slow computers

* update changelog
2024-08-05 18:38:36 -04:00
Clement Tsang
d27790d6fa
docs: fix alphabetical ordering of the linux install docs (#1537)
Switch solus and snap.
2024-08-04 03:57:15 -04:00
Clement Tsang
64627629a3
docs: update some of the installation docs (#1536)
Just updating the wording for some of the installation docs.
2024-08-04 03:55:16 -04:00
Clement Tsang
1c5705a745
docs: fix incorrect link in all-contributors (#1535) 2024-08-03 01:17:04 -04:00
Clement Tsang
b6c3b54f02
docs: update changelog (#1534) 2024-08-03 05:12:35 +00:00
Zeb Piasecki
d6c2ef3e22
feat: add option to move avg CPU to another row (#1487)
Adds an `average_cpu_row` option to move the average CPU usage to its own row
when using basic mode.
2024-08-03 01:10:36 -04:00
Clement Tsang
9379c03595
ci: bump installed tools from cargo (#1532) 2024-08-02 01:09:54 -04:00
Clement Tsang
b58d982a31
ci: some more cirrus release tweaks (#1531)
* ci: better cirrus release

* add cancellation

* limit number of concurrent cargo jobs

* update test skip, clean up, clean tasks
2024-08-02 00:49:53 -04:00
Clement Tsang
eaff5d009a
ci: clean up cirrus CI (#1530)
* ci: try adding auto cancellation back to cirrus tasks

* tweak timeout

* some renaming

* modernizing

* Revert "modernizing"

This reverts commit d66b3aa0e999140ced08e523214751f7572d4306.

* hmmm

* bleh back to false
2024-08-01 19:52:11 -04:00
Clement Tsang
8811d54058
other: delete v1.0 schema directory (#1529)
I've already migrated the schema in schemastore to follow the new system of matching versions with bottom's version.
2024-08-01 16:38:09 +00:00
Clement Tsang
2f102bc1aa
uptick: 0.10.1 (#1527) 2024-08-01 15:56:39 +00:00
Clement Tsang
5b68b6ee81
other: add test to catch issues with incorrect long arg names (#1528) 2024-08-01 15:45:24 +00:00
Clement Tsang
03e69b3be0
bug: fix using clap macro incorrectly, causing broken long help name (#1526)
Basically, I did:

```
long = "blah blah blah"
```

but it should have been:

```
long,
long_help = "blah blah blah"
```

The former makes the _long help flag_ the description which... well,
isn't right.
2024-08-01 15:21:09 +00:00
Clement Tsang
9364955bcd
docs: fix invalid flag in docs (#1523)
The docs set the colour theme as a config flag, but we moved colours to styles.theme so that's invalid.
2024-08-01 11:03:14 -04:00
Clement Tsang
163a8dc74a
docs: update changelog (#1524) 2024-08-01 11:03:01 -04:00
Clement Tsang
ea46613c58
ci: bump winget-releaser (#1522) 2024-08-01 15:00:10 +00:00
Clement Tsang
8afae3fbe8
uptick: 0.10.0 (#1510)
* uptick: 0.10.0

* docs: fix changelog

* bump lockfile

* match clap

* add/update schema

* add note
2024-08-01 02:45:57 -04:00
Clement Tsang
a6e1ea3bd8
docs: update docs on filter (#1519)
Updates some outdated docs on filtering, and adds some tests as well. In particular, this also adds a cfg_attr on tests to try and catch unknown fields; we'll be more lenient in prod builds though and allow them.
2024-07-31 06:41:30 +00:00
Clement Tsang
2c0fb2a723
other: clarify config file creation logic/code (#1518) 2024-07-31 05:33:32 +00:00
Clement Tsang
38c6e70c1e
docs: update changelog (#1517) 2024-07-31 01:22:42 -04:00
allcontributors[bot]
b9c42265fd
docs: add CosmicHorrorDev as a contributor for code (#1516)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2024-07-31 00:36:31 -04:00
CosmicHorror
8f995f80e4
other: Add the config path to the error message if unable to create config (#1515) 2024-07-31 00:36:12 -04:00
Clement Tsang
4b14ccb56b
feature: support italic text styling (#1514)
Support italics as a text styling option.
2024-07-31 01:54:26 +00:00
Clement Tsang
c77256eaaf
change: make table headers bold by default (#1513)
* change: make table headers bold by default

* changelog
2024-07-31 00:37:38 +00:00
Clement Tsang
08a7b8b860
feature: support bold text (#1512)
* feature: support bold text

* add changelog

* more testing
2024-07-30 07:43:57 +00:00
Clement Tsang
f091ebdc6a
feature: support simple colour settings for text fields too (#1511)
* feature: support simple colour settings for text fields too

* also add 'color' back to some options

* tests
2024-07-30 07:15:23 +00:00
Clement Tsang
95905d7a2b
docs: add the binary name to the title again (#1508)
Let's hope this doesn't lead to more issues where people try installing the wrong package though... sigh.
2024-07-29 19:14:46 -04:00
Clement Tsang
449d8b4315
ci: update and fix schema validation script (#1509)
* ci: update and fix schema validation script

* fix issue with tomllib.load
2024-07-29 19:11:40 -04:00
Clement Tsang
28972a1e64
refactor: refactor styling options (#1499)
Introduce a new configuration system for styling.
2024-07-29 09:03:35 +00:00
Clement Tsang
e4eb69dbd5
deps: bump deps as of 2024-07-027 (#1507)
* deps: bump root deps as of 2024-07-027

* bump lockfile
2024-07-27 01:39:22 -04:00
Clement Tsang
1208c459e4
refactor: remove time as a dependency outside of logging (#1506)
I was mostly just using the time crate for local log debugging and just to avoid converting seconds to h/m/s.

This PR makes it so we are only using it for local log debugging.
2024-07-26 05:12:29 +00:00
Clement Tsang
c2d3ab5591
uptick: 0.9.7 (#1505)
* docs: update changelog with 0.9.7 hotfix

* Update bottom.desktop

* uptick: 0.9.7
2024-07-26 00:45:22 -04:00
Clement Tsang
e37b159fae
other: remove toolchain, clean up CI (#1504) 2024-07-26 00:23:06 -04:00
Clement Tsang
01c0c33451
other: include a toolchain file from now on (#1503) 2024-07-26 01:02:54 +00:00
Clement Tsang
a794cc5123
refactor: run clippy after updating to Rust 1.80 (#1502) 2024-07-26 00:44:38 +00:00
Clement Tsang
29029b86fb
refactor: remove BottomError (#1498)
* refactor: remove BottomError

* remove thiserror

* some cleanup

* forgot to remove this
2024-07-22 07:30:03 +00:00
Clement Tsang
0401f527e5
refactor: migrate data collection and some others away from BottomError (#1497) 2024-07-22 04:52:38 +00:00
Clement Tsang
c56e28328e
refactor: convert more errors over (#1496)
* refactor: remove From<String> for BottomError

* fix kill_process
2024-07-19 23:52:13 -04:00
Clement Tsang
1ec4ca3f06
refactor: out with arg/config error, and make user messages more consistent (#1494)
* refactor: out with arg/config error, and make user messages more consistent

* finish up

* fix all the tests
2024-07-19 06:51:50 +00:00
Clement Tsang
d97d75f797
refactor: clean up conversion and crossterm errors (#1493)
* refactor: clean up conversion errors

* refactor: remove crossterm error
2024-07-14 08:01:44 +00:00
Clement Tsang
571a801bf8
refactor: error refactoring, part 1 (#1492)
* refactor: use anyhow for logging

* refactor: clean up query errors

* also remove tryparseint
2024-07-13 05:35:09 +00:00
Clement Tsang
df569b2319
deps: bump deps as of 2024-07-03 (#1490)
* deps: bump root deps as of 2024-07-03

* deps: bump Cargo.lock as well
2024-07-04 04:50:05 -04:00
Clement Tsang
28416ddb57
deps: bump root + lock deps as of 2024-06-27 (#1488)
* deps: bump root deps as of 2024-06-27

* deps: bump lock as well

* also bump unicode_ellipsis
2024-06-27 23:40:05 -04:00
Clement Tsang
615ae1a3a8
deps: bump root deps and lockfile as of 2024-06-19 (#1486)
* deps: bump deps as of 2024-06-19

* bump lock as well

* fmt
2024-06-19 14:04:51 -04:00
Clement Tsang
3602429529
other: add schema test for uncommented default config (#1484)
* other: add schema test for uncommented default time

* ahhh

* forgot to disable this
2024-06-17 00:59:36 -04:00
Clement Tsang
7666a09162
feat: add way to automatically generate new json schemas (#1482) 2024-06-16 19:28:24 -04:00
Clement Tsang
982b7181a6
change: change how disk, temp, and net filters in config are set (#1481)
* change: change how disk, temp, and net filters in config are set

* run rustfmt

* update default config
2024-06-16 02:15:36 -04:00
Clement Tsang
46520d8b4e
uptick: 0.10.0 (#1479)
Note that I'm not releasing 0.10.0 _yet_, will do so after a few more
changes are done.
2024-06-06 22:06:53 -04:00
Clement Tsang
8885910442
refactor: remove lib and move some things around (#1477)
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.
2024-06-05 06:00:21 +00:00
Clement Tsang
7aa379aabf
bug: fix -V not working and causing Cirrus CI to fail (#1478)
* bug: fix -V not working and causing Cirrus CI to fail

* add comment

* update workflows and fix tests
2024-06-05 01:12:00 -04:00
Clement Tsang
ee2e1fee1c
refactor: use struct for args instead of builder interface (#1472)
* start moving args

* tmp

* refactor config

* port over ags

* update changelog
2024-05-27 01:16:37 -04:00
Clement Tsang
71f6136a1e
deps: update deps as of 2024-05-26 (#1473)
* deps: update sysinfo to 0.30.12

* update some other dependencies
2024-05-26 23:39:54 -04:00
Clement Tsang
c61de8f09c
ci: bump rust-cache and rust-toolchain (#1471) 2024-05-26 06:29:46 -04:00
Clement Tsang
cce835b752
Run cargo wix init (#1468)
* ci: run cargo wix init

* remove wix init call
2024-05-11 21:18:09 -04:00
Clement Tsang
a15ef63669
ci: bump cargo-deb to 2.2.0 (#1466) 2024-05-08 20:48:50 -04:00
Clement Tsang
073ca890f7
refactor: extract unicode-ellipsis into its own crate (#1465)
* refactor: extract unicode-ellipsis into its own crate

* 0.1.4
2024-05-07 22:53:51 -04:00
Clement Tsang
d515c03ec7
ci: forgot to add if statement for nightly skip check (#1464) 2024-05-07 02:13:11 -04:00
Clement Tsang
398bf5930f
refactor: some string-related code cleanup/refactor (#1463)
* 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
2024-05-07 02:03:30 -04:00
Clement Tsang
bcc89170a6
ci: add skip for nightly build (#1462) 2024-05-05 20:42:32 -04:00
allcontributors[bot]
6136ac8e76
docs: add TheSkyentist as a contributor for code (#1461)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2024-05-05 18:11:12 +00:00
Raphael Erik Hviding
3ded6a6529
bug: fix battery table when hiding gaps (#1458)
This changes the behavior of the battery widget when paired with the skip_table_gap.
2024-05-05 18:11:02 +00:00
Clement Tsang
d53725bbfc
ci: try attestations for binaries (#1455)
* ci: try attestations for binaries

* add additional attestation steps
2024-05-03 11:37:16 -04:00
Clement Tsang
2b819a3097
other: comment out some dead code (#1456) 2024-05-02 15:19:44 -04:00
allcontributors[bot]
25fb319736
docs: add MichalBryxi as a contributor for doc (#1453)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2024-04-30 11:13:35 -04:00
Michal Bryxí
e4f3b6911a
docs: Which table goes "flags" under? (#1452)
- There is currently no indication under which [table](https://toml.io/en/v1.0.0#table) do "flags" go in the config file.
- I think having that being explicitly spelled out & having an example saves quite a bit of people's time. Would for me 🙃
2024-04-30 11:13:23 -04:00
Clement Tsang
15ed197d03
deps: bump lock deps as of 2024-04-28 (#1451) 2024-04-28 15:48:41 -04:00
Clement Tsang
6591b750f6
deps: bump deps as of 2024-04-28 (#1450)
* deps: bump deps as of 2024-04-28

* fix tests

* extra test
2024-04-28 15:27:33 -04:00
Clement Tsang
f23233e824
docs: update some docs about install methods (#1446) 2024-04-13 18:26:33 -04:00
Clement Tsang
53a01ad874
deps: bump clap-related dependencies, increase unofficial msrv to 1.74 (#1445) 2024-04-11 01:53:36 -04:00
Clement Tsang
aa3f80bcfa
deps: bump dependencies as of 2024-04-10, including sysinfo 0.30.10 (#1444) 2024-04-11 01:39:04 -04:00
Clement Tsang
a16793e3aa
docs: sort some install methods (#1443) 2024-04-10 20:51:16 -04:00
Clement Tsang
93d6718766
other: update a bunch of argument descriptions and some arg/config names (#1441)
* other: update a bunch of argument descriptions and some arg/config names

* update docs

* changelog
2024-04-10 20:46:35 -04:00
allcontributors[bot]
bb0bc8a0b0
docs: add davlgd as a contributor for doc (#1442)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2024-04-10 19:34:01 -04:00
David Legrand
7f92eb76e6
docs: add install instructions to Exherbo Linux in README.md (#1440) 2024-04-10 19:33:42 -04:00
Clement Tsang
d341dbb39b
docs: update changelog for #1436 and #1430 (#1439) 2024-04-02 01:23:01 -04:00
allcontributors[bot]
6c608144aa
docs: add lyuha as a contributor for code, and doc (#1438)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2024-04-02 01:06:13 -04:00
Lee Wonjoon
a083ec00dd
feature: Add option to set a position of legend (#1430)
* Add option to set a position of legend

* some small changes

---------

Co-authored-by: ClementTsang <34804052+ClementTsang@users.noreply.github.com>
2024-04-02 01:06:01 -04:00
Clement Tsang
2ee0df1502
change: use sysinfo's swap value for Windows (#1436)
* some consts

* change: use sysinfo's swap calculation for windows

I'll add an additional field for committed in a separate PR which shows
the previous value.
2024-03-27 22:24:14 -04:00
Clement Tsang
c651e9a904
deps: bump dependencies as of 2024-03-23 (#1431) 2024-03-23 02:33:15 -04:00
Clement Tsang
2238d49c6c
docs: bump deps as of 2024-03-23 (#1432) 2024-03-23 02:31:13 -04:00
Clement Tsang
8919ae37d7
ci: bump action-gh-release to 2.0.1 (#1426)
Update resolves Node deprecation warnings from GHA.
2024-03-09 22:24:14 -05:00
Clement Tsang
32e04778dd
ci: bump cargo-deb version to 2.1.0 (#1424) 2024-03-09 14:23:59 -05:00
Clement Tsang
f70aff89dc
deps: bump sysinfo to =0.30.7 (#1425) 2024-03-09 13:34:56 -05:00
Clement Tsang
92501d758c
deps: downgrade clap and run cargo update to build on 1.70 (#1423)
bottom doesn't have an MSRV, but if we can still build on older versions
of Rust then I'm all for it. The updated clap versions didn't bring
anything interesting so there's no real issue for me to downgrade IMO.
2024-03-04 22:58:15 -05:00
Clement Tsang
26162c0414
deps: bump root dependencies as of 2024-03-04 (#1422) 2024-03-04 19:57:15 -05:00
Clement Tsang
7ea72cc814
deps: bump sysinfo to 0.30.6 (#1420) 2024-03-04 19:23:13 -05:00
dependabot[bot]
973be9103b
chore(deps): bump mio from 0.8.10 to 0.8.11 (#1421)
Bumps [mio](https://github.com/tokio-rs/mio) from 0.8.10 to 0.8.11.
- [Release notes](https://github.com/tokio-rs/mio/releases)
- [Changelog](https://github.com/tokio-rs/mio/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/mio/compare/v0.8.10...v0.8.11)

---
updated-dependencies:
- dependency-name: mio
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-04 17:11:52 -05:00
Clement Tsang
e1daa63a86
ci: migrate macOS ARM builds to use GHA (#1419)
* ci: migrate macOS ARM builds to use GHA

M1 macOS runners are now available on GHA, so we can use it instead of
CirrusCI for builds/CI.

* bump freebsd
2024-03-03 01:17:14 -05:00
Clement Tsang
d604f72aac
ci: update sha for auto winget PR action (#1418) 2024-03-02 21:26:13 -05:00
Clement Tsang
73f1827a03
docs: actually fix numbering for Windows font troubleshooting guide (#1417) 2024-03-02 02:31:01 -05:00
Clement Tsang
8402ea285d
docs: fix numbering for Windows font troubleshooting guide (#1416) 2024-03-02 02:17:58 -05:00
Clement Tsang
d78428ac19
docs: some clarification (#1415) 2024-02-20 09:14:10 -05:00
allcontributors[bot]
e48f5e990a
docs: add john-s-lin as a contributor for doc (#1414)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2024-02-19 20:08:39 -05:00
john-s-lin
79969c76be
docs: fix broken link to config documentation in README (#1413) 2024-02-19 20:08:26 -05:00
Clement Tsang
cd1715cd8f
other: add process uptime as a default column (#1411)
* other: add process uptime as a default column

* update docs
2024-02-15 03:27:19 -05:00
Clement Tsang
3ee883420a
bug: fix uptime calculation for Linux (#1410)
* bug: fix uptime for linux

Use another calculation to determine the uptime of a process on
Linux.

* appease clippy

* changelog

* edit add
2024-02-15 03:01:45 -05:00
Clement Tsang
0068f8a744
deps: update lock dependencies (2024-02-14) (#1409) 2024-02-15 01:00:23 -05:00
Clement Tsang
16b6773652
deps: update root dependencies (2024-02-14) (#1408) 2024-02-15 00:01:47 -05:00
Clement Tsang
0b92679e16
other: add v1 schema + versioning + tests (#1407)
* other: add v1.0 schema

* add tests, rename some files for consistency
2024-02-04 06:26:24 -05:00
Clement Tsang
b6660610d0
deps: bump ratatui to 0.26 (#1406)
* deps: bump ratatui to 0.26

* adjust process width

* a few nonzero optimizations

* add a todo

* update comments to be less confusing about time chart
2024-02-03 19:59:12 -05:00
allcontributors[bot]
8d84b688b0
docs: add Freed-Wu as a contributor for code, and doc (#1404)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2024-02-02 02:24:38 -05:00
wzy
98d4c4498b
other: add json schema (#1382) (#1394)
* other: add json schema (#1382)

* docs: add some screenshots

* other: move around schema files

* docs: move around some docs around config files

---------

Co-authored-by: ClementTsang <34804052+ClementTsang@users.noreply.github.com>
2024-02-02 02:24:23 -05:00
Clement Tsang
59b7650999
ci: bump choco action to v3.0.0 and replace release deletion action (#1402)
* ci: bump choco action to v3.0.0 and replace release delete action with gh

* back to action since it isn't a git repo

* let's test if gh works fine if I pull repo
2024-01-28 19:37:31 -05:00
Clement Tsang
db9e97a0df
ci: update upload-artifact to v4.3.0 and download-artifact to v4.1.1 (#1399)
* ci: update upload-artifact to v4.3.0 and download-artifact to v4.1.1

* fix rpm/deb

* add exception for quay; idk what I'll do once node support is gone

* fix broken script

* fix download

* migrate 2-17 to cirrus to avoid node deprecation warnings

* prevent cirrus cancellation

* update cache to work with linux

* simplify cache

* update some comments

* add timeouts
2024-01-28 18:11:05 -05:00
Clement Tsang
a377e93ecc
ci: bump skip-duplicate-actions to v5.3.1 and setup-python to v5.0.0 (#1401)
* ci: bump skip-duplicate-actions to v5.3.1

* also bump setup-python to v5.0.0
2024-01-28 06:11:42 -05:00
Clement Tsang
0f61b7b176
ci: update cirrus-ci FreeBSD versions (#1400)
* ci: update cirrus-ci FreeBSD versions

Looks like the newest available FreeBSD images are 13-2 and 14-0, and
the previously used ones aren't available anymore.

* comment
2024-01-28 06:09:06 -05:00
Clement Tsang
e9125500af
ci: add an explicit timeout for jobs (#1398) 2024-01-28 05:23:17 -05:00
Clement Tsang
5cf17f6015
other: flatten process config struct and clean up help text (#1395)
* refactor: flatten process config field

* other: clean up some doc formatting using indoc and breaklines

* fix broken test

* remove default as that breaks things for now

* add test

* more tests
2024-01-21 05:47:13 -05:00
Clement Tsang
975e3d776b
refactor: move some files around in prep for a future options refactor (#1393)
* some formatting

* refactor: move some files around in prep for a bigger config/options refactor
2024-01-18 18:46:00 -05:00
Clement Tsang
be4fa27b84
refactor: convert layout creation tests back to being unit tests (#1392) 2024-01-16 23:47:05 -05:00
Clement Tsang
f07994ef68
deps: bump sysinfo to =0.30.5 (#1390)
* deps: bump sysinfo to =0.30.5

* fix an import

* fix stuff for linux

* fix temps

* some fmt

* disks

* oops

* fix some bugs
2024-01-15 20:43:14 -05:00
Clement Tsang
81e77c02a8
ci: add logic to retry codecov upload (#1391) 2024-01-15 15:40:14 -05:00
Clement Tsang
7be98344e9
ci: clean up some jobs in CI; bump Rust-related actions (#1388)
* ci: clean up some jobs in CI; bump Rust-related actions

* also update codecov

* rearrange

* comments
2024-01-15 06:01:04 -05:00
Clement Tsang
f760ce1080
deps: bump non-root dependencies as of 2024-01-15 (#1387)
* deps: bump non-root dependencies as of 2024-01-15

* also test 1.70 unofficial msrv
2024-01-15 05:06:24 -05:00
Clement Tsang
0a0c3c19b5
deps: bump dependencies as of 2024-01-15 (#1386) 2024-01-15 04:38:18 -05:00
Clement Tsang
dd66ae774c
refactor: simplify some config -> constraints code (#1383)
* refactor: simplify some config -> constraints code

* iteratively progress...

* update bcr; this might need testing since I removed some old proc code

* widget side

* fix battery

* fix widget tests with bandaid for now

The issue was that the calculations assume a certain ratio for CPU
legends.

* add some tests

* bump up

* fix proc drawing issues

So with the proc widget in certain places, there would be a panic during
constraint determination.

Looks like back when I wrote this I made some gross assumptions about
certain things. In particular, the problem here was that the search
added an additional "one" height, so that needs to be accounted for
after we removed the "doubling" code.

* tests

* fix tests

* reorganize tests

* clippy

* fix cross tests not working

* fix builds for android
2024-01-15 04:19:18 -05:00
ClementTsang
f093902aef
other: fix deploy profile 2024-01-11 23:39:17 -05:00
Clement Tsang
4246194634
docs: change code font and enable privacy (#1381) 2024-01-11 03:46:28 -05:00
Clement Tsang
16a94d65d2
add last revision date (#1380) 2024-01-11 03:20:35 -05:00
Clement Tsang
b106121a84
docs: bump mkdocs-material to 0.9.6 (#1379) 2024-01-11 02:42:50 -05:00
ClementTsang
7cd1c15714
docs: fix another incorrect heading 2024-01-11 02:30:03 -05:00
Clement Tsang
a3541c9350
docs: use consistent wording around command-line options (#1378)
* docs: use consistent wording around command-line options

* fix missing code blocks
2024-01-11 02:14:05 -05:00
Clement Tsang
bc2c363a49
refactor: clean up arg code more (#1377)
* fix sort function

* Try macros

* Revert "Try macros"

This reverts commit 93c7306f8ae8b906e0a66d1a4d758aad51efe3eb.

* use next_help_heading instead

* test

* Revert "test"

This reverts commit 017a1702b35dd7fd87c449e27a3bdb65bc858f72.

* Reapply "test"

This reverts commit 23c09d3828594d880ecf5e753e1fcdf5fd719e42.

* use foldl instead :)

* a word

* different conditionals

* update docs, change ordering

* more formatting stuff
2024-01-11 00:25:53 -05:00
Clement Tsang
6b62176554
refactor: rearrange/resort args (#1376)
* clean up Cargo.toml

* some small cleanup

* refactor: group together similar args in the help generation and code

This groups together related arguments in both the help text and the
code itself.

* update changelog

* clippy

* builder pattern instead
2024-01-10 19:07:22 -05:00
Clement Tsang
0f969fcfd4
refactor: clean up help drawing code (#1374)
* refactor: clean up the help drawing

* a bit cleaner

* add test

* some fmt
2024-01-08 02:35:32 -05:00
Thomas Mühlbacher
0c161ae77e
feature: Add support for bcachefs (#1373)
Make sure that bcachefs mounts are also displayed in the disks widget.
bcachefs is a file system that will be included in the upcoming Linux
v6.7 kernel. Briefly tested this and it works on my system.
2024-01-04 11:18:45 -05:00
Clement Tsang
77777ef588
refactor: clean up some more drawing/component code (#1372)
* rename battery info widget file

* add widget trait

* move basic table arrows over

* some renaming

* more renaming and shuffling

* cleanup

* fmt
2024-01-02 01:24:13 -05:00
Clement Tsang
c242b4aff3
refactor: move around some configuration code again (#1371) 2024-01-01 17:39:10 -05:00
Clement Tsang
228da99489
refactor: move around configuration-related files (#1370)
* rename general utils file

* refactor: move around some configuration files

* more shuffling around

* fix some ugly formatting
2024-01-01 17:20:40 -05:00
Clement Tsang
e71048e394
other: update lints (#1369)
I have `missing_docs` disabled for now as that'll take a long time to
get through... maybe in a separate PR.
2024-01-01 05:34:53 -05:00
Clement Tsang
ecb6faa089
refactor: restructure canvas file folder structure (#1368)
* 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
2024-01-01 05:19:52 -05:00
Clement Tsang
74792f0ddf
other: quick lint fixes for some warnings (#1367) 2023-12-30 23:28:44 -05:00
Clement Tsang
631f7208e4
deps: bump anyhow, clap, and thiserror (#1365) 2023-12-27 23:13:07 -05:00
Clement Tsang
22b40780ad
refactor: pull data collection out of nested folder structure (#1364)
* refactor: pull data collection out of nested folder structure

* fix sysinfo

* comment
2023-12-27 23:00:58 -05:00
Justin Martin
28d2950d92
deps: update ratatui version (#1362)
* cargo update ratatui

* replace convert_arc_labels with convert_mem_labels

* remove redundant generic

---------

Co-authored-by: Clement Tsang <34804052+ClementTsang@users.noreply.github.com>
2023-12-25 17:28:54 -05:00
Clement Tsang
c10779ecc0
refactor: fix macro formatting in disk data collection code (#1363) 2023-12-25 17:26:32 -05:00
Clement Tsang
a1168cac67
refactor: remove once_cell (#1361)
* refactor: remove once_cell

* some missing fixes
2023-12-23 04:35:42 -05:00
Clement Tsang
854f3aed95
refactor: some more cleanups around linux temp code (#1360) 2023-12-20 19:18:50 -05:00
Clement Tsang
a67da93c5f
other: if in a non-D0 state, short-circuit further logic (#1355)
* other: if in a non-D0 state, short-circuit further logic

* cleanup

* add back an empty name and value

* fix for macos/windows

* some testing things
2023-12-20 01:36:08 -05:00
Clement Tsang
004c83728d
docs: update changelog with #1353 (#1358) 2023-12-19 22:52:29 -05:00
dependabot[bot]
c6a3393419
chore(deps): bump zerocopy from 0.7.26 to 0.7.31 (#1357)
Bumps [zerocopy](https://github.com/google/zerocopy) from 0.7.26 to 0.7.31.
- [Release notes](https://github.com/google/zerocopy/releases)
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google/zerocopy/compare/v0.7.26...v0.7.31)

---
updated-dependencies:
- dependency-name: zerocopy
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-15 03:02:35 -05:00
Clement Tsang
b6f92c2f3d
feature: support default selection of average CPU graph (#1353)
* feature: support default selection of average CPU graph

* test
2023-12-10 15:21:35 -05:00
Clement Tsang
300f66700e
ci: downgrade to checkout v3 when building releases in non-GH containers (#1352) 2023-12-06 17:36:39 -05:00
Clement Tsang
dab4b6c483
other: master -> main (#1349)
* other: master -> main

I'm so used to using `main` branch now that it's actually kinda annoying
to use `master` for just this repo... so might as well rename it now.

* overzealous change

* wording

* some wording

* allow auto-cancel for tests if not main
2023-12-06 00:16:26 -05:00
Clement Tsang
bc6a8d7feb
github: update wording around filesystem section in issue template (#1348) 2023-12-05 21:42:11 -05:00
Clement Tsang
fab86e833a
other: add back local time in debug logs (#1346)
* other: add back local time in debug logs

This still has a UTC fallback.

* cleanup and some warnings
2023-12-02 04:53:31 -05:00
Clement Tsang
074b205a82
other: change group -> group_processes for consistency between config and command-line args (#1344)
* other: change group -> group_processes to match config file name

* update docs

* update changelog
2023-12-01 02:46:22 -05:00
ClementTsang
66b58e49d2
github: update some wording for feature and bug issue templates 2023-11-30 02:04:27 -05:00
ClementTsang
70d6e8aee0
github: fix typo in issue template 2023-11-30 01:51:49 -05:00
Clement Tsang
5787734476
github: update more wording of the bug issue template (#1343) 2023-11-30 01:44:53 -05:00
Clement Tsang
61704d9466
github: update filesystem issue template section (#1342) 2023-11-30 01:01:32 -05:00
Clement Tsang
2db881e3cf
deps: bump dependencies as of 2023-11-27 (#1338) 2023-11-27 23:06:51 -05:00
Clement Tsang
cf447e6a4e
deps: update sysinfo to 0.29.11 (#1337) 2023-11-27 22:37:50 -05:00
Clement Tsang
46b7881fb0
other: preallocate space for ellipsis (#1336) 2023-11-27 04:55:21 -05:00
Clement Tsang
590f03bd69
other: update generated config file (#1335) 2023-11-27 03:39:39 -05:00
Clement Tsang
eab8736dfd
refactor: iteratively detect ASCII and build string when truncating (#1334)
* refactor: iteratively detect ASCII and build string when truncating

* more tests

* test going by usize

* Revert "test going by usize"

This reverts commit 4fe71260e70696a0bb5907c97a2ca049fc23214c.
2023-11-27 03:30:43 -05:00
Clement Tsang
94e4573ebc
refactor: add fast branch if the string is short enough to not be truncated (#1333)
* refactor: add fast branch if the entire string is definitely not truncated

* update comments
2023-11-24 03:13:06 -05:00
Clement Tsang
a93521d2b1
refactor: add fast branch for ascii-only string truncate (#1330)
This is just a first attempt to speed up what looked like a hot spot in samply's profiling results.

Benchmark code and results here: https://gist.github.com/ClementTsang/e242f12f7e1d1902ed414dcc18c3b321
2023-11-23 23:45:03 -05:00
Clement Tsang
3a50d7622e
ci: update rust-cache to 2.7.0 (#1332) 2023-11-23 23:32:09 -05:00
Clement Tsang
bbeb43ef77
ci: update cargo-llvm-cov to 0.5.37 (#1331) 2023-11-23 23:29:42 -05:00
Clement Tsang
9d0bfbbf93
docs: update changelog ordering and some wording (#1328) 2023-11-21 00:25:25 -05:00
Clement Tsang
36bf5afeb1
change changelog heading levels (#1327) 2023-11-20 23:15:14 -05:00
Clement Tsang
ab9331140a
refactor: simplify temperature conversion function usage (#1326)
* refactor: simplify temperature conversion function usage

Just make it a function on the temperature type enum.

* fix sysinfo variant

* simple test
2023-11-20 03:08:24 -05:00
Clement Tsang
10a37c263a
change: small gpu proc changes (#1325)
* other: use consistent casing with Mem/Mem% in processes for GPU cols

* other: remove mem check for GPU enable check
2023-11-20 02:30:57 -05:00
Justin Martin
e4a6e751ec
feature: Add gpu proc info (#1276)
* 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
2023-11-19 23:54:15 -05:00
Clement Tsang
5df66006d8
docs: fix typo in process column config (#1323)
Lowercase a word.
2023-11-19 06:49:37 -05:00
Clement Tsang
5a17212f89
other: add additional clamping functions on numeric types (#1324)
* other: add additional clamping functions on numeric types

* add tests and replace one usage
2023-11-19 03:15:19 -05:00
Clement Tsang
7c14aa2666
ci: bump actions/checkout to v4.1.1 (#1322) 2023-11-18 19:15:28 -05:00
Clement Tsang
f021bc34d7
docs: add Android as unsupported but builds in README (#1321) 2023-11-18 06:27:33 -05:00
Clement Tsang
a5bbe5e333
deps: bump toml_edit to 0.21.0 (#1320)
* deps: bump toml_edit to 0.21.0

* fix some formatting
2023-11-16 17:24:45 -05:00
Clement Tsang
036366274e
docs: bump mike to v2.0.0 (#1318)
* bump mike

* bump some docs

* update some settings and serve script to use mike
2023-11-16 03:17:21 -05:00
Clement Tsang
04713bf81d
docs: bump mkdocs-related dependencies to latest (#1317)
* docs: bump mkdocs-related dependencies to latest

bumps mkdocs-material to 9.4.8, mkdocs to 1.5.3, mkdocs-material-extensions to 1.3

* fix some link warnings
2023-11-16 02:45:04 -05:00
Clement Tsang
4d2df4c4e9
refactor: clean up some query code and some ascii-only string comparisons (#1316)
* refactor: update some stuff in the query code

* do some eq_ignore_ascii work

* tests

* some docs, and rename files
2023-11-15 06:23:04 -05:00
Clement Tsang
8b9328e29e
refactor: comment on convoluted Filesystem::from_str code (#1315)
* refactor: use a less convoluted match for filesystem type conversion

* revert, just use comment

* just use if statements instead

* test

* inline
2023-11-15 04:13:19 -05:00
Yuri Astrakhan
5eb4fbde5d
chore: fix certain uninlined string format uses (#1310)
* 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>
2023-11-15 03:47:22 -05:00
Yuri Astrakhan
a6200640b9
chore: run spell and grammar checkers
* Chore: Run an spell cheker, and gramar cheker

* small revert

---------

Co-authored-by: Clement Tsang <34804052+ClementTsang@users.noreply.github.com>
2023-11-15 03:03:48 -05:00
Devin-Yeung
d1d1498900
bug: fat32 mounts don't show up in macOS (#1314) 2023-11-14 23:57:24 -05:00
Yuri Astrakhan
712a003681
Chore: Remove un-needed lifetimes in a few calls (#1309) 2023-10-23 23:53:08 -04:00
Yuri Astrakhan
1e16456d5f
chore: Minor cleanup - remove un-needed ident qualifiers (#1307)
Keep code a bit tidier and consistent (i.e. if an identifier already has a `use` entry above, why in some cases still prove a full path to it?)
2023-10-22 22:29:03 -04:00
Clement Tsang
4174012b8f
ci: test if building with musl on Rust > 1.71 works again (#1302)
* ci: test if building with musl on Rust > 1.71 works again

* use cross instead?

* specify cross version to fix build issue

* Update build_releases.yml
2023-09-24 03:11:08 -04:00
Clement Tsang
5d455354dd
bump clap and add nushell/fig completions (#1300)
* add nushell and fig completion generation

* now bump clap

* bump cargo-action too

* add rust-version key and set to 1.70.0, N-2
2023-09-12 03:36:45 -04:00
Clement Tsang
6256742f81
deps: bump sysinfo to =0.29.10 (#1298) 2023-09-11 00:13:17 -04:00
Clement Tsang
494bed6ee2
github: add section on whether you're using ZFS (#1299) 2023-09-10 22:43:33 -04:00
Clement Tsang
f38fbf0d8b
ci: add .desktop file (#1296)
* ci: add .desktop file

* move to a separate desktop folder

* also skip one more file
2023-09-06 19:12:28 -04:00
Clement Tsang
1f41ff3ae6
docs: bump mkdocs and mkdocs-material versions (#1293) 2023-09-04 18:24:25 -04:00
Clement Tsang
6d25109871
uptick: 0.9.6 (#1288) 2023-08-26 21:27:19 -04:00
Clement Tsang
1ef0c05aa6
deps: bump dependencies as of 2023-08-26 (#1287) 2023-08-26 21:16:43 -04:00
Clement Tsang
11676bb6c1
deps: pin serde to 1.0.188 (#1286)
* deps: pin serde to 1.0.188

* changelog
2023-08-26 21:02:22 -04:00
Clement Tsang
3e00e65483
docs: update changelog dates 2023-08-26 11:47:26 -04:00
Clement Tsang
44cc00564a
ci: pin musl to 1.71.0 for now when building releases (#1282) 2023-08-24 23:21:03 -04:00
Clement Tsang
e8f6d4853a
other: appease clippy after Rust 1.72.0 (#1281)
* 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 78aa6ec8481d38357adc09e262aa5df87796b6c7.
2023-08-24 20:26:46 -04:00
Clement Tsang
713b1874b7
uptick: 0.9.5 (#1280) 2023-08-24 19:25:26 -04:00
Clement Tsang
ac55add21e
deps: bump windows to 0.51.1 (#1279)
* deps: bump windows to 0.51.1

* some changes to fit new API
2023-08-22 17:27:36 -04:00
Clement Tsang
2e2b32ce71
deps: bump dependencies as of 2023-08-18 (#1277)
* deps: update root dependencies

* run cargo update

* revert windows for now

I wll handle it in separate dep bump since it requires more changes
2023-08-20 16:02:27 -04:00
Clement Tsang
ea6f87f54b
deps: pin serde to <=1.0.171 (#1278) 2023-08-19 16:06:53 -04:00
Clement Tsang
54c7fe5ea3
deps: pin sysinfo to 0.29.8 (#1273) 2023-08-16 05:45:47 -04:00
Clement Tsang
619e9d9c1b
deps: bump deps as of 2023-08-08 (#1272) 2023-08-09 01:27:56 -04:00
Clement Tsang
07b7caa5fa
uptick: 0.9.4 (#1270)
* uptick: 0.9.4

* update date
2023-08-05 17:51:24 -04:00
Clement Tsang
7aae9293e4
docs: bump mkdocs-material to 9.1.21 and mkdocs to 1.5.1 (#1269)
* docs: bump mkdocs-material to 9.1.21

* Update requirements.txt
2023-08-01 02:12:10 -04:00
Clement Tsang
43e3ab00ea
deps: pin sysinfo to 0.29.7 (#1268) 2023-07-29 02:24:35 -04:00
Clement Tsang
a736d856ce
docs: update changelog with ARC max usage fix (#1267) 2023-07-27 04:05:19 -04:00
allcontributors[bot]
560d1e383d
docs: add zebp as a contributor for code (#1266)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2023-07-27 03:58:52 -04:00
Zeb Piasecki
a336c64330
bug: display arc max size in arc usage instead of system memory (#1264) 2023-07-27 03:56:25 -04:00
Clement Tsang
dbf054506f
deps: bump dependencies as of 2023-07-24 (#1265) 2023-07-24 04:02:59 -04:00
Clement Tsang
0e8feca616
deps: pin sysinfo to 0.29.6 (#1263) 2023-07-23 03:21:24 -04:00
Clement Tsang
f182eb200e
docs: a few extra words around what version of rust releases are built with 2023-07-21 09:56:41 -04:00
Clement Tsang
646c9f191b
deps: Update ratatui 0.22.0 (#1261)
* deps: bump ratatui to 0.22.0

* fix missing new fields
2023-07-21 00:19:25 -04:00
Clement Tsang
d2b945957f
deps: bump some dependencies as of 2023-07-19 (#1260) 2023-07-20 02:25:02 -04:00
Clement Tsang
0b0f004001
docs: update changelog to include full width battery change (#1258) 2023-07-19 20:19:44 -04:00
allcontributors[bot]
fcdf2ebe38
docs: add gabelluardo as a contributor for code (#1257)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2023-07-19 20:05:26 -04:00
Gabriele Belluardo
83a8607e5b
other: full width battery bar (#1251) 2023-07-19 20:05:13 -04:00
Clement Tsang
c9a42f7061
docs: bump mkdocs-material to 9.1.19 (#1256) 2023-07-19 20:03:52 -04:00
Clement Tsang
dfca219a73
docs: bump mkdocs-material to 9.1.19 (#1256) 2023-07-19 04:23:22 -04:00
Clement Tsang
c1556d263e
deps: lock sysinfo to 0.29.5 (#1255) 2023-07-17 01:31:11 -04:00
Clement Tsang
e779120c4d
docs: update some installation README text 2023-07-13 04:37:07 -04:00
Clement Tsang
53c51c7c83
deps: clean and update dpes in Cargo.toml (#1254) 2023-07-12 03:44:09 -04:00
Clement Tsang
b0cb308106
refactor: flatten IoCounter return value (#1253)
* refactor: rewrite io stats collection function result

* refactor: flatten IoCounters vector results
2023-07-11 01:18:58 -04:00
Clement Tsang
f7ff2fc180
other: update changelog with ZFS I/O counters (#1252) 2023-07-10 00:36:11 -04:00
Justin Martin
b1a39026fb
add zfs io counters for linux and freebsd (#1248)
* add zfs io counters for linux and freebsd

* ci

* freebsd clippy

* code review: remove dead code for zfs feature gate of freebsd iocounters and squash if statement in zfs_io_counters
2023-07-09 17:50:22 -04:00
Clement Tsang
ccc7091529
deps: bump regex, serde, thiserror (#1250) 2023-07-09 05:20:12 -04:00
Clement Tsang
771e8fa463
docs: bump mkdocs material to 9.1.18 (#1249) 2023-07-08 03:12:40 -04:00
Clement Tsang
275daa1f63
deps: lock sysinfo to 0.29.4 (#1247) 2023-07-07 00:25:27 -04:00
Clement Tsang
567ba3760b
deps: bump deps as of 2023-07-06 (#1246) 2023-07-06 07:33:30 -04:00
Clement Tsang
a10b91239b
bug: missing windows syscall to close the handle on drop when killing (#1245)
* bug: missing windows syscall to close the handle on drop when killing

* changelog

* fix
2023-07-05 01:40:12 -04:00
Clement Tsang
f21ffde068
other: removes the percent sign from battery widget labels (#1244) 2023-07-04 01:44:17 -04:00
Clement Tsang
beef65a460
other: remove the percentage sign for CPU usage in CPU widget (#1243) 2023-07-04 01:35:39 -04:00
Clement Tsang
7240661aab
deps: bump dependencies as of 2023-07-03 (#1240)
* deps: bump deps as of 2023-07-02

* run cargo update
2023-07-03 00:47:02 -04:00
Clement Tsang
df3088e80e
other: hide battery tab selector if there is only one battery (#1236)
* other: hide battery tab selector if there is only one battery

* update changelog
2023-07-02 00:38:40 -04:00
Clement Tsang
3f53818c54
other: remove some unnecessary vec allocations (#1234)
* other: remove unnecessary vector allocations in farmer

* other: remove unnecessary vector allocations when drawing tui Rows
2023-07-01 03:28:23 -04:00
Clement Tsang
dce30ee882
docs: update some feature descriptions 2023-06-30 17:12:27 -04:00
Clement Tsang
9c368815dd
deps: bump deps as of 2023-06-29 (#1233)
* deps: bump deps as of 2023-06-29, clean up Cargo.toml a bit

* fix deprecated function call
2023-06-29 00:48:49 -04:00
Clement Tsang
fc027ece68
deps: bump deps as of 2023-06-27 (#1232)
Bumps:
- clap
- indexmap
- itertools
- libc
- serde_json
- toml_edit
2023-06-28 10:45:56 -04:00
Clement Tsang
b392f4b706
ci: update release template (#1231) 2023-06-28 05:08:33 -04:00
Clement Tsang
aa191a981d
bug: fix core dump if the terminal is closed while bottom is open (#1230)
* bug: fix core dump if the terminal is closed

The cause was:

- bottom thinks it's panicking if the terminal is closed.
- The panic hook tried to print out to the terminal - but the terminal
  was closed! It would unwrap and thus panic even harder.
- To solve this, we just make the panic hook calls not unwrap, since
  honestly if they fail it's whatever as far as I understand it.

* update changelog
2023-06-27 01:57:32 -04:00
Clement Tsang
0902abf6f9
docs: bump mkdocs-material to 9.1.17 (#1226) 2023-06-26 01:32:43 -04:00
Clement Tsang
6ad555db58
ci: fix winget package identifier (#1225) 2023-06-26 01:26:01 -04:00
Clement Tsang
6ee810f007
ci: clean + fix post-release and deployment actions (#1224) 2023-06-25 17:35:39 -04:00
Clement Tsang
590b15a510
other: update changelog with rpm 2023-06-25 15:40:25 -04:00
Clement Tsang
3ec66b876d
other: fix changelog typo 2023-06-25 15:39:46 -04:00
Clement Tsang
9fa5f3c4e9
ci: fix winget action 2023-06-25 15:37:15 -04:00
Clement Tsang
a3ae8e08a2
uptick: 0.9.3 (#1223)
* uptick: 0.9.3

* Update CHANGELOG.md
2023-06-25 00:31:57 -04:00
Clement Tsang
4ac3b43260
docs: update time-related documentation (#1222)
* docs: update time-related documentation

* fix retention too
2023-06-24 01:36:36 -04:00
Clement Tsang
cc3833289f
feature: support human times for rate (#1221) 2023-06-23 03:42:16 -04:00
Clement Tsang
0b7f4c745d
other: fix humantime-related documentation, add tests, support numbers + strings in toml (#1220)
* update documentation and support either numerical times or human times for time_delta and default_time_value

* update docs

* give more human times on error
2023-06-22 00:01:01 -04:00
Clement Tsang
6f1a8f7e5b
bug: fix overflow/underflow with graph timespan zoom (#1219)
* bug: fix overflow/underflow with graph timespan zoom

Basically, you could overflow/underflow the time span which would skip
checks.

* changelog
2023-06-21 00:03:48 -04:00
Clement Tsang
76e81df715
other: clean up some build script code (#1218)
Some build script formatting fixes and cleanup of some code. In
particular, I found some of the nightly version handling code to look
pretty gross so I separated out the parts into functions to clean it up
a bit.
2023-06-20 01:52:54 -04:00
Clement Tsang
9e97680131
other: revert color help text change (#1217)
Didn't mean to push this, reverting it.
2023-06-19 02:40:48 -04:00
Clement Tsang
751abecfe3
other: take ownership of config and matches when building App (#1215)
The clap matches/config struct was taken in as a reference when building
the App structure. However, we do not need to keep these around after
this, so we can instead take ownership of the match/config and drop it
after to save a bit of memory.
2023-06-19 01:47:57 -04:00
Clement Tsang
594e091a93
bug: fix arguments being unsorted (#1216)
clap v4 apparently changed it so arguments are not sorted by default
like before - this manually sorts the arguments beforehand to achieve
the same effect.
2023-06-19 01:37:22 -04:00
Clement Tsang
22d0d49984
ci: add checks to ensure post-release never runs on main/master/nightly (#1214) 2023-06-18 20:13:24 -04:00
Clement Tsang
45840d45c5
ci: add an action to automatically publish a winget PR on release (#1213) 2023-06-18 04:00:10 -04:00
Clement Tsang
7c0eda1034
other: use f32 for process percentage values (#1212)
* 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
2023-06-18 02:11:57 -04:00
ClementTsang
9cd953e0ca
docs: update some README installation section titles 2023-06-17 22:41:49 -04:00
Clement Tsang
d6b6e0aea9
refactor: move out bits/bytes enum to utils (#1211) 2023-06-17 02:08:11 -04:00
Clement Tsang
8d078f8d71
deps: bump clap, rustix, serde_json (#1210) 2023-06-17 01:48:59 -04:00
Clement Tsang
c73bc2cdb4
docs: bump mkdocs-material to 9.1.16 (#1209) 2023-06-17 00:08:23 -04:00
Clement Tsang
e1d6168641
docs: add .rpm install instructions to the README (#1208) 2023-06-16 01:53:35 -04:00
Clement Tsang
9ad72bf365
ci: use cargo-action v0.0.4 (#1207)
* ci: use cargo-action v0.0.4

* comments/labels
2023-06-15 02:05:47 -04:00
Clement Tsang
6c7635038d
ci: add RPM package generation (#1206)
* ci: add RPM package generation

* edit container

* fix install
2023-06-15 00:26:54 -04:00
Clement Tsang
2e5d59f84d
other: clean up some cfg usage (#1205)
* other: convert some cfg if

* fix
2023-06-13 01:25:20 -04:00
Clement Tsang
24234263f0
docs: fix Arch Linux package link (#1204) 2023-06-12 18:29:48 -04:00
Clement Tsang
531e26ea45
other: post-0.9.2 cleanup (#1203)
* other: some cleanup

* other: add conditional logging macros

* more cleanup

* use compile-time feature for some text in clap
2023-06-12 01:01:07 -04:00
Clement Tsang
cfdfd2bd3f
bump dependencies and Cargo.lock as of 2023-06-10 (#1200)
Did `cargo update`. Only root dep change is bumping `clap`.
2023-06-12 00:13:29 -04:00
Clement Tsang
93b6a5649f
uptick: 0.9.2 (#1202) 2023-06-11 18:22:42 -04:00
Clement Tsang
9560722318
feature: on Linux, check coretemp and don't fail fast with name generation when gathering temps (#1188)
* feature: also check coretemp on Linux when gathering temps

* update changelog

* add comment

* add logic to check thermal zone if there are no hwmon entries

* cleanup

* handle duplicates between hwmon and thermal zone

* Revert "handle duplicates between hwmon and thermal zone"

This reverts commit 402606cc62f27ba196ef2ade6a669ae84aedf0e0.

* cleanup

* back to running thermal zone if no hwmon

* prevent failure cases

* temp logging

* name refactoring

* port dupe name logic to hwmon

* Cleanup, add fallback to sensor name

* more tests

* Fix log

* update changelog

* cleanup and more tests
2023-06-11 18:12:15 -04:00
Clement Tsang
e602cc7a39
ci: update various dependencies as of 2023-06-11 (#1201)
Updates:
- actions/checkout
- crazy-max/ghaction-choclatey
- actions/setup-python
2023-06-11 02:16:29 -04:00
Clement Tsang
9ec95a9740
ci: add a build check for aarch64-linux-android (#1124)
* ci: add a build check for aarch64-linux-android

* appease clippy

* use 1.67.0 for Android due to NDK issue

* remove sparse since it is default now for 1.70 and causes issues with older versions anyway
2023-06-11 02:01:56 -04:00
Clement Tsang
2a354f772f
other: remaining changes needed to get android to build (#1199)
* other: remaining changes needed to get android to build

* update changelog

* simplify disk os-specific code
2023-06-11 01:35:16 -04:00
Clement Tsang
2ba7394ac2
other: have dummy fallback for disk I/O for unsupported OSes (#1198) 2023-06-11 00:01:14 -04:00
Clement Tsang
13a8e5bf0e
refactor: redo how we do get processes between different OSes (#1197)
* refactor: redo how we do some processes between different OSes

* cleanup

* more cleanup

* windows

* freebsd

* clean up linux more, fix broken FreeBSD import

* some more cleanup to remove some big imports
2023-06-10 01:44:15 -04:00
allcontributors[bot]
6b421b48ea
docs: add WenqingZong as a contributor for code (#1196)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2023-06-09 09:11:35 -04:00
Clement Tsang
e4eaeb1c17
deps: bump battery to 0.8.1 to fix M1 health bug (#1195)
* deps: bump battery to 0.8.1 to fix M1 health bug

* update changelog
2023-06-09 00:47:42 -04:00
Clement Tsang
88bf64ab16
deps: bump hashbrown, once_cell, regex, serde, time, libc, clap (#1194) 2023-06-09 00:26:01 -04:00
Clement Tsang
38d7d0fbc6
deps: bump sysinfo to =0.29.2 (#1193) 2023-06-09 00:03:23 -04:00
Clement Tsang
f0249c61c3
docs: update changelog to include #1191 (#1192) 2023-06-08 19:49:30 -04:00
database64128
48422c4111
bug: ntfs3 mounts don't show up (#1191)
Partitions mounted using the ntfs3 driver in linux (mainlined since 5.15)
won't show up because the name didn't match.
2023-06-08 13:07:18 -04:00
Clement Tsang
1cc0e910b4
refactor: remove outdated collection thread code (#1190)
This was going to be used for in-app config, but it's so old that it's
probably better to just rip it out and start anew in that regard.
2023-06-08 02:48:29 -04:00
Clement Tsang
f0121e6af4
other: enforce unused_imports lint again (#1189)
* other: enforce unused_imports lint again

I think there shouldn't be any issues with enforcing this now...

* set up cfg block so the logging feature doesn't break clippy

* some cleanup + comments
2023-06-08 02:28:36 -04:00
Clement Tsang
086b622c66
feature: use better names for duplicate temp sensors found by /sys/class/thermal (#1187)
* docs: update changelog

* feature: add a counter to duplicate names if using /sys/class/thermal/

* update changelog
2023-06-08 00:05:30 -04:00
Clement Tsang
358bddf990
bug: when getting Linux temps, don't bail ASAP if they fail (#1186)
* bug: when getting Linux temps, don't bail ASAP if they fail

This meant that if hwmon failed, it would never try and get temperatures
from thermal or GPU. The same is true for thermal failing leading to GPU
never running.

* update docs
2023-06-07 21:47:05 -04:00
Clement Tsang
6dd4ea945b
deps: bump clap, ctrc, once_cell (#1183)
Bumps these dependencies, which contains some small fixes/optimizations.
2023-06-04 00:50:21 -04:00
Clement Tsang
5e0900584b
refactor: change canvas macOS check to compile-time (#1184) 2023-06-04 00:18:24 -04:00
Clement Tsang
c6d322263e
other: fix links and broken references in doc comments (#1182) 2023-06-03 05:44:52 -04:00
Clement Tsang
852e2e86c7
refactor: remove typed-builder (#1181) 2023-06-02 00:53:38 -04:00
Clement Tsang
87a793f501
docs: bump mkdocs-material to 9.1.15 (#1180) 2023-06-01 02:27:46 -04:00
Clement Tsang
4e99f31ad0
deps: bump ratatui to 0.21.0 (#1178) 2023-05-31 00:21:55 -04:00
Clement Tsang
74953455dc
refactor: clean up some Linux proc collection code (#1179) 2023-05-31 00:21:34 -04:00
Clement Tsang
88b12a3790
deps: bump regex and log (#1177) 2023-05-29 00:47:29 -04:00
Clement Tsang
635e82a8a2
refactor: remove typed builder from App struct (#1176)
Another one on the chopping block. This also moves out the app
widget logic to a separate struct.
2023-05-28 00:46:13 -04:00
Clement Tsang
9cea3e1a8d
ci: add cache to audit job (#1175)
* ci: add cache to audit job

* always cache, and skip target

* delete registry too
2023-05-27 00:59:16 -04:00
Clement Tsang
a90c32eb73
ci: update rust-cache to 2.4.0 (#1174) 2023-05-27 00:22:29 -04:00
Clement Tsang
eccaf11937
feature: support human times for default_time_value and time_delta (#1172)
* feature: support human times for time interval and default range

* add tests, fix not using ms

* appease clippy

* changelog
2023-05-26 00:42:40 -04:00
Clement Tsang
6b9663a2c2
other: clean up some fixmes (#1171) 2023-05-26 00:19:28 -04:00
Clement Tsang
69318465ae
other: simplify termination/event loop logic (#1169)
This just simplifies the logic around ctrl-c and termination logic and
event loop logic to something simpler and without the need for timeouts
and/or atomics.

Instead, we just make termination an event sent by ctrl-c and use the
same receiver for event handling to react to it and break the loop.
2023-05-25 00:13:04 -04:00
Clement Tsang
b6dc17cfb3
other: clean up thread event code (#1170) 2023-05-24 01:05:49 -04:00
Clement Tsang
ea3f5e628d
deps: bump regex, toml_edit, ctrlc (#1168) 2023-05-24 00:54:39 -04:00
Clement Tsang
2ef7aa97c9
deps: bump dependencies for docs (#1167) 2023-05-24 00:33:31 -04:00
Clement Tsang
11b6fc1df2
deps: bump dependencies as of 2023-05-21 (#1166) 2023-05-23 00:22:17 -04:00
Clement Tsang
57da52b659
deps: bump clap to 4.3.0 (#1165) 2023-05-22 00:25:44 -04:00
Clement Tsang
caa1d1b88b
refactor: remove procfs (#1163)
* refactor: remove procfs, use personal impls/rustix directly

* buffer sharing

* inline

* some cleanup
2023-05-21 00:53:27 -04:00
Clement Tsang
8a49c49267
refactor: remove TypedBuilder for col (#1162)
* refactor: remove TypedBuilder for col

* clean up basic
2023-05-20 01:27:42 -04:00
Clement Tsang
b6f9a9a98d
deps: bump dependencies as of 2023-05-19 (#1161) 2023-05-19 04:04:44 -04:00
Clement Tsang
5aaa2bfa9f
github: update CONTRIBUTING.md 2023-05-19 00:24:46 -04:00
Clement Tsang
13efb87534
github: update some form headers to remove inline code blocks that were misrendering as quotes 2023-05-18 15:03:20 -04:00
Clement Tsang
463b0fbef8
refactor: remove TypedBuilder for widget (#1159)
* refactor: remove TypedBuilder for widget

* group together cpu

* clean up proc too
2023-05-18 05:45:07 -04:00
Clement Tsang
0a98ad1b93
deps: bump dependencies as of 2023-05-17 (#1160) 2023-05-18 02:05:57 -04:00
Clement Tsang
a1a48bc647
refactor: remove TypedBuilder for col row (#1158) 2023-05-17 02:43:08 -04:00
Clement Tsang
f541947a59
deps: bump dependencies as of 2023-05-15 (#1157) 2023-05-16 00:16:46 -04:00
Clement Tsang
b9c106c9cf
refactor: remove unused typed-builder proc macro usage in options (#1156) 2023-05-16 00:03:34 -04:00
ClementTsang
ccb93223f7
github: update even more packaging issue template wording 2023-05-15 00:17:40 -04:00
Clement Tsang
b59f526e16
docs: add links to the repo locations for installation methods (#1155) 2023-05-15 00:07:08 -04:00
ClementTsang
80d4e9c81f
github: update more packaging issue template wording 2023-05-14 16:24:09 -04:00
ClementTsang
3e6f3ad551
github: update packaging issue template wording 2023-05-14 16:08:58 -04:00
Clement Tsang
52805e0a83
docs: update winget link 2023-05-14 11:04:56 -04:00
Clement Tsang
d019181b2d
uptick: 0.9.1 (#1153) 2023-05-14 00:13:12 -04:00
Clement Tsang
7bd93f2c7c
deps: bump dependencies as of 2023-05-13 (#1152) 2023-05-13 20:41:19 -04:00
Clement Tsang
9d433be3f3
other: bump version to 0.9.1 (#1151) 2023-05-13 18:08:12 -04:00
Clement Tsang
f76fc84670
docs: bump mkdocs-material to 9.1.12 (#1150) 2023-05-13 11:40:56 -04:00
Clement Tsang
3a8d85d487
refactor: use macros for initializing canvas styles (#1149)
* refactor: use macros for initializing canvas styles

* add quotes

* Simplify macro

* update tests

* more renaming
2023-05-13 05:22:09 -04:00
Clement Tsang
bcca7e2621
bug: fix gruvbox cache colour being invalid (#1148)
* bug: fix gruvbox cache colour being invalid

* update changelog
2023-05-12 04:39:07 -04:00
Clement Tsang
c8da8f16f0
docs: update install instructions 2023-05-12 00:54:50 -04:00
Clement Tsang
2c13683eb3
ci: pin and update some workflow actions (#1145)
* ci: pin and update some workflow actions

* also update setup-python

* and rust-toolchain
2023-05-11 00:42:39 -04:00
ClementTsang
31869dee29
docs: update choco install instructions 2023-05-10 04:01:23 -04:00
ClementTsang
13b58d4d4e
docs: reword binary install section 2023-05-10 03:59:27 -04:00
ClementTsang
331ed47387
github: update deploy body template 2023-05-10 03:35:54 -04:00
Clement Tsang
8777143801
uptick: 0.9.0 (#1143)
* uptick: 0.9.0

* years are hard

* update changelog
2023-05-10 03:17:25 -04:00
Clement Tsang
efe65ecbe2
deps: bump dependencies in Cargo.lock file (#1144)
Avoids an annoying message when installing with `--locked`.
2023-05-09 20:36:35 -04:00
Clement Tsang
cb9d99527a
docs: update process config docs (#1142) 2023-05-09 19:35:32 -04:00
Clement Tsang
dae65bcd56
bug: fix certain custom column combinations causing issues (#1140)
* docs: update some docs related to processes

* bug: temp bandaid on column feature to avoid dupes issue
2023-05-09 19:20:34 -04:00
Clement Tsang
53d7cbb170
docs: bump mkdocs-material to 9.1.11 (#1141) 2023-05-09 00:24:38 -04:00
Clement Tsang
1111bbe831
docs: update help section of docs (#1139)
* docs: update help section of docs a bit

* update
2023-05-07 17:07:24 -04:00
Clement Tsang
e12ed777b7
docs: update docs with processes column (#1138) 2023-05-07 17:00:55 -04:00
Clement Tsang
a62fdc5e04
deps: bump clap to 4.2.7 and libc to 0.2.143 (#1136) 2023-05-07 04:35:42 -04:00
Clement Tsang
f00d09ded5
deps: bump sysinfo to =0.29.0 (#1135) 2023-05-07 01:32:25 -04:00
ClementTsang
3239bce86b
ci: update some ci docs 2023-05-07 00:42:35 -04:00
Clement Tsang
440e10c34d
other: disable logging when building with default features (#1133)
* other: disable logging when building with default features

* update docs
2023-05-06 17:35:10 -04:00
Clement Tsang
bb94355cfc
ci: allow skipped CI workflow to mean success (#1134) 2023-05-06 13:59:43 -04:00
Clement Tsang
b60a62d5f0
other: keep running even if logger fails to initialize (#1132)
This just makes it so that even if the logger is enabled, if it fails to
initialize (e.g. read-only directory), bottom will still continue to
start up, and just print a warning that the logger encountered an issue.
2023-05-06 12:56:01 -04:00
Clement Tsang
4cdedffaee
other: use sysinfo for temps for android and ios (#1130) 2023-05-06 00:58:19 -04:00
Clement Tsang
f237babb58
ci: output a failure in the completion step if a previous step failed (#1128)
* ci: output a failure in the completion step if a previous step failed

* test

* okay now if I add failure

* yoink

* always

* use needs syntax
2023-05-05 04:28:04 -04:00
Clement Tsang
5548db6472
docs: bump mkdocs-material to 9.1.9 (#1127) 2023-05-05 01:06:56 -04:00
ClementTsang
240075ab4a
ci: clarify clear cache instructions 2023-05-04 01:22:28 -04:00
Clement Tsang
2051c06115
deps: bump dirs to 5.0.1 (#1123) 2023-05-03 01:23:48 -04:00
allcontributors[bot]
e0c1cc1bf3
docs: add yshui as a contributor for code (#1121)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2023-05-02 01:36:09 -04:00
Yuxuan Shui
80183b8b1c
feature: show running time of processes (#801)
* 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>
2023-05-02 01:33:53 -04:00
Clement Tsang
7edc2fc7e5
deps: bump patch versions as of 2023-04-30 (#1119) 2023-05-01 01:27:04 -04:00
Clement Tsang
b02a5963fc
docs: update default config file with processes section (#1120) 2023-05-01 01:26:41 -04:00
Clement Tsang
d6f9dd9a24
other: update .gitignore to ignore all test configs 2023-04-30 15:51:01 -04:00
Clement Tsang
3baead3a28
GitHub: update issue template links in contributing doc 2023-04-30 05:03:06 -04:00
Clement Tsang
605314d44c
feature: add customizable process columns (#1115)
* 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
2023-04-29 19:21:48 -04:00
Clement Tsang
7162e9c483
deps: bump clap to 4.2.5 (#1118) 2023-04-29 00:02:29 -04:00
Clement Tsang
c99e98c6d3
other: edit some comments 2023-04-28 00:00:23 -04:00
Clement Tsang
48747b8bd2
deps: bump patch versions as of 2023-04-26 (#1117) 2023-04-27 00:19:32 -04:00
Clement Tsang
d180617e7a
docs: update mkdocs-material to 9.1.8 (#1116) 2023-04-26 00:29:39 -04:00
Clement Tsang
817529b15f
github: remove issue report title template 2023-04-23 20:05:36 -04:00
Clement Tsang
109498c1db
deps: remove const_format dependency (#1114)
* 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
2023-04-23 00:53:21 -04:00
Clement Tsang
a00ab46c5e
deps: bump regex to 1.8.0 (#1111) 2023-04-22 00:19:12 -04:00
Clement Tsang
4a86b1c21b
refactor: add fallback process signal (#1112)
* refactor: add fallback process signal

* also update dialog logic to be able to fall back in some cases
2023-04-22 00:19:05 -04:00
Clement Tsang
8b81dfba47
bug: fix side borders in basic mode (#1110)
Seems like I broke this when migrating from tui-rs to ratatui. This just
uses explicit enum variants to set my side borders and a test to try and
make sure this doesn't happen again.
2023-04-21 00:07:45 -04:00
Clement Tsang
3618449d42
deps: update clap to 4.x (#1107)
* deps: update clap to 4.x

* changelog

* fix test

* add gpu feature/flag test
2023-04-21 00:07:34 -04:00
Clement Tsang
3a0cf16247
other: update deprecated fn_args_layout to fn_params_layout (#1109) 2023-04-20 20:52:04 -04:00
Clement Tsang
1c95411494
feature: add current battery charging state, update field names (#1106) 2023-04-19 00:46:57 -04:00
Clement Tsang
3e1aa9c75a
docs: update demo caption 2023-04-18 00:54:58 -04:00
Clement Tsang
6ea3635b28
deps: migrate from tui to ratatui (#1086) 2023-04-16 00:04:16 -04:00
Clement Tsang
8c6ae3bbc7
other: update default config generation to show cache (#1102) 2023-04-15 02:01:35 -04:00
Clement Tsang
513024aefd
refactor: clean up data init sleep duration code (#1101)
* refactor: clean up data init sleep duration code

* const
2023-04-15 02:01:25 -04:00
Clement Tsang
20902e87b9
other: Speed up first draw and first data collection (#1100)
* other: add first draw immediately after initialization

Previously, I would only do the first draw after an event triggered, so
this just makes it so that I *always* draw once first. Some widgets look
a bit weird with no data, but this is fine I guess if we want to gain a
bit of responsiveness.

* other: potentially shorten first time to get data

* other: move event loop thread init earlier in app initialization
2023-04-15 00:15:36 -04:00
Clement Tsang
fa1f4976e2
deps: update starship-battery to 0.8.0 (#1098) 2023-04-14 00:13:00 -04:00
Clement Tsang
69e6494491
deps: bump serde to 1.0.160 (#1095) 2023-04-13 01:40:16 -04:00
allcontributors[bot]
731a4217f4
docs: add aragonnetje6 as a contributor for code (#1096)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2023-04-12 22:52:06 -04:00
Twan Stok
1b1e80ec3c
feature: add buffer and cache memory (#1063)
* First implementation of cache memory data collection, mostly copied from RAM and swap implementations

* First implementation of cache memory display, copied from RAM and swap implementations. placed cache as second in the list as it is more similar to the RAM than any other item in the list

* expanded comment to explain method.

* rustfmt

* all cache-related code excluded on windows, in the process refactored src/data_conversion.rs convert_mem_label() to convert a single label instead of all at once

* better factoring-out of cache memory logic to allow individual disabling

* added --enable_cache_memory flag, disabled cache memory collection by default

* renamed CCH to CHE
not sure how i messed that up

* changelog updated

* Added command line flag documentation

* updated config file documentation

* specified that buffer and cache memory display does not work on windows

* resolved merge conflicts

* added documentation to cache memory data collection

* capitalized Windows

* implemented missing canvas styling logic

* fixed misplaced no-windows flag

* reduced colour collisions, as cache colour was the same as the first GPU colour

* made FIFTH_COLOUR constant windows-only

* Revert "made FIFTH_COLOUR constant windows-only"

This reverts commit 72698f1dd7e2de7dbda843708ece6a3dba66f94f.

* made FIFTH_COLOUR constant non-windows-only

* minor fix for basic mode row count

* Update src/app/data_harvester/memory/sysinfo.rs

Co-authored-by: Clement Tsang <34804052+ClementTsang@users.noreply.github.com>

* Update src/canvas/widgets/mem_basic.rs

Co-authored-by: Clement Tsang <34804052+ClementTsang@users.noreply.github.com>

* updated default_config.toml

* formatting

---------

Co-authored-by: ClementTsang <34804052+ClementTsang@users.noreply.github.com>
2023-04-12 22:51:41 -04:00
Clement Tsang
e61e5f2af6
deps: Switch to using hashbrown for general hashmap usage (#1092)
* deps: replace fxhash with hashbrown + ahash

* replace std hashmap with hashbrown + ahash

* fmt

* some more fmt
2023-04-12 00:03:27 -04:00
Clement Tsang
857b5bade0
ci: run black on Python scripts (#1094)
* ci: run black on Python scripts

* comments
2023-04-11 04:57:29 -04:00
Clement Tsang
016fa1e19b
ci: run wf cache clear script twice with delays (#1093)
* ci: run wf cache clear script twice with delays

* reduce
2023-04-11 04:39:28 -04:00
Clement Tsang
62474be52a
deps: bump once_cell and related dependencies (#1090)
* deps: bump once_cell and related dependencies

Now that we've removed heim, I can bump up other dependencies that
relied on newer versions of once_cell.

* Add some dhat code

* dhat gitignore
2023-04-11 03:22:32 -04:00
Clement Tsang
9edde9b133
refactor: migrate disk collection code off of heim, remove heim (#1064)
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
2023-04-10 05:52:46 -04:00
Clement Tsang
b2801b16a9
docs: update binary install instruction 2023-04-09 00:05:40 -04:00
Clement Tsang
354d89f75b
docs: fix typo in cargo install instructions 2023-04-08 16:28:55 -04:00
Clement Tsang
4ebd376a1e
docs: update cargo install instructions 2023-04-08 16:28:03 -04:00
Clement Tsang
7e0210c63e
docs: update mkdocs-material to 9.1.6 (#1089) 2023-04-08 01:33:51 -04:00
Clement Tsang
afd58e6ef4
docs: fix typo for Powershell auto-completion installation 2023-04-08 01:25:35 -04:00
Clement Tsang
37cb59e16f
deps: update some minor dependency versions (#1087)
* deps: update some minor dependency versions

Bump some dependency versions as of April 7, 2023. Note I skipped any
updates tied to futures as that's getting removed along with heim in the
near future (heh).

* fix rename on Windows from K32GetPerformanceInfo -> GetPerformanceInfo
2023-04-07 03:48:35 -04:00
Clement Tsang
36f55de4d2
other: add clippy lints to deny todo and unimplemented (#1085) 2023-04-05 00:41:59 -04:00
Clement Tsang
e4f9033ed8
docs: update mkdocs-material to 9.1.5 (#1084) 2023-04-04 00:35:43 -04:00
Clement Tsang
c8c64b0c80
ci: run build on unsupported platforms instead of check, bump cross version (#1083) 2023-04-03 04:45:36 -04:00
Clement Tsang
8814bc53e3
other: add test for multiple regexes in filter (#1082) 2023-04-03 01:47:57 -04:00
Clement Tsang
827ef0eec4
github: change workflow cache clear to weekly 2023-04-02 17:36:51 -04:00
Clement Tsang
d6a1d05d7a
docs: update note on FreeBSD/M1 2023-03-31 03:08:34 -04:00
Clement Tsang
e36854641c
docs: bump mkdocs-material to 9.1.4 (#1081) 2023-03-30 03:37:50 -04:00
ClementTsang
9146c4f6dd
docs: update font issue troubleshooting header 2023-03-29 04:33:07 -04:00
Clement Tsang
4d61ca4d41
docs: add mention for braille font issues on Linux (#1080) 2023-03-29 00:40:26 -04:00
Clement Tsang
bde2dac56e
deps: bump various dependencies as of 2023-03-27 (#1079) 2023-03-28 01:14:10 -04:00
Clement Tsang
444d2f7ad7
deps: bump sysinfo to 0.28 (#1078)
* deps: update sysinfo to 0.28.0

* 0.28.1

* 0.28.2

* 0.28.3

* 0.28.4
2023-03-27 00:50:21 -04:00
Clement Tsang
7ee6da3776
refactor: unify on using bytes for the memory unit when harvesting (#1077)
* refactor: unify on using bytes for the memory unit when harvesting

* some ordering stuff that doesn't mean much

* some comments

* more fixes

* refactor: rename

* comments v2

* some more cleanup

* remove uninlined_format_args allow
2023-03-26 01:53:43 -04:00
Clement Tsang
358db119bb
refactor: clean up some data collection refresh code, refresh sysinfo lists on loop (#1076)
* refactor: clean up some data collection refresh/init code

* move out battery

* missing setting memory value for proc

* stop segfault on macos

* unit

* oopsie
2023-03-25 02:31:11 -04:00
Clement Tsang
3ad0acc2fa
github: update issue template ordering 2023-03-24 20:29:51 -04:00
Clement Tsang
cea05479c8
docs: words and capitalization 2023-03-19 02:38:21 -04:00
Clement Tsang
1fbe89be8b
docs: bump mkdocs-material to 9.1.3 (#1070) 2023-03-17 00:02:20 -04:00
Clement Tsang
9fc62b9fd6
deps: forgot to bump crossterm back to 0.26.1 (#1069) 2023-03-15 20:47:10 -04:00
Clement Tsang
ac0bf7ca96
deps: switch back to crossterm 0.26.1 with fix to double keypress (#1068) 2023-03-15 01:50:52 -04:00
Clement Tsang
8fe3f1f23c
deps: revert crossterm 0.26.1 to fix double input bug on Windows (#1066) 2023-03-14 17:52:52 -04:00
Clement Tsang
6be6409b72
docs: link to support section in spiel 2023-03-14 02:16:23 -04:00
Clement Tsang
61fec230fc
ci: add musl build targets for .deb generation (#1061)
* ci: add musl build targets for .deb generation

* add missing container

* try to fix musl rename condition
2023-03-13 03:25:40 -04:00
Clement Tsang
10b8673c04
ci: bump fkirc/skip-duplicate-actions to v5.3.0 (#1059) 2023-03-13 01:02:29 -04:00
Clement Tsang
4f1ac8255f
ci: go back to using default cache key + target, update to 2.2.1 (#1058)
* ci: go back to using default cache key + target, update to 2.2.1

* fix formatting
2023-03-13 01:01:23 -04:00
Clement Tsang
7f4e762921
ci: use sparse crates.io registries in CI (#1057) 2023-03-12 15:43:30 -04:00
Clement Tsang
c2d66af72f
clippy: appease clippy as of Rust 1.68.0 (#1055)
* clippy: fix derivable_impls clippy warning

This was done using `cargo clippy --fix`

* cargo fmt after autofix
2023-03-11 01:20:46 -05:00
Clement Tsang
e7a5f297bc
ci: update the upload artifact action to v3.1.2 (#1054) 2023-03-10 00:00:42 -05:00
Clement Tsang
82c0c3b0e5
refactor: use internal committed memory calculation for Windows (#1051)
* refactor: use internal committed memory calculation for Windows

* comments
2023-03-08 00:08:02 -05:00
Clement Tsang
10d7226b19
other: deny missing safety docs and add them (#1053) 2023-03-08 00:00:50 -05:00
Clement Tsang
9c197d0cf6
ci: do no feature first in cirrus (#1048) 2023-03-07 00:18:42 -05:00
Clement Tsang
b745684156
refactor: more data collection cleanup (#1047)
* refactor: more memory collection cleanup

* more cleanup

* clean up data_harvester, remove heim sensor flag

Separate out most individual components to separate functions. Also
remove Linux's usage of heim's sensors feature, since I wasn't using it
apparently.

* clean up GPU section

* fix cond

* fix feature flags

* more cleanup

* even more cleanup
2023-03-07 00:18:24 -05:00
Clement Tsang
8489c4bc10
refactor: Clean up memory collection code (#1045) 2023-03-05 02:31:45 -05:00
Justin Martin
3510563638
re-enable zfs feature (#1044) 2023-03-04 20:10:24 -05:00
Clement Tsang
994c11e3b3
refactor: migrate network collection to sysinfo (#1041)
* refactor: migrate network collection to sysinfo

* remove net feature from heim

* comments and changelog
2023-03-04 01:34:52 -05:00
Clement Tsang
ea318e83c9
docs: bump mkdocs-material to 9.1.0 (#1042) 2023-03-03 05:53:38 -05:00
Clement Tsang
caba611036
docs: update changelog and some comments (#1040) 2023-03-03 01:00:33 -05:00
allcontributors[bot]
a85af0501d
docs: add dvalter as a contributor for code (#1039)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2023-03-03 00:33:59 -05:00
Dmitry Valter
40288c181e
fix: is_list_ignored=false filters for network and temperature (#1037)
Use filter logic from network/sysinfo in temperature and network/heim
harvesters. Previously is_list_ignored=false filter configs would
silently accept every sensor and every interface.
2023-03-03 00:33:47 -05:00
Clement Tsang
8cc763cc1b
refactor: migrate memory collection to sysinfo for all platforms (#1036)
* cleanup

* refactor: remove heim memory code

* add missing updates, remove heim memory feature

* restrict export visibility

* some refactoring, remove smol

* gpu feature
2023-03-03 00:06:19 -05:00
Clement Tsang
c2d94900f3
deps: bump procfs to 0.15.1 (#1038) 2023-03-02 17:40:56 -05:00
Clement Tsang
f26d598410
refactor: migrate CPU from heim to sysinfo for all platforms (#1035)
* refactor: migrate CPU from heim to sysinfo for all platforms

* fix windows and macos imports

* simplify a bit of code

* cleanup
2023-03-02 00:03:54 -05:00
Clement Tsang
e8ae1a265a
other: switch to toml_edit (#1034) 2023-03-01 00:14:47 -05:00
Clement Tsang
f02bd21948
deps: bump crossterm to 0.26.1 (#1033) 2023-02-28 00:10:08 -05:00
Clement Tsang
44e52d6229
deps: bump nvml to 0.9.0 (#1032) 2023-02-27 19:37:35 -05:00
Clement Tsang
6fa72290a9
deps: bump patch dependency versions as of 2023-02-26 (#1031) 2023-02-27 01:44:15 -05:00
ClementTsang
7008f1d520
ci: add some comments regarding codecov to action 2023-02-26 00:03:59 -05:00
Clement Tsang
870c29e6e0
ci: add coverage actions for macOS and windows (#1030)
* ci: add coverage actions for macOS and windows

* specify target as name

* use flags
2023-02-26 00:01:08 -05:00
Clement Tsang
cabc594279
refactor: clean up some options code (#1029)
* remove some dead code

* use macros to help clean up clutter for binary flags

* add test

* group

* fix using gpu feature
2023-02-25 04:24:38 -05:00
ClementTsang
449d735601
ci: specify where part of the CI workflow is 2023-02-22 00:01:28 -05:00
Clement Tsang
1ad38db3a4
ci: reduce CI timeout to 18 minutes (#1028)
* ci: reduce CI timeout to 15 minutes

* add additional timeouts

* go with 18 minutes for safety
2023-02-21 04:09:19 -05:00
Clement Tsang
78b1126fb4
other: move terminal check after the config check (#1027) 2023-02-20 00:57:09 -05:00
Clement Tsang
f1f07945f6
change: show process in tree if any ancestor or descendent matches (#1026)
* 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
2023-02-20 00:15:16 -05:00
Clement Tsang
6d15f01009
other: support hw.temperature-based temps on FreeBSD (#1024)
* other: support hw.temperature-based temps for FreeBSD

* update changelog

* enable sysctl always for freebsd
2023-02-19 18:44:35 -05:00
Clement Tsang
2a1c4104fd
other: promote macOS aarch64 to official support (#1025)
Since I have a macOS M1 laptop to test on now, I think it's a good time
to bump it to be officially supported, especially since it's going
to be the main macOS platform for the foreseeable feature.
2023-02-19 01:12:13 -05:00
Clement Tsang
f89b243589
feature: support 3-char hex colours (#1022) 2023-02-18 01:55:26 -05:00
Clement Tsang
edc61d428c
bug: fix selected text bg colour being wrong if only the fg colour was set (#1021)
* rename file to be more generic

* fix selected text BG colour being wrong by default

* update changelog

* add test for bug
2023-02-18 00:51:13 -05:00
ClementTsang
a266dd74ec
docs: update contributing docs/links 2023-02-13 03:35:46 -05:00
Clement Tsang
c19f429d35
docs: update changelog and missing doc info (#1018) 2023-02-11 02:48:23 -05:00
allcontributors[bot]
2783abf2d4
docs: add mbikovitsky as a contributor for code (#1017)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2023-02-10 15:13:47 -05:00
Michael Bikovitsky
d956f336a9
feature: Add support for displaying process usernames on Windows (#1016) 2023-02-10 15:01:37 -05:00
Clement Tsang
e7b682a550
other: add no-opt and flamegraph build profiles for convenience (#1014) 2023-02-08 00:41:03 -05:00
ClementTsang
9fd8ce3151
other: compile dependencies in dev with optimizations 2023-02-07 04:24:14 -05:00
Clement Tsang
88111de941
docs: bump mkdocs-material and mkdocs-material-extensions (#1013) 2023-02-05 23:54:24 -05:00
ClementTsang
9ed5df15bb
docs: add script to serve mkdocs locally 2023-02-04 04:58:16 -05:00
Clement Tsang
bce95c0d48
docs: update requirements.txt and bump to 3.11 (#1011) 2023-02-03 03:25:25 -05:00
Clement Tsang
a94a8059da
docs: add docs on process kill, update docs on updating docs (#1010)
* docs: add some documentation on process term, update captions

* docs on updating docs
2023-02-03 03:05:18 -05:00
allcontributors[bot]
d72f75cdce
docs: add spital as a contributor for code (#1009)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2023-01-31 19:40:39 -05:00
spital
021a727f19
other: replace deprecated value_of and is_present in clap
* Upgrade clap to 3.2.2 to allow future fix warnings

* cargo fmt fix

* Replaced deprecated `value_of` and `is_present`, builds with no warnings, clap 3.2.2

* cargo fmt

* updated according to comments. builds fine, cargo test fine

* Match some versions

* Update Cargo.lock

* Fix typo, mb

---------

Co-authored-by: Clement Tsang <34804052+ClementTsang@users.noreply.github.com>
2023-01-31 19:34:52 -05:00
Clement Tsang
9ad1d8f0b4
other: ignore uninlined_format_args clippy lint for now (#1004) 2023-01-27 18:13:17 -05:00
ClementTsang
32434932a6
docs: update some packaging/distribution docs with more details 2023-01-26 21:37:09 -05:00
Clement Tsang
f416c54d2f
other: bump to 0.8.1 for nightly (#1002) 2023-01-24 20:54:26 -05:00
Clement Tsang
cdee5b6fc3
other: run cargo sort on Cargo.toml (#1001) 2023-01-24 20:27:48 -05:00
Clement Tsang
123e564d6e
ci: update cargo-llvm-cov to 0.5.9 (#1000) 2023-01-24 09:33:57 -05:00
ClementTsang
ea11be9cfc
ci: don't cache coverage in some cases 2023-01-23 19:35:54 -05:00
ClementTsang
00d60d8d45
other: update issue template wording 2023-01-23 02:08:03 -05:00
Clement Tsang
a4a237c8d2
docs: update gif for 0.8.0 (#998) 2023-01-22 03:55:14 -05:00
ClementTsang
2a4849ebb7
docs: fix typo 2023-01-22 01:20:39 -05:00
ClementTsang
0f58851dca
docs: update manual installation dl link 2023-01-22 01:15:46 -05:00
Clement Tsang
36840e5de9
uptick: 0.8.0 (#996)
* uptick: 0.8.0

* update changelog
2023-01-22 00:53:36 -05:00
Clement Tsang
9a011189f1
docs: update README section for unofficial support 2023-01-21 04:43:38 -05:00
Clement Tsang
635d173f49
other: explicitly style dd text colours (#995) 2023-01-20 20:53:27 -05:00
ClementTsang
490e94c347
other: bump to 0.8.0 2023-01-20 18:55:31 -05:00
Clement Tsang
3aa4aa1c08
bug: fix axis labels not being styled (#994)
Fixes graph axis labels not being styled.
2023-01-20 18:50:20 -05:00
Clement Tsang
4870ff365a
refactor: change name of some stuff, add some comments (#992)
* some quick refactoring first

* add todo for bug report template
2023-01-20 00:08:02 -05:00
Clement Tsang
7f7a328977
other: refresh cpu for sysinfo users if proc is used (#991) 2023-01-20 00:07:52 -05:00
Clement Tsang
22e386a38c
other: re-enable disk usage split, update help menu (#963)
* Revert "other: revert disk usage change for now (#962)"

This reverts commit d3661c23200a66c7dc01f4e534d8d7e97dc188d2.

* some cleanup

* update help menu

* update screenshot

* update changelog wording

* Remove redundant newlines

* Use type system to ensure help constants match in size
2023-01-19 05:40:34 -05:00
allcontributors[bot]
0a83456adb
docs: add felipesuri as a contributor for doc (#989)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2023-01-18 16:23:23 -05:00
felipesuri
2de49c5042
docs: Update ArchLinux install command (#988)
It is removing `-yu`, because it updates the system before downloading the package.
ArchLinux is updated constantly and can crash the system, so it's better just to install the package.
2023-01-18 16:22:58 -05:00
Clement Tsang
04c1366af5
other: bump edition to 2021 (#987) 2023-01-18 02:26:30 -05:00
Clement Tsang
ebaf10936a
other: fix missing memory feature for heim on linux (#986) 2023-01-18 01:52:55 -05:00
Clement Tsang
639c93b4c8
other: switch to windows-rs for process killing (#985) 2023-01-18 01:43:08 -05:00
Clement Tsang
4b392c96f7
docs: add note about individual autocompletion files 2023-01-17 00:58:41 -05:00
Clement Tsang
50c95997f9
docs: update changelog and all contrib sections (#984) 2023-01-15 12:26:15 -05:00
allcontributors[bot]
7fdc927aff
docs: add NitrogenDev as a contributor for code (#983)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2023-01-15 12:08:18 -05:00
Rareș Constantin
f8db3403af
other: Dynamic battery widget (#975)
* Added dynamic battery widget

For bottom to know that there are no batteries on the system,
I added the battery::Manager to the options.rs file because
here is the first moment bottom verifies battery configuration
by reading the config file, which may or may not contain the
battery field, but for a better UX, it doesn't matter what bottom
finds in the config file now, if it doesn't retrieve battery data,
it just ignores the battery widget all together.
If needed, it can be adjusted so that if the config file contains
the battery field, it will still show the widget.

* CFG guarding for BATTERY module

I guarded the options.rs in two places for battery module that can be missing in the feature list.

Co-authored-by: RaresCon <RaresCon>
Co-authored-by: NitrogenDev <44950964+NitrogenDev@users.noreply.github.com>
2023-01-15 12:06:42 -05:00
Clement Tsang
571ec08291
other: skip battery duration draw if unknown (#974)
* other: skip battery duration draw if unknown

* increase others

* update changelog
2023-01-15 12:06:19 -05:00
Clement Tsang
316891d476
deps: update more dependencies as of 2022-01-14 (#982) 2023-01-14 22:36:30 -05:00
Clement Tsang
8490ff93ea
deps: update regex to 1.7.1 (#981) 2023-01-14 21:19:10 -05:00
Clement Tsang
80ef86e12a
deps: updates unicode deps to support unicode 15 (#980) 2023-01-14 21:05:58 -05:00
Clement Tsang
f712aaffa1
deps: updates some minor deps as of 2023-01-14 (#979)
Updates:
- log
- serde
- itertools
2023-01-14 19:13:31 -05:00
Clement Tsang
9292dbd376
deps: update indexmap to 1.9.2 (#978) 2023-01-14 19:03:49 -05:00
Clement Tsang
719c35ae3b
deps: update procfs to 0.14.2 (#977) 2023-01-14 18:37:29 -05:00
Clement Tsang
e112e1231e
ci: add schedule to clear PR caches (#973) 2023-01-13 01:45:11 -05:00
Clement Tsang
9a696122c7
ci: try removing cache from build workflow (#972) 2023-01-13 01:15:10 -05:00
Clement Tsang
6e2b276836
ci: remove git hash and nightly tag from deb file name (#970)
* ci: switch deb nightly builds back to the same string as normal

Easier to stay consistent, I guess.

* disable cache for cargo deb

* reenable cache

* nvm
2023-01-12 06:23:36 -05:00
ClementTsang
f415fb08bc
other: bump up version in Cargo.toml to 0.7.2 2023-01-12 05:20:22 -05:00
Clement Tsang
fffeb206de
ci: follow .deb naming conventions (#969)
Change the .deb file generation back to following standard naming conventions.
2023-01-12 03:41:15 -05:00
Clement Tsang
48cd29f2dd
docs: minor update of Windows installation docs (#966)
* docs: minor update of Windows installation docs

* Update README.md
2023-01-09 17:48:08 -05:00
Clement Tsang
57ce57b66f
docs: fix debian/ubuntu download links (#965) 2023-01-07 16:53:56 -05:00
Clement Tsang
768ec9cb36
docs: update screenshots for 0.7.1 (#964) 2023-01-05 23:45:17 -05:00
Clement Tsang
7794c0e43a
uptick: 0.7.1 (#959)
* uptick: 0.7.1

* update changelog
2023-01-05 23:30:05 -05:00
Clement Tsang
d3661c2320
other: revert disk usage change for now (#962)
This is a temp change, this commit will be reverted after 0.7.1 comes out.
2023-01-05 23:22:45 -05:00
Clement Tsang
d62bdc5cab
ci: fix CI concurrency grouping (#961)
Seems like we want `github.ref`, not `github.event.ref`, which is
blank.
2023-01-05 21:42:41 -05:00
Clement Tsang
9303c1b52f
bug: further shrink battery time-to text (#960) 2023-01-05 21:36:45 -05:00
Clement Tsang
33afeb68c3
docs: make stable docs the default (#958) 2023-01-05 21:08:17 -05:00
Clement Tsang
2dfb8c490f
ci: add timeout to build workflow caching (#957)
* ci: add timeout and skip for cache in build workflow

* use for all
2023-01-05 20:38:49 -05:00
Clement Tsang
cb08b19646
docs: shrink GIF caption text 2023-01-04 02:38:02 -05:00
Clement Tsang
32d816fa8f
docs: update changelog 2023-01-04 02:34:17 -05:00
Clement Tsang
8f9097b90c
bug: fix CPU 'all' label missing on small sizes (#953)
Fixes the "All" label being missing on small windows.
2023-01-04 01:55:46 -05:00
Clement Tsang
0093a45be9
bug: reduce battery text cutoff in small windows (#952)
Fixes an issue where small windows would cause the battery to-X time to be cut off.
2023-01-04 01:27:15 -05:00
Clement Tsang
21f1503277
docs: update note on unofficial FreeBSD support 2023-01-02 15:45:30 -05:00
Clement Tsang
7c53f088c3
ci: add build hash to nightly builds for version (#951)
This adds the build hash to the btm -V output for nightly builds, making it easier to troubleshoot when someone might have obtained a nightly build, and what commit it corresponds to.
2023-01-02 15:18:05 -05:00
Clement Tsang
a56e7f6cc9
feature: split usage into usage percentage and value (#950)
Denotes both usage and usage percentage. This also redoes the calculation for percentage to be based on the sum of avail + used, rather than on total, as otherwise we get potentially confusing percentages.
2023-01-01 05:08:04 -05:00
Clement Tsang
d7e9fd6be0
other: run rustfmt (#949) 2023-01-01 04:35:08 -05:00
Clement Tsang
0adefababf
ci: use a better way of getting branch from tagged builds for CirrusCI (#948)
* ci: use a better way of getting branch from tagged builds for CirrusCI

* add a bit more logging
2023-01-01 03:18:47 -05:00
imgbot[bot]
543fd6c047
docs: [ImgBot] Optimize images (#947)
/assets/demo.gif -- 3,692.42kb -> 3,226.92kb (12.61%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
2023-01-01 00:59:43 -05:00
Clement Tsang
a4b5e38fd2
ci: update action-gh-release dependency (#946) 2023-01-01 00:23:11 -05:00
Clement Tsang
a956d9e9a1
ci: remove typo in chocolatey template (#944) 2022-12-31 22:08:52 -05:00
Clement Tsang
4d5a58c3ec
ci: default to master branch on tag release (#943) 2022-12-31 21:50:17 -05:00
Clement Tsang
0fa11fb5c5
ci: disable cache for cross release gen (#942) 2022-12-31 21:14:18 -05:00
Clement Tsang
b7bf57481f
docs: update demo to 0.7.0 (#941)
* docs: update demo to 0.7.0

* update again
2022-12-31 20:47:33 -05:00
Clement Tsang
e654322743
docs: update debian install instructions regarding ARM 2022-12-31 17:52:31 -05:00
Clement Tsang
46884d48f0
uptick: 0.7.0 (#940) 2022-12-31 17:50:20 -05:00
Clement Tsang
3b5774117f
bug: fix search scrolling with wider Unicode characters. (#938)
This should help make search scrolling more reliable larger Unicode characters like CJK/flag characters.
2022-12-31 05:51:59 -05:00
Clement Tsang
efcf2bde29
other: use custom time chart grid implementation (#937)
Pulls in the tui-rs grid logic so I can implement custom braille painting logic. We basically "flatten" the layering logic into a single layer by replacing resetting cells if the colour is different. This avoids the multiple allocations if we used multiple layers as intended with tui-rs.

This gives us chart results similar to the current stable version, but with a flamegraph similar to the current master branch.
2022-12-30 03:06:48 -05:00
Clement Tsang
21a21b86c0
ci: clean all workflow caches to script (#936) 2022-12-30 00:56:27 -05:00
Clement Tsang
32da5f39bb
bug: fix dot marker setting not being considered (#934)
* bug: fixes marker settings being ignored while rendering time charts

* appease clippy
2022-12-27 06:37:47 -05:00
Clement Tsang
0a9a6cfa60
docs: fix readme workflow shield (#935) 2022-12-27 06:37:31 -05:00
Clement Tsang
d8da12ffab
ci: add a timeout for builds and CI (#930) 2022-12-09 03:50:49 -05:00
Clement Tsang
07fd2152f4
docs: update changelog + docs for default expansion feature (#928) 2022-12-07 04:28:43 -05:00
allcontributors[bot]
c38313abeb
docs: add sou-chon as a contributor for code (#927)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2022-12-06 19:34:53 -05:00
Chon Sou
4272dd0c2d
feature: Adding default expanded option to commandline and config (#919)
* [#822] adding default expanded option to commandline and config

* refactoring (#919)

* nullifying default expanded when in basic mode (#919)
2022-12-06 19:34:41 -05:00
Clement Tsang
1920f4b2e1
other: add a redraw event on resize (#926) 2022-12-05 04:34:19 -05:00
Clement Tsang
ac5e2ce4a2
bug: fix incorrect text width calculation (#925)
* bug: fix incorrect text calculation

* actual fix, add tests

* appease clippy

* add link to inspiration
2022-12-05 04:21:37 -05:00
Clement Tsang
d3577bd1ab
other: don't draw on non-updating events (#924) 2022-12-03 01:18:47 -05:00
Clement Tsang
5cce30c7f1
ci: fix freebsd Cirrus build script (#923) 2022-12-02 21:57:41 -05:00
Clement Tsang
3e47383b25
ci: add freebsd 12 as a build/check target (#922)
* ci: add freebsd 12 as a build/check target

* forgot to add 12 for tests
2022-12-02 20:12:49 -05:00
Clement Tsang
9c3e60e74f
other: slightly reduce the CPU time spent for draws (#918)
* other: group all dataset draws in a time chart

We used to draw each data set separately as a new canvas. Now, in one
canvas, we draw all datasets.

Note that this changes how dataset  lines are drawn - rather than
drawing one on top of another, it now draws kinda all at once. This
effect is *kinda* a bit better IMO, but it might also look a bit
more cluttered.

* other: optimize truncate_text

Flamegraphs showed that this area seems to be a bit heavy at times with
some inefficient use of iterators and collection. This change should
hopefully optimize this a bit by reducing some collections or
reallocations.

There can also be some further optimizations with less allocations from
callers.

* Reduce some redundant draws
2022-11-29 03:53:58 -05:00
Clement Tsang
913c9ed5c6
refactor: move widgets out of the app folder nesting (#917)
Moves the widget folder away from being nested in the app hierarchy.
2022-11-28 00:26:58 -05:00
Clement Tsang
8338a30752
bug: fix possible gaps with widget layout spacing (#916)
Fixes an occasional gap appearing due to how rect spacing was previously calculated.
2022-11-26 05:00:38 -05:00
ClementTsang
541867e5af
docs: clean up command line flag docs 2022-11-22 05:15:15 -05:00
Clement Tsang
27fc7a7768
other: change non-normalized shortcut (#912) 2022-11-22 05:12:35 -05:00
database64128
a0eebf3acb
bug: fix reading temperature from disabled devices (#911) 2022-11-21 15:36:06 -05:00
Clement Tsang
4f00434210
other: non-normalized process CPU% cleanup and docs (#910)
* refactor: simplify non-normalized code

* update docs

* appease clippy

* add comment

* unnormalized

* fix issues on non-Linux regarding typos/imports
2022-11-21 05:28:42 -05:00
allcontributors[bot]
f887096cea
docs: add database64128 as a contributor for code (#909)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2022-11-21 03:34:40 -05:00
Clement Tsang
db07246f67
other: don't use manual map for color name mapping (#908)
* other: don't use manual map for color name mapping

I actually don't know why I was doing it like that before.

This commit removes the phf crate, as it's not needed anymore.

* update test
2022-11-21 03:34:33 -05:00
database64128
71bc6c940e
feature: per-core process cpu usage percentage (#899) 2022-11-21 03:12:47 -05:00
Clement Tsang
9e4aed7d56
ci: bump cargo deb in CI (#906) 2022-11-20 04:28:23 -05:00
ClementTsang
dd4b19866d
other: update Debian extended description 2022-11-20 03:22:22 -05:00
Clement Tsang
abff6e4a7a
bug: fix is_nan being incorrectly used to check for division by zero (#905) 2022-11-20 03:05:45 -05:00
Clement Tsang
63df220a38
other: clean up some strings (#904)
* other: clean up some strings

* formatting
2022-11-20 02:21:20 -05:00
Clement Tsang
6a0bf10760
other: some cleanup in proc widget (#903) 2022-11-20 01:13:24 -05:00
Clement Tsang
fd1badaf36
other: small linux process cleanup (#902) 2022-11-19 23:21:50 -05:00
Clement Tsang
b7ac83e926
other: shrink the timed data vector in addition to clearing (#900)
Should prevent the times series vector from possibly growing indefinitely.
2022-11-19 15:09:53 -05:00
Clement Tsang
f52b66a844
other: deduplicate sorts, always sort proc by PID first (#898)
* other: deduplicate sorts, sort proc by PID by default

* add proc test

* remove sort in Windows

* fix tree

* fix test

* Remove mut

* Add comment on sorting processes
2022-11-17 12:10:36 -05:00
Clement Tsang
a07fa305fb
bug: redirect stderr on FreeBSD to avoid drawing on UI (#897) 2022-11-17 03:18:05 -05:00
Clement Tsang
31d2e4a746
github: update bug report template OS input 2022-11-16 18:32:14 -05:00
Clement Tsang
a30c49756f
github: update bug report template 2022-11-16 18:30:32 -05:00
Clement Tsang
b2c301b1fe
deps: update sysctl to 0.5.2, procfs to 0.14.1 (#894) 2022-11-13 17:43:55 -05:00
Clement Tsang
17ca30c023
other: remove flume (#893)
In hindsight, pulling in flume is probably overkill and doesn't really
help much.
2022-11-13 01:59:45 -05:00
ClementTsang
5f29758e4c
other: update cargo husky pre-push hook 2022-11-13 01:59:32 -05:00
Clement Tsang
50768907ec
feature: add custom retention periods for data (#892)
* feature: add custom retention periods for data

* docs: update changelog

* docs: update docs
2022-11-13 01:51:10 -05:00
Clement Tsang
97bf8bf295
ci: fix missing envs in build workflow (#891)
Made a mistake in not testing properly and broke the build workflow with
missing envs.
2022-11-12 02:29:15 -05:00
Clement Tsang
f41e7cd66d
ci: unify cache keys in actions (#890)
* ci: unify cache keys in actions

* some docs

* because empty strings are false in JS

* update comment

* fix build cache naming
2022-11-11 23:45:27 -05:00
Clement Tsang
1960c40a30
ci: bump delete-tag-and-release to v0.3.1 (#889) 2022-11-11 19:44:00 -05:00
Clement Tsang
51212bcdfe
ci: switch delete-tag-and-release to personal fork to avoid node16 warning (#888) 2022-11-11 03:23:12 -05:00
Clement Tsang
5649b850a8
ci: update upload-artifact to 3.1.1 to remove set-output warnings (#887) 2022-11-11 02:48:25 -05:00
Clement Tsang
9dc6d0c0d5
other: remove the mouse throttler except for scroll events (#886)
The throttler is only really needed for scrolls (e.g. free scroll wheels
in Logitech mice), I don't really see it being needed in any other
contexts. Moves/drag is another one I guess but we outright ignore those
events right now.
2022-11-11 02:27:18 -05:00
Clement Tsang
99fc5fc2c8
refactor: run cargo +nightly fmt with group_imports (#885)
* refactor: add some disabled unstable fmt options

* run cargo +nightly fmt with group_imports

* separate out the cfg-specific imports for clarity
2022-11-10 01:22:19 -05:00
Clement Tsang
f5ec9191f2
other: try using flume for channel (#884) 2022-11-10 01:08:06 -05:00
Clement Tsang
7e6e098e2b
ci: wrap checks with try block to avoid panic (#883) 2022-11-10 00:46:45 -05:00
Clement Tsang
938c4ccd52
feature: search paste support (#881)
* feature: add pasting to search

Supports pasting events to the search bar (e.g. shift-insert, ctrl-shift-v).

* update docs

* clippy

* comment

* Update process.md

* remove keyboard event throttle

* fix issues with cjk/flag characters
2022-11-10 00:40:04 -05:00
Clement Tsang
5f849e81e6
ci: add back target as cache key (#879) 2022-11-08 20:01:13 -05:00
Clement Tsang
8101e6fa56
deps: Update tui to 0.19.0 and crossterm to 0.25.0 (#878)
* deps: update tui to 0.19 and crossterm to 0.25

* fix error

* handle breaking changes
2022-11-08 00:56:39 -05:00
Clement Tsang
e1be318177
docs: update usage and config, add blurb in home (#876)
* docs: update usage and config, add blurb in home

* add doc pages to pr template
2022-11-07 23:36:27 -05:00
Clement Tsang
76d2e83efa
docs: add a quick blurb on doc site of what bottom is (#875) 2022-11-07 02:44:30 -05:00
ClementTsang
d613fbdee9
ci: add log line for cache clearing 2022-11-06 03:48:45 -05:00
ClementTsang
442dba84e3
ci: add missing PR pull 2022-11-06 03:46:51 -05:00
Clement Tsang
7ae8e66a3a
ci: add cache clearing to PR merges (#874)
* ci: add cache clearing to PR merges

* some renaming

* small change to force cache

* add manual run option
2022-11-06 03:44:02 -05:00
Clement Tsang
29bc0b67ba
ci: rename deployment folder to scripts (#873) 2022-11-06 03:19:52 -05:00
Clement Tsang
8c3e9669b8
ci: only enable ci cache if not a PR or not a fork (#872)
* ci: only enable ci cache if not a PR or not a fork

* add to coverage
2022-11-06 02:50:45 -05:00
Clement Tsang
2b3c76bf5a
docs: update docs for disk sorting feature (#871)
* update changelog

* update mkdocs
2022-11-06 02:26:36 -05:00
ClementTsang
7f7d0cebf4
bug: fix spacing for disk table widget headers when sorting 2022-11-06 02:26:16 -05:00
Clement Tsang
36837ae8ac
feature: basic sortable disk (#870) 2022-11-06 01:34:32 -05:00
Clement Tsang
4d9f5093b2
feature: basic sortable temp (#868)
* feature: basic sortable temp

* add shortcuts

* fix missing shortcut names in header

* update changelog

* update docs
2022-11-05 19:32:14 -04:00
Clement Tsang
e6e1e9d688
deps: update nvml to 0.8.0 (#869) 2022-11-05 02:12:31 -04:00
ClementTsang
342d0da729
other: exclude more files in Cargo.toml 2022-11-05 01:00:33 -04:00
Clement Tsang
ec21306f55
deps: update sysinfo to 0.26.7 (#867) 2022-11-04 19:38:14 -04:00
Clement Tsang
6f95aaee34
ci: remove caching for release building (#866)
* ci: remove caching for release building

* standardize hyphen across some job names
2022-11-04 04:48:44 -04:00
Clement Tsang
76c3bc4254
refactor: clippy and small cleanup/comments (#865)
* refactor: small cleanup and comments in some code

* clippy

* more clippy

* fixes for macos/freebsd
2022-11-04 04:17:22 -04:00
Clement Tsang
d56b551e39
ci: try only having cancel-in-progress for non-main branch (#864) 2022-11-02 01:29:41 -04:00
ClementTsang
1adc032570
docs: update changelog for #807 2022-11-02 00:45:04 -04:00
Diana
b8c73d3a0b
More human friendly temperature sensor naming (#807)
* More human friendly temperature sensor names

This makes the names more human friendly, and possible to distinguish from each other

* Keep hwmon sensor name for GPUs

* Keep hwmon sensor name for non-GPUs too

* fix device path
2022-11-02 00:43:58 -04:00
Clement Tsang
064d740c6d
refactor: move data passing for table to another step (#863)
* refactor: remove redundant scroll direction enum

This was made redundant from the table refactor.

* add some todos/docs

* refactor: temp hack to pass in data on process
2022-11-02 00:36:55 -04:00
Clement Tsang
3296feae50
ci: unify CI workflow with one ending step (#860)
* ci: unify CI workflow with one ending step

* update PR template
2022-10-30 19:20:41 -04:00
Clement Tsang
e3ced72c2f
ci: add skip based on file changes for Cirrus tests (#859)
* ci: add skip based on file changes for Cirrus tests
2022-10-29 05:37:45 -04:00
Clement Tsang
568c48eb5f
ci: update workflows with setup-python to v4.3.0 (#858)
Updates any workflows with setup-python to use v4.3 due to node deprecation warnings.
2022-10-29 05:03:19 -04:00
Clement Tsang
99a353bade
docs: update docs lib versions as of 2022-10-29 (#857)
Updates the following document building libraries:

- `mkdocs` (1.3.1 -> 1.4.1)
- `mkdocs-material` (8.5.3 -> 8.5.7)
- `mkdocs-material-extensions` (1.0.3 -> 1.1.0)
2022-10-29 04:21:05 -04:00
Clement Tsang
8985e6ab67
ci: update comment on what build_release does 2022-10-28 00:37:24 -04:00
Clement Tsang
fec56372bb
ci: use one skip check for CI workflow (#855)
Use one single skip check job for CI like other workflows.
2022-10-27 22:00:37 -04:00
Clement Tsang
51498e1238
ci: automatically create and get build artifacts from Cirrus CI (#854)
This automatically triggers and grabs the build artifacts for systems that are only supported on Cirrus CI (as of now, FreeBSD and M1 macOS).

* ci: add cirrus build trigger script

* ci: modify build scripts to include cirrus build

* fix some stuff

* update docs

* more fixes
2022-10-27 06:27:04 -04:00
Clement Tsang
5eba26f9e5
ci: add build alias for easier build artifact URLs (#852) 2022-10-26 04:58:51 -04:00
Clement Tsang
4240a38ced
ci: test cancelling stale actions (#851)
Use Github Action's concurrency settings to cancel old actions in favour of newer ones.
2022-10-25 01:24:08 -04:00
Clement Tsang
97ba34e3f4
ci: add token secret to make codecov action more stable (#850)
The codecov action can sometimes fail; this change adds the repo codecov token to use by default to help alleviate this.
2022-10-25 00:03:39 -04:00
ClementTsang
7482e0b495
github: fix feature quest example text 2022-10-24 23:49:21 -04:00
ClementTsang
74288a8836
github: update feature request template 2022-10-24 23:48:13 -04:00
ClementTsang
045fe81af3
github: fix some issue template tags/titles 2022-10-24 18:51:00 -04:00
Clement Tsang
0b8224c015
ci: fix cirrus ci build cleanup (#849) 2022-10-21 23:26:39 -04:00
Clement Tsang
59c214b733
ci: update codecov upload action to 3.1.1 (#848)
Deals with the node12 deprecation warning.
2022-10-21 22:41:05 -04:00
Clement Tsang
3fdd7cd48e
ci: add FreeBSD and macOS M1 builds (#845)
* add OS to fingerprint cache

* simplify cirrus test script

* cleanup and add start of build script

* add nightly cron job to CCI build, add artifact

* add docs

* avoid test task if cron
2022-10-21 10:47:55 -04:00
Clement Tsang
f9732bbb9e
ci: merge all-feature and no-feature tests on Cirrus (#847)
Since it is a more limited platform for the public free tier,
particularly for macOS VMs, it seems better to combine the testing
scripts rather than using a matrix.
2022-10-20 06:41:20 -04:00
Clement Tsang
fc90c549ef
ci: update GitHub CI to remove deprecated/unmaintained actions and commands (#846)
* ci: update rust-cache to 2.0.1

* ci: update dtolnay/rust-toolchain to ba37adf

* ci: update skip-duplicate-actions to v5.2.0

* ci: update ClementTsang/cargo-action to v0.0.3

* ci: update to macos-12

* ci: update ghaction-chocolatey to 2.1.0

* ci: update upload-artifact to v3.1.0

* ci: change from actions-rs to rustsec for audit-check

* ci: stop using actions-rs for builds

* ci: update cirrus to use tlsv1.2 when curling

* ci: disable macOS ARM workflows on GHA since its built on Cirrus
2022-10-20 06:24:04 -04:00
Clement Tsang
8043a72029
ci: various Cirrus CI test fixes (#844)
Some cache and conditional fixes for Cirrus CI testing. The test tasks should only run on the default branch and on PRs.
2022-10-20 03:19:29 -04:00
Clement Tsang
530f6bf3b3
ci: add basic Cirrus CI testing for FreeBSD + M1 (#827)
* ci: add basic Cirrus CI testing for FreeBSD + M1

* add env vars

* remove curl installation from macos script

* add caching
2022-10-20 01:27:14 -04:00
allcontributors[bot]
99e4fa95d3
docs: add lroobrou as a contributor for code (#842)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2022-10-20 00:35:08 -04:00
Clement Tsang
665ec831e3
docs: update changelog for #841 2022-10-20 00:34:56 -04:00
lroobrou
ee2f6c7a72
feature: Implement PgUp and PgDown in the help dialog. (#841) 2022-10-20 00:34:00 -04:00
Clement Tsang
b879c36588
refactor: move some state code around (#839) 2022-10-16 03:10:30 -04:00
Clement Tsang
c0a5fd15b2
docs: update changelog as of 2022-10-16 (#838) 2022-10-16 01:17:04 -04:00
allcontributors[bot]
642bfd3194
docs: add jamartin9 as a contributor for doc (#837)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2022-10-16 00:08:47 -04:00
Justin Martin
dd003101a0
enable gpu mem cli and update docs for arc/gpu mem (#836) 2022-10-16 00:08:38 -04:00
ClementTsang
d99f41f17e Revert "refactor: remove heim network usage (#833)"
This reverts commit 913562e7e6867e3eb32cdb034792e01cb6e98e81.
2022-10-15 18:42:55 -04:00
Clement Tsang
913562e7e6
refactor: remove heim network usage (#833) 2022-10-15 18:24:35 -04:00
Clement Tsang
a949740c94
other: make gpu memory collection configurable (#835)
Follow-up to #794, this makes GPU memory collection toggleable.
2022-10-15 16:50:21 -04:00
Justin Martin
bd35bbdc9c
feature: add gpu ram collector for nvidia feature flag (#794)
* add gpu ram collector for nvidia feature flag

* add row for TX in basic layout

* size gpu point_vec

* use vec for mem basic widget drawing

* remove to_owned

* code review: change mem tuple to struct with cfg fields, rename mem_basic ratio and use vec macro for layout

* build on freebsd
2022-10-15 15:08:48 -04:00
Clement Tsang
41970d9c64
other: add quick test for building clap app (#834) 2022-10-15 07:27:56 -04:00
Clement Tsang
8b72a33f40
refactor: move point definition to tui_rs widget (#832) 2022-10-13 15:40:19 -04:00
allcontributors[bot]
e68a7bdfdc
docs: add mrivnak as a contributor for doc (#831)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2022-10-13 15:26:57 -04:00
Mike Rivnak
51c02c6305
docs: Update gentoo install instructions (#830) 2022-10-13 15:26:35 -04:00
Clement Tsang
b6a75db1b4
refactor: switch to pipe gauge implementation for basic cpu + mem (#829)
* refactor: switch to pipe gauge implementation for basic cpu + mem

* fix incorrect new basic cpu chunking scheme, revert to old one
2022-10-13 10:17:26 -04:00
Clement Tsang
436dadb683
refactor: switch to associated type for SortsRow (#828) 2022-10-12 19:02:54 -04:00
ClementTsang
df13d12551 Revert "ci: add basic Cirrus CI testing for FreeBSD + M1 (#826)"
This reverts commit 577165292c7f58d8ca10c56f787180f690136fd0.
2022-10-12 17:54:02 -04:00
Clement Tsang
577165292c
ci: add basic Cirrus CI testing for FreeBSD + M1 (#826) 2022-10-12 17:45:45 -04:00
Clement Tsang
2a740f48f7
refactor: tables V2 (#749)
* refactor: move to new data table implementation

* more work towards refactor

* move disk and temp over, fix longstanding bug with disk and temp if removing the last value and selected

* work towards porting over CPU

work towards porting over CPU

fix typo

partially port over cpu, fix some potentially inefficient concat_string calls

more work towards cpu widget migration

some refactoring

* sortable data

sortable data

more refactoring

some sort refactoring

more refactoringgggg

column refactoring

renaming and reorganizing

more refactoring regarding column logic

add sort arrows again

* move over sort menu

* port over process

port over process

precommit

temp

temp two, remember to squash

work

fix broken ltr calculation and CPU hiding

add back row styling

temp

fix a bunch of issues, get proc working

more fixes around click

fix frozen issues

* fix dd process killing

* revert some of the persistent config changes from #257

* fix colouring for trees

* fix missing entries in tree

* keep columns if there is no data

* add and remove tests

* Fix ellipsis
2022-10-12 16:25:38 -04:00
Clement Tsang
1e5f0ea2d9
bug: add bindings to grab ppid in some cases on macos (#825) 2022-10-11 19:49:39 -04:00
Clement Tsang
e7b31dfb96
docs: add note on target-cpu=native when manually installing 2022-10-10 20:13:41 -04:00
Clement Tsang
a965e53c6c
fix wrong unit being used for memory in sysinfo data (#824)
* fix wrong unit being used for memory in sysinfo data

* update sysinfo to 0.26.4 for unsupported reasons w/ ntapi
2022-10-07 19:15:11 -04:00
allcontributors[bot]
f44aac189c
add hervyqa as a contributor for doc (#821)
* update README.md [skip ci]

* update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2022-10-02 05:00:12 -04:00
Hervy Qurrotul Ainur Rozi
2811a8a985
docs: add voidlinux install instructions to README (#820) 2022-10-02 04:59:57 -04:00
Clement Tsang
c4d164cfe1
docs: update mkdocs-material to 8.5.3 (#819) 2022-09-29 02:28:27 -04:00
Clement Tsang
94d238a437
other: remove some build script triggers (#818) 2022-09-28 04:31:58 -04:00
ClementTsang
dfd21f57dc
other: bump to 0.6.9 for nightly to avoid confusion for now 2022-09-25 17:25:44 -04:00
Clement Tsang
7fec637360
bug: fix missing temp path locations to check on Linux (#816)
* bug: fix missing temp path locations to check on Linux

* remember to divide by a thousand in thermal_zone
2022-09-23 00:48:58 -04:00
Clement Tsang
cf95f2c2a6
github: update bug report desc for non-release 2022-09-23 00:09:48 -04:00
ClementTsang
3d2c40ce2f
docs: update changelog for device sleep and m1 temp 2022-09-18 05:15:37 -04:00
Clement Tsang
e80e07a716
refactor: minor cleanup of linux disk code (#813)
Since we no longer use heim for Linux disk checking, we can remove the
async reliance and update some file names/comments to be more
appropriate to the current state of the code. We also do some small
cleanup.
2022-09-18 05:13:27 -04:00
Clement Tsang
cc048de3b0
refactor: replace heim temp conversion code (#811) 2022-09-17 23:43:40 -04:00
ClementTsang
10efe75fbd
docs: update some contribution documentation 2022-09-16 05:16:58 -04:00
allcontributors[bot]
de78824470
docs: add DianaNites as a contributor (#809)
* update README.md [skip ci]

* update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2022-09-16 05:09:35 -04:00
Diana
c3e4a95d04
Replace heim with sysfs and dont wake devices (#805)
* Replace heim with sysfs and dont wake devices

This commit replaces heim sensor reading with manual sysfs sensor reading, and skips reading sensors for any device that is in ACPI D3cold

This has the notable downside of still keeping a device awake, which I hope to solve in a later commit

* Update docs

They were referring to files i ultimately decided against using in this implementation, and so were no longer relevant to document.

* has_temp check should be before reading hwmon_name

* should_read_temp doesn't have to be mutable

* Fix sensor for zenpower kernel module
2022-09-16 05:06:17 -04:00
Clement Tsang
c6c7fb3a30
deps: update sysinfo to 0.26.2 (#806)
* deps: update sysinfo to 0.26.2

This dependency update has some nice things in store for us:
- MacOS M1 temperature support
- Bevy of bug fixes

* update documentation

* some fixes
2022-09-16 04:42:24 -04:00
Clement Tsang
a427a9d2f2
other: add zfs to deploy feature set (#808) 2022-09-14 05:50:34 -04:00
ClementTsang
e369e1286f
docs: update README 2022-09-12 19:38:57 -04:00
Clement Tsang
5973e6db72
docs: adjust dev doc file structure, add build and deploy docs (#804)
* docs: add separate section on development

* docs: update instructions on writing docs

* docs: add build and deploy docs
2022-09-12 04:14:19 -04:00
Clement Tsang
72189185b6
other: sort Cargo.toml (#802) 2022-09-07 23:51:08 -04:00
Clement Tsang
46a2a3a52b
other: Clarify help menu (#800)
* other: clarify that numbers are for help menu

* bug: fix incorrect overscroll check, should be min
2022-09-03 04:04:03 -04:00
Clement Tsang
726e727de6
docs: note that freebsd is not on stable for now 2022-08-31 13:05:14 -04:00
Clement Tsang
14808b3a2e
ci: completion/manpage generation script spring cleaning (#795)
* ci: spring cleaning of completions autogen

This commit changes a few things/cleans up stuff:
- Completion and manpage generation now drops the files off in
  `./target/tmp/bottom` rather than arbitrarily in the build directory.
  This was originally done because I was lazy and just needed it to work
  in CI, but it's kinda gross if you want to build the manpages in your
  own directory.
- CI was updated to handle this.
- Only run if the `BTM_GENERATE` env var is actually non-empty.

* docs: update for manpage/completion gen

* ci: auto delete autogen comp/manpage dir

* ci: fix incorrect mv for autogen

The mv was too late, should be earlier in the workflow.

* ci: specify shell in autogen delete

* docs: more updates to manpage/comp docs

* ci: unify env vars

* ci: skip autogen on build-msi
2022-08-30 18:25:16 -04:00
Clement Tsang
28b5095770
github: update wording for packaging issues 2022-08-24 10:01:20 -04:00
Clement Tsang
0ec3e5afbb
github: update packaging issue template (#791) 2022-08-23 19:29:30 -04:00
ClementTsang
c891ff8865
docs: update changelog for PR #784 2022-08-23 13:33:04 -04:00
allcontributors[bot]
90c56a9f3b
docs: add jamartin9 as a contributor for code (#789)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2022-08-22 02:48:01 -04:00
Justin Martin
6e0bc96093
feature: Add zfs feature flag for arc memory (#784)
* freebsd clippy

* add arc support

* Code Review: moved runtime cfg checks to compile time and formatting

* remove compile platform checks

* add zfs feature flag to get_arc_data
2022-08-22 02:47:22 -04:00
ClementTsang
11657aa0ab
docs: update changelog 2022-08-19 19:29:08 -04:00
Clement Tsang
1d0801ce71
docs: update mkdocs-material to 8.4.0 (#788) 2022-08-19 19:07:36 -04:00
Clement Tsang
3c21147509
github: update version placeholder in bug template 2022-08-17 23:04:22 -04:00
Clement Tsang
80d659bf8c
github: update issue link and wording 2022-08-17 23:03:48 -04:00
Clement Tsang
c01e3bca71
github: add note on coverage/tests in PR template 2022-08-17 11:30:13 -04:00
ClementTsang
658b8c720f
refactor: minor tweak to update_position code 2022-08-15 00:50:27 -04:00
ViridiCanis
f5e2b7242a
feature: clamp scrolling (#775)
* clamp scrolling when trying to go beyond the top or bottom

* add more 'do nothing' cases to `update_position`

* adjust tests to clamping scrolling

* fixup! add more 'do nothing' cases to `update_position`

* fixup! clamp scrolling when trying to go beyond the top or bottom

* fixup! fixup! clamp scrolling when trying to go beyond the top or bottom
2022-08-15 00:45:27 -04:00
Clement Tsang
3016a3d6a2
refactor: change max_scroll_index usage to better reflect name (#783)
Tweaks `max_scroll_index` usage in the help menu to better reflect its name of being a max index, not a max index bound.

For example, before, the index could not be equal to or more than `max_scroll_index`, but the name would have implied that it should be less than or equal to it.
2022-08-14 18:21:48 -04:00
Clement Tsang
79a0f20825
github: tweak wording of PR 2022-08-14 18:17:01 -04:00
ClementTsang
05eb740fc3
docs: fix allcontributor file 2022-08-14 17:58:45 -04:00
ClementTsang
249a28f661
docs: fix allcontributor typo 2022-08-14 17:58:07 -04:00
Clement Tsang
e9d5c7e071
Merge pull request #782 from ClementTsang/half_page_scroll_doc
Half page scroll doc
2022-08-14 17:55:39 -04:00
ClementTsang
582cd308eb
docs: add half-page scroll shortcut to docs 2022-08-14 17:51:04 -04:00
ClementTsang
4984b85704
docs: update changelog for half page scroll change 2022-08-14 17:50:41 -04:00
allcontributors[bot]
10062c7899
docs: add ViridiCanis as a contributor for bug, code (#781)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2022-08-14 17:47:18 -04:00
ViridiCanis
5da7411d3c
Feature: half page scrolling (#774)
* add ctrl-u/ctrl-d to process table

* add help text for ctrl-u/ctrl-d

* add ctrl-u/ctrl-d to help dialog

* store height of help menu, fix overscroll with half page down on help menu

Co-authored-by: ClementTsang <34804052+ClementTsang@users.noreply.github.com>
2022-08-14 17:47:03 -04:00
Clement Tsang
2e0771d483
ci: update release build OS to ubuntu 20.04 (#780)
Due to the deprecation of Ubuntu 18.04 as a runner target this PR updates the OS to 20.04 (see https://github.com/actions/runner-images/issues/6002), the next supported version of Ubuntu.
2022-08-13 12:14:51 -04:00
Clement Tsang
fcb8cac0d5
ci: add ARM macOS to build workflow (#779)
Adds macOS ARM to the build workflow for nightly/release.
2022-08-13 11:53:07 -04:00
Clement Tsang
4e2a25ac68
github: update PR template wording for testing 2022-08-13 11:38:50 -04:00
ClementTsang
56bb3657a4 clippy: fix clippy eq warning 2022-08-13 11:34:17 -04:00
ClementTsang
83284e2dba docs: edit docs regarding M1 macOS support 2022-08-13 11:31:29 -04:00
Clement Tsang
b62b93f551
github: update some wording in issue template 2022-08-09 14:23:17 -04:00
allcontributors[bot]
fd8346112a
docs: add xgdgsc as a contributor for doc (#772)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2022-07-26 14:08:13 -04:00
xgdgsc
bc74e0b73b
docs: fix dead link (#771) 2022-07-26 14:08:03 -04:00
Clement Tsang
39f04fb22c
docs: mention FreeBSD works (#769)
Update some documentation to mention (currently unofficialish) FreeBSD support.
2022-07-24 06:53:34 -04:00
Clement Tsang
31bd2ca19f
docs: bump mkdocs to fix markdown breaking exts (#770)
The markdown Python lib seems to be causing some issues with certain
extensions. Bumping mkdocs to 1.3.1 seems to resolve this issue (the
alternative is pinning markdown to < 8.4.0).
2022-07-24 06:50:52 -04:00
allcontributors[bot]
5bf05eb558
docs: add wezm as a contributor for code (#768)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2022-07-23 20:46:34 -04:00
Wesley Moore
577fda96fc
Implement support for FreeBSD (#766)
* WIP FreeBSD support

* Implement get_cpu_data_list for FreeBSD

* Implement disks for FreeBSD

It doesn't work though as sysinfo doesn't make the device name available.

* Use libxo to read process cpu info on FreeBSD

* Populate get_io_usage with libxo too

Actual I/O stats still aren't populated though as there's not an
easy source for them.

* Share more processes code between macos and freebsd

* Extract function for deserializing libxo output on FreeBSD

* Implement filtering of disks in FreeBSD

* Clean up memory data collection

* Update module docs
2022-07-23 20:44:29 -04:00
Clement Tsang
510aa5c404
ci: try simpler cross/cargo action for builds and tests (#767)
Uses a personal action for simpler invocations of cargo/cross commands.
2022-07-16 00:34:18 -04:00
Clement Tsang
e33603d8ee
ci: try to update cross to 0.2.4 (#764)
Try to update to the newest cross version after 0.2.2 had some bugs causing a rollback to 0.2.1 (see #755).
2022-07-12 05:22:15 -04:00
Clement Tsang
121632760d
bug: fix total read/write units having /s (#763)
Fixes the total read/write columns in processes using the wrong unit (having /s).
2022-07-07 05:45:30 -04:00
Clement Tsang
d3a187b529
docs: bump mkdocs-material to 8.3.9 (#762) 2022-07-07 05:30:49 -04:00
Clement Tsang
04d1218f65
feature: add note on how to exit if running in non-terminal (#761)
Addition to #760, adds an extra message so users know how to exit in this scenario.
2022-06-29 01:15:37 -04:00
Clement Tsang
baf844244d
feature: add check for whether the output is to a terminal (#760)
Adds a warning if the user is calling bottom from an environment where the output is not a terminal.
2022-06-28 23:00:52 -04:00
Clement Tsang
2a183c642b
other: exclude some files in Cargo.toml (#759)
Excludes unnecessary files from being included in `Cargo.toml`. This mostly consists of files like mkdocs and asset files for the README.
2022-06-28 20:39:43 -04:00
ClementTsang
9116f5277f github: fix some styling with the bug report form 2022-06-27 20:33:39 -04:00
ClementTsang
f0ec5a5f5f github: fix some issues with the bug report form 2022-06-27 20:30:28 -04:00
Clement Tsang
f0ace2588e
github: try new issue form template (#758)
Trying out Github's new issue form for bug reports.

If it doesn't look good or go well I'll revert.
2022-06-27 20:27:47 -04:00
Clement Tsang
4ca68b621d
ci: fix missing target in tests (#757)
Fix missing target parameter for primary test targets (e.g. aarch64), and adjust integration tests to work with cross.
2022-06-27 01:36:45 -04:00
Clement Tsang
6468f8af58
ci: lock cross to 0.2.1 on CI as well (#756)
Locks CI to cross 0.2.1.
2022-06-25 23:03:14 -04:00
Clement Tsang
89f7705e21
deployment: force usage of cross 0.2.1 for now (#755)
Locks cross in deployment builds to 0.2.1, as 0.2.2 seems to break some things for now.
2022-06-25 22:22:30 -04:00
Clement Tsang
2912859e52
ci: bump cargo-llvm-cov to 0.4.8 (#754) 2022-06-24 23:03:44 -04:00
Clement Tsang
4fa1fc7f58
docs: bump mkdocs-material to 8.3.8 (#753)
Bumps mkdocs-material to 8.3.8, which contains some bug fixes.
2022-06-24 20:24:40 -04:00
ClementTsang
d7536faf10 other: bump codecov to 30%
Since codecov is just used as a basic overview of test metrics,
I just set the threshold to something somewhat high.

Also removed codecov from README as it's not really representative of
much.
2022-06-24 17:08:45 -04:00
Clement Tsang
372659094b
docs: bump mkdocs-material to 8.3.5 (#751)
Bumps mkdocs-material to 8.3.5 (https://github.com/squidfunk/mkdocs-material/releases/tag/8.3.5).
2022-06-15 03:46:48 -04:00
Clement Tsang
c6f5d5488a
docs: re-enable lib docs for development purposes (#750)
Enables lib docs, primarily intended for dev use. Also change some existing documentation based on warnings (mainly broken/bare links).
2022-06-14 18:31:32 -04:00
Clement Tsang
122373aff7
docs: bump mkdocs-material to 8.3.3 (#748)
Bumps mkdocs-material to version 8.3.3.

See https://github.com/squidfunk/mkdocs-material/releases/tag/8.3.3 for more details
2022-06-08 21:39:16 -04:00
ClementTsang
d0cb61a4c2 docs: some small updates to README and issue templates 2022-06-05 18:29:14 -04:00
Clement Tsang
c1a7979be7
refactoring: Move around components and state (#746)
A small refactor to move some state/component files around in terms of file structure and code location. Should have no effect on logic.
2022-06-03 04:49:39 -04:00
Clement Tsang
0c648ed14a
ci: try moving to rust-toolchain (#745)
action-rs' action seems to not be really maintained anymore and
throws some redundant warnings that kinda clog up outputs. As
such, I feel like moving to a more active action is probably worth it.
2022-06-02 18:04:51 -04:00
Clement Tsang
7e1a0a9744
ci: bump checkout to v3 (#744)
Bumps `checkout` calls to v3.
2022-06-02 15:05:43 -04:00
Clement Tsang
6745736622
deployment: unify build release action between nightly/deploy (#743)
Unifies nightly and deployment workflows using a shared action yml file to avoid as much duplication. Also updates the download-artifact action to v3.
2022-06-02 05:10:17 -04:00
Clement Tsang
8689492ae5
refactor: unify all mod.rs structure to 2018 style (#742)
This is a pretty small change, but at least _for now_, unifies all
`mod.rs` use cases to the 2018 style for consistency.

I personally don't mind going back to it on a case-by-case basis in the
future if it results in cleaner code, though.
2022-06-02 03:24:30 -04:00
Clement Tsang
dae3c07cd7
ci: update cargo_llvm_cov to 0.4.4 (#741) 2022-05-31 10:06:31 -04:00
Clement Tsang
f62e094507
docs: update part on ARM .deb builds 2022-05-29 13:47:30 -04:00
Clement Tsang
54d042ac56
deployment: deletes the debian folder in case of unwanted leftover files (#740)
Deletes the generated debian folder in nightly/deploy workflows, as I don't want to cache it.
2022-05-28 17:40:33 -04:00
Clement Tsang
96d5b9b87d
deployment: add aarch64/armv7 gnu .deb generation (#739)
Adds .deb generation for aarch64 and armv7 gnu targets in the nightly and deploy workflows.
2022-05-28 16:14:25 -04:00
Clement Tsang
42909dba35
ci: fix missing aarch64 build (#738) 2022-05-25 17:06:38 -04:00
Clement Tsang
d03231c2e7
docs: add temporary note on .deb section about x86
Clarify that (at least for now) the built .deb file is for x86. See #736
2022-05-25 10:54:59 -04:00
Clement Tsang
c6ae6913fc
docs: bump mkdocs material to 8.2.15 (#735) 2022-05-23 20:11:21 -04:00
Clement Tsang
7fb9e00251
ci: note release sizes in nightly/deploy (#733)
Make a note of release sizes in the nightly/deploy scripts. This is mostly just in case I need to refer to it in the future (mainly for nightly, as the actual generated files are overwritten daily).
2022-05-18 19:09:50 -04:00
Clement Tsang
b986a259e1
other: make the graph legend the same color as the graph (#732)
This makes the graph legend the same color as the rest of the graph.
2022-05-17 05:42:48 -04:00
ClementTsang
a6438c6242 docs: switch nightly and stable badge order 2022-05-16 21:27:39 -04:00
Clement Tsang
1190135d37
other: add fmt to husky hook (#731)
Just adds a cargo fmt check to the husky pre-push check.
2022-05-16 21:26:20 -04:00
Clement Tsang
de765fc364
Merge pull request #730 from ClementTsang/consolidate_tables
This serves as somewhat of an intermediary refactor to unify some scrollable table code - in particular, in regards to drawing. This is almost a parallel refactor as #710, which did something similar for time graphs. However, this one has a bit more work in regards to the concepts of component state, in particular, for width calculation caching and scroll position management.
2022-05-16 21:03:20 -04:00
ClementTsang
01574c8afe bug: hide user column for non-unix 2022-05-16 15:08:46 -04:00
Clement Tsang
b65a910257
Merge pull request #729 from ClementTsang/refactor_process_widget_into_tables
Refactors how the process widget to work with the (maybe better) consolidated tables code, as well as refactoring a bunch of old logic.
2022-05-16 14:53:05 -04:00
ClementTsang
cc6d7b8ad7 bug: fix a variety of bugs
Bugs squashed:
- Incorrect column sizing for flex cases
- Case where the sort menu bounds were still existing despite being
  hidden
- Proc widget not actually taking into account the calculated row widths
  in some cases during data conversion.
2022-05-16 04:53:41 -04:00
ClementTsang
0831a56341 refactor: simplify partial ordering fn, clean up code 2022-05-15 21:02:33 -04:00
ClementTsang
1877ed5c88 refactor: remove redundant get_ordering fn, add tests 2022-05-15 21:02:33 -04:00
ClementTsang
ba362f81c9 bug: fix issues with macos and windows during refactor 2022-05-15 21:02:33 -04:00
ClementTsang
05e9cd4d4d other: delete redundant code, run clippy and fmt 2022-05-15 21:02:33 -04:00
ClementTsang
ed17264832 refactor: more work towards unifying process code
A bunch of work towards also refactoring how the process widget
gathers and converts data.
2022-05-15 21:02:33 -04:00
ClementTsang
7ee6f6a737 refactor: begin migration of process widget 2022-05-15 21:02:28 -04:00
ClementTsang
69ec526dc6 refactor: heavily simplify the old network legend 2022-05-15 05:03:42 -04:00
ClementTsang
c97126df22 refactor: move CPU graph over to new system 2022-05-07 20:53:52 -04:00
ClementTsang
9e63642e9c refactor: fix off-by-one bug with getting start position 2022-05-07 20:53:52 -04:00
ClementTsang
df1a418327 refactor: per-row styling, remove seemingly redundant table code 2022-05-07 20:53:52 -04:00
ClementTsang
2e51590bf5 refactor: don't draw header if too short 2022-05-07 20:53:52 -04:00
ClementTsang
c296b8bf5a refactor: bind the start and end ranges for tables 2022-05-07 20:53:52 -04:00
ClementTsang
64ed45083e refactor: remove unneeded freeze param 2022-05-07 20:53:52 -04:00
ClementTsang
2a65bc95fe refactor: consolidate disk and temp table drawing, refactor state
Disk and temp tables now share the same drawing logic, as well as
consolidating the "text table" states into one single state, as opposed
to two separate states (one for scroll and one for width calculations).

BTW I know this is kinda an ugly design - creating a giant struct to
call a function - hopefully that's temporary, I want to do a bigger
refactor to consolidate more stuff together and therefore avoid this
problem, but baby steps, right?
2022-05-07 20:53:52 -04:00
ClementTsang
45680dafcf docs: clean up troubleshooting page again 2022-05-07 20:01:11 -04:00
Clement Tsang
98e7fbbeab
ci: add back paths field to coverage workflow (#728) 2022-05-07 19:57:56 -04:00
Clement Tsang
a26cffce05
docs: update mkdocs-material to 8.2.13 (#727) 2022-05-07 19:57:12 -04:00
ClementTsang
c09322fdc2 docs: add even more troubleshooting documentation 2022-05-07 19:48:32 -04:00
ClementTsang
4d507d1793 docs: add more troubleshooting documentation 2022-05-07 19:38:37 -04:00
Clement Tsang
460869f281
deployment: add arm musl targets (#726)
Adds musl targets to the nightly and deployment workflows.
2022-05-07 15:53:39 -04:00
Clement Tsang
4ceaf8d008
deps: migrate to starship-battery (#724)
Migrates the `battery` dependency to the more actively maintained
`starship-battery` fork, found at https://github.com/starship/rust-battery.
See https://github.com/svartalf/rust-battery/pull/92 for more information.
2022-05-06 17:16:57 -04:00
ClementTsang
9d6d712e27 docs: update description for winget in README 2022-05-04 14:51:59 -04:00
ClementTsang
af4756c930 docs: add snap install option to README 2022-05-04 14:49:31 -04:00
ClementTsang
4fac7ab4fa github: fix typo in packaging issue template 2022-05-04 14:48:10 -04:00
Clement Tsang
dd9111467a
github: update packaging issue wording 2022-05-03 19:07:10 -04:00
Clement Tsang
9882a9bd08
ci: move cargo fmt step into supported job (#722)
Moves the rustfmt step into the supported job, to avoid having to wait too long for machine spinup time if they are separate jobs.
2022-05-01 17:53:08 -04:00
Clement Tsang
2629709c5d
Merge pull request #721 from ClementTsang/remove_cache_from_fmt
Removes the caching step from the cargo fmt check as it does nothing. Also adds an extra test for if the battery feature is disabled.
2022-05-01 17:40:22 -04:00
ClementTsang
715af44efc ci: create deploy feature; test in CI
This encompasses features that we want on deployment.
2022-05-01 17:30:20 -04:00
ClementTsang
798683b81f other: add test for battery flag if battery feature is off 2022-05-01 17:15:54 -04:00
ClementTsang
6e2ea8eeda ci: remove caching step from cargo fmt check 2022-05-01 17:12:20 -04:00
Clement Tsang
c44e860af8
Merge pull request #720 from ClementTsang/ci_shortening
Cleaned up and updated the primary GitHub CI workflow. Also fixes a bug caught during this check.
2022-05-01 17:08:53 -04:00
ClementTsang
a92313a5be bug: fix panic if battery feature was disabled 2022-05-01 16:57:03 -04:00
ClementTsang
8cc361e443 ci: clean up ci workflow 2022-05-01 16:56:40 -04:00
ClementTsang
a9da449cef ci: update rust-cache to 1.4.0 2022-05-01 15:47:30 -04:00
Clement Tsang
e646a76630
ci: disable debug symbols and incremental in CI, force locked #719
Disables incremental compilation and debug symbols in CI and other related workflows, since they're not used there at all. Also forces --locked as needed.
2022-04-29 18:15:49 -04:00
Clement Tsang
a516104dec
refactor: refactor some tests (#718)
Small PR to quickly refactor some recent tests to avoid too much duplication.
2022-04-29 16:02:34 -04:00
Clement Tsang
cddee9d923
Merge pull request #710 from ClementTsang/consolidate_component_drawing
Cleans up some drawing code and unifies all time graph drawing.
2022-04-29 01:12:14 -04:00
ClementTsang
2401e583fb refactor: consolidate time graph components
This consolidates all the time graph drawing to one main location, as well
as some small improvements. This is helpful in that I don't have to
reimplement the same thing across three locations if I have to make one
change that in theory should affect them all. In particular, the CPU
graph, memory graph, and network graph are all now using the same,
generic implementation for drawing, which we call (for now) a component.

Note this only affects drawing - it accepts some parameters affecting style
and labels, as well as data points, and draw similarly to how it used to
before. Widget-specific actions, or things affecting widget state,
should all be handled by the widget-specific code instead. For example,
our current implementation of x-axis autohide is still controlled by the
widget, not the component, even if some of the code is shared. Components
are, again, only responsible for drawing (at least for now). For that
matter, the graph component does not have mutable access to any form of
state outside of tui-rs' `Frame`. Note this *might* change in the
future, where we might give the component state.

Note that while functionally, the graph behaviour for now is basically
the same, a few changes were made internally other than the move to
components. The big change is that rather than using tui-rs' `Chart`
for the underlying drawing, we now use a tweaked custom `TimeChart`
tui-rs widget, which also handles all interpolation steps and some extra
customization. Personally, I don't like having to deviate from the
library's implementation, but this gives us more flexibility and allows
greater control. For example, this allows me to move away from the old
hacks required to do interpolation (where I had to mutate the existing
list to avoid having to reallocate an extra vector just to insert one
extra interpolated point). I can also finally allow customizable
legends (which will be added in the future).
2022-04-28 23:36:53 -04:00
Clement Tsang
e393078691
bug: fix choosing an out of list bounds selecting the last entry (#717)
This is a simple bug fix that changes the behaviour of a scroll select
(and column select) to only update if the updated position is _within_
the bounds of the list (0 to the max index, inclusive). Prior to this,
all the implementations but the disk implementation would just bound the
change. This was both inconsistent with the disk scroll state, but also
jarring since this meant a user could click on seemingly empty space but
it would somehow click on the very last entry.

This change also unifies the scroll calculation function between all the
scroll select functions. Ideally we get rid of the intermediary
functions but that might require more refactoring than I want for this
fairly simple bug fix.

The column select scroll calculation was also changed to fit this
behaviour, but it does not use the same logic as the other scroll
states. What could be done in the future is a generic implementation for
direction (or maybe just "increment vs. decrement") to share it all.
2022-04-28 22:39:33 -04:00
ClementTsang
17dbea9a09 docs: add back TOC 2022-04-28 20:37:41 -04:00
Clement Tsang
0d1b6a6d33
github: specify in the bug report that one should install from crates/bottom 2022-04-28 14:52:27 -04:00
ClementTsang
1f731358ba refactor: remove dead config screen code
This code was never used and might as well be removed for clarity's
sake.
2022-04-28 01:40:10 -04:00
ClementTsang
f68acc5c9d refactor: remove trait usage in component drawing
When I was newer to Rust, I got the weird impression that you couldn't
add functionality to a struct outside of the defining file without using
a trait.

That's obviously not true, so it's high time I got rid of it and just
made it part of the impl of the class itself, rather than declaring a
trait and then exporting/importing it.
2022-04-28 01:40:10 -04:00
Clement Tsang
b9a356f581
ci: lock cargo-llvm-cov install in script (#715)
Super small change, install cargo-llvm-cov with --locked.
2022-04-28 01:39:58 -04:00
Clement Tsang
8a133908f4
Merge pull request #714 from ClementTsang/switch_to_llvm_cov
Experiment with llvm-cov over tarpaulin.

Tarpaulin is supposed to be switching to something similar to how this works in the future as well, so I might switch back then if I switch now.
2022-04-28 01:33:57 -04:00
ClementTsang
19430a1a49 ci: reduce code cov skip conditions 2022-04-28 01:18:27 -04:00
ClementTsang
a6933d89b3 ci: try using llvm-cov instead of tarpaulin 2022-04-28 00:31:58 -04:00
Clement Tsang
476a4ad910
deps: update dependencies (#713)
Updates various dependencies in both Cargo.toml and Cargo.lock.
2022-04-27 19:23:34 -04:00
Clement Tsang
d43bd6147d
bug: change as_ref() to build in Rust beta 1.61.0 (#711)
This changes various as_ref() calls as needed in order for bottom to successfully build in Rust beta 1.61, as they were causing type inference issues. These calls were either removed or changed to an alternative that does build (e.g. as_slice()).

Functionally, there should be no change.

For context, see:
- https://github.com/ClementTsang/bottom/issues/708
- https://github.com/rust-lang/rust/issues/96074
2022-04-27 18:34:49 -04:00
Clement Tsang
2b893ea6aa
ci: increase codecov threshold to 5% (#712)
Increases codecov threshold to 5% for less annoying failures.
2022-04-27 18:19:48 -04:00
Clement Tsang
08bb933f38
docs: add some search features to mkdocs config (#704)
Enables some search features for the mkdocs config.
2022-04-11 03:54:21 -04:00
Clement Tsang
7c62822732
docs: update mkdocs-material to 8.2.9 (#701) 2022-04-10 23:57:42 -04:00
Clement Tsang
194a769b1d
ci: use locked builds in deploy and nightly (#700)
Adds --locked to the build process for nightly and deploy workflows.
2022-04-10 01:11:10 -04:00
Clement Tsang
44e6923a5d
ci: update cargo deb to 1.37 (#699) 2022-04-08 17:45:18 -04:00
Clement Tsang
d297ee4639
refactor: remove some simple as-casts (#697)
Remove some simple as casts that are easy to change to .into(), or easy to check.
2022-03-27 22:01:06 -04:00
Clement Tsang
747497cc8a
docs: mention discussions, fix broken link, update mkdocs req (#698)
Fixes a broken link, and mention when to use discussions over issues. Also updates mkdocs in the build process due to some broken dependencies.
2022-03-27 21:57:55 -04:00
ClementTsang
6fa04de2b7 docs: shorten some of the -h help dialog 2022-03-20 19:45:01 -04:00
Clement Tsang
5fb322b2b9
docs: remove "btm" from title due to confusion
It's caused two reports now because it's being mixed up with https://crates.io/crates/btm - going to remove it for now as it's likely the source of confusion.
2022-03-16 22:27:11 -04:00
Clement Tsang
f2b8b4e842
other: add manpage file to cargo deb config, move back to build script (#693)
Adds the asset for the manpage to cargo deb config. Also moves the generated manpage file to a .1.gz file. Also, moves back to a build script since that was causing some issues for the automatic Cargo.toml fields detection for manpage and completion generation.

To prevent compilation from happening every time, and only in CI, we use an env var to avoid generation steps.
2022-03-11 06:45:05 -05:00
Clement Tsang
8087f0b636
ci: add manpage generation, migrate build script (#692)
Adds manpage generation to the build process, as well as following the xtask concept of adding additional build scripts that only need to run on deploy/nightly as opposed to `build.rs`. Note this doesn't follow the recommended method of using workplaces because I don't really want to shift the entire repo structure just for this.

More on xtask: https://github.com/matklad/cargo-xtask
2022-03-10 05:15:48 -05:00
Clement Tsang
92ec359936
deps: update regex to 1.5.5 due to CVE (#691)
Prompted by the following CVE: https://blog.rust-lang.org/2022/03/08/cve-2022-24713.html

Addresses it by following the recommended fix of updating to 1.5.5.
2022-03-08 15:16:56 -05:00
Clement Tsang
01f6bddab6
deps: update clap to 3.x (#690)
Updates bottom to use clap 3.x, along with some small refactoring changes.
2022-03-07 22:53:02 -05:00
Clement Tsang
e682882aee
other: fix clippy lints on vector reference params (#689)
Fixes a few clippy lints around function parameters and using slices over vector references.
2022-03-07 18:44:45 -05:00
Clement Tsang
57e1a8285e
ci: update audit workflow (#685)
Manually install the audit crate as part of the audit CI since it seems to be using too old of a version of Rust.
2022-02-27 19:52:09 -05:00
ClementTsang
adf1e2b216 docs: update changelog 2022-02-25 14:32:44 -05:00
Clement Tsang
2eb865247e
deps: update dirs to 4.x (#682)
Updates the dirs dependency to 4.0.0. This is a breaking change but should not affect bottom.
2022-02-25 05:21:46 -05:00
Clement Tsang
5f042aef94
deps: update procfs and testing deps (#681) 2022-02-25 05:02:15 -05:00
Clement Tsang
c4c9130b4a
ci: enable strip on release builds with Cargo.toml (#679)
Removes the manual strip used in favour of the now native functionality in Cargo.
2022-02-25 02:18:22 -05:00
Clement Tsang
128ec81200
ci: switch to a manual cargo tarpaulin installation (#680)
Update to use a manual install of cargo tarpaulin, fixes the wrong filename being checked in the skip action.
2022-02-25 02:15:26 -05:00
Clement Tsang
c2bfcec40e
deps: update sysinfo to 0.23.4 (#678) 2022-02-24 23:12:37 -05:00
allcontributors[bot]
1642b570b8
docs: add shurizzle as a contributor for code (#677)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

* fix

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: ClementTsang <cjhtsang@uwaterloo.ca>
2022-02-22 06:29:48 -05:00
Clement Tsang
39597975a7
Merge pull request #676 from shurizzle/master
Add support for nvidia GPUs
2022-02-22 03:19:44 -08:00
shurizzle
c0feff3c01 Add support for nvidia GPUs 2022-02-13 00:07:44 +01:00
Clement Tsang
9ef7f5d4b7
github: update packaging issue template f/ clarity
Add the specific packaging locations that I maintain bottom on, and fix some typos.
2022-02-03 15:55:24 -05:00
ClementTsang
2849cd3026 ci: add extra field to choco template 2022-02-02 23:31:35 -05:00
Clement Tsang
5df7839d18
ci: disable 32-bit in choco generation (#671)
Seems like the 32-bit binary triggers false positives on VirusTotal.
Going to disable this for now.
2022-02-02 22:34:43 -05:00
Clement Tsang
8587af6936
uptick: 0.6.8 (#670)
Uptick to 0.6.8.
2022-02-01 21:01:32 -05:00
Clement Tsang
b59e34f159
Merge pull request #669 from Frederick888/fix-num-cpus
Refresh sysinfo CPU
2022-02-01 17:28:13 -08:00
Frederick Zhang
f54cc1a2cf
Refresh sysinfo CPU
Without this now sysinfo `sys.processors().len()` returns 0.
2022-02-02 11:41:38 +11:00
Clement Tsang
d7dc710ddb
uptick: 0.6.7 (#667)
Uptick to 0.6.7, with appropriate updates to the README and changelog.
2022-01-31 16:40:50 -05:00
Clement Tsang
61c8bfd574
docs: add a line to feature request docs/template (#666)
Just adds an extra line to the template/docs to check if an existing issue already exists.
2022-01-29 14:49:41 -05:00
Clement Tsang
6c989785fb
bug: fix issues caused by having a width that is too small (#665)
Due to a missing check, you could resize the window to a width that was too small, and it would trigger an endless while-loop for any table while trying to redistribute remaining space. This has been rectified with an explicit check, as well as a smarter method of redistributing remaining space borrowed from the rewrite.

This also adds explicit width checks for widgets that have borders; if the width is <2, before, it would panic.

Note that the rewrite I have kinda fixes all these issues already, so I don't want to invest too hard into this, but this should be fine as a patch for now.

Also note that minimal heights don't seem to be causing any issues, it just seems to be minimal widths.
2022-01-27 19:16:27 -05:00
allcontributors[bot]
255b69c15f
docs: add GuillaumeGomez as a contributor for code (#661)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2022-01-20 14:21:10 -05:00
Clement Tsang
fbd95126b0
Merge pull request #658 from GuillaumeGomez/update-sysinfo
Update sysinfo version
2022-01-20 11:20:55 -08:00
Guillaume Gomez
e195b056b0 Update sysinfo version 2022-01-20 13:00:15 +01:00
Clement Tsang
1237a35663
docs: update app descriptions (#659)
Update app descriptions across the board to be more consistent.
2022-01-19 23:49:11 -05:00
Clement Tsang
3529e484cc
ci: remove winget step (#660)
Removes the winget step from the deployment pipeline; it seems like a bot now manages winget deployments for bottom, which is nice.
2022-01-19 23:45:20 -05:00
ClementTsang
398d52af2e ci: update CFP hook secret name 2022-01-16 16:05:20 -05:00
Clement Tsang
43fe0bc9e4
docs: change wording for Cargo install in README 2022-01-11 18:02:12 -05:00
Clement Tsang
99a1965cf8
docs: center the title/description in the README (#656)
Centers the title and description in the README via some ugly HTML.
2022-01-10 01:19:31 -05:00
Clement Tsang
b8429cb401
docs: indicate stable version in selector on deploy (#654)
Adds an indicator in the form of `$version (stable)` to make it easier to see which is the most recent stable version.

This is done via CI and mike:

1. Set the previous title to just `$version`. We can get this value by `mike list stable` and grepping for valid version tags (otherwise this might have issues with `$version (stable)`).
2. Deploy `$new_version` and alias to stable.
3. Update the `$new_version` to have a new title of `$new_version (stable)`.
2022-01-01 20:45:44 -05:00
Clement Tsang
f35718b580
docs: add section on WSL in Linux known issues, update links (#653)
Update support links in documentation; add section on WSL in Linux known issues.
2021-12-31 16:50:40 -05:00
Clement Tsang
1481fe4282
ci: test installing .deb in build (#651)
Add an additional validation step to the .deb file generation in nightly and deployment workflows.
2021-12-30 20:48:56 -05:00
Clement Tsang
456efdc242
Merge pull request #649 from mati865/more-consts
Replace statics with consts where possible
2021-12-30 16:57:15 -08:00
Mateusz Mikuła
318fde3712 Remove unused constants 2021-12-31 00:41:01 +01:00
Mateusz Mikuła
e33d6b5361 Replace statics with consts where possible 2021-12-30 21:29:57 +01:00
Clement Tsang
049ea13187
docs: Make winget install more specific 2021-12-30 15:09:22 -05:00
allcontributors[bot]
6d4045a5f4
docs: add mati865 as a contributor for code (#648)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-12-28 14:33:43 -05:00
Mateusz Mikuła
72f2aeaab6
Fix Clippy warnings (#647) 2021-12-28 14:31:42 -05:00
Clement Tsang
9eabb061aa
feature: add basic page up/down scrolling (#646)
Adds page up/down scrolling support to respectively scroll up/down by a full page.

Note that this is mostly just to get the feature out for those interested, and is admittedly a bit rushed - I will be rewriting all logic involving event handling as part of state refactor anyways, so this will also get changed in the work done there, and therefore, I kinda just sped through this.
2021-12-27 18:23:11 -05:00
Clement Tsang
c92cfc644d
bug/ci: fix debian file generation breaking completions (#645)
Fixes completion file generation being broken while the .deb file is made, due to using an incorrect path.
2021-12-27 16:49:15 -05:00
Clement Tsang
cf08f935dc
deps: update time to 0.3.5 (#643)
Updates time to 0.3.5: https://github.com/time-rs/time/blob/main/CHANGELOG.md#035-2021-11-12
2021-12-23 17:31:41 -05:00
Clement Tsang
3fefcdbb11
docs: Update mkdocs file layout and config (#642)
Updates some settings regarding mkdocs. Main changes:

* Separate out support into two separate pages
* Move ToC as part of navigation
2021-12-22 18:03:33 -05:00
Clement Tsang
9a11ead991
ci: Use commit hash for some actions to pin them (#641)
Pins some actions using a specific commit hash.
2021-12-22 17:29:50 -05:00
ClementTsang
eaff52c8a4 docs: Add comment/changelog about not including guest twice 2021-12-22 14:57:15 -05:00
Clement Tsang
5526fe738d
uptick: 0.6.6 (#638) 2021-12-22 14:18:50 -05:00
Clement Tsang
d32a74ec7e
bug: Fix process CPU calculation if /proc/stat CPU line has less values than expected (#637)
Addresses a potential case where processing would fail if there were missing values from the CPU line of `/proc/stat`, and allows it to successfully return.
2021-12-21 18:17:30 -05:00
Clement Tsang
d6a112bee4
docs: disable CFP hook for now while investigating issues (#635)
Temporarily disable the Cloudflare Pages hook while investigating why mike isn't playing nicely.
2021-12-20 21:23:04 -05:00
Clement Tsang
e4339f1f2b
docs: Update changelog 2021-12-19 22:33:34 -05:00
Clement Tsang
78848ea968
docs: update mkdocs requirements (#634)
Updates the dependencies for mkdocs-related stuff.
2021-12-19 16:43:13 -05:00
Clement Tsang
a42b2cf6c8
docs: revert CFP for now (#633)
There were some weird interactions that I'm not sure about (like if you do bottom.pages.dev/asdf/ it infinitely redirects...?), so I'll revert for now.
2021-12-19 15:42:22 -05:00
Clement Tsang
8e5742d636
docs: try switching over to Cloudflare Pages (#632)
I would prefer for the project to not be under clementtsang.github.io/bottom, so let's try out CFP.
2021-12-19 15:26:10 -05:00
ClementTsang
feb6d9db2f ci: fix invalid secret param for CFP hook 2021-12-19 15:11:07 -05:00
Clement Tsang
81260a2c25
ci: adds cloudflare pages deploy hook (#631) 2021-12-19 15:07:37 -05:00
ClementTsang
97f013bccf ci: revert rename of chocolateyinstall template
This was causing issues with the choco workflow in another repo since
the name was incorrect; I've decided to also rename the template for
consistency.
2021-12-19 13:56:57 -05:00
Clement Tsang
c2e44c15e2
ci: delete homebrew deploy files (#630)
Removes homebrew deploy files, since I am no longer maintaining it on my own. I had already disabled it from the deploy process a while ago, but forgot to delete these files.
2021-12-19 13:17:18 -05:00
Clement Tsang
065ffdbc78
uptick: 0.6.5 (#628) 2021-12-19 13:04:10 -05:00
ClementTsang
49fce58c27 other: update bug report template 2021-12-19 13:03:52 -05:00
ClementTsang
1af0d7cb6e other: update PR template 2021-12-19 13:01:34 -05:00
Clement Tsang
69dcd827b6
ci: disable codecov patch (#629)
I don't really need the patch feature right now, so let's disable it.
2021-12-19 12:56:48 -05:00
Clement Tsang
44f54c5254
bug: Fix process command flag breaking sorting (#627)
Fixes the process_command flag/config not properly toggling off the name column and on the command column on initialization. This would cause sorting of that column to bug out.
2021-12-19 12:07:13 -05:00
Clement Tsang
3a95a3d6d2
ci: add run type to codecov action (#618)
This seems to be needed if I add unit tests due to the repo being both a binary and a lib.
2021-11-28 04:08:54 -05:00
Clement Tsang
c4caa87e0b
ci: switch action's accepted files back to "paths" 2021-11-28 04:04:23 -05:00
Clement Tsang
aa7db6d7e2
docs: change wording slightly for bug report contribution (#613)
Small wording updates for what is expected from bug reports.
2021-11-27 06:42:55 -05:00
Clement Tsang
a629e33f2d
docs: change contribution wording in docs page a bit (#614)
Tiny wording changes.
2021-11-27 06:41:54 -05:00
Clement Tsang
16f0913307
ci: deal with skipping, matrices, reliant jobs (#617)
This time, the problem is that since the matrix jobs rely on another job, they never trigger and clog up CI.
2021-11-27 06:39:22 -05:00
Clement Tsang
5c8757a1fa
ci: deal with skipping and matrix (#616)
Due to how matrices work with if/skipping, it seems like this ugly hack is the only way to skip CI based on the files updated without clogging the PR pipeline.
2021-11-27 06:27:51 -05:00
Clement Tsang
363138abab
ci: go back to a paths_ignore for ci workflow (#615)
Reverts to using paths_ignore for CI workflow.
2021-11-27 05:53:41 -05:00
ClementTsang
175abf5db0 docs: small wording change 2021-11-27 05:31:32 -05:00
ClementTsang
b9683a65f2 ci: be more specific with paths for ci/codecov 2021-11-27 05:31:32 -05:00
ClementTsang
305ff2a672 ci: Add test for building docs 2021-11-27 05:31:32 -05:00
Clement Tsang
afcf56e4ae
ci: actually skip ci if duplicate (#611)
Forgot the if line to actually skip ci if duplicate...
2021-11-27 05:07:39 -05:00
Clement Tsang
4e083d4a86
ci: skip duplicate runs (#610)
Skips duplicate runs in the CI/codecov pipelines.
2021-11-27 04:54:55 -05:00
ClementTsang
bc22c5f160 ci: add codecov to PR 2021-11-27 03:42:05 -05:00
ClementTsang
b20631156a docs: use more consistent badge 2021-11-25 20:52:22 -05:00
Clement Tsang
ce15731b77 ci: add codecov to docs, update workflow name (#609)
Adds a codecov badge for quick reference.
2021-11-25 20:45:08 -05:00
Clement Tsang
1f6a2a8391
ci: add codecov (#608)
Adds codecov to the workflow suite.
2021-11-25 20:40:13 -05:00
allcontributors[bot]
a64b896b17
docs: add patricksjackson as a contributor for ideas, doc (#606)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-11-19 18:56:57 -05:00
Patrick Jackson
37979ac63c
docs: Prominently display the binary name in the README. (#605) 2021-11-19 18:56:46 -05:00
ClementTsang
77ada576c5 docs: more contribution doc stuff 2021-10-19 18:29:59 -04:00
ClementTsang
4b49ddabe5 ci: add some documentation in the workflow files 2021-10-17 21:54:06 -04:00
ClementTsang
a9b808334c docs: tweak wording in README and CONTRIBUTING 2021-10-17 21:51:30 -04:00
Clement Tsang
ea0c7b49b7
deps: bump deps, remove chrono (#600)
Bumps up some dependencies and removes chrono, switching to the time crate instead.

One of side-effects of this change is that local time seems to not work (?)... so all logs are now in UTC. Oh well, this doesn't affect general user behaviour so I'm fine with it.
2021-10-17 21:33:07 -04:00
ClementTsang
6c157fe1dd
ci: allow manual triggering of audit action 2021-10-17 21:32:08 -04:00
ClementTsang
4b705572c6 ci: forgot a -r 2021-10-10 18:17:20 -04:00
Clement Tsang
65d3dd7af5
ci: simplify python dependency step for release/doc pipeline (#596)
Slightly simplifies the whole Python dependency step for pipelines generating mkdocs.
2021-10-10 18:16:21 -04:00
Clement Tsang
a362b6c9dd
ci: Create release only if the entire pipeline passes (#595)
In a similar vein to #590, we only create a release after the entire pipeline is completed and succeeds. Also fixes some incorrect job names and adds some "/'s" after directory names in the nightly pipeline.
2021-10-09 02:29:17 -04:00
Clement Tsang
a1a33e0120
ci: parallelize ci better (#594)
Parallelizes the CI workflow better.
2021-10-03 17:49:29 -04:00
Clement Tsang
31072d1952
ci: revert previous i686 change (#593)
Reverts #592, this was done incorrectly, I changed the wrong thing and I also didn't need to change said thing.
2021-10-03 17:13:14 -04:00
Clement Tsang
3c51245d35
ci: Disable cross for i686 Windows, add multilib for i686 Linux for Nightly (#592)
Disables an unnecessary use of cross for i686 Windows, and add multilib for i686 Linux since apparently that's needed now.
2021-10-03 16:44:50 -04:00
Clement Tsang
9071e37283
ci: only create nightly release if build passes (#590)
Changes the nightly build workflow to delete/create a new release *only* if the entire build process passes. This avoids a potential case of a nightly build failing but having overwritten the old one, which has happened before.

After this change lands, similar changes will probably be made to the deployment script for releases.
2021-10-03 02:42:37 -04:00
Clement Tsang
865d0dac78
other: remove redundant line in rustfmt 2021-10-02 21:32:27 -04:00
ClementTsang
96ca024acc docs: break broken image link for sample layout 2021-09-25 22:11:10 -04:00
Clement Tsang
7e71832d10
bug: remove incorrect shortcut from docs/help (#589)
Removes an incorrect shortcut. No idea when that got there.
2021-09-25 20:28:41 -04:00
Clement Tsang
caa4f38232
ci: add missing step for compressing completion files (#586) 2021-09-25 01:54:29 -04:00
Clement Tsang
e20057b97c
ci: move winget/msi and deb gen to separate steps (#585)
Moves debian and winget/msi generation to a separate job, so it can run in parallel to the other jobs.
2021-09-23 19:13:13 -04:00
Clement Tsang
b853aef752
ci: disable homebrew auto-gen (#584)
Disables homebrew CI file generation, since it's now handled by separate maintainers! See #578 for some more details.
2021-09-20 01:09:10 -04:00
Clement Tsang
05e6d3e0be
Merge pull request #580 from bowlofeggs/RUSTSEC-2021
RUSTSEC-2021-0003, RUSTSEC-2021-0093, and cargo update
2021-09-18 15:15:56 -04:00
allcontributors[bot]
ba8de4a74d
docs: add bowlofeggs as a contributor for code (#583)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-09-18 15:00:19 -04:00
Clement Tsang
f036a65135
Merge pull request #582 from bowlofeggs/bowlofeggs-0.6.4-battery-test
Feature gate test_default_battery_movement
2021-09-18 14:59:42 -04:00
Randy Barlow
9acfacb5a5
Feature gate test_default_battery_movement
test_default_battery_movement() is now feature gated on the
battery feature.

fixes #581

Signed-off-by: Randy Barlow <randy@electronsweatshop.com>
2021-09-18 13:46:01 -04:00
Randy Barlow
d6a70fcd02
Run cargo update
Signed-off-by: Randy Barlow <randy@electronsweatshop.com>
2021-09-18 12:26:30 -04:00
Randy Barlow
72e97a2eaf
RUSTSEC-2021-0003: Update smallvec
https://rustsec.org/advisories/RUSTSEC-2021-0003

Signed-off-by: Randy Barlow <randy@electronsweatshop.com>
2021-09-18 11:53:44 -04:00
Randy Barlow
7600519682
RUSTSEC-2021-0093: Update crossbeam-deque
https://rustsec.org/advisories/RUSTSEC-2021-0093

Signed-off-by: Randy Barlow <randy@electronsweatshop.com>
2021-09-18 11:53:04 -04:00
allcontributors[bot]
a12e68bbb4
docs: add adiabatic as a contributor for doc (#579)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-09-17 21:56:21 -04:00
Clement Tsang
3998e4bd1c
Merge pull request #578 from adiabatic/patch-1
README.md: bottom is in Homebrew proper now
2021-09-17 21:56:02 -04:00
adiabatic
27d69cb1dd
README.md: bottom is in Homebrew proper now 2021-09-17 17:34:59 -07:00
Clement Tsang
7e9e18faac
ci: fix deploy script for completion directory copy (#577)
Adds an explicit mkdir to the completions directory. No idea why it was bugging out before though, it worked fine on nightly builds.
2021-09-12 16:16:05 -04:00
Clement Tsang
c7626057c9
uptick: 0.6.4 (#576) 2021-09-12 14:02:11 -04:00
Clement Tsang
aabbc4fd95
bug: fix crashes for kernel patch versions > 255 (#575)
Solved by updating procfs to 0.10.1. Thanks to hasali19 for finding and looking into this!
2021-09-12 13:48:01 -04:00
Clement Tsang
d6c69ea319
ci: specify package version for post-release docs 2021-09-04 15:59:47 -04:00
Clement Tsang
81873688bc
ci: specify package versions in doc pipeline 2021-09-04 15:57:52 -04:00
Clement Tsang
eeee395cc0
ci: make audit action weekly
It really doesn't need to run daily. It now runs every Monday.
2021-08-30 17:07:48 -04:00
Clement Tsang
80ec004304
github: update wording on the bug report template
Just a small little wording update.
2021-08-30 17:05:28 -04:00
Clement Tsang
ed07fbe1cc
other: Make the battery dependency/features optional (#570)
Allows disabling of the battery dependency through a feature flag. This also aims to disable all related features.
2021-08-19 22:16:44 -04:00
Clement Tsang
2c8aea9eef
docs: Some minor wording changes in the README 2021-08-15 22:01:31 -04:00
Clement Tsang
f185c09c7e
docs: update home page text 2021-08-13 22:28:31 -04:00
Clement Tsang
2dddfcc962
docs: update edit link for doc site 2021-08-04 11:49:55 -04:00
ClementTsang
76cf7770f2 docs: fix typo 2021-07-31 16:25:38 -04:00
Clement Tsang
cb680dd12e
other: Add RISC-V to unofficially supported targets (#565)
Adds CI actions and documentation for RISC-V.
2021-07-31 16:24:16 -04:00
Clement Tsang
d1e672f263
ci: add caching to more jobs (#563)
More usage of the caching action to CI/deploy. Seems to save ~3-4 minutes on CI, not sure about deploy.
2021-07-27 18:59:17 -04:00
ClementTsang
758dfd2ee5 github: update bug report formatting 2021-07-25 22:09:15 -04:00
Clement Tsang
74645159bb
other: update default config file (#561)
Update the default config file example in the repo as of 2021-07-25.
2021-07-25 20:17:03 -04:00
allcontributors[bot]
61741015be
docs: add grawlinson as a contributor for doc, platform (#560)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-07-25 19:58:36 -04:00
allcontributors[bot]
2edd78d73a
docs: add TotalCaesar659 as a contributor for doc (#559)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-07-25 19:58:14 -04:00
TotalCaesar659
0c1d045085
Update URLs to HTTPS (#558)
This PR updates HTTP URLs to HTTPS for security reasons.
2021-07-25 19:57:04 -04:00
Clement Tsang
bacaca5548
change: add '/s' to network usage legend (#557)
Adds "/s" to the the network usage graph legend.
2021-07-23 19:51:45 -04:00
ClementTsang
a7464d25af docs: update a line in the docs 2021-07-22 14:39:14 -04:00
ClementTsang
f9e48f098d ci: Add comment on product code ps1 script source 2021-07-21 22:46:48 -04:00
Clement Tsang
b24ceea5e1
ci: remove AUR templates (#555)
Removes the AUR templates since they are no longer used in deployment workflows.
2021-07-21 22:45:43 -04:00
Clement Tsang
8aa1303b3c
ci: update winget template + deploy for more info (#554)
Adds a `ProductCode`, `Scope`, and `Commands` field to the template, as well as additional changes to the deploy process to determine + fill in the `ProductCode` automatically.
2021-07-21 22:02:00 -04:00
ClementTsang
bcbdc15b51 docs: update changelog for #551 2021-07-21 11:01:44 -04:00
Clement Tsang
e0f66fee98
docs: fix broken image link in data filtering (#553)
Fixes broken links in the documentation site.
2021-07-19 04:14:02 -04:00
Clement Tsang
895e3cddce
ci: disable AUR packaging (#551)
Since Arch builds are now maintained by a TU in the community repo, I'll be disabling AUR packaging from this point forward. Yay!
2021-07-19 01:30:52 -04:00
Clement Tsang
2d30dbf931
Merge pull request #550 from grawlinson/update_readme
docs: update reference to Arch Linux package
2021-07-18 22:22:01 -07:00
George Rawlinson
3165cb95c1
docs: update reference to Arch Linux package 2021-07-19 02:42:28 +00:00
Clement Tsang
812731ba00
uptick: 0.6.3 (#549)
Uptick README and documentation to 0.6.3.
2021-07-18 13:42:25 -04:00
Clement Tsang
2736dc9b35
refactor: switch to manual implementation of meminfo parse (#548)
Manually parse `/proc/meminfo` for the purposes of memory usage.
2021-07-17 22:27:40 -04:00
Clement Tsang
7f24e62867
bug: switch over to procfs for linux mem usage (#547)
Swap to manually calculating the mem total and usage via procfs. The usage calculation is now:

total - (free + cached + buffers + slab_reclaimable - shmem)

This follows the same usage calculation as htop. See the PR for more details.
2021-07-17 21:25:05 -04:00
Clement Tsang
4e07a28e17
bug: Fix swap calculation for Linux (#546)
Workaround for Linux heim memory units not being correct for swap.
2021-07-16 01:16:18 -04:00
ClementTsang
847027182b bug: move linux mem used to kilobytes too as workaround 2021-07-15 22:03:54 -04:00
Clement Tsang
741054e84a
bug: fix inaccuracy in memory usage/total on macOS and Linux (#545)
Fixes the accuracy of the memory widget for Linux and macOS, and uses binary prefixes instead to be more accurate.

Regarding the first part, it turns out that the way I was calculating memory usage was *slightly* incorrect for a few reasons:

- Regarding macOS, it seems like the way I was determining usage (`usage = total - available`) is not the most accurate.  The better way of doing this is apparently `usage = wire + active`, where `wire` is memory always marked to stay in RAM, and `active` is memory currently in RAM.  This seems to be much closer to other applications now.

- Regarding Linux, this was somewhat due to two issues - one was that I should have used heim's own built-in function call to get how much memory was *used*, and the other is that when heim reads info from `meminfo`, it reads it in *kilobytes* - however, the values are actually in *kibibytes*.  As such, to get the value in kibibytes, you want to actually take it in kilobytes.

  While I've filed an issue for the library, for now, I'll just manually bandaid over this.  See https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/s2-proc-meminfo for more info.

Both changes take more advantage of platform-specific methods, and as such, the change unfortunately adds some ugly platform-specific code blocks.

Side note, Windows Task Manager apparently (?) uses binary prefixes for the values behind the scenes, but displays decimal prefixes.  As such, now that we've switched to binary prefixes, it'll "seem" like the two aren't matching anymore since the units won't match, despite the values matching.
2021-07-15 18:28:41 -04:00
Clement Tsang
b0199d4d1c
bug: scaling -> scale in some docs, help, and config (#543)
Just fixing a few typos.
2021-07-14 19:30:32 -04:00
Clement Tsang
968b7bb2de
bug: Fix missing config options in docs and default config (#542)
Adds the missing hide_time and battery config option to the default config and corresponding documentation.

Should probably automate the generation of this somehow tbh, though this might change when I add in-app config (soon™)
2021-07-14 19:08:54 -04:00
Clement Tsang
7392b56364
ci: reduce the number of tests in CI (#540)
Seems like we have a few too many tests that aren't really needed for just asserting CI is passing.

The goal for CI (IMO) is just to ensure things still build on the various supported platforms after changes are made.  However, there were a few tested scenarios like Windows GNU or musl which I feel weren't really too important in this regard, and added extra time to an already long CI process.

Commented out the following tests since there aren't any architecture-specific features that require running these in addition to other already-existing tests:
- Windows GNU
- Linux musl (both x86 and x86_64)

Of course, should we add changes that directly affect these architectures, then we should add the tests back.
2021-07-12 23:02:48 -04:00
Clement Tsang
54ccbb984e
Merge pull request #539 from ClementTsang/remove_beef
Small refactor to remove the beef dependency for now.

This is likely just a tempoary change, I wanted to remove it just for clarity's sake among dependencies, and will probably add it back in the future.

For now I'll just stick to std's beef.
2021-07-12 22:43:36 -04:00
ClementTsang
70242bc2b2 refactor: remove beef dependency for now
This is just a temp change, I wanted to remove it just for clarity's
sake among dependencies, and will probably add it back in the future.

For now I'll just stick to std's beef.
2021-07-12 22:31:57 -04:00
Clement Tsang
01554758a0
docs: Tiny update to GIF caption 2021-07-11 01:49:32 -04:00
Clement Tsang
d8409130b8
Merge pull request #537 from ClementTsang/all-contributors/add-yellowsquid
docs: add yellowsquid as a contributor for code
2021-07-06 16:25:40 -04:00
Clement Tsang
f3141cf563
Merge pull request #536 from yellowsquid/master
bug: Tests try to modify user home directory
2021-07-06 16:25:30 -04:00
allcontributors[bot]
a25ff46c66
docs: update .all-contributorsrc [skip ci] 2021-07-06 20:25:13 +00:00
allcontributors[bot]
574514a308
docs: update README.md [skip ci] 2021-07-06 20:25:12 +00:00
Chloe Brown
cd1fe8b495 bug: Tests try to modify user home directory (#535)
Fixes a bug where running `cargo test` would try to create a
configuration file for the user.
2021-07-06 21:01:22 +01:00
Clement Tsang
f13905f78d
docs: Fix typo and clarify in troubleshooting step for points (#532) 2021-07-01 18:16:28 -04:00
Clement Tsang
47629326e6
ci: Add post-release action for AUR repo (#531)
Adds an additional post-release action to trigger AUR PKGBUILD actions for https://github.com/ClementTsang/aur-bottom.
2021-06-30 22:46:02 -04:00
Clement Tsang
9e81e36ed5 ci: update pkgbuilds for ARM, fix bugs (#530)
Fixes some bugs in CI and updates PKGBUILD for ARM.
2021-06-29 18:15:33 -04:00
Clement Tsang
b43091cc9f github: update packaging template 2021-06-29 18:15:28 -04:00
ClementTsang
330a9e8abd other: Remove '-nightly- from nightly version 2021-06-29 08:19:36 -04:00
ClementTsang
c628645816 docs: Fix typo 2021-06-27 20:55:39 -04:00
ClementTsang
df7d00d65b ci: remove nightly set in docs ci 2021-06-27 20:53:44 -04:00
ClementTsang
6a5a8945ed docs: Add a section in troubleshooting on snap 2021-06-27 20:40:47 -04:00
ClementTsang
8a8360726b docs + other: Mention Ubuntu in install, bump to 0.6.3-nightly 2021-06-27 20:12:09 -04:00
ClementTsang
0bbee6743f other: Add 'nightly' to version to Cargo.toml 2021-06-27 19:52:48 -04:00
Clement Tsang
a9b4d42eef
docs + ci: Update changelog and ignore some files in CI (#527) 2021-06-27 16:58:55 -04:00
ClementTsang
35510d2306 docs: Add separate links to nightly and stable 2021-06-27 16:27:54 -04:00
ClementTsang
a626eee5a7 github: Fix incorrect line in post-release script 2021-06-26 16:11:40 -04:00
ClementTsang
357ef7de18 github: fix deploy script for 2-17 again... 2021-06-26 15:47:13 -04:00
ClementTsang
103ba5ba43 github: fix deploy script for 2-17 2021-06-26 15:37:20 -04:00
Clement Tsang
985959ec1c
uptick: 0.6.2 (#526) 2021-06-26 14:03:16 -04:00
Clement Tsang
1598654bef
bug: Divide Windows process cpu usage by number of processors (#525)
Fixes a bug displaying the CPU usage of a process in Windows due to not dividing by the number of processors.
2021-06-26 02:34:32 -04:00
Clement Tsang
4569532fb1
deps: update sysinfo to 0.18.2 (#524) 2021-06-26 02:14:44 -04:00
Clement Tsang
34541a4844
docs: update old documentation links (#522) 2021-06-24 00:13:24 -04:00
Clement Tsang
b67c928f2b
docs: Switch to mike for versioning (#521)
Switches to mike to add versioning to docs.
2021-06-23 23:34:39 -04:00
Clement Tsang
93b899e745
feature: add F9 as an alternative process kill key (#518)
Adds F9 as an alternative kill shortcut to dd.
2021-06-22 20:34:00 -04:00
Clement Tsang
2b4eba8f3c
github: add config.yml for issues 2021-06-22 20:33:03 -04:00
Clement Tsang
48065c4627
github: remove questions template, try disc. 2021-06-22 20:31:09 -04:00
Clement Tsang
8f365afc33
docs: add some links to the documentation (#517)
Adds some links to the docs in the README and feature request template.
2021-06-22 10:14:26 -04:00
ClementTsang
ccc8da2819 ci: ignore README and docs for ci action 2021-06-21 22:58:04 -04:00
Clement Tsang
f1e2789b26
docs: Switch to webp, fix some sections (#514)
Switches to webp and fixes some typos/poor wording.
2021-06-21 22:53:25 -04:00
Clement Tsang
b89990db9a
docs: Touch up some photos (#511) 2021-06-21 22:35:19 -04:00
Clement Tsang
fcfd02a3f9
ci: remove zip dependency for windows (#509)
Removes the zip dependency for nightly and deploy actions.
2021-06-21 19:56:59 -04:00
ClementTsang
a3660bd27e docs: Change wording in main page for one line 2021-06-21 11:31:21 -04:00
imgbot[bot]
27009b5c75
docs: [ImgBot] Optimize images (#508)
*Total -- 2,850.89kb -> 2,439.82kb (14.42%)

/docs/content/assets/screenshots/process/process_tree.png -- 285.48kb -> 237.31kb (16.87%)
/docs/content/assets/screenshots/process/process_full.png -- 254.23kb -> 212.29kb (16.5%)
/docs/content/assets/screenshots/basic.png -- 281.83kb -> 235.41kb (16.47%)
/docs/content/assets/screenshots/process/process_sort_menu.png -- 288.35kb -> 241.01kb (16.42%)
/docs/content/assets/screenshots/process/process_default.png -- 271.25kb -> 227.63kb (16.08%)
/docs/content/assets/screenshots/process/search/quotes.png -- 263.86kb -> 222.42kb (15.7%)
/docs/content/assets/screenshots/process/search/or.png -- 97.11kb -> 82.43kb (15.12%)
/docs/content/assets/screenshots/process/process_grouped.png -- 178.66kb -> 153.12kb (14.3%)
/docs/content/assets/screenshots/network/network_old.png -- 168.70kb -> 145.37kb (13.83%)
/docs/content/assets/screenshots/troubleshooting/dots.png -- 171.26kb -> 148.07kb (13.54%)
/docs/content/assets/screenshots/temperature.png -- 54.51kb -> 47.39kb (13.06%)
/docs/content/assets/screenshots/process/search/cpu.png -- 49.89kb -> 43.78kb (12.25%)
/docs/content/assets/screenshots/disk.png -- 48.72kb -> 42.78kb (12.18%)
/docs/content/assets/screenshots/process/search/regex.png -- 45.85kb -> 40.36kb (11.99%)
/docs/content/assets/screenshots/process/search/search.png -- 39.77kb -> 35.13kb (11.66%)
/docs/content/assets/screenshots/battery.png -- 30.00kb -> 27.14kb (9.52%)
/docs/content/assets/screenshots/troubleshooting/weird_braille.png -- 59.55kb -> 54.29kb (8.83%)
/docs/content/assets/screenshots/network/network.png -- 29.21kb -> 26.68kb (8.65%)
/docs/content/assets/screenshots/troubleshooting/no_braille.png -- 158.67kb -> 147.71kb (6.91%)
/docs/content/assets/screenshots/cpu.png -- 48.80kb -> 45.56kb (6.64%)
/docs/content/assets/screenshots/memory.png -- 25.21kb -> 23.95kb (5.01%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>

Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
2021-06-21 02:09:13 -04:00
ClementTsang
8f6284581d docs: Fix some missing text in docs 2021-06-21 02:03:10 -04:00
ClementTsang
b6f5d9dc0a github: add more details to bug report template 2021-06-21 01:50:17 -04:00
Clement Tsang
53296d11d9
ci: fix doc deploy action (#507)
Fix for simple mkdocs deploy action. I'll likely rewrite this if I add versioning, which I probably will.
2021-06-21 01:48:14 -04:00
Clement Tsang
06071d5abf
docs: migrate documentation over to mkdocs (#506)
A large migration of documentation over to mkdocs, and some rewrites. Some stuff (install information, basic supported systems, contributors, thanks) are still staying in README.md, and CONTRIBUTING.md is essentially duplicated right now. However, stuff like configuration and key/mouse bindings are now moved to mkdocs.

Some parts are still a bit WIP - it is definitely not done (documentation never seems to be...). However, it should be "good enough" for now, and I'm much happier working with the documentation in this form than trying to scroll through a giant endless README.md file. It also works much better for adding new documentation.
2021-06-21 01:40:58 -04:00
imgbot[bot]
a6f6df9ff8
[ImgBot] Optimize images (#505)
/assets/battery.png -- 166.21kb -> 142.22kb (14.43%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>

Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
2021-06-20 20:29:51 -04:00
Clement Tsang
3313e88334
bug: Fix battery widget color and mouse (#504)
Fixes two bugs causing the battery widget colours and mouse events to be broken.
2021-06-20 20:28:44 -04:00
Clement Tsang
e3ebc48ce8
refactor: Fix clippy lint for entry vacancy check (#503) 2021-06-18 18:35:19 -04:00
allcontributors[bot]
5d3d96dead
docs: add herbygillot as a contributor for doc (#502)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-06-18 14:51:45 -04:00
Herby Gillot
cbe76bcc4f
docs: add MacPorts instructions (#501) 2021-06-18 14:51:34 -04:00
allcontributors[bot]
2de6b3ec54
docs: add dakyskye as a contributor for doc (#499)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-06-15 11:38:52 -04:00
Lasha Kanteladze
e3f75f36d7
docs: mention GURU overlay in installation instructions (#497) 2021-06-15 11:38:12 -04:00
Clement Tsang
0c3f9daa56
ci: distribute completion files separately (#494) 2021-06-11 18:43:53 -04:00
Clement Tsang
63f9ed6199
deps: Switch back from dirs-next to dirs (#492)
Since it's supported again, seems like a good time to switch back to
dirs.
2021-06-06 18:58:53 -04:00
allcontributors[bot]
2e5c08152a
docs: add briandipalma as a contributor (#491)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-06-02 17:14:12 -04:00
Brian Di Palma
0296843a4f
docs: List macOS as also supporting XDG config directory (#490) 2021-06-02 17:14:03 -04:00
ClementTsang
1346b4de3e docs: update README 2021-05-31 00:40:37 -04:00
Clement Tsang
60a759c416
github: update wording in question template 2021-05-31 00:34:28 -04:00
Clement Tsang
733d0795db
refactor: remove old traces (#486)
Removes some old trace lines for cleanup
2021-05-23 00:29:31 -04:00
ClementTsang
b03c53d1ef github: update PR template 2021-05-22 22:58:16 -04:00
Clement Tsang
6847f2ff0c
refactor: split up data collection by OS (#482)
Refactor to split up data collection by OS and/or the backing library. The goal is to make it easier to work with and add new OS support, as opposed to how it was prior where we stored OS-independent implementations all in the same file.
2021-05-15 21:57:02 -04:00
Clement Tsang
39c5ee991e
github: more CI tweaks (#483)
Tweak PR CI a bit more.  Remove complete step, change check name, add comments.
2021-05-15 21:30:30 -04:00
Clement Tsang
3f7f9d2ccc
github: fix nightly mocking (#481)
Hopefully fixes the mock build capabilities for nightly when testing.
2021-05-15 17:20:28 -04:00
ClementTsang
1eb3d3bc38 github: remove mocking from nightly 2021-05-15 13:43:27 -04:00
Clement Tsang
ee6228c2b6
refactor: switch to procfs library (#479)
Switch the Linux proc parts to the procfs library: https://crates.io/crates/procfs.
2021-05-13 23:41:43 -04:00
ClementTsang
1e7668fcaa github: make fail-fast false for rustfmt and clippy 2021-05-13 23:20:08 -04:00
Clement Tsang
3ba42fb0fc
github: move tests ci into check (#478)
Moves cargo test into the cargo check block.
2021-05-12 23:21:09 -04:00
Clement Tsang
655cb986a1
github: add old Linux build to nightly/deploy for older glibc (#477)
Since we're moving all 16.04 ubuntu builds to 18.04, I thought this would be a good idea in case anyone needed it.

Not sure if we should have just made ALL Linux builds use the older Linux container... for now I'll just make one extra build.
2021-05-12 22:53:18 -04:00
Clement Tsang
f4c30b10d0
github: Update ubuntu instances due to deprecation (#476)
Updates ubuntu version in CI due to GA deprecation warnings.
2021-05-11 21:04:24 -04:00
Clement Tsang
b1b1e94e6b
uptick: 0.6.1 (#475) 2021-05-11 19:03:15 -04:00
Clement Tsang
0ac449e573
bug: forgot to create memory usage string when collapsed (#473)
Adds a line to actually build the string of the summed memory usage. I forgot to make the string after summing the values.
2021-05-11 01:38:36 -04:00
ClementTsang
0f49b89e78 github: update homebrew install instructions 2021-05-10 19:28:33 -04:00
Clement Tsang
c67ba4c497
github: Remove strip from Windows deploy/nightly (#472)
Removes `strip` from the Windows build in deploy/nightly.  It seems to cause VirusTotal to report some false positives.
2021-05-09 23:19:01 -04:00
Clement Tsang
1c67a885f5
docs: update choco install description 2021-05-09 22:53:45 -04:00
ClementTsang
4b70c5edcc github: update deployment process for winget files 2021-05-09 20:05:02 -04:00
ClementTsang
d63f169d70 fix missing quote in homebrew template 2021-05-09 19:21:28 -04:00
ClementTsang
5a41e0d70e docs: fix changelog entry 2021-05-09 19:21:11 -04:00
Clement Tsang
244a17cbef
uptick: 0.6.0 (#471)
Update versions to 0.6.0.
2021-05-09 17:51:05 -04:00
Clement Tsang
6b14983c71
docs: update demo gif for 0.6.0 (#470)
Updates the demo gif in the README for 0.6.0.
2021-05-09 17:20:16 -04:00
ClementTsang
e22618e627 docs: add solus in ToC 2021-05-09 16:48:49 -04:00
Clement Tsang
1d33441f7b
other: lower the timer for multi-digit in dd times (#469)
Lowers the timer for multi-digit inputs in dd.

I'm going to eventually completely rewrite the input part for the entire application though, but this will do for now.
2021-05-09 16:47:14 -04:00
Clement Tsang
574c2c1df7
change: switch from sysinfo to heim for cpu usage in macOS and Windows (#467)
Due to #404, I've just moved all CPU usage calculations over to heim.
2021-05-09 01:39:42 -04:00
Clement Tsang
e367a37b1a
deps: Update dependencies 2021-05-08 (#466)
Did not update crossterm (and tui-rs) since it seems to have resulted in a massive CPU usage increase. Also fix minor clippy error with a duplicated to_string call.
2021-05-08 19:55:01 -04:00
ClementTsang
5e56c3bc0b docs: Formatting in README 2021-05-08 19:24:06 -04:00
allcontributors[bot]
2c472d24d5
docs: add georgybog as a contributor (#465)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-05-07 19:45:49 -04:00
georgybog
513d18bbba
docs: add solus install instructions to README (#464) 2021-05-07 19:45:34 -04:00
Clement Tsang
ae59489466
other: make advanced kill default (#463)
We make the advanced kill menu the default instead. You can opt out with disable_advanced_kill.
2021-05-06 23:35:30 -04:00
Clement Tsang
fbfa708d1d
change: Adds advanced kill option to default config text (#462)
Adds advanced_kill to the default config gen.
2021-05-06 22:34:22 -04:00
Clement Tsang
df13859ef2
other: Remove vscode folder (#461)
Removes the .vscode folder.
2021-05-06 00:19:41 -04:00
Clement Tsang
f98fa4a5f4
change: remove gap between CPU and columns in basic (#460)
Removes the gap between the CPU section and other columns in basic mode.
2021-04-24 15:08:19 -04:00
Clement Tsang
d4a18aea75
bug: Fix mouse hitboxes (#459)
Fixes the mouse hitbox checks overextending by 1. Also reverts the bandaid fix done for #458.
2021-04-23 23:13:42 -04:00
Clement Tsang
fcc478a1eb
bug: Fixes basic mode mouse hitboxes being broken (#458)
Fixes basic mode having broken click hitboxes (they were 1 unit too long in both directions). I'm pretty sure normal mode does too, but it's less noticeable due to bounding boxes.
2021-04-23 19:31:35 -04:00
imgbot[bot]
280bcbead2
docs: [ImgBot] Optimize images (#457)
*Total -- 76.76kb -> 58.86kb (23.32%)

/assets/disk_name_mount_filter.png -- 24.58kb -> 17.70kb (27.97%)
/assets/disk_no_filter.png -- 36.56kb -> 28.63kb (21.7%)
/assets/disk_name_filter.png -- 15.62kb -> 12.53kb (19.8%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>

Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
2021-04-23 00:07:23 -04:00
Clement Tsang
0148432b15
refactor: Take clippy nightly suggestions into account (#456)
Refactor in regards to clippy nightly. Mostly deals with suggestions with duplicate code on multiple branches.
2021-04-23 00:06:07 -04:00
Clement Tsang
f33bb42c5b
feature: Add mount filtering, rework filter priority logic (#455)
This PR accomplishes two things:

1. This PR aims to add mount_filter to the config file. This allows a user to filter their disk widget entries by the mount name as well; this was particularly a problem in trying to address #431.
2. A slight rework of how the filter system works due to the need of being able to manage two potentially conflicting filter sources, since the disk widget will now potentially filter on both the disk name and the mount name.

In regards to the second point, the new behaviour is as such:

1. Is the entry allowed through any filter? That is, does it match an entry in a filter where is_list_ignored is false? If so, we always keep this entry.
2. Is the entry denied through any filter? That is, does it match an entry in a filter where is_list_ignored is true? If so, we always deny this entry.
3. Anything else is allowed.

This main (breaking) change is really the third point. This would mean that temp_filter and net_filter, when set to allow listed entries with is_list_ignored = false, are kinda... useless, as a whitelist in the scenario of being the only filter is kinda pointless. But hopefully this shouldn't be a problem...?
2021-04-22 23:43:12 -04:00
Clement Tsang
d9fd6be2cc
other: update built-in themes list in config (#452)
Adds nord and nord-light as part of the description in the pre-defined config file.
2021-04-13 17:15:30 -04:00
Clement Tsang
cc03d57f37
change: Add decimal to disk values larger than 1GB (#451)
A bit of a followup to #449, this adds decimal places for values over 1GB in regards to disk usage. This affects the disk widget (for the read/write per second) and process widgets (total read, total write, read/write per second).
2021-04-09 16:14:01 -04:00
Clement Tsang
8c7e85b923
change: Tweak default light colour scheme (#450)
Removes/tweaks some really light colours that might cause issues with a white background. For example, yellow on white didn't look so great, so I adjusted the memory/rx colours for this mode.
2021-04-09 15:57:54 -04:00
Clement Tsang
edb29a43b9
change: Add decimal to actual memory usage in proc (#449)
This change adds a decimal + single digit to memory usage values over the 1 GiB threshold. Otherwise, there is no visible change.

(Note to self: implement the per-column width system soon, this change causes some values to potentially look a bit weird in mem-non-percent mode as it is if the value is really large, like 530.2GiB pushing right up against the column width, but it's currently tied to mem-percent mode. Ugh.)

Also revert a change made by accident where I switched to a decimal prefix system (GB) for memory values. This has been reverted back to a binary prefix (GiB).
2021-04-09 15:43:34 -04:00
Clement Tsang
e824eafdb2
github: Reword some parts of bug report template 2021-04-08 23:29:09 -04:00
Clement Tsang
e63a0b4082
refactor: Unify disk conversion to string step (#446)
Refactor to unify the process disk usage -> string into one function.
2021-04-07 20:52:29 -04:00
Clement Tsang
5bd9e4f6ae
feature: Collapsing in tree mode sums usage to parent (#445)
For the process widget, we now sum the resource usage of the child processes on the parent entry when collapsing in tree mode.

Note that if you search to filter, and collapse, it will not sum the pruned values (values that cannot be seen).  This is partly because I'm a bit lazy, and partly because I think this behaviour makes sense.

For example, let's say I search for a process with 4 child processes "AA, AB, BA, BB", with CPU usage 0.1, 0.2, 0.3, 0.4 respectively.  Assume the parent process has 0 usage.

- Without filter, it sums to 1.0
- With a filter on A, it would sum to just 0.3
- With a filter on AA, it would sum to 0.1

I think this is fine because I'm treating this as summing any child that is still *visible* somehow.  Summing unseen values would probably be weird as it would look like it's not adding up.

Further note that if you had, say, a child "CC" with a usage of, say, 2.0, and its parent of "AB", and you searched for CC in our above example, you would get a sum of 2.2.  This is because AB is still visible by the fact that CC was the searched process, and AB must still exist (albeit faded out) in the tree hierarchy, and as such will still be displayed.
2021-04-05 01:19:17 -04:00
Clement Tsang
405ce64a02
refactor: Switch from fnv to fxhash (#444)
Switches to fxhash from fnv, which should be a bit faster.
2021-04-04 20:48:19 -04:00
Clement Tsang
476aaff45c
change: Make proc widget unit consistent with disk (#443)
In particular, use non-binary prefixes for disk and memory usage in a process. Ideally everything is configurable by the user, but this is fine for now IMO until I can get around to doing in-app config.
2021-04-04 17:03:52 -04:00
Clement Tsang
eb6a737d34
feature: Rework network y-axis, linear interpolation for off-screen data (#437)
Rewrite of the y-axis labeling and scaling for the network widget, along with more customization. This still has one step to be optimized (cache results so we don't have to recalculate the legend each time), but will be done in another PR for sake of this one being too large already.

Furthermore, this change adds linear interpolation at the 0 point in the case a data point shoots too far back - this seems to have lead to ugly gaps to the left of graphs in some cases, because the left hand limit was not big enough for the data point. We address this by grabbing values just outside the time range and linearly interpolating at the leftmost limit. This affects all graph widgets (CPU, mem, network).

This can be optimized, and will hopefully be prior to release in a separate change.
2021-04-04 05:38:57 -04:00
allcontributors[bot]
40f4c796f8
docs: add vlakreeh as a contributor (#442)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-03-23 19:37:38 -04:00
Zeb Piasecki
c79956843e
bug: Fix getpwuid segfault (#440)
Fixes a rare segfault if a uid does not have a passwd entry. The unsafe block at https://github.com/ClementTsang/bottom/blob/master/src/app/data_harvester/processes.rs#L137 can return a null pointer as specified at https://www.gnu.org/software/libc/manual/html_node/Lookup-User.html.
2021-03-23 19:37:28 -04:00
allcontributors[bot]
b8fb78a769
docs: add pvanheus as a contributor (#441)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-03-23 19:36:33 -04:00
Clement Tsang
de28d24272
github: Update questions template 2021-03-23 16:53:25 -04:00
Clement Tsang
32e3de58f9
docs: Mention the nightly version in the README 2021-03-19 16:39:01 -04:00
Clement Tsang
4d46e7159b
ci: Add cache back again (#435)
* ci: Add cache back again

* comments
2021-03-12 21:41:48 -05:00
pvanheus
d8f8a92b55
feature: Add support for displaying load average (#392) 2021-03-12 20:03:25 -05:00
Clement Tsang
fd41c1367c
github: modify PR template to specify screenshots 2021-03-12 06:20:31 -05:00
Clement Tsang
637a3949dd
ci: Test macOS ARM and Linux armv6 (#430) 2021-03-04 14:24:21 -05:00
Clement Tsang
d5c2ce6607
other: Add fish completions to homebrew template (#427) 2021-03-03 16:12:45 -05:00
Clement Tsang
53d8bdae32
feature: User info in proc widget for Unix-based systems (#425)
Adds users into the process widget (for Unix-based systems).  This shows only in non-grouped modes, similar to state.  Search is also supported.

In addition, a quick fix to prevent users from being in grouped mode when they tried to enter tree mode while grouped.
2021-02-28 17:40:55 -05:00
ClementTsang
c406d95699 ci: Lock cargo deb version to 1.29.0 2021-02-24 20:42:47 -05:00
Clement Tsang
fe74328647
bug: Fix bugs with disk widget and disk encryption (#423)
Two issues were highlighted as a result of using either Void Linux with disk encryption, or just disk encryption on Linux in general:

Two fixes:
1. Fixes a failed `usage()` call in the `get_disk_usage` function from failing the entire result.  Now it only returns an entry with N/A results.  This occurred in some distros and disk encryption setups, for example, the one for Void Linux here: https://docs.voidlinux.org/installation/guides/fde.html.

2. Fixes a potential mapping issue with disk encryption on Linux in general.  Since the disk might map to `/dev/mapper/whatever`, but the I/O harvester was using another name, the mappings would not match.  As such, we now also check if a symlink exists; if it does, then we take it and work out the correct path.  This also fixes the disk name being wrong.
2021-02-24 20:23:35 -05:00
Clement Tsang
25a0a7b1d0
ci: Fix typo 2021-02-21 14:21:13 -05:00
Clement Tsang
ade40a5af8
ci: Add sleep to nightly build script after delete 2021-02-21 14:19:53 -05:00
Clement Tsang
3c76b17c27
change: Alter Nord's border colour (#422)
Updates the border colour on the Nord colour scheme to look less jarring.
2021-02-20 18:37:42 -05:00
Clement Tsang
cb1191ff35
deps: Update various deps as per 2021-02-19 (#420)
Major update is tui-rs from 0.13 to 0.14.  This change allows us to update our tables to make them look nicer!
2021-02-19 17:57:39 -05:00
Clement Tsang
f2975c3a7c
change: Don't jump to top when using sort shortcuts (#418)
For consistency, we now don't automatically jump to the top of the list when using a sort shortcut. This behaviour already occurred with the sort menu and sorting by mouse clicks, so this is just now more consistent (and IMO less annoying, you can also always jump to the top via gg).
2021-02-19 01:22:19 -05:00
Clement Tsang
e6c9187928
bug: Fix sorting menu and sort shortcuts not syncing in gui (#417)
Fixes sorting menus and shortcuts not syncing correctly if the sorting window is open.
2021-02-19 01:02:21 -05:00
Clement Tsang
e6230ef156
bug: fix inconsistent spacing with grouped vs non-grouped in the process widget (#416)
Fixes grouped mode having different spacing than non-grouped mode.
2021-02-18 19:15:07 -05:00
Clement Tsang
4db39da75e
feature: Add mouse support to sorting columns (#413)
Adds mouse support for sorting columns within the process widget. You can now click on the column header to sort (or invert the sort).
2021-02-18 17:10:51 -05:00
Clement Tsang
ce9818d935
ci: Fix nightly build config again... (#412) 2021-02-18 02:18:54 -05:00
Clement Tsang
67f5531019
ci: Fixes an incorrect action in the nightly build workflow (#411) 2021-02-18 01:32:44 -05:00
Clement Tsang
4555a113b6
ci: Fix incorrect nightly CI name 2021-02-18 01:18:53 -05:00
Clement Tsang
f68ea7bce9
ci: Create nightly build CI (#410) 2021-02-18 01:18:04 -05:00
Clement Tsang
cf14abe37d
feature: Add ctrl-w and ctrl-h support in the search (#409)
Ctrl-w deletes one word backwards from the current cursor location. Ctrl-h is just an alias for backspace.
2021-02-16 18:07:41 -05:00
Clement Tsang
e437b14922
feature: Allow toggling advanced kill menu (#408)
Allows toggling the advanced kill menu via --advanced_kill or advanced_kill=true.
2021-02-15 22:23:22 -05:00
Clement Tsang
fb7b1226fd
feature: add nord and nord-light colours (#406)
Adds colour schemes for Nord, along with a light variant.
2021-02-15 14:12:43 -05:00
Clement Tsang
f2e6b9232d
deps: Update beef as per RUSTSEC-2020-0122 (#402) 2021-02-03 15:07:13 -05:00
ClementTsang
c94e1e821b docs: Reorder some of the changelog items 2021-01-31 14:19:26 -05:00
ClementTsang
233ce96473 github: Change text for release deployment script 2021-01-31 14:19:07 -05:00
ClementTsang
f8ff0360e9 docs: remove other errant typo in README 2021-01-30 20:29:07 -05:00
ClementTsang
425f4877de docs: Update changelog, revert formatting typo in README 2021-01-30 20:26:38 -05:00
Clement Tsang
58e18da0c3
uptick: 0.5.7 (#399) 2021-01-30 20:23:18 -05:00
Clement Tsang
d48e6cd7e0
bug: Workaround for strange rendering when there are <4 CPU entries reported (#398)
So it seems that tui-rs doesn't like rendering my CPU bars if the height is exactly 1. It needs at least 2. I have no idea why, this is probably something weird with how I render.

This, of course, breaks when there is only one row to report (i.e. with a dual core setup in #397).

The workaround switches the gap between the CPU and mem/net parts to 0, and increases the CPU's draw height by 1, only when the height is otherwise 1 (so the draw height is now at least 2). This does have the side effect of including an extra line to the side borders, but I think it's fine.
2021-01-25 02:21:33 -05:00
allcontributors[bot]
9822478454
docs: add Frederick888 as a contributor (#396)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-01-21 20:54:05 -05:00
Frederick Zhang
b8d3b68e75
feature: Use ps as fallback to query CPU usage under macOS (#390)
When running without elevated permissions under macOS, sysinfo cannot
query states of processes by root user, which results in 0.0% CPU usage
for all this kind of processes (and state = Unknown).

Here we use `ps`, which has SUID, as a fallback to query CPU usages.
This can be potentially applied to other properties if needed in the
future (we'll need a proper struct and parser).
2021-01-21 20:53:55 -05:00
allcontributors[bot]
3dd748c2f4
docs: add ehamberg as a contributor (#393)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-01-20 01:55:29 -05:00
Erlend Hamberg
5e28f0c538
feature: Show Celcius/Fahrenheit with degree symbol (#391) 2021-01-20 01:55:18 -05:00
Clement Tsang
e30518bf62
bug: Fix missing sorting arrow when for non-% mem (#389)
Fixes a bug where you could make the sorting arrow disappear in the mem column if you did:

1. Go to proc widget
2. Switch to memory values from %
3. Press `m`
2021-01-12 21:41:59 -05:00
Clement Tsang
c57ce0b45a
docs: Add more details for WSL/WSL2 known issues 2021-01-10 15:44:39 -05:00
Clement Tsang
fd29cb0b45
docs: Mention WSL may have some issues for now. 2021-01-10 14:29:46 -05:00
ClementTsang
f7244d2927 docs: Update changelog with #386 2021-01-05 22:21:27 -05:00
Clement Tsang
cfddb7e223
bug: Fix hide table gap option not working in battery widget (#386)
Fixes the `hide_table_gap` option not working with the battery widget.
2021-01-05 22:18:56 -05:00
ClementTsang
429978d1aa docs: Update support list 2021-01-02 16:33:52 -05:00
Clement Tsang
90be9730a6
feature: Add network interface filtering (#381)
Adds a new option in the config file to filter out network interfaces.  Also add the option to filter by whole words.

Interface follows that of the existing ones:

```toml
[net_filter]
is_list_ignored = false
list = ["virbr0.*"]
regex = true
case_sensitive = false
whole_word = false
```
2021-01-01 18:09:28 -05:00
ClementTsang
d8d72d060d docs: Mention that root may be needed on macOS 2020-12-29 18:32:54 -05:00
ClementTsang
148df99a77 docs: Mention Windows temp needing elevated access 2020-12-29 15:36:33 -05:00
ClementTsang
7e16475b76 other: Add reference to why we use sysinfo for Windows network detection for now 2020-12-29 15:35:06 -05:00
Clement Tsang
60d0117c85
feature: Add process_command to default to the process command (#379)
Adds a `process_command` flag and config option to default to showing the full command in the process widget on startup.
2020-12-28 14:34:32 -05:00
Clement Tsang
30b2c2ea05
feature: Adds uid and gid collection (no GUI yet) (#375)
Just adds uid and gid collection to the process collection step. This does not add GUI changes, that'll come later.
2020-12-27 10:25:04 -05:00
Clement Tsang
c864f53d24
other: Comment out cross ARM targets (#376)
Comment out some linkers set in `.config/cargo.toml` for ARM targets.
2020-12-26 16:24:06 -05:00
ClementTsang
40c3dd46e4 docs: Update README for show_table_scroll_position 2020-12-25 14:38:56 -05:00
ClementTsang
2bad8f2d72 other: re-enable table scroll position 2020-12-25 14:34:25 -05:00
ClementTsang
2f0cecf817 docs: Update changelog 2020-12-22 02:21:14 -05:00
Clement Tsang
23ad597d18
bug: Fixes incorrect colours being used the CPU widget in basic mode (#373)
Fixes the colour order being off in basic mode, and not using the average CPU colour.
2020-12-22 02:19:46 -05:00
Clement Tsang
9d1f3c9ac2
feature: Hide SWAP graph and legend in normal mode if SWAP is 0 (#372)
Firstly, note this currently won't affect basic mode. There is code changes due to it, but instead, we'll just display `0.0B/0.0B` instead. I'm personally not really sure if we want to get rid of it in basic mode, since it'll leave an ugly gap in that mode.

Anyways, this change is mainly for the normal mode. All this does is hide the legend entry and chart if the total SWAP drops to 0 KB. It also has a small change to do a unit check on the memory used, as well as slightly adjusting the calculation we use.
2020-12-22 01:12:13 -05:00
Clement Tsang
837c382ee9
refactor: Cut out sysinfo from Linux builds (#368)
Refactors to use only heim for Linux builds. This is now much easier to do since the 0.1 version of heim works fine for ARM. This is ideal since having to rely on two separate sources of data isn't the greatest if we can avoid it.

Sysinfo is still required for macOS and Windows, though. Temperature sensors do not work for those from heim, and for some reason, networks also don't work on Windows with heim...?

My personal CPU core calculation is also currently Linux-only, and as such, I'll still rely on sysinfo for Windows and macOS for now.

This isn't really a big optimization or anything btw. Just something I wanted to try.
2020-12-21 20:24:27 -05:00
Clement Tsang
e014d6fb78 github: Add link to latest release in bug report 2020-12-21 16:57:37 -05:00
ClementTsang
45dde6f0da github: Update bug report 2020-12-21 16:57:26 -05:00
Clement Tsang
82b39e361d
other: Turn off debug and turn on LTO in release profile again (#367) 2020-12-18 00:40:55 -05:00
Clement Tsang
bfdaa09e3a
uptick: 0.5.6 (#362) 2020-12-17 18:42:08 -05:00
Clement Tsang
682f6493d1
refactor: re-use heim for ARM targets if possible (#360)
Use heim on ARM targets again where appropriate.
2020-12-17 17:57:38 -05:00
Clement Tsang
061cdb913b
bug: Fix missing component list refresh (#361) 2020-12-17 17:38:41 -05:00
Clement Tsang
4471ecc161
deps: Update various dependencies (#358) 2020-12-16 00:41:54 -05:00
allcontributors[bot]
068d5ce9c3
docs: add LlinksRechts as a contributor (#357)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2020-12-15 21:39:31 -05:00
Lukas Rysavy
120da2c85a
feature: Fine grained kill signals on unix (#263)
* feature: added signal selection for killing in unix

* feature: set default signal to 15 (TERM)

* feature: selecting kill signal number with number keys

* feature: mouse selection of kill signals

* fix: restore working previous kill dialog for win

* bug: more fixes for killing on windows

* feature: made two digit number selection only work in time window

* feature: replaced grid with scrollable list for kill signal selection

* fix: handling scrolling myself

* chore: replaced tui list with span
so we actually know for sure where the buttons are

* feature: always display cancel button in kill signal selection

* chore: simplified as suggested in review

* fix: made scrolling in kill list more intuitive

* fix: differentiating macos from linux signals

* fix: fixed reversed kill confirmation movement

* chore: fixed unused warnings for windows

* feature: added G and gg keybindings for kill signal list
2020-12-15 21:39:17 -05:00
Clement Tsang
49cfc75aca
deps: Update to heim 0.1 (#354) 2020-12-15 21:34:45 -05:00
Clement Tsang
7272786e86
uptick: 0.5.5 (#356) 2020-12-15 00:05:18 -05:00
Clement Tsang
508fe50b3c
Add --no-default-features to PKGBUILD (#355) 2020-12-14 23:36:17 -05:00
Clement Tsang
5d7697d3da
refactor: More minor optimization changes (#353)
- Move data rather than cloning during data transferring step
- Try using beef?
2020-12-12 21:06:46 -05:00
Clement Tsang
766fe25c55
refactor: Use feature flags to avoid building with fern and log (#351) 2020-12-11 20:39:32 -05:00
Clement Tsang
8c4ad90e67
refactor: Another small optimization pass (#350)
Making some small changes that would hopefully improve performance a bit.

- Remove redundant string generations for CPU data conversion
- Switch to fnv for PID hashmap and hashsets
- Use buffered reading to avoid having to store too many lines as strings
2020-12-11 19:54:02 -05:00
Clement Tsang
86135e466c
bug: Fix incorrect cpu colour matching again in all position (#349)
Turns out there was yet another bug with the CPU colour allocation. I had forgotten to use the same index calculation for the "all" position.
2020-12-11 16:14:17 -05:00
Clement Tsang
74f4b386d7
uptick: 0.5.4 (#348) 2020-12-10 22:57:54 -05:00
Clement Tsang
fd003f84da
bug: Fix some performance regressions (#344)
Fixes some performance regressions and forgotten cleanup.

Changes to attempt to improve performance to match 0.4.x:

- Remove `trace!` and `--debug` for now.  These were a significant hog.  Removing this dropped initial memory usage by about half.
- Add additional cleaning step for `pid_mapping`  during process harvesting.  This should hopefully improve memory usage as time goes on.
- Slightly change how we do sorting to hopefully be a bit more optimal?  This was just an easy change to make that I spotted.
- Fix broken cleaning child thread task.
2020-12-10 22:29:25 -05:00
Clement Tsang
030f4ddd6a
ci: Switch to musl for homebrew linux (#347)
Move from gnu to musl to avoid glibc issues.
2020-12-10 20:11:34 -05:00
Clement Tsang
aef386913e
ci: Use ubuntu-16.04 for linux gnu deploys and CI 2020-12-10 04:00:06 -05:00
Clement Tsang
ce020a7429
bug: Fix missing states in processes (#345)
Fixes another change breaking states from showing in processes.
2020-12-10 00:03:55 -05:00
Clement Tsang
19cdc269fb
refactor: Refactor some canvas code (#342) 2020-12-08 22:34:21 -05:00
Clement Tsang
f4b8386063
refactor: Rename battery_harvester to batteries (#340) 2020-12-05 18:51:21 -05:00
Clement Tsang
5531255135
docs: Add FAQ document (#339) 2020-12-04 20:11:38 -05:00
Clement Tsang
e56367fcbb
refactor: Clean up some parts of data harvesting (#336) 2020-12-03 23:45:54 -05:00
Clement Tsang
86169871cb
refactor: Simplify data harvesting (#335)
Refactors the data harvesting system function names.
2020-11-30 19:40:17 -05:00
Clement Tsang
867b8d43e9
deps: update dependencies (#334) 2020-11-28 18:29:23 -05:00
Clement Tsang
3260ff4663
feature: Add scroll indicator to keep track of table position in widgets. (#333)
Adds the option to enable an "out of" indicator for scrollable table widgets (using --show_table_scroll_position).
2020-11-28 15:37:06 -05:00
Clement Tsang
a9c1197075
ci: Fix post-deploy step to actually use the correct files (#332)
Previously it was CURL-ing from a non-existent URL, giving the wrong SHA hashes.

Changed to upload the binaries as artifacts and using those directly.
2020-11-27 10:50:25 -05:00
ClementTsang
7131a05e62 uptick: 0.5.3 2020-11-26 19:36:01 -05:00
Clement Tsang
41b8dd61d0
bug: Fix inverted battery colours (#331)
Fixes colour theming for batteries being flipped.
2020-11-26 19:14:27 -05:00
Clement Tsang
380571cf73
ci: Fix some bugs/typos with the deploy script and components (#329)
- Fix bug with choco and homebrew using incorrect bash syntax causing broken downloads.  Why this didn't fail, idk.
- Add tag entry for manual runs to make it easier to deploy/re-run
- Fixed some typos
- Fixed incorrect string in choco python script
2020-11-26 03:28:56 -05:00
Clement Tsang
cfa4e5eb99
ci: Move post deploy steps to main deploy script 2020-11-26 00:07:38 -05:00
ClementTsang
da58835124 ci: Fix incorrect path. 2020-11-25 22:18:49 -05:00
ClementTsang
7e9943fa34 ci: Fix post-deploy script 2020-11-25 21:46:04 -05:00
ClementTsang
781691d3c9 uptick: 0.5.2 2020-11-25 20:39:37 -05:00
Clement Tsang
a634934e3d
bug: Fix inverted hide_avg_cpu option in config (#327) 2020-11-25 20:30:16 -05:00
ClementTsang
da27b69704 docs: Update choco version 2020-11-23 03:18:56 -05:00
Clement Tsang
6aa0dd64a6
other: Switch to once_cell (#324)
Switch from lazy_static to once_cell.
2020-11-22 16:44:40 -05:00
ClementTsang
5abb1ce1a3 other: update default config.toml 2020-11-22 13:26:58 -05:00
Clement Tsang
0bf885a8cc
ci: Fix windows deployments (#323)
Fixes an issue in the windows deployment action.
2020-11-22 12:40:29 -05:00
ClementTsang
7887de2aba ci: Fix missing CARGO_HUSKY_DONT_INSTALL_HOOKS in pkgbuild template 2020-11-22 10:39:52 -05:00
ClementTsang
691f411283 ci: Fix homebrew deploy template using wrong autocomplete file 2020-11-22 10:32:46 -05:00
ClementTsang
8d40d9bbef ci: Fix post-deploy script 2020-11-22 09:54:24 -05:00
Clement Tsang
788501abef
ci: Fix deployment GitHub Action script (#322) 2020-11-22 04:18:47 -05:00
Clement Tsang
31c9d346b9
ci: Add downloads for windows in post-deploy 2020-11-22 03:55:23 -05:00
ClementTsang
2d127f198e ci: uptick to 0.5.1, fix ci 2020-11-22 02:33:48 -05:00
ClementTsang
e8238daa64 ci: Add initial github actions ci 2020-11-21 15:28:46 -05:00
ClementTsang
e04ce4fa1b bug: [skip travis] Fix use_old_network_legend
This was caused by invalid widths being set for the maximal widths in
the table.  This made it impossible to draw.
2020-11-21 14:56:34 -05:00
ClementTsang
99d04029f0 bug: [skip travis] Add a better check for default colors in the config file 2020-11-21 14:49:44 -05:00
ClementTsang
6ef1d66b2b bug: [skip travis] remove nord from possible values 2020-11-20 22:43:28 -05:00
ClementTsang
f8b1c48ff4 ci: [skip travis] Fix typo in completion generation... 2020-11-20 22:22:13 -05:00
ClementTsang
1e901623d5 ci: [skip travis] some github actions stuff... 2020-11-20 19:36:39 -05:00
ClementTsang
edd7c32f6c docs: [skip travis] fix weird italics 2020-11-20 17:29:24 -05:00
ClementTsang
c47c65c8e5 ci: Remove some redundant comments. 2020-11-20 17:17:27 -05:00
ClementTsang
cdf193552b ci: [skip travis] fix missing fi 2020-11-20 17:14:38 -05:00
ClementTsang
1cb580b91f docs: Update README and changelog for 0.5.0 2020-11-20 14:47:55 -05:00
ClementTsang
79acbf9462 docs: Update changelog 2020-11-20 00:15:54 -05:00
Clement Tsang
2ff8b418b2
feature: add tree flag (#312)
Adds a --tree flag that defaults to tree mode for the process widget.
2020-11-20 00:13:46 -05:00
Clement Tsang
5fedf8a5db
other: update gruvbox and some documentation (#310) 2020-11-19 23:32:57 -05:00
Clement Tsang
92636f3bf9
feature: Add mem_as_value flag (#309)
Adds a new flag, --mem_as_value (and its corresponding config option, mem_as_value = true), which defaults to showing process memory values by their amount rather than percentage.
2020-11-19 00:28:04 -05:00
Clement Tsang
c0a8c347e1
bug: remove buggy auto-generated CPU colour implementation (#308)
Removes the random automatically generated colours for the CPU metrics. This was not supported in all terminal emulators, and would cause some of them to break (namely macOS Terminal).

Instead we'll default to colours we can be more certain will work and loop through them as required. Users can still override these colours with their own.
2020-11-18 20:00:31 -05:00
Clement Tsang
669b245367
feature: Add collapsible tree entries (#304)
Adds collapsible trees to the tree mode for processes. These can be toggled via the + or - keys and the mouse by clicking on a selected entry.
2020-11-18 01:28:53 -05:00
Clement Tsang
e43456207b
feature: default colour schemes (#296)
Adds some default colour choices to choose from.
2020-11-15 05:16:47 -05:00
allcontributors[bot]
4573194cec
docs: add dm9pZCAq as a contributor (#301)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2020-11-14 17:37:15 -05:00
dm9pZCAq
6377652167
docs: Add Gentoo installation instructions (#299) 2020-11-14 17:36:58 -05:00
Clement Tsang
1e787829cd
docs: Add nix installation instructions (#294) 2020-11-03 00:22:17 -05:00
Clement Tsang
d0254dfb08
deps: update anyhow, crossterm, futures, regex, thiserror, toml (#293)
Updates dependencies to their most recent versions as of Nov 02, 2020.
2020-11-02 23:52:45 -05:00
Clement Tsang
1d35e1c8b4
refactor: Better responsiveness when resizing cpu basic widget (#292)
Gives better and less jank responsiveness when resizing the window in narrow sizes for the cpu basic widget.
2020-11-02 23:41:57 -05:00
Clement Tsang
e8358f8f47
bug: fix incorrect basic cpu spacing (#291)
Fixes a bug with CPU spacing on basic mode.
2020-11-02 22:39:02 -05:00
Clement Tsang
9e858713fd
github: update cron check to 00:00 EST 2020-11-02 21:03:00 -05:00
Clement Tsang
3d9c6b757f
bug: fix incorrect offset for cpu list in cpu basic widget (#289)
Fixes the CPU basic widget showing incorrect data due to an incorrect offset when displaying the data.
2020-11-02 20:59:54 -05:00
Clement Tsang
5df1764e90
bug: fix incorrect CPU colour offset (#290)
Fixes an incorrect offset affecting the CPU colour when scrolling.
2020-11-02 20:29:34 -05:00
Clement Tsang
465a433d0d
clippy: fix unwrap_or_else usage (#286)
Removes some unwrap_or_else calls when unwrap_or would suffice that were caught by clippy nightly.
2020-11-02 15:19:38 -05:00
Clement Tsang
271592936b
deps: Bump dependencies that require uom <0.29.0 (#274)
Updates dependencies that depend on uom (battery and heim), due to requiring 0.30 for the newest nightly version of Rust.
2020-11-02 15:04:54 -05:00
Clement Tsang
309ebd8dc3
deps: switch from dirs to dirs-next (#285)
Addresses RUSTSEC-2020-0053.
2020-11-01 22:03:29 -05:00
Clement Tsang
7e16e3467b
ci: Add extra build targets on release (#283) 2020-11-01 19:48:25 -05:00
allcontributors[bot]
dcd4bdfeec
docs: add runlevel5 as a contributor (#282)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2020-11-01 12:13:14 -05:00
Trung Lê
ebe63c84ec
ci: Add ppc64le pipeline (#281) 2020-11-01 12:12:49 -05:00
ClementTsang
d9472c6a42 github: Add cargo-audit cron job 2020-10-31 20:40:50 -04:00
ClementTsang
01a5e6b44e github: update bug report template to mention installation method 2020-10-25 21:53:24 -04:00
ClementTsang
548dda044c other: Change cargo-husky pre-push to stable 2020-10-25 21:49:13 -04:00
Clement Tsang
05b39d29ae
feature: Add simple indicator for when data updating is frozen (#269) 2020-10-17 23:26:03 -04:00
Clement Tsang
b8606c41b9
refactor: Remove redundant as_ref() calls (#268)
Minor refactor to remove redundant `as_ref()` calls.
2020-10-17 18:35:21 -04:00
Clement Tsang
914079868f
bug: Fix widget highlighting styling for dialogs (#266)
Fixes styling for dialog titles.  Cherry picked from commit 06573becfa3c089ac4b2a17c9443f84b6a5af3e8.
2020-10-13 02:45:01 -04:00
Clement Tsang
5675d8192c
other: more traces to debug, update some deps (#264)
Minor update to update some dependencies and remove some traces.
2020-10-02 22:12:07 -04:00
Clement Tsang
ba7738e73e
bug: terminate threads, fix blocking poll in input (#262)
Bug fix for improper use of threads, where they were not properly terminated (not really too bad) and the input thread code actually blocked.
2020-10-02 02:49:45 -04:00
Clement Tsang
a5b95ae8b2
bug: use cmdline for Linux proc name if >=15 chars (#261)
This was the cause of some process names getting cut off and looking weird for Linux (and Linux only, I'm not directly responsible for the other OSes).

This also adds spaces in between command line flags. Before, they were usually separated by either spaces (which looked fine) or null terminators (which meant it looked like something was broken).
2020-10-01 01:46:09 -04:00
Clement Tsang
5b33e8d6b4
Use tmp_dir rather than /tmp/ (#260)
Uses a less hard-coded method of writing to /tmp/.
2020-09-30 22:53:54 -04:00
Clement Tsang
9afb6d7c88
feature: add --debug flag for logging (#259)
Adds a `--debug` flag to aid in debugging issues.  This saves to `/tmp/bottom_debug.log`.
2020-09-30 22:06:57 -04:00
Clement Tsang
57e87d88d0
feature: Add persistent search settings (#257)
Adds persistent search settings across runs, by saving to the config file.  Each process widget keeps track of it's *own* behaviour.  The previous flags/options are now for *global* behaviour.

The following new behaviour is:
- Relevant flags: `--case_sensitive`, `--whole_word`, and `--regex`, will *override* the current widget's default behaviour.
- Relevant options: `case_sensitive`, `whole_word`, and `regex`, will also *override* the current widget's default behaviour.

As per before, if you set, say, `--case_sensitive`and `case_sensitive=true`, the flag always overrides.

Documentation updates will be done in #248.
2020-09-28 19:50:21 -04:00
Clement Tsang
7eff79395d
bug: fix chart and data point overlap (#256)
Update to tui-rs, which fixes #255, as well as some miscellaneous things like updating changelogs and travis.
2020-09-27 14:23:18 -04:00
Clement Tsang
7a9fcae605
docs: Add missing COPR entry to ToC 2020-09-27 02:05:30 -04:00
ClementTsang
205033685f other: change packaging default tag 2020-09-27 01:50:53 -04:00
ClementTsang
3b8e99bdc1 other: add packaging template 2020-09-27 01:50:18 -04:00
ClementTsang
a12cabd160 other: update github issue and PR templates 2020-09-27 01:49:35 -04:00
ClementTsang
fdd2d1b747 bug: fix basic mode arrows being slightly larger than intended 2020-09-26 21:49:28 -04:00
Clement Tsang
750d8f3cb7 refactor: tui-rs 0.11.0 refactor (#253)
Refactors tui-rs usage to the new 0.11.0 release. This release also fixes the highlighting bug from #249, and now, expanding a widget no longer overrides the widget title colour.

This commit also introduces #255, but that seems to be easy to bandaid so hopefully it will get fixed soon?
2020-09-26 20:21:59 -04:00
Clement Tsang
6db76029e2
feature: Beginnings of in-app config (#231)
Initial refactorings and additions to support in-app config.

- Refactor our current options logic to support in-app configs.  That is, we can write to a config file with our changes now.
- The default action when creating a new config file is to leave it blank. (TBD and for now, not sure on this one)
- Previously, we would set everything in a config file on startup; now we need to read from the config TOML struct whenever.
- `C` keybind is now occupied for configs.
- `no_write` option to never write to a config file.
2020-09-22 18:12:36 -04:00
Clement Tsang
b0b174eb98
bug: Fix for index oob caused by terminal size mismatch (#238)
Fix for an index out-of-bounds by resizing to a smaller terminal just after the program got the terminal size, but right before the terminal started drawing.
2020-09-18 12:35:32 -04:00
ClementTsang
83445eccbb other: update github issue templates 2020-09-18 01:55:19 -04:00
Clement Tsang
86c8b474ae
feature: mouse support for tabs and dd dialog (#230) 2020-09-11 04:20:14 -04:00
Clement Tsang
0c21cba189
refactor: rename data harvesting fns to what archs/oses they support (#229)
Just a simple rename.
2020-09-09 23:30:09 -04:00
Clement Tsang
c58b2c2bb9
refactor: rewrite column algorithm (#227)
Update how we position and generate column widths to look less terrible.  This also adds truncation w/ ellipsis to the columns, and for processes, the state will automatically shrink to a short form (just a character) if there isn't enough space.
2020-09-09 21:51:52 -04:00
Clement Tsang
c426b0c7c4
docs: add winget install instructions 2020-09-08 20:08:00 -04:00
imgbot[bot]
972ca99d48
chore: [ImgBot] Optimize images (#226)
*Total -- 641.18kb -> 541.81kb (15.5%)

/assets/trees_2.png -- 227.68kb -> 190.77kb (16.21%)
/assets/trees_1.png -- 361.14kb -> 305.06kb (15.53%)
/assets/trees_3.png -- 52.36kb -> 45.97kb (12.2%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>

Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
2020-09-06 23:24:45 -04:00
Clement Tsang
eb8295c430
feature: Adds tree view (#223)
Adds a tree process view to bottom.

Currently uses a pretty jank method of column width setting, should get fixed in #225.
2020-09-06 23:03:03 -04:00
Clement Tsang
0d8572c692
fix: Fixes count being sortable, but nothing occuring (#224)
Fixes sorting by count being available, but doing nothing. This fix makes it sortable.
2020-09-06 02:16:50 -04:00
ClementTsang
cc87fa8e4a fix: Fix mouse detection not working on proc after closing search 2020-09-05 16:25:35 -04:00
Clement Tsang
54a35d632e
other: Windows compilation stuff (#222)
Some Windows compilation/deploy stuff. Mostly just a catch-all for some chores.
2020-09-03 12:22:02 -04:00
ClementTsang
33b37bb5ac other: Add missing shebang to husky pre-push script 2020-09-03 03:25:12 -04:00
ClementTsang
3843d63dbb bug: change heim io fn to not bail on any error 2020-09-03 03:18:18 -04:00
ClementTsang
105e9d27bb docs: rename demo gif 2020-09-02 22:14:03 -04:00
imgbot[bot]
73267f38bd
chore: [ImgBot] Optimize images (#221)
*Total -- 134.20kb -> 116.22kb (13.4%)

/assets/temp_filter_pre.png -- 45.44kb -> 37.86kb (16.69%)
/assets/disk_filter_pre.png -- 26.47kb -> 22.86kb (13.66%)
/assets/temp_filter_post2.png -- 20.45kb -> 17.82kb (12.87%)
/assets/disk_filter_post2.png -- 16.96kb -> 15.10kb (10.97%)
/assets/disk_filter_post.png -- 16.90kb -> 15.11kb (10.6%)
/assets/temp_filter_post.png -- 7.97kb -> 7.48kb (6.25%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>

Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
2020-09-02 22:08:07 -04:00
Clement Tsang
cef3166cf8
feature: Add ability to filter out disks and temp (#220)
You can now filter out disks and temp sensors by name via config.
2020-09-02 22:02:49 -04:00
Clement Tsang
a949073728
bug: fix being able to click widgets when dd-dialog was open (#219)
Fixes a bug where you could click on a widget when dd's dialog was open.
2020-09-02 05:00:01 -04:00
Clement Tsang
01b7b6744e
doc: Update README for ARM info 2020-09-02 04:41:45 -04:00
Clement Tsang
f5f37f7f0a
ci: Fix missing equals sign (#218) 2020-09-02 03:46:39 -04:00
Clement Tsang
22278d7d75
other: aarch64 support (#217)
Adds theoretical aarch64 support.
2020-09-02 02:59:51 -04:00
ClementTsang
663ae6c5c2 bug: fix broken check from last commit, add tests 2020-09-01 03:08:46 -04:00
ClementTsang
d24a797ce9 other: Add config error if default_widget_count is not used with default_widget_type 2020-09-01 00:29:46 -04:00
ClementTsang
01f65d378b docs: Update README 2020-09-01 00:26:05 -04:00
Clement Tsang
a4ddd649e1
refactor: Update error messages w/ anyhow and thiserror (#216)
Refactoring and updating of error messages + tests to be more useful.
2020-08-31 23:59:33 -04:00
Clement Tsang
5ed573157c
bug: Use correct labels for sensors in Linux (#215)
Update temperature sensors in Linux to use labels + names rather than just names.
2020-08-31 20:02:48 -04:00
Clement Tsang
5aa7b4df08
docs: Update some arguments, and documentation (#214)
Some more updates to arguments and documentation.
2020-08-31 18:57:01 -04:00
Clement Tsang
3431411215
other: Add autocomplete file generation (#213)
Adds shell completion generation as part of the build, as well as tweaking install scripts/templates/CI to use them.
2020-08-31 17:50:21 -04:00
ClementTsang
c6a20a1420 deps: Update battery, sysinfo 2020-08-29 20:41:51 -04:00
Clement Tsang
6632714f26
feature: Allow Ctrl-F and / to work in sort (#212)
Fixes a bug, and also allows `Ctrl-F` and `/` to work in the sort widget.
2020-08-29 19:23:20 -04:00
Clement Tsang
3d2fc76aa2
feature: Add mouse click support for moving between widgets (#208)
Adds mouse support to the application, to move between widgets and click on elements.

List of things to added:

- Click to move between widgets
- Click to move between widgets in basic mode
- Click on widget entries
- Ability to disable mouse if you don't like it, I guess
2020-08-29 18:54:18 -04:00
Clement Tsang
b6363096b4
bug: fix bug where you could move down in basic proc when search was off (#211)
Fixes a bug where you could move down in a process widget even if search was disabled while in basic mode.
2020-08-29 04:06:21 -04:00
allcontributors[bot]
6e7b35c421
docs: add tim77 as a contributor (#209)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2020-08-28 20:26:22 -04:00
Artem Polishchuk
56b2634676
Add Fedora/CentOS installation instructions (#207) 2020-08-28 20:06:34 -04:00
Clement Tsang
9a11e77aa0
feature: Adaptive network widget (#206)
Allows the network widget graph to grow/shrink with current data, rather than using a static size.
2020-08-28 16:30:24 -04:00
ClementTsang
81ec7c311b uptick: 0.4.7 2020-08-26 20:34:30 -04:00
ClementTsang
b3e85b135a docs: Update CONTRIBUTING.md with note on cargo-husky 2020-08-26 20:34:22 -04:00
ClementTsang
0ea07c288e docs: Update changelog 2020-08-26 20:32:18 -04:00
imgbot[bot]
6266593bf0
chore: [ImgBot] Optimize images (#203)
/assets/sort.png -- 280.22kb -> 233.91kb (16.53%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>

Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
2020-08-26 20:30:45 -04:00
Clement Tsang
2425779e7f
bug: fix searching by command being broken (#204)
Fixes searching by command name being broken.
2020-08-26 20:29:55 -04:00
ClementTsang
83e3437b36 docs: Fix incorrect heading 2020-08-26 19:11:41 -04:00
ClementTsang
31ee9b73fc docs: Update README to include sorting 2020-08-26 19:06:55 -04:00
ClementTsang
8a567df1ae ci: Update winget template with more details 2020-08-25 21:15:13 -04:00
Clement Tsang
5d21b0f7f5
ci: Fix winget template 2020-08-25 19:19:00 -04:00
Clement Tsang
027f8a8c32
ci: minor CI fixes for automatic deploys (#202)
Mainly missing some `cd` lines in AUR builds and clarifying the macOS config location.
2020-08-25 19:06:12 -04:00
Clement Tsang
9158c5f6d5
bug: fix grouping being broken after refactor (#201)
Fixes grouping not working properly after some refactoring done in 0.4.6.
2020-08-25 03:36:29 -04:00
ClementTsang
e08eda8edc docs: Update changelog 2020-08-25 01:24:04 -04:00
ClementTsang
93cf53e5d7 docs: Clarify description 2020-08-25 01:12:57 -04:00
ClementTsang
c41b972081 docs: Fix outdated install instruction 2020-08-25 01:05:40 -04:00
Clement Tsang
7e8bf95179
uptick: 0.4.6 (#200) 2020-08-25 01:01:14 -04:00
ClementTsang
f710fe361f ci: Fix missing version number in template 2020-08-24 02:43:02 -04:00
ClementTsang
60ba2be3c4 ci: Remove manual trigger [skip travis] 2020-08-24 02:37:21 -04:00
ClementTsang
797037335e ci: Delete redundant fields 2020-08-24 02:36:50 -04:00
ClementTsang
a7f8aab6aa ci: Fix again... 2020-08-24 02:22:33 -04:00
ClementTsang
f6f0aecc75 ci: Hopefully this works...? 2020-08-24 02:15:25 -04:00
ClementTsang
421e5cb4d6 ci: Fix broken env calls in Actions 2020-08-24 02:09:52 -04:00
ClementTsang
a9e02677ca ci: Update deploy as one step 2020-08-24 02:02:51 -04:00
ClementTsang
17f8442330 ci: Add manual workflow dispatch for GitHub Actions 2020-08-24 02:00:26 -04:00
ClementTsang
dcbd542dee ci: Fix invalid symbol in github deploy workflow 2020-08-24 01:55:36 -04:00
ClementTsang
304bbc4d27 ci: Fix reordering in travis script 2020-08-24 00:44:30 -04:00
ClementTsang
f1371b8d9f ci: Fix some incorrect behaviour caused by deployment script 2020-08-23 23:45:34 -04:00
ClementTsang
52a21b9bec chore: change line endings to LF, refactor rustfmt [skip travis] 2020-08-23 21:57:08 -04:00
ClementTsang
6dca970541 ci: switch to prepush rather than precommit 2020-08-23 21:43:24 -04:00
ClementTsang
691f6647e0 ci: set up clippy pre-hook 2020-08-23 21:39:53 -04:00
ClementTsang
6fbbaef73b ci: Remove redundant line in travis 2020-08-23 21:32:11 -04:00
ClementTsang
005bd95f8a ci: Move wix output naming to Cargo 2020-08-23 21:22:34 -04:00
ClementTsang
3ac49353e8 ci: Fix windows CI not understanding globbing? 2020-08-23 20:15:57 -04:00
ClementTsang
194d96c9cf ci: Attempt to fix broken strips, try to fix broken copy 2020-08-23 19:20:16 -04:00
ClementTsang
ad3017ab91 ci: Try to fix broken Windows script again... 2020-08-23 18:23:36 -04:00
ClementTsang
1ce0764b2e ci: Try alternative wix install... 2020-08-23 17:27:47 -04:00
ClementTsang
96a1db1848 ci: Try fix with PATH on Windows 2020-08-23 16:51:36 -04:00
ClementTsang
f030600468 ci: Fix another typo 2020-08-23 15:48:06 -04:00
ClementTsang
3165918d52 ci: Fix broken windows deploy for msi and choco 2020-08-23 14:49:33 -04:00
ClementTsang
279504e401 ci: update PKGBUILD template as per suggestions 2020-08-22 23:41:41 -04:00
ClementTsang
5e0ab22645 ci: fix some bugs... 2020-08-22 23:32:28 -04:00
Clement Tsang
397a7e8467
ci: Add winget template generation (#199)
Adds winget CI generation.
2020-08-22 20:22:47 -04:00
Clement Tsang
3252796f17
change: Allow e to also close expanded widgets
Allow `e` to toggle expansion, rather than only allowing it to open.
2020-08-22 17:31:19 -04:00
Clement Tsang
1a25fbb987
bug: fix freezing not affecting processes during search and sort
Fixes a bug where searching refreshed process data even when frozen.
2020-08-22 17:23:27 -04:00
Clement Tsang
3394b9ee66
feature: allow searching by state, add more keyword variants
Allows searching by state (`state = sleep`), and adds more keyword variants for searching: `cpu%`, `mem%`, `r/s`, `w/s`, matching the columns.
2020-08-22 15:38:13 -04:00
Clement Tsang
c82f4d40b4
feature: Support memb (mem bytes) searching in processes
Supports searching by the new mem value.
2020-08-21 22:59:49 -04:00
Clement Tsang
ff15649be7
refactor: remove kill command, use libc
Removes the kill command call and instead uses libc to manage killing processes.
2020-08-21 18:16:37 -04:00
Clement Tsang
7475f24a4e
feature: Add hook to properly clean up in the case of a kill call
Adds a hook to properly clean up the program in case the program gets SIGTERM'd.
2020-08-21 16:00:14 -04:00
Clement Tsang
a1766961fe
Clarify architecture support 2020-08-21 14:53:58 -04:00
Clement Tsang
1dc9346d3b
refactor: Remove ps calls
Removes and refactor ps calls that... should have not been there in the first place.
2020-08-21 01:33:12 -04:00
Clement Tsang
4b03b4b0b0
refactor: Refactor code, add new tests
Refactor code so we use a lib, allowing for easier testing. Adds additional tests for layouts.
2020-08-19 16:32:33 -04:00
Clement Tsang
f6aa8e5d1d
ci: fix indentation error 2020-08-19 10:40:58 -04:00
ClementTsang
a7b8d45682 Add deploy github script 2020-08-19 10:27:57 -04:00
Clement Tsang
b2a00d49f1
ci: Automatically build package files on release
Automatically builds packages for AUR, chocolatey, and homebrew on release.
2020-08-18 23:22:50 -04:00
ClementTsang
eb5ac54ad0 bug: fix not switching sort type when toggling % in mem 2020-08-17 15:52:09 -04:00
Clement Tsang
3c373d7129
feature: Add appox. total mem as an option for processes and basic mem
Adds a way to display the memory value as a column in the processes widget and the basic memory widget, rather than just the percentage.
2020-08-17 15:41:37 -04:00
Clement Tsang
59ce90f577
bug: Fix bug w/ parsing /proc/{pid}/stats
Fixes a bug caused by incorrectly reading the `/proc/{pid}/stats` file.  Due to splitting by whitespace, the string parsing was read incorrectly if the process also contained spaces.
2020-08-16 20:53:34 -04:00
Clement Tsang
08e49b63c1
refactor: Revert tui upgrade to 0.10
Reverts tui upgrade, there are some bugs and issues - namely, issues with rendering text.
We can revert this commit when those bugs are dealt with (should be fine after 0.10.1, tested building from the repo).
2020-08-16 04:25:59 -04:00
ClementTsang
9068108d0f bug: fix missing default battery layout during refactor 2020-08-16 03:08:09 -04:00
Clement Tsang
d211c6474c
bug: Fix bug caused by hitting enter w/ a failed dd
This would cause the dd fields to get stuck due to never resetting.
2020-08-16 02:56:54 -04:00
Clement Tsang
f3897f0538
feature: Allow sorting by any column
This feature allows any column to be sortable.

This also adds:
- Inverting sort for current column with `I`
- Invoking a sort widget with `s` or `F6`.  Close with same key or esc.

And:
- A bugfix in regards the basic menu and battery widget
- A lot of refactoring
2020-08-15 20:35:49 -04:00
ClementTsang
84f63f2f83 refactor: remove redundant newlines 2020-08-13 02:04:53 -04:00
Clement Tsang
e1a7378386
change: Update macOS config dir
Update documentation and program to use the correct config directory as per the dirs package.
2020-08-12 02:15:57 -04:00
ClementTsang
6e38d73116 change: Refactor dd drawing code
This also slightly improves how we generate the widths/heights to be
less... terrible.

Note this is not done, unfortunately.  This requires tui-rs' wrapped
paragraph height PR to land and release so I can properly calculate the
height offsets.

See https://github.com/fdehau/tui-rs/pull/349 for details.
2020-08-12 00:27:02 -04:00
ClementTsang
60f4759494 change: Add WASD keys for widget selection movement 2020-08-11 21:19:55 -04:00
ClementTsang
de8460cf9c docs: Fix README typo [skip travis] 2020-08-11 20:23:23 -04:00
Clement Tsang
d0cc6078df
deps: Update dependencies, drop MSRV
Update dependencies to most recent versions if applicable. Refactor to deal with breaking changes. Drop MSRV due to dependency issues, just support stable and later.
2020-08-11 20:22:39 -04:00
ClementTsang
17552c50cf docs: Update changelog w/ full process feature [skip travis] 2020-08-07 04:31:42 -04:00
Clement Tsang
30bdaa6073
feature: add full command to process widget
This PR adds the ability to toggle between the process name and process path. Currently, this uses `P` as the modifier key.

Currently, the longer command names are dealt with by forcefully changing the width of the columns, but this can be handled in a more graceful manner IMO.
2020-08-07 04:29:20 -04:00
Clement Tsang
d2129056e3
Merge pull request #177 from ClementTsang/all-contributors/add-svenstaro
docs: add svenstaro as a contributor
2020-07-27 22:49:23 -04:00
allcontributors[bot]
690ab05a0b
docs: update .all-contributorsrc [skip ci] 2020-07-28 02:49:12 +00:00
allcontributors[bot]
17d351c7eb
docs: update README.md [skip ci] 2020-07-28 02:49:11 +00:00
Clement Tsang
d9a9289508
Merge pull request #176 from svenstaro/patch-1
Prefer explicit yay installation command
2020-07-27 22:48:16 -04:00
ClementTsang
777a5fb9f2 docs: update README to mention battery option in config 2020-07-27 22:46:23 -04:00
Sven-Hendrik Haase
fa1ea9bc76
Prefer explicit yay installation command
If you run `yay` without `-S` it'll perform a search instead of a direct match.
2020-07-20 21:47:46 +02:00
ClementTsang
eeebb96912 travis: Fix travis to not update the lock file 2020-07-08 17:05:37 -04:00
ClementTsang
58b5c21197 docs: specify that --locked may be required 2020-07-08 16:58:32 -04:00
ClementTsang
49de6d36ab travis: add force during install test 2020-07-08 15:57:08 -04:00
ClementTsang
cc1ed4fbfd uptick: update Cargo.lock to 0.4.5 2020-07-08 15:43:28 -04:00
ClementTsang
b111b545d8 travis: forgot to add a --locked check to install 2020-07-08 15:21:31 -04:00
ClementTsang
5cfbaf672d travis: move cargo install test to script rather than deploy 2020-07-08 15:20:25 -04:00
ClementTsang
4cc403b594 uptick: 0.4.5
This patch is just to deal with crates.io not using the correct
Cargo.lock I had intended.
2020-07-08 15:15:16 -04:00
ClementTsang
be6f824a43 clippy: clippy error due to redundant conversion
Fixes a redundant usize to usize conversion.
2020-07-06 02:36:24 -04:00
ClementTsang
ad99803d09 travis: skip dependency check for msrv 2020-07-06 02:33:04 -04:00
ClementTsang
121d483b50 revert: Revert "deps: update cargo.lock"
This reverts commit f8127465b8be0aafba40df9ff256eaf520b5ee2f.
2020-07-06 02:25:14 -04:00
ClementTsang
f8127465b8 deps: update cargo.lock 2020-07-06 02:09:10 -04:00
ClementTsang
d643ef7401 uptick: 0.4.4 2020-07-06 01:10:03 -04:00
ClementTsang
3564f00f39 docs: update for 0.4.4 2020-07-06 01:09:01 -04:00
ClementTsang
3ffa437af3 github: remove chore template, fix feature template label 2020-05-21 22:35:10 -04:00
Clement Tsang
9600785cf2
docs: update CHANGELOG 2020-05-21 22:25:44 -04:00
Clement Tsang
d88b8194df
Merge pull request #166 from ClementTsang/fix_or_in_search 2020-05-21 22:22:44 -04:00
ClementTsang
cef81d1b8d refactor: use fold to avoid clones in search for implied AND 2020-05-21 22:06:51 -04:00
ClementTsang
c7edad91ed refactor: fix clippy error 2020-05-21 21:46:21 -04:00
ClementTsang
b33ea11af2 bug: fix query not working for or, refactor a bit 2020-05-21 21:40:40 -04:00
ClementTsang
948c1206e9 chore: wrote better debugging printing for queries
This should make reading completed queries a bit easier for debugging
2020-05-21 16:55:51 -04:00
ClementTsang
dcaef7ebc4 bug: fix incorrect parsing for process i/o calc
Cause was checking the wrong indices for values.  I thought I
had taken in a vector of strings that were just byte values,
but they actually contained the labels... oops.
2020-05-21 14:03:00 -04:00
ClementTsang
f3ca98fe30 docs: some minor README and CHANGELOG changes 2020-05-20 21:21:49 -04:00
ClementTsang
6d365140b6 chore: add vscode word dict 2020-05-20 11:55:03 -04:00
ClementTsang
3d8a8b4e85 deps: update typed-builder to 0.6.0 2020-05-19 21:17:01 -04:00
Clement Tsang
cf1d41c83a
feature: add back states to unmerged processes 2020-05-19 17:58:17 -04:00
ClementTsang
e2e1ac3006 change: always highlight selected cpu 2020-05-18 23:36:58 -04:00
Clement Tsang
e6379982f1
refactor: reduce unchecked type conversions to usize 2020-05-18 23:34:50 -04:00
Clement Tsang
12e4777d97
change: remove slash, change scroll behaviour on cpu
- Removal of the old slash-space-to-hide behaviour of CPU widget
- Scrolling onto a specific entry will only show that entry
- Showing average is now default
2020-05-16 22:38:19 -04:00
ClementTsang
a074808a00 deps: update cargo.lock 2020-05-15 00:37:10 -04:00
ClementTsang
2d9d10d8f9 uptick: 0.4.3 2020-05-15 00:00:02 -04:00
ClementTsang
2ae2ebd6d8 deps: update sysinfo 2020-05-14 22:22:29 -04:00
ClementTsang
18514e87bb docs: clarify how README in master may be ahead 2020-05-13 00:16:55 -04:00
ClementTsang
549d61b836 bug: add extra check for process cpu value to be >= 0 2020-05-13 00:15:41 -04:00
Clement Tsang
4831ec3d5c
docs: [skip travis] Update version for clarity 2020-05-12 00:26:56 -04:00
ClementTsang
be6fb5fc4d deps: update cargo.lock 2020-05-11 23:53:43 -04:00
ClementTsang
e47c86a83f docs: update to 0.4.2 2020-05-11 23:03:50 -04:00
ClementTsang
a03e9d6f31 uptick: 0.4.2 2020-05-11 22:53:56 -04:00
ClementTsang
a8ed838726 refactor: use a nicer match statement in one spot 2020-05-11 22:52:35 -04:00
ClementTsang
ce563542ee force SWAP and RAM labels to show even if at 0 2020-05-11 22:48:37 -04:00
Clement Tsang
137e3cea5f
bug: disk displays nothing on if IO fails to match
Obvious on macOS.
2020-05-11 22:34:35 -04:00
Clement Tsang
7b5685bf44
refactor: remove redundant empty checks in graphs
Now that the fix for empty data is patched in tui, these checks are
redundant.
2020-05-11 01:32:39 -04:00
Clement Tsang
95f90dd266
Merge pull request #152 from ClementTsang/use_tui_lines
refactor: re-enable tui-rs linear interpolation
2020-05-10 17:18:56 -04:00
ClementTsang
56d6771d1b refactor: re-enable tui-rs linear interpolation 2020-05-10 17:01:45 -04:00
Clement Tsang
90272777f7
change: hide table gap if widget height is small 2020-05-09 16:23:15 -04:00
Clement Tsang
2e4d6a34aa
Merge pull request #149 from ClementTsang/autohide_time_on_small
Autohide time on small
2020-05-09 15:28:39 -04:00
ClementTsang
2124a6e049 docs: update readme a bit to thank more people :) 2020-05-09 14:55:01 -04:00
ClementTsang
e6181d4aa4 change: hide time legend if window gets too small 2020-05-09 14:54:23 -04:00
ClementTsang
cd441eb920 docs: update README to mention 0.5.0 2020-05-08 15:37:09 -04:00
ClementTsang
b253d0153b change: reallow spaces to represent "and" 2020-05-08 15:34:46 -04:00
Clement Tsang
a71d991695
refactor: avoid using max checks, use saturating_sub instead 2020-05-07 01:09:24 -04:00
Clement Tsang
91bb2aa7fc
docs: fix contributors badge 2020-05-06 23:54:48 -04:00
ClementTsang
9152ba3281 docs: make process help text consistent with README 2020-05-05 18:57:38 -04:00
ClementTsang
4b7ff87c23 docs: clarify line about msrv, force retrigger of travis build 2020-05-05 18:03:15 -04:00
allcontributors[bot]
cf2a2a952b
docs: add HarHarLinks as a contributor (#147)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

* docs: update badge

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: Clement Tsang <34804052+ClementTsang@users.noreply.github.com>
2020-05-05 17:58:14 -04:00
ClementTsang
453c10e7c5 docs: update README and CHANGELOG for 0.4.1 2020-05-05 17:56:01 -04:00
ClementTsang
aea79a0750 uptick: 0.4.1 2020-05-05 17:50:30 -04:00
Clement Tsang
bbb3569cc4
Merge pull request #146 from HarHarLinks/patch-1
Fix help (sort by cpu)
2020-05-05 17:49:11 -04:00
Kim Brose
095fb7e54e
Update constants.rs 2020-05-05 20:45:43 +02:00
ClementTsang
38f4967a8a bug/change: removed space as and for now 2020-05-04 23:44:33 -04:00
ClementTsang
9932ad34c1 docs: mention querying update for 0.4.0 2020-05-04 21:50:53 -04:00
ClementTsang
a04bc25e59 docs: update CHANGELOG 0.4.0 release date 2020-05-04 21:48:33 -04:00
ClementTsang
538b49dc0e chore: re-add skip_cleanup to travis 2020-05-04 20:35:31 -04:00
ClementTsang
0363620647 chore: update exclusions for tags 2020-05-04 19:47:21 -04:00
ClementTsang
477de1c227 chore: test excluding msrv and beta with tags 2020-05-04 19:21:29 -04:00
ClementTsang
c22886bd32 docs: update contributing to mention that MSRV will fail cargo test 2020-05-04 18:55:03 -04:00
Clement Tsang
364049ee5f
chore: update travis a bit for msrv 2020-05-04 18:53:05 -04:00
ClementTsang
1ff2606c90 update tests to deal with msrv 2020-05-04 18:23:34 -04:00
imgbot[bot]
16b6f442ac
chore: optimize images
*Total -- 1,250.90kb -> 1,084.93kb (13.27%)

/assets/search_empty.png -- 200.36kb -> 169.74kb (15.28%)
/assets/basic_mode.png -- 216.44kb -> 183.68kb (15.14%)
/assets/quote_search.png -- 217.46kb -> 185.91kb (14.51%)
/assets/regex_search.png -- 108.25kb -> 92.93kb (14.15%)
/assets/battery.png -- 155.70kb -> 135.39kb (13.05%)
/assets/sample_layout.png -- 107.67kb -> 94.99kb (11.78%)
/assets/simple_search.png -- 50.38kb -> 45.12kb (10.44%)
/assets/and_or_search.png -- 32.19kb -> 28.91kb (10.21%)
/assets/usage_search.png -- 38.14kb -> 34.45kb (9.68%)
/assets/cpu_layout.png -- 124.30kb -> 113.83kb (8.43%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>

Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
2020-05-04 17:46:00 -04:00
ClementTsang
c8afe0d4f8 chore: support MSRV of 1.40.0 2020-05-04 17:45:11 -04:00
Clement Tsang
c458a4d101
docs: update screenshots 2020-05-04 17:23:15 -04:00
ClementTsang
a56156a8f2 bug: swap 'and' and 'or' calls around for correct precedence 2020-05-04 00:27:21 -04:00
ClementTsang
da7c1db426 Merge branch 'master' of https://github.com/ClementTsang/bottom 2020-05-04 00:03:23 -04:00
ClementTsang
2a32bbac3b change: separated search and process widgets again 2020-05-04 00:03:11 -04:00
Clement Tsang
77eaad3ab8
Merge pull request #142 from ClementTsang/imgbot
[ImgBot] Optimize images
2020-05-03 00:57:28 -04:00
ImgBotApp
329c00480f
[ImgBot] Optimize images
/assets/quote_search.png -- 225.84kb -> 199.47kb (11.68%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
2020-05-03 04:56:34 +00:00
ClementTsang
d1ef24165d docs: more details about search 2020-05-03 00:54:45 -04:00
ClementTsang
83a4a15cd5 bug: fix broken case if quotes surrounded paren 2020-05-03 00:54:33 -04:00
ClementTsang
1e92eba7ce docs: clarified point about and vs or 2020-05-03 00:11:57 -04:00
Clement Tsang
16bb1a54b4
Merge pull request #141 from ClementTsang/imgbot
[ImgBot] Optimize images
2020-05-03 00:08:59 -04:00
ClementTsang
0986b96056 bug: made the regex error one line in search 2020-05-03 00:08:18 -04:00
ImgBotApp
ff94d56693
[ImgBot] Optimize images
*Total -- 554.66kb -> 463.59kb (16.42%)

/assets/basic_mode.png -- 190.42kb -> 142.90kb (24.96%)
/assets/or_search.png -- 60.64kb -> 52.66kb (13.17%)
/assets/search_empty.png -- 168.80kb -> 146.61kb (13.14%)
/assets/simple_search.png -- 50.47kb -> 45.18kb (10.48%)
/assets/simple_advanced_search.png -- 50.16kb -> 44.96kb (10.36%)
/assets/search_cpu_filter.png -- 34.17kb -> 31.28kb (8.47%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
2020-05-03 03:54:54 +00:00
Clement Tsang
39d7450aad
Merge pull request #139 from ClementTsang/improve_searching
Improve searching
2020-05-02 23:54:10 -04:00
Clement Tsang
5636f86656
docs: fixes an issue with || in code blocks for MD 2020-05-02 23:53:25 -04:00
ClementTsang
73c16e259d docs: update with search details 2020-05-02 23:46:07 -04:00
ClementTsang
8307b06c56 bug: fix bug with multiple tokens 2020-05-02 21:50:35 -04:00
ClementTsang
e12c2f5212 change: add byte units to search 2020-05-02 19:24:19 -04:00
ClementTsang
5e874eab77 refactor/bug: moved search logic; fix quoted words 2020-05-02 18:36:18 -04:00
ClementTsang
ecc111b21a refactor: fix clippy errors 2020-05-02 17:39:48 -04:00
ClementTsang
6e81fbeebf change: more advanced searching and filtering 2020-05-02 16:01:07 -04:00
Clement Tsang
2828449544
chore: pretty up CONTRIBUTING.md 2020-05-01 14:45:48 -04:00
ClementTsang
bb45763b39 feature: Add alt-h and alt-l to move left/right within widget 2020-04-30 15:29:36 -04:00
ClementTsang
ecd5a003cf change: Use e key instead to maximize; rename to expand 2020-04-29 23:52:25 -04:00
ClementTsang
edd5cff12d change: merge search and process widgets together 2020-04-29 23:43:49 -04:00
ClementTsang
dacf8b1abb bug: fix broken basic table arrows on other widgets 2020-04-29 23:12:49 -04:00
ClementTsang
b75eeaea46 docs: update contributor badge 2020-04-29 21:56:44 -04:00
ClementTsang
6be5ce55a2 chore: update Cargo.lock 2020-04-29 21:53:19 -04:00
ClementTsang
031bae52f5 docs: Remove old section of README 2020-04-29 00:11:10 -04:00
ClementTsang
b87fde16ab uptick: 0.4.0 2020-04-29 00:10:27 -04:00
ClementTsang
19243bfc9f docs: Add CONTRIBUTING.md 2020-04-29 00:07:09 -04:00
Clement Tsang
24caaa29a2
Merge pull request #138 from ClementTsang/update_bindings
docs: update help and README for bindings
2020-04-28 22:54:17 -04:00
Clement Tsang
b6ea10770b
github: update PR template 2020-04-28 22:51:18 -04:00
ClementTsang
70779c078d docs: update help and README for bindings 2020-04-28 22:46:48 -04:00
Clement Tsang
554505b221
changelog: Add #134 to changelog 2020-04-28 17:51:05 -04:00
Clement Tsang
52eb7121c5
docs: mention updating rust for manual build 2020-04-28 17:49:17 -04:00
allcontributors[bot]
ee84d799bf
docs: add andys8 as a contributor (#137)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2020-04-28 17:44:30 -04:00
Andy
e850d3d2a8
Kill dialog: vim navigation (#134)
Add `hjkl` as navigation keys in kill dialog.

Closes #133
2020-04-28 17:43:15 -04:00
Clement Tsang
2faf3c6592
refactor: revert linear interpolation until tui fix comes 2020-04-28 16:44:10 -04:00
Clement Tsang
de3a1fb7c0
Merge pull request #131 from ClementTsang/battery_flag
Add battery flag, fix bug, refactor
2020-04-27 16:59:07 -04:00
ClementTsang
78e3c37947 refactor: fix clippy errors 2020-04-27 16:40:45 -04:00
ClementTsang
15dba2e6cf bug: fix empty widget in layout 2020-04-27 16:20:36 -04:00
ClementTsang
8e4f6a3a02 feature: add battery flag 2020-04-27 15:56:39 -04:00
ClementTsang
8534d42f1b refactor: separate state to different file 2020-04-27 13:48:56 -04:00
ClementTsang
3d6ebc5152 docs: update README for some typos and clarity 2020-04-27 13:35:23 -04:00
ClementTsang
24f5717125 cargo: switch to personal fork of tui-rs for now to deal with subtraction bug in lines 2020-04-26 20:18:29 -04:00
ClementTsang
e33dbbd350 clippy: remove redundant clone 2020-04-26 20:08:02 -04:00
ClementTsang
80548457f9 refactor: cleaned up some of the concurrent parts 2020-04-26 19:53:26 -04:00
ClementTsang
647c8448dc docs: Update battery documentation to include health 2020-04-26 00:12:33 -04:00
Clement Tsang
cf48561777
feature: add battery health percentage 2020-04-26 00:11:34 -04:00
Clement Tsang
3a6f7a6750
refactor: changed how we set help text on resize and init 2020-04-25 17:32:31 -04:00
Clement Tsang
863e780f2f
change: add scrolling to help menu 2020-04-24 19:17:58 -04:00
Clement Tsang
99fe0a1844
Merge pull request #126 from ClementTsang/update_tests
Update arg test; add config tests
2020-04-23 16:03:07 -04:00
ClementTsang
9fe6e7d4d2 clippy: use suggested to_string and dereferencing 2020-04-23 15:51:35 -04:00
ClementTsang
263f9e55d3 ci: update travis 2020-04-23 15:44:17 -04:00
ClementTsang
e19368e5c9 chore: update changelog 2020-04-23 15:43:09 -04:00
ClementTsang
f4c6cb95e4 test: add config tests, update arg tests 2020-04-23 15:33:51 -04:00
ClementTsang
a6b48921ee refactor: hoist painter creation up to avoid having to clean if fail 2020-04-23 15:33:31 -04:00
ClementTsang
04e4c32aec refactor: update error messages and hex error detection 2020-04-23 15:33:13 -04:00
ClementTsang
b1f86262f3 refactor: update error messages to be more uniform 2020-04-23 14:10:59 -04:00
ClementTsang
4d512afdae refactor: update arg tests to use new binary env 2020-04-23 13:29:10 -04:00
Clement Tsang
481275f61d
Merge pull request #125 from ClementTsang/fix_config_gen
Fix config gen and chores
2020-04-22 17:43:29 -04:00
ClementTsang
87dba602f9 fix: Fixes typo in config generation 2020-04-22 17:26:50 -04:00
ClementTsang
121370e9f4 docs: update default config 2020-04-22 17:19:36 -04:00
ClementTsang
25addaee63 chore: Add some words to VS Code dict 2020-04-22 17:13:05 -04:00
Clement Tsang
9dde1f8656
refactor: Update tui to 0.9; refactor with new features (#123)
Update tui-rs version, which means some changes:

- Legends are controllable; updated network legend with an optional flag to use the old one

- Stops the issue with legend hiding too early

- Added option to allow removing the table gap

- Use stateful tables

- Move to tui-rs' linear interpolation
2020-04-20 00:38:57 -04:00
ClementTsang
7004649a6d Move to tui-rs' built in linear interpolation 2020-04-20 00:29:59 -04:00
ClementTsang
0574678746 Move to stateful except for CPU 2020-04-19 23:39:24 -04:00
ClementTsang
83dad154b9 Fix formatting. 2020-04-19 18:05:52 -04:00
ClementTsang
dd299aefab Update README... 2020-04-19 17:57:43 -04:00
ClementTsang
f334a72fb1 Made table gap optional rather than enforced 2020-04-19 17:45:32 -04:00
ClementTsang
b42583e04c Remove header gap in most tables 2020-04-18 22:54:35 -04:00
ClementTsang
90e1e9f4cb Fix bug with network legend 2020-04-18 21:11:20 -04:00
ClementTsang
207444fbbf Update network legend again 2020-04-18 20:42:52 -04:00
ClementTsang
2365a58eff Update changelog 2020-04-18 19:54:35 -04:00
ClementTsang
7248298995 Update highlight to light blue; new network legend 2020-04-18 19:53:11 -04:00
ClementTsang
92315ea1d7 Fix incorrect changelog 2020-04-18 18:08:05 -04:00
ClementTsang
bc571588e4 refactor: Update tui to 0.9; refactor with new features 2020-04-18 18:05:41 -04:00
imgbot[bot]
57b65ce750
opt: optimize images (#121)
/assets/battery.png -- 1,827.86kb -> 1,251.54kb (31.53%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>

Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
2020-04-16 20:24:38 -04:00
Clement Tsang
163f6823a2
feature: Add battery widget (#120) 2020-04-16 20:06:50 -04:00
Clement Tsang
45e9ba1234
docs: Add choco URL for reference 2020-04-14 19:32:25 -04:00
Clement Tsang
3e6b7ed30c
docs: Update maximizing to be a bit more clear 2020-04-13 14:16:43 -04:00
Clement Tsang
4a4a9cf221
bug: Fix dd failing on non-first entries (#116) 2020-04-12 19:26:32 -04:00
Clement Tsang
bcfd09da88
change: highlight borders & table headers to cyan (#115) 2020-04-12 18:27:58 -04:00
ClementTsang
ac8dabb2af docs: Be more clear about versions and details 2020-04-12 00:19:45 -04:00
Clement Tsang
a351f05d4a
feature: Show process state (#114)
This is not 100% finished and will be refined in the future, as I plan to
do a bit of an overhaul on how the process widget is going to look and
functionality.  In particular, tabbed is currently kinda just slapped
together (I just combine all the states together as one big string).

However, it is enough to work and show state normally...
2020-04-11 21:02:27 -04:00
Clement Tsang
f210681ae7
feature: add io and io/s for processes (#113) 2020-04-10 20:18:26 -04:00
ClementTsang
cf4249c988 Add tagged builds into travis build restriction 2020-04-10 20:02:25 -04:00
ClementTsang
99516ca143 chore: Delete docs folder and update lock 2020-04-09 15:28:43 -04:00
dependabot-preview[bot]
28c27272d7
deps: sysinfo from 0.12.0 to 0.13.0 (#112) 2020-04-09 11:13:52 -04:00
ClementTsang
502b821144 chore: Add Cargo.lock back in 2020-04-08 19:44:29 -04:00
Clement Tsang
84571583c1
Update 0.3.0 release date 2020-04-07 23:32:16 -04:00
ClementTsang
95f99a0254 ci: remove branch restrictions for travis 2020-04-07 23:02:25 -04:00
ClementTsang
ba5c2734cf refactor: Remove debug. 2020-04-07 22:38:53 -04:00
Clement Tsang
7d9ad1ee78
bug: Fix sizing in search and broken tab logic 2020-04-07 22:38:22 -04:00
Clement Tsang
b32c984843
bug: Fix sorting processes by name being case-sensitive 2020-04-07 21:42:57 -04:00
ClementTsang
46e0eee1d3 bug: fix issue with proc widget merging if in the same column as another 2020-04-07 21:15:58 -04:00
Clement Tsang
d2434bf8ad
uptick: 0.3.0 2020-04-07 21:07:24 -04:00
ClementTsang
07efc3f301 opt: Only recalculate rect layout if resize or startup 2020-04-06 23:38:00 -04:00
Clement Tsang
9127cb1468
refactor/bug: Array bound checking, fix CPU jump 2020-04-06 23:04:04 -04:00
Clement Tsang
0a63ee46ef
refactor: Deal with some cognitive complexity 2020-04-06 00:40:55 -04:00
ClementTsang
c2eaaed8b7 docs: Add changelog 2020-04-05 23:41:05 -04:00
Clement Tsang
a40ddce84f
deps: Upgrade crossterm and sysinfo (#105) 2020-04-05 23:20:22 -04:00
ClementTsang
15a3eb4c7e (docs) Be more specific about manual installation 2020-04-04 23:20:50 -04:00
imgbot[bot]
09ab88e7bf
[ImgBot] Optimize images (#104)
/assets/basic_mode.png -- 155.11kb -> 111.93kb (27.83%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>

Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
2020-04-04 20:35:02 -04:00
ClementTsang
e30ec757f7 (docs) Update README to contain info about basic 2020-04-04 18:36:20 -04:00
Clement Tsang
ba0fbf808e
(perf) Avoid harvesting if widget is not being displayed 2020-04-04 18:29:32 -04:00
Clement Tsang
620d614f12
(docs): Updates docs and removes a debug 2020-04-03 01:16:23 -04:00
Clement Tsang
4b756e9fe9
Merge pull request #101 from ClementTsang/imgbot
[ImgBot] Optimize images
2020-04-03 01:16:10 -04:00
ClementTsang
14c58507c0 (docs): Updates docs and removes a debug 2020-04-03 01:14:41 -04:00
ImgBotApp
a30f0bc929
[ImgBot] Optimize images
*Total -- 336.94kb -> 251.45kb (25.37%)

/assets/cpu_layout.png -- 215.94kb -> 160.37kb (25.73%)
/assets/sample_layout.png -- 121.00kb -> 91.08kb (24.73%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
2020-04-03 05:10:24 +00:00
Clement Tsang
2a5d071096
(docs): Update README to be a bit nicer 2020-04-03 01:09:27 -04:00
Clement Tsang
a9c6b227a6
Update pull_request_template.md 2020-04-03 00:53:11 -04:00
ClementTsang
572d665a8a (docs): Update README to be a bit nicer 2020-04-03 00:50:56 -04:00
allcontributors[bot]
ebceed123d
docs: add shilangyu as a contributor (#99)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2020-04-02 20:54:18 -04:00
Marcin Wojnarowski
d82dae0b8d
Added scoop installation instructions (#89) 2020-04-02 20:52:57 -04:00
Clement Tsang
0b1d84fdf5
Add modularity to widget placement and inclusion (#95) 2020-04-01 20:31:43 -04:00
Clement Tsang
c1a19f960f
Reworded a bit of the PR template 2020-03-30 00:49:12 -04:00
Clement Tsang
8b5414cc01
Update pull_request_template.md 2020-03-30 00:46:41 -04:00
dependabot-preview[bot]
f44de81874
Update assert_cmd requirement from 0.12 to 1.0 (#94)
Updates the requirements on [assert_cmd](https://github.com/assert-rs/assert_cmd) to permit the latest version.
- [Release notes](https://github.com/assert-rs/assert_cmd/releases)
- [Changelog](https://github.com/assert-rs/assert_cmd/blob/master/CHANGELOG.md)
- [Commits](https://github.com/assert-rs/assert_cmd/compare/v0.12.0...v1.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-27 18:33:51 -04:00
ClementTsang
8c418dc2c2 Update travis for windows build 2020-03-23 23:02:29 -04:00
Clement Tsang
c4dca935f1
Moved badge 2020-03-20 11:10:55 -04:00
Clement Tsang
8ea83d6feb
Update README to fit in ac 2020-03-20 11:09:55 -04:00
allcontributors[bot]
cbd4841ab6
docs: add mqudsi as a contributor (#88)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2020-03-20 11:07:41 -04:00
allcontributors[bot]
3d83f5f967
docs: add shilangyu as a contributor (#86)
* docs: update README.md [skip ci]

* docs: create .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2020-03-20 11:06:12 -04:00
Clement Tsang
2ce99d3c43
[skip travis] Add contributor 2020-03-19 21:04:38 -04:00
Mahmoud Al-Qudsi
2b418fb506
Fix division by zero when memory data is not available (#85)
The total memory values may be zero when bottom is run on an unsupported
(or not-fully-supported) platform.

The previous behavior resulted in a NaN value for the memory datapoints,
which was passed through to tui-rs which ultimately panicked when
attempting to graph the memory widget.
2020-03-19 21:03:52 -04:00
Clement Tsang
cd6187ec5f
Change the wording of some items in the README 2020-03-17 19:21:37 -04:00
Clement Tsang
790e1044cf
Remove "tests" folder from travis, rename tar 2020-03-15 19:37:50 -04:00
Clement Tsang
a17bf0b973
Update pull_request_template.md 2020-03-13 01:09:21 -04:00
Clement Tsang
1968bb14b4
Cleanup before modularity (#84)
* Uptick some crates, update README dependencies

* Cleanup before modularity feature.

* Fix missing reset zoom on reset

* Fixed reset... not resetting search or data displayed

* Cleaned up options a tiny bit to make more sense.

* Cleaned up some TODOs and the like.

* specify only build master branch.
2020-03-13 01:07:24 -04:00
Clement Tsang
d9747f78e8
Uptick chocolatey version (in moderation) 2020-03-13 00:47:10 -04:00
Clement Tsang
d07cee0f7e
Fix cpu legend colouring (#83)
* Initial fix, but pending a rewrite.

* Initial fix, but pending a rewrite.

* Merged two separate iterations into one for cpu legend.

* Refactor average cpu, fix bug with legend and cursor.
2020-03-11 01:02:47 -04:00
Clement Tsang
7156392665
Merge pull request #82 from ClementTsang/fix_cpu_scroll
Fix cpu scroll
2020-03-10 22:44:30 -04:00
Clement Tsang
6c5f95aa5e
Merge branch 'master' into fix_cpu_scroll 2020-03-10 22:21:08 -04:00
Clement Tsang
d0bf247291
Merge pull request #81 from ClementTsang/fix_resize_scroll
Fix resizing breaking scrolling
2020-03-10 21:55:49 -04:00
ClementTsang
05e0e6bb82 Forgot to set size field upon detecting a resize... 2020-03-10 21:42:12 -04:00
ClementTsang
ee1504db89 Fix cpu scroll. 2020-03-10 21:36:13 -04:00
Clement Tsang
49bd298528
Merge pull request #78 from ClementTsang/dependabot/cargo/fern-0.6.0
Update fern requirement from 0.5.9 to 0.6.0
2020-03-10 12:52:11 -04:00
dependabot-preview[bot]
57fcd77d98
Update fern requirement from 0.5.9 to 0.6.0
Updates the requirements on [fern](https://github.com/daboross/fern) to permit the latest version.
- [Release notes](https://github.com/daboross/fern/releases)
- [Changelog](https://github.com/daboross/fern/blob/master/CHANGELOG.md)
- [Commits](https://github.com/daboross/fern/compare/fern-0.5.9...fern-0.6.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-10 10:40:44 +00:00
Clement Tsang
3ab94edc5d
Merge pull request #76 from ClementTsang/time_scaling
Time scaling
2020-03-10 02:03:11 -04:00
ClementTsang
648864176f Updated documentation, made error in args clearer 2020-03-10 01:51:28 -04:00
ClementTsang
46f1b7df00 Redid how we auto-set time if we have autohide on. 2020-03-10 01:43:42 -04:00
ClementTsang
8630287676 Default to showing time at first for autohide. 2020-03-10 01:38:37 -04:00
ClementTsang
1046043138 Fix bug with autohide causing hide to break. 2020-03-10 01:26:30 -04:00
ClementTsang
e5588f1606 Add hiding time and autohiding time. 2020-03-09 00:52:29 -04:00
ClementTsang
78a05bc683 Fixes bug with too large inputs causing a panic
We would prefer a more graceful error message stating what went wrong.
Caught by the Travis test.
2020-03-08 22:27:41 -04:00
ClementTsang
f70cf02414 Add configurable default time and interval values
Also added documentation both in app and in the README.
2020-03-08 22:01:49 -04:00
ClementTsang
3026fbd1bc Add time scaling. 2020-03-08 19:47:10 -04:00
ClementTsang
6d0b7035d3 Redid basic mode logic and separated CPU
* Separated CPU into CPU legend and graph

* Redid how I did maximizing with basic mode
2020-03-08 16:17:28 -04:00
Clement Tsang
01b37368b2
More basic cleaning (#74)
* Add htop link.

* Move dd and help dialog into separate files

* Move to  folder

* Properly show error message if DD fails on macOS and linux.
2020-03-08 13:56:18 -04:00
Clement Tsang
226c4e5a68
Clean up and manage some basic stuff (#73)
* Remove debug statement.

* Remove redundant functions from main

* Update pull request template.

* Format temperature line.

* Update README for chocolatey.

* Add note about basic mode and htop's inspiration.
2020-03-08 00:35:01 -05:00
Clement Tsang
6342686e22
Merge pull request #72 from ClementTsang/split_widgets_up
Split up widgets to make it a bit easier to work with.
2020-03-07 23:57:22 -05:00
ClementTsang
03ec52c5b1 Split up widgets to make it a bit easier to work with. 2020-03-07 23:47:53 -05:00
Clement Tsang
132a5a2170
Fix dialog box height and scroll label (#71)
* Fixes search with small mode by changing the prompt based on size.

* Minor fixes for search

- Remove ignore unused var lint
- Add a bit more spacing to deal with large unicode
- Add on-right movement on type

* Add contributor's list and bug/req section

* Check for div by zero

* Fix for dd in terms of sizing.

* Added (temporary) fix for help box.  Scrolling is the ideal solution but will leave that for another time.
2020-03-05 23:54:39 -05:00
imgbot[bot]
e16eb832fc
[ImgBot] Optimize images (#68)
/assets/cpu_filter.png -- 100.80kb -> 87.13kb (13.56%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>

Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
2020-03-05 20:33:04 -05:00
Clement Tsang
f2b5f96d80
Fix by doublechecking the remaining width calculation. (#67) 2020-03-05 11:46:38 -05:00
Clement Tsang
3a57570031
Cargo optimization (#65)
* Add potential cargo optimizations.

* Add potential cargo optimizations.
2020-03-05 02:23:19 -05:00
Clement Tsang
188858fedd
Formatting and typos (#63)
* Fix typo and run rustfmt.

* Also add rustfmt check to travis... this might be temporary.

* Add a bit on default config files being created in the debian extended description.

* Add rustup component add to travis.

* Disable rustfmt for now, seems to play weird on windows builds.

* Remove unneccesary deprecate ignore.
2020-03-05 02:09:29 -05:00
Clement Tsang
d018c6ee88
Make update rate u128 across the board. (#64) 2020-03-05 01:30:53 -05:00
Clement Tsang
657cb2dd9b
remove ram rounding. (#62) 2020-03-05 00:38:09 -05:00
Clement Tsang
22cdc005bc
Merge pull request #60 from ClementTsang/simple_mode
Simple mode
2020-03-05 00:11:04 -05:00
ClementTsang
b26f2eca4e Rename cevent to event. 2020-03-04 23:51:05 -05:00
ClementTsang
26c1175a8a More merge conflicts. 2020-03-04 23:48:40 -05:00
Clement Tsang
fee8b5c8a1
Merge branch 'master' into simple_mode 2020-03-04 23:47:53 -05:00
ClementTsang
2a40750067 Fix merge conflict. 2020-03-04 23:45:59 -05:00
Clement Tsang
d1039996c8
Merge pull request #57 from shilangyu/populate-config
create config if doesnt exist
2020-03-04 23:41:23 -05:00
ClementTsang
c69362000d Add CPU row allocation system to more evenly distribute it (aka simple division) 2020-03-04 23:13:00 -05:00
ClementTsang
32ca9edf11 Fix highlighting and cpu filtering when maximized 2020-03-04 18:16:19 -05:00
Clement Tsang
111eb42064
[skip travis] Add another bit to the PR template 2020-03-04 00:02:04 -05:00
ClementTsang
effd494683 Add two new tests; bit unrelated tbh. 2020-03-03 01:02:54 -05:00
ClementTsang
a8d3593518 [skip travis] Update README. 2020-03-03 00:59:03 -05:00
ClementTsang
0c65d5ff56 Added spacing for RAM/net column. 2020-03-03 00:54:49 -05:00
ClementTsang
f3ebed6185 Add table indicator to basic. 2020-03-03 00:48:07 -05:00
ClementTsang
9cad3bb4ec Add basic flag to sample config, also fixed incorrect flag name for configs. 2020-03-03 00:08:09 -05:00
ClementTsang
808fe4deb1 Update README to include basic flag. 2020-03-03 00:05:49 -05:00
ClementTsang
1ba1b0318f Fixed bug with basic mode and default position with basic variants. 2020-03-02 23:45:44 -05:00
shilangyu
47cc34a8e2 reflected auto config creation 2020-03-02 22:07:41 +01:00
ClementTsang
7ca12b0fa2 Merge branch 'simple_mode' of https://github.com/ClementTsang/bottom into simple_mode 2020-03-02 00:09:58 -05:00
ClementTsang
8ee9b72da2 Changed search to be a constant height of 3. 2020-03-02 00:09:45 -05:00
ClementTsang
225ad5366c Added proper navigation for basic mode. 2020-03-02 00:09:45 -05:00
ClementTsang
fcd529aca2 Fixed column organization, need to refactor CPU side to remove any redundant code. 2020-03-02 00:09:45 -05:00
ClementTsang
14c2320de2 Added highlighting + begin finalizing arrangement. Still not done. 2020-03-02 00:09:45 -05:00
ClementTsang
953dd81a5d Added space, fixed div by 0 error. 2020-03-02 00:09:45 -05:00
ClementTsang
269d344c5b Renamed total rx/tx styles. 2020-03-02 00:09:45 -05:00
ClementTsang
d917a27faa Add minimal mode widgets
This adds minimal mode widgets to the program.  This is not done, still
gotta play around with rearranging it to look nice.

Also going to have to change search bar to always take a constant 3.
May remove borders.
2020-03-02 00:09:45 -05:00
ClementTsang
4c98fe4fde Refactoring. 2020-03-02 00:09:45 -05:00
ClementTsang
eb2622467f Refactoring. 2020-03-02 00:09:45 -05:00
ClementTsang
ff43799037 Add basic flag + option. Not functional yet. 2020-03-02 00:09:45 -05:00
ClementTsang
df01a94cb0 Another import optimization. 2020-03-02 00:09:45 -05:00
Clement Tsang
e8f6896c23
[skip travis] Change to LoC rather than lines 2020-03-02 00:09:15 -05:00
Clement Tsang
1899d4e76d
[skip travis] Add tokei for... fun I guess? 2020-03-02 00:08:12 -05:00
ClementTsang
ea86b39688 Changed search to be a constant height of 3. 2020-03-02 00:01:28 -05:00
ClementTsang
7f34061e68 Added proper navigation for basic mode. 2020-03-01 23:53:49 -05:00
ClementTsang
63f2ead48b Fixed column organization, need to refactor CPU side to remove any redundant code. 2020-03-01 17:41:45 -05:00
ClementTsang
227af7654f Added highlighting + begin finalizing arrangement. Still not done. 2020-03-01 17:16:08 -05:00
ClementTsang
8baa04f976 Added space, fixed div by 0 error. 2020-03-01 01:11:22 -05:00
ClementTsang
1a54bb45fb Renamed total rx/tx styles. 2020-03-01 00:29:37 -05:00
ClementTsang
f299954c9f Add minimal mode widgets
This adds minimal mode widgets to the program.  This is not done, still
gotta play around with rearranging it to look nice.

Also going to have to change search bar to always take a constant 3.
May remove borders.
2020-03-01 00:27:55 -05:00
Clement Tsang
735038f060
Merge branch 'master' into populate-config 2020-02-29 23:16:15 -05:00
Clement Tsang
b991102819
[skip travis] Add "avoid merge conflicts" 2020-02-29 19:37:49 -05:00
ClementTsang
f8f523b62e Refactoring. 2020-02-29 17:07:47 -05:00
ClementTsang
a0502802d3 Refactoring. 2020-02-29 17:05:01 -05:00
ClementTsang
bbd57400d9 Add basic flag + option. Not functional yet. 2020-02-29 16:55:02 -05:00
shilangyu
f0da30f2cb added missing endline 2020-02-29 13:06:49 +01:00
shilangyu
6a1fa8f379 rust fmt 2020-02-29 12:54:57 +01:00
shilangyu
622703f4b6 create config if doesnt exist 2020-02-29 12:49:56 +01:00
ClementTsang
01977fffdd Another import optimization. 2020-02-28 23:02:16 -05:00
Clement Tsang
27a04b9dd5
Optimize imports and refactoring using clion (#56)
* Optimized imports as per clion

* Updated rustfmt to remove nightly-only features (for now)

* rustfmt

* [skip travis] Update .gitignore to ignore .idea

* Some more suggestions based on clion.  Mostly removing brackets.
2020-02-28 22:59:17 -05:00
ClementTsang
c715133b4d Some more suggestions based on clion. Mostly removing brackets. 2020-02-28 22:39:26 -05:00
ClementTsang
eb159a45c4 [skip travis] Update .gitignore to ignore .idea 2020-02-28 22:31:11 -05:00
ClementTsang
75a1934420 rustfmt 2020-02-28 22:27:35 -05:00
ClementTsang
520af2b68f Updated rustfmt to remove nightly-only features (for now) 2020-02-28 22:27:29 -05:00
ClementTsang
bbdd7786ce Optimized imports as per clion 2020-02-28 22:24:24 -05:00
Clement Tsang
d922f85b95
Merge pull request #50 from ClementTsang/fix_cursor_screen_bug
Fix cursor screen bug
2020-02-28 21:42:52 -05:00
ClementTsang
2f5b5e7269 Move windows to separate dependency. 2020-02-28 21:15:36 -05:00
ClementTsang
6d0136fa26 Remove a debug line. 2020-02-28 21:15:08 -05:00
ClementTsang
05d4982a1a Treat backspace as a cursor left movement. 2020-02-28 19:54:20 -05:00
ClementTsang
f0f1ee129e Minor side update
* Update PR template to be a bit more specific
* Update README to state what version of rust I dev on in contributions
* Update rustfmt to remove another unstable line
2020-02-28 01:12:49 -05:00
ClementTsang
818d920835 Fixed cursor issue. 2020-02-28 01:12:24 -05:00
ClementTsang
8a95f91442 Removed rustfmt lines that weren't working on stable... 2020-02-27 23:37:55 -05:00
ClementTsang
792be871e8 Uptick crossterm version. 2020-02-27 23:00:51 -05:00
ClementTsang
3f55f071b7 Some minor things like adding a question template + removal of debug. 2020-02-27 22:50:43 -05:00
ClementTsang
64c788a444 [skip travis] add bottom-bin to readme. 2020-02-27 19:01:50 -05:00
Clement Tsang
e5957e06d0
Merge pull request #46 from ClementTsang/investigate_arrow_problem
Switch to another arrow.
2020-02-27 18:56:08 -05:00
ClementTsang
01159e6f78 [skip travis] add chore template. 2020-02-27 18:52:02 -05:00
ClementTsang
f186d988a6 Italicize the issues line. 2020-02-27 18:31:08 -05:00
ClementTsang
09b7e5cb49 Switch to another arrow. 2020-02-27 18:25:08 -05:00
ClementTsang
0955673a74 Minor update to travis (probably irrelevant) and github files. 2020-02-27 18:20:54 -05:00
Clement Tsang
9397897b87
Merge pull request #44 from ClementTsang/colouring_of_rx_tx
Colouring of rx tx
2020-02-27 18:19:09 -05:00
ClementTsang
251d04cfec [skip travis] Update github bug report template again. 2020-02-27 18:04:24 -05:00
ClementTsang
b00740a7dd Added total rx + tx colouring options. 2020-02-27 17:54:39 -05:00
ClementTsang
b32d2dca26 Tiny formatting fix. 2020-02-27 17:42:34 -05:00
Clement Tsang
7240a6d007
Merge pull request #43 from ClementTsang/fix_unicode 2020-02-27 17:39:16 -05:00
ClementTsang
cc751e19ae Fix issue with cursor on canvas due to not incrementing by the SIZE of the grapheme. 2020-02-27 17:15:09 -05:00
ClementTsang
2d02c53296 [skip travis] Update github bug report template again. 2020-02-27 16:39:48 -05:00
ClementTsang
ce9b5372d9 Use max grapheme length rather than max "string" length. 2020-02-27 16:15:28 -05:00
ClementTsang
a755a5d41c Switch to using unicode_segmentation's cursor as a basis on how we do cursor movement in search. 2020-02-27 16:10:33 -05:00
ClementTsang
d96751b786 [skip travis] Updated README to use 1.41 in general 2020-02-27 16:10:33 -05:00
ClementTsang
67f8baa056 Fix unicode causing problems with search. 2020-02-27 16:10:33 -05:00
ClementTsang
66a0b2ac10 [skip travis] update github files once more 2020-02-27 16:10:33 -05:00
Clement Tsang
088f9fbb07 [skip travis] add contribution to readme 2020-02-27 16:09:47 -05:00
Clement Tsang
49628613bc [skip travis] tweak documentation regarding 32-bit 2020-02-27 16:09:47 -05:00
ClementTsang
35f06f0acf [skip travis] Update some github documentation. 2020-02-27 16:08:39 -05:00
Clement Tsang
3eca695807
Merge pull request #36 from ClementTsang/fix_arrow_issue
Add space after arrow due for Konsole
2020-02-25 23:01:13 -05:00
Clement Tsang
679a93ce8f
[skip travis] Update pull req template auto close 2020-02-25 22:49:01 -05:00
ClementTsang
5d90c235eb Add space after arrow due for Konsole
Fix as per https://old.reddit.com/r/kde/comments/6fxf5t/konsole_font_issue/
2020-02-25 22:41:53 -05:00
Clement Tsang
cdf464f323
Merge pull request #34 from ClementTsang/alternate_alt_macos
Colours if selected and F1-3 keys for search options
2020-02-25 22:22:43 -05:00
ClementTsang
de1648ad75 [skip travis] Only test install when attempting to deploy. 2020-02-25 22:06:26 -05:00
ClementTsang
81653e6000 Update travis. 2020-02-25 21:52:57 -05:00
ClementTsang
0660184099 Colours if selected and F1-3 keys for search options
Added different colours to search options if selected; added F1-3 keys as an alternative for searching.  Both are available, but on macOS F1-3 will be suggested instead.
2020-02-25 21:24:31 -05:00
ClementTsang
46b695d575 Test installing too I guess? 2020-02-25 20:31:13 -05:00
ClementTsang
24025df106 [skip travis] Update some github documentation. 2020-02-25 20:17:49 -05:00
ClementTsang
039965f2eb Prune dependencies. 2020-02-25 19:44:54 -05:00
Clement Tsang
f2a55a4608
[skip travis] Update windows build instructions. 2020-02-25 19:16:28 -05:00
Clement Tsang
c8c925e8d7
Fix windows builds for travis 2020-02-25 13:39:53 -05:00
ClementTsang
997d5635af [skip travis] update debian pkg name 2020-02-25 12:28:48 -05:00
Clement Tsang
61da628813
Remove 32-bit automated build for linux
Seems to fail on one dependency.  Will investigate later for 0.3.
2020-02-25 10:52:13 -05:00
Clement Tsang
059290c983
Uptick to 0.2.2 2020-02-25 10:06:37 -05:00
Clement Tsang
d7b068b692
Fix serde missing derive feature
Caused broken cargo install.
2020-02-25 09:54:03 -05:00
Clement Tsang
138e9c2132
Merge pull request #27 from ClementTsang/fix_broken_shift
Fix for issue in powershell.
2020-02-24 22:15:05 -05:00
ClementTsang
fc52c579d3 Just make swap always display... I think it's fine to keep, even if it's 0. 2020-02-24 21:46:41 -05:00
ClementTsang
5e9d9500d5 Update github files again. 2020-02-24 21:44:24 -05:00
ClementTsang
1c52587760 Fix alt key too... windows treats it as a CAPITAL. Go figure. 2020-02-24 21:37:36 -05:00
ClementTsang
2f7840568c Fix for issue in powershell.
Insure that this is tested on other systems first.  At least Linux.
2020-02-24 21:29:04 -05:00
ClementTsang
34b84d6b04 Add explicit lifetime parameters as per 2018 idioms. 2020-02-24 21:10:12 -05:00
Clement Tsang
2bddfa209a
Merge pull request #25 from ClementTsang/ignore_certain_chars
Skip control characters if they are somehow passed in as a char
2020-02-24 20:41:20 -05:00
ClementTsang
ceaedad6dc Skip control characters if they are somehow passed in as a char to on_char_key. 2020-02-24 20:07:38 -05:00
Clement Tsang
8d23f0661c
Merge pull request #22 from ClementTsang/named_colour_and_rgb_support
Added named colour support + rgb colour support in config files.
2020-02-23 13:31:04 -05:00
ClementTsang
59238c2687 Added named colour support + rgb colour support in config files. 2020-02-23 13:15:46 -05:00
ClementTsang
6ffe14707d [skip travis] Fix templates. 2020-02-23 01:11:53 -05:00
Clement Tsang
d1cccff54b
[skip travis] PR template 2020-02-23 01:08:48 -05:00
Clement Tsang
8279a69795
[skip travis] More bug report changing 2020-02-23 01:03:30 -05:00
Clement Tsang
266c3030e2
Merge pull request #12 from ClementTsang/separate_avg_colour
Separate avg cpu colour from the other colours.
2020-02-23 00:57:46 -05:00
ClementTsang
91e97b9f5e [skip travis] Fix templates. 2020-02-23 00:56:39 -05:00
Clement Tsang
9cc92bd4fd
[skip travis] Update FR template. 2020-02-23 00:54:46 -05:00
Clement Tsang
4f4033838a
[skip travis] Update bug report template. 2020-02-23 00:52:37 -05:00
Clement Tsang
ea8841dfb8
[skip traivs] Add PR checklist
This is honestly more for myself than anyone when I add a new feature on a branch.
2020-02-23 00:42:20 -05:00
ClementTsang
cefa227060 Re-added Red to default cpu pool... this does mean that there is a conflict with avg and cpu core 10, but eh... whatever I guess. 2020-02-23 00:31:35 -05:00
ClementTsang
a756c44c66 Support average cpu colour separately from others. Redid documentation. 2020-02-23 00:30:00 -05:00
ClementTsang
b3f61b25ae [skip travis] more readme changing. 2020-02-22 23:49:45 -05:00
Clement Tsang
d8722bb5e5
[skip travis] Remove extra $ signs from README 2020-02-22 23:40:49 -05:00
ClementTsang
d99dea7ab9 [skip travis] made deb part a bit more clear 2020-02-22 18:44:34 -05:00
ClementTsang
214153316b [skip travis] remove redundant tag 2020-02-22 18:41:13 -05:00
ClementTsang
33a1bc1599 Add debian build. 2020-02-22 18:38:18 -05:00
Clement Tsang
41148a2fa2
[skip travis] add links to download locs 2020-02-22 15:45:05 -05:00
Clement Tsang
a9ba1d5ef1
[skip travis] Add chocolatey option to readme 2020-02-22 15:00:17 -05:00
ClementTsang
8ebe843128 Some doc stuff and edit travis. 2020-02-22 00:42:52 -05:00
ClementTsang
1cf67c6dbd [skip travis] Allow overwriting. 2020-02-21 00:49:10 -05:00
ClementTsang
ab240e5313 Fix travis config, missing file this time. 2020-02-21 00:07:55 -05:00
ClementTsang
17a3fbc40e Fix travis config with missing .exe extension. 2020-02-20 23:45:48 -05:00
ClementTsang
e8ce1d5b1e Uptick version before patch. 2020-02-20 23:33:23 -05:00
ClementTsang
e836bedcb8 Update README for new file paths. 2020-02-20 23:26:07 -05:00
ClementTsang
aa44a1dc31 Moved some files around. 2020-02-20 23:25:28 -05:00
ClementTsang
0697d9dd56 Fix issue with default file paths not being respected; updated default file paths. 2020-02-20 23:10:52 -05:00
ClementTsang
e7352ddef1 One last update to travis. Include btm.toml into the tar.gz files. 2020-02-20 21:28:56 -05:00
ClementTsang
6892ec6065 Update documentation again. One last build trigger. 2020-02-20 21:24:49 -05:00
ClementTsang
2fae5a722e Update travis to also package btm.toml on future releases. 2020-02-20 20:20:10 -05:00
ClementTsang
16ad47a85d [skip travis] Update docs, add default config file. 2020-02-20 20:13:17 -05:00
ClementTsang
7f0a05a8f9 Fix broken windows build, disable beta for now. 2020-02-20 01:38:17 -05:00
ClementTsang
f4b7df139a Merge execute macro calls. 2020-02-20 01:19:26 -05:00
ClementTsang
428e68c112 Travis says you can remove skip_cleanup. But you can't. 2020-02-20 01:09:24 -05:00
ClementTsang
7cd352a245 Travis is hard. I forgot to build the release version. Oh man. 2020-02-20 00:55:06 -05:00
ClementTsang
3ee4314bea Simplified and fixed travis. 2020-02-20 00:44:19 -05:00
ClementTsang
c4474c0eb1 Realized I was using debug versions all this time.... ugh 2020-02-20 00:34:21 -05:00
ClementTsang
80e0c07283 Fix missing skip 2020-02-20 00:20:51 -05:00
ClementTsang
306812ca4f Missing glob in travis. 2020-02-19 23:46:07 -05:00
ClementTsang
97c51ea1c2 Update documentation. Trigger build. 2020-02-19 23:35:54 -05:00
ClementTsang
acff2fbb78 [skip travis] Update travis file name. 2020-02-19 23:25:11 -05:00
ClementTsang
c0fef59ba7 Update travis... again. 2020-02-19 22:59:20 -05:00
ClementTsang
efd74f6fb9 One last change, made head 2 colours const and shared. 2020-02-19 22:32:04 -05:00
ClementTsang
d6810cbba4 [skip travis] Update documentation. 2020-02-19 22:24:05 -05:00
ClementTsang
c377278974 [skip travis] Update documentation. 2020-02-19 22:21:18 -05:00
ClementTsang
c4cd43968e Increased number of default colours. 2020-02-19 22:07:51 -05:00
ClementTsang
1c1efcc714 Colour issue... on powershell. 2020-02-19 22:00:20 -05:00
ClementTsang
c0fb2bac3f [skip travis] Consistency in captialization. 2020-02-19 21:36:17 -05:00
ClementTsang
3824b22a50 [skip travis] More documentation updating. Moved compat. chart over to widgets section, rewording, and add note on colour issues on some terminals when setting custom colours. 2020-02-19 21:33:11 -05:00
ClementTsang
ae935b6f08 Change default colouring to be compatible on macOS default terminal. 2020-02-19 21:29:53 -05:00
ClementTsang
674bf73b32 [skip travis] Update README. 2020-02-19 19:57:54 -05:00
ClementTsang
67c6984406 Pretty sure I fixed scroll resizing... 2020-02-19 19:56:18 -05:00
ClementTsang
8cf5b42f29 Update cargo.toml, some todos 2020-02-19 00:16:40 -05:00
ClementTsang
c6cefc2561 Update travis for releases. 2020-02-19 00:06:52 -05:00
ClementTsang
2135ebbef1 Aaaaand revert again. 2020-02-19 00:06:36 -05:00
ClementTsang
bbd475cfdb Scroll bar fix v2, electric boogaloo 2020-02-18 23:33:15 -05:00
ClementTsang
e4597730bd Revert scroll fix. 2020-02-18 23:04:50 -05:00
ClementTsang
fd32de2774 Add default windows path. 2020-02-18 23:03:01 -05:00
ClementTsang
5131859ab8 Fix scroll problem with resizing/maximizing. 2020-02-18 23:02:52 -05:00
ClementTsang
47b78d22f8 Sanity checks as we approach release... bug patching:
* Fix for freeze not working (due to change with how we eat data)
* Fix for typos with newlines
* Made help box larger
* Made dd box larger
2020-02-17 23:48:27 -05:00
ClementTsang
48d2afc54a Tweak dot generation again... it was too sparse in some cases. 2020-02-17 23:22:03 -05:00
ClementTsang
0724a40efb Strip btm in travis. It's not dirty I swear. 2020-02-17 23:17:06 -05:00
ClementTsang
40900d91ba Fix issue with missing CPU... 2020-02-17 23:15:14 -05:00
ClementTsang
e7ed8088b5 Dropping nightly tests. They fail too often and take up useless time. Re-adding clippy too. 2020-02-17 23:01:58 -05:00
ClementTsang
2f59af412d Tons of refactoring and fixes.
* Fixed a bunch of previously introduced bugs.  Oops.
* Some minor refactoring/efficiency changes that *should* help.  Should.
2020-02-17 22:59:35 -05:00
ClementTsang
d9364410e8 Removing clippy again for now... 2020-02-17 21:44:47 -05:00
ClementTsang
6e5e172008 Travis nightly... man... 2020-02-17 21:30:16 -05:00
ClementTsang
bd3e9b9b87 Add nightly clippy fix. 2020-02-17 20:47:59 -05:00
ClementTsang
dbfe5467f1 Add nightly clippy fix. 2020-02-17 20:42:14 -05:00
ClementTsang
8b57f53edc Trying out travis releases... 2020-02-17 20:29:41 -05:00
ClementTsang
6dc78a0c0c Update how cpu disabling field looks. 2020-02-17 19:25:59 -05:00
ClementTsang
9b13ac1158 Skip 2 points to reduce CPU load. 2020-02-17 18:48:20 -05:00
ClementTsang
8e1c525e2a Fix issue introduced with searching and ctrl-u 2020-02-17 18:13:31 -05:00
ClementTsang
b69eca0fc6 Change to focus on speed. 2020-02-17 18:13:13 -05:00
ClementTsang
b3eafe711e Fix issue introduced with last commit on searching. 2020-02-17 17:53:49 -05:00
ClementTsang
4485d1b380 Some clippy and refactoring. 2020-02-17 17:42:51 -05:00
ClementTsang
c669b5337c Add ability to still show data entries in the legend even if line is disabled. 2020-02-17 12:07:43 -05:00
ClementTsang
531e6ed76e [skip travis] Really redundant rustfmt update. 2020-02-17 00:55:24 -05:00
ClementTsang
cbafbfc699 Minor rearrangement of CPU toggle location. 2020-02-17 00:40:39 -05:00
ClementTsang
0de4b65e1a [skip travis] Forgot a period, oops. 2020-02-17 00:21:42 -05:00
ClementTsang
3ae5248874 Update docs, update gif again. 2020-02-17 00:20:31 -05:00
ClementTsang
b80259d4d2 Add ctrl-u, update in-program docs 2020-02-17 00:20:22 -05:00
ClementTsang
9fcbff99a3 Update GIF, add DELETE key to search options. 2020-02-16 21:54:29 -05:00
ClementTsang
f7ab907b74 [skip travis] Update documentation with widget specifics; prepare for release soon... 2020-02-16 21:12:31 -05:00
ClementTsang
e2039722eb Reversed CPU drawing order; this promotes average (if enabled) to draw on top. 2020-02-16 20:37:34 -05:00
ClementTsang
c09c4a37c4 Update some documentation to reflect filter feature in CPU 2020-02-16 20:21:42 -05:00
Clement Tsang
683a3d3a25
Merge pull request #9 from ClementTsang/add_graph_filtering
Add graph filtering
2020-02-16 19:50:34 -05:00
ClementTsang
65634f23d4 Not implementing mem and network for now... sorry. 2020-02-16 19:50:10 -05:00
ClementTsang
01b1ec8380 Disabled for now... 2020-02-16 19:45:31 -05:00
ClementTsang
32e8be93b7 CPU title bar and esc sequencing. 2020-02-16 19:32:21 -05:00
ClementTsang
8856ea152e De-selected cpu lines are hidden from normal chart. 2020-02-16 18:40:13 -05:00
ClementTsang
8a718080a5 CPU specific line filtering added. 2020-02-16 17:48:24 -05:00
ClementTsang
74df90010d Some basic setup for adding graph filtering; added delete key to allow dd-ing, some refactoring. 2020-02-16 15:25:52 -05:00
ClementTsang
882e5d9289 More minor refactoring to generalize the app search state struct. 2020-02-15 20:25:32 -05:00
ClementTsang
4dc5a3f6d4 Minor refactoring again. 2020-02-15 20:16:05 -05:00
ClementTsang
51761400ce Some minor refactoring; added a quick skip for invalid or blank searches 2020-02-15 20:01:59 -05:00
ClementTsang
3224adf047 [skip travis] Add new documentation file; this is not filled out yet. 2020-02-15 18:16:52 -05:00
ClementTsang
ccf58bace9 [skip travis] Some notes and readme changes... and an additional commit before starting next feature. 2020-02-15 18:15:25 -05:00
ClementTsang
0c48c5973f More refactoring of some code to make it cleaner. 2020-02-15 18:06:17 -05:00
ClementTsang
59c0b3df62 [skip travis] Update documentation a bit. 2020-02-15 17:41:26 -05:00
ClementTsang
05acba2f47 Fixed issue with HJKL keys interfering with search widget. Oops! 2020-02-15 17:34:59 -05:00
ClementTsang
470e431e55 Fixed network chart bug, changed search widget option positioning to always place at bottom. 2020-02-15 17:19:49 -05:00
ClementTsang
a18537040d Updated README to reflect removal of debug flag for now. 2020-02-15 17:18:50 -05:00
ClementTsang
50dd079b9e Updated heim version. 2020-02-15 17:18:37 -05:00
ClementTsang
3b588f1ba9 Removed extra debug statements. 2020-02-15 16:45:09 -05:00
Clement Tsang
a7594efbe0
Merge pull request #8 from ClementTsang/multithread_collection
Multithread collection
2020-02-15 16:29:23 -05:00
ClementTsang
7a6d8f088c Some refactoring... I also tried to make the processes part mutlithreaded, but that saved negliglble time and increase cpu usage... 2020-02-15 16:28:44 -05:00
ClementTsang
e05b5c46fe Merged async together. 2020-02-14 22:51:20 -05:00
Clement Tsang
aca6c268ab
[skip travis] reword readme for new widget flag 2020-02-14 03:39:37 -05:00
ClementTsang
debee7d9cb [skip travis] Updated documentation. 2020-02-13 21:36:49 -05:00
ClementTsang
fe5f911ad3 Added ability to set default highlighted widget. 2020-02-13 21:06:11 -05:00
ClementTsang
5ad522be43 Removed unnecessary clone. 2020-02-12 20:09:36 -05:00
ClementTsang
20b5efcc01 Added esc to title of maximized widgets 2020-02-12 19:55:58 -05:00
ClementTsang
f0dad8f5bf Added maximizing mode to allow users to zoom into a particular widget. Not 100% done. 2020-02-12 00:35:37 -05:00
ClementTsang
908960f783 Potential fix for strange use% in macos...? 2020-02-11 00:45:13 -05:00
ClementTsang
0051477f56 Accidentally left in an extra line of code. 2020-02-11 00:41:28 -05:00
ClementTsang
b17094d4b1 Add current cpu total flag to other OS 2020-02-11 00:34:39 -05:00
ClementTsang
6aaa53ec37 Appease clippy more, remove clippy from travis for now. 2020-02-10 21:59:57 -05:00
ClementTsang
7b07ba4cf7 Update config, travis. 2020-02-10 20:41:54 -05:00
ClementTsang
1ff2d78b41 Update travis to deny clippy errors. 2020-02-10 20:00:18 -05:00
ClementTsang
c6eb66fd52 Merge branch 'master' of https://github.com/ClementTsang/bottom 2020-02-10 19:45:22 -05:00
ClementTsang
a7025aca4a More clippy fixing. 2020-02-10 19:44:26 -05:00
Clement Tsang
54da3e581e Update .travis.yml 2020-02-10 02:14:01 -05:00
ClementTsang
f21c06f8ed Update documentation and help menu for HJKL 2020-02-10 00:29:23 -05:00
ClementTsang
f45b2d5711 Update travis to check clippy 2020-02-10 00:26:34 -05:00
ClementTsang
37b1d93d05 removed control + hjkl again, added shift + hjkl (or just HJKL) to navigate widgets 2020-02-10 00:26:17 -05:00
ClementTsang
60b6a0911a Major refactoring to appease clippy; potential reintroduction of hjkl keys to navigate widgets... 2020-02-10 00:16:11 -05:00
Clement Tsang
7ec52b722b Some more changes to support sysinfo update 2020-02-09 22:32:28 -05:00
ClementTsang
dbc970abec Accidentally left in some code that prevented the total rx/tx from being shown on windows... oops. 2020-02-09 22:25:47 -05:00
ClementTsang
8098e45dcf Update canvas to support network change on windows 2020-02-09 22:19:05 -05:00
ClementTsang
95ef6c2c4c [skip travis] Update compatability chart. 2020-02-09 22:14:02 -05:00
ClementTsang
1ac6cdde2f Update sysinfo, add total network to windows/linux. 2020-02-09 22:11:03 -05:00
ClementTsang
5dd22c6c89 Minor refactoring. 2020-02-09 21:34:44 -05:00
ClementTsang
82cab62790 Made dialog screens affected by colour choice. 2020-02-09 21:28:01 -05:00
ClementTsang
4bc07debb4 Some minor formatting of dialog boxes, added back widget title to search bar 2020-02-09 19:24:22 -05:00
ClementTsang
fac67e00ae Split up help screen into categories, hopefully this makes it easier to spot what you are looking for 2020-02-09 19:17:59 -05:00
ClementTsang
909fbd3571 Made the dd screen prettier. 2020-02-09 17:11:57 -05:00
ClementTsang
30f69e2ee0 [skip travis] update sample config again... left in a typo, oops 2020-02-08 22:39:45 -05:00
ClementTsang
4ac3a10fbf Update and clean up ? menu... some more work to be done though 2020-02-08 22:38:55 -05:00
ClementTsang
b593a29e9c More cleaning up of new colour feature 2020-02-08 18:00:50 -05:00
ClementTsang
7000a2720d [skip travis] update readme 2020-02-08 17:32:31 -05:00
ClementTsang
8764b3092a Some cleaning up of the canvas colour setting feature 2020-02-08 16:39:50 -05:00
ClementTsang
f3a70fbf6d Added more options and removed cursor (merged with overall text highlighting) 2020-02-08 16:00:43 -05:00
ClementTsang
13d3e76dc6 [skip travis] Update README 2020-02-08 14:38:16 -05:00
ClementTsang
2123becb81 Added colour options to config; updated sample config to reflect this; updated README 2020-02-08 14:28:19 -05:00
ClementTsang
238e0c88e0 Update documentation again, also change temp a bit 2020-02-07 00:28:26 -05:00
ClementTsang
48107ac526 [skip travis] Update documentation for config. 2020-02-07 00:21:06 -05:00
ClementTsang
027220e285 [skip travis] Update documentation for config. 2020-02-07 00:19:50 -05:00
ClementTsang
87e0223e64 [skip travis] Added sample toml file. 2020-02-07 00:17:02 -05:00
ClementTsang
96d405a353 Add config options 2020-02-07 00:16:41 -05:00
ClementTsang
fc37cf7f3d Config with toml instead 2020-02-06 21:47:47 -05:00
ClementTsang
8782b327b9 [skip travis] minor refactor of conversion fns 2020-02-05 21:37:49 -05:00
ClementTsang
a9565d21a3 Remove termion from Cargo, causes windows builds to fail 2020-02-05 20:37:37 -05:00
ClementTsang
7ea20283cf Update cargo to newer versions of crates 2020-02-05 19:53:42 -05:00
ClementTsang
0b857f6609 Remove useless to_vec() calls to reduce clones 2020-02-04 23:33:09 -05:00
ClementTsang
146424a1d4 [skip travis] Remove redundant code 2020-02-04 23:21:44 -05:00
ClementTsang
e0115624a9 Refactoring - moved canvas into its own struct... time to do some more fun optimization. 2020-02-04 22:44:49 -05:00
ClementTsang
41d56d8a9b Update Cargo, changed the CLI flags for search a bit along with the docs to be a bit easier to remember (all caps, change regex option to -R) 2020-02-04 20:07:53 -05:00
ClementTsang
a7bca4ec50 [skip travis] Update README to reflect updating tested rust version 2020-02-03 23:27:49 -05:00
ClementTsang
18ae433f22 Tweaked default colour to have better contrast, added labels back to network (note they won't show as of now due to tui-rs, but that should change with an upcoming TUI release) 2020-02-03 00:39:46 -05:00
ClementTsang
3779109180 [skip travis] Rounding added to mem totals 2020-02-03 00:31:38 -05:00
ClementTsang
7bf88dffd1 Fixed network chart to make it a bit more like before my changes 2020-02-03 00:06:54 -05:00
ClementTsang
0a13d75415 Made search drawing on canvas a bit more efficient if possible, fixed app positionings due to search repositioning 2020-02-02 23:50:18 -05:00
ClementTsang
f9bd7a6f21 [skip travis] Update README for some more info 2020-02-02 23:36:19 -05:00
ClementTsang
06c404ac3b [skip travis] Update README to fix typo 2020-02-02 23:33:40 -05:00
ClementTsang
616ba01be0 Added flag functionality, made case insensitive default from now on 2020-02-02 23:25:15 -05:00
ClementTsang
6551885666 Update documentation and added more flags for search as per last commit 2020-02-02 23:20:53 -05:00
ClementTsang
fc3a2e69ec Made search look prettier and organized it a bit... also added match whole word functionality. 2020-02-02 23:15:28 -05:00
ClementTsang
1360296b4e [skip travis] Add description of terminal and fonts to demo. 2020-02-02 19:08:28 -05:00
ClementTsang
762acc8642 [skip travis] Update README to reflect added libs 2020-02-02 18:07:41 -05:00
ClementTsang
c9224feb7e [skip travis] Update readme; macOS doesn't work with Ctrl-arrow keys 2020-02-02 17:48:46 -05:00
ClementTsang
e98cc770a5 Removed Ctrl-hjkl as movement between widgets as Ctrl-j seemed to be broken... replaced with Shift-arrow keys for an alternative 2020-02-02 17:45:05 -05:00
ClementTsang
e548d07c1f Add panic hook, fix cpu legend causing panic on small windows 2020-02-02 17:09:42 -05:00
ClementTsang
96bb4d1dc1 Fix too small window bug 2020-02-02 14:24:10 -05:00
ClementTsang
1b09133e3b Refactor i64 to u64 for position 2020-02-02 14:22:16 -05:00
Clement Tsang
35f78a7e91
Merge pull request #7 from ClementTsang/optimization_and_refactoring_branch
Optimization and refactoring branch
2020-02-02 01:52:39 -05:00
ClementTsang
853ce3c736 Move ignore case to tab 2020-02-02 00:55:57 -05:00
ClementTsang
3327087443 Fix dd with new changes 2020-02-02 00:52:41 -05:00
ClementTsang
0ab4b7f7cc Fix process searching while scrolling... that was broken for a while, I guess 2020-02-02 00:24:00 -05:00
ClementTsang
0bf7f32473 Optimizing processes... 2020-02-01 23:49:44 -05:00
ClementTsang
67ff2f28eb Tweaked point generation a bit again 2020-01-31 21:01:33 -05:00
ClementTsang
971384cf3a New way of doing referencing previous pid stats without having to GC - just write a new one every time... 2020-01-31 20:49:30 -05:00
ClementTsang
63bb79cb98 [skip travis] update README 2020-01-30 23:33:33 -05:00
ClementTsang
24f0bbc852 dd works on macOS now. 2020-01-30 23:13:12 -05:00
Clement Tsang
eea1d29da8 Update README.md 2020-01-29 19:01:02 -05:00
Clement Tsang
3beed68d0c Update README.md 2020-01-29 18:59:49 -05:00
ClementTsang
4f31c6ee02 Lowered stale timing again 2020-01-28 22:48:51 -05:00
ClementTsang
2d25abaa16 Removed redundant logic in cpu chart causing average to show the wrong colour 2020-01-28 22:42:14 -05:00
ClementTsang
f32035b8d5 Tweaked the chart ratios 2020-01-28 22:38:36 -05:00
ClementTsang
c415dfd88c Changed wording for case match default in flags 2020-01-28 22:21:31 -05:00
ClementTsang
63299afaf0 Added cleaning event loop 2020-01-28 22:11:00 -05:00
ClementTsang
3d4de7867c Added cleaning function. 2020-01-28 22:06:06 -05:00
ClementTsang
abe8a4bb86 Moved temp and drives over... 2020-01-28 21:24:52 -05:00
ClementTsang
57aa15978c Moved CPU over 2020-01-26 20:14:14 -05:00
ClementTsang
c5cd431e2e Updated memory labels to be more straightforward in generation. 2020-01-26 16:44:24 -05:00
ClementTsang
10b7aa6f78 Converted mem over, will need to move the label over too 2020-01-26 01:51:54 -05:00
Clement Tsang
c59b8c8796 [skip travis] Missing a period. 2020-01-25 16:44:16 -05:00
ClementTsang
13f6dfc529 Reworked network again; will use this to change all widgets 2020-01-25 16:36:14 -05:00
Clement Tsang
495e189a42 Update README.md 2020-01-24 20:00:37 -05:00
ClementTsang
fe99b99d0a Removed btreemap and went back to vec as it makes more sense for us 2020-01-21 23:35:16 -05:00
ClementTsang
e6b6048afb Further tweaking of network 2020-01-21 23:29:47 -05:00
ClementTsang
1339df81e1 Merge branch 'optimization_and_refactoring_branch' of https://github.com/ClementTsang/bottom into optimization_and_refactoring_branch 2020-01-21 23:01:14 -05:00
ClementTsang
0fdab76cf5 Tweaked network graph generation a bit to match master 2020-01-21 22:59:42 -05:00
ClementTsang
840b0cccc8 Slightly optimized how networking is... I think. 2020-01-21 22:48:56 -05:00
ClementTsang
ae6e27d25a Updated cargo and .gitignore 2020-01-21 22:48:56 -05:00
ClementTsang
c0df2e6c33 Only generate regexes during regex mode 2020-01-21 22:48:56 -05:00
Clement Tsang
9baff73350 [skip travis] More README fixes. 2020-01-21 19:28:39 -05:00
Clement Tsang
4c3d4d6e03 [skip travis] Update README with link to Releases 2020-01-20 20:09:39 -05:00
ClementTsang
e356b94867 Slightly optimized how networking is... I think. 2020-01-20 01:28:30 -05:00
ClementTsang
f04ff034f4 Updated cargo and .gitignore 2020-01-19 22:35:05 -05:00
ClementTsang
5cc8a08376 Only generate regexes during regex mode 2020-01-19 20:57:05 -05:00
ClementTsang
17eb6c827d Updated README. 2020-01-19 02:02:44 -05:00
ClementTsang
495e6d2dc2 Added cursor hiding if not focused 2020-01-18 14:57:54 -05:00
ClementTsang
2832ddebb0 Updated documentation. 2020-01-17 19:59:01 -05:00
ClementTsang
4c7b3ee239 Add Ctrl-A and Ctrl-E for searching to skip around to start and end respectively. 2020-01-17 19:53:42 -05:00
ClementTsang
7e442330ba Add support for searching while frozen 2020-01-17 19:19:20 -05:00
ClementTsang
40be97eaf4 Add basic cursor movement + visuals + control to search
Add basic cursor movement + control to search
2020-01-16 21:53:22 -05:00
ClementTsang
cc5c6f4d87 Added a very basic way of displaying your current search mode... I need to refine this over the next few days. 2020-01-15 23:03:23 -05:00
ClementTsang
a4badebd73 Added in-program hotkey (Ctrl-S) to switch search levels, need to add some GUI indication. Also made it so that you don't need ENTER anymore to search... will monitor and test how this affects performance. 2020-01-15 22:57:00 -05:00
ClementTsang
5d0c8a9f32 Note this is not 100% complete - there's some nasty code used to just get functionality down. Simple search option added, flag added, no way of switching in-program yet however. 2020-01-15 22:50:11 -05:00
ClementTsang
1b65fa022a Added some logic to allow visibility of network data even when smaller height windows are used 2020-01-15 00:38:43 -05:00
ClementTsang
9393586f56 Revert to labels for now... see if I have to fork tui-rs to get it to work the way I want 2020-01-14 22:28:11 -05:00
ClementTsang
ff3f1fa2ff Move some width ratios around 2020-01-14 21:24:10 -05:00
ClementTsang
e0a4ebda01 Simple moving of ram position to support TUI hiding legends... may revert this in the future, though. 2020-01-13 22:06:44 -05:00
Clement Tsang
a92ee19346 Merge pull request #5 from ClementTsang/process_search_filter
Implement process search filtering
2020-01-12 18:46:04 -05:00
ClementTsang
bd356a851b Regex filter added. This is a very rudimentary implementation, but I feel it's good enough for now. 2020-01-12 18:45:11 -05:00
ClementTsang
2bb1333d04 Mostly done the base display and control logic for search, now need to implement search filter logic 2020-01-12 15:41:27 -05:00
ClementTsang
ffafba2374 Adding documentation to search feature. 2020-01-12 14:25:47 -05:00
ClementTsang
66f27be4bf Update in-tui documentation to be consistent with changes. 2020-01-12 13:18:01 -05:00
ClementTsang
545cb8b8b1 Change of hjkl navigation and removal of q to quit (replaced by Ctrl-[char]) variants. This is required for a less confusing use of upcoming search functionality 2020-01-12 13:15:49 -05:00
ClementTsang
0e35d30068 [skip travis] Remove todo! macro which might cause issues on older rust versions 2020-01-12 03:08:34 -05:00
ClementTsang
0e4dba00c2 [skip travis] Change of terminology within README. 2020-01-11 18:21:14 -05:00
ClementTsang
896bfc51d3 (cargo-release) start next development iteration 0.1.3-alpha.0 2020-01-11 17:43:32 -05:00
315 changed files with 45617 additions and 3744 deletions

649
.all-contributorsrc Normal file
View File

@ -0,0 +1,649 @@
{
"files": [
"README.md"
],
"imageSize": 100,
"commit": false,
"contributors": [
{
"login": "shilangyu",
"name": "Marcin Wojnarowski",
"avatar_url": "https://avatars3.githubusercontent.com/u/29288116?v=4",
"profile": "http://shilangyu.github.io",
"contributions": [
"code",
"platform"
]
},
{
"login": "mqudsi",
"name": "Mahmoud Al-Qudsi",
"avatar_url": "https://avatars3.githubusercontent.com/u/606923?v=4",
"profile": "http://neosmart.net/",
"contributions": [
"code"
]
},
{
"login": "andys8",
"name": "Andy",
"avatar_url": "https://avatars0.githubusercontent.com/u/13085980?v=4",
"profile": "https://andys8.de",
"contributions": [
"code"
]
},
{
"login": "HarHarLinks",
"name": "Kim Brose",
"avatar_url": "https://avatars0.githubusercontent.com/u/2803622?v=4",
"profile": "https://github.com/HarHarLinks",
"contributions": [
"code"
]
},
{
"login": "svenstaro",
"name": "Sven-Hendrik Haase",
"avatar_url": "https://avatars0.githubusercontent.com/u/1664?v=4",
"profile": "https://svenstaro.org",
"contributions": [
"doc"
]
},
{
"login": "tim77",
"name": "Artem Polishchuk",
"avatar_url": "https://avatars0.githubusercontent.com/u/5614476?v=4",
"profile": "https://liberapay.com/Artem4/",
"contributions": [
"platform",
"doc"
]
},
{
"login": "runlevel5",
"name": "Trung Lê",
"avatar_url": "https://avatars2.githubusercontent.com/u/135605?v=4",
"profile": "http://ruby-journal.com/",
"contributions": [
"platform",
"infra"
]
},
{
"login": "dm9pZCAq",
"name": "dm9pZCAq",
"avatar_url": "https://avatars1.githubusercontent.com/u/46228973?v=4",
"profile": "https://github.com/dm9pZCAq",
"contributions": [
"platform",
"doc"
]
},
{
"login": "LlinksRechts",
"name": "Lukas Rysavy",
"avatar_url": "https://avatars2.githubusercontent.com/u/10536802?v=4",
"profile": "https://lukor.org",
"contributions": [
"code"
]
},
{
"login": "ehamberg",
"name": "Erlend Hamberg",
"avatar_url": "https://avatars3.githubusercontent.com/u/16063?v=4",
"profile": "http://hamberg.no/erlend",
"contributions": [
"code"
]
},
{
"login": "Frederick888",
"name": "Frederick Zhang",
"avatar_url": "https://avatars.githubusercontent.com/u/4507647?v=4",
"profile": "https://onee3.org",
"contributions": [
"code"
]
},
{
"login": "pvanheus",
"name": "pvanheus",
"avatar_url": "https://avatars.githubusercontent.com/u/4154788?v=4",
"profile": "https://github.com/pvanheus",
"contributions": [
"code"
]
},
{
"login": "briandipalma",
"name": "Brian Di Palma",
"avatar_url": "https://avatars.githubusercontent.com/u/1597820?v=4",
"profile": "https://github.com/briandipalma",
"contributions": [
"doc"
]
},
{
"login": "dakyskye",
"name": "Lasha Kanteladze",
"avatar_url": "https://avatars.githubusercontent.com/u/32128756?v=4",
"profile": "https://dakyskye.github.io",
"contributions": [
"doc"
]
},
{
"login": "herbygillot",
"name": "Herby Gillot",
"avatar_url": "https://avatars.githubusercontent.com/u/618376?v=4",
"profile": "https://github.com/herbygillot",
"contributions": [
"doc"
]
},
{
"login": "yellowsquid",
"name": "Greg Brown",
"avatar_url": "https://avatars.githubusercontent.com/u/46519298?v=4",
"profile": "https://github.com/yellowsquid",
"contributions": [
"code"
]
},
{
"login": "TotalCaesar659",
"name": "TotalCaesar659",
"avatar_url": "https://avatars.githubusercontent.com/u/14265316?v=4",
"profile": "https://github.com/TotalCaesar659",
"contributions": [
"doc"
]
},
{
"login": "grawlinson",
"name": "George Rawlinson",
"avatar_url": "https://avatars.githubusercontent.com/u/4408051?v=4",
"profile": "https://github.com/grawlinson",
"contributions": [
"doc",
"platform"
]
},
{
"login": "adiabatic",
"name": "adiabatic",
"avatar_url": "https://avatars.githubusercontent.com/u/101246?v=4",
"profile": "https://www.frogorbits.com/",
"contributions": [
"doc"
]
},
{
"login": "bowlofeggs",
"name": "Randy Barlow",
"avatar_url": "https://avatars.githubusercontent.com/u/354506?v=4",
"profile": "https://electronsweatshop.com",
"contributions": [
"code"
]
},
{
"login": "patricksjackson",
"name": "Patrick Jackson",
"avatar_url": "https://avatars.githubusercontent.com/u/160646?v=4",
"profile": "http://jackson.dev",
"contributions": [
"ideas",
"doc"
]
},
{
"login": "mati865",
"name": "Mateusz Mikuła",
"avatar_url": "https://avatars.githubusercontent.com/u/1174646?v=4",
"profile": "https://github.com/mati865",
"contributions": [
"code"
]
},
{
"login": "GuillaumeGomez",
"name": "Guillaume Gomez",
"avatar_url": "https://avatars.githubusercontent.com/u/3050060?v=4",
"profile": "https://blog.guillaume-gomez.fr",
"contributions": [
"code"
]
},
{
"login": "shurizzle",
"name": "shura",
"avatar_url": "https://avatars.githubusercontent.com/u/203655?v=4",
"profile": "https://github.com/shurizzle",
"contributions": [
"code"
]
},
{
"login": "wezm",
"name": "Wesley Moore",
"avatar_url": "https://avatars.githubusercontent.com/u/21787?v=4",
"profile": "https://www.wezm.net/",
"contributions": [
"code"
]
},
{
"login": "xgdgsc",
"name": "xgdgsc",
"avatar_url": "https://avatars.githubusercontent.com/u/1189869?v=4",
"profile": "https://github.com/xgdgsc",
"contributions": [
"doc"
]
},
{
"login": "ViridiCanis",
"name": "ViridiCanis",
"avatar_url": "https://avatars.githubusercontent.com/u/49595344?v=4",
"profile": "https://github.com/ViridiCanis",
"contributions": [
"code"
]
},
{
"login": "jamartin9",
"name": "Justin Martin",
"avatar_url": "https://avatars.githubusercontent.com/u/7027701?v=4",
"profile": "https://github.com/jamartin9",
"contributions": [
"code",
"doc"
]
},
{
"login": "DianaNites",
"name": "Diana",
"avatar_url": "https://avatars.githubusercontent.com/u/5275194?v=4",
"profile": "https://github.com/DianaNites",
"contributions": [
"code"
]
},
{
"login": "hervyqa",
"name": "Hervy Qurrotul Ainur Rozi",
"avatar_url": "https://avatars.githubusercontent.com/u/45872139?v=4",
"profile": "https://hervyqa.id",
"contributions": [
"doc"
]
},
{
"login": "mrivnak",
"name": "Mike Rivnak",
"avatar_url": "https://avatars.githubusercontent.com/u/7389355?v=4",
"profile": "https://mrivnak.github.io",
"contributions": [
"doc"
]
},
{
"login": "lroobrou",
"name": "lroobrou",
"avatar_url": "https://avatars.githubusercontent.com/u/35152113?v=4",
"profile": "https://github.com/lroobrou",
"contributions": [
"code"
]
},
{
"login": "database64128",
"name": "database64128",
"avatar_url": "https://avatars.githubusercontent.com/u/18757988?v=4",
"profile": "https://cube64128.xyz/",
"contributions": [
"code"
]
},
{
"login": "sou-chon",
"name": "Chon Sou",
"avatar_url": "https://avatars.githubusercontent.com/u/35537528?v=4",
"profile": "https://github.com/sou-chon",
"contributions": [
"code"
]
},
{
"login": "Drsheppard01",
"name": "DrSheppard",
"avatar_url": "https://avatars.githubusercontent.com/u/60893791?v=4",
"profile": "https://github.com/Drsheppard01",
"contributions": [
"doc"
]
},
{
"login": "RaresCon",
"name": "Rareș Constantin",
"avatar_url": "https://avatars.githubusercontent.com/u/95525840?v=4",
"profile": "https://github.com/RaresCon",
"contributions": [
"code"
]
},
{
"login": "felipesuri",
"name": "felipesuri",
"avatar_url": "https://avatars.githubusercontent.com/u/50281523?v=4",
"profile": "http://felipesuri.com",
"contributions": [
"doc"
]
},
{
"login": "spital",
"name": "spital",
"avatar_url": "https://avatars.githubusercontent.com/u/11034264?v=4",
"profile": "https://github.com/spital",
"contributions": [
"code"
]
},
{
"login": "mbikovitsky",
"name": "Michael Bikovitsky",
"avatar_url": "https://avatars.githubusercontent.com/u/1389811?v=4",
"profile": "https://bikodbg.com/",
"contributions": [
"code"
]
},
{
"login": "dvalter",
"name": "Dmitry Valter",
"avatar_url": "https://avatars.githubusercontent.com/u/38795282?v=4",
"profile": "https://github.com/dvalter",
"contributions": [
"code"
]
},
{
"login": "aragonnetje6",
"name": "Grace Stok",
"avatar_url": "https://avatars.githubusercontent.com/u/69118097?v=4",
"profile": "https://github.com/aragonnetje6",
"contributions": [
"code"
]
},
{
"login": "yshui",
"name": "Yuxuan Shui",
"avatar_url": "https://avatars.githubusercontent.com/u/366851?v=4",
"profile": "https://github.com/yshui",
"contributions": [
"code"
]
},
{
"login": "WenqingZong",
"name": "Wenqing Zong",
"avatar_url": "https://avatars.githubusercontent.com/u/43934749?v=4",
"profile": "http://zongwenqing.com",
"contributions": [
"code"
]
},
{
"login": "gabelluardo",
"name": "Gabriele Belluardo",
"avatar_url": "https://avatars.githubusercontent.com/u/42920247?v=4",
"profile": "http://gabelluardo.github.io",
"contributions": [
"code"
]
},
{
"login": "zebp",
"name": "Zeb Piasecki",
"avatar_url": "https://avatars.githubusercontent.com/u/14242997?v=4",
"profile": "https://zebulon.dev/",
"contributions": [
"code"
]
},
{
"login": "Freed-Wu",
"name": "wzy",
"avatar_url": "https://avatars.githubusercontent.com/u/32936898?v=4",
"profile": "https://freed-wu.github.io/",
"contributions": [
"code",
"doc"
]
},
{
"login": "john-s-lin",
"name": "john-s-lin",
"avatar_url": "https://avatars.githubusercontent.com/u/66440371?v=4",
"profile": "https://johnlin.ca/",
"contributions": [
"doc"
]
},
{
"login": "lyuha",
"name": "Lee Wonjoon",
"avatar_url": "https://avatars.githubusercontent.com/u/4014016?v=4",
"profile": "https://github.com/lyuha",
"contributions": [
"code",
"doc"
]
},
{
"login": "davlgd",
"name": "David Legrand",
"avatar_url": "https://avatars.githubusercontent.com/u/1110600?v=4",
"profile": "https://www.davlgd.fr",
"contributions": [
"doc"
]
},
{
"login": "MichalBryxi",
"name": "Michal Bryxí",
"avatar_url": "https://avatars.githubusercontent.com/u/847473?v=4",
"profile": "https://github.com/MichalBryxi",
"contributions": [
"doc"
]
},
{
"login": "TheSkyentist",
"name": "Raphael Erik Hviding",
"avatar_url": "https://avatars.githubusercontent.com/u/17031860?v=4",
"profile": "http://mpia.de/~hviding/",
"contributions": [
"code"
]
},
{
"login": "CosmicHorrorDev",
"name": "CosmicHorror",
"avatar_url": "https://avatars.githubusercontent.com/u/30302768?v=4",
"profile": "http://cosmichorror.dev",
"contributions": [
"code"
]
},
{
"login": "woodsb02",
"name": "Ben Woods",
"avatar_url": "https://avatars.githubusercontent.com/u/7113557?v=4",
"profile": "https://www.woods.am/",
"contributions": [
"doc"
]
},
{
"login": "stephen-huan",
"name": "Stephen Huan",
"avatar_url": "https://avatars.githubusercontent.com/u/20411956?v=4",
"profile": "http://cgdct.moe",
"contributions": [
"code"
]
},
{
"login": "jasongwartz",
"name": "Jason Gwartz",
"avatar_url": "https://avatars.githubusercontent.com/u/10981911?v=4",
"profile": "https://github.com/jasongwartz",
"contributions": [
"doc"
]
},
{
"login": "llc0930",
"name": "llc0930",
"avatar_url": "https://avatars.githubusercontent.com/u/14966910?v=4",
"profile": "https://github.com/llc0930",
"contributions": [
"code"
]
},
{
"login": "yretenai",
"name": "Ada Ahmed",
"avatar_url": "https://avatars.githubusercontent.com/u/614231?v=4",
"profile": "https://chronovore.dev",
"contributions": [
"code"
]
},
{
"login": "Wateir",
"name": "Wateir",
"avatar_url": "https://avatars.githubusercontent.com/u/78731687?v=4",
"profile": "https://github.com/Wateir",
"contributions": [
"doc"
]
},
{
"login": "al42and",
"name": "Andrey Alekseenko",
"avatar_url": "https://avatars.githubusercontent.com/u/933873?v=4",
"profile": "https://github.com/al42and",
"contributions": [
"code"
]
},
{
"login": "fgimian",
"name": "Fotis Gimian",
"avatar_url": "https://avatars.githubusercontent.com/u/1811813?v=4",
"profile": "http://fgimian.github.io/",
"contributions": [
"code",
"doc"
]
},
{
"login": "SigmaSquadron",
"name": "Fernando Rodrigues",
"avatar_url": "https://avatars.githubusercontent.com/u/174749595?v=4",
"profile": "https://sigmasquadron.net",
"contributions": [
"doc"
]
},
{
"login": "mtoohey31",
"name": "Matthew Toohey",
"avatar_url": "https://avatars.githubusercontent.com/u/36740602?v=4",
"profile": "https://mtoohey.com",
"contributions": [
"code"
]
},
{
"login": "win8linux",
"name": "Julius Enriquez",
"avatar_url": "https://avatars.githubusercontent.com/u/11584387?v=4",
"profile": "https://meander.site",
"contributions": [
"doc"
]
},
{
"login": "benjamb",
"name": "Ben Brown",
"avatar_url": "https://avatars.githubusercontent.com/u/8291297?v=4",
"profile": "https://github.com/benjamb",
"contributions": [
"code"
]
},
{
"login": "nyurik",
"name": "Yuri Astrakhan",
"avatar_url": "https://avatars.githubusercontent.com/u/1641515?v=4",
"profile": "https://github.com/nyurik",
"contributions": [
"code",
"doc"
]
},
{
"login": "kachick",
"name": "Kenichi Kamiya",
"avatar_url": "https://avatars.githubusercontent.com/u/1180335?v=4",
"profile": "https://kachick.github.io/",
"contributions": [
"code"
]
},
{
"login": "yahlia",
"name": "yahlia",
"avatar_url": "https://avatars.githubusercontent.com/u/40295453?v=4",
"profile": "https://github.com/yahlia",
"contributions": [
"code"
]
},
{
"login": "Bucket-Bucket-Bucket",
"name": "Bucket-Bucket-Bucket",
"avatar_url": "https://avatars.githubusercontent.com/u/107044719?v=4",
"profile": "https://github.com/Bucket-Bucket-Bucket",
"contributions": [
"code"
]
},
{
"login": "marverix",
"name": "Marek Sierociński",
"avatar_url": "https://avatars.githubusercontent.com/u/2142811?v=4",
"profile": "http://marek.sierocinscy.pl",
"contributions": [
"doc"
]
}
],
"contributorsPerLine": 7,
"projectName": "bottom",
"projectOwner": "ClementTsang",
"repoType": "github",
"repoHost": "https://github.com",
"skipCi": true,
"commitConvention": "angular",
"commitType": "docs"
}

11
.cargo-husky/hooks/pre-push Executable file
View File

@ -0,0 +1,11 @@
#!/bin/sh
set -e
echo "Running pre-push hook:"
echo "Executing: cargo fmt --all -- --check"
cargo fmt --all -- --check
echo "Executing: cargo clippy --all-targets --workspace -- -D warnings"
cargo clippy --all-targets --workspace -- -D warnings

5
.cargo/config.toml Normal file
View File

@ -0,0 +1,5 @@
[target.x86_64-pc-windows-msvc]
rustflags = ["-C", "target-feature=+crt-static"]
[target.i686-pc-windows-msvc]
rustflags = ["-C", "target-feature=+crt-static"]

71
.cirrus.yml Normal file
View File

@ -0,0 +1,71 @@
%YAML 1.1
---
# Configuration for CirrusCI. This is primarily used for testing and building FreeBSD and old versions of Linux,
# since other CI platforms don't support build jobs for these configurations.
#
# Note that we set the YAML directive above to prevent some linting errors around the templates.
setup_template: &SETUP_TEMPLATE
setup_script:
- curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs --output rustup.sh
- sh rustup.sh --default-toolchain stable -y
cache_template: &CACHE_TEMPLATE
registry_cache:
folder: $HOME/.cargo/registry
reupload_on_changes: "true"
fingerprint_script:
- $HOME/.cargo/bin/rustc --version
- cat Cargo.lock
- echo $CIRRUS_OS
- echo $CIRRUS_TASK_NAME
target_cache:
folder: target
reupload_on_changes: "true"
fingerprint_script:
- $HOME/.cargo/bin/rustc --version
- cat Cargo.lock
- echo $CIRRUS_OS
- echo $CIRRUS_TASK_NAME
cleanup_template: &CLEANUP_TEMPLATE
before_cache_script:
- rm -rf $HOME/.cargo/registry/index
- rm -rf $HOME/.cargo/registry/src
- rm -f ./target/.rustc_info.json
env:
CARGO_INCREMENTAL: "0"
CARGO_PROFILE_DEV_DEBUG: "0"
CARGO_HUSKY_DONT_INSTALL_HOOKS: "true"
release_task:
auto_cancellation: "false"
only_if: $CIRRUS_BUILD_SOURCE == "api" && $BTM_BUILD_RELEASE_CALLER == "ci"
timeout_in: "30m"
env:
BTM_GENERATE: "true"
COMPLETION_DIR: "target/tmp/bottom/completion/"
MANPAGE_DIR: "target/tmp/bottom/manpage/"
# -PLACEHOLDER FOR CI-
matrix:
- name: "Legacy Linux (2.17)"
alias: "linux_2_17_build"
container:
image: quay.io/pypa/manylinux2014_x86_64
env:
TARGET: "x86_64-unknown-linux-gnu"
NAME: "x86_64-unknown-linux-gnu-2-17"
<<: *SETUP_TEMPLATE
<<: *CACHE_TEMPLATE
build_script:
- . $HOME/.cargo/env
- cargo build --release --verbose --locked --features deploy
- mv ./target/release/btm ./
- ./btm -V
- mv "$COMPLETION_DIR" completion
- mv "$MANPAGE_DIR" manpage
- tar -czvf bottom_$NAME.tar.gz btm completion
binaries_artifacts:
path: bottom_$NAME.tar.gz
<<: *CLEANUP_TEMPLATE

View File

@ -1,31 +0,0 @@
---
name: Bug report
about: Found a bug? Please report it if it hasn't already been filed...
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS
- Terminal that you're using
**Additional context**
If there's any additional information not fitting in the above fields relating to this problem, state it here.

158
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@ -0,0 +1,158 @@
name: Bug report
description: Found something wrong or broken? If it hasn't already been filed/solved, report it!
labels: ["bug"]
body:
- type: checkboxes
id: acknowledgements
attributes:
label: Checklist
options:
- label: >
I've looked through the [troubleshooting docs](https://clementtsang.github.io/bottom/nightly/troubleshooting),
[the known problems list](https://clementtsang.github.io/bottom/nightly/support/official/#known-problems), and
[existing open issues](https://github.com/ClementTsang/bottom/issues?q=is%3Aopen+is%3Aissue) for similar
issues.
required: true
- type: input
id: operating_system
attributes:
label: What operating system and version are you using?
description: >
Please provide the operating system(s) and version(s) that are experiencing the problem.
Note that issues on operating systems that [are not officially supported](https://github.com/ClementTsang/bottom#support)
may not be prioritized/resolved.
placeholder: Arch Linux 6.6.2
- type: dropdown
id: architecture
attributes:
label: What architecture are you using?
description: >
Please select the architecture(s) that are experiencing the problem.
Note that systems that [are not officially supported](https://github.com/ClementTsang/bottom#support)
may not be prioritized/resolved.
multiple: true
options:
- x86_64/AMD64
- arm64
- x86
- arm32
- Other (please specify in the Additional Information area at the end)
- type: textarea
id: terminal
attributes:
label: What terminal(s) are you running bottom on that are experiencing the problem?
description: >
Please provide what terminal(s) you are running `bottom` on (e.g. Konsole, kitty, urxvt)
that are experiencing the issue, as well as their version and any relevant settings (e.g. terminal theme).
placeholder: kitty 0.25.2
- type: dropdown
id: filesystem
validations:
required: false
attributes:
label: (Optional) What filesystem(s) are you using?
description: >
If you know, please select what filesystem(s) you are using on the system that is experiencing the problem. This
can be especially helpful if the issue is related to either the disk or memory widgets.
multiple: true
options:
- ext4
- NTFS
- exFAT
- FAT
- ZFS
- Btrfs
- APFS
- Other (please specify in the Additional Information area at the end)"
- type: input
id: version
validations:
required: true
attributes:
label: What version of bottom are you running?
description: >
Please specify which version of `bottom` you're running that is causing problems. You can find this with
`btm -V`. If you are using a nightly/non-release version, please also specify that.
It would also be helpful if you are not running [the latest version](https://github.com/ClementTsang/bottom/releases/latest)
to try that as well to see if the issue has already been resolved.
placeholder: 0.11.1
- type: textarea
id: install
validations:
required: true
attributes:
label: How did you install bottom?
description: >
Please describe how you installed `bottom`. If you manually compiled it, please also mention your _Rust version_.
**Note: if you installed `bottom` from cargo, please ensure that you installed the right crate (https://crates.io/crates/bottom).**
placeholder: Installed bottom through the Arch official repos.
# TODO: After some point also add in a `btm check` invocation
- type: textarea
id: description
validations:
required: true
attributes:
label: Describe the issue
description: >
Give a description of the issue. If possible, provide screenshots/videos.
placeholder: |
Example:
bottom is failing to output information for a mounted encrypted partition on basic mode. It should be able to report this information, but I'm not seeing the entry at all.
- type: textarea
id: expected
validations:
required: true
attributes:
label: What is the expected behaviour?
description: >
Describe the behaviour you expected.
placeholder: |
Example:
I expect to be able to see information about the encrypted partition on basic mode.
- type: textarea
id: actual
validations:
required: true
attributes:
label: What is the actual behaviour?
description: >
Describe the behaviour you actually see. If possible, provide screenshots/videos.
placeholder: |
Example:
I am unable to see information about my encrypted partition.
- type: textarea
id: reproduce
validations:
required: true
attributes:
label: How can we reproduce this?
description: >
Provide detailed steps on _how_ to reproduce your problem, to the best of your ability. Be as detailed as
possible. Include any config files or flags used. If possible, provide screenshots/videos of the issue.
Remember - if maintainers cannot reproduce the issue, it will be very hard to fix!
placeholder: |
Example:
1. Mount a LUKS encrypted partition.
2. Run `btm --basic`
3. Observe there is no partition shown.
- type: textarea
id: additional
attributes:
label: Additional information
description: Provide any additional information you think may be relevant or helpful.
placeholder: It works fine if I just run it normally without the `--basic` flag.

6
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1,6 @@
blank_issues_enabled: true
contact_links:
- name: Open a discussion
about: |
Got a question about using bottom? Need help troubleshooting something? Or maybe just talk about something related to bottom? Feel free to open a discussion!
url: https://github.com/ClementTsang/bottom/discussions/new

View File

@ -1,20 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@ -0,0 +1,30 @@
name: Feature request
description: Got a good idea that hasn't already been suggested? Mention it here!
labels: ["feature"]
body:
- type: checkboxes
id: acknowledgements
attributes:
label: Checklist
options:
- label: >
I've looked through [the documentation](https://clementtsang.github.io/bottom/nightly/) and
[existing open issues](https://github.com/ClementTsang/bottom/issues?q=is%3Aopen+is%3Aissue+label%3Afeature)
for similar feature requests.
required: true
- type: textarea
id: description
validations:
required: true
attributes:
label: Describe the feature request
description: >
Please describe what behaviour you are looking for, the motivation for it, and use cases where this feature
would be helpful to both you and others. Try to be clear and concise.
If you have any ideas to implement this feature as well, feel free to write them down here too.
placeholder: |
Example:
It would be nice to support FreeBSD, as I and others often use similar tools on my FreeBSD-based system.
I also noticed that sysinfo has FreeBSD support as a data source.

47
.github/ISSUE_TEMPLATE/packaging.yml vendored Normal file
View File

@ -0,0 +1,47 @@
name: Packaging
description: For issues, questions, or requests regarding packaging or distribution.
labels: ["packaging"]
body:
- type: markdown
attributes:
value: >
If this is an issue about supporting a new package/installation method for a platform you use, please
consider maintaining it yourself/with others and submitting a PR or issue with a link to it - they'll be
very much appreciated and likely added to the README quickly. [The documentation on packaging/distribution](https://clementtsang.github.io/bottom/nightly/contribution/packaging-and-distribution/)
may be helpful in setting things up. If there are some issues with bottom itself causing problems with
packaging, feel free to open an appropriate issue.
If this is an issue regarding a specific existing distribution channel, feel free to report issues here if they
are related to the following sources:
* [crates.io](https://crates.io/crates/bottom)
* [Binary releases/packages released on GitHub](https://github.com/ClementTsang/bottom/releases)
For any other distribution channel, please first try to contact the package maintainers where appropriate
to get help regarding distribution-specific issues (e.g. the package has issues installing, the package
is outdated, etc.) before reaching out here. While I am happy to help where possible, I do not
personally use many of the various ways people distribute bottom. As such, I might lack the
platform-specific context, knowledge, or tools to be able to help you at all regarding the
distribution method, and the best I can do is just point you to the package maintainer.
- type: checkboxes
id: acknowledgements
attributes:
label: Checklist
options:
- label: >
I have read and understood the above text.
required: true
- type: textarea
id: description
validations:
required: true
attributes:
label: Describe the issue
description: >
What is the packaging-related issue? Please be clear and concise.
placeholder: |
Example: Would it be possible to add shell completion generation as a separate build artifact?

30
.github/pull_request_template.md vendored Normal file
View File

@ -0,0 +1,30 @@
## Description
_A description of the change, what it does, and why it was made. If relevant (such as any change that modifies the UI), **please provide screenshots** of the changes:_
## Issue
_If applicable, what issue does this address?_
Closes: #
## Testing
_If relevant, please state how this was tested. All changes **must** be tested to work:_
_If this is a code change, please also indicate which platforms were tested:_
- [ ] _Windows_
- [ ] _macOS_
- [ ] _Linux_
## Checklist
_If relevant, ensure the following have been met:_
- [ ] _Areas your change affects have been linted using rustfmt (`cargo fmt`)_
- [ ] _The change has been tested and doesn't appear to cause any unintended breakage_
- [ ] _Documentation has been added/updated if needed (`README.md`, help menu, doc pages, etc.)_
- [ ] _The pull request passes the provided CI pipeline_
- [ ] _There are no merge conflicts_
- [ ] _If relevant, new tests were added (don't worry too much about coverage)_

635
.github/workflows/build_releases.yml vendored Normal file
View File

@ -0,0 +1,635 @@
# Builds the following releases:
# - Binaries
# - Binaries via VMs
# - Cirrus binaries (currently just Linux 2.17)
# - MSI installer for Windows (.msi)
# - .deb releases
# - .rpm releases
name: "build releases"
on:
workflow_dispatch:
workflow_call:
inputs:
caller:
description: "The calling workflow."
default: ""
required: false
type: string
env:
RUST_BACKTRACE: 1
CARGO_INCREMENTAL: 0
CARGO_PROFILE_DEV_DEBUG: 0
CARGO_HUSKY_DONT_INSTALL_HOOKS: true
COMPLETION_DIR: "target/tmp/bottom/completion/"
MANPAGE_DIR: "target/tmp/bottom/manpage/"
permissions:
id-token: write
contents: read
attestations: write
# TODO: Maybe add retry job in case of timeouts?
jobs:
build-binaries:
name: "Build binaries"
runs-on: ${{ matrix.info.os }}
container: ${{ matrix.info.container }}
timeout-minutes: 12
strategy:
fail-fast: false
matrix:
info:
# ======= Supported targets =======
# Linux (x86-64, x86, aarch64)
#
# TODO: In the future, when ARM runners are available on github, switch ARM targets off of cross.
- {
os: "ubuntu-22.04",
target: "x86_64-unknown-linux-gnu",
cross: false,
generate-other-artifacts: true,
}
- {
os: "ubuntu-22.04",
target: "i686-unknown-linux-gnu",
cross: true,
}
- {
os: "ubuntu-22.04",
target: "x86_64-unknown-linux-musl",
cross: true,
}
- {
os: "ubuntu-22.04",
target: "i686-unknown-linux-musl",
cross: true,
}
- {
os: "ubuntu-22.04",
target: "aarch64-unknown-linux-gnu",
cross: true,
}
- {
os: "ubuntu-22.04",
target: "aarch64-unknown-linux-musl",
cross: true,
}
# macOS (x86-64 and aarch64)
- { os: "macos-13", target: "x86_64-apple-darwin", cross: false }
- { os: "macos-14", target: "aarch64-apple-darwin", cross: false }
# Windows (x86-64, x86)
- {
os: "windows-2022",
target: "x86_64-pc-windows-msvc",
cross: false,
}
- { os: "windows-2022", target: "i686-pc-windows-msvc", cross: false }
- {
os: "windows-2022",
target: "x86_64-pc-windows-gnu",
cross: false,
}
# ======= Unsupported targets =======
# armv7
- {
os: "ubuntu-22.04",
target: "armv7-unknown-linux-gnueabihf",
cross: true,
}
- {
os: "ubuntu-22.04",
target: "armv7-unknown-linux-musleabihf",
cross: true,
}
# PowerPC 64 LE
- {
os: "ubuntu-22.04",
target: "powerpc64le-unknown-linux-gnu",
cross: true,
}
# Risc-V 64gc
- {
os: "ubuntu-22.04",
target: "riscv64gc-unknown-linux-gnu",
cross: true,
}
# Windows ARM
- {
os: "windows-11-arm",
target: "aarch64-pc-windows-msvc",
cross: false,
}
steps:
- name: Checkout repository
if: matrix.info.container == ''
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
fetch-depth: 1
- name: Set up Rust toolchain
if: matrix.info.container == ''
uses: dtolnay/rust-toolchain@21dc36fb71dd22e3317045c0c31a3f4249868b17
with:
toolchain: ${{ matrix.info.rust || 'stable' }}
target: ${{ matrix.info.target }}
- name: Set up Rust toolchain (non-GitHub container)
if: matrix.info.container != ''
shell: bash
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs --output rustup.sh
sh rustup.sh --default-toolchain stable -y
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
- name: Build
uses: ClementTsang/cargo-action@v0.0.5
env:
BTM_GENERATE: true
BTM_BUILD_RELEASE_CALLER: ${{ inputs.caller }}
with:
command: build
args: --release --verbose --locked --target=${{ matrix.info.target }} --features deploy
use-cross: ${{ matrix.info.cross }}
cross-version: 0.2.5
- name: Move automatically generated completion/manpage
shell: bash
run: |
mv "$COMPLETION_DIR" completion
mv "$MANPAGE_DIR" manpage
- name: Bundle release and completion (Windows)
if: matrix.info.os == 'windows-2022'
shell: bash
run: |
cp target/${{ matrix.info.target }}/release/btm.exe btm.exe
7z a bottom_${{ matrix.info.target }}.zip "btm.exe"
7z a bottom_${{ matrix.info.target }}.zip "completion"
echo "ASSET=bottom_${{ matrix.info.target }}.zip" >> $GITHUB_ENV
- name: Bundle release and completion (Linux and macOS)
if: matrix.info.os != 'windows-2022'
shell: bash
run: |
cp target/${{ matrix.info.target }}/release/btm ./btm
tar -czvf bottom_${{ matrix.info.target }}.tar.gz btm completion
echo "ASSET=bottom_${{ matrix.info.target }}.tar.gz" >> $GITHUB_ENV
- name: Generate artifact attestation for file
uses: actions/attest-build-provenance@6149ea5740be74af77f260b9db67e633f6b0a9a1 # v1.4.2
with:
subject-path: ${{ env.ASSET }}
- name: Create release directory for artifact, move file
shell: bash
run: |
mkdir release
mv ${{ env.ASSET }} release/
- name: Compress completion files
if: matrix.info.generate-other-artifacts == true
shell: bash
run: |
tar -C ./completion -czvf completion.tar.gz .
mv completion.tar.gz release/
- name: Compress manpage files
if: matrix.info.generate-other-artifacts == true
shell: bash
run: |
gzip ./manpage/btm.1
tar -C ./manpage -czvf manpage.tar.gz .
mv manpage.tar.gz release/
- name: Copy over .desktop file
if: matrix.info.generate-other-artifacts == true
shell: bash
run: |
cp ./desktop/bottom.desktop release/
- name: Save release as artifact
uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
with:
retention-days: 3
name: "release-${{ matrix.info.target }}"
path: release
build-with-vm:
name: "Build binaries via VMs"
runs-on: "ubuntu-latest"
timeout-minutes: 12
strategy:
fail-fast: false
matrix:
info:
# Seems like cross's FreeBSD image is a bit broken? I get build errors,
# may be related to this issue: https://github.com/cross-rs/cross/issues/1291
# Alas, that's why we do it with VMs.
# Disabled as there's a weird issue with installing curl on FreeBSD 15 at the moment.
# - {
# type: "freebsd",
# os_release: "15.0",
# target: "x86_64-unknown-freebsd",
# }
- {
type: "freebsd",
os_release: "14.3",
target: "x86_64-unknown-freebsd",
}
- {
type: "freebsd",
os_release: "13.5",
target: "x86_64-unknown-freebsd",
}
steps:
- name: Checkout repository
if: matrix.info.container == ''
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
fetch-depth: 1
- name: Build (FreeBSD)
if: ${{ matrix.info.type == 'freebsd' }}
uses: vmactions/freebsd-vm@966989c456d41351f095a421f60e71342d3bce41 # v1.2.1
with:
release: "${{ matrix.info.os_release }}"
envs: "RUST_BACKTRACE CARGO_INCREMENTAL CARGO_PROFILE_DEV_DEBUG CARGO_HUSKY_DONT_INSTALL_HOOKS COMPLETION_DIR MANPAGE_DIR"
usesh: true
prepare: |
pkg install -y curl bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs --output rustup.sh
sh rustup.sh --default-toolchain stable -y
run: |
. "$HOME/.cargo/env"
BTM_GENERATE=true BTM_BUILD_RELEASE_CALLER=${{ inputs.caller }} cargo build --release --verbose --locked --target=${{ matrix.info.target }} --features deploy
- name: Move automatically generated completion/manpage
shell: bash
run: |
mv "$COMPLETION_DIR" completion
mv "$MANPAGE_DIR" manpage
- name: Bundle release and completion
shell: bash
run: |
cp target/${{ matrix.info.target }}/release/btm ./btm
tar -czvf bottom_${{ matrix.info.target }}-${{ matrix.info.os_release }}.tar.gz btm completion
echo "ASSET=bottom_${{ matrix.info.target }}-${{ matrix.info.os_release }}.tar.gz" >> $GITHUB_ENV
- name: Generate artifact attestation for file
uses: actions/attest-build-provenance@6149ea5740be74af77f260b9db67e633f6b0a9a1 # v1.4.2
with:
subject-path: ${{ env.ASSET }}
- name: Create release directory for artifact, move file
shell: bash
run: |
mkdir release
mv ${{ env.ASSET }} release/
- name: Save release as artifact
uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
with:
retention-days: 3
name: "release-${{ matrix.info.target }}-${{ matrix.info.os_release }}"
path: release
build-msi:
name: "Build MSI (WiX) installer"
timeout-minutes: 12
strategy:
fail-fast: false
matrix:
info:
- {
os: "windows-2022",
target: "x86_64-pc-windows-msvc",
output: "bottom_x86_64_installer.msi"
}
- {
os: "windows-11-arm",
target: "aarch64-pc-windows-msvc",
output: "bottom_aarch64_installer.msi"
}
runs-on: ${{ matrix.info.os }}
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
fetch-depth: 1
- name: Install Net-Framework-Core
shell: powershell
run: |
choco install dotnet-sdk --pre -y --no-progress;
- name: Install wixtoolset
shell: powershell
run: |
choco install -y wixtoolset --no-progress;
- name: Set up Rust toolchain
uses: dtolnay/rust-toolchain@21dc36fb71dd22e3317045c0c31a3f4249868b17
with:
toolchain: stable
target: ${{ matrix.info.target }}
- name: Install cargo-wix
shell: powershell
run: |
cargo install cargo-wix --version 0.3.8 --locked
- name: Build MSI file
shell: powershell
env:
BTM_GENERATE: true
run: |
Import-Module "$env:ChocolateyInstall/helpers/chocolateyInstaller.psm1"
refreshenv
cargo wix --nocapture
mv bottom_installer.msi ${{ matrix.info.output }}
- name: Generate artifact attestation for file
uses: actions/attest-build-provenance@6149ea5740be74af77f260b9db67e633f6b0a9a1 # v1.4.2
with:
subject-path: ${{ matrix.info.output }}
- name: Create release directory for artifact, move files
shell: bash
run: |
mkdir release
mv ${{ matrix.info.output }} release/
- name: Save release as artifact
uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
with:
retention-days: 3
name: "release-${{ matrix.info.target }}-msi"
path: release
build-cirrus:
name: "Build using Cirrus CI"
runs-on: "ubuntu-latest"
timeout-minutes: 12
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
fetch-depth: 0
- name: Create release directory
run: |
mkdir -p release
- name: Execute Cirrus CI build script
env:
CIRRUS_KEY: ${{ secrets.CIRRUS_TOKEN }}
run: |
if [[ "${{ github.ref_type }}" == "branch" ]]; then
BRANCH="${{ github.ref_name }}";
else
raw=$(git branch -r --contains '${{ github.ref_name }}');
BRANCH=${raw##*/};
fi
python ./scripts/cirrus/release.py "$BRANCH" "release/" "${{ inputs.caller }}"
- name: Generate artifact attestation for file
uses: actions/attest-build-provenance@6149ea5740be74af77f260b9db67e633f6b0a9a1 # v1.4.2
with:
subject-path: "release/**/*.tar.gz"
- name: Save release as artifact
uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
with:
retention-days: 3
name: release-build-cirrus
path: release
build-deb:
name: "Build .deb software packages"
runs-on: "ubuntu-22.04"
timeout-minutes: 12
strategy:
fail-fast: false
matrix:
# TODO: In the future, when ARM runners are available on github, switch ARM targets off of cross.
info:
- { target: "x86_64-unknown-linux-gnu", dpkg: amd64 }
- { target: "x86_64-unknown-linux-musl", cross: true, dpkg: amd64 }
- {
target: "aarch64-unknown-linux-gnu",
cross: true,
dpkg: arm64,
container: "ghcr.io/clementtsang/cargo-deb-aarch64-unknown-linux-gnu",
}
- {
target: "armv7-unknown-linux-gnueabihf",
cross: true,
dpkg: armhf,
container: "ghcr.io/clementtsang/cargo-deb-armv7-unknown-linux-gnueabihf",
}
- {
target: "aarch64-unknown-linux-musl",
cross: true,
dpkg: arm64,
container: "ghcr.io/clementtsang/cargo-deb-aarch64-unknown-linux-gnu",
}
- {
target: "armv7-unknown-linux-musleabihf",
cross: true,
dpkg: armhf,
container: "ghcr.io/clementtsang/cargo-deb-armv7-unknown-linux-gnueabihf",
}
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
fetch-depth: 1
- name: Set up Rust toolchain
uses: dtolnay/rust-toolchain@21dc36fb71dd22e3317045c0c31a3f4249868b17
with:
toolchain: ${{ matrix.info.rust || 'stable' }}
target: ${{ matrix.info.target }}
# TODO: Could I use the previous jobs to skip this call?
- name: Build
uses: ClementTsang/cargo-action@v0.0.5
env:
BTM_GENERATE: true
BTM_BUILD_RELEASE_CALLER: ${{ inputs.caller }}
with:
command: build
args: --release --locked --verbose --features deploy --target ${{ matrix.info.target }}
use-cross: ${{ matrix.info.cross || false }}
cross-version: 0.2.5
- name: Move automatically generated completion/manpage
shell: bash
run: |
mv "$COMPLETION_DIR" completion
mv "$MANPAGE_DIR" manpage
- name: Zip manpage
run: |
gzip ./manpage/btm.1
- name: Build Debian release (x86-64)
if: startsWith(matrix.info.target, 'x86_64')
env:
BTM_GENERATE: true
run: |
cargo install cargo-deb --version 3.5.0 --locked
cargo deb --no-build --target ${{ matrix.info.target }}
cp ./target/debian/bottom_*.deb .
- name: Build Debian release (ARM)
if: startsWith(matrix.info.target, 'x86_64') != true
env:
BTM_GENERATE: true
run: |
docker pull ${{ matrix.info.container }}
docker run -t --rm --mount type=bind,source="$(pwd)",target=/volume ${{ matrix.info.container }} "--no-build --variant ${{ matrix.info.dpkg }} --target ${{ matrix.info.target }}" "/volume"
cp ./target/debian/bottom-*.deb .
TMP_NAME=$(find bottom-*.deb)
VERSION=${{ matrix.info.dpkg }}
mv $TMP_NAME $(echo $TMP_NAME | sed "s/-$VERSION//")
- name: Rename if it is a musl target
if: contains(matrix.info.target, 'musl')
run: |
TMP_NAME=$(find bottom_*.deb)
mv $TMP_NAME $(echo $TMP_NAME | sed "s/bottom/bottom-musl/")
# TODO: Maybe rename version if nightly?
- name: Verify Debian release
id: verify
run: |
DEB_FILE=$(find bottom*_*.deb)
dpkg -I $DEB_FILE
dpkg -I $DEB_FILE | grep ${{ matrix.info.dpkg }} && echo "Found correct architecture"
echo "DEB_FILE=$DEB_FILE" >> $GITHUB_OUTPUT
- name: Delete generated Debian folder
run: |
sudo chown $USER ./target/debian/ 2>/dev/null || true
rm -r ./target/debian/
- name: Generate artifact attestation for file
uses: actions/attest-build-provenance@6149ea5740be74af77f260b9db67e633f6b0a9a1 # v1.4.2
with:
subject-path: ${{ steps.verify.outputs.DEB_FILE }}
- name: Create release directory for artifact, move file
shell: bash
run: |
mkdir release
mv ${{ steps.verify.outputs.DEB_FILE }} release/
- name: Save release as artifact
uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
with:
retention-days: 3
name: release-build-deb-${{ matrix.info.target }}
path: release
build-rpm:
name: "Build .rpm software packages"
runs-on: ubuntu-latest
container: ghcr.io/clementtsang/almalinux-8
timeout-minutes: 12
strategy:
fail-fast: false
matrix:
info:
- { target: "x86_64-unknown-linux-gnu" }
- { target: "x86_64-unknown-linux-musl", cross: true }
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
fetch-depth: 1
- name: Set up Rust toolchain
uses: dtolnay/rust-toolchain@21dc36fb71dd22e3317045c0c31a3f4249868b17
with:
toolchain: ${{ matrix.info.rust || 'stable' }}
target: ${{ matrix.info.target }}
# TODO: Could I use the previous jobs to skip this call?
- name: Build
uses: ClementTsang/cargo-action@v0.0.5
env:
BTM_GENERATE: true
BTM_BUILD_RELEASE_CALLER: ${{ inputs.caller }}
CROSS_CONTAINER_IN_CONTAINER: true
with:
command: build
use-cross: ${{ matrix.info.cross || false }}
args: --release --locked --verbose --features deploy --target ${{ matrix.info.target }}
cross-version: 0.2.5
- name: Move automatically generated completion/manpage
shell: bash
run: |
mv "$COMPLETION_DIR" completion
mv "$MANPAGE_DIR" manpage
- name: Zip manpage
run: |
gzip ./manpage/btm.1
- name: Build rpm release
env:
BTM_GENERATE: true
run: |
cargo install cargo-generate-rpm --version 0.11.0 --locked
cargo generate-rpm --target ${{ matrix.info.target }}
cp ./target/${{ matrix.info.target }}/generate-rpm/bottom-*.rpm .
- name: Rename if it is a musl target
if: contains(matrix.info.target, 'musl')
run: |
TMP_NAME=$(find bottom-*.rpm)
mv $TMP_NAME $(echo $TMP_NAME | sed "s/bottom/bottom-musl/")
- name: Verify rpm release
id: verify
run: |
RPM_FILE=$(find bottom-*.rpm)
rpm -qip $RPM_FILE
echo "RPM_FILE=$RPM_FILE" >> $GITHUB_OUTPUT
- name: Delete generated rpm folder
run: |
sudo chown $USER ./target/${{ matrix.info.target }}/generate-rpm/ 2>/dev/null || true
rm -r ./target/${{ matrix.info.target }}/generate-rpm/
- name: Generate artifact attestation for file
uses: actions/attest-build-provenance@6149ea5740be74af77f260b9db67e633f6b0a9a1 # v1.4.2
with:
subject-path: ${{ steps.verify.outputs.RPM_FILE }}
- name: Create release directory for artifact, move file
shell: bash
run: |
mkdir release
mv ${{ steps.verify.outputs.RPM_FILE }} release/
- name: Save release as artifact
uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
with:
retention-days: 3
name: release-build-rpm-${{ matrix.info.target }}
path: release

353
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,353 @@
# Main CI workflow to validate that files are formatted correctly, pass tests,
# and pass lints.
#
# CI workflow was based on a lot of work from other people:
# - https://github.com/heim-rs/heim/blob/master/.github/workflows/ci.yml
# - https://github.com/BurntSushi/ripgrep/blob/master/.github/workflows/ci.yml
# - https://www.reillywood.com/blog/rust-faster-ci/
# - https://matklad.github.io/2021/09/04/fast-rust-builds.html
#
# Supported platforms run the following tasks:
# - Format
# - Test (built/test in separate steps)
# - Clippy (apparently faster to do it after the build/test)
#
# Unsupported platforms run the following tasks:
# - Clippy
name: ci
on:
workflow_dispatch:
pull_request:
push:
branches:
- main
env:
RUST_BACKTRACE: 1
CARGO_INCREMENTAL: 0
CARGO_PROFILE_DEV_DEBUG: 0
CARGO_HUSKY_DONT_INSTALL_HOOKS: true
COMPLETION_DIR: "target/tmp/bottom/completion/"
MANPAGE_DIR: "target/tmp/bottom/manpage/"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' || github.repository != 'ClementTsang/bottom' }}
jobs:
# Check if things should be skipped.
pre-job:
runs-on: ubuntu-latest
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
steps:
- name: Check if this action should be skipped
id: skip_check
uses: fkirc/skip-duplicate-actions@f75f66ce1886f00957d99748a42c724f4330bdcf # v5.3.1
with:
skip_after_successful_duplicate: "true"
paths: '[".cargo/**", ".github/workflows/ci.yml", "sample_configs/**", "src/**", "tests/**", "build.rs", "Cargo.lock", "Cargo.toml", "clippy.toml", "rustfmt.toml", "Cross.toml"]'
do_not_skip: '["workflow_dispatch", "push"]'
# Runs rustfmt + tests + clippy on the main supported platforms.
#
# TODO: In the future, when ARM runners are available on github, switch ARM targets off of cross.
supported:
needs: pre-job
if: ${{ needs.pre-job.outputs.should_skip != 'true' }}
runs-on: ${{ matrix.info.os }}
timeout-minutes: 12
strategy:
fail-fast: false
matrix:
info:
- {
os: "ubuntu-latest",
target: "x86_64-unknown-linux-gnu",
cross: false,
}
- {
os: "ubuntu-latest",
target: "aarch64-unknown-linux-gnu",
cross: true,
}
- { os: "macos-13", target: "x86_64-apple-darwin", cross: false }
- { os: "macos-14", target: "aarch64-apple-darwin", cross: false }
- {
os: "windows-2022",
target: "x86_64-pc-windows-msvc",
cross: false,
}
features: ["--all-features", "--no-default-features"]
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Set up Rust toolchain
uses: dtolnay/rust-toolchain@21dc36fb71dd22e3317045c0c31a3f4249868b17
with:
toolchain: stable
components: rustfmt, clippy
target: ${{ matrix.info.target }}
- name: Enable Rust cache
uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # 2.7.8
if: ${{ github.event_name != 'pull_request' || ! github.event.pull_request.head.repo.fork }} # If it is a PR, only if not a fork
with:
key: ${{ matrix.info.target }}
cache-all-crates: true
- name: Check cargo fmt
run: cargo fmt --all -- --check
# TODO: add junit output using nextest for codecov (https://docs.codecov.com/docs/test-analytics)
- name: Build tests
uses: ClementTsang/cargo-action@v0.0.5
with:
command: test
args: --no-run --locked ${{ matrix.features }} --target=${{ matrix.info.target }}
use-cross: ${{ matrix.info.cross }}
cross-version: 0.2.5
env:
RUST_BACKTRACE: full
- name: Run tests
uses: ClementTsang/cargo-action@v0.0.5
with:
command: test
args: --no-fail-fast ${{ matrix.features }} --target=${{ matrix.info.target }} -- --nocapture --quiet
use-cross: ${{ matrix.info.cross }}
cross-version: 0.2.5
env:
RUST_BACKTRACE: full
- name: Run clippy
uses: ClementTsang/cargo-action@v0.0.5
with:
command: clippy
args: ${{ matrix.features }} --all-targets --workspace --target=${{ matrix.info.target }} -- -D warnings
use-cross: ${{ matrix.info.cross }}
cross-version: 0.2.5
env:
RUST_BACKTRACE: full
# Try running cargo build on all other platforms.
#
# TODO: Maybe some of these should be allowed to fail? If so, I guess we can add back the "unofficial" MSRV,
# I would also put android there.
unsupported-check:
needs: pre-job
strategy:
fail-fast: false
matrix:
info:
# x86 or x86-64
- {
os: "ubuntu-latest",
target: "i686-unknown-linux-gnu",
cross: true,
}
- {
os: "ubuntu-latest",
target: "x86_64-unknown-linux-musl",
cross: false,
}
- {
os: "ubuntu-latest",
target: "i686-unknown-linux-musl",
cross: true,
}
- { os: "windows-2022", target: "i686-pc-windows-msvc", cross: false }
- {
os: "windows-2022",
target: "x86_64-pc-windows-gnu",
cross: false,
}
# Beta
- {
os: "ubuntu-latest",
target: "x86_64-unknown-linux-gnu",
cross: false,
rust: "beta",
}
- {
os: "macos-14",
target: "aarch64-apple-darwin",
cross: false,
rust: "beta",
}
- {
os: "windows-2022",
target: "x86_64-pc-windows-msvc",
cross: false,
rust: "beta",
}
# armv7
- {
os: "ubuntu-latest",
target: "armv7-unknown-linux-gnueabihf",
cross: true,
}
# armv6
- {
os: "ubuntu-latest",
target: "arm-unknown-linux-gnueabihf",
cross: true,
}
# PowerPC 64 LE
- {
os: "ubuntu-latest",
target: "powerpc64le-unknown-linux-gnu",
cross: true,
}
# Risc-V 64gc
# Note: seems like this breaks with tests?
- {
os: "ubuntu-latest",
target: "riscv64gc-unknown-linux-gnu",
cross: true,
}
# Android ARM64
- {
os: "ubuntu-latest",
target: "aarch64-linux-android",
cross: true,
cross-version: "git:df3309709a4a26b3dc3b1567239c3f38b9da0425", # latest version that I've found works so far
no-default-features: true,
no-clippy: true,
}
# Windows ARM
- {
os: "windows-11-arm",
target: "aarch64-pc-windows-msvc",
cross: false,
}
runs-on: ${{ matrix.info.os }}
if: ${{ needs.pre-job.outputs.should_skip != 'true' }}
timeout-minutes: 12
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Set up Rust toolchain
uses: dtolnay/rust-toolchain@21dc36fb71dd22e3317045c0c31a3f4249868b17
with:
toolchain: ${{ matrix.info.rust || 'stable' }}
target: ${{ matrix.info.target }}
components: "clippy"
- name: Enable Rust cache
uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # 2.7.8
if: ${{ github.event_name != 'pull_request' || ! github.event.pull_request.head.repo.fork }} # If it is a PR, only if not a fork
with:
key: ${{ matrix.info.target }}
cache-all-crates: true
- name: Clippy (default features)
uses: ClementTsang/cargo-action@v0.0.5
if: ${{ matrix.info.no-default-features != true }}
with:
command: clippy
args: --all-targets --workspace --target=${{ matrix.info.target }} --locked
use-cross: ${{ matrix.info.cross }}
cross-version: ${{ matrix.info.cross-version || '0.2.5' }}
- name: Clippy (no features enabled)
uses: ClementTsang/cargo-action@v0.0.5
if: ${{ matrix.info.no-default-features == true }}
with:
command: clippy
args: --all-targets --workspace --target=${{ matrix.info.target }} --locked --no-default-features
use-cross: ${{ matrix.info.cross }}
cross-version: ${{ matrix.info.cross-version || '0.2.5' }}
unsupported-check-freebsd:
needs: pre-job
if: ${{ needs.pre-job.outputs.should_skip != 'true' }}
runs-on: "ubuntu-latest"
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
info:
# Seems like cross's FreeBSD image is a bit broken? I get build errors,
# may be related to this issue: https://github.com/cross-rs/cross/issues/1291
#
# Alas, that's why we do it with VMs.
# Disabled as there's a weird issue with installing curl on FreeBSD 15 at the moment.
# - {
# type: "freebsd",
# os_release: "15.0",
# target: "x86_64-unknown-freebsd",
# }
- {
type: "freebsd",
os_release: "14.3",
target: "x86_64-unknown-freebsd",
}
- {
type: "freebsd",
os_release: "13.5",
target: "x86_64-unknown-freebsd",
}
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
fetch-depth: 1
- name: Enable Rust cache
uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # 2.7.8
if: ${{ github.event_name != 'pull_request' || ! github.event.pull_request.head.repo.fork }} # If it is a PR, only if not a fork
with:
key: ${{ matrix.info.target }}-${{ matrix.info.os_release }}
cache-all-crates: true
- name: Clippy (FreeBSD)
if: ${{ matrix.info.type == 'freebsd' }}
uses: vmactions/freebsd-vm@966989c456d41351f095a421f60e71342d3bce41 # v1.2.1
with:
release: "${{ matrix.info.os_release }}"
envs: "RUST_BACKTRACE CARGO_INCREMENTAL CARGO_PROFILE_DEV_DEBUG CARGO_HUSKY_DONT_INSTALL_HOOKS"
usesh: true
prepare: |
pkg install -y curl bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs --output rustup.sh
sh rustup.sh --default-toolchain stable -y
run: |
. "$HOME/.cargo/env"
cargo clippy --all-targets --workspace -- -D warnings
completion:
name: "CI Pass Check"
needs: [supported, unsupported-check, unsupported-check-freebsd]
if: ${{ needs.supported.result != 'skipped' || needs.unsupported-check.result != 'skipped' || needs.unsupported-check-freebsd.result != 'skipped' }}
runs-on: "ubuntu-latest"
steps:
- name: CI Passed
if: ${{ (needs.supported.result == 'success' || needs.supported.result == 'skipped') && (needs.unsupported-check.result == 'success' || needs.unsupported-check.result == 'skipped') && (needs.unsupported-check-freebsd.result == 'success' || needs.unsupported-check-freebsd.result == 'skipped') }}
run: |
echo "CI workflow completed successfully.";
- name: CI Failed
if: ${{ needs.supported.result == 'failure' || needs.unsupported-check.result == 'failure' || needs.unsupported-check-freebsd.result == 'failure' }}
run: |
echo "CI workflow failed.";
exit 1;
- name: CI Cancelled
if: ${{ needs.supported.result == 'cancelled' || needs.unsupported-check.result == 'cancelled' || needs.unsupported-check-freebsd.result == 'cancelled' }}
run: |
echo "CI workflow was cancelled.";
exit 1;

View File

@ -0,0 +1,44 @@
# Simple job to clear the cache used by a workflow. This automatically runs when a PR is closed/merged
# to clean up the corresponding PR's cache.
name: "clear workflow cache"
on:
workflow_dispatch:
inputs:
id:
description: "Which id to clear. Type main/master/all to clean all, and keep-main/keep-master to clean all but the main branch."
required: false
pull_request:
types:
- closed
schedule:
- cron: "0 11 * * 0"
jobs:
clear-cache:
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
fetch-depth: 1
# We run each script twice with a small delay in between to try and catch everything.
- name: Clear cache
run: |
if [[ -n "${{ github.event.schedule }}" ]]; then
python ./scripts/clear_cache.py keep-main
sleep 5
python ./scripts/clear_cache.py keep-main
elif [[ -z "${{ github.event.inputs.id }}" ]]; then
python ./scripts/clear_cache.py ${{ github.event.pull_request.number }}
sleep 5
python ./scripts/clear_cache.py ${{ github.event.pull_request.number }}
else
python ./scripts/clear_cache.py ${{ github.event.inputs.id }}
sleep 5
python ./scripts/clear_cache.py ${{ github.event.inputs.id }}
fi

106
.github/workflows/coverage.yml vendored Normal file
View File

@ -0,0 +1,106 @@
# Code coverage generation via cargo-llvm-cov, which is then uploaded to Codecov.
# Codecov will report back via a comment if run on a PR.
#
# Note that Codecov will report back the average all uploaded coverage files.
name: codecov
on:
workflow_dispatch:
pull_request:
push:
branches:
- main
env:
CARGO_INCREMENTAL: 0
CARGO_HUSKY_DONT_INSTALL_HOOKS: true
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' || github.repository != 'ClementTsang/bottom' }}
jobs:
pre-job:
runs-on: ubuntu-latest
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@f75f66ce1886f00957d99748a42c724f4330bdcf # v5.3.1
with:
skip_after_successful_duplicate: "false"
paths: '["tests/**", "src/**", ".github/workflows/coverage.yml", ".cargo/**", "Cargo.toml", "Cargo.lock", "build.rs"]'
do_not_skip: '["workflow_dispatch", "push"]'
coverage:
needs: pre-job
if: ${{ needs.pre-job.outputs.should_skip != 'true' }}
runs-on: ${{ matrix.info.os }}
timeout-minutes: 12
strategy:
fail-fast: false
matrix:
info:
- { os: "ubuntu-latest", target: "x86_64-unknown-linux-gnu" }
- { os: "macos-14", target: "aarch64-apple-darwin", cross: false }
- { os: "windows-2022", target: "x86_64-pc-windows-msvc" }
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Set up Rust toolchain
uses: dtolnay/rust-toolchain@21dc36fb71dd22e3317045c0c31a3f4249868b17
with:
toolchain: stable
- name: Enable Rust cache
uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # 2.7.8
if: ${{ github.event_name != 'pull_request' || ! github.event.pull_request.head.repo.fork }} # If it is a PR, only if not a fork
with:
key: ${{ matrix.info.target }}
cache-all-crates: true
- name: Install cargo-llvm-cov
run: |
rustup component add llvm-tools-preview
cargo install cargo-llvm-cov --version 0.6.11 --locked
- name: Generate code coverage
run: |
cargo llvm-cov --all-features --workspace --lcov --output-path lcov.info --locked --target=${{ matrix.info.target }}
# The token is generally not needed, but sometimes the default shared token hits limits.
# Yes this is ugly as hell. Why this is not a built-in feature of GHA, I have no idea.
- name: Upload to codecov.io (Attempt 1)
id: upload_attempt_1
uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0
with:
files: lcov.info
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
flags: ${{ matrix.info.os }}
continue-on-error: true
- name: Upload to codecov.io (Attempt 2)
id: upload_attempt_2
if: steps.upload_attempt_1.outcome == 'failure'
uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0
with:
files: lcov.info
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
flags: ${{ matrix.info.os }}
continue-on-error: true
- name: Upload to codecov.io (Attempt 3)
id: upload_attempt_3
if: steps.upload_attempt_2.outcome == 'failure'
uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0
with:
files: lcov.info
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
flags: ${{ matrix.info.os }}
continue-on-error: true

144
.github/workflows/deployment.yml vendored Normal file
View File

@ -0,0 +1,144 @@
# How we deploy a release. Covers binary builds. Also manages packaging for choco.
#
# Binaries are primarily built by GHA, though some Linux, M1 macOS, and FreeBSD builds are
# handled by CirrusCI.
name: deployment
on:
workflow_dispatch:
inputs:
tag:
description: "Which tag to deploy as:"
required: true
push:
tags:
- "[0-9]+.[0-9]+.[0-9]+"
env:
CARGO_INCREMENTAL: 0
CARGO_PROFILE_DEV_DEBUG: 0
CARGO_HUSKY_DONT_INSTALL_HOOKS: true
jobs:
initialize:
name: initialize
runs-on: ubuntu-latest
outputs:
version: ${{ env.VERSION }}
steps:
- name: Get the release version from the tag
if: env.VERSION == ''
run: |
if [[ -n "${{ github.event.inputs.tag }}" ]]; then
echo "Manual run against a tag; overriding actual tag in the environment..."
echo "VERSION=${{ github.event.inputs.tag }}" >> $GITHUB_ENV
else
echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
fi
- name: Validate version environment variable
run: |
echo "Version being built against is version ${{ env.VERSION }}"!
build-release:
needs: [initialize]
uses: ./.github/workflows/build_releases.yml
with:
caller: "deployment"
secrets: inherit
generate-choco:
needs: [initialize, build-release]
name: "Generate Chocolatey files"
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
fetch-depth: 1
- name: Set release version
shell: bash
run: |
echo "RELEASE_VERSION=${{ needs.initialize.outputs.version }}" >> $GITHUB_ENV
- name: Validate release version
run: |
echo "Release version: ${{ env.RELEASE_VERSION }}"
- name: Get release artifacts
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
pattern: release-*
path: release
merge-multiple: true
- name: Execute choco packaging script
run: |
python "./scripts/windows/choco/choco_packager.py" "./release/bottom_x86_64-pc-windows-msvc.zip" ${{ env.RELEASE_VERSION }} "./scripts/windows/choco/bottom.nuspec.template" "./scripts/windows/choco/chocolateyinstall.ps1.template" "bottom.nuspec" "tools/chocolateyinstall.ps1" "tools/"
zip -r choco.zip "bottom.nuspec" "tools"
- name: Move release file into release directory
shell: bash
run: |
mv choco.zip release/
- name: Save release as artifact
uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
with:
retention-days: 3
name: release-choco
path: release
upload-release:
name: upload-release
runs-on: ubuntu-latest
needs: [initialize, generate-choco, build-release]
steps:
- name: Set release version
shell: bash
run: |
echo "RELEASE_VERSION=${{ needs.initialize.outputs.version }}" >> $GITHUB_ENV
- name: Validate release version
run: |
echo "Release version: ${{ env.RELEASE_VERSION }}"
- name: Get release artifacts
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
pattern: release-*
path: release
merge-multiple: true
- name: Print out all release files
run: |
echo "Generated $(ls ./release | wc -l) files:"
du -h -d 0 ./release/*
- name: Create release and add release files
uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 # 2.0.8
with:
token: ${{ secrets.GITHUB_TOKEN }}
prerelease: false
tag_name: ${{ env.RELEASE_VERSION }}
draft: true
fail_on_unmatched_files: true
name: ${{ env.RELEASE_VERSION }} Release
body: |
<!-- Write summary here -->
---
## Bug Fixes
## Features
## Changes
## Other
## Internal Changes
files: |
./release/*

46
.github/workflows/docs.yml vendored Normal file
View File

@ -0,0 +1,46 @@
# Workflow to deploy mkdocs documentation.
name: docs
on:
workflow_dispatch:
push:
branches:
- main
paths:
- "docs/**"
- ".github/workflows/docs.yml"
env:
# Assign commit authorship to official GitHub Actions bot when pushing to the `gh-pages` branch:
GIT_USER: "github-actions[bot]"
GIT_EMAIL: "41898282+github-actions[bot]@users.noreply.github.com"
jobs:
build-documentation:
name: Build and deploy docs
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
fetch-depth: 0
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
with:
python-version: 3.12
- name: Install Python dependencies
run: pip install -r docs/requirements.txt
- name: Configure git user and email
run: |
git config --global user.name ${GIT_USER}
git config --global user.email ${GIT_EMAIL}
echo Name: $(git config --get user.name)
echo Email: $(git config --get user.email)
- name: Build and deploy docs with mike
run: |
cd docs
mike deploy nightly --push

97
.github/workflows/nightly.yml vendored Normal file
View File

@ -0,0 +1,97 @@
# Creates nightly deployment builds for main targets. Note this does not cover package distribution channels,
# such as choco.
name: nightly
on:
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
inputs:
isMock:
description: "Mock run"
default: true
required: false
type: boolean
env:
CARGO_INCREMENTAL: 0
CARGO_PROFILE_DEV_DEBUG: 0
CARGO_HUSKY_DONT_INSTALL_HOOKS: true
jobs:
# Check if things should be skipped, or if this is a mock job.
initialize-job:
name: initialize-job
runs-on: ubuntu-latest
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
steps:
- name: Check if this action should be skipped
id: skip_check
uses: fkirc/skip-duplicate-actions@f75f66ce1886f00957d99748a42c724f4330bdcf # v5.3.1
with:
skip_after_successful_duplicate: "true"
do_not_skip: '["workflow_dispatch"]'
- name: Check if mock
run: |
if [[ -z "${{ github.event.inputs.isMock }}" ]]; then
echo "This is a scheduled nightly run."
elif [[ "${{ github.event.inputs.isMock }}" == "true" ]]; then
echo "This is a mock run."
else
echo "This is NOT a mock run. Watch for the generated files!"
fi
build-release:
needs: initialize-job
if: ${{ needs.initialize-job.outputs.should_skip != 'true' }}
uses: ./.github/workflows/build_releases.yml
with:
caller: "nightly"
secrets: inherit
upload-release:
name: upload-release
needs: build-release
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
fetch-depth: 1
- name: Get release artifacts
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
pattern: release-*
path: release
merge-multiple: true
- name: Print out all release files
run: |
echo "Generated $(ls ./release | wc -l) files:"
du -h -d 0 ./release/*
- name: Delete tag and release if not mock
if: github.event.inputs.isMock != 'true'
run: gh release delete nightly --cleanup-tag
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Sleep for a few seconds to prevent timing issues between the deletion and creation of the release
run: sleep 10
if: github.event.inputs.isMock != 'true'
- name: Add all release files and create nightly release if not mock
uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 # 2.0.8
if: github.event.inputs.isMock != 'true'
with:
token: ${{ secrets.GITHUB_TOKEN }}
prerelease: true
tag_name: "nightly"
draft: false
fail_on_unmatched_files: true
files: |
./release/*

102
.github/workflows/post_release.yml vendored Normal file
View File

@ -0,0 +1,102 @@
# Actions to run after releasing a version, like:
# - Generating documentation via mkdocs
# - Notifying packaging repos
name: post-release
on:
release:
types: [published]
workflow_dispatch:
inputs:
tag:
description: "Which tag to deploy as:"
required: true
env:
# Assign commit authorship to official GitHub Actions bot when pushing to the `gh-pages` branch:
GIT_USER: "github-actions[bot]"
GIT_EMAIL: "41898282+github-actions[bot]@users.noreply.github.com"
jobs:
initialize:
name: initialize
runs-on: ubuntu-latest
outputs:
version: ${{ env.VERSION }}
steps:
- name: Get the release version from the tag
run: |
if [[ -n "${{ github.event.inputs.tag }}" ]]; then
echo "Manual run against a tag; overriding actual tag in the environment..."
echo "VERSION=${{ github.event.inputs.tag }}" >> "$GITHUB_ENV"
else
echo "VERSION=${{ github.event.release.tag_name }}" >> "$GITHUB_ENV"
fi
- name: Make sure you're not on master/main/nightly
run: |
echo ${{ env.VERSION }}
if [[ ${{ env.VERSION }} == "master" || ${{ env.VERSION }} == "main" || ${{ env.VERSION }} == "nightly" ]]; then
exit 1
fi
docs:
needs: [initialize]
runs-on: ubuntu-latest
steps:
- name: Set release version
shell: bash
run: |
echo "RELEASE_VERSION=${{ needs.initialize.outputs.version }}" >> $GITHUB_ENV
- name: Validate release version
run: |
echo "Release version: ${{ env.RELEASE_VERSION }}"
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
fetch-depth: 0
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
with:
python-version: 3.12
- name: Install Python dependencies
run: pip install -r docs/requirements.txt
- name: Configure git user and email
run: |
git config --global user.name ${GIT_USER}
git config --global user.email ${GIT_EMAIL}
echo Name: $(git config --get user.name)
echo Email: $(git config --get user.email)
- name: Build and deploy docs with mike as the latest stable branch
run: |
cd docs
OLD_STABLE_VERSION=$(mike list stable | grep -Po '([0-9]+.[0-9]+.[0-9]+)' | head -n1)
echo ${OLD_STABLE_VERSION}
mike retitle --push stable ${OLD_STABLE_VERSION}
mike deploy --push --update-aliases ${RELEASE_VERSION} stable
mike retitle --push ${RELEASE_VERSION} "${RELEASE_VERSION} (stable)"
chocolatey:
needs: [initialize]
runs-on: ubuntu-latest
steps:
- name: Set release version
shell: bash
run: |
echo "RELEASE_VERSION=${{ needs.initialize.outputs.version }}" >> $GITHUB_ENV
- name: Validate release version
run: |
echo "Release version: ${{ env.RELEASE_VERSION }}"
- name: Trigger choco
run: |
curl -X POST https://api.github.com/repos/ClementTsang/choco-bottom/dispatches \
-H 'Accept: application/vnd.github.everest-preview+json' \
-u ${{ secrets.BOTTOM_PACKAGE_DEPLOYMENT }} \
--data '{ "event_type": "update", "client_payload": { "version": "'"$RELEASE_VERSION"'" } }'

47
.github/workflows/test_docs.yml vendored Normal file
View File

@ -0,0 +1,47 @@
# Small CI workflow to test if mkdocs documentation can be successfully built.
name: test docs
on:
workflow_dispatch:
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' || github.repository != 'ClementTsang/bottom' }}
jobs:
pre-job:
runs-on: ubuntu-latest
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@f75f66ce1886f00957d99748a42c724f4330bdcf # v5.3.1
with:
skip_after_successful_duplicate: "true"
paths: '["docs/**", ".github/workflows/docs.yml", ".github/workflows/test_docs.yml"]'
do_not_skip: '["workflow_dispatch"]'
test-build-documentation:
name: Test building docs
needs: pre-job
if: ${{ needs.pre-job.outputs.should_skip != 'true' }}
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
fetch-depth: 0
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
with:
python-version: 3.12
- name: Install Python dependencies
run: pip install -r docs/requirements.txt
- name: Build docs with mkdocs
run: |
cd docs
mkdocs build

60
.github/workflows/validate_schema.yml vendored Normal file
View File

@ -0,0 +1,60 @@
# Workflow to validate the latest schema.
name: "validate schema"
on:
workflow_dispatch:
pull_request:
push:
branches:
- main
paths:
- "schema/**"
- "scripts/schema/**"
- ".github/workflows/validate_schema.yml"
- "src/bin/schema.rs"
- "Cargo.toml"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' || github.repository != 'ClementTsang/bottom' }}
jobs:
pre-job:
runs-on: ubuntu-latest
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@f75f66ce1886f00957d99748a42c724f4330bdcf # v5.3.1
with:
skip_after_successful_duplicate: "true"
paths: '["schema/**", "scripts/schema/**", ".github/workflows/validate_schema.yml", "src/bin/schema.rs", "Cargo.toml"]'
do_not_skip: '["workflow_dispatch"]'
test-build-documentation:
name: Test validating schema
needs: pre-job
if: ${{ needs.pre-job.outputs.should_skip != 'true' }}
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
fetch-depth: 0
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
with:
python-version: 3.12
- name: Install Python dependencies
run: pip install -r scripts/schema/requirements.txt
- name: Test nightly validates on valid sample configs
run: |
python3 scripts/schema/validator.py -s ./schema/nightly/bottom.json -f ./sample_configs/default_config.toml
python3 scripts/schema/validator.py --uncomment -s ./schema/nightly/bottom.json -f ./sample_configs/default_config.toml
python3 scripts/schema/validator.py -s ./schema/nightly/bottom.json -f ./sample_configs/demo_config.toml
- name: Test nightly catches on a bad sample config
run: |
python3 scripts/schema/validator.py -s ./schema/nightly/bottom.json -f scripts/schema/bad_file.toml --should_fail

47
.gitignore vendored
View File

@ -2,12 +2,49 @@
# will have compiled files and executables
/target/
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
Cargo.lock
# These are backup files generated by rustfmt
**/*.rs.bk
# Logging
*.log
.vscode
# Flamegraph stuff
flamegraphs/
rust-unmangle
*.svg
*.data
*.data.old
# IntelliJ
.idea/
# Heaptrack files
*.zst
# For testing
sample_configs/testing*.toml
# Cargo-deny
deny.toml
# vscode
.vscode
# mkdocs
site/
# dhat heap profiling
dhat-heap.json
dhat/
# cargo vet
supply-chain/
# samply profiling
profile.json
profile.json.gz
**/venv/
# Sometimes used for scripts
.ruff_cache

View File

@ -1,4 +1,9 @@
{
"MD013": false,
"MD033": false
"MD041": false,
"MD033": false,
"MD040": false,
"MD024": false,
"MD025": false,
"MD046": false
}

View File

@ -1,43 +0,0 @@
language: rust
rust:
- stable
- beta
- nightly
os:
- linux
- osx
- windows
jobs:
allow_failures:
- rust: nightly
- env: TARGET=x86_64-pc-windows-gnu # Seems to cause problems. TODO: Add test for it, but keep allow fail.
fast_finish: true
before_install:
- export RUST_BACKTRACE=1
- |
if [[ $TRAVIS_OS_NAME == "linux" ]]; then
export TARGET=x86_64-unknown-linux-gnu;
elif [[ $TRAVIS_OS_NAME == "windows" ]]; then
export TARGET=x86_64-pc-windows-msvc;
elif [[ $TRAVIS_OS_NAME == "osx" ]]; then
export TARGET=x86_64-apple-darwin;
fi
before_script: rustup target add $TARGET
script:
- cargo build --verbose --target $TARGET
- cargo test --verbose --target $TARGET
# Need to cache the whole `.cargo` directory to keep .crates.toml for cargo-update to work
cache:
directories:
- /home/travis/.cargo
# But don't cache the cargo registry.
before_cache:
- rm -rf /home/travis/.cargo/git
- rm -rf /home/travis/.cargo/registry
notifications:
email:
on_success: never

905
CHANGELOG.md Normal file
View File

@ -0,0 +1,905 @@
# Changelog
All notable changes to this project will be documented in this file. The format is based on
[Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
Versioning for this project is based on [Semantic Versioning](https://semver.org/spec/v2.0.0.html). More specifically:
**Pre 1.0.0 (current)**:
- Patch versions should aim to only contain bug fixes or non-breaking features/changes.
- Minor versions may break things.
**Post 1.0.0**:
- Patch versions should only contain bug fixes.
- Minor versions should only contain forward-compatible features/changes.
- Major versions may break things.
That said, these are more guidelines rather than hardset rules, though the project will generally try to follow them.
---
## [0.12.0] - Unreleased
### Features
- [#1793](https://github.com/ClementTsang/bottom/pull/1793): Add support for threads in Linux.
- [#1719](https://github.com/ClementTsang/bottom/pull/1719): Support ignoring all keypresses.
### Bug Fixes
- [#1800](https://github.com/ClementTsang/bottom/pull/1800): Fix colon at end of process name in Linux.
- [#1804](https://github.com/ClementTsang/bottom/pull/1804): Draw average CPU last again.
## [0.11.1] - 2025-08-15
### Bug Fixes
- [#1776](https://github.com/ClementTsang/bottom/pull/1776): Fix `disk.columns` being incorrectly interpreted as blank.
- [#1787](https://github.com/ClementTsang/bottom/pull/1787): Fix issue with battery widget time and small widths.
### Other
- [#1779](https://github.com/ClementTsang/bottom/pull/1779), [#1788](https://github.com/ClementTsang/bottom/pull/1788): Speed up time between startup and displaying data.
## [0.11.0] - 2025-08-05
### Features
- [#1625](https://github.com/ClementTsang/bottom/pull/1625): Add the ability to configure the disk widget's table columns.
- [#1641](https://github.com/ClementTsang/bottom/pull/1641) + [#1692](https://github.com/ClementTsang/bottom/pull/1692): Support AMD GPU data collection on Linux.
- [#1642](https://github.com/ClementTsang/bottom/pull/1642): Support changing the widget borders.
- [#1717](https://github.com/ClementTsang/bottom/pull/1717): Support delete key (fn + delete on macOS) to kill processes.
- [#1306](https://github.com/ClementTsang/bottom/pull/1306): Support using left/right key to collapse/expand process trees respectively.
- [#1767](https://github.com/ClementTsang/bottom/pull/1767): Add a virtual memory column for processes.
- [#1770](https://github.com/ClementTsang/bottom/pull/1770) (originally [#1627](https://github.com/ClementTsang/bottom/pull/1627)): Add option to have process tree entries be collapsed by default.
### Bug Fixes
- [#1551](https://github.com/ClementTsang/bottom/pull/1551): Fix missing parent section names in default config.
- [#1552](https://github.com/ClementTsang/bottom/pull/1552): Fix typo in default config.
- [#1565](https://github.com/ClementTsang/bottom/pull/1565): Fix issue where CPU usage in basic mode looks weird if core count isn't divisible by four.
- [#1578](https://github.com/ClementTsang/bottom/pull/1578): Fix missing selected text background colour in `default-light` theme.
- [#1593](https://github.com/ClementTsang/bottom/pull/1593): Fix using `"none"` for chart legend position in configs.
- [#1594](https://github.com/ClementTsang/bottom/pull/1594): Fix incorrect default config definitions for chart legends.
- [#1596](https://github.com/ClementTsang/bottom/pull/1596): Fix support for nilfs2 file system.
- [#1660](https://github.com/ClementTsang/bottom/pull/1660): Fix properly cleaning up the terminal if the program is terminated due to an `Err` bubbling to the top.
- [#1663](https://github.com/ClementTsang/bottom/pull/1663): Fix network graphs using log scaling having broken lines when a point was 0.
- [#1667](https://github.com/ClementTsang/bottom/pull/1667): Fix for ARC/SWAP not being hidden in basic mode after refactor.
- [#1683](https://github.com/ClementTsang/bottom/pull/1683): Fix graph lines potentially showing up behind legends.
- [#1701](https://github.com/ClementTsang/bottom/pull/1701): Fix process kill dialog occasionally causing panics.
- [#1755](https://github.com/ClementTsang/bottom/pull/1755): Fix missing stats/incorrect mount name for certain entries in the disk widget.
- [#1759](https://github.com/ClementTsang/bottom/pull/1759): Fix increment for data tables if the change is greater than the number of entries left.
### Changes
- [#1559](https://github.com/ClementTsang/bottom/pull/1559): Rename `--enable_gpu` to `--disable_gpu`, and make GPU features enabled by default.
- [#1570](https://github.com/ClementTsang/bottom/pull/1570): Consider `$XDG_CONFIG_HOME` on macOS when looking for a default config path in a backwards-compatible fashion.
- [#1686](https://github.com/ClementTsang/bottom/pull/1686): Allow hyphenated arguments to work as well (e.g. `--autohide-time`).
- [#1701](https://github.com/ClementTsang/bottom/pull/1701): Redesign process kill dialog.
- [#1706](https://github.com/ClementTsang/bottom/pull/1706): Disable mouse capture when `disable_click` is set.
- [#1769](https://github.com/ClementTsang/bottom/pull/1769): Change how we calculate swap usage in Windows.
### Other
- [#1655](https://github.com/ClementTsang/bottom/pull/1655): Better handle NVIDIA GPUs on Linux with only libnvidia-ml.so.1.
- [#1658](https://github.com/ClementTsang/bottom/pull/1658): Make it possible to override completion/manpage generation output directory via env.
- [#1663](https://github.com/ClementTsang/bottom/pull/1663): Rework how data is stored internally, reducing memory usage a bit.
- [#1749](https://github.com/ClementTsang/bottom/pull/1749): Fix invalid desktop file values.
## [0.10.2] - 2024-08-05
### Features
- [#1487](https://github.com/ClementTsang/bottom/pull/1487): Add option to move the AVG CPU bar to another row in basic mode.
### Bug Fixes
- [#1541](https://github.com/ClementTsang/bottom/pull/1541): Fix some process details not updating for macOS and Windows.
- [#1542](https://github.com/ClementTsang/bottom/pull/1542): Fix confusing process run times being reported on macOS.
- [#1543](https://github.com/ClementTsang/bottom/pull/1543): Fix the `--default_cpu_entry` argument not being checked.
## [0.10.1] - 2024-08-01
### Bug Fixes
- [#1526](https://github.com/ClementTsang/bottom/pull/1526): Fix `--help` description being incorrectly set for a flag, breaking the output.
## [0.10.0] - 2024-08-01
### Features
- [#1276](https://github.com/ClementTsang/bottom/pull/1276): Add GPU process info.
- [#1353](https://github.com/ClementTsang/bottom/pull/1353): Support selecting the average CPU graph as a default.
- [#1373](https://github.com/ClementTsang/bottom/pull/1373): Add support for bcachefs in disk widget.
- [#1430](https://github.com/ClementTsang/bottom/pull/1430): Support controlling the graph legend position for memory and network graph widgets.
- [#1512](https://github.com/ClementTsang/bottom/pull/1512): Support bold text styling options.
- [#1514](https://github.com/ClementTsang/bottom/pull/1514): Support italic text styling options.
### Changes
- [#1276](https://github.com/ClementTsang/bottom/pull/1276): NVIDIA GPU functionality is now tied behind the `--enable_gpu` flag. This will likely be changed in the future.
- [#1344](https://github.com/ClementTsang/bottom/pull/1344): Change the `group` command line-argument to `group_processes` for consistency with the config file option.
- [#1376](https://github.com/ClementTsang/bottom/pull/1376): Group together related command-line arguments in `-h` and `--help`.
- [#1411](https://github.com/ClementTsang/bottom/pull/1411): Add `time` as a default column.
- [#1436](https://github.com/ClementTsang/bottom/pull/1436): Use actual "swap" value for Windows.
- [#1441](https://github.com/ClementTsang/bottom/pull/1441): The following arguments have changed names:
- `--left_legend/-l` is now `--cpu_left_legend`.
- [#1441](https://github.com/ClementTsang/bottom/pull/1441): The following config fields have changed names:
- `expanded_on_startup` is now `expanded`.
- `left_legend` is now `cpu_left_legend`.
- [#1458](https://github.com/ClementTsang/bottom/pull/1458): Fix a bug with `--hide_table_gap` with the battery widget.
- [#1472](https://github.com/ClementTsang/bottom/pull/1472): The following arguments have changed names:
- `--mem_as_value` is now `process_memory_as_value`.
- [#1472](https://github.com/ClementTsang/bottom/pull/1472): The following config fields have changed names:
- `mem_as_value` is now `process_memory_as_value`.
- [#1481](https://github.com/ClementTsang/bottom/pull/1481): The following config fields have changed names:
- `disk_filter` is now `disk.name_filter`.
- `mount_filter` is now `disk.mount_filter`.
- `temp_filter` is now `temperature.sensor_filter`
- `net_filter` is now `network.interface_filter`
- [#1499](https://github.com/ClementTsang/bottom/pull/1499): Redesign how styling is configured.
- [#1499](https://github.com/ClementTsang/bottom/pull/1499): The following arguments have changed names:
- `--colors` is now `--theme`
- [#1513](https://github.com/ClementTsang/bottom/pull/1513): Table headers are now bold by default.
- [#1515](https://github.com/ClementTsang/bottom/pull/1515): Show the config path in the error message if unable to read/create a config.
- [#1682](https://github.com/ClementTsang/bottom/pull/1682): On Linux, temperature sensor labels now always have their first letter capitalized (e.g. "k10temp: tctl" -> "k10temp: Tctl").
### Bug Fixes
- [#1314](https://github.com/ClementTsang/bottom/pull/1314): Fix fat32 mounts not showing up in macOS.
- [#1355](https://github.com/ClementTsang/bottom/pull/1355): Reduce chances of non-D0 devices waking up due to temperature checks on Linux.
- [#1410](https://github.com/ClementTsang/bottom/pull/1410): Fix uptime calculation for Linux.
### Other
- [#1394](https://github.com/ClementTsang/bottom/pull/1394): Add JSON Schema support.
## [0.9.7] - 2024-07-26
## Bug Fixes
- [#1500](https://github.com/ClementTsang/bottom/issues/1500): Fix builds for Rust 1.80.
## [0.9.6] - 2023-08-26
### Other
- [#1286](https://github.com/ClementTsang/bottom/pull/1286): Pin serde to 1.0.188 to help with potential `cargo install` issues. Note this version should be fine and not pull in binaries.
## [0.9.5] - 2023-08-26
### Other
- [#1278](https://github.com/ClementTsang/bottom/pull/1278): Pin serde to 1.0.171.
## [0.9.4] - 2023-08-05
### Features
- [#1248](https://github.com/ClementTsang/bottom/pull/1248): Add I/O counters from ZFS for Linux and FreeBSD.
### Changes
- [#1236](https://github.com/ClementTsang/bottom/pull/1236): Hide the battery tab selector if there is only one battery detected.
- [#1251](https://github.com/ClementTsang/bottom/pull/1251): Make the charge meter take the entire width of the battery widget.
### Bug Fixes
- [#1230](https://github.com/ClementTsang/bottom/pull/1230): Fix core dump if the terminal is closed while bottom is open.
- [#1245](https://github.com/ClementTsang/bottom/pull/1245): Fix killing processes in Windows leaving a handle open.
- [#1264](https://github.com/ClementTsang/bottom/pull/1264): Fix ARC usage showing max system memory instead of max ARC size.
## [0.9.3] - 2023-06-25
### Features
- [#1221](https://github.com/ClementTsang/bottom/pull/1221): Support human times for `rate`.
### Bug Fixes
- [#1216](https://github.com/ClementTsang/bottom/pull/1216): Fix arguments not being sorted alphabetically.
- [#1219](https://github.com/ClementTsang/bottom/pull/1219): Fix overflow/underflow in graph timespan zoom.
### Other
- [#1206](https://github.com/ClementTsang/bottom/pull/1206): Add `.rpm` package generation.
- [#1220](https://github.com/ClementTsang/bottom/pull/1220): Update documentation for features supporting human times.
## [0.9.2] - 2023-06-11
### Features
- [#1172](https://github.com/ClementTsang/bottom/pull/1172): Support human times for `time_delta` and `default_time_value`.
- [#1187](https://github.com/ClementTsang/bottom/pull/1187): Use better names for duplicate temp sensors found by `/sys/class/thermal`.
- [#1188](https://github.com/ClementTsang/bottom/pull/1188): Also check `/sys/devices/platform/coretemp.*` for temp sensors.
### Bug Fixes
- [#1186](https://github.com/ClementTsang/bottom/pull/1186): Fix for temperature sensor data gathering on Linux immediately halting if any method failed.
- [#1191](https://github.com/ClementTsang/bottom/pull/1191): Fix ntfs3 mounts not being counted as a physical drive type.
- [#1195](https://github.com/ClementTsang/bottom/pull/1195): Fix battery health being incorrectly reported on M1 macOS.
- [#1188](https://github.com/ClementTsang/bottom/pull/1188): Don't fail fast with temperature sensor name generation on Linux.
### Other
- [#1199](https://github.com/ClementTsang/bottom/pull/1199): bottom should build on `aarch64-linux-android` with features disabled.
## [0.9.1] - 2023-05-14
### Bug Fixes
- [#1148](https://github.com/ClementTsang/bottom/pull/1148): Fix Gruvbox colour string being invalid when cache usage is enabled.
## [0.9.0] - 2023-05-10
### Features
- [#1016](https://github.com/ClementTsang/bottom/pull/1016): Add support for displaying process usernames on Windows.
- [#1022](https://github.com/ClementTsang/bottom/pull/1022): Support three-character hex colour strings for styling.
- [#1024](https://github.com/ClementTsang/bottom/pull/1024): Support FreeBSD temperature sensors based on `hw.temperature`.
- [#1063](https://github.com/ClementTsang/bottom/pull/1063): Add buffer and cache memory tracking.
- [#1106](https://github.com/ClementTsang/bottom/pull/1106): Add current battery charging state.
- [#1115](https://github.com/ClementTsang/bottom/pull/1115): Add customizable process columns to config file.
- [#801](https://github.com/ClementTsang/bottom/pull/801): Add optional process time column and querying.
### Changes
- [#1025](https://github.com/ClementTsang/bottom/pull/1025): Officially support M1 macOS.
- [#1035](https://github.com/ClementTsang/bottom/pull/1035): Migrate away from heim for CPU information.
- [#1036](https://github.com/ClementTsang/bottom/pull/1036): Migrate away from heim for memory information; bottom will now try to use `MemAvailable` on Linux to determine used memory.
- [#1041](https://github.com/ClementTsang/bottom/pull/1041): Migrate away from heim for network information.
- [#1064](https://github.com/ClementTsang/bottom/pull/1064): Migrate away from heim for storage information.
- [#812](https://github.com/ClementTsang/bottom/issues/812): Fully remove heim from bottom.
- [#1075](https://github.com/ClementTsang/bottom/issues/1075): Update how drives are named in Windows.
- [#1106](https://github.com/ClementTsang/bottom/pull/1106): Rename battery consumption field to rate.
### Bug Fixes
- [#1021](https://github.com/ClementTsang/bottom/pull/1021): Fix selected text background colour being wrong if only the foreground colour was set.
- [#1037](https://github.com/ClementTsang/bottom/pull/1037): Fix `is_list_ignored` accepting all results if set to `false`.
- [#1064](https://github.com/ClementTsang/bottom/pull/1064): Disk name/mount filter now doesn't always show all entries if one filter wasn't set.
- [#1064](https://github.com/ClementTsang/bottom/pull/1064): macOS disk I/O is potentially working now.
- [#597](https://github.com/ClementTsang/bottom/issues/597): Resolve RUSTSEC-2021-0119 by removing heim.
### Other
- [#1100](https://github.com/ClementTsang/bottom/pull/1100): Speed up first draw and first data collection.
- [#1107](https://github.com/ClementTsang/bottom/pull/1107): Update to clap v4.
- [#1111](https://github.com/ClementTsang/bottom/pull/1111): Update to regex [1.8.0](https://github.com/rust-lang/regex/blob/93316a3b1adc43cc12fab6c73a59f646658cd984/CHANGELOG.md#180-2023-04-20), supporting more escapable characters and named captures.
## [0.8.0] - 2023-01-22
### Features
- [#950](https://github.com/ClementTsang/bottom/pull/950): Split usage into both usage percentage and usage value.
### Changes
- [#974](https://github.com/ClementTsang/bottom/pull/974): Hide battery duration section if the value is unknown. Also update shortened text.
- [#975](https://github.com/ClementTsang/bottom/pull/975): Automatically hide the battery widget if no batteries are found but `--battery` is enabled.
### Bug Fixes
- [#950](https://github.com/ClementTsang/bottom/pull/950): Update help menu for disk and temperature widgets with sorting support.
- [#994](https://github.com/ClementTsang/bottom/pull/994): Fix time graph labels not being styled.
### Other
- [#969](https://github.com/ClementTsang/bottom/pull/969): Follow Debian conventions for naming generated `.deb` binaries.
## [0.7.1] - 2023-01-06
### Bug Fixes
- [#950](https://github.com/ClementTsang/bottom/pull/950): Fix invalid sorting order for disk usage percentage.
- [#952](https://github.com/ClementTsang/bottom/pull/952), [#960](https://github.com/ClementTsang/bottom/pull/960): Partially fix battery text getting cut off in small windows.
- [#953](https://github.com/ClementTsang/bottom/pull/953): Fix CPU widget's 'all' label being missing on small sizes.
### Other
- [#951](https://github.com/ClementTsang/bottom/pull/951): Nightly builds now have their version number (`btm -V`) tagged with the commit hash.
## [0.7.0] - 2022-12-31
### Features
- [#676](https://github.com/ClementTsang/bottom/pull/676): Add support for NVIDIA GPU temperature sensors.
- [#760](https://github.com/ClementTsang/bottom/pull/760): Add a check for whether bottom is being run in a terminal.
- [#766](https://github.com/ClementTsang/bottom/pull/766): Add FreeBSD support.
- [#774](https://github.com/ClementTsang/bottom/pull/774): Add half page scrolling with `ctrl-u` and `ctrl-d`.
- [#784](https://github.com/ClementTsang/bottom/pull/784): Add ZFS ARC support.
- [#794](https://github.com/ClementTsang/bottom/pull/794): Add GPU memory support for NVIDIA GPUs.
- [#806](https://github.com/ClementTsang/bottom/pull/806): Update sysinfo to support M1 macOS temperature sensors.
- [#836](https://github.com/ClementTsang/bottom/pull/836): Add CLI options for GPU memory.
- [#841](https://github.com/ClementTsang/bottom/pull/841): Add page up/page down support for the help screen.
- [#868](https://github.com/ClementTsang/bottom/pull/868): Make temperature widget sortable.
- [#870](https://github.com/ClementTsang/bottom/pull/870): Make disk widget sortable.
- [#881](https://github.com/ClementTsang/bottom/pull/881): Add pasting to the search bar.
- [#892](https://github.com/ClementTsang/bottom/pull/892): Add custom retention periods for data.
- [#899](https://github.com/ClementTsang/bottom/pull/899), [#910](https://github.com/ClementTsang/bottom/pull/910), [#912](https://github.com/ClementTsang/bottom/pull/912): Add non-normalized CPU usage to processes.
- [#919](https://github.com/ClementTsang/bottom/pull/919): Add an option to expand the default widget on startup.
### Changes
- [#690](https://github.com/ClementTsang/bottom/pull/690): Add some colour to `-h`/`--help` as part of updating to clap 3.0.
- [#726](https://github.com/ClementTsang/bottom/pull/726): Add ARM musl binary build tasks.
- [#807](https://github.com/ClementTsang/bottom/pull/807): Add more human friendly temperature sensor names for Linux.
- [#845](https://github.com/ClementTsang/bottom/pull/845), [#922](https://github.com/ClementTsang/bottom/pull/922): Add macOS M1, FreeBSD 12, and FreeBSD 13 binary build tasks.
- [#916](https://github.com/ClementTsang/bottom/pull/916), [#937](https://github.com/ClementTsang/bottom/pull/937): Improve CPU usage by optimizing draw logic of charts and tables.
### Bug Fixes
- [#711](https://github.com/ClementTsang/bottom/pull/711): Fix building in Rust beta 1.61 due to `as_ref()` calls causing type inference issues.
- [#717](https://github.com/ClementTsang/bottom/pull/717): Fix clicking on empty space in tables selecting the very last entry of a list in some cases.
- [#720](https://github.com/ClementTsang/bottom/pull/720): Fix panic if battery feature was disabled during compilation.
- [#805](https://github.com/ClementTsang/bottom/pull/805): Fix bottom keeping devices awake in certain scenarios.
- [#825](https://github.com/ClementTsang/bottom/pull/825): Use alternative method of getting parent PID in some cases on macOS devices to avoid needing root access.
- [#916](https://github.com/ClementTsang/bottom/pull/916): Fix possible gaps with widget layout spacing.
- [#938](https://github.com/ClementTsang/bottom/pull/938): Fix search scrolling with wider Unicode characters.
## [0.6.8] - 2022-02-01
### Bug Fixes
- [#655](https://github.com/ClementTsang/bottom/pull/669): Fix a bug where the number of CPUs is never refreshed.
## [0.6.7] - 2022-01-31
### Features
- [#646](https://github.com/ClementTsang/bottom/pull/646): Add `PgUp`/`PgDown` keybind support to scroll up and down a page in a table.
### Bug Fixes
- [#655](https://github.com/ClementTsang/bottom/pull/665): Fix bug where the program would stall in an infinite loop if the width of the terminal was too small.
### Other
- [#658](https://github.com/ClementTsang/bottom/pull/658): Update sysinfo.
## [0.6.6] - 2021-12-22
### Changes
- [#637](https://github.com/ClementTsang/bottom/pull/637): Remove duplicate guest time in process CPU calculation
### Bug Fixes
- [#637](https://github.com/ClementTsang/bottom/pull/637): Fix process CPU calculation if /proc/stat CPU line has fewer values than expected
## [0.6.5] - 2021-12-19
### Bug Fixes
- [#600](https://github.com/ClementTsang/bottom/pull/600): Address RUSTSEC-2020-0071
- [#627](https://github.com/ClementTsang/bottom/pull/627): Fix `process_command` breaking process widget sorting.
### Internal Changes
- [#608](https://github.com/ClementTsang/bottom/pull/608): Add codecov integration to pipeline.
## [0.6.4] - 2021-09-12
### Changes
- [#557](https://github.com/ClementTsang/bottom/pull/557): Add '/s' to network usage legend to better indicate that it's a per-second change.
### Bug Fixes
- [#575](https://github.com/ClementTsang/bottom/pull/575): Updates the procfs library to not crash on kernel version >255.
### Internal Changes
- [#551](https://github.com/ClementTsang/bottom/pull/551): Disable AUR package generation in release pipeline since it's now in community.
- [#570](https://github.com/ClementTsang/bottom/pull/570): Make battery features optional in compilation.
## [0.6.3] - 2021-07-18
### Changes
- [#547](https://github.com/ClementTsang/bottom/pull/547): Switch Linux memory usage calculation to match htop.
### Bug Fixes
- [#536](https://github.com/ClementTsang/bottom/pull/536): Prevent tests from creating a config file.
- [#542](https://github.com/ClementTsang/bottom/pull/542): Fix missing config options in the default generated config file.
- [#545](https://github.com/ClementTsang/bottom/pull/545): Fix inaccurate memory usage/totals in macOS and Linux, switch unit to binary prefix.
## [0.6.2] - 2021-06-26
### Features
- [#518](https://github.com/ClementTsang/bottom/pull/518): Add `F9` key as an alternative process kill key.
### Bug Fixes
- [#504](https://github.com/ClementTsang/bottom/pull/504): Fix two bugs causing the battery widget colours and mouse events to be broken.
- [#525](https://github.com/ClementTsang/bottom/pull/525): Fix Windows process CPU usage not being divided by the number of cores.
### Internal Changes
- [#506](https://github.com/ClementTsang/bottom/pull/506): Migrate a large portion of documentation over to mkdocs.
## [0.6.1] - 2021-05-11
### Bug Fixes
- [#473](https://github.com/ClementTsang/bottom/pull/473): Fix missing string creation for memory usage in collapsed entries.
## [0.6.0] - 2021-05-09
### Features
- [#263](https://github.com/ClementTsang/bottom/pull/263): Add the option for fine-grained kill signals on Unix-like systems.
- [#333](https://github.com/ClementTsang/bottom/pull/333): Add an "out of" indicator that can be enabled using `--show_table_scroll_position` (and its corresponding config option) to help keep track of scrolled position.
- [#379](https://github.com/ClementTsang/bottom/pull/379): Add `--process_command` flag and corresponding config option to default to showing a process' command.
- [#381](https://github.com/ClementTsang/bottom/pull/381): Add a filter in the config file for network interfaces.
- [#392](https://github.com/ClementTsang/bottom/pull/392): Add CPU load averages (1, 5, 15) for Unix-based systems.
- [#406](https://github.com/ClementTsang/bottom/pull/406): Add the Nord colour scheme, as well as a light variant.
- [#409](https://github.com/ClementTsang/bottom/pull/409): Add `Ctrl-w` and `Ctrl-h` shortcuts in search, to delete a word and delete a character respectively.
- [#413](https://github.com/ClementTsang/bottom/pull/413): Add mouse support for sorting process columns.
- [#425](https://github.com/ClementTsang/bottom/pull/425): Add user into the process widget for Unix-based systems.
- [#437](https://github.com/ClementTsang/bottom/pull/437): Redo dynamic network y-axis, add linear scaling, unit type, and prefix options.
- [#445](https://github.com/ClementTsang/bottom/pull/445): Add collapsing in tree mode sums usage to parent.
### Changes
- [#372](https://github.com/ClementTsang/bottom/pull/372): Hide the SWAP graph and legend in normal mode if SWAP is 0.
- [#390](https://github.com/ClementTsang/bottom/pull/390): macOS shouldn't need elevated privileges to see CPU usage on all processes now.
- [#391](https://github.com/ClementTsang/bottom/pull/391): Show degree symbol on Celsius and Fahrenheit.
- [#418](https://github.com/ClementTsang/bottom/pull/418): Removed automatically jumping to the top of the list for process sort shortcuts. The standard behaviour is to now stay in place.
- [#420](https://github.com/ClementTsang/bottom/pull/420): Updated tui-rs, allowing for prettier looking tables!
- [#437](https://github.com/ClementTsang/bottom/pull/437): Add linear interpolation step in drawing step to pr event missing entries on the right side of charts.
- [#443](https://github.com/ClementTsang/bottom/pull/443): Make process widget consistent with disk widget in using decimal prefixes (kilo, mega, etc.) for writes/reads.
- [#449](https://github.com/ClementTsang/bottom/pull/449): Add decimal place to actual memory usage in process widget for values greater or equal to 1GiB.
- [#450](https://github.com/ClementTsang/bottom/pull/450): Tweak `default-light` colour scheme to look less terrible on white terminals.
- [#451](https://github.com/ClementTsang/bottom/pull/451): Add decimal place to disk values larger than 1GB for total read/write in process widgets, and read/write per second in process widgets and disk widgets.
- [#455](https://github.com/ClementTsang/bottom/pull/455): Add a mount point filter for the disk widget. Also tweaked how the filter system works - see the PR for details.
### Bug Fixes
- [#416](https://github.com/ClementTsang/bottom/pull/416): Fix grouped vs ungrouped modes in the processes widget having inconsistent spacing.
- [#417](https://github.com/ClementTsang/bottom/pull/417): Fix the sort menu and sort shortcuts not syncing up.
- [#423](https://github.com/ClementTsang/bottom/pull/423): Fix disk encryption causing the disk widget to fail or not properly map I/O statistics.
- [#425](https://github.com/ClementTsang/bottom/pull/425): Fixed a bug allowing grouped mode in tree mode if already in grouped mode.
- [#467](https://github.com/ClementTsang/bottom/pull/467): Switched CPU usage data source to fix a bug on Windows where occasionally CPU usage would be stuck at 0%.
## [0.5.7] - 2021-01-30
### Bug Fixes
- [#373](https://github.com/ClementTsang/bottom/pull/373): Fix incorrect colours being used the CPU widget in basic mode.
- [#386](https://github.com/ClementTsang/bottom/pull/386): Fix `hide_table_gap` not working in the battery widget.
- [#389](https://github.com/ClementTsang/bottom/pull/389): Fix the sorting arrow disappearing in proc widget under some cases.
- [#398](https://github.com/ClementTsang/bottom/pull/398): Fix basic mode failing to report CPUs if there are less than 4 entries to report.
## [0.5.6] - 2020-12-17
### Bug Fixes
- [#361](https://github.com/ClementTsang/bottom/pull/361): Fix temperature sensors not working on non-Linux platforms.
## [0.5.5] - 2020-12-14
### Bug Fixes
- [#349](https://github.com/ClementTsang/bottom/pull/349): Fix CPU graph colours not matching the legend in the "all" state.
## [0.5.4] - 2020-12-10
### Changes
- [#344](https://github.com/ClementTsang/bottom/pull/344): Removed the `--debug` option for now.
### Bug Fixes
- [#344](https://github.com/ClementTsang/bottom/pull/344): Fix a performance regression causing high memory and CPU usage over time.
- [#345](https://github.com/ClementTsang/bottom/pull/345): Fix process states not showing.
## [0.5.3] - 2020-11-26
### Bug Fixes
- [#331](https://github.com/ClementTsang/bottom/pull/331): Fix custom battery colour levels being inverted.
## [0.5.2] - 2020-11-25
### Bug Fixes
- [#327](https://github.com/ClementTsang/bottom/pull/327): Fix `hide_avg_cpu` being inverted in config files.
## [0.5.1] - 2020-11-22
### Bug Fixes
- [6ef1d66](https://github.com/ClementTsang/bottom/commit/6ef1d66b2bca49452572a2cabb87d338dcf56e7b): Remove nord as a valid colour for now.
- [e04ce4f](https://github.com/ClementTsang/bottom/commit/e04ce4fa1b42e99f00cf8825bcd58da43552214e): Fix `--use_old_network_legend`.
- [99d0402](https://github.com/ClementTsang/bottom/commit/99d04029f0ebfc73d36adb06ea58ad68f090017c): Fix config detection for built-in colours.
## [0.5.0] - 2020-11-20
### Features
- [#206](https://github.com/ClementTsang/bottom/pull/206): Adaptive network graphs --- prior to this update, graphs were stuck at a range from 0B to 1GiB. Now, they adjust to your current usage and time span, so if you're using, say, less than a MiB, it will cap at a MiB. If you're using 10GiB, then the graph will reflect that and span to a bit greater than 10GiB.
- [#208](https://github.com/ClementTsang/bottom/pull/208): Mouse support for tables and moving to widgets.
- [#217](https://github.com/ClementTsang/bottom/pull/217): (Kinda) ARM support.
- [#220](https://github.com/ClementTsang/bottom/pull/220): Add ability to hide specific temperature and disk entries via config.
- [#223](https://github.com/ClementTsang/bottom/pull/223): Add tree mode for processes.
- [#312](https://github.com/ClementTsang/bottom/pull/312): Add a `tree` flag to default to the tree mode.
- [#269](https://github.com/ClementTsang/bottom/pull/269): Add simple indicator for when data updating is frozen.
- [#296](https://github.com/ClementTsang/bottom/pull/296): Built-in colour themes.
- [#309](https://github.com/ClementTsang/bottom/pull/309): Add a `mem_as_value` flag to default displaying process memory as value rather than percentage.
### Changes
- [#213](https://github.com/ClementTsang/bottom/pull/213), [#214](https://github.com/ClementTsang/bottom/pull/214): Updated help descriptions, added auto-complete generation.
- [#296](https://github.com/ClementTsang/bottom/pull/296): Changed how we do battery theming. We now only set high, medium, and low colours, and we deal with the ratios.
### Bug Fixes
- [#211](https://github.com/ClementTsang/bottom/pull/211): Fix a bug where you could move down in the process widget even if the process widget search was closed.
- [#215](https://github.com/ClementTsang/bottom/pull/215): Add labels to Linux temperature values.
- [#224](https://github.com/ClementTsang/bottom/pull/224): Implements sorting by count. It previously did absolutely nothing.
- [#238](https://github.com/ClementTsang/bottom/pull/238): Fix being able to cause an index out-of-bounds by resizing
to a smaller terminal _just_ after the program got the terminal size, but right before the terminal started drawing.
- [#238](https://github.com/ClementTsang/bottom/pull/238): Fixed not clearing screen before drawing, which caused issues for some environments.
- [#253](https://github.com/ClementTsang/bottom/pull/253): Fix highlighted entries being stuck in another colour when the widget is not selected.
- [#253](https://github.com/ClementTsang/bottom/pull/253), [#266](https://github.com/ClementTsang/bottom/pull/266): Expanding a widget no longer overrides the widget/dialog title colour.
- [#261](https://github.com/ClementTsang/bottom/pull/261): Fixed process names occasionally showing up as truncated, due to only using `/proc/<PID>/stat` as our data source.
- [#262](https://github.com/ClementTsang/bottom/pull/262): Fixed missing thread termination steps as well as improper polling causing blocking in input thread.
- [#289](https://github.com/ClementTsang/bottom/pull/289): Fixed the CPU basic widget showing incorrect data due to an incorrect offset when displaying the data.
- [#290](https://github.com/ClementTsang/bottom/pull/290): Fixed an incorrect offset affecting the CPU colour when scrolling.
- [#291](https://github.com/ClementTsang/bottom/pull/291): Fixed spacing problems in basic CPU mode.
- [#296](https://github.com/ClementTsang/bottom/pull/296): Fixed an incorrect offset affecting the graph CPU colour mismatching the legend.
- [#296](https://github.com/ClementTsang/bottom/pull/296): Removes an accidental extra comma in one of the headers in the disk widget.
- [#308](https://github.com/ClementTsang/bottom/pull/308): Removes the automatically generated CPU colours method.
## [0.4.7] - 2020-08-26
### Bug Fixes
- [#204](https://github.com/ClementTsang/bottom/pull/204): Fix searching by command name being broken.
## [0.4.6] - 2020-08-25
### Features
- [#179](https://github.com/ClementTsang/bottom/pull/179): Show full command/process path as an option.
- [#183](https://github.com/ClementTsang/bottom/pull/183): Added sorting capabilities to any column.
- [#188](https://github.com/ClementTsang/bottom/pull/188): Add (estimated) memory usage values, toggle this from percent to values for processes with `%`.
- [#196](https://github.com/ClementTsang/bottom/pull/196): Support searching processes by process state.
- Added `WASD` as an alternative widget movement system.
- [#198](https://github.com/ClementTsang/bottom/pull/198): Allow `e` to also escape expanded mode.
### Changes
- [#181](https://github.com/ClementTsang/bottom/pull/181): Changed to just support stable (and newer) Rust, due to library incompatibilities.
- [#182](https://github.com/ClementTsang/bottom/pull/182): For macOS, support `$HOME/Library/Application Support` instead of `$HOME/.config` for config files. For backwards compatibility's sake, for macOS, this will still check `.config` if it exists first, but otherwise, it will default to the new location.
### Bug Fixes
- [#183](https://github.com/ClementTsang/bottom/pull/183): Fixed bug in basic mode where the battery widget was placed incorrectly.
- [#186](https://github.com/ClementTsang/bottom/pull/186): Fixed a bug caused by hitting `Enter` when a process kill fails, breaking future process kills.
- [#187](https://github.com/ClementTsang/bottom/pull/187): Fix bug caused by incorrectly reading the `/proc/{pid}/stats` file.
## [0.4.5] - 2020-07-08
- No changes in this update, just an uptick for Crates.io using the wrong Cargo.lock.
## [0.4.4] - 2020-07-06
### Features
- [#114](https://github.com/ClementTsang/bottom/pull/114): Show process state per process (originally in 0.4.0, moved to later). This only shows if the processes are not merged together; I couldn't think of a nice way to show it when grouped together, unfortunately.
### Changes
- [#156](https://github.com/ClementTsang/bottom/issues/156) - Removal of the `/` CPU core showing in the chart. It felt clunky to use, was not really useful, and hard to work with large core counts.
Furthermore:
- `show_disabled_data` option and flag is removed.
- Average CPU is now on by _default_. You can disable it via `-a, --hide_avg_cpu` or `hide_avg_cpu = true`.
- Make highlighted CPU persist even if widget is not selected - this should help make it easier to know what CPU you are looking at even if you aren't currently on the CPU widget.
### Bug Fixes
- [#164](https://github.com/ClementTsang/bottom/issues/164) - Fixed a bug where bottom would incorrectly read the wrong values to calculate the read/write columns for processes in Linux.
- [#165](https://github.com/ClementTsang/bottom/issues/165) - Fixed a bug where OR operations in the process query wouldn't properly for some cases.
- The process query should hopefully be a bit more usable now. There were issues with how spaces (which are treated as an AND if it was between keywords, so something like `btm cpu > 0 mem > 0` would look for a process named `btm` with cpu usage > 0 and mem usage > 0). This has been hopefully improved.
## [0.4.3] - 2020-05-15
### Other
- Update sysinfo version that fixes an overflow issue.
## [0.4.2] - 2020-05-11
### Changes
- Automatically hide time axis labels if the widget gets too small.
- Automatically hide table gap if the widget gets too small.
### Bug Fixes
- The `<Space>` character can be used as an "AND" again (properly) in queries. For example:
```bash
(btm cpu > 0) (discord mem > 0)
```
is equivalent to:
```bash
(btm AND cpu > 0) AND (discord AND mem > 0)
```
- [#151](https://github.com/ClementTsang/bottom/issues/151) - Fixed an issue where if the drive I/O label didn't match any disk, the entire disk widget would display nothing.
- Display SWAP and MEM legends even if the total amount is 0 to avoid a weird blank spot in the legend.
## [0.4.1] - 2020-05-05
### Bug Fixes
- [#146](https://github.com/ClementTsang/bottom/pull/146): Fixed a typo in the help menu (credit to [HarHarLinks](https://github.com/HarHarLinks)).
## [0.4.0] - 2020-05-04
### Features
- [#58](https://github.com/ClementTsang/bottom/issues/58): I/O stats per process.
- [#55](https://github.com/ClementTsang/bottom/issues/55): Battery monitoring widget.
- [#134](https://github.com/ClementTsang/bottom/pull/134): `hjkl` movement to delete dialog (credit to [andys8](https://github.com/andys8)).
- [#59](https://github.com/ClementTsang/bottom/issues/59): `Alt-h` and `Alt-l` to move left/right in query (and rest of the app actually).
- [#59](https://github.com/ClementTsang/bottom/issues/59): Added a more advanced querying system.
### Changes
- Changed default colours for highlighted borders and table headers to light blue - this is mostly to deal with Powershell colour conflicts.
- Updated the widget type keyword list to accept the following keywords as existing types:
- `"memory"`
- `"network"`
- `"process"`
- `"processes"`
- `"temperature"`
- [#117](https://github.com/ClementTsang/bottom/issues/117): Update tui to 0.9:
- Removed an (undocumented) feature in allowing modifying total RX/TX colours. This is mainly due to the legend change.
- Use custom legend-hiding to stop hiding legends for memory and network widgets.
- In addition, changed to using only legends within the graph for network, as well as redesigned the legend.
The old legend style can still be used via the `--use_old_network_legend` flag or `use_old_network_legend = true` config option.
- Allow for option to hide the header gap on tables via `--hide_table_gap` or `hide_table_gap = true`.
- [#126](https://github.com/ClementTsang/bottom/pull/126): Updated error messages to be a bit more consistent/helpful.
- [#70](https://github.com/ClementTsang/bottom/issues/70): Redesigned help menu to allow for scrolling.
- [#59](https://github.com/ClementTsang/bottom/issues/59): Moved maximization key to `e`, renamed feature to _expanding_ the widget. Done to allow for the `<Enter>` key to be used later for a more intuitive usage.
### Bug Fixes
- Fixed `dd` not working on non-first entries.
- Fixed bug where a single empty row as a layout would crash without a proper warning.
The behaviour now errors out with a more helpful message.
- Fixed bug where empty widgets in layout would cause widget movement to not work properly when moving vertically.
### Internal changes
- [#38](https://github.com/ClementTsang/bottom/issues/38): Updated arg tests and added config testing.
- Add MSRV, starting with 1.40.0.
## [0.3.0] - 2020-04-07
### Features
- [#20](https://github.com/ClementTsang/bottom/issues/20): Time scaling was added to allow users to zoom in/out based on their desired time intervals. Time markers on the charts can be hidden or automatically hidden.
- [#37](https://github.com/ClementTsang/bottom/issues/37): Automatically populate a config file if one does not exist.
- [#21](https://github.com/ClementTsang/bottom/issues/21): Basic mode added.
- [#51](https://github.com/ClementTsang/bottom/issues/51): Modularity with widget placement or inclusion added.
### Changes
- Removed redundant dependencies.
- [#17](https://github.com/ClementTsang/bottom/issues/17): Add colouring options to the total RX/TX labels.
- [#29](https://github.com/ClementTsang/bottom/issues/29): Added `F1-F3` keys as alternatives for selecting search options
- [#42](https://github.com/ClementTsang/bottom/issues/42), [#45](https://github.com/ClementTsang/bottom/issues/45), [#35](https://github.com/ClementTsang/bottom/issues/35): Change the arrow used for sorting processes to work with other terminals.
- [#61](https://github.com/ClementTsang/bottom/issues/61): Search box changed to not block if the window is small.
- [#40](https://github.com/ClementTsang/bottom/issues/40): Rewrote README to be more clear and explicit.
- [#109](https://github.com/ClementTsang/bottom/issues/109): Sorting processes by name is case-insensitive.
### Bug Fixes
- [#33](https://github.com/ClementTsang/bottom/issues/33): Fix bug with search and graphemes bigger than a byte crashing due to the cursor.
- [#41](https://github.com/ClementTsang/bottom/issues/41): Fix bug that caused the cursor to go off-screen while searching.
- [#61](https://github.com/ClementTsang/bottom/issues/61): Dialog boxes set to be a constant width/height.
- [#80](https://github.com/ClementTsang/bottom/issues/80): Fix bug with resizing and scrolling causing issues with tables.
- [#77](https://github.com/ClementTsang/bottom/issues/77): Fixed hidden CPU entries from being scrolled to.
- [#79](https://github.com/ClementTsang/bottom/issues/79): Fixed CPU entries being a different colour if the one above it was hidden.
- [#85](https://github.com/ClementTsang/bottom/pull/85): A div-by-zero error when the memory values were zero was fixed.
### Other
- Various Travis changes.
- Scoop install option added.
## [0.2.2] - 2020-02-26
### Features
- Added support for colouring the average CPU core separately in config files.
- [#15](https://github.com/ClementTsang/bottom/issues/15) - Added support for (some) named colours and RGB values in config files.
### Bug Fixes
- [#28](https://github.com/ClementTsang/bottom/issues/30): Fixed broken Cargo.toml for Cargo installs.
- Fixed Windows issue with shift key.
- [#14](https://github.com/ClementTsang/bottom/issues/14): Ignore certain characters in search
## [0.2.1] - 2020-02-21
### Bug Fixes
- [#14](https://github.com/ClementTsang/bottom/issues/11): Fixed default config paths not being read properly.
## [0.2.0] - 2020-02-20
### Features
- Searching in processes was added.
- The option of a config file was added. Config files follow the TOML spec. These support boot flags by default, and colour schemes.
- The capability of maximizing a widget to take up all draw space was added.
- Filtering out CPU cores on the graph/legend was added.
### Changes
- Default colours were changed for better support on macOS Terminal and PowerShell.
- Rewrote and refactored how I get data to be less spaghetti. This might also have the added benefit of running better, with less duplicated logic.
- Changed how the dd dialog and help dialog look. Hopefully they'll be nicer to look at and more intuitive to use!
### Bug Fixes
- [#2](https://github.com/ClementTsang/bottom/issues/2): Fixed issues where the program would crash if the window was too small.
- Added a panic handler so terminals won't get all broken if a panic _does_ still occur.
- Fixed some sizing issues, hopefully this means that it's still readable at smaller sizes (within reason).
- [#10](https://github.com/ClementTsang/bottom/issues/10): Fixed scroll issue caused by resizing.
## [0.1.2] - 2020-01-11
### Changes
- Added a bit more complexity to how we determine column widths for tables. This should fix an issue where columns would glitch out at smaller widths, and hopefully look nicer.
### Bug Fixes
- Rewrote scroll logic in tables to avoid some strange scroll behaviour I encountered where it would jump around.
- Attempt to patch a panic caused by the change in how we determine time in the data collection stage.
## [0.1.1] - 2020-01-11
### Features
- `Tab` in the processes widget will now group similarly-named processes together (as well as their total CPU and MEM usage). `dd`-ing this will try to kill all entries with that process name.
- A flag to enable this by default is also now available.
### Bug Fixes
- Accidentally left in a bug in which the disk widget was using megabytes instead of bytes as their unit during data collection... but during data conversion for the display I treated them as bytes.
## [0.1.0] - 2020-01-11
Initial release.

40
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,40 @@
# Contribution
Contribution in any way is appreciated, whether it is reporting problems, fixing bugs, implementing features, improving the documentation, etc.
## Opening an issue
### Bug reports
When filing a bug report, fill out the [bug report template](https://github.com/ClementTsang/bottom/issues/new?assignees=&labels=bug&template=bug_report.yml). Be sure to give all the neccessary details! It is _incredibly_ difficult for a maintainer to fix a bug when it cannot be reproduced,
so that makes it much easier to reproduce the problem!
### Feature requests
Please fill out the [feature request template](https://github.com/ClementTsang/bottom/issues/new?assignees=&labels=feature&template=feature_request.yml). Remember to give details about what the feature is along with why you think this suggestion will be useful.
## Pull requests
If you want to directly contribute documentation changes or code, follow this! The expected workflow for a pull request is:
1. Fork the project.
2. Make your changes.
3. Make any documentation changes if necessary - if you add a new feature, it'll probably need documentation changes. See [here](https://clementtsang.github.io/bottom/nightly/contribution/documentation/) for tips on documentation.
4. Commit and create a pull request to merge into the `main` branch. **Please fill out the pull request template**.
5. Ask a maintainer to review your pull request.
- Check if the CI workflow passes. These consist of clippy lints, rustfmt checks, and basic tests. If you are a
first-time contributor, you may need to wait for a maintainer to let CI run.
- If changes are suggested or any comments are made, they should probably be addressed.
6. Once it looks good, it'll be merged! Note that _generally_, PRs are squashed to maintain repo cleanliness, though
feel free to ask otherwise if that isn't preferable.
For more details, see [here](https://clementtsang.github.io/bottom/nightly/contribution/issues-and-pull-requests/).
### Documentation
For contributing to documentation, see [here](https://clementtsang.github.io/bottom/nightly/contribution/documentation/).
### Packaging
If you want to become a package maintainer, see [here](https://clementtsang.github.io/bottom/nightly/contribution/packaging-and-distribution/)
for details on how to build bottom, how to generate/obtain completion files and manpages, and how to add installation instructions for the package to the README.

2070
Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,41 +1,266 @@
[package]
name = "bottom"
version = "0.1.2"
authors = ["Clement Tsang <clementjhtsang@gmail.com>"]
edition = "2018"
version = "0.12.0"
repository = "https://github.com/ClementTsang/bottom"
keywords = ["cli", "monitoring-tool", "top", "bottom", "graphical"]
license = "MIT"
categories = ["command-line-utilities"]
description = "A graphical top clone, written in Rust. Inspired by both gtop and gotop."
description = "A customizable cross-platform graphical process/system monitor for the terminal. Supports Linux, macOS, and Windows."
documentation = "https://clementtsang.github.io/bottom/stable"
readme = "README.md"
default-run = "btm"
build = "build.rs"
authors = ["Clement Tsang <cjhtsang@uwaterloo.ca>"]
keywords = ["cross-platform", "monitoring", "cli", "top", "tui"]
categories = ["command-line-utilities", "visualization"]
exclude = [
".cargo-husky/",
".github/",
".idea/",
".vscode/",
"assets/",
"desktop/",
"docs/",
"flamegraphs/",
"sample_configs/",
"schema/",
"scripts/",
"wix/",
".all-contributorsrc",
".cirrus.yml",
".gitignore",
".markdownlint.json",
"CHANGELOG.md",
"clippy.toml",
"codecov.yml",
"CONTRIBUTING.md",
"Cross.toml",
"rust-toolchain.toml",
"rustfmt.toml",
]
edition = "2021"
# The oldest version I've tested that should still build - note this is not an official MSRV!
rust-version = "1.81"
[lib]
test = true
doctest = true
doc = true
[[bin]]
name = "btm"
path = "src/main.rs"
path = "src/bin/main.rs"
doc = false
[profile.release]
debug = 1
opt-level = 'z' # Optimize for size.
lto = true
[[bin]]
name = "schema"
path = "src/bin/schema.rs"
test = false
doctest = false
doc = false
required-features = ["generate_schema"]
[features]
# Used for general builds.
battery = ["starship-battery"]
nvidia = ["nvml-wrapper"]
gpu = ["nvidia"]
zfs = []
deploy = ["battery", "gpu", "zfs"]
default = ["deploy"]
# Should not be included in builds.
logging = ["fern", "log", "time"]
generate_schema = ["schemars", "serde_json", "strum"]
[dependencies]
chrono = "0.4.10"
clap = "2.33.0"
crossterm = "0.14"
failure = "0.1.6"
fern = "0.5"
futures-timer = "2.0.2"
futures = "0.3.1"
heim = "0.0.9"
log = "0.4"
regex = "1.3.1"
sysinfo = "0.9" #0.9 seems to be the last working version for my Ryzen PC...
tokio = "0.2.9"
winapi = "0.3"
tui = {version = "0.8", features = ["crossterm"], default-features = false }
lazy_static = "1.4"
anyhow = "1.0.99"
backtrace = "0.3.75"
cfg-if = "1.0.3"
clap = { version = "4.5.45", features = [
"default",
"cargo",
"wrap_help",
"derive",
] }
concat-string = "1.0.1"
crossterm = "0.29.0"
ctrlc = { version = "3.4.7", features = ["termination"] }
dirs = "6.0.0"
hashbrown = "0.15.5"
humantime = "2.2.0"
indexmap = "2.10.0"
indoc = "2.0.6"
itertools = "0.14.0"
nvml-wrapper = { version = "0.11.0", optional = true, features = [
"legacy-functions",
] }
regex = "1.11.1"
serde = { version = "1.0.219", features = ["derive"] }
starship-battery = { version = "0.10.2", optional = true }
sysinfo = "=0.37.0"
timeless = "0.0.14-alpha"
toml_edit = { version = "0.22.27", features = ["serde"] }
tui = { version = "0.29.0", package = "ratatui", features = [
"unstable-rendered-line-info",
] }
unicode-ellipsis = "0.3.0"
unicode-segmentation = "1.12.0"
unicode-width = "0.2.0"
# Used for logging. Mostly a debugging tool.
fern = { version = "0.7.1", optional = true }
log = { version = "0.4.27", optional = true }
time = { version = "0.3.41", features = [
"local-offset",
"formatting",
"macros",
], optional = true }
# These are just used for JSON schema generation.
schemars = { version = "0.9.0", optional = true }
serde_json = { version = "1.0.143", optional = true }
strum = { version = "0.27.2", features = ["derive"], optional = true }
[target.'cfg(unix)'.dependencies]
libc = "0.2.175"
[target.'cfg(target_os = "linux")'.dependencies]
rustix = { version = "1.0.8", features = ["fs", "param"] }
[target.'cfg(target_os = "macos")'.dependencies]
core-foundation = "0.10.1"
mach2 = "0.4.3"
[target.'cfg(target_os = "windows")'.dependencies]
windows = { version = "0.61.3", features = [
"Win32_Foundation",
"Win32_Security",
"Win32_Storage_FileSystem",
"Win32_System_IO",
"Win32_System_Ioctl",
"Win32_System_ProcessStatus",
"Win32_System_Threading",
] }
[target.'cfg(target_os = "freebsd")'.dependencies]
serde_json = { version = "1.0.143" }
sysctl = { version = "0.6.0" }
filedescriptor = "0.8.3"
[dev-dependencies]
assert_cmd = "0.12"
predicates = "1"
assert_cmd = "2.0.17"
cargo-husky = { version = "1.5.0", default-features = false, features = [
"user-hooks",
] }
predicates = "3.1.3"
tempfile = { version = "3.21.0", default-features = false }
[target.'cfg(all(target_arch = "x86_64", target_os = "linux"))'.dev-dependencies]
portable-pty = "0.9.0"
[build-dependencies]
clap = { version = "4.5.45", features = [
"default",
"cargo",
"wrap_help",
"derive",
] }
clap_complete = "4.5.57"
clap_complete_nushell = "4.5.8"
clap_complete_fig = "4.5.2"
clap_mangen = "0.2.29"
indoc = "2.0.6"
# Compile dependencies with optimizations enabled, even in debug mode.
[profile.dev.package."*"]
opt-level = 3
[profile.release]
debug = 0
strip = "symbols"
lto = true
opt-level = 3
codegen-units = 1
[profile.profiling]
inherits = "release"
debug = true
strip = false
[package.metadata.deb]
section = "utility"
assets = [
[
"target/release/btm",
"usr/bin/",
"755",
],
[
"LICENSE",
"usr/share/doc/btm/",
"644",
],
[
"manpage/btm.1.gz",
"usr/share/man/man1/btm.1.gz",
"644",
],
[
"completion/btm.bash",
"usr/share/bash-completion/completions/btm",
"644",
],
[
"completion/btm.fish",
"usr/share/fish/vendor_completions.d/btm.fish",
"644",
],
[
"completion/_btm",
"usr/share/zsh/vendor-completions/",
"644",
],
[
"desktop/bottom.desktop",
"usr/share/applications/bottom.desktop",
"644",
],
]
extended-description = """
By default, bottom will look for a config file in ~/.config/bottom/bottom.toml. A config file can be specified \
using `-C`. If a config file does not exist at the specified or default location, a default one will be created \
for the user there.
"""
[package.metadata.deb.variants.arm64]
depends = "libc6:arm64 (>= 2.28)"
[package.metadata.deb.variants.armhf]
depends = "libc6:armhf (>= 2.28)"
[package.metadata.wix]
output = "bottom_installer.msi"
[package.metadata.generate-rpm]
assets = [
{ source = "target/release/btm", dest = "/usr/bin/", mode = "755" },
{ source = "LICENSE", dest = "/usr/share/doc/btm/", mode = "644" },
{ source = "manpage/btm.1.gz", dest = "/usr/share/man/man1/btm.1.gz", mode = "644", doc = true },
{ source = "completion/btm.bash", dest = "/usr/share/bash-completion/completions/btm", mode = "644" },
{ source = "completion/btm.fish", dest = "/usr/share/fish/vendor_completions.d/btm.fish", mode = "644" },
{ source = "completion/_btm", dest = "/usr/share/zsh/vendor-completions/", mode = "644" },
{ source = "desktop/bottom.desktop", dest = "/usr/share/applications/bottom.desktop", mode = "644" },
]
[lints.rust]
rust_2018_idioms = "deny"
# missing_docs = "deny"
[lints.rustdoc]
broken_intra_doc_links = "deny"
missing_crate_level_docs = "deny"
[lints.clippy]
todo = "deny"
unimplemented = "deny"
missing_safety_doc = "deny"

2
Cross.toml Normal file
View File

@ -0,0 +1,2 @@
[build.env]
passthrough = ["RUST_BACKTRACE", "BTM_GENERATE"]

634
README.md
View File

@ -1,128 +1,588 @@
# bottom
<div align="center">
<h1>bottom (btm)</h1>
[![Build Status](https://travis-ci.com/ClementTsang/bottom.svg?token=1wvzVgp94E1TZyPNs8JF&branch=master)](https://travis-ci.com/ClementTsang/bottom) [![crates.io link](https://img.shields.io/crates/v/bottom.svg)](https://crates.io/crates/bottom)
<p>
A customizable cross-platform graphical process/system monitor for the terminal.<br />Supports Linux, macOS, and Windows. Inspired by <a href=https://github.com/aksakalli/gtop>gtop</a>, <a href=https://github.com/xxxserxxx/gotop>gotop</a>, and <a href=https://github.com/htop-dev/htop>htop</a>.
</p>
A graphical top clone, written in Rust. Inspired by both [gtop](https://github.com/aksakalli/gtop) and [gotop](https://github.com/cjbassi/gotop)
[<img src="https://img.shields.io/github/checks-status/ClementTsang/bottom/main?style=flat-square&logo=github" alt="CI status">](https://github.com/ClementTsang/bottom/actions?query=branch%3Amain)
[<img src="https://img.shields.io/crates/v/bottom.svg?style=flat-square" alt="crates.io link">](https://crates.io/crates/bottom)
[<img src="https://img.shields.io/badge/docs-stable-66c2a5?style=flat-square&labelColor=555555&logoColor=white" alt="Stable documentation">](https://clementtsang.github.io/bottom/stable)
[<img src="https://img.shields.io/badge/docs-nightly-88c0d0?style=flat-square&labelColor=555555&logoColor=white" alt="Nightly documentation">](https://clementtsang.github.io/bottom/nightly)
![Quick demo recording](assets/recording_1.gif)
</div>
## Installation
<div align="center">
<img src="assets/demo.gif" alt="Quick demo recording showing off bottom's searching, expanding, and process killing."/>
<p>
<sub>
Demo using the <a href="https://github.com/morhetz/gruvbox">Gruvbox</a> theme (<code>--theme gruvbox</code>), along with <a href="https://www.ibm.com/plex/">IBM Plex Mono</a> and <a href="https://sw.kovidgoyal.net/kitty/">Kitty</a>
</sub>
</p>
</div>
### Linux
## Table of contents <!-- omit in toc -->
You can install by cloning and using `cargo build --release`, or use `cargo install bottom`. Other installation methods based on distros are as follows:
- [Features](#features)
- [Support](#support)
- [Official](#official)
- [Unofficial](#unofficial)
- [Installation](#installation)
- [Cargo](#cargo)
- [Alpine](#alpine)
- [Arch Linux](#arch-linux)
- [Debian / Ubuntu](#debian--ubuntu)
- [Exherbo Linux](#exherbo-linux)
- [Fedora / CentOS / AlmaLinux / Rocky Linux](#fedora--centos--almalinux--rocky-linux)
- [Gentoo](#gentoo)
- [Nix](#nix)
- [openSUSE](#opensuse)
- [Snap](#snap)
- [Solus](#solus)
- [Void](#void)
- [gah](#gah)
- [Homebrew](#homebrew)
- [MacPorts](#macports)
- [Chocolatey](#chocolatey)
- [Scoop](#scoop)
- [winget](#winget)
- [Windows installer](#windows-installer)
- [Conda](#conda)
- [Pre-built binaries](#pre-built-binaries)
- [Auto-completion](#auto-completion)
- [Usage](#usage)
- [Configuration](#configuration)
- [Troubleshooting](#troubleshooting)
- [Contribution](#contribution)
- [Contributors](#contributors)
- [Thanks](#thanks)
#### Arch Linux
## Features
You can get it from the AUR by installing `bottom`.
As (yet another) process/system visualization and management application, bottom supports the typical features:
### Windows
- Graphical visualization widgets for:
You can currently install by cloning and building yourself using `cargo build --release`, or use `cargo install bottom`
. You may need to install a font like [FreeMono](https://fonts2u.com/free-monospaced.font) and use a terminal like cmder for font support to work properly, unfortunately.
- [CPU usage](https://clementtsang.github.io/bottom/nightly/usage/widgets/cpu/) over time, at an average and per-core level
- [RAM and swap usage](https://clementtsang.github.io/bottom/nightly/usage/widgets/memory/) over time
- [Network I/O usage](https://clementtsang.github.io/bottom/nightly/usage/widgets/network/) over time
### macOS
with support for zooming in/out the current time interval displayed.
macOS support will hopefully come soon<sup>TM</sup>.
- Widgets for displaying info about:
- [Disk capacity/usage](https://clementtsang.github.io/bottom/nightly/usage/widgets/disk/)
- [Temperature sensors](https://clementtsang.github.io/bottom/nightly/usage/widgets/temperature/)
- [Battery usage](https://clementtsang.github.io/bottom/nightly/usage/widgets/battery/)
- [A process widget](https://clementtsang.github.io/bottom/nightly/usage/widgets/process/) for displaying, sorting, and searching info about processes, as well as support for:
- [Kill signals](https://clementtsang.github.io/bottom/nightly/usage/widgets/process/#process-termination)
- [Tree mode](https://clementtsang.github.io/bottom/nightly/usage/widgets/process/#tree-mode)
- [Cross-platform support](https://github.com/ClementTsang/bottom#support) for Linux, macOS, and Windows, with more planned in the future.
- [Customizable behaviour](https://clementtsang.github.io/bottom/nightly/configuration/command-line-options/) that can be controlled with command-line options or a config file, such as:
- Custom and built-in colour themes
- Customizing widget behaviour
- Changing the layout of widgets
- Filtering out entries in some widgets
- And more:
- [An htop-inspired basic mode](https://clementtsang.github.io/bottom/nightly/usage/basic-mode/)
- [Expansion, which focuses on just one widget](https://clementtsang.github.io/bottom/nightly/usage/general-usage/#expansion)
- And more!
You can find more details in [the documentation](https://clementtsang.github.io/bottom/nightly/usage/general-usage/).
## Support
The compatibility of each widget and operating systems are, as of version 0.1.0, as follows:
### Official
| OS/Widget | CPU | Memory | Disks | Temperature | Processes | Networks |
| --------- | -------- | -------- | -------- | --------------------- | --------- | --------------------------------------------- |
| Linux | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Windows | ✓ | ✓ | ✓ | Currently not working | ✓ | Partially supported (total RX/TX unavailable) |
| macOS | Untested | Untested | Untested | Untested | Untested | Untested |
bottom _officially_ supports the following operating systems and corresponding architectures:
- macOS (`x86_64`, `aarch64`)
- Linux (`x86_64`, `i686`, `aarch64`)
- Windows (`x86_64`, `i686`)
These platforms are tested to work for the most part and issues on these platforms will be fixed if possible.
Furthermore, binaries are built and tested using the most recent version of stable Rust at the time.
For more details on supported platforms and known problems, check out [the documentation](https://clementtsang.github.io/bottom/nightly/support/official/).
### Unofficial
bottom may work on a number of platforms that aren't officially supported. Note that unsupported platforms:
- Might not be tested in CI to build or pass tests (see [here](./.github/workflows/ci.yml) for checked platforms).
- Might not be properly tested by maintainers prior to a stable release.
- May only receive limited support, such as missing features or bugs that may not be fixed.
Note that some unsupported platforms may eventually be officially supported (e.g., FreeBSD).
A non-comprehensive list of some currently unofficially-supported platforms that may compile/work include:
- FreeBSD (`x86_64`)
- Linux (`armv6`, `armv7`, `powerpc64le`, `riscv64gc`)
- Android (`arm64`)
For more details on unsupported platforms and known problems, check out [the documentation](https://clementtsang.github.io/bottom/nightly/support/unofficial/).
## Installation
### Cargo
Installation via `cargo` can be done by installing the [`bottom`](https://crates.io/crates/bottom) crate:
```bash
# You might need to update the stable version of Rust first.
# Other versions might work, but this is not guaranteed.
rustup update stable
# Install the binary from crates.io.
cargo install bottom --locked
# If you use another channel by default, you can specify
# the what channel to use like so:
cargo +stable install bottom --locked
# --locked may be omitted if you wish to not use the
# locked crate versions in Cargo.lock. However, be
# aware that this may cause problems with dependencies.
cargo install bottom
```
Alternatively, you can use `cargo install` using the repo as the source.
```bash
# You might need to update the stable version of Rust first.
# Other versions might work, but this is not guaranteed.
rustup update stable
# Option 1 - Download an archive from releases and install
curl -LO https://github.com/ClementTsang/bottom/archive/0.11.1.tar.gz
tar -xzvf 0.11.1.tar.gz
cargo install --path . --locked
# Option 2 - Manually clone the repo and install
git clone https://github.com/ClementTsang/bottom
cd bottom
cargo install --path . --locked
# Option 3 - Install using cargo with the repo as the source
cargo install --git https://github.com/ClementTsang/bottom --locked
# You can also pass in the target-cpu=native flag to try to
# use better CPU-specific optimizations. For example:
RUSTFLAGS="-C target-cpu=native" cargo install --path . --locked
```
### Alpine
bottom is available as a [package](https://pkgs.alpinelinux.org/packages?name=bottom&branch=edge&repo=&arch=&origin=&flagged=&maintainer=) for Alpine Linux via `apk`:
```bash
apk add bottom
```
Packages for documentation ([`bottom-doc`](https://pkgs.alpinelinux.org/packages?name=bottom-doc&branch=edge&repo=&arch=&origin=&flagged=&maintainer=)) and completions for Bash ([`bottom-bash-completion`](https://pkgs.alpinelinux.org/packages?name=bottom-bash-completion&branch=edge&repo=&arch=&origin=&flagged=&maintainer=)), Fish ([`bottom-fish-completion`](https://pkgs.alpinelinux.org/packages?name=bottom-fish-completion&branch=edge&repo=&arch=&origin=&flagged=&maintainer=)), and Zsh ([`bottom-zsh-completion`](https://pkgs.alpinelinux.org/packages?name=bottom-zsh-completion&branch=edge&repo=&arch=&origin=&flagged=&maintainer=)) are also available.
### Arch Linux
bottom is available as an [official package](https://archlinux.org/packages/extra/x86_64/bottom/) that can be installed with `pacman`:
```bash
sudo pacman -S bottom
```
If you want the latest changes that are not yet stable, you can also install `bottom-git` [from the AUR](https://aur.archlinux.org/packages/bottom-git):
```bash
# Using paru
paru -S bottom-git
# Using yay
yay -S bottom-git
```
### Debian / Ubuntu
A `.deb` file is provided on each [stable release](https://github.com/ClementTsang/bottom/releases/latest) and
[nightly builds](https://github.com/ClementTsang/bottom/releases/tag/nightly) for x86, aarch64, and armv7.
Some examples of installing it this way:
```bash
# x86-64
curl -LO https://github.com/ClementTsang/bottom/releases/download/0.11.1/bottom_0.11.1-1_amd64.deb
sudo dpkg -i bottom_0.11.1-1_amd64.deb
# ARM64
curl -LO https://github.com/ClementTsang/bottom/releases/download/0.11.1/bottom_0.11.1-1_arm64.deb
sudo dpkg -i bottom_0.11.1-1_arm64.deb
# ARM
curl -LO https://github.com/ClementTsang/bottom/releases/download/0.11.1/bottom_0.11.1-1_armhf.deb
sudo dpkg -i bottom_0.11.1-1_armhf.deb
# musl-based
curl -LO https://github.com/ClementTsang/bottom/releases/download/0.11.1/bottom-musl_0.11.1-1_amd64.deb
sudo dpkg -i bottom-musl_0.11.1-1_amd64.deb
```
### Exherbo Linux
bottom is available as a [rust package](https://gitlab.exherbo.org/exherbo/rust/-/tree/master/packages/sys-process/bottom) that can be installed with `cave`:
```bash
cave resolve -x repository/rust
cave resolve -x bottom
```
### Fedora / CentOS / AlmaLinux / Rocky Linux
bottom is available on [COPR](https://copr.fedorainfracloud.org/coprs/atim/bottom/):
```bash
sudo dnf copr enable atim/bottom -y
sudo dnf install bottom
```
bottom is also available via [Terra](https://terra.fyralabs.com/):
```bash
sudo dnf install --repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' --setopt='terra.gpgkey=https://repos.fyralabs.com/terra$releasever/key.asc' terra-release
sudo dnf install bottom
```
`.rpm` files are also generated for x86 in the [releases](https://github.com/ClementTsang/bottom/releases) page.
For example:
```bash
curl -LO https://github.com/ClementTsang/bottom/releases/download/0.11.1/bottom-0.11.1-1.x86_64.rpm
sudo rpm -i bottom-0.11.1-1.x86_64.rpm
```
### Gentoo
Available in the [official Gentoo repo](https://packages.gentoo.org/packages/sys-process/bottom):
```bash
sudo emerge --ask sys-process/bottom
```
### Nix
Available [in Nixpkgs](https://search.nixos.org/packages?channel=unstable&show=bottom&from=0&size=1&sort=relevance&type=packages) as `bottom`:
```bash
nix profile install nixpkgs#bottom
```
`bottom` can also be installed and configured through the [home-manager](https://nix-community.github.io/home-manager) module:
```nix
{
programs.bottom.enable = true;
}
```
### openSUSE
Available in openSUSE Tumbleweed:
```bash
zypper in bottom
```
### Snap
bottom is available as a [snap](https://snapcraft.io/install/bottom/ubuntu):
```bash
sudo snap install bottom
# To allow the program to run as intended
sudo snap connect bottom:mount-observe
sudo snap connect bottom:hardware-observe
sudo snap connect bottom:system-observe
sudo snap connect bottom:process-control
```
### Solus
Available [in the Solus repos](https://dev.getsol.us/source/bottom/):
```bash
sudo eopkg it bottom
```
### Void
Available [in the void-packages repo](https://github.com/void-linux/void-packages/tree/master/srcpkgs/bottom):
```bash
sudo xbps-install bottom
```
### gah
bottom can also be installed on Linux or macOS using [gah](https://github.com/marverix/gah):
```bash
gah install bottom
```
### Homebrew
Formula available [here](https://formulae.brew.sh/formula/bottom):
```bash
brew install bottom
```
### MacPorts
Available [here](https://ports.macports.org/port/bottom/):
```bash
sudo port selfupdate
sudo port install bottom
```
### Chocolatey
Chocolatey packages are located [here](https://chocolatey.org/packages/bottom):
```bash
choco install bottom
```
### Scoop
Available in the [Main bucket](https://github.com/ScoopInstaller/Main):
```bash
scoop install bottom
```
### winget
The winget package can be found [here](https://github.com/microsoft/winget-pkgs/tree/master/manifests/c/Clement/bottom):
```bash
winget install bottom
# If you need a more specific app id:
winget install Clement.bottom
```
You can uninstall via Control Panel, Options, or `winget --uninstall bottom`.
### Windows installer
You can also manually install bottom as a Windows program by going to the [latest release](https://github.com/ClementTsang/bottom/releases/latest)
and installing via the `.msi` file.
### Conda
You can install bottom using `conda` with [this conda-smithy repository](https://github.com/conda-forge/bottom-feedstock):
```bash
# Add the channel
conda config --add channels conda-forge
conda config --set channel_priority strict
# Install
conda install bottom
```
### Pre-built binaries
You can also use the pre-built release binaries:
- [Latest stable release](https://github.com/ClementTsang/bottom/releases/latest), built using the release branch
- [Latest nightly release](https://github.com/ClementTsang/bottom/releases/tag/nightly), built using the `main` branch at 00:00 UTC daily
To use, download and extract the binary that matches your system. You can then run by doing:
```bash
./btm
```
or by installing to your system following the procedures for installing binaries to your system.
#### Auto-completion
The release binaries in [the releases page](https://github.com/ClementTsang/bottom/releases) are packaged with
shell auto-completion files for Bash, Zsh, fish, Powershell, Elvish, Fig, and Nushell. To install them:
- For Bash, move `btm.bash` to `$XDG_CONFIG_HOME/bash_completion or /etc/bash_completion.d/`.
- For Zsh, move `_btm` to one of your `$fpath` directories.
- For fish, move `btm.fish` to `$HOME/.config/fish/completions/`.
- For PowerShell, add `_btm.ps1` to your PowerShell [profile](<https://docs.microsoft.com/en-us/previous-versions//bb613488(v=vs.85)>).
- For Elvish, the completion file is `btm.elv`.
- For Fig, the completion file is `btm.ts`.
- For Nushell, source `btm.nu`.
The individual auto-completion files are also included in the stable/nightly releases as `completion.tar.gz` if needed.
## Usage
Run using `btm`.
You can run bottom using `btm`.
### Command line options
- For help on flags, use `btm -h` for a quick overview or `btm --help` for more details.
- For info on key and mouse bindings, press `?` inside bottom or refer to the [documentation page](https://clementtsang.github.io/bottom/nightly/).
- `-h`, `--help` shows the help screen and exits.
You can find more information on usage in the [documentation](https://clementtsang.github.io/bottom/nightly/).
- `-a`, `--avgcpu` enables also showing the average CPU usage in addition to per-core CPU usage.
## Configuration
- `-m`, `--dot-marker` uses a dot marker instead of the default braille marker.
bottom accepts a number of command-line arguments to change the behaviour of the application as desired.
Additionally, bottom will automatically generate a configuration file on the first launch, which can be changed.
- `-c`, `--celsius` displays the temperature type in Celsius. This is the default.
More details on configuration can be found [in the documentation](https://clementtsang.github.io/bottom/nightly/configuration/config-file/).
- `-f`, `--fahrenheit` displays the temperature type in Fahrenheit.
## Troubleshooting
- `-k`, `--kelvin` displays the temperature type in Kelvin.
If some things aren't working, give the [troubleshooting page](https://clementtsang.github.io/bottom/nightly/troubleshooting)
a look. If things still aren't working, then consider asking [a question](https://github.com/ClementTsang/bottom/discussions)
or filing a [bug report](https://github.com/ClementTsang/bottom/issues/new/choose) if you think it's a bug.
- `-v`, `--version` displays the version number and exits.
## Contribution
- `-d`, `--debug` enables debug logging.
Whether it's reporting bugs, suggesting features, maintaining packages, or submitting a PR,
contribution is always welcome! Please read [CONTRIBUTING.md](./CONTRIBUTING.md) for details on how to
contribute to bottom.
- `-r <RATE>`, `--rate <RATE>` will set the refresh rate in _milliseconds_. Lowest it can go is 250ms, the highest it can go is 2<sup>128</sup> - 1. Defaults to 1000ms, and lower values may take more resources due to more frequent polling of data, and may be less accurate in some circumstances.
### Contributors
- `-l`, `--left_legend` will move external table legends to the left side rather than the right side. Right side is default.
Thanks to all contributors:
- `-u`, `--current_usage` will make a process' CPU usage be based on the current total CPU usage, rather than assuming 100% CPU usage. Only affects Linux for now.
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tbody>
<tr>
<td align="center" valign="top" width="14.28%"><a href="http://shilangyu.github.io"><img src="https://avatars3.githubusercontent.com/u/29288116?v=4?s=100" width="100px;" alt="Marcin Wojnarowski"/><br /><sub><b>Marcin Wojnarowski</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=shilangyu" title="Code">💻</a> <a href="#platform-shilangyu" title="Packaging/porting to new platform">📦</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://neosmart.net/"><img src="https://avatars3.githubusercontent.com/u/606923?v=4?s=100" width="100px;" alt="Mahmoud Al-Qudsi"/><br /><sub><b>Mahmoud Al-Qudsi</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=mqudsi" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://andys8.de"><img src="https://avatars0.githubusercontent.com/u/13085980?v=4?s=100" width="100px;" alt="Andy"/><br /><sub><b>Andy</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=andys8" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/HarHarLinks"><img src="https://avatars0.githubusercontent.com/u/2803622?v=4?s=100" width="100px;" alt="Kim Brose"/><br /><sub><b>Kim Brose</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=HarHarLinks" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://svenstaro.org"><img src="https://avatars0.githubusercontent.com/u/1664?v=4?s=100" width="100px;" alt="Sven-Hendrik Haase"/><br /><sub><b>Sven-Hendrik Haase</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=svenstaro" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://liberapay.com/Artem4/"><img src="https://avatars0.githubusercontent.com/u/5614476?v=4?s=100" width="100px;" alt="Artem Polishchuk"/><br /><sub><b>Artem Polishchuk</b></sub></a><br /><a href="#platform-tim77" title="Packaging/porting to new platform">📦</a> <a href="https://github.com/ClementTsang/bottom/commits?author=tim77" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://ruby-journal.com/"><img src="https://avatars2.githubusercontent.com/u/135605?v=4?s=100" width="100px;" alt="Trung Lê"/><br /><sub><b>Trung Lê</b></sub></a><br /><a href="#platform-runlevel5" title="Packaging/porting to new platform">📦</a> <a href="#infra-runlevel5" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dm9pZCAq"><img src="https://avatars1.githubusercontent.com/u/46228973?v=4?s=100" width="100px;" alt="dm9pZCAq"/><br /><sub><b>dm9pZCAq</b></sub></a><br /><a href="#platform-dm9pZCAq" title="Packaging/porting to new platform">📦</a> <a href="https://github.com/ClementTsang/bottom/commits?author=dm9pZCAq" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://lukor.org"><img src="https://avatars2.githubusercontent.com/u/10536802?v=4?s=100" width="100px;" alt="Lukas Rysavy"/><br /><sub><b>Lukas Rysavy</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=LlinksRechts" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://hamberg.no/erlend"><img src="https://avatars3.githubusercontent.com/u/16063?v=4?s=100" width="100px;" alt="Erlend Hamberg"/><br /><sub><b>Erlend Hamberg</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=ehamberg" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://onee3.org"><img src="https://avatars.githubusercontent.com/u/4507647?v=4?s=100" width="100px;" alt="Frederick Zhang"/><br /><sub><b>Frederick Zhang</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=Frederick888" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pvanheus"><img src="https://avatars.githubusercontent.com/u/4154788?v=4?s=100" width="100px;" alt="pvanheus"/><br /><sub><b>pvanheus</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=pvanheus" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/briandipalma"><img src="https://avatars.githubusercontent.com/u/1597820?v=4?s=100" width="100px;" alt="Brian Di Palma"/><br /><sub><b>Brian Di Palma</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=briandipalma" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dakyskye.github.io"><img src="https://avatars.githubusercontent.com/u/32128756?v=4?s=100" width="100px;" alt="Lasha Kanteladze"/><br /><sub><b>Lasha Kanteladze</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=dakyskye" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/herbygillot"><img src="https://avatars.githubusercontent.com/u/618376?v=4?s=100" width="100px;" alt="Herby Gillot"/><br /><sub><b>Herby Gillot</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=herbygillot" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/yellowsquid"><img src="https://avatars.githubusercontent.com/u/46519298?v=4?s=100" width="100px;" alt="Greg Brown"/><br /><sub><b>Greg Brown</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=yellowsquid" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/TotalCaesar659"><img src="https://avatars.githubusercontent.com/u/14265316?v=4?s=100" width="100px;" alt="TotalCaesar659"/><br /><sub><b>TotalCaesar659</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=TotalCaesar659" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/grawlinson"><img src="https://avatars.githubusercontent.com/u/4408051?v=4?s=100" width="100px;" alt="George Rawlinson"/><br /><sub><b>George Rawlinson</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=grawlinson" title="Documentation">📖</a> <a href="#platform-grawlinson" title="Packaging/porting to new platform">📦</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.frogorbits.com/"><img src="https://avatars.githubusercontent.com/u/101246?v=4?s=100" width="100px;" alt="adiabatic"/><br /><sub><b>adiabatic</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=adiabatic" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://electronsweatshop.com"><img src="https://avatars.githubusercontent.com/u/354506?v=4?s=100" width="100px;" alt="Randy Barlow"/><br /><sub><b>Randy Barlow</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=bowlofeggs" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://jackson.dev"><img src="https://avatars.githubusercontent.com/u/160646?v=4?s=100" width="100px;" alt="Patrick Jackson"/><br /><sub><b>Patrick Jackson</b></sub></a><br /><a href="#ideas-patricksjackson" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/ClementTsang/bottom/commits?author=patricksjackson" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mati865"><img src="https://avatars.githubusercontent.com/u/1174646?v=4?s=100" width="100px;" alt="Mateusz Mikuła"/><br /><sub><b>Mateusz Mikuła</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=mati865" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://blog.guillaume-gomez.fr"><img src="https://avatars.githubusercontent.com/u/3050060?v=4?s=100" width="100px;" alt="Guillaume Gomez"/><br /><sub><b>Guillaume Gomez</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=GuillaumeGomez" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/shurizzle"><img src="https://avatars.githubusercontent.com/u/203655?v=4?s=100" width="100px;" alt="shura"/><br /><sub><b>shura</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=shurizzle" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.wezm.net/"><img src="https://avatars.githubusercontent.com/u/21787?v=4?s=100" width="100px;" alt="Wesley Moore"/><br /><sub><b>Wesley Moore</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=wezm" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/xgdgsc"><img src="https://avatars.githubusercontent.com/u/1189869?v=4?s=100" width="100px;" alt="xgdgsc"/><br /><sub><b>xgdgsc</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=xgdgsc" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ViridiCanis"><img src="https://avatars.githubusercontent.com/u/49595344?v=4?s=100" width="100px;" alt="ViridiCanis"/><br /><sub><b>ViridiCanis</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=ViridiCanis" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jamartin9"><img src="https://avatars.githubusercontent.com/u/7027701?v=4?s=100" width="100px;" alt="Justin Martin"/><br /><sub><b>Justin Martin</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=jamartin9" title="Code">💻</a> <a href="https://github.com/ClementTsang/bottom/commits?author=jamartin9" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DianaNites"><img src="https://avatars.githubusercontent.com/u/5275194?v=4?s=100" width="100px;" alt="Diana"/><br /><sub><b>Diana</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=DianaNites" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://hervyqa.id"><img src="https://avatars.githubusercontent.com/u/45872139?v=4?s=100" width="100px;" alt="Hervy Qurrotul Ainur Rozi"/><br /><sub><b>Hervy Qurrotul Ainur Rozi</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=hervyqa" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://mrivnak.github.io"><img src="https://avatars.githubusercontent.com/u/7389355?v=4?s=100" width="100px;" alt="Mike Rivnak"/><br /><sub><b>Mike Rivnak</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=mrivnak" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lroobrou"><img src="https://avatars.githubusercontent.com/u/35152113?v=4?s=100" width="100px;" alt="lroobrou"/><br /><sub><b>lroobrou</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=lroobrou" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://cube64128.xyz/"><img src="https://avatars.githubusercontent.com/u/18757988?v=4?s=100" width="100px;" alt="database64128"/><br /><sub><b>database64128</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=database64128" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sou-chon"><img src="https://avatars.githubusercontent.com/u/35537528?v=4?s=100" width="100px;" alt="Chon Sou"/><br /><sub><b>Chon Sou</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=sou-chon" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Drsheppard01"><img src="https://avatars.githubusercontent.com/u/60893791?v=4?s=100" width="100px;" alt="DrSheppard"/><br /><sub><b>DrSheppard</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=Drsheppard01" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/RaresCon"><img src="https://avatars.githubusercontent.com/u/95525840?v=4?s=100" width="100px;" alt="Rareș Constantin"/><br /><sub><b>Rareș Constantin</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=RaresCon" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://felipesuri.com"><img src="https://avatars.githubusercontent.com/u/50281523?v=4?s=100" width="100px;" alt="felipesuri"/><br /><sub><b>felipesuri</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=felipesuri" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/spital"><img src="https://avatars.githubusercontent.com/u/11034264?v=4?s=100" width="100px;" alt="spital"/><br /><sub><b>spital</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=spital" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://bikodbg.com/"><img src="https://avatars.githubusercontent.com/u/1389811?v=4?s=100" width="100px;" alt="Michael Bikovitsky"/><br /><sub><b>Michael Bikovitsky</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=mbikovitsky" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dvalter"><img src="https://avatars.githubusercontent.com/u/38795282?v=4?s=100" width="100px;" alt="Dmitry Valter"/><br /><sub><b>Dmitry Valter</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=dvalter" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/aragonnetje6"><img src="https://avatars.githubusercontent.com/u/69118097?v=4?s=100" width="100px;" alt="Grace Stok"/><br /><sub><b>Grace Stok</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=aragonnetje6" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/yshui"><img src="https://avatars.githubusercontent.com/u/366851?v=4?s=100" width="100px;" alt="Yuxuan Shui"/><br /><sub><b>Yuxuan Shui</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=yshui" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="http://zongwenqing.com"><img src="https://avatars.githubusercontent.com/u/43934749?v=4?s=100" width="100px;" alt="Wenqing Zong"/><br /><sub><b>Wenqing Zong</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=WenqingZong" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://gabelluardo.github.io"><img src="https://avatars.githubusercontent.com/u/42920247?v=4?s=100" width="100px;" alt="Gabriele Belluardo"/><br /><sub><b>Gabriele Belluardo</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=gabelluardo" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://zebulon.dev/"><img src="https://avatars.githubusercontent.com/u/14242997?v=4?s=100" width="100px;" alt="Zeb Piasecki"/><br /><sub><b>Zeb Piasecki</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=zebp" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://freed-wu.github.io/"><img src="https://avatars.githubusercontent.com/u/32936898?v=4?s=100" width="100px;" alt="wzy"/><br /><sub><b>wzy</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=Freed-Wu" title="Code">💻</a> <a href="https://github.com/ClementTsang/bottom/commits?author=Freed-Wu" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://johnlin.ca/"><img src="https://avatars.githubusercontent.com/u/66440371?v=4?s=100" width="100px;" alt="john-s-lin"/><br /><sub><b>john-s-lin</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=john-s-lin" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lyuha"><img src="https://avatars.githubusercontent.com/u/4014016?v=4?s=100" width="100px;" alt="Lee Wonjoon"/><br /><sub><b>Lee Wonjoon</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=lyuha" title="Code">💻</a> <a href="https://github.com/ClementTsang/bottom/commits?author=lyuha" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.davlgd.fr"><img src="https://avatars.githubusercontent.com/u/1110600?v=4?s=100" width="100px;" alt="David Legrand"/><br /><sub><b>David Legrand</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=davlgd" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/MichalBryxi"><img src="https://avatars.githubusercontent.com/u/847473?v=4?s=100" width="100px;" alt="Michal Bryxí"/><br /><sub><b>Michal Bryxí</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=MichalBryxi" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://mpia.de/~hviding/"><img src="https://avatars.githubusercontent.com/u/17031860?v=4?s=100" width="100px;" alt="Raphael Erik Hviding"/><br /><sub><b>Raphael Erik Hviding</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=TheSkyentist" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://cosmichorror.dev"><img src="https://avatars.githubusercontent.com/u/30302768?v=4?s=100" width="100px;" alt="CosmicHorror"/><br /><sub><b>CosmicHorror</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=CosmicHorrorDev" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.woods.am/"><img src="https://avatars.githubusercontent.com/u/7113557?v=4?s=100" width="100px;" alt="Ben Woods"/><br /><sub><b>Ben Woods</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=woodsb02" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://cgdct.moe"><img src="https://avatars.githubusercontent.com/u/20411956?v=4?s=100" width="100px;" alt="Stephen Huan"/><br /><sub><b>Stephen Huan</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=stephen-huan" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jasongwartz"><img src="https://avatars.githubusercontent.com/u/10981911?v=4?s=100" width="100px;" alt="Jason Gwartz"/><br /><sub><b>Jason Gwartz</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=jasongwartz" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/llc0930"><img src="https://avatars.githubusercontent.com/u/14966910?v=4?s=100" width="100px;" alt="llc0930"/><br /><sub><b>llc0930</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=llc0930" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://chronovore.dev"><img src="https://avatars.githubusercontent.com/u/614231?v=4?s=100" width="100px;" alt="Ada Ahmed"/><br /><sub><b>Ada Ahmed</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=yretenai" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Wateir"><img src="https://avatars.githubusercontent.com/u/78731687?v=4?s=100" width="100px;" alt="Wateir"/><br /><sub><b>Wateir</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=Wateir" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/al42and"><img src="https://avatars.githubusercontent.com/u/933873?v=4?s=100" width="100px;" alt="Andrey Alekseenko"/><br /><sub><b>Andrey Alekseenko</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=al42and" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://fgimian.github.io/"><img src="https://avatars.githubusercontent.com/u/1811813?v=4?s=100" width="100px;" alt="Fotis Gimian"/><br /><sub><b>Fotis Gimian</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=fgimian" title="Code">💻</a> <a href="https://github.com/ClementTsang/bottom/commits?author=fgimian" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://sigmasquadron.net"><img src="https://avatars.githubusercontent.com/u/174749595?v=4?s=100" width="100px;" alt="Fernando Rodrigues"/><br /><sub><b>Fernando Rodrigues</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=SigmaSquadron" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://mtoohey.com"><img src="https://avatars.githubusercontent.com/u/36740602?v=4?s=100" width="100px;" alt="Matthew Toohey"/><br /><sub><b>Matthew Toohey</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=mtoohey31" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://meander.site"><img src="https://avatars.githubusercontent.com/u/11584387?v=4?s=100" width="100px;" alt="Julius Enriquez"/><br /><sub><b>Julius Enriquez</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=win8linux" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/benjamb"><img src="https://avatars.githubusercontent.com/u/8291297?v=4?s=100" width="100px;" alt="Ben Brown"/><br /><sub><b>Ben Brown</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=benjamb" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nyurik"><img src="https://avatars.githubusercontent.com/u/1641515?v=4?s=100" width="100px;" alt="Yuri Astrakhan"/><br /><sub><b>Yuri Astrakhan</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=nyurik" title="Code">💻</a> <a href="https://github.com/ClementTsang/bottom/commits?author=nyurik" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://kachick.github.io/"><img src="https://avatars.githubusercontent.com/u/1180335?v=4?s=100" width="100px;" alt="Kenichi Kamiya"/><br /><sub><b>Kenichi Kamiya</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=kachick" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/yahlia"><img src="https://avatars.githubusercontent.com/u/40295453?v=4?s=100" width="100px;" alt="yahlia"/><br /><sub><b>yahlia</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=yahlia" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Bucket-Bucket-Bucket"><img src="https://avatars.githubusercontent.com/u/107044719?v=4?s=100" width="100px;" alt="Bucket-Bucket-Bucket"/><br /><sub><b>Bucket-Bucket-Bucket</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=Bucket-Bucket-Bucket" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://marek.sierocinscy.pl"><img src="https://avatars.githubusercontent.com/u/2142811?v=4?s=100" width="100px;" alt="Marek Sierociński"/><br /><sub><b>Marek Sierociński</b></sub></a><br /><a href="https://github.com/ClementTsang/bottom/commits?author=marverix" title="Documentation">📖</a></td>
</tr>
</tbody>
</table>
- `g`, `--group` will group together processes with the same name by default (equivalent to pressing `Tab`).
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
### Keybindings
<!-- ALL-CONTRIBUTORS-LIST:END -->
#### General
## Thanks
- `q`, `Ctrl-c` to quit.
- This project is very much inspired by [gotop](https://github.com/xxxserxxx/gotop),
[gtop](https://github.com/aksakalli/gtop), and [htop](https://github.com/htop-dev/htop/).
- `Ctrl-r` to reset the screen and reset all collected data.
- This application was written with [many](https://github.com/ClementTsang/bottom/blob/main/Cargo.toml),
[_many_ libraries](https://github.com/ClementTsang/bottom/blob/main/Cargo.lock), as well as many services and
programs, all built on top of the work of many talented people. bottom would not exist without all of this.
- `f` to freeze the screen from updating with new data. Press `f` again to unfreeze. Note that monitoring will still continue in the background.
- And of course, thank you again to all contributors and package maintainers!
- `Ctrl+Up/k`, `Ctrl+Down/j`, `Ctrl+Left/h`, `Ctrl+Right/l` to navigate between panels.
- I also really appreciate anyone who has used bottom, and those
who go out of their way to report bugs or suggest ways to improve things. I hope
it's been a useful tool for others.
- `Esc` to close a dialog window.
- To those who support my work financially via donations, thank you so much.
- `?` to get a help screen explaining the controls. Note all controls except `Esc` to close the dialog will be disabled while this is open.
- Also thanks to JetBrains for providing access to tools that I use to develop bottom
as part of their [open source support program](https://jb.gg/OpenSourceSupport).
#### Scrollable Tables
- `Up` and `Down` scrolls through the list if the panel is a table (Temperature, Disks, Processes).
- `gg` or `Home` to jump to the first entry of the current table.
- `G` (`Shift+g`) or `End` to jump to the last entry of the current table.
#### Processes
- `dd` to kill the selected process
- `c` to sort by CPU usage. Sorts in descending order by default. Press again to reverse sorting order.
- `m` to sort by memory usage. Sorts in descending order by default. Press again to reverse sorting order.
- `p` to sort by PID. Sorts in ascending order by default. Press again to reverse sorting order.
- `n` to sort by process name. Sorts in ascending order by default. Press again to reverse sorting order.
- `Tab` to group together processes with the same name. Disables PID sorting. `dd` will now kill all processes covered by that name.
### Mouse actions
- Scrolling with the mouse will scroll through the currently selected list, similar to using the up/down arrow keys.
## Thanks, kudos, and all the like
- This project is very much inspired by both [gotop](https://github.com/cjbassi/gotop) and [gtop](https://github.com/aksakalli/gtop) .
- This application was written with the following libraries:
- [chrono](https://github.com/chronotope/chrono)
- [clap](https://github.com/clap-rs/clap)
- [crossterm](https://github.com/TimonPost/crossterm)
- [failure](https://github.com/rust-lang-nursery/failure)
- [fern](https://github.com/daboross/fern)
- [futures-rs](https://github.com/rust-lang-nursery/futures-rs)
- [futures-timer](https://github.com/rustasync/futures-timer)
- [heim](https://github.com/heim-rs/heim)
- [log](https://github.com/rust-lang-nursery/log)
- [sysinfo](https://github.com/GuillaumeGomez/sysinfo)
- [tokio](https://github.com/tokio-rs/tokio)
- [tui-rs](https://github.com/fdehau/tui-rs)
- [winapi](https://github.com/retep998/winapi-rs)
- [lazy_static](https://github.com/rust-lang-nursery/lazy-static.rs)
<a href="https://jb.gg/OpenSourceSupport">
<img src="https://resources.jetbrains.com/storage/products/company/brand/logos/jetbrains.svg" alt="JetBrains logo" width="150" />
</a>

BIN
assets/demo.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 670 KiB

119
build.rs Normal file
View File

@ -0,0 +1,119 @@
//! General build script used by bottom to generate completion files and set binary version.
#[expect(dead_code)]
#[path = "src/options/args.rs"]
mod args;
use std::{
env, fs, io,
path::{Path, PathBuf},
};
use clap::{Command, CommandFactory};
use clap_complete::{Generator, generate_to, shells::Shell};
use clap_complete_fig::Fig;
use clap_complete_nushell::Nushell;
use crate::args::BottomArgs;
fn create_dir(dir: &Path) -> io::Result<()> {
fs::create_dir_all(dir).inspect_err(|err| {
eprintln!(
"Couldn't create a directory at {} ({:?}). Aborting.",
dir.display(),
err
)
})
}
fn generate_completions<G>(to_generate: G, cmd: &mut Command, out_dir: &Path) -> io::Result<PathBuf>
where
G: Generator,
{
generate_to(to_generate, cmd, "btm", out_dir)
}
fn btm_generate() -> io::Result<()> {
const ENV_KEY: &str = "BTM_GENERATE";
match env::var_os(ENV_KEY) {
Some(var) if !var.is_empty() => {
let completion_dir =
option_env!("COMPLETION_DIR").unwrap_or("./target/tmp/bottom/completion/");
let manpage_dir = option_env!("MANPAGE_DIR").unwrap_or("./target/tmp/bottom/manpage/");
let completion_out_dir = PathBuf::from(completion_dir);
let manpage_out_dir = PathBuf::from(manpage_dir);
create_dir(&completion_out_dir)?;
create_dir(&manpage_out_dir)?;
// Generate completions
let mut app = BottomArgs::command();
generate_completions(Shell::Bash, &mut app, &completion_out_dir)?;
generate_completions(Shell::Zsh, &mut app, &completion_out_dir)?;
generate_completions(Shell::Fish, &mut app, &completion_out_dir)?;
generate_completions(Shell::PowerShell, &mut app, &completion_out_dir)?;
generate_completions(Shell::Elvish, &mut app, &completion_out_dir)?;
generate_completions(Fig, &mut app, &completion_out_dir)?;
generate_completions(Nushell, &mut app, &completion_out_dir)?;
// Generate manpage
let app = app.name("btm");
let man = clap_mangen::Man::new(app);
let mut buffer: Vec<u8> = Default::default();
man.render(&mut buffer)?;
fs::write(manpage_out_dir.join("btm.1"), buffer)?;
}
_ => {}
}
println!("cargo:rerun-if-env-changed={ENV_KEY}");
Ok(())
}
fn extract_sha(sha: Option<&str>) -> Option<&str> {
sha.and_then(|sha: &str| sha.get(0..8))
}
fn output_nightly_version(version: &str, git_hash: &str) {
println!("cargo:rustc-env=NIGHTLY_VERSION={version}-nightly-{git_hash}");
}
fn nightly_version() {
const ENV_KEY: &str = "BTM_BUILD_RELEASE_CALLER";
match env::var_os(ENV_KEY) {
Some(var) if !var.is_empty() && var == "ci" => {
let version = env!("CARGO_PKG_VERSION");
if let Some(hash) = extract_sha(option_env!("CIRRUS_CHANGE_IN_REPO")) {
// May be set if we're building with Cirrus CI.
output_nightly_version(version, hash);
} else if let Some(hash) = extract_sha(option_env!("GITHUB_SHA")) {
// May be set if we're building with GHA.
output_nightly_version(version, hash);
} else if let Ok(output) = std::process::Command::new("git")
.args(["rev-parse", "--short=8", "HEAD"])
.output()
{
// If we're not building in either, we do the lazy thing and fall back to
// manually grabbing info using git as a command.
let hash = String::from_utf8(output.stdout).unwrap();
output_nightly_version(version, &hash);
}
}
_ => {}
}
println!("cargo:rerun-if-env-changed={ENV_KEY}");
println!("cargo:rerun-if-env-changed=CIRRUS_CHANGE_IN_REPO");
}
fn main() -> io::Result<()> {
btm_generate()?;
nightly_version();
Ok(())
}

3
clippy.toml Normal file
View File

@ -0,0 +1,3 @@
cognitive-complexity-threshold = 100
type-complexity-threshold = 500
too-many-arguments-threshold = 8

7
codecov.yml Normal file
View File

@ -0,0 +1,7 @@
coverage:
status:
project:
default:
target: auto
threshold: 30%
patch: off

10
desktop/bottom.desktop Normal file
View File

@ -0,0 +1,10 @@
[Desktop Entry]
Name=bottom
Version=1.5
GenericName=System Monitor
Comment=A customizable cross-platform graphical process/system monitor for the terminal.
Exec=btm
Terminal=true
Type=Application
Categories=System;ConsoleOnly;Monitor;
StartupNotify=false

3
docs/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
site/
venv/
.cache/

53
docs/README.md Normal file
View File

@ -0,0 +1,53 @@
# Extended Documentation
This is where the extended documentation resides, hosted on GitHub Pages. We use [MkDocs](https://www.mkdocs.org/),
[Material for MkDocs](https://squidfunk.github.io/mkdocs-material/), and [mike](https://github.com/jimporter/mike).
Documentation is currently built using Python 3.11, though it should work fine with older versions.
## Running locally
One way is to just run `serve.sh`. Alternatively, the manual steps are, assuming your current working directory
is the bottom repo:
```bash
# Change directories to the documentation.
cd docs/
# Create and activate venv.
python -m venv venv
source venv/bin/activate
# Install requirements
pip install -r requirements.txt
# Run mkdocs
venv/bin/mkdocs serve
```
## Deploying
Deploying is done via [mike](https://github.com/jimporter/mike) in order to get versioning. Typically,
this is done through CI, but can be done manually if needed.
### Nightly docs
```bash
cd docs
mike deploy nightly --push
```
### Stable docs
```bash
cd docs
# Rename the previous stable version
mike retitle --push stable $OLD_STABLE_VERSION
# Set the newest version as the most recent stable version
mike deploy --push --update-aliases $RELEASE_VERSION stable
# Append a "(stable)" string to the end.
mike retitle --push $RELEASE_VERSION "$RELEASE_VERSION (stable)"
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,102 @@
# Command-line Options
The following options can be provided to bottom in the command line to change the behaviour of the program. You can also
see information on these options by running `btm -h`, or run `btm --help` to display more detailed information on each option:
## General Options
| Option | Behaviour |
| ----------------------------------- | ---------------------------------------------------------- |
| `--autohide_time` | Temporarily shows the time scale in graphs. |
| `-b`, `--basic` | Hides graphs and uses a more basic look. |
| `-C`, `--config_location <PATH>` | Sets the location of the config file. |
| `-t`, `--default_time_value <TIME>` | Default time value for graphs. |
| `--default_widget_count <N>` | Sets the N'th selected widget type as the default. |
| `--default_widget_type <WIDGET>` | Sets the default widget type. Use --help for more info. |
| `--disable_click` | Disables mouse clicks. |
| `--disable_keys` | Disables keyboard shortcuts, INCLUDING the ones that stop |
| | bottom. |
| `-m`, `--dot_marker` | Uses a dot marker for graphs. |
| `-e`, `--expanded` | Expand the default widget upon starting the app. |
| `--hide_table_gap` | Hides spacing between table headers and entries. |
| `--hide_time` | Hides the time scale from being shown. |
| `-r`, `--rate <TIME>` | Sets how often data is refreshed. |
| `--retention <TIME>` | How far back data will be stored up to. |
| `--show_table_scroll_position` | Shows the list scroll position tracker in the widget title |
| | for table widgets. |
| `-d`, `--time_delta <TIME>` | The amount of time changed upon zooming. |
## Process Options
| Option | Behaviour |
| --------------------------- | -------------------------------------------------------------------------------------- |
| `-S, --case_sensitive` | Enables case sensitivity by default when searching. |
| `-u, --current_usage` | Calculates process CPU usage as a percentage of current usage rather than total usage. |
| `--disable_advanced_kill` | Hides additional stopping options on Unix-like systems. |
| `--get_threads` | Also gather process thread information. |
| `-g, --group_processes` | Groups processes with the same name by default. No effect if `--tree` is set. |
| `--process_memory_as_value` | Defaults to showing process memory usage by value. |
| `--process_command` | Shows the full command name instead of the process name by default. |
| `-R, --regex` | Enables regex by default while searching. |
| `-T, --tree` | Makes the process widget use tree mode by default. |
| `--tree_collapse` | Collapse process tree by default. |
| `-n, --unnormalized_cpu` | Show process CPU% usage without averaging over the number of CPU cores. |
| `-W, --whole_word` | Enables whole-word matching by default while searching. |
## Temperature Options
| Option | Behaviour |
| ------------------ | --------------------------------------------- |
| `-c, --celsius` | Use Celsius as the temperature unit. Default. |
| `-f, --fahrenheit` | Use Fahrenheit as the temperature unit. |
| `-k, --kelvin` | Use Kelvin as the temperature unit. |
## CPU Options
| Option | Behaviour |
| --------------------- | ------------------------------------------------- |
| `--cpu_left_legend` | Puts the CPU chart legend on the left side. |
| `--default_cpu_entry` | Sets which CPU entry type is selected by default. |
| `-a, --hide_avg_cpu` | Hides the average CPU usage entry. |
## Memory Options
| Option | Behaviour |
| ---------------------------- | --------------------------------------------------------- |
| `--memory_legend <POSITION>` | Where to place the legend for the memory chart widget. |
| `--enable_cache_memory` | Enable collecting and displaying cache and buffer memory. |
## Network Options
| Option | Behaviour |
| ----------------------------- | ------------------------------------------------------- |
| `--network_legend <POSITION>` | Where to place the legend for the network chart widget. |
| `--network_use_bytes` | Displays the network widget using bytes. |
| `--network_use_binary_prefix` | Displays the network widget with binary prefixes. |
| `--network_use_log` | Displays the network widget with a log scale. |
| `--use_old_network_legend` | (DEPRECATED) Uses a separate network legend. |
## Battery Options
| Option | Behaviour |
| ----------- | ----------------------------------------------- |
| `--battery` | Shows the battery widget in non-custom layouts. |
## GPU Options
| Option | Behaviour |
| --------------- | ----------------------------------------------------------------- |
| `--disable_gpu` | Disable collecting and displaying NVIDIA and AMD GPU information. |
## Style Options
| Option | Behaviour |
| ------------------ | ---------------------------------------------------------------- |
| `--theme <SCHEME>` | Use a built-in color theme, use '--help' for info on the colors. |
## Other Options
| Option | Behaviour |
| ----------------- | ------------------------------------------------- |
| `-h`, `--help` | Prints help info (for more details use `--help`.) |
| `-V`, `--version` | Prints version information. |

View File

@ -0,0 +1,11 @@
# CPU
## Default CPU Graph Selection
You can configure which CPU graph is shown by default when starting up bottom by setting `cpu.default`.
```toml
[cpu]
# One of "all" (default), "average"/"avg"
default = "average"
```

View File

@ -0,0 +1,67 @@
# Disk Table
## Columns
You can configure which columns are shown by the disk table widget by setting the `columns` setting:
```toml
[disk]
# Pick which columns you want to use in any order.
columns = ["Disk", "Mount", "Used", "Free", "Total", "Used%", "R/s", "W/s"]
```
## Filtering Entries
You can filter out what entries to show by configuring `[disk.name_filter]` and `[disk.mount_filter]` to filter by name and mount point respectively. In particular,
you can set a list of things to filter with by setting `list`, and configure how that list
is processed with the other options.
For example, consider a disk widget showing these entries:
![Disk no filter](../../assets/screenshots/config/disk-filtering/disk_no_filter.webp)
If we wanted to ignoring any entry with a name that matches `/dev/sda`:
```toml
[disk.name_filter]
# Whether to ignore any matches. Defaults to true.
is_list_ignored = true
# A list of filters to try and match.
list = ["/dev/sda"]
# Whether to use regex. Defaults to false.
regex = true
# Whether to be case-sensitive. Defaults to false.
case_sensitive = false
# Whether to be require matching the whole word. Defaults to false.
whole_word = false
```
This would give us:
![Disk widget with just disk name filter](../../assets/screenshots/config/disk-filtering/disk_name_filter.webp)
We can also combine both the name filter and mount filter. For example:
```toml
[disk.name_filter]
is_list_ignored = false
list = ["/dev/sda"]
regex = true
case_sensitive = false
whole_word = false
[disk.mount_filter]
is_list_ignored = true
list = ["/mnt/.*", "/"]
regex = true
case_sensitive = false
whole_word = true
```
This gives us:
![Disk widget with disk name and mount filter](../../assets/screenshots/config/disk-filtering/disk_name_mount_filter.webp)

View File

@ -0,0 +1,54 @@
# Flags
!!! Warning
This section is in progress, and is just copied from the old documentation.
You can configure flags by putting them in `[flags]` table. Example:
```toml
[flags]
hide_avg_cpu = true
```
Most of the [command line flags](../command-line-options.md) have config file equivalents to avoid having to type them out
each time:
| Field | Type | Functionality |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
| `hide_avg_cpu` | Boolean | Hides the average CPU usage. |
| `dot_marker` | Boolean | Uses a dot marker for graphs. |
| `cpu_left_legend` | Boolean | Puts the CPU chart legend to the left side. |
| `current_usage` | Boolean | Sets process CPU% to be based on current CPU%. |
| `group_processes` | Boolean | Groups processes with the same name by default. |
| `case_sensitive` | Boolean | Enables case sensitivity by default. |
| `whole_word` | Boolean | Enables whole-word matching by default. |
| `regex` | Boolean | Enables regex by default. |
| `basic` | Boolean | Hides graphs and uses a more basic look. |
| `use_old_network_legend` | Boolean | DEPRECATED - uses the older network legend. |
| `battery` | Boolean | Shows the battery widget. |
| `rate` | Unsigned Int (represents milliseconds) or String (represents human time) | Sets a refresh rate in ms. |
| `default_time_value` | Unsigned Int (represents milliseconds) or String (represents human time) | Default time value for graphs in ms. |
| `time_delta` | Unsigned Int (represents milliseconds) or String (represents human time) | The amount in ms changed upon zooming. |
| `hide_time` | Boolean | Hides the time scale. |
| `temperature_type` | String (one of ["k", "f", "c", "kelvin", "fahrenheit", "celsius"]) | Sets the temperature unit type. |
| `default_widget_type` | String (one of ["cpu", "proc", "net", "temp", "mem", "disk"], same as layout options) | Sets the default widget type, use --help for more info. |
| `default_widget_count` | Unsigned Int (represents which `default_widget_type`) | Sets the n'th selected widget type as the default. |
| `disable_click` | Boolean | Disables mouse clicks. |
| `enable_cache_memory` | Boolean | Enable cache and buffer memory stats (not available on Windows). |
| `process_memory_as_value` | Boolean | Defaults to showing process memory usage by value. |
| `tree` | Boolean | Defaults to showing the process widget in tree mode. |
| `show_table_scroll_position` | Boolean | Shows the scroll position tracker in table widgets. |
| `process_command` | Boolean | Show processes as their commands by default. |
| `disable_advanced_kill` | Boolean | Disable being able to send signals to processes on supported Unix-like systems. Only available on Linux, macOS, and FreeBSD. |
| `network_use_binary_prefix` | Boolean | Displays the network widget with binary prefixes. |
| `network_use_bytes` | Boolean | Displays the network widget using bytes. |
| `network_use_log` | Boolean | Displays the network widget with a log scale. |
| `disable_gpu` | Boolean | Disable NVIDIA and AMD GPU data collection. |
| `retention` | String (human readable time, such as "10m", "1h", etc.) | How much data is stored at once in terms of time. |
| `unnormalized_cpu` | Boolean | Show process CPU% without normalizing over the number of cores. |
| `expanded` | Boolean | Expand the default widget upon starting the app. |
| `memory_legend` | String (one of ["none", "top-left", "top", "top-right", "left", "right", "bottom-left", "bottom", "bottom-right"]) | Where to place the legend for the memory widget. |
| `network_legend` | String (one of ["none", "top-left", "top", "top-right", "left", "right", "bottom-left", "bottom", "bottom-right"]) | Where to place the legend for the network widget. |
| `average_cpu_row` | Boolean | Moves the average CPU usage entry to its own row when using basic mode. |
| `tree_collapse` | Boolean | Collapse process tree by default. |

View File

@ -0,0 +1,21 @@
# Config File
For persistent configuration, and for certain configuration options, bottom supports config files.
## Default Config File
If no config file argument is given, it will automatically look for a config file at these locations:
| OS | Default Config Location |
| ------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| macOS | `$HOME/Library/Application Support/bottom/bottom.toml`<br/> `$HOME/.config/bottom/bottom.toml` <br/> `$XDG_CONFIG_HOME/bottom/bottom.toml` |
| Linux | `$HOME/.config/bottom/bottom.toml` <br/> `$XDG_CONFIG_HOME/bottom/bottom.toml` |
| Windows | `C:\Users\<USER>\AppData\Roaming\bottom\bottom.toml` |
If the config file doesn't exist at the path, bottom will automatically try to create a new config file at the location
with default values.
## JSON Schema
The configuration file also has [JSON Schema](https://json-schema.org/) support to make it easier to manage, if your
IDE/editor supports it.

View File

@ -0,0 +1,57 @@
# Layout
!!! Warning
This section is in progress, and is just copied from the old documentation.
bottom supports customizable layouts via the config file. Currently, layouts are controlled by using TOML objects and arrays.
For example, given the sample layout:
```toml
[[row]]
[[row.child]]
type="cpu"
[[row]]
ratio=2
[[row.child]]
ratio=4
type="mem"
[[row.child]]
ratio=3
[[row.child.child]]
type="temp"
[[row.child.child]]
type="disk"
```
This would give a layout that has two rows, with a 1:2 ratio. The first row has only the CPU widget.
The second row is split into two columns with a 4:3 ratio. The first column contains the memory widget.
The second column is split into two rows with a 1:1 ratio. The first is the temperature widget, the second is the disk widget.
This is what the layout would look like when run:
![Sample layout](../../assets/screenshots/config/layout/sample_layout.webp)
Each `[[row]]` represents a _row_ in the layout. A row can have any number of `child` values. Each `[[row.child]]`
represents either a _column or a widget_. A column can have any number of `child` values as well. Each `[[row.child.child]]`
represents a _widget_. A widget is represented by having a `type` field set to a string.
The following `type` values are supported:
| | |
| -------------------------------- | ------------------------ |
| `"cpu"` | CPU chart and legend |
| `"mem", "memory"` | Memory chart |
| `"net", "network"` | Network chart and legend |
| `"proc", "process", "processes"` | Process table and search |
| `"temp", "temperature"` | Temperature table |
| `"disk"` | Disk table |
| `"empty"` | An empty space |
| `"batt", "battery"` | Battery statistics |
Each component of the layout accepts a `ratio` value. If this is not set, it defaults to 1.
Furthermore, you can have duplicate widgets.
For an example, look at the [default config](https://github.com/ClementTsang/bottom/blob/main/sample_configs/default_config.toml), which contains the default layout.

View File

@ -0,0 +1,26 @@
# Network
## Filtering Entries
You can filter out what entries to show by configuring `[network.interface_filter]` .
In particular, you can set a list of things to filter with by setting `list`, and configure how that list is processed with the other options.
For example, here we are ignoring any entry with a name that matches `/dev/sda<NUMBERS>`, or specifically `/dev/nvme0n1p2`.
```toml
[network.interface_filter]
# Whether to ignore any matches. Defaults to true.
is_list_ignored = true
# A list of filters to try and match.
list = ["virbr0.*"]
# Whether to use regex. Defaults to false.
regex = true
# Whether to be case-sensitive. Defaults to false.
case_sensitive = false
# Whether to be require matching the whole word. Defaults to false.
whole_word = false
```

View File

@ -0,0 +1,11 @@
# Processes
## Columns
You can configure which columns are shown by the process widget by setting the `columns` setting:
```toml
[processes]
# Pick which columns you want to use in any order.
columns = ["cpu%", "mem%", "pid", "name", "read", "write", "tread", "twrite", "state", "user", "time", "gmem%", "gpu%"]
```

View File

@ -0,0 +1,168 @@
# Styling
Various parts of the bottom can be styled, using either built-in themes or custom theming.
## Precedence
As there are a few ways styles can be applied to bottom, the order of which styles are prioritized are, in order of
highest precedence to lowest precedence:
1. Built-in themes set via command-line args (e.g. `btm --theme gruvbox`)
2. Custom themes set via config file
3. Built-in themes set via config file
If nothing is set, it will fall back to the default theme.
## Built-in styles
bottom has a few built-in themes:
- Default
- [Nord](https://www.nordtheme.com/)
- [Gruvbox](https://github.com/morhetz/gruvbox)
These themes all also have light variants to support terminals using lighter colours.
To set the theme from the command line:
```bash
btm --theme gruvbox
```
To set the theme using the config file:
```toml
[styles]
theme = "gruvbox"
```
## Custom styling
bottom's components can also be individually styled by the user to control the colour of the text style.
### Colours
You can configure the colours for components with strings that are either hex colours (e.g. `"#ffffff"`), RGB colours
(e.g. `"255, 255, 255"`), or named colours. Named colours are one of the following strings:
- `"Black"`
- `"Red"`
- `"Green"`
- `"Yellow"`
- `"Blue"`
- `"Magenta"`
- `"Cyan"`
- `"Gray"`
- `"DarkGray"`
- `"LightRed"`
- `"LightGreen"`
- `"LightYellow"`
- `"LightBlue"`
- `"LightMagenta"`
- `"LightCyan"`
- `"White"`
### Text
Text can generally be styled using the following TOML table:
```toml
[field]
# The foreground colour of text.
color = "black"
# The background colour of text.
bg_color = "blue"
# Whether to make the text bold.
bold = false
# Inline table version
field = { color = "black", bg_color = "blue", bold = false }
```
All fields are optional; by default if `bg_color` is not set then there will be no background color.
If you _just_ want to style text by setting the foreground colour, for brevity, then you can also just set the field
to be the colour itself. For example:
```toml
[styles.widgets]
selected_text = "#fff"
```
### Configuration
#### CPU
These can be set under `[styles.cpu]`:
| Config field | Details | Examples |
| ----------------- | ---------------------------------------------------------------- | -------------------------------------------- |
| `all_entry_color` | The colour of the "All" CPU label | `all_entry_color = "Red"` |
| `avg_entry_color` | The colour of the average CPU label and graph line | `avg_entry_color = "255, 0, 255"` |
| `cpu_core_colors` | Colour of each CPU threads' label and graph line. Read in order. | `cpu_core_colors = ["Red", "Blue", "Green"]` |
#### Memory
These can be set under `[styles.memory]`:
| Config field | Details | Examples |
| ------------- | ------------------------------------------------------------------------------ | --------------------------------------- |
| `ram_color` | The colour of the RAM label and graph line | `ram_color = "Red"` |
| `cache_color` | The colour of the cache label and graph line. Does not do anything on Windows. | `cache_color = "#ffffff"` |
| `swap_color` | The colour of the swap label and graph line | `swap_color = "255, 0, 255"` |
| `arc_color` | The colour of the ARC label and graph line | `arc_color = "Blue"` |
| `gpu_colors` | Colour of each GPU's memory label and graph line. Read in order. | `gpu_colors = ["Red", "Blue", "Green"]` |
#### Network
These can be set under `[styles.network]`:
| Config field | Details | Examples |
| ---------------- | --------------------------------------------------------- | ---------------------------- |
| `rx_color` | The colour of the RX (download) label and graph line | `rx_color = "Red"` |
| `tx_color` | The colour of the TX (upload) label and graph line | `tx_color = "#ffffff"` |
| `rx_total_color` | The colour of the total RX (download) label in basic mode | `rx_total_color = "0, 0, 0"` |
| `tx_total_color` | The colour of the total TX (upload) label in basic mode | `tx_total_color = "#000"` |
#### Battery
These can be set under `[styles.battery]`:
| Config field | Details | Examples |
| ---------------------- | ------------------------------------------------------------------------ | ---------------------------------- |
| `high_battery_color` | The colour of the battery widget bar when the battery is over 50% | `high_battery_color = "Red"` |
| `medium_battery_color` | The colour of the battery widget bar when the battery between 10% to 50% | `medium_battery_color = "#ffffff"` |
| `low_battery_color` | The colour of the battery widget bar when the battery is under 10% | `low_battery_color = "0, 0, 0"` |
#### Tables
These can be set under `[styles.tables]`:
| Config field | Details | Examples |
| ------------ | ------------------------------ | -------------------------------------------------------------- |
| `headers` | Text styling for table headers | `headers = { color = "red", bg_color = "black", bold = true }` |
#### Graphs
These can be set under `[styles.graphs]`:
| Config field | Details | Examples |
| ------------- | -------------------------------------------- | ------------------------------------------------------------------- |
| `graph_color` | The general colour of the parts of the graph | `graph_color = "white"` |
| `legend_text` | Text styling for graph's legend text | `legend_text = { color = "black", bg_color = "blue", bold = true }` |
#### General widget settings
These can be set under `[styles.widgets]`:
| Config field | Details | Examples |
| ----------------------- | -------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| `border_color` | The colour of the widgets' borders | `border_color = "white"` |
| `selected_border_color` | The colour of a widget's borders when the widget is selected | `selected_border_color = "white"` |
| `widget_title` | Text styling for a widget's title | `widget_title = { color = "black", bg_color = "blue", bold = true }` |
| `text` | Text styling for text in general | `text = { color = "black", bg_color = "blue", bold = true }` |
| `selected_text` | Text styling for text when representing something that is selected | `selected_text = { color = "black", bg_color = "blue", bold = true }` |
| `disabled_text` | Text styling for text when representing something that is disabled | `disabled_text = { color = "black", bg_color = "blue", bold = true }` |
| `thread_text` | Text styling for text when representing process threads. Only usable on Linux at the moment. | `thread_text = { color = "green", bg_color = "blue", bold = true }` |

View File

@ -0,0 +1,25 @@
# Temperature Table
## Filtering Entries
You can filter out what entries to show by configuring `[temperature.sensor_filter]`. In particular you can set a list of things to filter with by setting `list`, and configure how that list is processed with the other options.
For example, here we are ignoring any sensor that has "cpu" or "wifi" in it.
```toml
[temperature.sensor_filter]
# Whether to ignore any matches. Defaults to true.
is_list_ignored = true
# A list of filters to try and match.
list = ["cpu", "wifi"]
# Whether to use regex. Defaults to false.
regex = false
# Whether to be case-sensitive. Defaults to false.
case_sensitive = false
# Whether to be require matching the whole word. Defaults to false.
whole_word = false
```

View File

@ -0,0 +1,63 @@
# Build Process
!!! Warning
This section is currently somewhat WIP.
!!! Warning
This section is intended for people who wish to work on/build/distribute bottom, not general users.
## Overview
bottom manages its own binary builds for nightly and stable release purposes. The core build workflow is handled by [`build_releases.yml`](https://github.com/ClementTsang/bottom/blob/main/.github/workflows/build_releases.yml), called by a wrapper workflow for [nightly](https://github.com/ClementTsang/bottom/blob/main/.github/workflows/nightly.yml) and [stable](https://github.com/ClementTsang/bottom/blob/main/.github/workflows/deployment.yml) releases. Builds take place via GitHub Actions.
The main things built are:
- Binaries for various platforms
- MSI installer for Windows
- `.deb` package for Debian and its derivatives
This documentation gives a high-level overview of the build process for each part. For the most up-to-date and detailed reference, definitely refer back to the [`build_releases.yml`](https://github.com/ClementTsang/bottom/blob/main/.github/workflows/build_releases.yml) file.
## Binaries
Binaries are built currently for various targets. Note that not all of these are officially supported. The following general steps are performed:
- Set up the Rust toolchain for the action runner.
- Enable cache.
- Build a release build with:
- `--features deploy`, which enables only crates needed for release builds.
- `--locked` to lock the dependency versions.
- The following env variables set:
- `BTM_GENERATE: true`
- `COMPLETION_DIR: "target/tmp/bottom/completion/"`
- `MANPAGE_DIR: "target/tmp/bottom/manpage/"`
These generate the manpages and shell completions (see [Packaging](../packaging-and-distribution.md) for some more information).
- Bundle the binaries and manpage/completions.
- Cleanup.
Some builds use [`cross`](https://github.com/cross-rs/cross) to do cross-compilation builds for architectures otherwise not natively supported by the runner.
## MSI
This builds a full Windows installer using [`cargo-wix`](https://github.com/volks73/cargo-wix). This requires some setup beforehand with some dependencies:
- Net-Framework-Core (handled by Powershell)
- wixtoolset (handled by chocolatey)
- Rust toolchain
After that, cache is enabled, and `cargo wix` takes care of the rest.
## `.deb`
Currently, `.deb` files are built for x86 and ARM architectures (`armv7`, `aarch64`). This is handled by [`cargo-deb`](https://crates.io/crates/cargo-deb).
- For x86, this is handled natively with just `cargo-deb`.
- For ARM, this uses a Docker container, [cargo-deb-arm](https://github.com/ClementTsang/cargo-deb-arm), which correctly sets the dependencies and architecture for the generated `.deb` file.
There are additional checks via `dpkg` to ensure the architecture is correctly set.

View File

@ -0,0 +1,53 @@
# Deploy Process
!!! Warning
This section is currently WIP.
!!! Warning
This section is intended for people who wish to work on/build/distribute bottom, not general users.
## Overview
bottom currently has two main deploy processes to worry about:
- [Nightly](https://github.com/ClementTsang/bottom/blob/main/.github/workflows/nightly.yml): a daily (00:00 UTC) GitHub action to build binary/installer files, and upload them to the [nightly release](https://github.com/ClementTsang/bottom/releases/tag/nightly). It can also be triggered manually as either a proper nightly release or a mock release.
- [Stable](https://github.com/ClementTsang/bottom/blob/main/.github/workflows/deployment.yml): a stable deployment, triggered manually or upon creation of a valid tag. This is a GitHub action that builds binary/installer files and uploads them to a new GitHub release.
Furthermore, this workflow does not handle the following deployments, which must be manually handled:
- [Chocolatey](https://community.chocolatey.org/packages/bottom)
- [crates.io](https://crates.io/crates/bottom)
## Nightly
This is, for the most part, automatic, though it can also be used as a way of testing build workflow changes and seeing if binaries can be successfully built at all against all the targets we want to build for.
If one does not want to actually update the nightly release, and just want to test the general builds and workflow, one can run the workflow manually on a branch of choice with "mock" set as the parameter. Changing it to anything else will trigger a non-mock run.
## Stable
This can be manually triggered, though the general use-case is setting a tag of the form `x.y.z` (after checking everything is good, of course). For example:
```bash
git tag 0.6.9 && git push origin 0.6.9
```
This will automatically trigger the deployment workflow, and create a draft release with the files uploaded. One still needs to fill in the details and release it.
Furthermore, there are some deployments that are handled by maintainers of bottom that this workflow does not automatically finish. These must be manually handled.
### Chocolatey
Upon releasing on GitHub, [choco-bottom](https://github.com/ClementTsang/choco-bottom) will automatically be updated with a new PR with the correct deployment files for Chocolatey. Check the PR, merge it if it is correct, then pull locally and deploy following the instructions in the [README](https://github.com/ClementTsang/choco-bottom/blob/master/README.md). Make sure to test installation and running at least once before deploying!
If done correctly, there should be a new build on Chocolatey, which will take some time to validate.
### crates.io
Validate everything builds properly and works (you should have done this before releasing though). If good, then deploying on crates.io is as simple as:
```bash
cargo publish
```

View File

@ -0,0 +1,9 @@
# Development Environment
!!! Warning
This section is currently WIP.
!!! Warning
This section is intended for people who wish to work on/build/distribute bottom, not general users.

View File

@ -0,0 +1,9 @@
# Logging
!!! Warning
This section is currently WIP.
!!! Warning
This section is intended for people who wish to work on/build/distribute bottom, not general users.

View File

@ -0,0 +1,9 @@
# Testing
!!! Warning
This section is currently WIP.
!!! Warning
This section is intended for people who wish to work on/build/distribute bottom, not general users.

View File

@ -0,0 +1,57 @@
# Documentation
## When should documentation changes be done?
- Whenever a new feature is added, a bug is fixed, or a breaking change is made, it should be documented where
appropriate (ex: `README.md`, changelog, etc.)
- New methods of installation are always appreciated and should be documented
## What pages need documentation?
There are a few areas where documentation changes are often needed:
- The [`README.md`](https://github.com/ClementTsang/bottom/blob/main/README.md)
- The help menu inside of the application (located [here](https://github.com/ClementTsang/bottom/blob/main/src/constants.rs))
- The [extended documentation](../index.md) (what you're reading right now)
- The [`CHANGELOG.md`](https://github.com/ClementTsang/bottom/blob/main/CHANGELOG.md)
## How should I add/update documentation?
1. Fork the repository to make changes in.
2. Where you're adding documentation will probably affect what you need to do:
<h3><code>README.md</code> or <code>CHANGELOG.md</code></h3>
For changes to [`README.md`](https://github.com/ClementTsang/bottom/blob/main/README.md) and [`CHANGELOG.md`](https://github.com/ClementTsang/bottom/blob/main/CHANGELOG.md), just follow the formatting provided and use any editor.
Generally, changes to [`CHANGELOG.md`](https://github.com/ClementTsang/bottom/blob/main/CHANGELOG.md) will be handled
by a maintainer, and the contents of the file should follow the [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
format, as well as link to the relevant PR or issues.
<h3>Help menu</h3>
For changes to the help menu, try to refer to the existing code within [`src/constants.rs`](https://github.com/ClementTsang/bottom/blob/main/src/constants.rs) on how the help menu is generated.
<h3>Extended documentation</h3>
For changes to the extended documentation, you'll probably want at least Python 3.11 (older and newer versions
should be fine), [MkDocs](https://www.mkdocs.org/), [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/),
`mdx_truly_sane_lists`, and optionally [Mike](https://github.com/jimporter/mike) installed. These can help with
validating your changes locally.
You can do so through `pip` or your system's package managers. If you use `pip`, you can use venv to cleanly install
the documentation dependencies:
```bash
# Change directories to the documentation.
cd docs/
# Create venv, install the dependencies, and serve the page.
./serve.sh
```
This will serve a local version of the docs that you can open on your browser. It will update as you make changes.
3. Once you have your documentation changes done, submit it as a pull request. For more information regarding that,
refer to [Issues, Pull Requests, and Discussions](issues-and-pull-requests.md).

View File

@ -0,0 +1,35 @@
# Issues, Pull Requests, and Discussions
## Discussions
Discussions are open [in the repo](https://github.com/ClementTsang/bottom/discussions). As for the difference between discussions and issues:
- Open an issue if what you have enough information to properly fill out any details needed for a report or request.
- Open a discussion otherwise (e.g. asking a question).
## Opening an issue
### Bug reports
When filing a bug report, please use the [bug report template](https://github.com/ClementTsang/bottom/issues/new?assignees=&labels=bug&template=bug_report.md&title=) and fill in as much as you can. It is _incredibly_ difficult for a maintainer to fix a bug when it cannot be reproduced, and giving as much detail as possible generally helps to make it easier to reproduce the problem!
### Feature requests
Please use the [feature request template](https://github.com/ClementTsang/bottom/issues/new?assignees=&labels=feature&template=feature_request.md&title=) and fill it out. Remember to give details about what the feature is along with why you think this suggestion will be useful.
Also, please check whether an existing issue has covered your specific feature request!
## Pull requests
The expected workflow for a pull request is:
1. Fork the project.
2. Make your changes.
3. Make any documentation changes if necessary - if you add a new feature, it'll probably need documentation changes. See [here](./documentation.md) for tips on documentation.
4. Commit and create a pull request to merge into the `main` branch. **Please fill out the pull request template**.
5. Ask a maintainer to review your pull request.
- Check if the CI workflow passes. These consist of clippy lints, rustfmt checks, and basic tests. If you are a
first-time contributor, you may need to wait for a maintainer to let CI run.
- If changes are suggested or any comments are made, they should probably be addressed.
6. Once it looks good, it'll be merged! Note that _generally_, PRs are squashed to maintain repo cleanliness, though
feel free to ask otherwise if that isn't preferable.

View File

@ -0,0 +1,70 @@
# Packaging and Distribution
Package maintainers are always welcome and appreciated! Here's some info on how one can help with package distribution
and bottom.
## Pre-built binaries
The latest stable release can be found [here](https://github.com/ClementTsang/bottom/releases/latest), where you can
find pre-built binaries in either a `tar.gz` or `zip` format. Binaries here also include automatically generated shell
completion files for zsh, bash, fish, and Powershell, which you may want to also install during the packaging
process.
You can also find a nightly build in the [releases page](https://github.com/ClementTsang/bottom/releases), built every
day at 00:00 UTC off of the `main` branch.
In both cases, we use a combination of GitHub Actions and CirrusCI (mainly for FreeBSD and macOS M1) to create our
release binaries. [`build_releases.yml`](https://github.com/ClementTsang/bottom/blob/main/.github/workflows/build_releases.yml)
contains the GitHub Action workflow used to do both of these, if reference is needed.
## Building manually
If you want to manually build bottom rather than distributing a pre-built binary, you'll need the most recent version
of stable Rust, which you can get with:
```bash
rustup update stable
```
You'll then want to build with:
```bash
cargo build --release --locked
```
### Manpage and completion generation
bottom uses a [`build.rs`](https://github.com/ClementTsang/bottom/blob/main/build.rs) script to automatically generate
a manpage and shell completions for the following shells:
- Bash
- Zsh
- Fish
- Powershell
- Elvish
If you want to generate manpages and/or completion files, set the `BTM_GENERATE` env var to a non-empty value. For
example, run something like this:
```bash
BTM_GENERATE=true cargo build --release --locked
```
This will automatically generate completion and manpage files in `target/tmp/bottom/`. If you wish to regenerate the
files, modify/delete either these files or set `BTM_GENERATE` to some other non-empty value to retrigger the build
script.
You may override the default diretories used to generate both completion and manpage files by specifying the
`COMPLETION_DIR` and `MANPAGE_DIR` environment variables respectively.
For more information, you may want to look at either the [`build.rs`](https://github.com/ClementTsang/bottom/blob/main/build.rs)
file or the [binary build CI workflow](https://github.com/ClementTsang/bottom/blob/main/.github/workflows/build_releases.yml).
## Adding an installation source
Once you've finished your installation source, if you want to mention it in the main bottom repo, fork the repo and add
the installation method and any details to the [`README.md`](https://github.com/ClementTsang/bottom/blob/main/README.md)
file under the [Installation](https://github.com/ClementTsang/bottom#installation) section, as well as a corresponding
table of contents entry. Once that's done, open a pull request - these will usually be approved of very quickly.
You can find more info on the contribution process [here](issues-and-pull-requests.md#pull-requests).

44
docs/content/index.md Normal file
View File

@ -0,0 +1,44 @@
---
hide:
- navigation
- toc
title: Home
---
# `bottom`
A customizable cross-platform graphical process/system monitor for the terminal, supporting Linux, macOS, and Windows. Inspired by other tools like [gtop](https://github.com/aksakalli/gtop), [gotop](https://github.com/xxxserxxx/gotop), and [htop](https://github.com/htop-dev/htop).
---
This site serves as extended documentation for bottom alongside the [`README.md`](https://github.com/ClementTsang/bottom#readme).
!!! Warning
Some areas of this site are still in progress and may be missing details. Feel free to suggest/contribute changes!
## Installation
!!! Tip
It's as good idea to first check out the [Support](support/official.md) page to see if your system is officially supported!
!!! Tip
If you're facing some issues during/after installation, check out the [Troubleshooting](troubleshooting.md) page for some common problems and solutions.
To install bottom, refer to [the installation section of the `README.md`](https://github.com/ClementTsang/bottom#installation),
which contains a list of all the installation methods.
## Usage and configuration
The command to run bottom is `btm`.
You can refer to the [usage](usage/general-usage.md) pages for more details on using bottom (e.g. keybinds, some features, a general overview of what each widget does).
To configure bottom (e.g. how it behaves, how it looks, etc.) refer to the [command-line options page](configuration/command-line-options.md) for temporary settings, or [the config file page](configuration/config-file/index.md) for more permanent settings.
## Contribution
New contributors are always welcome! See the [contribution](contribution/issues-and-pull-requests.md) section for how to contribute to
bottom, whether it be filing issues, writing documentation, creating pull requests, etc.

View File

@ -0,0 +1 @@
{% extends "base.html" %}

View File

@ -0,0 +1,12 @@
:root {
--md-primary-fg-color: #268bd2;
--md-accent-fg-color: #81a1c1;
}
.md-typeset__table {
min-width: 100%;
}
.md-typeset table:not([class]) {
display: table;
}

View File

@ -0,0 +1,34 @@
# Official support
bottom _officially_ supports the following operating systems and corresponding architectures:
- macOS (`x86_64`, `aarch64`)
- Linux (`x86_64`, `i686`, `aarch64`)
- Windows (`x86_64`, `i686`)
These platforms are tested to work (with caveats, see below) and issues on these platforms will be fixed if possible.
Furthermore, binaries are expected to be built and tested using the most recent version of stable Rust - if you are manually building
bottom from the repo/source, then please try that as well.
## Known problems
### Linux
- If you're using Linux via WSL or WSL2:
- You may have issues with getting memory data.
- Temperature sensors may not be correctly reported.
- WSL2 will not match Windows' own Task Manager in terms of data.
### Windows
- The temperature widget seems to require admin privileges in some cases to get data.
- The battery widget seems to have issues with dual battery systems, like some Thinkpads.
- If you are using WSL or WSL2:
- You may have issues with getting memory data.
- Temperature sensors may not be correctly reported.
- WSL2 will not match Windows' own Task Manager in terms of data.
### macOS
- The process widget may require elevated access (ex: `sudo btm`) to gather all data in some cases. _Please note that you should be certain that you trust any software you grant root privileges._

View File

@ -0,0 +1,16 @@
# Unofficial support
Systems and architectures that aren't officially supported may still work, but there are no guarantees on how much will
work. For example, it might only compile, or it might run with bugs/broken features. Furthermore, while it will depend
on the problem at the end of the day, _issues on unsupported platforms are likely to go unfixed_.
Unofficially supported platforms known to compile/work:
- FreeBSD
- Linux on ARMv7 and ARMv6 (tested to compile in [CI](https://github.com/ClementTsang/bottom/blob/main/.github/workflows/ci.yml))
- Linux on PowerPC 64 LE (tested to compile in [CI](https://github.com/ClementTsang/bottom/blob/main/.github/workflows/ci.yml))
- Linux on an RISC-V (tested to compile in [CI](https://github.com/ClementTsang/bottom/blob/main/.github/workflows/ci.yml), tested to run on an [Allwinner D1 Nezha](https://github.com/ClementTsang/bottom/issues/564))
## Known problems
None at the moment.

View File

@ -0,0 +1,173 @@
# Troubleshooting
## The graph points look broken/strange
It's possible that your graphs don't look great out of the box due to the reliance on
[braille characters](https://en.wikipedia.org/wiki/Braille_Patterns) to draw them. This could cause problems if
your terminal's font does not support them, or your terminal is not configured properly to draw them.
<figure>
<img src="../assets/screenshots/troubleshooting/no_braille.webp" alt="Example of a terminal with no braille font."/>
<figcaption><sub>An example of missing braille fonts in Powershell</sub></figcaption>
</figure>
Some possible solutions are included below.
### Use dot markers instead
One alternative is to use the `--dot_marker` option to render graph charts using dots instead of the braille characters,
which generally seems better supported out of the box, at the expense of looking less intricate:
<figure>
<img src="../assets/screenshots/troubleshooting/dots.webp" alt="Example of running bottom with the dot marker flag"/>
<figcaption><sub>Example using <code>btm --dot_marker</code></sub></figcaption>
</figure>
### Use a font that supports braille fonts
Another (better) alternative is to install a font that supports braille fonts, and configure your terminal emulator to
use it. For example, installing something like [UBraille](https://yudit.org/download/fonts/UBraille/) or
[Iosevka](https://github.com/be5invis/Iosevka) and ensuring your terminal uses it should work.
#### Linux/macOS/Unix
Solutions mostly depend on what terminal emulator you are using, so unfortunately, I can't give specific instructions.
Here are some possible solutions:
- Uninstalling `gnu-free-fonts` if installed, as that is known to cause problems with braille markers
- Installing a font like `ttf-symbola` or `ttf-ubraille` for your terminal emulator to try and automatically fall back to
- Configuring your terminal emulator to use specific fonts for the `U+2800` to `U+28FF` range.
- For example for kitty, do `symbol_map U+2800-U+28FF Symbola`.
For some more possible solutions:
- Check out [this issue](https://github.com/cjbassi/gotop/issues/18) from gotop about the same issue.
- See ratatui's [FAQ](https://ratatui.rs/faq/#some-characters-appear-to-be-missing--look-weird) (ratatui is the underlying
library bottom uses to draw things).
#### Windows and Powershell
**Note: I would advise backing up your registry beforehand if you aren't sure what you are doing!**
Let's say you're installing [Iosevka](https://github.com/be5invis/Iosevka). The steps you can take are:
1. Install the font itself.
2. Open the registry editor, which you can do either by `Win+R` and opening `regedit`, or just opening it from the Start Menu.
3. In the registry editor, go to
```
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont
```
4. Here, add a new `String value`, and set the `Name` to a bunch of 0's (e.g. `000` - make sure the name isn't already used), then set the `Data` to the font name (e.g. `Iosevka`).
<figure>
<img src="../assets/screenshots/troubleshooting/regedit_fonts.webp" alt="Regedit menu showing how to add a new font for Command Prompt/PowerShell"/>
<figcaption><sub>The last entry is the new entry for Iosevka</sub></figcaption>
</figure>
5. Then, open the Command Prompt/PowerShell, and right-click on the top bar, and open "Properties":
<figure>
<img src="../assets/screenshots/troubleshooting/cmd_prompt_props.webp" alt="Opening the properties menu in Command Prompt/PowerShell"/>
</figure>
6. From here, go to "Font", and set the font to your new font (so in this example, Iosevka):
<figure>
<img src="../assets/screenshots/troubleshooting/cmd_prompt_font.webp" alt="Setting a new font in Command Prompt/PowerShell"/>
</figure>
### Still having issues?
If you're still having issues, feel free to open a [discussion](https://github.com/ClementTsang/bottom/discussions/new/)
question about it, and I (or others) can try to help.
## Why can't I see all my temperature sensors on Windows?
This is a [known limitation](./support/official.md#windows), some sensors may require admin privileges to get sensor data.
## Why don't I see dual batteries on Windows reported separately? (e.g. Thinkpads)
This is a [known limitation](./support/official.md#windows) which seems to be with how batteries are being detected on Windows.
## Why can't I see all my temperature sensors on WSL?
This is a [known limitation](./support/official.md#windows) with WSL. Due to how it works, hosts may not expose their
temperature sensors and therefore, temperature sensors might be missing.
## Why does WSL2 not match Task Manager?
This is a [known limitation](./support/official.md#windows) with WSL2. Due to how WSL2 works, the two might not match
up in terms of reported data.
## Why can't I see all my processes/process data on macOS?
This is a [known limitation](./support/official.md#macos), and you may have to run the program with elevated
privileges to work around it - for example:
```bash
sudo btm
```
**Please note that you should be certain that you trust any software you grant root privileges.**
There are measures taken to try to maximize the amount of information obtained without elevated privileges. For example,
one can modify the instructions found on the [htop wiki](https://github.com/hishamhm/htop/wiki/macOS:-run-without-sudo)
on how to run htop without sudo for bottom. However, **please** understand the potential security risks before doing so!
## My configuration file isn't working
If your configuration files aren't working, here are a few things to try:
### Check the formatting
It may be handy to refer to the automatically generated config files or the
[sample configuration files](https://github.com/ClementTsang/bottom/tree/main/sample_configs). The config files also
follow the [TOML](https://toml.io/en/) format.
Also make sure your config options are under the right table - for example, to set your temperature type, you must
set it under the `[flags]` table:
```toml
[flags]
temperature_type = "f"
```
Meanwhile, if you want to set a custom color scheme, it would be under the `[styles]` table:
```toml
[styles.tables.headers]
color="LightBlue"
```
To help validate your configuration files, there is [JSON Schema](https://json-schema.org/) support if your IDE/editor
supports it.
### Check the configuration file location
Make sure bottom is reading the right configuration file. By default, bottom looks for config files at these locations:
| OS | Default Config Location |
| ------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| macOS | `$HOME/Library/Application Support/bottom/bottom.toml`<br/> `~/.config/bottom/bottom.toml` <br/> `$XDG_CONFIG_HOME/bottom/bottom.toml` |
| Linux | `~/.config/bottom/bottom.toml` <br/> `$XDG_CONFIG_HOME/bottom/bottom.toml` |
| Windows | `C:\Users\<USER>\AppData\Roaming\bottom\bottom.toml` |
If you want to use a config file in another location, use the `--config` or `-C` flags along with the path to the configuration file, like so:
```bash
btm -C path_to_config
```
## My installation through snap has some widgets that are blank/show no data
Make sure bottom is given the correct permissions in order to collect data. [Snapcraft](https://snapcraft.io/docs/interface-management)
explains how to do so, but the TL;DR is:
```bash
sudo snap connect bottom:mount-observe
sudo snap connect bottom:hardware-observe
sudo snap connect bottom:system-observe
sudo snap connect bottom:process-control
```

View File

@ -0,0 +1,14 @@
# Auto-Complete
The release binaries in [the releases page](https://github.com/ClementTsang/bottom/releases) are packaged with
shell auto-completion files for Bash, Zsh, fish, Powershell, Elvish, Fig, and Nushell. To install them:
- For Bash, move `btm.bash` to `$XDG_CONFIG_HOME/bash_completion or /etc/bash_completion.d/`.
- For Zsh, move `_btm` to one of your `$fpath` directories.
- For fish, move `btm.fish` to `$HOME/.config/fish/completions/`.
- For PowerShell, add `_btm.ps1` to your PowerShell [profile](<https://docs.microsoft.com/en-us/previous-versions//bb613488(v=vs.85)>).
- For Elvish, the completion file is `btm.elv`.
- For Fig, the completion file is `btm.ts`.
- For Nushell, source `btm.nu`.
The individual auto-completion files are also included in the stable/nightly releases as `completion.tar.gz` if needed.

View File

@ -0,0 +1,36 @@
# Basic Mode
Basic mode is a special layout that removes all of the graphs and provides an interface that resembles (a very stripped-down version of) htop.
<figure>
<img src="../../assets/screenshots/basic.webp" alt="A picture of bottom's basic mode."/>
</figure>
Basic mode can be enabled either through a command line flag:
```bash
btm -b
# or
btm --basic
```
or through the config:
```toml
[flags]
basic = true
```
## Notes
In this mode, widgets that use tables (temperatures, processes, disks, and batteries) are only shown one at a time.
One can switch between these widgets either by clicking the arrow buttons or by using the general widget selection shortcuts (for example, ++ctrl+left++ or ++H++)
to switch which widget is shown.
Also note that in this mode, widget expansion and custom layouts are disabled.
## Key bindings
Basic mode follows the same key bindings as normal, barring widget expansion being disabled, and that the ++"%"++ key while selecting the memory widget toggles between total usage and percentage.

View File

@ -0,0 +1,68 @@
# General Usage
You can run bottom with:
```bash
btm
```
For help regarding the command-line options, use:
```bash
# For a simple overview of flags
btm -h
# For more details
btm --help
```
You can also see keybinds and basic usage details in bottom by pressing ++question++, which will open a help menu.
## Features
### Expansion
By default, bottom is somewhat like a dashboard - a bunch of different widgets, all showing different things, and they all cram together to fit into one terminal.
If you instead just want to see _one_ widget - maybe you want to look at a graph in more detail, for example - you can "expand" the currently selected
widget using the ++e++ key, which will hide all other widgets and make that widget take up all available terminal space.
You can leave this state by either pressing ++e++ again or pressing ++esc++.
### Widget selection
To allow for widget-specific keybindings and expansion, there is the idea of _widget selection_ in bottom, where you can focus on a specific widget to work with it.
This can be done with the mouse (just click on the widget of interest) or keyboard (ex: ++ctrl+"Direction"++, see [Key bindings](#key-bindings) for alternatives).
## Key bindings
These are global or common keyboard shortcuts for the application, which you can see in-app through the ++question++ shortcut.
Note that key bindings are generally case-sensitive.
| Binding | Action |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
| ++q++ , ++ctrl+c++ | Quit |
| ++esc++ | Close dialog windows, search, widgets, or exit expanded mode |
| ++ctrl+r++ | Reset display and any collected data |
| ++f++ | Freeze/unfreeze updating with new data |
| ++question++ | Open help menu |
| ++e++ | Toggle expanding the currently selected widget |
| ++ctrl+up++ <br/> ++shift+up++ <br/> ++K++ <br/> ++W++ | Select the widget above |
| ++ctrl+down++ <br/> ++shift+down++ <br/> ++J++ <br/> ++S++ | Select the widget below |
| ++ctrl+left++ <br/> ++shift+left++ <br/> ++H++ <br/> ++A++ | Select the widget on the left |
| ++ctrl+right++ <br/> ++shift+right++ <br/> ++L++ <br/> ++D++ | Select the widget on the right |
| ++up++ , ++k++ | Move up within a widget |
| ++down++ , ++j++ | Move down within a widget |
| ++left++ <br/> ++h++ <br/> ++alt+h++ | Move left within a widget |
| ++right++ <br/> ++l++ <br/> ++alt+l++ | Move right within a widget |
| ++g+g++ , ++home++ | Jump to the first entry |
| ++G++ , ++end++ | Jump to the last entry |
| ++page-up++ , ++page-down++ | Scroll up/down a table by a page |
| ++ctrl+u++ | Scroll up a table by half a page |
| ++ctrl+d++ | Scroll down a table by half a page |
## Mouse bindings
| Binding | Action |
| ----------- | ------------------ |
| ++lbutton++ | Selects the widget |

View File

@ -0,0 +1,40 @@
# Battery Widget
!!! Warning
The battery features are unavailable if the binary is compiled with the `battery` feature disabled or if there are no batteries on the system!
The battery widget provides information about batteries on the system.
<figure>
<img src="../../../assets/screenshots/battery.webp" alt="A picture of an expanded battery widget."/>
</figure>
The battery widget can be enabled through either the `--battery` flag, the `battery = true` option in a config file, or specifying the widget in a custom layout.
## Features
The following data is displayed for batteries:
- Charge percent
- Consumption rate
- Charging state
- Time to empty/charge, based on the current state
- Battery health percent
The battery widget also supports devices with multiple batteries, and you can switch between them using the keyboard or the mouse.
## Key bindings
Note that key bindings are generally case-sensitive.
| Binding | Action |
| ------------------------------------- | ---------------------------------------------------------- |
| ++left++ <br/> ++h++ <br/> ++alt+h++ | Moves to the battery entry to the left of the current one |
| ++right++ <br/> ++l++ <br/> ++alt+l++ | Moves to the battery entry to the right of the current one |
## Mouse bindings
| Binding | Action |
| ----------- | ----------------------- |
| ++lbutton++ | Selects a battery entry |

View File

@ -0,0 +1,55 @@
# CPU Widget
The CPU widget displays a visual representation of CPU usage over a time range.
<figure>
<img src="../../../assets/screenshots/cpu.webp" alt="A picture of an expanded CPU widget showing average CPU usage."/>
</figure>
## Features
The CPU widget is composed of two parts: the graph and the legend:
- The graph displays the usage data for the currently selected entry as a percentage
- The legend displays all available entries that can be displayed on the graph along with their last recorded use percentage (except for the "All" option)
Users can scroll through the legend using either the keyboard or mouse to select which entry to display on the graph. The "All" option shows every entry
at the same time, though this may get a bit hard to follow if you have a large number of cores/threads.
One can also adjust the displayed time range through either the keyboard or mouse, with a range of 30s to 600s.
## Key bindings
Note that key bindings are generally case-sensitive.
### Graph
| Binding | Action |
| --------- | --------------------------------------- |
| ++plus++ | Zoom in on chart (decrease time range) |
| ++minus++ | Zoom out on chart (increase time range) |
| ++equal++ | Reset zoom |
### Legend
| Binding | Action |
| ------------------ | ------------------------------------- |
| ++up++ , ++k++ | Move up within a widget |
| ++down++ , ++j++ | Move down within a widget |
| ++g+g++ , ++home++ | Jump to the first entry in the legend |
| ++G++ , ++end++ | Jump to the last entry in the legend |
## Mouse bindings
### Graph
| Binding | Action |
| ------------ | -------------------------------------------------------------- |
| ++"Scroll"++ | Scrolling up or down zooms in or out of the graph respectively |
### Legend
| Binding | Action |
| ------------ | ------------------------------------------------- |
| ++"Scroll"++ | Scroll through options to display in the graph |
| ++lbutton++ | Selects a CPU thread/average to show in the graph |

View File

@ -0,0 +1,45 @@
# Disk Widget
The disk widget provides a table of useful disk and partition information, like I/O per second and total usage.
<figure>
<img src="../../../assets/screenshots/disk.webp" alt="A picture of an expanded disk widget."/>
</figure>
## Features
The disk widget provides the following information:
- Disk name
- Disk mount location
- Amount of space used
- Amount of space left
- Total amount of space
- Percentage of space used
- Read per second
- Write per second
## Key bindings
Note that key bindings are generally case-sensitive.
| Binding | Action |
| ------------------ | ------------------------------------------------------------------- |
| ++up++ , ++k++ | Move up within a widget |
| ++down++ , ++j++ | Move down within a widget |
| ++g+g++ , ++home++ | Jump to the first entry in the table |
| ++G++ , ++end++ | Jump to the last entry in the table |
| ++d++ | Sort by disk, press again to reverse sorting order |
| ++m++ | Sort by mount, press again to reverse sorting order |
| ++u++ | Sort by amount used, press again to reverse sorting order |
| ++n++ | Sort by amount free, press again to reverse sorting order |
| ++t++ | Sort by total space available, press again to reverse sorting order |
| ++p++ | Sort by percentage used, press again to reverse sorting order |
| ++r++ | Sort by read rate, press again to reverse sorting order |
| ++w++ | Sort by write rate, press again to reverse sorting order |
## Mouse bindings
| Binding | Action |
| ----------- | ----------------------------- |
| ++lbutton++ | Selects an entry in the table |

View File

@ -0,0 +1,51 @@
# Memory Widget
The memory widget provides a visual representation of RAM and swap usage over time.
<figure>
<img src="../../../assets/screenshots/memory.webp" alt="A picture of an expanded memory widget."/>
</figure>
## Features
The legend displays the current usage in terms of percentage and actual usage in binary units (KiB, MiB, GiB, etc.).
If the total RAM or swap available is 0, then it is automatically hidden from the legend and graph.
One can also adjust the displayed time range through either the keyboard or mouse, with a range of 30s to 600s.
This widget can also be configured to display Nvidia and AMD GPU memory usage (`--disable_gpu` on Linux/Windows to disable) or cache memory usage (`--enable_cache_memory`).
## Key bindings
Note that key bindings are generally case-sensitive.
| Binding | Action |
| --------- | --------------------------------------- |
| ++plus++ | Zoom in on chart (decrease time range) |
| ++minus++ | Zoom out on chart (increase time range) |
| ++equal++ | Reset zoom |
## Mouse bindings
| Binding | Action |
| ------------ | -------------------------------------------------------------- |
| ++"Scroll"++ | Scrolling up or down zooms in or out of the graph respectively |
## How are memory values determined?
### Linux
Memory usage is calculated using the following formula based on values from `/proc/meminfo` (based on [htop's implementation](https://github.com/htop-dev/htop/blob/976c6123f41492aaf613b9d172eef1842fb7b0a3/linux/LinuxProcessList.c#L1584)):
```
MemTotal - MemFree - Buffers - (Cached + SReclaimable - Shmem)
```
You can find more info on `/proc/meminfo` and its fields [here](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/s2-proc-meminfo).
### Windows
In Windows, we calculate swap by querying `Get-Counter "\Paging File(*)\% Usage"`. This
is also what some libraries like [psutil](https://github.com/giampaolo/psutil/blob/master/psutil/arch/windows/mem.c) use. However, note there are also a few other valid methods of
representing "swap" in Windows (e.g. using `GetPerformanceInfo`), which all slightly don't
match.

View File

@ -0,0 +1,34 @@
# Network Widget
The network widget provides a visual representation of network input and output per second, as well as noting the total amount
received and transmitted.
<figure>
<img src="../../../assets/screenshots/network/network.webp" alt="A picture of an expanded network widget."/>
</figure>
## Features
The legend displays the current reads and writes per second in bits, as well as the total amount read/written.
The y-axis automatically scales based on shown read/write values, and by default, is a linear scale based on base-10 units (e.x. kilobit, gigabit, etc.).
Through [configuration](../../configuration/command-line-options.md), the read/write per second unit can be changed to bytes, while the y-axis can be changed to a
log scale and/or use base-2 units (e.x. kibibit, gibibit, etc.).
One can also adjust the displayed time range through either the keyboard or mouse, with a range of 30s to 600s.
## Key bindings
Note that key bindings are generally case-sensitive.
| Binding | Action |
| --------- | --------------------------------------- |
| ++plus++ | Zoom in on chart (decrease time range) |
| ++minus++ | Zoom out on chart (increase time range) |
| ++equal++ | Reset zoom |
## Mouse bindings
| Binding | Action |
| ------------ | -------------------------------------------------------------- |
| ++"Scroll"++ | Scrolling up or down zooms in or out of the graph respectively |

View File

@ -0,0 +1,279 @@
# Process Widget
The process widget displays a table containing information regarding a running process, along with sorting,
searching, and process control features.
<figure>
<img src="../../../assets/screenshots/process/process_default.webp" alt="A picture of an expanded process widget by default."/>
</figure>
## Features
The process widget has three main components:
- The main process table
- The search sub-widget (opened with ++ctrl+f++ or ++slash++)
- The sort menu sub-widget (opened with ++s++ or ++f6++)
By default, the main process table displays the following information for each process:
- PID
- Name of the process
- CPU use percentage (note this is averaged out per available thread by default)
- Memory use percentage
- Disk reads per second
- Disk writes per second
- Total amount read from disk
- Total amount written from disk
- User
- Process state
- Process uptime
<!-- 2-space indent here because mdx_truly_sane_lists interferes, see https://github.com/squidfunk/mkdocs-material/discussions/3763#discussioncomment-2833731 -->
!!! info indent
On Windows, the I/O counters will report _all_ reads/writes, not just disk. See
[here](https://docs.rs/sysinfo/latest/sysinfo/struct.Process.html#method.disk_usage)
for more details.
With the feature flag (`--disable_gpu` on Linux/Windows to disable) and gpu process columns enabled in the configuration:
- GPU memory use percentage
- GPU core utilization percentage
See [the processes configuration page](../../configuration/config-file/processes.md) on how to customize which columns
are shown.
### Sorting
The table can be sorted by clicking on the table headers, which will either sort the table by that column, or if already
sorting by that column, reverse the sorting order.
Alternatively, one can sort using the sort menu sub-widget, which is brought up using ++s++ or ++f6++, and can be controlled by arrow keys or the mouse.
<figure>
<img src="../../../assets/screenshots/process/process_sort_menu.webp" alt="A picture of an expanded process widget with the sort menu open."/>
</figure>
### Grouping
Pressing ++tab++ in the table will group entries with the same name together. The PID column will be replaced with the number of entries in each group, and usage
is added together when displayed.
<figure>
<img src="../../../assets/screenshots/process/process_grouped.webp" alt="A picture of grouped mode in a process widget."/>
</figure>
!!! info
Note that the process state and user columns are disabled in this mode.
!!! info
Note that if tree mode is also active, processes cannot be grouped together due to the behaviour of the two modes
somewhat clashing. This also reflects with default modes like `group_processes`.
### Process termination
Pressing ++d+d++ or ++f9++ will allow you to terminate the currently selected process/process group. On Unix-like
operating systems, you are also able to control which specific signals to send (e.g. `SIGKILL`, `SIGTERM`).
<figure>
<img src="../../../assets/screenshots/process/process_kill_linux.webp" alt="A picture of the process kill menu on Linux."/>
<figcaption><sub>The process termination menu on Linux</sub></figcaption>
</figure>
If you're on Windows, or if the `disable_advanced_kill` flag is set in the options or command-line (only available on
Linux, macOS, and FreeBSD), then a simpler termination screen with just yes or no options will be shown.
<figure>
<img src="../../../assets/screenshots/process/process_kill_simple.webp" alt="A picture of the process kill menu on Windows."/>
<figcaption><sub>The process termination menu on Windows</sub></figcaption>
</figure>
### Tree mode
Pressing ++t++ or ++f5++ in the table toggles tree mode in the process widget, displaying processes in regard to their parent-child process relationships.
<figure>
<img src="../../../assets/screenshots/process/process_tree.webp" alt="A picture of tree mode in a process widget."/>
</figure>
A process in tree mode can also be "collapsed", hiding its children and any descendants, using the either the ++minus++,
++plus++, or ++left++ keys, or clicking on an entry. It can be expanded by using the ++minus++, ++plus++, or ++right++
keys, or by clicking on the entry again.
!!! info
Note that if tree mode is active, processes cannot be grouped together due to the behaviour of the two modes
somewhat clashing. This also reflects with default modes like `group_processes`.
### Full command
You can show the full command instead of just the process name by pressing ++P++.
<figure>
<img src="../../../assets/screenshots/process/process_full.webp" alt="A picture of a process widget using full commands."/>
</figure>
### Search
Pressing ++slash++ or ++ctrl+f++ will open up the search sub-widget. By default, just typing in something will search by the process name.
<figure>
<img src="../../../assets/screenshots/process/search/search.webp" alt="A picture of searching for a process with a simple search."/>
</figure>
This search can be further enhanced by matching by case, matching the entire word, or by regex.
<figure>
<img src="../../../assets/screenshots/process/search/regex.webp" alt="A picture of searching for a process with a search condition that uses regex."/>
</figure>
We are able to also search for multiple things/conditions.
<figure>
<img src="../../../assets/screenshots/process/search/or.webp" alt="A picture of searching for a process with a search condition that uses the or operator."/>
</figure>
And if our search uses a keyword, we need to use quotation marks around the term to properly search it.
<figure>
<img src="../../../assets/screenshots/process/search/quotes.webp" alt="A picture of searching for a process with a search condition that needs quotation marks."/>
</figure>
Lastly, we can refine our search even further based on the other columns, like PID, CPU usage, etc., as well as grouping together conditions.
<figure>
<img src="../../../assets/screenshots/process/search/cpu.webp" alt="A picture of searching for a process with a search condition that uses the CPU keyword."/>
</figure>
You can also paste search queries (e.g. ++shift+insert++, ++ctrl+shift+v++).
#### Keywords
Note all keywords are case-insensitive. To search for a process/command that collides with a keyword, surround the term with quotes (e.x. `"cpu"`).
| Keywords | Example | Description |
| ------------------------------- | ------------------------------------- | -------------------------------------------------------------------------------- |
| | `btm` | Matches by process or command name; supports regex |
| `pid` | `pid=1044` | Matches by PID; supports regex |
| `cpu` <br/> `cpu%` | `cpu > 0.5` | Matches the CPU column; supports comparison operators |
| `memb` | `memb > 1000 b` | Matches the memory column in terms of bytes; supports comparison operators |
| `mem` <br/> `mem%` | `mem < 0.5` | Matches the memory column in terms of percent; supports comparison operators |
| `read` <br/> `r/s` <br/> `rps` | `read = 1 mb` | Matches the read/s column in terms of bytes; supports comparison operators |
| `write` <br/> `w/s` <br/> `wps` | `write >= 1 kb` | Matches the write/s column in terms of bytes; supports comparison operators |
| `tread` <br/> `t.read` | `tread <= 1024 gb` | Matches he total read column in terms of bytes; supports comparison operators |
| `twrite` <br/> `t.write` | `twrite > 1024 tb` | Matches the total write column in terms of bytes; supports comparison operators |
| `user` | `user=root` | Matches by user; supports regex |
| `state` | `state=running` | Matches by state; supports regex |
| `()` | `(<COND 1> AND <COND 2>) OR <COND 3>` | Group together a condition |
| `gmem` | `gmem > 1000 b` | Matches the gpu memory column in terms of bytes; supports comparison operators |
| `gmem%` | `gmem% < 0.5` | Matches the gpu memory column in terms of percent; supports comparison operators |
| `gpu%` | `gpu% > 0` | Matches the gpu usage column in terms of percent; supports comparison operators |
#### Comparison operators
| Keywords | Description |
| -------- | -------------------------------------------------------------- |
| `=` | Checks if the values are equal |
| `>` | Checks if the left value is strictly greater than the right |
| `<` | Checks if the left value is strictly less than the right |
| `>=` | Checks if the left value is greater than or equal to the right |
| `<=` | Checks if the left value is less than or equal to the right |
#### Logical operators
Note all operators are case-insensitive, and the `and` operator takes precedence over the `or` operator.
| Keywords | Usage | Description |
| ------------------------------------ | ------------------------------------------------------------------------------ | --------------------------------------------------- |
| `and` <br/> `&&` <br/> `<Space>` | `<COND 1> and <COND 2>` <br/> `<COND 1> && <COND 2>` <br/> `<COND 1> <COND 2>` | Requires both conditions to be true to match |
| `or` <br/> <code>&#124;&#124;</code> | `<COND 1> or <COND 2>` <br/> `<COND 1> &#124;&#124; <COND 2>` | Requires at least one condition to be true to match |
#### Units
All units are case-insensitive.
| Keywords | Description |
| -------- | ----------- |
| `B` | Bytes |
| `KB` | Kilobytes |
| `MB` | Megabytes |
| `GB` | Gigabytes |
| `TB` | Terabytes |
| `KiB` | Kibibytes |
| `MiB` | Mebibytes |
| `GiB` | Gibibytes |
| `TiB` | Tebibytes |
## Key bindings
Note that key bindings are generally case-sensitive.
### Process table
| Binding | Action |
| --------------------------------------------------- | ---------------------------------------------------------------- |
| ++up++ , ++k++ | Move up within a widget |
| ++down++ , ++j++ | Move down within a widget |
| ++g+g++ , ++home++ | Jump to the first entry in the table |
| ++G++ , ++end++ | Jump to the last entry in the table |
| ++d+d++ , ++f9++ | Send a kill signal to the selected process |
| ++c++ | Sort by CPU usage, press again to reverse sorting order |
| ++m++ | Sort by memory usage, press again to reverse sorting order |
| ++p++ | Sort by PID name, press again to reverse sorting order |
| ++n++ | Sort by process name, press again to reverse sorting order |
| ++tab++ | Toggle grouping processes with the same name |
| ++P++ | Toggle between showing the full command or just the process name |
| ++ctrl+f++ , ++slash++ | Toggle showing the search sub-widget |
| ++s++ , ++f6++, ++delete++ (++fn+delete++ on macOS) | Toggle showing the sort sub-widget |
| ++I++ | Invert the current sort |
| ++"%"++ | Toggle between values and percentages for memory usage |
| ++t++ , ++f5++ | Toggle tree mode |
| ++M++ | Sort by gpu memory usage, press again to reverse sorting order |
| ++C++ | Sort by gpu usage, press again to reverse sorting order |
### Sort sub-widget
| Binding | Action |
| ------------------ | ------------------------------------- |
| ++up++ , ++k++ | Move up within a widget |
| ++down++ , ++j++ | Move down within a widget |
| ++g+g++ , ++home++ | Jump to the first entry in the table |
| ++G++ , ++end++ | Jump to the last entry in the table |
| ++esc++ | Close the sort sub-widget |
| ++enter++ | Sorts the corresponding process table |
### Search sub-widget
| Binding | Action |
| ------------------------------------- | -------------------------------------------- |
| ++left++ <br/> ++h++ <br/> ++alt+h++ | Moves the cursor left |
| ++right++ <br/> ++l++ <br/> ++alt+l++ | Moves the cursor right |
| ++esc++ | Close the search widget (retains the filter) |
| ++ctrl+a++ | Skip to the start of the search query |
| ++ctrl+e++ | Skip to the end of the search query |
| ++ctrl+u++ | Clear the current search query |
| ++ctrl+w++ | Delete a word behind the cursor |
| ++ctrl+h++ | Delete the character behind the cursor |
| ++backspace++ | Delete the character behind the cursor |
| ++delete++ (++fn+delete++ on macOS) | Delete the character at the cursor |
| ++alt+c++ , ++f1++ | Toggle matching case |
| ++alt+w++ , ++f2++ | Toggle matching the entire word |
| ++alt+r++ , ++f3++ | Toggle using regex |
## Mouse bindings
### Process table
| Binding | Action |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ++"Scroll"++ | Selects a CPU thread/average to show in the graph |
| ++lbutton++ | Table header: Sorts/reverse sorts the table by the column <br/> Table entry: Selects an entry in the table, if in tree mode, collapses/expands the entry's children |
### Sort sub-widget
| Binding | Action |
| ----------- | ----------------------------- |
| ++lbutton++ | Selects an entry in the table |

Some files were not shown because too many files have changed in this diff Show More