2534 Commits

Author SHA1 Message Date
Clement Tsang bd7cfe4b39 ci: fix choco packaging (#2111) 0.14.2 2026-06-27 18:25:59 -04:00
Clement Tsang a0e2de6333 uptick: 0.14.2 (#2110) 2026-06-27 21:56:39 +00:00
Clement Tsang 40254c24e0 other: fix schema crate interfering with installs (#2109)
This change should fix the issue around `cargo install` being confused by the schema generation binary by just moving it entirely into a separate tool "crate".
2026-06-27 17:44:44 -04:00
Clement Tsang f37e36a847 deps: bump unicode-ellipsis 0.5.0 and unicode-segmentation 1.13.3 (#2107)
Bumping these two together. Main change is https://github.com/unicode-rs/unicode-segmentation/pull/172; `unicode-ellipsis` just also bumps `unicode-segmentation` (https://github.com/ClementTsang/unicode-ellipsis/blob/main/CHANGELOG.md#050).
2026-06-26 04:43:37 +00:00
Clement Tsang e1baa05551 deps: bump itertools to 0.15.0 (#2106)
Changelog: https://github.com/rust-itertools/itertools/blob/master/CHANGELOG.md#0150
2026-06-26 04:29:31 +00:00
Clement Tsang f9cc03d637 deps: bump starship-battery to 0.11.0 (#2105)
Changelog: https://github.com/starship/rust-battery/blob/main/CHANGELOG.md#0110-2026-04-03
2026-06-25 08:19:26 +00:00
Clement Tsang fb2b364f91 deps: bump nvml-wrapper to 0.12.1 and rustc-hash to 2.1.2 (#2104)
Bumps nvml-wrapper to 0.12.1 and rustc-hash to 2.1.2.
2026-06-24 04:53:06 +00:00
Clement Tsang ea24ae6637 deps: bump sysinfo to 0.39.5 (#2103) 2026-06-23 05:22:09 +00:00
Clement Tsang b3694fc3f4 other: mention memory/network alias in deprecation warnings (#2102) 0.14.1 2026-06-22 02:25:54 -04:00
Clement Tsang 9332d46b40 uptick: 0.14.1 (#2101) 2026-06-21 02:24:55 -04:00
Clement Tsang 0c70f84590 other: add funding (#2100) 2026-06-21 00:49:26 -04:00
Clement Tsang 1d71e2966f docs: update unofficial support list for NetBSD (#2099) 2026-06-21 00:47:07 -04:00
Clement Tsang e19480591d deps: bump ratatui to 0.30.2 and ratatui-core to 0.1.2 (#2098) 2026-06-20 22:26:40 +00:00
Clement Tsang c9e47fd764 docs: update changelog (#2097) 2026-06-20 17:19:42 -04:00
Gergő Gutyina 378dce78c1 docs: memory.legend_position -> memory_graph.legend_position (#2096) 2026-06-20 15:04:17 -04:00
Clement Tsang ed9ffbc865 uptick: 0.14.0 (#2094)
Uptick to prepare to release 0.14.0.
0.14.0
2026-06-20 09:03:19 +00:00
Clement Tsang 5fde90fc3f bug: fix memory collection using cgroup v1 sentinel max as total (#2093)
Fixes a bug with cgroups v1, where the "total" if there isn't a limit set may be some crazy high number which would be interpreted as many terabytes large. This is obviously incorrect, so we should not use that as the total, and instead, use the min of the actual total and the cgroups value (so if a lower cgroup v1 value is set, we use that instead).
2026-06-20 04:51:54 -04:00
Clement Tsang e13911d749 docs: update changelog with #2055 (#2091) 2026-06-20 02:44:08 -04:00
Justin Martin 3542c0bc49 feature: FreeBSD add ufs disk io counters (#2055)
This PR adds ufs disk io counters on freebsd by using sysinfo. This PR also updates the Cargo.toml to use the dep syntax for the unused feature flags starship-battery and nvml-wrapper.
2026-06-20 02:39:47 -04:00
Clement Tsang 382dfdb80c other: bump min version to 1.95.0 (#2052)
Bumps the minimum version set to 1.95.0. This should give us a couple of neat new features to work with.
2026-06-20 06:16:51 +00:00
Clement Tsang 79d33f22c2 ci: update upload-artifact to v6.0.0 (#2090) 2026-06-20 02:01:39 -04:00
Clement Tsang 74a975851d uptick: prep 0.13.0 update (#2089) 0.13.0 2026-06-20 00:43:43 -04:00
Clement Tsang ddc169c6d0 feature: add option to track unmounted disks on Linux (#2088)
This PR adds the option to additionally scan unmounted disk partitions. This currently only works on Linux.
2026-06-20 04:19:32 +00:00
Clement Tsang 7916c918fd docs: update contribution documentation (#2087) 2026-06-18 03:53:40 -04:00
Clement Tsang 1ffde3a6f3 docs: Update README feature links (#2085)
Seems like I forgot to update these when updating the docs in general.
2026-06-17 00:51:08 -04:00
Clement Tsang fd611ba641 uptick: 0.13.0 (#2080) 2026-06-11 03:01:06 -04:00
Clement Tsang fca070ed08 feature: add disk I/O time series chart (#2073)
This PR adds a disk I/O (read and write rate) graph.
2026-05-30 00:43:20 -04:00
Clement Tsang f916a87f87 ci: bump cargo version in CI to 1.96.0 (#2079) 2026-05-30 00:42:01 -04:00
allcontributors[bot] 7d9b7101e6 docs: add puneetdixit200 as a contributor for code (#2076)
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2026-05-23 23:13:23 -04:00
Puneet Dixit 799bf2193b other: treat uppercase Q as quit shortcut (#2074) 2026-05-23 23:12:59 -04:00
Clement Tsang cd225004fc ci: bump cargo-llvm-cov to 0.8.6 (#2075) 2026-05-23 01:32:36 -04:00
Clement Tsang e406ee8347 other: add explicit short-gpu-names option (#2072)
This PR adds the option to opt in to using the short GPU names setting. Also fix a test and some docs.
2026-05-20 06:11:47 +00:00
allcontributors[bot] 8ef725637a docs: add gepbird as a contributor for code (#2071)
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2026-05-19 23:45:28 -04:00
Gergő Gutyina 6cf578d4c7 feat: use short "GPU" name in memory widget if there's only one (#1791) 2026-05-19 23:43:25 -04:00
Clement Tsang 8cd50b2a4a bug: fix bug causing deprecated setting warnings even if commented out (#2070)
Comment out flags header in default config file + fix bug causing deprecated warnings if `[flags]` was uncommented even when the fields themselves were commented out.
2026-05-20 03:15:44 +00:00
Clement Tsang 6daf7ebd3f bug: fix issue with parsing quoted delimiters in process search (#2069)
Noticed this when trying to parse something with `<` and `>` in the name, even when quoted. The fix is to just check for quotes when delimiting.
2026-05-19 09:44:02 +00:00
Clement Tsang acb0ddfa53 docs: update wording for auto-completion (#2068) 2026-05-19 02:37:49 -04:00
Clement Tsang 6aabb589b8 docs: update changelog (#2067) 2026-05-18 03:39:28 -04:00
Clement Tsang a629056da9 other: support cgroups for CPU usage% calculations (#2066)
This change makes it so we consider cgroup settings (namely, number of allowed CPUs) when considering average CPU usage/process CPU usage.
2026-05-18 07:36:53 +00:00
Clement Tsang a0c96cfd6e other: clean up config file migrations (#2065)
Cleaning up a bunch of config file migration work.
2026-05-16 01:49:33 -04:00
Clement Tsang 65acf5e49e other: move cpu and memory settings over (#2064) 2026-05-15 20:00:44 -04:00
Clement Tsang 899914591e other: migrate over process config fields to [processes] (#2063)
Migrate over process config fields from the general `[flags]` to `[processes]`. Similar to #2062, this only deprecates them at the moment.
2026-05-13 03:14:19 -04:00
Clement Tsang edc295e3ed other: partial migration of network/memory config options from flags (#2062)
This change moves some options to a more appropriate section for the config file. This only deprecates the old options for now, so they're still valid, but we will remove them later (maybe after the next stable release, to give warning).

One thing I want to do for the legend position options is maybe expand it, and now is the best time to do so, but for now I'm just copying it over verbatim.

The deprecated options will also emit a warning to stderr.

This PR also contains a driveby to alias `[network]` to `[network_graph]`.
2026-05-12 04:59:59 -04:00
Clement Tsang 859ec27a05 feature: take cgroups into account for memory usage (#2061)
This PR adds support for taking cgroup usage/total into account when calculating memory and swap usage.
2026-05-10 07:40:18 +00:00
Adarsh Das 0b783a0176 feature: add search in help dialog (#1953)
This PR adds fuzzy search to the help dialog spawned by ? shortcut.

---

Co-authored-by: ClementTsang <dev@cjhtsang.ca>
2026-05-09 22:26:58 -04:00
Clement Tsang 55d5402603 refactor: small time series graph refactor (#2060)
Just a quick refactor.
2026-05-09 07:30:34 +00:00
Clement Tsang 2c7c6c25be refactor: group together time series graph component logic (#2059)
This refactor unifies the draw and state logic for the time series graph
"components" - things that we build bottom widgets out of. In this case,
it's just the time series graphs, which things like the temperature graph,
network graph, memory usage graph, and cpu graph use.

This is a pretty big refactor in terms of things moved around, but
functionality-wise there is no change.
2026-05-08 02:40:43 -04:00
Clement Tsang d08036f69a refactor: refactor some fields and code to use "colour" spelling (#2058)
<!-- Please use this template (unless you have a very good reason not
to). PRs that do not use the template may be closed. -->

## Description

_A description of the change, what it does, and why it was made. If
relevant (e.g. UI changes), **please also provide
screenshots/recordings**:_

Rename a bunch of code/struct field names to use "colour". Note this
should have no functional change to config settings as I was already
aliasing "colour" for "color" settings, this just flips it internally.

As for why, I'm Canadian, I grew up spelling it this way, sorry.

## Issue

_If applicable, what issue does this address?_

Closes: #<issue-number>

## Testing

_If relevant, please state how this was tested (including steps):_

_If this change affects the program, please also indicate which
platforms were tested:_

- [ ] _Windows_
- [ ] _macOS (specify version below)_
- [x] _Linux (specify distro below)_
- [ ] _Other (specify below)_

## Checklist

_Ensure **all** of these are met:_

- [x] _If this PR adds or changes a dependency, please justify this in
the description_
- [x] _If this is a code change, areas your change affects have been
linted using (`cargo fmt`)_
- [x] _If this is a code change, your changes pass `cargo clippy --all
-- -D warnings`_
- [x] _If this is a code change, new tests were added if relevant_
- [x] _If this is a code change, your changes pass `cargo test`_
- [x] _The change has been tested to work (see above) and doesn't appear
to break other things_
- [x] _Documentation has been updated if needed (`README.md`, help menu,
docs, configs, etc.)_
- [x] _There are no merge conflicts_
- [x] _You have reviewed your changes first_
- [x] _The pull request passes the provided CI pipeline_

## Other

_Anything else that maintainers should know about this PR:_
2026-05-08 01:34:02 -04:00
allcontributors[bot] abad5b6f1e docs: add ChrisJr404 as a contributor for code (#2057)
Adds @ChrisJr404 as a contributor for code.

This was requested by ClementTsang [in this
comment](https://github.com/ClementTsang/bottom/pull/2053#issuecomment-4403347027)

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2026-05-08 00:31:23 -04:00
ChrisJr404 1888dbb270 feature: configurable default sort column for the process widget (#2053)
## Description

You can now tell bottom which column the process widget should be sorted
by at startup, instead of always falling back to CPU%.

It's settable in two places: a `default_sort` field under `[processes]`
in the config file, and a `--process_default_sort` CLI flag. The flag
accepts the same column-name aliases that already work in
`[processes].columns` (e.g. `cpu%`, `mem`, `pid`, `name`, `read`,
`t.write`, etc.), and the CLI flag wins over the config setting.

```toml
[processes]
default_sort = "mem"
```

```
btm --process_default_sort mem
```

This piggybacks on the same wiring that #2003 added for the disk and
temperature widgets, just routed through the existing `ProcTableConfig`
so the widget initializer can pick a non-default sort index without
touching any of the runtime sort code.

A few small things worth flagging:

- If the configured column is not actually present in the user's
`columns` list, the widget falls back to the existing default behaviour
(CPU% in normal/grouped mode, PID in tree mode) instead of silently
snapping to column 0. That keeps misconfiguration predictable.
- The deserializer for `ProcColumn` was refactored to share its parsing
with the CLI's value parser, so config-file and CLI accept the exact
same aliases. The set of accepted strings is unchanged from before.

I checked the `# columns =` workaround floating around in #810 and on
Stack Overflow; it changes layout but not the sort key, so it doesn't
actually solve the original ask.

## Issue

Closes: #810

## Testing

_If this change affects the program, please also indicate which
platforms were tested:_

- [ ] _Windows_
- [ ] _macOS (specify version below)_
- [x] _Linux (Kali, kernel 6.19)_
- [ ] _Other (specify below)_

Added unit tests for `ProcWidgetState::new` covering the happy path
(sort index actually lands on the configured column) and the fallback
path (configured column not in the column list). Also added valid +
invalid config integration tests under `tests/valid_configs/` and
`tests/invalid_configs/`, matching the pattern used for the disk/temp
default-sort tests.

`cargo test`, `cargo clippy --all -- -D warnings`, and `cargo fmt
--check` are all clean.

Manual smoke test: ran `btm --process_default_sort=mem` and `btm
--process_default_sort=garbage`. The first starts the widget sorted by
Mem%, the second exits early with `'garbage' is not a valid process
column for --process_default_sort` from the args layer. Also ran `btm -C
tests/valid_configs/proc_default_sort.toml` to confirm the config-file
path works the same way.

## Checklist

_Ensure **all** of these are met:_

- [x] _If this PR adds or changes a dependency, please justify this in
the description_ (no new deps)
- [x] _If this is a code change, areas your change affects have been
linted using (`cargo fmt`)_
- [x] _If this is a code change, your changes pass `cargo clippy --all
-- -D warnings`_
- [x] _If this is a code change, new tests were added if relevant_
- [x] _If this is a code change, your changes pass `cargo test`_
- [x] _The change has been tested to work (see above) and doesn't appear
to break other things_
- [x] _Documentation has been updated if needed (`README.md`, help menu,
docs, configs, etc.)_
- [x] _There are no merge conflicts_
- [x] _You have reviewed your changes first_
- [x] _The pull request passes the provided CI pipeline_

## Other

The schema under `schema/nightly/bottom.json` was regenerated via `cargo
run --features generate_schema --bin schema`; the only diff is the new
`default_sort` entry on `ProcessesConfig`, mirroring what's already
there on `DiskConfig` and `TemperatureConfig`.

---------

Co-authored-by: ClementTsang <dev@cjhtsang.ca>
2026-05-08 00:31:08 -04:00