Commit Graph

47 Commits

Author SHA1 Message Date
ClementTsang 527e73a9a4 update schema 2026-06-17 18:20:48 -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
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
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
Clement Tsang 797129156d feature: add temperature graph (#2048)
Add support for a temperature graph widget. Quick-and-dirty implementation for now, will clean this up with other widgets later (maybe after adding a disk graph widget).
2026-05-03 07:19:49 +00:00
Clement Tsang 61e56754db feature: basic scrollbar support for tables and dialogs (#2046)
Adds scrollbars to dialogs (help, process kill) and optionally tables.
2026-04-25 09:47:15 +00:00
Clement Tsang 5d09d18469 feature: support showing a decimal place for CPU usage (#2045)
* feature: support showing a decimal place for CPU usage

* update docs + changelog + schema

* fix basic cpu formatting
2026-04-21 23:27:25 -04:00
Clement Tsang ae425d09d8 feature: add new table_gap option with a drawn-line option (#2039)
This PR replaces the `hide_table_gap` option with a new `table_gap` option that controls whether a space is drawn, a line is drawn, or nothing is drawn.
2026-04-17 08:02:16 +00:00
dastarruer 8cb217cd19 feature: add a global bg_color option for widgets (#1979)
* feature: add global bg_color option

* period

* fmt

* oops, format again

* update default config + schema

* rename field + apply it to dialogs

* update dialog to just draw once

* handle basic

* add test + some small tweaks

---------

Co-authored-by: Clement Tsang <34804052+ClementTsang@users.noreply.github.com>
2026-04-11 03:59:25 -04:00
Clement Tsang 7496bbdd54 feature: configurable default sort column for temperature and disk table widgets. (#2003)
Adds support for configuring the default sort column for temperature and disk widgets via config file.
2026-03-21 17:23:16 -04:00
Clement Tsang 8da4a84ea8 other: update changelog and deployment release template (#1917)
* other: update changelog and deployment release template

* also update pr example for schemastore
2025-12-25 01:07:30 -05:00
Clement Tsang 2c623399ae uptick: 0.12.0 (#1915)
* uptick: 0.12.0

* update schema generation while we're at it

* wording

* update schema generation docs

* update docs
2025-12-24 22:52:50 -05:00
Clement Tsang d458d1958b other: fix some config code for nice/priority (#1911)
* other: fix some config code for nice/priority

* driveby change from cfg(target_family=unix) to just cfg(unix)

* remove nice as a default for now
2025-12-21 15:22:00 -05:00
Clement Tsang 469947a61e other: update nightly schema (#1905) 2025-12-20 22:55:30 +00:00
Clement Tsang 86b35bcd79 refactor: use clippy::unwrap_used (#1882)
* refactor: use clippy::unwrap_used

* fix log format use

* fix a bunch of macos ones

* oop

* allow schema script

* driveby schema bump
2025-11-22 23:26:02 -05:00
Clement Tsang e2e2bc5e22 other: run schema update (#1854) 2025-11-06 23:26:15 +08:00
Justin Martin 118bb5e061 feature: free arc (#1812)
* feature: free arc

* freebsd clippy no-default-features

* add alias to free_arc

* add get_threads to default config

* clippy

* code review: combine zfs feature and target_os build cfgs
2025-10-12 15:08:55 -04:00
Clement Tsang 6dc02ea041 uptick: 0.11.2 (#1831)
* uptick: 0.11.2

* update changelog
2025-10-07 18:31:36 -04:00
Justin Martin b07f940970 feature: hide k-threads (#1772)
* hide k-threads init

comment

* add config for hide_k_threads

arg help

* update docs for hide_k_threads

* add test_toggle_k_thread for process_table

* update help text and schema

* add hide_k_threads to sample_configs default

* add Virt column to sample default config

* update sample demo config column name for schema ci

* force_rerender_and_update from toggle_k_threads for updates when frozen

* use is_kernel for ProcessType

* remove todo

* Apply suggestions from code review

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

---------

Co-authored-by: Clement Tsang <34804052+ClementTsang@users.noreply.github.com>
2025-09-07 18:56:56 -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 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 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
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 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 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 bc3032cf10 bug: fix incorrect versions in schemas (#1635) 2024-11-29 04:30:23 +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 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
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 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 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 4b14ccb56b feature: support italic text styling (#1514)
Support italics as a text styling option.
2024-07-31 01:54:26 +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 28972a1e64 refactor: refactor styling options (#1499)
Introduce a new configuration system for styling.
2024-07-29 09:03:35 +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 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 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 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
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
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