Skip to content

Conversation

ClementTsang
Copy link
Owner

@ClementTsang ClementTsang commented Aug 17, 2025

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:

This PR adds process thread support for just Linux (default off, can be enabled with --get-threads). I can explore this for other operating systems later.

Examples:

With tree on:

image

Tree off:

image

Issue

If applicable, what issue does this address?

Part of #228

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)

@ClementTsang ClementTsang force-pushed the thread_support_and_highlighting branch from a444aa9 to 5207790 Compare August 17, 2025 05:12
@ClementTsang ClementTsang marked this pull request as ready for review August 17, 2025 06:10
@ClementTsang ClementTsang requested a review from Copilot August 17, 2025 06:26
Copilot

This comment was marked as outdated.

stat,
io,
cmdline,
cmdline, // cmdline is usually empty for kernel threads; could use this to determine that?
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

htop decided against this in favour of PF_KTHREAD (freebsd can use sysctl mib afaik for it)

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Noted, thanks!

@ClementTsang ClementTsang requested a review from Copilot August 17, 2025 06:49
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds support for collecting and displaying process threads on Linux platforms through a new --get-threads command line option. The feature is disabled by default and only available on Linux.

Key changes include:

  • New thread collection and display functionality for Linux processes
  • UI styling for thread entries to visually distinguish them from regular processes
  • Configuration options and command-line flags for enabling thread support

Reviewed Changes

Copilot reviewed 28 out of 29 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/collection/processes/linux/process.rs Core process parsing logic updated to collect thread information from /proc/<PID>/task
src/collection/processes/linux/mod.rs Process collection loop modified to handle threads as separate entries
src/collection/processes.rs New ProcessType enum to categorize processes vs threads
src/widgets/process_table/process_data.rs Process widget data structure updated with thread styling support
src/options/args.rs New --get-threads command line argument added
src/options/config/process.rs Configuration support for thread collection setting
src/canvas/components/data_table/data_type.rs DataToCell trait extended with cell-level styling capabilities
Multiple theme files Thread-specific text styling colors added across all themes

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@ClementTsang ClementTsang enabled auto-merge (squash) August 17, 2025 06:58
@ClementTsang ClementTsang merged commit 3ff7977 into main Aug 17, 2025
34 of 35 checks passed
@ClementTsang ClementTsang deleted the thread_support_and_highlighting branch August 17, 2025 07:07
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Oct 10, 2025
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ClementTsang/bottom](https://github.com/ClementTsang/bottom) | patch | `0.11.1` -> `0.11.2` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>ClementTsang/bottom (ClementTsang/bottom)</summary>

### [`v0.11.2`](https://github.com/ClementTsang/bottom/blob/HEAD/CHANGELOG.md#0112---2025-10-07)

[Compare Source](ClementTsang/bottom@0.11.1...0.11.2)

##### Features

- [#&#8203;1793](ClementTsang/bottom#1793): Add support for threads in Linux.
- [#&#8203;1719](ClementTsang/bottom#1719): Support ignoring all keypresses.
- [#&#8203;1772](ClementTsang/bottom#1772): Support hiding kernel threads.

##### Bug Fixes

- [#&#8203;1800](ClementTsang/bottom#1800): Fix colon at end of process name in Linux.
- [#&#8203;1804](ClementTsang/bottom#1804): Draw average CPU last again.
- [#&#8203;1811](ClementTsang/bottom#1811): Fix drawing average CPU in basic mode when dedicated row is enabled.
- [#&#8203;1817](ClementTsang/bottom#1817): Fix builds for FreeBSD on ARM/PowerPC due to `libc::c_char` data type being different.
- [#&#8203;1821](ClementTsang/bottom#1821): Use alpha version of ratatui version which fixes drawing at high resolutions.
- [#&#8203;1827](ClementTsang/bottom#1827): Fix crash for Windows where the network widget could cause a crash if the program started too quickly after boot under certain settings.

##### Other

- [#&#8203;1801](ClementTsang/bottom#1801): Build and check Windows ARM.
- [#&#8203;1816](ClementTsang/bottom#1816): Optimize username cloning on Unix.

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNDEuMCIsInVwZGF0ZWRJblZlciI6IjQxLjE0MS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants