В KDE3 мне было удобно видеть на панели рядом с часами циферки, отражающие температуру.
Перейдя в LXDE я начал искать подобный инструмент. Нашелся плагин для lxpanel по имени Температурный монитор. Но рано я обрадовался. Оказалось, что он не работает. Постоянно показывает NA.
Начав разбираться, в чем дело, я выяснил, что этот плагин нацелен брать данные из /proc/acpi/thermal_zone. Данный каталог у меня оказался пустым. Поискав в гугле, нашел, что эта схема не используется уже довольно долгое время. Попробовал свои линуксовые LiveCD прошлых лет (разные дистрибутивы) и убедился что везде этот каталог пуст. Как выяснилось, вместо него используется /sys/devices/platform/<имя_чипа>/ в котором находятся файлы, содержащие данные температуры, оборотов вентилятора и пр. Плагин, естественно, ничего об этом не знает. Я вздохнул, почесал репу и начал переделывать-переписывать этот плагин. Переписал. Скомпилировал. Вроде работает.
Из всей этой истории вытекает три вопроса:
1. Используется ли в Debian (на каком-нибудь железе) /proc/acpi/thermal_zone? Т.е. актуален ли плагин в исходном виде?
Если не актуален, то
2. Нужен ли исправленный плагин сообществу, т.е. кому-нибудь, кроме меня? (вопрос, прежде всего к форумчанам - пользователям LXDE).
Если нужен, то
3. Имеет ли смысл связываться с мантейнером пакета, писать баг-репорт, отсылать патч и т.д.?
Я никогда раньше этого не делал и, кроме того, это мой первый опыт кодинга на Си вообще и для Linux, в частности. Но поскольку задача оказалась несложная (это всего лишь исправления к плагину), то результат получился вполне рабочий.
Для всех, кому интересно, прилагаю архив.
Содержание архива:
thermal.c.orig - первоначальный исходник плагина
thermal.c - исправленный исходник плагина
thermal.patch - патч
thermal.so - скомпилированный модуль, располагается в /usr/lib/lxpanel/plugins/
Коротко о том, что именно я сделал.
1. Переписаны функции считывания данных о текущей и критической температуре.
2. Добавлена аналогичная функция считывания данных о максимальной температуре.
3. Поскольку каталог <имя_чипа> расположен в /sys/proc/devices/platform вместе с другими каталогами и может называться по-разному (для разных чипов), то автоматическое определение сенсоров работает неправильно.
На данный момент достойного решения я не придумал. Поэтому в диалоге настроек необходимо отключать автоматическое определение сенсоров и вручную указывать имя файла текущей температуры. Также в диалог добавлены поля для указания имен файлов максимальной и критической температуры. Это требуется для автоматической установки порогов предупреждений (см. ниже).
Имена файлов необходимо указывать полностью, например, /sys/devices/platform/it87.3328/temp1_input.
4. Изменен принцип автоматической установки порогов предупреждений (Warning1 и Warning2).
Изначально они устанавливались относительно критической температуры. Warning1 устанавливался на 10 градусов ниже критической температуры, а Warning2 на 5 градусов. Теперь Warning1 считывается из файла с максимальной температурой, а Warning2 считывается из файла с критической температурой. Сохранена возможность отключить автоматическую установку и выставить пороги вручную.
5. Исправлена ошибка, в результате которой инвертировалось состояние флажка автоматической установки порогов.
P.S. Если у матёрых кодеров - адептов С/С++ возникнет желание поматериться, назвать меня быдлокодером, говнокодером и прочими лестными прозвищами, прошу делать это в отдельной теме где-нибудь в Разговорах со ссылкой сюда. А также прошу учесть, что основная часть кода не моя, я только вносил исправления.
Да, я плохо знаю Си. Однако, плагин этот существует с 2007 года. С какого времени он не работает - не знаю, но судя по всему уже давно. За это время никто из матёрых не потрудился его переписать. Поэтому переписывать приходится тому, кому он понадобился, т.е. мне. А значит, материться ни к чему.
LXDE в Debian Squeeze (Температурный монитор (плагин для lxpanel))
Модераторы: Warderer, Модераторы разделов
-
Hephaestus
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
LXDE в Debian Squeeze
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
44616e
- Сообщения: 211
- ОС: Debian testing
Re: LXDE в Debian Squeeze
Проверил температурный апплет у себя на asus eeepc 901 - работает "искаропки", даже настроек не потребовалось. Показания похожи на правду: лежа на диване 55, на крыльце при -5 на улице упала до 37.
Система: Debian Squeeze, ядро 2.6.32-5-686.
Система: Debian Squeeze, ядро 2.6.32-5-686.
-
Hephaestus
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: LXDE в Debian Squeeze
Это тот, который в lxpanel, я правильно понял? Стало быть, работает. Хм, интересно.
А покажите вывод
Код: Выделить всё
$ls -R /proc/acpi/thermal_zone-
44616e
- Сообщения: 211
- ОС: Debian testing
Re: LXDE в Debian Squeeze
Да, апплет из lxpanel'и, все верно.
Второе - это на всякий случай, мало-ли там симлинки какие лежат...
Код: Выделить всё
dan@debian-book:~$ ls -R /proc/acpi/thermal_zone
/proc/acpi/thermal_zone:
TZ00
/proc/acpi/thermal_zone/TZ00:
cooling_mode polling_frequency state temperature trip_points
dan@debian-book:~$ ls -la /proc/acpi/thermal_zone/TZ00/
итого 0
dr-xr-xr-x 2 root root 0 Мар 4 00:17 .
dr-xr-xr-x 3 root root 0 Мар 4 00:17 ..
-rw-r--r-- 1 root root 0 Мар 4 00:17 cooling_mode
-rw-r--r-- 1 root root 0 Мар 4 00:17 polling_frequency
-r--r--r-- 1 root root 0 Мар 4 00:17 state
-r--r--r-- 1 root root 0 Мар 4 00:17 temperature
-r--r--r-- 1 root root 0 Мар 4 00:17 trip_points
dan@debian-book:~$Второе - это на всякий случай, мало-ли там симлинки какие лежат...