Skip to content

mskrasnov/FSM

Repository files navigation

Ferrix System Monitor — Swiss Knife for Linux Hardware Diagnostics

A modern program for getting information about computer hardware and installed software.

License: GPL v3 Rust Iced GitHub Release Star this repo!

Other screenshots

What is FSM?

FSM is a modern system profiler. Is a program for obtaining information about computer hardware and software. It is designed to work in modern GNU/Linux systems.

Functions

  • Beautiful CPU and RAM utilization charts (System Monitor page);
  • Hardware:
    • Information about installed CPUs: name(s), model(s), topology, frequencies, vulnerabilities;
    • Filesystems: mount point and mount options, total and used size, file system type;
    • Memory: total, free, used memory, cached memory, buffers, swap(s), etc.;
    • Network interfaces list;
    • Some data from the DMI tables (BIOS, System, Baseboard, Processors) - WIP;
    • Installed notebook battery(es) - status, capacity, battery health, technology, voltage, power, energy, battery manufacturer, battery model and serial number;
    • Screens - supported modes and some data from EDID;
  • Software:
    • Information about installed GNU/Linux system: name, version, maintainer/developer, homepage URL, etc.;
    • Users and groups list;
    • Environment variables list;
    • systemd services list;
    • Installed software list (only deb and rpm packages is displayed yet);
    • Linux kernel information;
    • Kernel modules list;
    • Desktop environment name;

TODO:

  • More information about environment (name and version of DE, WM, DM);
  • Information about media: name of video- and soundcard, information about Pulseaudio/PipeWire and Xorg/Wayland;
  • I/O utilization charts;
  • Process monitor;
  • More information about network;
  • Sensors information;

Difference from analogues

Criteria Ferrix System Monitor Hardinfo2 Stacer/Nexis
Programming language Rust C C++
Program type System profiler System profiler & hardware benchmark System optimizer and monitor
GUI iced GTK3 Qt5/Qt6
License GNU GPLv3 GNU GPLv3 GNU GPLv3
Key features
  • Deep system analisys: systemd services, installed packages, DMI, EDID, etc.;
  • Beautiful CPU and RAM utilization charts;
  • Simple and clean UI;
  • Hardware benchmarks: CPU, GPU, disks, memory;
  • Hardware ratings;
  • Export data to HTML/plain text;
  • System cleaner (caches, logs, packages);
  • Real-time resource monitoring;
  • systemd-services management;
Data accuracy 🟢️ ⚪️ (incorrect battery information) ⚪️ (stacer is outdated software)
Target audience Advanced users who need detailed information about software and hardware Enthusiasts and overlockers interested in benchmarks and system comparisons Beginners and regular users who want a simple tool for configuring and cleaning up their system
Processor topology 🟢️ 🟢️ 🔴️
Processor frequencies 🟢️ ⚪️ ?
Processor vulnerabilities 🟢️ 🟢️ 🔴️
Real-time monitoring 🟢️ ⚪️ 🟢️
Hardware info panel 🟢️ 🟢️ 🟢️
Battery health 🟢️ 🔴️ 🟢️
systemd services list 🟢️ 🔴️ 🟢️
DMI Tables ⚪️ (more data than Hardinfo) ⚪️ (less data than FSM) 🔴️
  • 🟢️ - yes;
  • 🔴️ - no;
  • ⚪️ - partial;

Build & Install

git clone https://github.com/mskrasnov/Ferrix
cd Ferrix

make build

If you use Debian, perform:

make deb

And install deb-package:

sudo dpkg -i ./target/${TARGET_ARCH}/debian/ferrix-app_${VERSION}-${BUILD_NUM}_${ARCH}.deb

If you use other Linux system, perform:

make run # to run Ferrix...
# ... or
make install # to install Ferrix.
# Perform:
make uninstall # to uninstall Ferrix from your system.

Running in WSL

export XDG_SESSION_TYPE=xorg
export DISPLAY=':0'
export WAYLAND_DISPLAY=
ferrix-app

Cross compilation (Debian x86_64 glibc -> i686/AArch64 glibc)

Install the cross-compilator:

sudo dpkg --add-architecture {arm64/i686}
sudo apt update

# For AArch64:
sudo apt install gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu libc6-dev-arm64-cross
rustup target add aarch64-unknown-linux-gnu

# For i686:
sudo apt install gcc-12-i686-linux-gnu binutils-i686-linux-gnu
rustup target add i686-unknown-linux-gnu

Build Ferrix:

cargo build [--release] --target={i686/aarch64}-unknown-linux-gnu
# or:
make TARGET={i686/aarch64}-unknown-linux-gnu build

Technology stack

  • OS: Linux with glibc, dbus and systemd;
  • Programming language: Rust 1.88+ (2024 edition);
  • GUI: iced;
  • Hardware: modern PC or laptop;

❤️ Support Ferrix System Monitor

Developing Ferrix System Monitor takes time and passion. If you find it useful, please consider supporting its development:

  • Star ⭐ this repo! It helps others discover FSM;
  • Write comments, questions, bug reports, or suggestions for new functionality in issues.
  • If you are from Russia, send me a donation 💰 in Boosty. This will help me keep my enthusiasm alive, as well as pay my internet bills so that I can continue working on FSM.
  • Spread the world! Tell friends, post on forums.

License

Ferrix System Monitor is free and open-source software distributed under the GNU General Public License v3.0. See LICENSE file for details.

Sponsor this project

Contributors