

Index
News
29 August 2022
Release v1.0.5
Updated LibreHardwareMonitor to latest version (0.9.4), should fix issues with Windows 11 false positive virus detection on start.
Release v1.0.1
Changed from using OpenHardwareMonitor to LibreHardwareMonitor and using an intermediary DLL to export functions directly into btop4win.
Made some fixes for detecting GPU memory on integrated GPU's and overall detection for Ryzen Mobile chips.
The 2 available packages are now:
-
btop4win:
Has no support for GPU monitoring, CPU temperature monitoring and does not have accurate CPU clock monitoring.
Does not require admin rights to run. (But it's still higly recommended to run as admin, otherwise some process information will be missing.)
-
btop4win-LHM
Has full GPU monitoring, etc. using Libre Hardware Monitor, DLL's included in the package, (source).
Requires admin rights to run.
28 August 2022
Release of btop4win v1.0.0
There are 2 packages to choose from in the releases: btop4win and btop4win-OHMR.
-
btop4win:
Has no support for GPU monitoring, CPU temperature monitoring and does not have accurate CPU clock monitoring. But it does not require admin rights to run.
-
btop4win-OHMR:
Has full GPU monitoring, etc. using a modified version of Open Hardware Monitor Report included in the package, (source).
It does however requires admin rights to run.
It currently works by messaging by a text file which isn't ideal.
Ideas and code contributions for optimizing the communication between the C# code of Open Hardware Monitor Report and the C++ code of btop4win are very welcome!
27 Mars 2022
Started working on btop4win...
More...
Nothing here...
Documents
CHANGELOG.md
CONTRIBUTING.md
CODE_OF_CONDUCT.md
Description
Resource monitor that shows usage and stats for processor, memory, disks, network, processes and services.
Windows version of btop++ which is the C++ version and continuation of bashtop and bpytop.
Needs Windows 10 version 1607 (Anniversary Update) for ANSI escape sequences to work in the standard terminal (CMD).
Will run on Windows 7 or later but requires custom terminal software that supports ANSI escape sequences.
Notes:
The default symbols for graphs are set to TTY by default for best compatibility with Windows CMD fonts, for braille and block symbols get custom fonts.
See Cascadia Code for a font that includes the braille symbols.
A recommended terminal if you're not running Windows 11 (Where it's included by default): Windows Terminal
Features
- Easy to use, with a game inspired menu system.
- Full mouse support, all buttons with a highlighted key is clickable and mouse scroll works in process list and menu boxes.
- Fast and responsive UI with UP, DOWN keys process selection.
- Function for showing detailed stats for selected process/service.
- Ability to filter processes/services.
- Easy switching between sorting options.
- Tree view of processes.
- Terminate processes.
- Start/stop/pause/continue services
- Set start-type for services
- UI menu for changing all config file options.
- Auto scaling graph for network usage.
- Shows IO activity and speeds for disks
- Battery meter
- Selectable symbols for the graphs
- Custom presets
- And more...
Themes
Btop4win++ uses the same theme files as btop++, bpytop and bashtop (some color values missing in bashtop themes) .
See themes folder for available themes.
Themes are located in the themes folder in the same location as btop4win.exe.
Let me know if you want to contribute with new themes.
Support and funding
You can sponsor this project through github, see my sponsors page for options.
Or donate through paypal or ko-fi.
Any support is greatly appreciated!
Prerequisites
For best experience, a terminal with support for:
- 24-bit truecolor
- 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" arguments.
- 16 color TTY mode will be activated if a real tty device is detected. Can be forced with "-t/--tty_on" arguments.
- Wide characters (Are sometimes problematic in web-based terminals)
Also needs a UTF8 locale and a font that covers:
Notice (Text rendering issues)
-
If you are having problems with the characters in the graphs not looking like they do in the screenshots, it's likely a problem with your font not having support for some characters used (braille characters etc.).
-
See Cascadia Code or Terminess Powerline for examples of fonts that includes the needed symbols.
Screenshots
Main UI showing details for a selected process, font: Terminess Powerline

Main UI showing details for a selected service, font Input Mono Compressed, theme OneDark

Main UI with TTY graph symbols using CMD Raster fonts

Options-menu

Help-menu

Installation
-
Make sure you have the latest MSVC Runtime Libraries installed: https://aka.ms/vs/17/release/vc_redist.x64.exe
-
Download package of choice from latest release
-
Extract the btop4win folder anywhere and run btop4win.exe.
Package managers
Scoop
btop
powershell
scoop install btop
btop-lhm
powershell
scoop install btop-lhm
Compilation
-
(Optional) For compiling with LibreHardwareMonitor support:
-
btop4win
-
- Clone the repository or download source package from latest release.
-
- Open solution with Visual Studio 2022.
-
- Choose between Debug, Release and Release-LHM configurations.
-
- (Release-LHM sets admin requirement on the binary, LHM_Enabled declaration and needs LHM-CppExport dll's and .lib in "external" folder).
-
- Build solution.
Configurability
All options changeable from within UI.
Config and log files stored in same folder as btop4win.exe
btop.conf: (auto generated if not found)
```bash
? Config file for btop4win v. 1.0.0
* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
* Themes should be placed in "themes" folder in same folder as btop4win.exe
color_theme = "Default"
* If the theme set background should be shown, set to False if you want terminal background transparency.
theme_background = True
* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
truecolor = True
* Set to true to force tty mode regardless if a real tty has been detected or not.
* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
force_tty = False
* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
* Use withespace " " as separator between different presets.
* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
vim_keys = False
* Enables monitoring of CPU temps, accurate CPU clock and GPU via Open Hardware Monitor Report.
* Needs the btop modified fork (https://github.com/aristocratos/openhardwaremonitor) installed in OHMR folder where btop is installed.
enable_ohmr = True
* Also show gpu stats in cpu and mem box. Needs Open Hardware Monitor Report enabled.
show_gpu = True
* Which GPU to display if multiple is detected.
selected_gpu = "Auto"
* Rounded corners on boxes, is ignored if TTY mode is ON.
rounded_corners = False
* Default symbols to use for graph creation, "braille", "block" or "tty".
* "braille" offers the highest resolution but might not be included in all fonts.
* "block" has half the resolution of braille but uses more common characters.
* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
graph_symbol = "tty"
Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_cpu = "default"
Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_mem = "default"
Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_net = "default"
Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_proc = "default"
* Manually set which boxes to show. Available values are "cpu mem net proc", separate values with whitespace.
shown_boxes = "cpu mem net proc"
* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
update_ms = 1500
* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
proc_sorting = "cpu lazy"
* Show services in the process box instead of processes.
proc_services = False
* Services sorting, "service" "caption" "status" "memory" "cpu lazy" "cpu direct",
* "cpu lazy" sorts top service over time (easier to follow), "cpu direct" updates top service directly.
services_sorting = "cpu lazy"
* Reverse sorting order, True or False.
proc_reversed = False
* Show processes as a tree.
proc_tree = False
* Use the cpu graph colors in the process list.
proc_colors = True
* Use a darkening gradient in the process list.
proc_gradient = True
* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
proc_per_core = False
* Show process memory as bytes instead of percent.
proc_mem_bytes = True
* Show proc box on left side of screen instead of right.
proc_left = False
* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
* Select from a list of detected attributes from the options menu.
cpu_graph_upper = "total"
* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
* Select from a list of detected attributes from the options menu.
cpu_graph_lower = "gpu"
* Toggles if the lower CPU graph should be inverted.
cpu_invert_lower = True
* Set to True to completely disable the lower CPU graph.
cpu_single_graph = False
* Show cpu box at bottom of screen instead of top.
cpu_bottom = False
* Shows the system uptime in the CPU box.
show_uptime = True
* Show cpu temperature.
check_temp = True
* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
cpu_sensor =
* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
show_coretem