• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

.github/H07-Jun-2021-9974

Imgs/H03-May-2022-

bpytop-themes/H07-Jun-2021-

tests/H07-Jun-2021-190152

themes/H07-Jun-2021-1,285944

.editorconfigH A D07-Jun-202160 33

.gitignoreH A D07-Jun-2021168 2222

.travis.ymlH A D07-Jun-2021295 1918

CHANGELOG.mdH A D07-Jun-202112.7 KiB413275

CODE_OF_CONDUCT.mdH A D07-Jun-20213.3 KiB7657

CONTRIBUTING.mdH A D07-Jun-20211.1 KiB3519

LICENSEH A D07-Jun-202111.1 KiB203169

MakefileH A D07-Jun-2021489 1915

README.mdH A D07-Jun-202117.9 KiB544357

bpytop.pyH A D03-May-2022210.2 KiB5,6685,071

poetry.lockH A D07-Jun-202125.6 KiB450409

pyproject.tomlH A D07-Jun-2021641 2722

tox.iniH A D07-Jun-2021439 2823

README.md

1# ![bpytop](https://github.com/aristocratos/bpytop/raw/master/Imgs/logo.png)
2
3<a href="https://repology.org/project/bpytop/versions">
4    <img src="https://repology.org/badge/vertical-allrepos/bpytop.svg" alt="Packaging status" align="right">
5</a>
6
7![Linux](https://img.shields.io/badge/-Linux-grey?logo=linux)
8![OSX](https://img.shields.io/badge/-OSX-black?logo=apple)
9![FreeBSD](https://img.shields.io/badge/-FreeBSD-red?logo=freebsd)
10![Usage](https://img.shields.io/badge/Usage-System%20resource%20monitor-yellow)
11![Python](https://img.shields.io/badge/Python-v3.7%5E-green?logo=python)
12![bpytop_version](https://img.shields.io/github/v/tag/aristocratos/bpytop?label=version)
13[![pypi_version](https://img.shields.io/pypi/v/bpytop?label=pypi)](https://pypi.org/project/bpytop)
14[![Test Status](https://img.shields.io/github/workflow/status/aristocratos/bpytop/Testing?label=tests)](https://github.com/aristocratos/bpytop/actions?query=workflow%3Atesting)
15[![Donate](https://img.shields.io/badge/-Donate-yellow?logo=paypal)](https://paypal.me/aristocratos)
16[![Sponsor](https://img.shields.io/badge/-Sponsor-red?logo=github)](https://github.com/sponsors/aristocratos)
17[![Coffee](https://img.shields.io/badge/-Buy%20me%20a%20Coffee-grey?logo=Ko-fi)](https://ko-fi.com/aristocratos)
18
19[![bpytop](https://img.shields.io/badge/-snapcraft.io-black)](https://snapcraft.io/bpytop)[![bpytop](https://snapcraft.io//bpytop/badge.svg)](https://snapcraft.io/bpytop)
20
21## Index
22
23* [News](#news)
24* [Documents](#documents)
25* [Description](#description)
26* [Features](#features)
27* [Themes](#themes)
28* [Support and funding](#support-and-funding)
29* [Prerequisites](#prerequisites) (Read this if you are having issues!)
30* [Dependencies](#dependencies)
31* [Screenshots](#screenshots)
32* [Installation](#installation)
33* [Configurability](#configurability)
34* [License](#license)
35
36## News
37
38### C++ Version
39##### 2 May 2021
40
41I've started work on the third iteration of bashtop->bpytop.
42It's being written in C++ and will simply be called `btop`.
43
44I'm aiming at releasing a beta version around August this year and will publish the repo when I've got the core functionality and structure ready for anybody that wanna help out.
45
46This project is gonna take some time until it has complete feature parity with bpytop, since all system information gathering will likely have to be written from scratch without any external libraries.
47And will need some help in the form of code contributions to get complete support for BSD and OSX.
48
49If you got suggestions of C++ libraries that are multi-platform and are as extensive as [psutil](https://github.com/giampaolo/psutil) are for python, feel free to open up a new thread in Discussions, it could help speed up the development a lot.
50
51Will post any updates about this project here until the repo is made available.
52
53## Documents
54
55#### [CHANGELOG.md](https://github.com/aristocratos/bpytop/blob/master/CHANGELOG.md)
56
57#### [CONTRIBUTING.md](https://github.com/aristocratos/bpytop/blob/master/CONTRIBUTING.md)
58
59#### [CODE_OF_CONDUCT.md](https://github.com/aristocratos/bpytop/blob/master/CODE_OF_CONDUCT.md)
60
61## Description
62
63Resource monitor that shows usage and stats for processor, memory, disks, network and processes.
64
65Python port and continuation of [bashtop](https://github.com/aristocratos/bashtop).
66
67## Features
68
69* Easy to use, with a game inspired menu system.
70* Full mouse support, all buttons with a highlighted key is clickable and mouse scroll works in process list and menu boxes.
71* Fast and responsive UI with UP, DOWN keys process selection.
72* Function for showing detailed stats for selected process.
73* Ability to filter processes, multiple filters can be entered.
74* Easy switching between sorting options.
75* Send SIGTERM, SIGKILL, SIGINT to selected process.
76* UI menu for changing all config file options.
77* Auto scaling graph for network usage.
78* Shows message in menu if new version is available
79* Shows current read and write speeds for disks
80
81## Themes
82
83Bpytop uses the same theme files as bashtop so any theme made for bashtop will work.
84
85See [themes](https://github.com/aristocratos/bpytop/tree/master/themes) folder for available themes.
86
87The `make install` command places the default themes in `/usr/local/share/bpytop/themes`.
88If installed with `pip3` the themes will be located in a folder called `bpytop-themes` in the python3 site-packages folder.
89User created themes should be placed in `$HOME/.config/bpytop/themes`.
90
91Let me know if you want to contribute with new themes.
92
93## Support and funding
94
95You can sponsor this project through github, see [my sponsors page](https://github.com/sponsors/aristocratos) for options.
96
97Or donate through [paypal](https://paypal.me/aristocratos) or [ko-fi](https://ko-fi.com/aristocratos).
98
99Any support is greatly appreciated!
100
101## Prerequisites
102
103#### Mac Os X
104
105Will not display correctly in the standard terminal (unless truecolor is set to False)!
106Recommended alternative [iTerm2](https://www.iterm2.com/)
107
108Will also need to be run as superuser to display stats for processes not owned by user.
109
110OsX on Apple Silicon (arm) requires psutil version 5.8.0 to work and currently has no temperature monitoring.
111Upgrade psutil with `sudo pip3 install psutil --upgrade`
112
113#### Linux, Mac Os X and FreeBSD
114
115For correct display, a terminal with support for:
116
117* 24-bit truecolor ([See list of terminals with truecolor support](https://gist.github.com/XVilka/8346728))
118* 256-color terminals are supported through 24-bit to 256-color conversion when setting "truecolor" to False in the options or with "-lc/--low-color" argument.
119* Wide characters (Are sometimes problematic in web-based terminals)
120
121Also needs a UTF8 locale and a font that covers:
122
123* Unicode Block “Braille Patterns” U+2800 - U+28FF
124* Unicode Block “Geometric Shapes” U+25A0 - U+25FF
125* Unicode Block "Box Drawing" and "Block Elements" U+2500 - U+259F
126
127#### Notice (Text rendering issues)
128
129If you are having problems with the characters in the graphs not looking like they do in the screenshots,
130it's likely a problem with your systems configured fallback font not having support for braille characters.
131
132See [Terminess Powerline](https://github.com/ryanoasis/nerd-fonts/tree/master/patched-fonts/Terminus/terminus-ttf-4.40.1) for an example of a font that includes the braille symbols.
133
134See comments by @sgleizes [link](https://github.com/aristocratos/bpytop/issues/100#issuecomment-684036827) and @XenHat [link](https://github.com/aristocratos/bpytop/issues/100#issuecomment-691585587) in issue #100 for possible solutions.
135
136If text are misaligned and you are using Konsole or Yakuake, turning off "Bi-Directional text rendering" is a possible fix.
137
138Characters clipping in to each other or text/border misalignments is not bugs caused by bpytop, but most likely a fontconfig or terminal problem where the braille characters making up the graphs aren't rendered correctly.
139Look to the creators of the terminal emulator you use to fix these issues if the previous mentioned fixes don't work for you.
140
141#### Notice (SSH)
142
143Dropbear seems to not be able to set correct locale. So if accessing bpytop over ssh, OpenSSH is recommended.
144
145## Dependencies
146
147**[Python3](https://www.python.org/downloads/)** (v3.7 or later)
148
149**[psutil module](https://github.com/giampaolo/psutil)** (v5.7.0 or later)
150
151## Optionals for additional stats
152
153(Optional OSX) **[coretemp](https://github.com/hacker1024/coretemp)** (recommended), or **[osx-cpu-temp](https://github.com/lavoiesl/osx-cpu-temp)** (less accurate) needed to show CPU temperatures.
154
155## Screenshots
156
157Main UI showing details for a selected process.
158![Screenshot 1](https://github.com/aristocratos/bpytop/raw/master/Imgs/main.png)
159
160Main UI in mini mode.
161![Screenshot 2](https://github.com/aristocratos/bpytop/raw/master/Imgs/mini.png)
162
163Main menu.
164![Screenshot 3](https://github.com/aristocratos/bpytop/raw/master/Imgs/menu.png)
165
166Options menu.
167![Screenshot 4](https://github.com/aristocratos/bpytop/raw/master/Imgs/options.png)
168
169## Installation
170
171I only maintain the PyPi package, so will not take responsibility for issues caused by any other install method!
172
173### PyPi (will always have latest version)
174
175> Install or update to latest version
176``` bash
177pip3 install bpytop --upgrade
178```
179
180### Mac OsX
181
182>Install with Homebrew
183```bash
184brew install bpytop
185```
186
187>Optional coretemp (Shows temperatures for cpu cores)
188```bash
189brew install hacker1024/hacker1024/coretemp
190```
191
192>Alternatively install with MacPorts
193```bash
194port install bpytop
195```
196
197OsX on Apple Silicon (arm) requires psutil version 5.8.0 to work and currently has no temperature monitoring.
198Upgrade psutil with `sudo pip3 install psutil --upgrade`
199
200### Arch Linux
201
202Available in the Arch Linux [community] repository as `bpytop`
203
204>Installation
205
206```bash
207sudo pacman -S bpytop
208```
209
210### Debian based
211
212Available in [official Debian repository](https://tracker.debian.org/pkg/bpytop) since Debian 11
213
214>Installation
215
216```bash
217sudo apt install bpytop
218```
219
220Available for debian/ubuntu from [Azlux's repository](http://packages.azlux.fr/)
221
222### FreeBSD package
223
224Available in [FreeBSD ports](https://www.freshports.org/sysutils/bpytop/)
225
226>Install pre-built package
227
228``` bash
229sudo pkg install bpytop
230```
231
232### Fedora/CentOS 8 package
233
234[Available](https://src.fedoraproject.org/rpms/bpytop) in the Fedora and [EPEL-8 repository](https://fedoraproject.org/wiki/EPEL).
235
236>Installation
237
238``` bash
239sudo dnf install bpytop
240```
241
242### Gentoo / Calculate Linux
243
244Available from [adrien-overlay](https://github.com/aaaaadrien/adrien-overlay)
245
246>Installation
247
248``` bash
249sudo emerge -av sys-process/bpytop
250```
251
252### Mageia Cauldron (Mageia 8)
253
254Available in Mageia Cauldron and then Mageia 8 when it is released.
255
256>Installation
257
258``` bash
259sudo urpmi bpytop
260sudo dnf install bpytop
261```
262
263### MX Linux
264
265Available in the MX Test Repo as `bpytop`
266Please use MX Package Installer MX Test Repo tab to install.
267
268http://mxrepo.com/mx/testrepo/pool/test/b/bpytop/
269
270### Void Linux
271
272Available in void repo and void-packages ports tree
273
274>Installation
275
276``` bash
277sudo xbps-install bpytop
278```
279
280### Snap package
281
282(Note! There is some issues caused by the snap sandboxing)
283
284by @kz6fittycent
285
286https://github.com/kz6fittycent/bpytop-snap
287
288>Install the package
289``` bash
290sudo snap install bpytop
291```
292
293The config folder will be located in `~/snap/bpytop/current/.config/bpytop`
294
295## Manual installation
296
297#### Dependencies installation Linux
298
299>Install python3 and git with a package manager of you choice
300
301>Install psutil python module (sudo might be required)
302
303``` bash
304python3 -m pip install psutil
305```
306
307#### Dependencies installation OSX
308
309>Install homebrew if not already installed
310
311``` bash
312/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
313```
314
315>Install python3 if not already installed
316
317``` bash
318brew install python3 git
319```
320
321>Install psutil python module
322
323``` bash
324python3 -m pip install psutil
325```
326
327>Install optional dependency coretemp (recommended), or osx-cpu-temp (less accurate)
328
329``` bash
330brew install hacker1024/hacker1024/coretemp
331```
332
333``` bash
334brew install osx-cpu-temp
335```
336
337#### Dependencies installation FreeBSD
338
339>Install with pkg and pip
340
341``` bash
342sudo pkg install git python3 py37-psutil
343```
344
345#### Manual installation Linux, OSX and FreeBSD
346
347>Clone and install
348
349``` bash
350git clone https://github.com/aristocratos/bpytop.git
351cd bpytop
352sudo make install
353```
354
355>to uninstall it
356
357``` bash
358sudo make uninstall
359```
360
361## Configurability
362
363All options changeable from within UI.
364Config files stored in "$HOME/.config/bpytop" folder
365
366#### bpytop.cfg: (auto generated if not found)
367
368"/etc/bpytop.conf" will be used as default seed for config file creation if it exists. ("/usr/local/etc/bpytop.conf" on BSD)
369
370```bash
371#? Config file for bpytop v. 1.0.64
372
373#* Color theme, looks for a .theme file in "/usr/[local/]share/bpytop/themes" and "~/.config/bpytop/themes", "Default" for builtin default theme.
374#* Prefix name by a plus sign (+) for a theme located in user themes folder, i.e. color_theme="+monokai"
375color_theme="monokai"
376
377#* If the theme set background should be shown, set to False if you want terminal background transparency
378theme_background=False
379
380#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
381truecolor=True
382
383#* Manually set which boxes to show. Available values are "cpu mem net proc", separate values with whitespace.
384shown_boxes="cpu mem net proc"
385
386#* Update time in milliseconds, increases automatically if set below internal loops processing time, recommended 2000 ms or above for better sample times for graphs.
387update_ms=2000
388
389#* Processes update multiplier, sets how often the process list is updated as a multiplier of "update_ms".
390#* Set to 2 or higher to greatly decrease bpytop cpu usage. (Only integers)
391proc_update_mult=2
392
393#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu responsive",
394#* "cpu lazy" updates top process over time, "cpu responsive" updates top process directly.
395proc_sorting="cpu lazy"
396
397#* Reverse sorting order, True or False.
398proc_reversed=False
399
400#* Show processes as a tree
401proc_tree=False
402
403#* Which depth the tree view should auto collapse processes at
404tree_depth=3
405
406#* Use the cpu graph colors in the process list.
407proc_colors=True
408
409#* Use a darkening gradient in the process list.
410proc_gradient=True
411
412#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
413proc_per_core=False
414
415#* Show process memory as bytes instead of percent
416proc_mem_bytes=True
417
418#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available, see:
419#* https://psutil.readthedocs.io/en/latest/#psutil.cpu_times for attributes available on specific platforms.
420#* Select from a list of detected attributes from the options menu
421cpu_graph_upper="total"
422
423#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available, see:
424#* https://psutil.readthedocs.io/en/latest/#psutil.cpu_times for attributes available on specific platforms.
425#* Select from a list of detected attributes from the options menu
426cpu_graph_lower="total"
427
428#* Toggles if the lower CPU graph should be inverted.
429cpu_invert_lower=True
430
431#* Set to True to completely disable the lower CPU graph.
432cpu_single_graph=False
433
434#* Shows the system uptime in the CPU box.
435show_uptime=True
436
437#* Check cpu temperature, needs "osx-cpu-temp" on MacOS X.
438check_temp=True
439
440#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
441cpu_sensor=Auto
442
443#* Show temperatures for cpu cores also if check_temp is True and sensors has been found
444show_coretemp=True
445
446#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine"
447temp_scale="celsius"
448
449#* Show CPU frequency, can cause slowdowns on certain systems with some versions of psutil
450show_cpu_freq=True
451
452#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
453draw_clock="%H:%M"
454
455#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
456background_update=True
457
458#* Custom cpu model name, empty string to disable.
459custom_cpu_name=""
460
461#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with a comma ",".
462#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot, /home/user"
463disks_filter="exclude=/boot"
464
465#* Show graphs instead of meters for memory values.
466mem_graphs=True
467
468#* If swap memory should be shown in memory box.
469show_swap=True
470
471#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
472swap_disk=True
473
474#* If mem box should be split to also show disks info.
475show_disks=True
476
477#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
478only_physical=True
479
480#* Read disks list from /etc/fstab. This also disables only_physical.
481use_fstab=True
482
483#* Toggles if io stats should be shown in regular disk usage view
484show_io_stat=True
485
486#* Toggles io mode for disks, showing only big graphs for disk read/write speeds.
487io_mode=False
488
489#* Set to True to show combined read/write io graphs in io mode.
490io_graph_combined=False
491
492#* Set the top speed for the io graphs in MiB/s (10 by default), use format "device:speed" separate disks with a comma ",".
493#* Example: "/dev/sda:100, /dev/sdb:20"
494io_graph_speeds=""
495
496#* Set fixed values for network graphs, default "10M" = 10 Mibibytes, possible units "K", "M", "G", append with "bit" for bits instead of bytes, i.e "100mbit"
497net_download="100Mbit"
498net_upload="100Mbit"
499
500#* Start in network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
501net_auto=True
502
503#* Sync the scaling for download and upload to whichever currently has the highest scale
504net_sync=False
505
506#* If the network graphs color gradient should scale to bandwidth usage or auto scale, bandwidth usage is based on "net_download" and "net_upload" values
507net_color_fixed=False
508
509#* Starts with the Network Interface specified here.
510net_iface="br0"
511
512#* Show battery stats in top right if battery is present
513show_battery=True
514
515#* Show init screen at startup, the init screen is purely cosmetical
516show_init=False
517
518#* Enable check for new version from github.com/aristocratos/bpytop at start.
519update_check=True
520
521#* Set loglevel for "~/.config/bpytop/error.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
522#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
523log_level=DEBUG
524
525```
526
527#### Command line options:
528
529``` text
530usage: bpytop.py [-h] [-b BOXES] [-lc] [-v] [--debug]
531
532optional arguments:
533  -h, --help            show this help message and exit
534  -b BOXES, --boxes BOXES
535                        which boxes to show at start, example: -b "cpu mem net proc"
536  -lc, --low-color      disable truecolor, converts 24-bit colors to 256-color
537  -v, --version         show version info and exit
538  --debug               start with loglevel set to DEBUG overriding value set in config
539```
540
541## LICENSE
542
543[Apache License 2.0](https://github.com/aristocratos/bpytop/blob/master/LICENSE)
544