Yet another cross-platform graphical process/system monitor.
Go to file
2020-01-17 19:59:01 -05:00
.github/ISSUE_TEMPLATE Update bug_report.md 2019-11-03 22:01:27 -05:00
assets [skip travis] Update recording. 2020-01-09 22:26:36 -05:00
src Updated documentation. 2020-01-17 19:59:01 -05:00
tests Quick error change for processes to be a bit more graceful, fix tests 2019-12-30 22:39:49 -05:00
.gitignore Added new way of calculating the table widths in order to avoid some tui-rs bug causing the lines to freak out. 2020-01-10 23:41:16 -05:00
.markdownlint.json [skip travis] Update README with compatibility chart 2020-01-02 20:31:58 -05:00
.travis.yml [skip travis] Some travis tweaking 2020-01-03 00:20:47 -05:00
Cargo.toml 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
LICENSE Initial commit 2019-08-28 19:43:30 -04:00
README.md Updated documentation. 2020-01-17 19:59:01 -05:00
rustfmt.toml Formatting changes to be a bit more strict on line length 2020-01-07 23:40:53 -05:00

bottom

Build Status crates.io link

A graphical top clone, written in Rust. Inspired by both gtop and gotop

Quick demo recording

Features

Features of bottom include:

  • CPU widget to show a visual representation of per-core usage. Average CPU display also exists.

  • Memory widget to show a visual representation of both RAM and SWAP usage.

  • Networks widget to show a log-based visual representation of network usage.

  • Sortable and searchable process widget. Searching supports regex, and you can search by PID and process name.

  • Disks widget to display usage and I/O per second.

  • Temperature widget to monitor detected sensors in your system.

The compatibility of each widget and operating systems are, as of version 0.1.0, as follows:

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

Installation

Linux

You can install the in-development version by cloning and using cargo build --release. You can get release versions using cargo install bottom, or manually building from the Releases page. Other installation methods based on distros are as follows:

Arch Linux

You can get the release versions from the AUR by installing bottom.

Windows

You can install the in-development version by cloning and using cargo build --release. You can get release versions using cargo install bottom, or manually building from the Releases page. You may need to install a font like FreeMono and use a terminal like cmder for font support to work properly, unfortunately.

macOS

macOS support will hopefully come soonTM.

Usage

Run using btm.

Command line options

  • -h, --help shows the help screen and exits.

  • -a, --avgcpu enables also showing the average CPU usage in addition to per-core CPU usage.

  • -m, --dot-marker uses a dot marker instead of the default braille marker.

  • -c, --celsius displays the temperature type in Celsius. This is the default.

  • -f, --fahrenheit displays the temperature type in Fahrenheit.

  • -k, --kelvin displays the temperature type in Kelvin.

  • -v, --version displays the version number and exits.

  • -d, --debug enables debug logging.

  • -r <RATE>, --rate <RATE> will set the refresh rate in milliseconds. Lowest it can go is 250ms, the highest it can go is 2128 - 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.

  • -l, --left_legend will move external table legends to the left side rather than the right side. Right side is default.

  • -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.

  • -g, --group will group together processes with the same name by default (equivalent to pressing Tab).

  • -s, --simple_search will default the search to simple search rather than regex search.

Keybindings

General

  • q, Ctrl-c to quit. Note if you are currently in the search widget, q will not work so you can still type.

  • Ctrl-r to reset the screen and reset all collected data.

  • f to freeze the screen from updating with new data. Press f again to unfreeze. Note that monitoring will still continue in the background.

  • Ctrl-Up or Ctrl-k, Ctrl-Down or Ctrl-j, Ctrl-Left or Ctrl-h, Ctrl-Right or Ctrl-l to navigate between widgets.

  • Esc to close a dialog window.

  • ? to get a help screen explaining the controls. Note all controls except Esc to close the dialog will be disabled while this is open.

Scrollable Tables

  • Up or k and Down or j scrolls through the list if the widget 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.

  • Ctrl-f or / to open the search widget.

Search Widget

  • Ctrl-p or Ctrl-n to switch between searching for PID and name respectively.

  • Ctrl-s to toggle between a simple search and a regex search.

  • Ctrl-a and Ctrl-e to jump to the start and end of the search bar respectively.

  • Esc or Ctrl-f to close.

Note that q is disabled while in the search widget.

Mouse actions

  • Scrolling with the mouse will scroll through the currently selected list.

Thanks, kudos, and all the like