Top Related Projects
A monitor of resources
Glances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, Mac OS and Windows operating systems.
System monitoring dashboard for terminal
A terminal based graphical activity monitor inspired by gtop and vtop
Yet another cross-platform graphical process/system monitor.
Quick Overview
s-tui is a terminal-based CPU stress and monitoring tool for Linux. It provides real-time information about CPU temperature, frequency, power, and utilization in a user-friendly, graphical interface within the terminal. s-tui also includes a stress test feature to push the CPU to its limits for testing and benchmarking purposes.
Pros
- Lightweight and easy to use, with no GUI dependencies
- Provides comprehensive CPU information in real-time
- Includes a built-in stress test feature
- Works on most Linux distributions and is easily installable via pip
Cons
- Limited to Linux systems only
- May require root privileges for some features (e.g., accessing certain sensors)
- Doesn't provide detailed information for other system components (e.g., GPU, RAM)
- Terminal-based interface may not be as intuitive for some users compared to GUI alternatives
Getting Started
To install s-tui, you can use pip:
sudo pip3 install s-tui
To run s-tui with default settings:
s-tui
For stress testing (may require root privileges):
sudo s-tui
Once running, you can navigate the interface using the arrow keys and access different features using the function keys (F1-F8) as indicated in the bottom menu.
Competitor Comparisons
A monitor of resources
Pros of btop
- More comprehensive system monitoring, including network, disk I/O, and processes
- Highly customizable interface with themes and layout options
- Cross-platform support (Linux, macOS, FreeBSD, OpenBSD)
Cons of btop
- Higher resource usage due to more features and graphical elements
- Steeper learning curve for configuration and customization
- May be overwhelming for users who only need basic CPU and temperature monitoring
Code Comparison
s-tui (Python):
def get_cpu_freq():
with open('/proc/cpuinfo', 'r') as f:
for line in f:
if line.startswith('cpu MHz'):
return float(line.split(':')[1].strip())
return None
btop (C++):
auto Cpu::get_cpufreq() -> vector<freq_info> {
vector<freq_info> freqs;
for (const auto& cpu : cpus) {
freqs.push_back({cpu.core, cpu.freq, cpu.temp});
}
return freqs;
}
Both projects aim to provide system monitoring in the terminal, but btop offers a more feature-rich and visually appealing experience at the cost of increased complexity and resource usage. s-tui focuses primarily on CPU and temperature monitoring, making it simpler and potentially more suitable for specific use cases or resource-constrained environments.
Glances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, Mac OS and Windows operating systems.
Pros of Glances
- More comprehensive system monitoring, including network, disk, and process information
- Cross-platform support (Linux, macOS, Windows)
- Web-based interface option in addition to CLI
Cons of Glances
- Higher resource usage due to more extensive monitoring
- Steeper learning curve with more complex interface and options
Code Comparison
s-tui:
def get_cpu_freq():
cpu_freq = psutil.cpu_freq()
return cpu_freq.current if cpu_freq else None
Glances:
def get_cpu_freq(self):
return self.stats.getCpuFreq()
Key Differences
- s-tui focuses primarily on CPU and sensor monitoring, while Glances offers a more comprehensive system overview
- s-tui provides a simpler, more focused interface, while Glances offers more detailed information and customization options
- s-tui is specifically designed for stress testing and monitoring, whereas Glances is a general-purpose system monitoring tool
Use Cases
- s-tui: Ideal for users focused on CPU performance and thermal monitoring, especially during stress testing
- Glances: Better suited for users needing a comprehensive system monitoring solution with cross-platform support
Both tools are valuable for system administrators and power users, with the choice depending on specific monitoring needs and preferences.
System monitoring dashboard for terminal
Pros of gtop
- More visually appealing interface with colorful graphs and charts
- Displays network and disk I/O information
- Easier to install and run with a simple npm command
Cons of gtop
- Less detailed CPU temperature information
- No stress testing capabilities
- Limited customization options for displayed metrics
Code Comparison
gtop (JavaScript):
const si = require('systeminformation');
const blessed = require('blessed');
const contrib = require('blessed-contrib');
// Main rendering loop
function render() {
// ... (rendering code)
}
s-tui (Python):
import psutil
from s_tui.sources.util import get_processor_name
class Source:
def __init__(self):
self.cpu_load = 0
self.core_temp = 0
def update(self):
self.cpu_load = psutil.cpu_percent(interval=0.0)
self.core_temp = psutil.sensors_temperatures()['coretemp'][0].current
gtop focuses on a JavaScript-based approach using the blessed library for terminal rendering, while s-tui utilizes Python with psutil for system information gathering. gtop's code is more centered around visual presentation, whereas s-tui's code emphasizes detailed system metrics collection.
A terminal based graphical activity monitor inspired by gtop and vtop
Pros of gotop
- Written in Go, potentially offering better performance and cross-platform compatibility
- More visually appealing interface with colorful graphs and charts
- Supports mouse input for easier navigation and interaction
Cons of gotop
- Lacks specific CPU temperature monitoring capabilities
- May consume more system resources due to its graphical nature
- Less focused on detailed hardware stress testing and monitoring
Code Comparison
s-tui (Python):
def get_cpu_freq():
cpu_freq = psutil.cpu_freq()
return cpu_freq.current if cpu_freq else None
gotop (Go):
func getCPUUsage() float64 {
percent, _ := cpu.Percent(time.Second, false)
return percent[0]
}
Summary
s-tui is a Python-based terminal UI for monitoring CPU temperature, frequency, power, and utilization. It's particularly useful for stress testing and hardware monitoring.
gotop is a Go-based system monitor with a more graphical interface, offering a broader overview of system resources including CPU, memory, network, and processes.
While s-tui excels in detailed CPU monitoring and stress testing, gotop provides a more comprehensive system overview with a visually appealing interface. The choice between the two depends on specific monitoring needs and personal preferences for interface design and functionality.
Yet another cross-platform graphical process/system monitor.
Pros of bottom
- More comprehensive system monitoring, including network, disk I/O, and processes
- Customizable interface with themes and layout options
- Cross-platform support (Linux, macOS, Windows)
Cons of bottom
- Steeper learning curve due to more complex interface
- Higher resource usage compared to s-tui's lightweight design
- May be overwhelming for users who only need basic CPU and temperature monitoring
Code comparison
s-tui (Python):
def get_cpu_freq():
with open('/proc/cpuinfo', 'r') as f:
for line in f:
if line.startswith('cpu MHz'):
return float(line.split(':')[1].strip())
return None
bottom (Rust):
pub fn get_cpu_freq_usage() -> Result<Vec<f64>> {
let cpu_freq_path = Path::new("/sys/devices/system/cpu/cpufreq");
let mut frequencies = Vec::new();
// ... (additional implementation)
Ok(frequencies)
}
Both projects aim to provide system monitoring through terminal interfaces, but bottom offers a more feature-rich experience at the cost of simplicity. s-tui focuses primarily on CPU and temperature monitoring, making it more lightweight and easier to use for basic needs. bottom provides a wider range of system information and customization options, but may require more time to learn and configure. The code comparison shows different approaches to retrieving CPU frequency information, with s-tui using a simpler file parsing method and bottom implementing a more robust solution.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
The Stress Terminal UI: s-tui
Stress-Terminal UI, s-tui, monitors CPU temperature, frequency, power and utilization in a graphical way from the terminal.
Screenshot
Table of Contents
- The Stress Terminal UI: s-tui
What it does
- Monitoring your CPU temperature/utilization/frequency/power
- Shows performance dips caused by thermal throttling
- Requires no X-server
- Built-in options for stressing the CPU (stress/stress-ng/FIRESTARTER)
Usage
s-tui
Simple installation
pip (x86 + ARM)
The most up to date version of s-tui is available with pip.
Install with:
pip install s-tui --user
(This usually creates an executable in ~/.local/bin/ dir. Make sure it is in your PATH)
To install as root
sudo pip install s-tui
You might need to install python-dev
first
Installation in virtualenv with pipsi:
pipsi install s-tui
More installation methods
Ubuntu (18.10 and newer)
sudo apt install s-tui
Ubuntu (18.04, 16.04)
A PPA is available but is not up to date
sudo add-apt-repository ppa:amanusk/python-s-tui
sudo apt-get update
sudo apt-get install python3-s-tui
Arch Linux, Manjaro
s-tui
is in the Arch repository:
sudo pacman -S s-tui
s-tui-git
follows the master branch, maintained by @MauroMombelli
Install it with:
yay -S s-tui-git
OpenSUSE
sudo zypper install s-tui
Fedora
s-tui
is in the Fedora repository:
sudo dnf install s-tui
Options
TUI interface:
The side bar houses the controls for the displayed graphs.
At the bottom, all sensors reading are presented in text form.
* Use the arrow keys or 'hjkl' to navigate the side bar
* Toggle between stressed and regular operation using the radio buttons in 'Modes'.
* If you wish to alternate stress defaults, you can do it in <Stress options>
* Select graphs to display in the <Graphs> menu
* Select summaries to display in the <Summaries> menu
* Use the <Reset> button to reset graphs and statistics
* If your system supports it, you can use the UTF-8 button to get a smoother graph
* Save your current configuration with the <Save Settings> button
* Press 'q' or the <Quit> button to quit
* Run `s-tui --help` to get this message and additional cli options
optional arguments:
-h, --help show this help message and exit
-d, --debug Output debug log to _s-tui.log
--debug-file DEBUG_FILE
Use a custom debug file. Default: _s-tui.log
-dr, --debug_run Run for 5 seconds and quit
-c, --csv Save stats to csv file
--csv-file CSV_FILE Use a custom CSV file. Default: s-tui_log_<TIME>.csv
-t, --terminal Display a single line of stats without tui
-j, --json Display a single line of stats in JSON format
-nm, --no-mouse Disable Mouse for TTY systems
-v, --version Display version
-tt T_THRESH, --t_thresh T_THRESH
High Temperature threshold. Default: 80
Dependencies
s-tui is great for monitoring. If you would like to stress your system, install stress. Stress options will then show up in s-tui (optional)
sudo apt-get install stress
Configuration
s-tui is a self-contained application that can run out-of-the-box and doesn't need config files to drive its core features. However, additional features like running scripts when a certain threshold has been exceeded (e.g. CPU temperature) does necessitate creating a config directory. This directory will be made in ~/.config/s-tui
by default.
Saving a configuration
Selecting <Save Settings> will save the current configuration to ~/.config/s-tui/s-tui.conf
. If you would like to restore defaults, simply remove the file.
Adding threshold scripts
s-tui gives you the ability to run arbitrary shell scripts when a certain threshold is surpassed, like your CPU temperature. You can define this custom behaviour by adding a shell file to the directory ~/.config/s-tui/hooks.d
with one of the following names, depending on what threshold you're interested in reacting to:
tempsource.sh
: triggered when the CPU temperature threshold is exceeded
If s-tui finds a script in the hooks directory with the name of a source it supports, it will run that script every 30 seconds as long as the current value of the source remains above the threshold.
Note that at the moment only CPU temperature threshold hooks are supported.
Run from source code
Start by cloning the repository
git clone https://github.com/amanusk/s-tui.git
cd s-tui
Install required dependencies as [root] or as (local user)
[sudo] pip install urwid (--user)
[sudo] pip install psutil (--user)
Install stress (optional)
sudo apt-get install stress
Run the .py file
python -m s_tui.s_tui
OPTIONAL integration of FIRESTARTER (via submodule, does not work on all systems)
FIRESTARTER is a great tool to stress your system to the extreme. If you would like, you can integrate FIRESTARTER submodule into s-tui.
To build FIRESTARTER:
git submodule init
git submodule update
cd ./FIRESTARTER
./code-generator.py
make
Once you have completed these steps, you can either:
- Install FIRESTARTER to make it accessible to s-tui, e.g make a soft-link to FIRESTARTER in /usr/local/bin.
- Run s-tui from the main project directory with
python -m s_tui.s_tui
An option to run FIRESTARTER will then be available in s-tui
Compatibility
s-tui uses psutil to probe hardware information. If your hardware is not supported, you might not see all the information.
s-tui uses urwid as a graphical engine. urwid only works with UNIX-like systems
- Power read is supported on Intel Core CPUs of the second generation and newer (Sandy Bridge) and on AMD Family 17h CPUs through the amd_energy driver.
- s-tui tested to run on Raspberry-Pi 4,3,2,1
FAQ
Q: How is this different from htop?
A: s-tui is not a processes monitor like htop. The purpose is to monitor your CPU statistics and have an option to test the system under heavy load. (Think AIDA64 stress test, not task manager).
Q: I am using the TTY with no X server and s-tui crashes on start
A: By default, s-tui is handles mouse inputs. This causes some systems to crash. Try running s-tui --no-mouse
Q: I am not seeing all the stats in the sidebar.
A: The sidebar is scrollable, you can scroll down with DOWN
or j
or scroll to the bottom with PG-DN
or G
. You might consider also decreasing the size of the font that you use in your terminal.:)
Contributing
New issues and Pull Requests are welcome :)
If you notice a bug, please report it as a new issue, using the provided template.
To open a Pull Request, please see CONTRIBUTING for more information.
Tip
If you like this work, please star it on GitHub.
BTC: 1PPhYgecwvAN7utN2EotgTfy2mmLqzF8m3
ETH: 0xc169699A825066f2F07E0b29C4082094b32A3F3e
Top Related Projects
A monitor of resources
Glances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, Mac OS and Windows operating systems.
System monitoring dashboard for terminal
A terminal based graphical activity monitor inspired by gtop and vtop
Yet another cross-platform graphical process/system monitor.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot