виджет температуры процессора в awesome wm

Я недавно начал использовать awesome wm версии 4.2, и она мне очень нравится; значительно улучшил мой рабочий процесс. Я пробовал некоторые темы, такие как подражатели и другие, но они слишком причудливы для меня. Мне нравится конфигурация по умолчанию, и я читал здесь: https://awesomewm.org/apidoc/index.html а также файлы rc.lua и theme.lua от подражателей и других, и некоторые из них реализованы; привязки клавиш, манипулирование раскладкой, запуск программ. Я хотел создать виджет, показывающий температуру процессора, и я сделал это, следуя инструкциям отсюда https://awesomewm.org/apidoc/classes/awful.widget.watch.html вот так:

wibox.widget.textbox('  |  '),
awful.widget.watch(
  'bash -c "cat/sys/class/hwmon/hwmon0/device/temp1_input"', 15),
wibox.widget.textbox('  |  '),
awful.widget.watch(
  'bash -c "cat /sys/class/hwmon/hwmon0/device/temp3_input"', 15),

Это работает, но показывает большие числа, т.е. 43000 вместо 43. Как я могу это изменить? и, если возможно, 43°C.


person Moltke    schedule 08.09.2018    source источник


Ответы (1)


Если вы получили правильное число и просто хотите разделить его на 1000, вы можете использовать необязательный обратный вызов:

awful.widget.watch('bash -c "cat /sys/class/hwmon/hwmon0/device/temp1_input"', 15, 
  function(widget, s) widget:set_text(tonumber(s)/1000) end)
person Paul Kulchenko    schedule 09.09.2018
comment
Спасибо за ваш ответ. Я попробовал ваше предложение, но тогда значения не отображаются. Проверьте здесь: imgur.com/FSvnzyY - person Moltke; 09.09.2018
comment
похоже, что обратный вызов принимает два параметра вместо одного, и между cat и именем файла отсутствовал пробел, поэтому я обновил пример, чтобы исправить оба. Если это все еще не работает, покажите содержимое файла temp1_input. - person Paul Kulchenko; 09.09.2018
comment
Тот же результат; значения температуры не отображаются. Содержимое temp1_input - это число, прямо сейчас 43000, и если закрыть и снова открыть, оно будет еще больше или меньше. Спасибо за Ваш ответ. - person Moltke; 09.09.2018
comment
Хорошо, обновил пример, установив явное значение для виджета. - person Paul Kulchenko; 09.09.2018
comment
Вы также можете попробовать ("%d°C"):format(tonumber(s)/1000), если хотите показать 40°C. - person Paul Kulchenko; 09.09.2018
comment
и это будет сразу после widget:set_text? Хорошо, я попробовал, и вместо цифр отображается %d, я скопировал/вставил, извините за невежество, но как мне это исправить? - person Moltke; 09.09.2018
comment
Это должно выглядеть как widget:set_text(("%d°C"):format(tonumber(s)/1000)). - person Paul Kulchenko; 09.09.2018