LINUX.ORG.RU

Ещё один системный монитор для Linux

 , , ,


1

4

В свободное время работаю над небольшим проектом FSM (github.com) (последний релиз). Это программа для отображения основных сведений о компьютере и установленной системе, независимая от конкретного DE. Информация по каждому компоненту ПК/ОС разделена на отдельные страницы. Вообще, как-то вскользь упоминал о нём здесь, но тогда всё было прям сыро и не готово.

(скриншот 1; скриншот 2; скриншот 3)

Отображает следующую информацию:

  • Процессор: название и модель, флаги, список уязвимостей, частоты;
  • Использование памяти и подкачки;
  • Список смонтированных разделов и файловых систем tmpfs и sysfs;
  • Некоторые таблицы DMI:
    • BIOS (Type 0);
    • Baseboard (Type 2);
    • Chassis (Type 3);
    • Processor (Type 4);
    • в будущем планирую добавить к отображению большее число таблиц
  • Аккумулятор ноутбука (если подключен);
  • Данные о подключенных мониторах: EDID, список поддерживаемых разрешений;
  • Список пользователей и групп;
  • Инфа об установленном дистрибутиве Linux;
  • Информация о ядре Linux;
  • Список загруженных модулей ядра;
  • Список установленных deb/rpm-пакетов;
  • Список сервисов systemd
  • Имя хоста;
  • Средняя загрузка ПК, время работы ПК;
  • Локаль, с которой запущена программа;
  • Рабочее окружение;
  • Ну и графики использования ОЗУ и ЦП, куда ж без них.

Особых планов на будущее нет, так как программой занимаюсь по большей части только для себя и в свободное время. Хотелось бы добавить сбор и отображение сведений о видео и звуке, подключенных PCI- и USB-устройствах, а также сортировку и поиск пользователей, пакетов и сервисов systemd.

Не претендую на правильность и корректность реализации, плюс понимаю, что код, особенно фронтенда, - с душком, от которого постепенно стараюсь избавиться (ровно из-за этого и не написал в раздел «Новости», так как пока не считаю эту программу зрелой для этого). Если кому-то она понадобится – буду только рад; критика, баг-репорты и новые идеи только приветствуются; по сути пишу только ради фидбека по поводу нужности всего этого дела и желаемого функционала.


Список изменений v0.5.1

  • Отказался от iced_aksel в пользу plotters для построения графиков. Новый движок значительно проще в использовании и куда демократичнее грузит проц;
  • Добавил поддержку использования gksudo для аутентификации, если не доступен polkit;
  • Небольшой рефакторинг кода.

Текущие баги:

  • На некоторых системах некорректно работает с polkit;
  • На некоторых системах не может определить частоты ЦП.

Софтина написана на Rust, для GUI использую iced. Собраны deb-пакеты для архитектур x86_64, i686, aarch64 (работа тестировалась только на x86_64). Распространяется под лицензией GNU GPLv3.



Последнее исправление: mskrasnov (всего исправлений: 6)

Особых планов на будущее нет

Это грустно, поставь себе цели и иди к ним.

В свободное время работаю над небольшим проектом FSM (последний релиз)

А то с этим предложением по смыслу - как будто решил завершить своё земное пребывание.

anonymous
()
Ответ на: комментарий от anonymous

Это грустно, поставь себе цели и иди к ним

В issues пару записей есть, это то, что хочу реализовать. А слова «особых планов нет» в контексте того, что не могу ничего обещать. Может сделаю, а может и нет :)

mskrasnov
() автор топика
Ответ на: комментарий от AlexVR

Какой текст на этих страницах можно выделить и скопировать?

В таблицах поле «Значение», копирование работает пока просто по нажатию на строку. В следующих версиях планирую добавить полноценное контекстное меню с кнопками «Скопировать значение», «Скопировать строку (таблицы)». Копирование сделал только к текущей версии, раньше его не было.

Клавиши Tab, стрелочки, пробел, Enter работаю?

Пока что нет, в iced переключение фокуса между виджетами сделать немного запарно, но в принципе возможно.

mskrasnov
() автор топика
Ответ на: комментарий от hobbit

Тыкал его где-то с год-полтора назад, но мне больше iced понравился. Он, ИМХО, как-то проще будет.

UPD. Посмотрел в репозитории примеры использования. То, что оно ещё и на Android умеет работать - однозначно плюс. Будет интересно потыкать egui в будущем.

mskrasnov
() автор топика
Последнее исправление: mskrasnov (всего исправлений: 1)
Ответ на: комментарий от Jullyfish

Без systemd должен только сообщение выдавать, что не может получить от него данные, но только на соответствующей странице. Попробуйте, если без systemd не заработает - отпишитесь.

mskrasnov
() автор топика

released this 2 days ago

Мог бы новостью оформить, скриншоты были бы ближе.

/dev/zswap показывает. А zswap?

Для примера можно посмотреть https://github.com/Smoque/zswap

Или https://github.com/hakavlad/nohang-extra/blob/master/zswap-monitor2 от лоровца hakavlad.

greenman ★★★★★
()
Последнее исправление: greenman (всего исправлений: 2)
Ответ на: комментарий от futurama

Ну, если б Hardinfo использовался для скриншотов на ЛОРе, это было бы интересно :)

Так, в принципе, для сисадминов оно будет бесполезным, ведь у них куча как предустановленного ПО, так и всяких разных панелей управления и средств мониторинга. Сойдёт для не-сисадминов, кому нужно быстро просмотреть какие-то более подробные сведения. Ну либо если кто-то хочет скриншот на ЛОР сделать :)

mskrasnov
() автор топика
Ответ на: комментарий от mskrasnov

Когда делaют скриншоты пытаются открыть разные окна для антуража и ничего умнее не придумывают как открыть hard-info и/или *top

futurama ★★★★★
()
Последнее исправление: futurama (всего исправлений: 2)
Ответ на: комментарий от Stil

выглядит так колхозно?

Чукча не дизайнер. Если у вас есть идеи о том, как можно сделать хороший дизайн, то я бы с удовольствием с ними ознакомился.

на расте

Для раста есть GTK, но я его не стал использовать, ибо (1) ниасилил, (2) GTK как внешне выглядит, как будто его делали наркоманы, так и во время попыток его использовать в Rust меня не покидало чувство, что его пишут торчки. Возможно, если я накурюсь всякой дряни, то у меня всё же получится осилить это, но не думаю, что мне это надо. Есть iced, который я и использовал, но это уже отдельный тулкит, с чего бы ему следовать стилю, принятому у GTK/Qt? Но мне всё равно кажется, что iced - это пока одна из лучших библиотек для построения GUI, что есть в Rust. Ну а придать этому делу несколько более цивильный вид - дело времени.

mskrasnov
() автор топика
Последнее исправление: mskrasnov (всего исправлений: 1)
Ответ на: комментарий от mskrasnov

Есть iced, который я и использовал, но это уже отдельный тулкит, с чего бы ему следовать стилю, принятому у GTK/Qt?

Поэтому подобные приложения выглядят чудеродно и отталкивающе-ненужно.

anonymous
()
Ответ на: комментарий от hobbit

нет интереса на Devuan попробовать?..

Попробовал, распробовал, удалил.

тогда всё было прям сыро и не готово.

При изменении размера окна оно перерисовывается полностью. Прям вспомнились конец 80-х, 90-е.

dataman ★★★★★
()
Ответ на: комментарий от dataman

При изменении размера окна оно перерисовывается полностью.

А какой бекенд использовался - wgpu или tiny-skia? Последний используется, когда не доступен wgpu, и у него раньше были проблемы как с производительностью, так и с отображением (так и определять - tiny-skia будет подтормаживать при отображении таблиц и динамично обновляемых данных).

Ну и в целом iced перерисовывает интерфейс, когда происходит какое-то событие.

mskrasnov
() автор топика
Ответ на: комментарий от mskrasnov

А какой бекенд использовался - wgpu или tiny-skia?

Понятия не имею, как посмотреть?

Ну и скриншоты:

Понятно, что есть зависимость от systemd, но определять её отсутствие можно же?

Да, и на скриншотах в ОП – «Storage», а не «Filesystems».

dataman ★★★★★
()
Последнее исправление: dataman (всего исправлений: 2)
Ответ на: комментарий от dataman

Понятия не имею, как посмотреть?

ICED_BACKEND=wgpu ferrix-app
# или:
ICED_BACKEND=tiny-skia ferrix-app

Вообще когда было написано, что «окно перерисовывается при изменении его размера» я сразу подумал, что используется tiny-skia, ведь он медленный и все артефакты GUI и прочая дрянь на некоторых системах очень хорошо видна. Разрабы tiny-skia сами раньше писали (не знаю, как сейчас), что он имеет не лучшую производительность, ну и естественно программа с ним будет тормозить.

Что делать конкретно в вашем случае - пока понятия не имею. Сегодня, может быть, успею опубликовать корректирующий выпуск v0.5.1, там сильно снизил нагрузку на ЦП. До конца этой недели буду немного занят, так что нет особо времени на эксперименты. На следующей неделе активно займусь поиском багов и повышением производительности.

Ну и скриншоты

Если бы они ещё отрывались :)

Может быть провайдер блочит, не знаю. Как назло сегодня отвалился Warp, разбираться, что же там в этом куске дерьма сломалось, я не хочу.

Понятно, что есть зависимость от systemd, но определять её отсутствие можно же?

Ну да, страницу «Системный менеджер» можно и скрывать, если запуск в системе без systemd, но сейчас это для меня не первое в приоритете.

mskrasnov
() автор топика
Последнее исправление: mskrasnov (всего исправлений: 1)
Ответ на: комментарий от mskrasnov

сразу подумал, что используется tiny-skia, ведь он медленный и все артефакты GUI и прочая дрянь на некоторых системах очень хорошо видна.

А у меня наоборот, с tiny-skia всё гладко и плавно. :)

Если бы они ещё отрывались :)

На первых двух «Data loading error!» во вкладках:

  • CPU Frequencies – нет файла или директории.
  • DMI Tables – ferrix-polkit возвратила ошибку неавторизованного пользователя. При этом запрос ввода пароля был, но я ничего не успел ввести, т. к. диалог закрылся.
dataman ★★★★★
()
Ответ на: комментарий от dataman

CPU Frequencies – нет файла или директории.

Есть ли директории /sys/devices/system/cpu/{,cpufreq} и что в них есть (и в поддиректориях cpufreq/policyX)? Системный монитор из KDE умеет отображать частоты ЦП - он отображает?

DMI Tables – ferrix-polkit возвратила ошибку неавторизованного пользователя. При этом запрос ввода пароля был, но я ничего не успел ввести, т. к. диалог закрылся.

Есть в системе gksu(do) или polkit? Я так понимаю, используете систему без systemd? Если всё нормально с ними, то FSM должен ждать завершения polkit/gksudo и только после этого пытаться что-то отобразить.

Я тут опубликовал промежуточный релиз v0.5.1, там поправил запуск ferrix-polkit. Тестировал в LDME 6 и в какой-то там версии antiX, у меня в обоих системах получение таблиц DMI работало корректно.

mskrasnov
() автор топика
Ответ на: комментарий от mskrasnov

Есть ли директории /sys/devices/system/cpu/{,cpufreq} и что в них есть

Есть:

/sys/devices/system/cpu/cpufreq/policy2/scaling_driver
/sys/devices/system/cpu/cpufreq/policy0/energy_performance_available_preferences
/sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
/sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors
/sys/devices/system/cpu/cpufreq/policy0/base_frequency
/sys/devices/system/cpu/cpufreq/policy0/scaling_governor
/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_max_freq
/sys/devices/system/cpu/cpufreq/policy0/related_cpus
/sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq
/sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed
/sys/devices/system/cpu/cpufreq/policy0/affected_cpus
/sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq
/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_transition_latency

Системный монитор из KDE умеет отображать частоты ЦП - он отображает?

Я им не пользуюсь, но ничего похожего не заметил.

Есть в системе gksu(do) или polkit?

Какой-то пакет polkitd:

polkitd: /usr/bin/pkaction
polkitd: /usr/bin/pkcheck
polkitd: /usr/bin/pkttyagent
polkitd: /usr/lib/pam.d/polkit-1
polkitd: /usr/lib/policykit-1/polkit-agent-helper-1
polkitd: /usr/lib/polkit-1/polkit-agent-helper-1
polkitd: /usr/lib/polkit-1/polkitd

Я так понимаю, используете систему без systemd?

Ага, Devuan же. :)

промежуточный релиз v0.5.1, там поправил запуск ferrix-polkit.

Нет, ничего не изменилось.

dataman ★★★★★
()
Ответ на: комментарий от dataman

/sys/devices/…

Ок, чуть поправлю тогда в либе чтение этих файлов, чтобы оно ошибку не выдавало.

polkitd

Программа требует именно pkexec (или gksudo, если не нашёл pkexec), а его в списке я не вижу, да и gksudo тоже нет, как я понял. Тогда буду думать, как это исправить, спасибо за обратную связь

mskrasnov
() автор топика
28 февраля 2026 г.

Намедни вышла корректирующая версия системного монитора FSM v0.6.0.

(скриншот 1, скриншот 2, скриншот 3)

Список изменений

  • Добавил возможность прокрутки содержимого страницы, используя клавиши «Вверх»/«Вниз»;
  • Добавил новые карточки на страницу «Обзор»: «Время работы» и «Средняя нагрузка»;
  • Изменения, связанные со страницей «Системный монитор»:
    • Очередной редизайн — вынес легенду вниз графика, теперь она его не перекрывает;
    • Добавил в легенду помимо названия элементов диаграммы последнее (актуальное) значение из графика;
    • Вернул отображение значений по оси Y: {0%, 20%, …, 100%}
    • Реализовал возможность изменения цвета элемента графика (пока что без UI; для изменения цвета определённого элемента нужно записать имя элемента и нужный цвет в конфиге программы);
    • Добавил возможность скрытия легенд графиков;
  • Изменения страницы «Процессоры»:
    • Редизайн страницы — теперь она разделена на две части (что-то подобное есть в Hardinfo и AIDA64), в верхней части выбирается поток/ядро, в нижней отображается информация о нём, раньше же информация обо всех ядрах/потоках отображалась как одна длинная портянка. Дизайн пока ещё страшный и реализован пока только для одной страницы просто ради теста (в будущем распространю такое построение интерфейса и на некоторые другие страницы);
    • Убрал отображение информации о текущей частоте ЦП. Вся эта информация есть на странице «Частоты ЦП»;
    • Теперь информация о процессорах не обновляется каждую секунду (раньше это было нужно для отображения текущей частоты ЦП);
    • Исправил отображение данных о процессоре на ARMv8-системах — она теперь отображается корректно;
  • На страницу «Системный менеджер» добавил определение длительности загрузки системы (включая длительность загрузки прошивки, загрузчика, ядра и юзерспейса);
  • Изменения, связанные со страницей «Настройки»:
    • Редизайн страницы — теперь чем-то отдалённо напоминает приложения libadwaita. Ползунки изменения времени обновления данных стали короче, менять время стало удобнее, также страница стала лучше отображаться при больших размерах окна;
    • Теперь можно менять время обновления данных и перерисовки графиков (ЦП, ОЗУ) независимо друг от друга;
    • Добавил возможность регулировки толщины линий графиков (1 или 2 пикселя);
  • Теперь FSM ищет pkexec/gksudo в каталогах, определённых в переменной окружения PATH (если она по каким-то причинам не установлена, то ищет в /usr/bin; ранее эти программы искались в захардкоженных каталогах);
  • Исправил ошибку на странице «Частоты ЦП» — теперь не выдаёт ошибку, если не может получить часть данных о частоте ЦП. Ошибку выдаёт только в случае, если в принципе нет информации о частотах;
  • На страницу «Аккумулятор» добавил строку «Оставшееся время» с расчётом времени до разрядки/зарядки;
  • Обновление ferrix-lib до версии v0.4.1:
    • Начал работать над модулем net;
    • Добавил структуру ferrix_lib::init::BootTimestamps со временем загрузки системы;
    • В модуль ram добавил структуру Zswap с информацией о zswap. Для получения некоторых данных нужны права root;
    • Может быть что-то ещё, о чём забыл.

Комбинации клавиш:

  • Up/Down — прокрутка содержимого страницы вверх/вниз;
  • Shift+Up/Down — прокрутка содержимого списка для выбора (список для выбора отображается пока что только на странице «Процессоры», это список ядер ЦП, информацию по которым нужно отобразить);
  • Ctrl+Up/Down — прокрутка содержимого сайдбара;
  • PageUp/PageDown — прокрутить до начала/конца содержимого страницы;
  • Ctrl+Tab — перейти на следующую страницу (Ctrl+Shift+Tab — на предыдущую);
  • F1 — страница «О программе»;
  • F9 — страница «Настройки»;

В следующих версиях планируется добавить сбор и отображение сведений о zswap, видео- и звуковой карте, подключенных PCI- и USB-устройствах, подключенных принтерах, а также сортировку и поиск пользователей, пакетов и сервисов systemd.


Подготовлены deb-пакеты для архитектур x86_64-unknown-linux-gnu, x86-unknown-linux-gnu и aarch64-unknown-linux-gnu.

Скачать deb-пакет последней версии можно отсюда (GitHub).

mskrasnov
() автор топика