diff --git a/locale/ru/LC_MESSAGES/vitals.mo b/locale/ru/LC_MESSAGES/vitals.mo
index 6a4f3955..56480faa 100644
Binary files a/locale/ru/LC_MESSAGES/vitals.mo and b/locale/ru/LC_MESSAGES/vitals.mo differ
diff --git a/locale/ru/LC_MESSAGES/vitals.po b/locale/ru/LC_MESSAGES/vitals.po
index 42250615..164841b0 100644
--- a/locale/ru/LC_MESSAGES/vitals.po
+++ b/locale/ru/LC_MESSAGES/vitals.po
@@ -1,7 +1,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"POT-Creation-Date: 2022-04-10 21:29+0200\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2025-11-28 12:03+0300\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -9,8 +10,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
"POT-Revision-Date: 2018-12-29 10:26+0100\n"
"X-Generator: Poedit 3.1.1\n"
"X-Poedit-Basepath: ..\n"
@@ -22,157 +23,241 @@ msgstr ""
"X-Poedit-SearchPath-5: extension.js\n"
"X-Poedit-SearchPath-6: schemas/prefs.ui\n"
-#: extension.js:129
+#: extension.js:134
msgid "Refresh"
msgstr "Обновить"
-#: extension.js:147
+#: extension.js:149
msgid "System Monitor"
msgstr "Системный монитор"
-#: extension.js:155
+#: extension.js:157 prefs.js:147
msgid "Preferences"
msgstr "Параметры"
-#: prefs.ui:42 schemas/org.gnome.shell.extensions.vitals.gschema.xml:81
+#: extension.js:193
+msgid "No Data"
+msgstr "Нет данных"
+
+#: prefs.ui:25 schemas/org.gnome.shell.extensions.vitals.gschema.xml:81
msgid "Include public IP address"
msgstr "Включить публичный IP-адрес"
-#: prefs.ui:70
+#: prefs.ui:30
msgid "Format"
msgstr "Формат"
-#: prefs.ui:78
+#: prefs.ui:34
msgid "Bytes"
msgstr "Байты"
-#: prefs.ui:79
+#: prefs.ui:35
msgid "Bits"
msgstr "Биты"
-#: prefs.ui:121
+#: prefs.ui:54
msgid "General"
msgstr "Основное"
-#: prefs.ui:149 schemas/org.gnome.shell.extensions.vitals.gschema.xml:11
+#: prefs.ui:57 schemas/org.gnome.shell.extensions.vitals.gschema.xml:11
msgid "Seconds between updates"
msgstr "Секунды между обновлениями"
-#: prefs.ui:184 schemas/org.gnome.shell.extensions.vitals.gschema.xml:16
+#: prefs.ui:72 schemas/org.gnome.shell.extensions.vitals.gschema.xml:16
msgid "Position in panel"
msgstr "Позиция на панели"
-#: prefs.ui:193
+#: prefs.ui:76
msgid "Left"
msgstr "Слева"
-#: prefs.ui:194
+#: prefs.ui:77
msgid "Center"
msgstr "По центру"
-#: prefs.ui:195
+#: prefs.ui:78
msgid "Right"
msgstr "Справа"
-#: prefs.ui:196
+#: prefs.ui:79
msgid "Far Left"
msgstr "Далеко слева"
-#: prefs.ui:197
+#: prefs.ui:80
msgid "Far Right"
msgstr "Далеко справа"
-#: prefs.ui:220 schemas/org.gnome.shell.extensions.vitals.gschema.xml:21
+#: prefs.ui:88 schemas/org.gnome.shell.extensions.vitals.gschema.xml:21
msgid "Use higher precision"
msgstr "Использовать более высокую точность"
-#: prefs.ui:247 schemas/org.gnome.shell.extensions.vitals.gschema.xml:26
+#: prefs.ui:93 schemas/org.gnome.shell.extensions.vitals.gschema.xml:26
msgid "Alphabetize sensors"
msgstr "Располагать в алфавитном порядке"
-#: prefs.ui:274 schemas/org.gnome.shell.extensions.vitals.gschema.xml:31
+#: prefs.ui:98 schemas/org.gnome.shell.extensions.vitals.gschema.xml:31
msgid "Hide zero values"
msgstr "Скрывать нулевые значения"
-#: prefs.ui:301
+#: prefs.ui:103
msgid "Use fixed widths"
msgstr "Использовать фиксированную ширину"
-#: prefs.ui:328 schemas/org.gnome.shell.extensions.vitals.gschema.xml:121
+#: prefs.ui:108 schemas/org.gnome.shell.extensions.vitals.gschema.xml:121
msgid "Hide icons in top bar"
msgstr "Скрывать иконки в верхней панели"
-#: prefs.ui:352
-msgid "About"
-msgstr "О Расширении"
+#: prefs.ui:113
+msgid "Menu always centered"
+msgstr "Центрировать меню"
-#: prefs.ui:367
-msgid ""
-"Feature requests or bugs? Please visit GitHub. No warranty, expressed or implied. Donate if you found this "
-"useful."
-msgstr ""
-"Запросы функций или баги? Пожалуйста, посетите GitHub. Без гарантий, явных или "
-"подразумеваемых. Пожертвуйте"
-"a>, если вы нашли это полезным."
+#: prefs.ui:118
+msgid "Icon style"
+msgstr "Стиль иконок"
+
+#: prefs.ui:122
+msgid "Original"
+msgstr "Исходный"
+
+#: prefs.ui:123
+msgid "GNOME"
+msgstr "GNOME"
-#: prefs.ui:394
+#: prefs.ui:133
msgid "Sensors"
msgstr "Сенсоры"
-#: prefs.ui:422 schemas/org.gnome.shell.extensions.vitals.gschema.xml:36
+#: prefs.ui:136 schemas/org.gnome.shell.extensions.vitals.gschema.xml:36
msgid "Monitor temperature"
msgstr "Мониторинг температуры"
-#: prefs.ui:473 schemas/org.gnome.shell.extensions.vitals.gschema.xml:46
+#: prefs.ui:152 schemas/org.gnome.shell.extensions.vitals.gschema.xml:46
msgid "Monitor voltage"
msgstr "Мониторинг напряжения"
-#: prefs.ui:501 schemas/org.gnome.shell.extensions.vitals.gschema.xml:51
+#: prefs.ui:157 schemas/org.gnome.shell.extensions.vitals.gschema.xml:51
msgid "Monitor fan"
msgstr "Мониторинг вентилятора"
-#: prefs.ui:529 schemas/org.gnome.shell.extensions.vitals.gschema.xml:56
+#: prefs.ui:162 schemas/org.gnome.shell.extensions.vitals.gschema.xml:56
msgid "Monitor memory"
msgstr "Мониторинг памяти"
-#: prefs.ui:580 schemas/org.gnome.shell.extensions.vitals.gschema.xml:61
+#: prefs.ui:178 schemas/org.gnome.shell.extensions.vitals.gschema.xml:61
msgid "Monitor processor"
msgstr "Мониторинг процессора"
-#: prefs.ui:608 schemas/org.gnome.shell.extensions.vitals.gschema.xml:66
+#: prefs.ui:195 schemas/org.gnome.shell.extensions.vitals.gschema.xml:66
msgid "Monitor system"
msgstr "Мониторинг системы"
-#: prefs.ui:636 schemas/org.gnome.shell.extensions.vitals.gschema.xml:76
+#: prefs.ui:212 schemas/org.gnome.shell.extensions.vitals.gschema.xml:76
msgid "Monitor network"
msgstr "Мониторинг сети"
-#: prefs.ui:687 schemas/org.gnome.shell.extensions.vitals.gschema.xml:71
+#: prefs.ui:229 schemas/org.gnome.shell.extensions.vitals.gschema.xml:71
msgid "Monitor storage"
msgstr "Мониторинг хранилища"
-#: prefs.ui:738 schemas/org.gnome.shell.extensions.vitals.gschema.xml:96
+#: prefs.ui:245 schemas/org.gnome.shell.extensions.vitals.gschema.xml:96
msgid "Monitor battery"
msgstr "Мониторинг батареи"
-#: prefs.ui:817
+#: prefs.ui:261
+msgid "Monitor GPU (beta)"
+msgstr "Мониторинг GPU (beta)"
+
+#: prefs.ui:286
+msgid "About"
+msgstr "О Расширении"
+
+#: prefs.ui:304
+msgid ""
+"Feature requests or bugs? Please visit GitHub. No warranty, expressed or implied. Donate if you found this "
+"useful."
+msgstr ""
+"Запросы функций или баги? Пожалуйста, посетите GitHub. Без гарантий, явных или "
+"подразумеваемых. Пожертвуйте"
+"a>, если вы нашли это полезным."
+
+#: prefs.ui:332
msgid "Path"
msgstr "Путь"
-#: prefs.ui:849 prefs.ui:958
+#: prefs.ui:338 prefs.ui:394
msgid "Measurement"
msgstr "Измерение"
-#: prefs.ui:903
+#: prefs.ui:342 prefs.ui:398
+msgid "Binary"
+msgstr "Двоичное"
+
+#: prefs.ui:343 prefs.ui:399
+msgid "Decimal"
+msgstr "Десятичное"
+
+#: prefs.ui:366
msgid "Unit"
msgstr "Единица"
-#: prefs.ui:1012
+#: prefs.ui:370
+msgid "°C"
+msgstr "°C"
+
+#: prefs.ui:371
+msgid "°F"
+msgstr "°F"
+
+#: prefs.ui:422
msgid "Display Battery"
-msgstr "Отображать батарею"
+msgstr "Отображаемая батарея"
+
+#: prefs.ui:426
+msgid "BAT0"
+msgstr ""
+
+#: prefs.ui:427
+msgid "BAT1"
+msgstr ""
+
+#: prefs.ui:428
+msgid "BAT2"
+msgstr ""
+
+#: prefs.ui:429
+msgid "BATT"
+msgstr ""
+
+#: prefs.ui:430
+msgid "CMB0"
+msgstr ""
+
+#: prefs.ui:431
+msgid "CMB1"
+msgstr ""
+
+#: prefs.ui:432
+msgid "CMB2"
+msgstr ""
+
+#: prefs.ui:433
+msgid "macsmc-battery"
+msgstr ""
+
+#: prefs.ui:456
+msgid "Monitor command"
+msgstr "Команда системного монитора"
+
+#: prefs.ui:476
+msgid "Include static info"
+msgstr "Включить статичную информацию"
+
+#: prefs.ui:496
+msgid "Include static GPU info"
+msgstr "Отображать статичную информацию о GPU"
#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:6
msgid "Sensors to show in panel"
@@ -306,227 +391,290 @@ msgstr "Не позволяйте датчикам в верхней панел
msgid "Keep top bar clean by only showing sensor values"
msgstr "Держать верхнюю панель чистой, показывая только значения датчиков"
-#: sensors.js:42
-msgid "Temperature"
-msgstr "Температура"
+#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:126
+#, fuzzy
+msgid "Make the menu centered"
+msgstr "Центрировать меню"
+
+#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:127
+msgid "Center the menu to the icon regardless of the position in the panel"
+msgstr ""
+
+#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:131
+#, fuzzy
+msgid "System Monitor command"
+msgstr "Системный монитор"
+
+#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:132
+msgid "The command run when system monitor button is clicked"
+msgstr ""
+
+#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:136
+#, fuzzy
+msgid "Include processor static information"
+msgstr "Отображать информацию о процессоре"
-#: sensors.js:43 sensors.js:307 sensors.js:337
-msgid "Voltage"
-msgstr "Напряжение"
+#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:137
+#, fuzzy
+msgid "Display processor static information that doesn't change"
+msgstr "Отображать информацию о процессоре"
-#: sensors.js:44
-msgid "Fan"
-msgstr "Вентилятор"
+#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:141
+msgid "Monitor GPU"
+msgstr "Мониторинг GPU"
-#: sensors.js:45
-msgid "Memory"
-msgstr "Память"
+#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:142
+msgid "Display GPU information (requires the nvidia-smi tool)"
+msgstr "Отображать информацию о GPU (требуется nvidia-smi)"
-#: sensors.js:46
-msgid "Processor"
-msgstr "Процессор"
+#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:146
+msgid "Include GPU static information"
+msgstr "Отображать статичную информацию о процессоре"
-#: sensors.js:47
-msgid "System"
-msgstr "Система"
+#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:147
+#, fuzzy
+msgid "Display GPU static information that doesn't change"
+msgstr "Отображать статичную информацию о процессоре"
-#: sensors.js:48
-msgid "Network"
-msgstr "Сеть"
+#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:151
+msgid "Icon styles"
+msgstr "Стиль иконок"
-#: sensors.js:49
-msgid "Storage"
-msgstr "Хранилище"
+#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:152
+msgid "Set the style for the displayed sensor icons ('original', 'updated')"
+msgstr ""
-#: sensors.js:76
-msgid "Public IP"
-msgstr "Публичный IP-адрес"
+#: sensors.js:201
+#, javascript-format
+msgid "Core %d"
+msgstr "Ядро %d"
-#: sensors.js:144
-msgid "Usage"
-msgstr "Использование"
+#, fuzzy
+#~ msgid "Batteries"
+#~ msgstr "Батарея"
-#: sensors.js:145
-msgid "memory"
-msgstr "Память"
+#, fuzzy
+#~ msgid "Monitor BAT0"
+#~ msgstr "Мониторинг вентилятора"
-#: sensors.js:146
-msgid "Physical"
-msgstr "Физическая"
+#, fuzzy
+#~ msgid "Monitor BAT1"
+#~ msgstr "Мониторинг вентилятора"
-#: sensors.js:147
-msgid "Available"
-msgstr "Доступно"
+#, fuzzy
+#~ msgid "Monitor BAT2"
+#~ msgstr "Мониторинг вентилятора"
-#: sensors.js:148
-msgid "Allocated"
-msgstr "Использовано"
+#, fuzzy
+#~ msgid "Monitor CMB0"
+#~ msgstr "Мониторинг вентилятора"
-#: sensors.js:149
-msgid "Swap"
-msgstr "Своп"
+#, fuzzy
+#~ msgid "Display battery BAT1"
+#~ msgstr "Отображать батарею"
-#: sensors.js:189
-msgid "Average"
-msgstr "В среднем"
+#, fuzzy
+#~ msgid "Display battery BAT2"
+#~ msgstr "Отображать батарею"
-#: sensors.js:190
-msgid "processor"
-msgstr "Процессор"
+#, fuzzy
+#~ msgid "Display battery CMB0"
+#~ msgstr "Отображать батарею"
-#: sensors.js:192
-#, javascript-format
-msgid "Core %d"
-msgstr "Ядро %d"
+#, fuzzy
+#~ msgid "Display battery macsmc-battery"
+#~ msgstr "Отображать батарею"
+
+#, fuzzy
+#~ msgid "Display combined battery data"
+#~ msgstr "Отображать батарею"
+
+#~ msgid "Public IP"
+#~ msgstr "Публичный IP-адрес"
+
+#~ msgid "Usage"
+#~ msgstr "Использование"
+
+#~ msgid "memory"
+#~ msgstr "Память"
+
+#~ msgid "Physical"
+#~ msgstr "Физическая"
+
+#~ msgid "Available"
+#~ msgstr "Доступно"
+
+#~ msgid "Allocated"
+#~ msgstr "Использовано"
+
+#, fuzzy
+#~ msgid "Cached"
+#~ msgstr "Кэш"
+
+#~ msgid "Free"
+#~ msgstr "Свободно"
+
+#~ msgid "Swap"
+#~ msgstr "Своп"
+
+#~ msgid "Average"
+#~ msgstr "В среднем"
+
+#~ msgid "processor"
+#~ msgstr "Процессор"
+
+#~ msgid "Frequency"
+#~ msgstr "Частота"
+
+#~ msgid "Open Files"
+#~ msgstr "Открыть Файлы"
+
+#~ msgid "Load 1m"
+#~ msgstr "Нагрузка 1мин"
+
+#~ msgid "system"
+#~ msgstr "Система"
+
+#~ msgid "Load 5m"
+#~ msgstr "Нагрузка 5мин"
+
+#~ msgid "Load 15m"
+#~ msgstr "Нагрузка 15мин"
+
+#~ msgid "Threads Active"
+#~ msgstr "Активные потоки"
+
+#~ msgid "Threads Total"
+#~ msgstr "Всего потоков"
+
+#~ msgid "Uptime"
+#~ msgstr "Время работы"
+
+#~ msgid "Process Time"
+#~ msgstr "Время процесса"
+
+#~ msgid "WiFi Link Quality"
+#~ msgstr "Качество соединения WiFi"
+
+#~ msgid "WiFi Signal Level"
+#~ msgstr "Уровень сигнала WiFi"
-#: sensors.js:236
-msgid "Frequency"
-msgstr "Частота"
+#~ msgid "ARC Target"
+#~ msgstr "Цель ARC"
-#: sensors.js:237
-msgid "Boost"
-msgstr "Разгон"
+#~ msgid "ARC Maximum"
+#~ msgstr "Максимум ARC"
-#: sensors.js:238
-msgid "Vendor"
-msgstr "Производитель"
+#~ msgid "ARC Current"
+#~ msgstr "Текущий ARC"
-#: sensors.js:239
-msgid "Bogomips"
-msgstr "Bogomips"
+#~ msgid "Read total"
+#~ msgstr "Чтение всего"
-#: sensors.js:240
-msgid "Sockets"
-msgstr "Сокеты"
+#~ msgid "Write total"
+#~ msgstr "Запись всего"
-#: sensors.js:241
-msgid "Cache"
-msgstr "Кэш"
+#~ msgid "Read rate"
+#~ msgstr "Показатель чтения"
-#: sensors.js:250
-msgid "Open Files"
-msgstr "Открыть Файлы"
+#~ msgid "Write rate"
+#~ msgstr "Показатель записи"
-#: sensors.js:258
-msgid "Load 1m"
-msgstr "Нагрузка 1мин"
+#~ msgid "Total"
+#~ msgstr "Всего"
-#: sensors.js:259
-msgid "system"
-msgstr "Система"
+#~ msgid "Used"
+#~ msgstr "Использовано"
-#: sensors.js:260
-msgid "Load 5m"
-msgstr "Нагрузка 5мин"
+#~ msgid "Reserved"
+#~ msgstr "Зарезервиравано"
-#: sensors.js:261
-msgid "Load 15m"
-msgstr "Нагрузка 15мин"
+#~ msgid "storage"
+#~ msgstr "Хранилище"
-#: sensors.js:262
-msgid "Threads Active"
-msgstr "Активные потоки"
+#~ msgid "State"
+#~ msgstr "Состояние"
-#: sensors.js:263
-msgid "Threads Total"
-msgstr "Всего потоков"
+#~ msgid "Cycles"
+#~ msgstr "Циклы"
-#: sensors.js:269
-msgid "Uptime"
-msgstr "Время работы"
+#~ msgid "Voltage"
+#~ msgstr "Напряжение"
-#: sensors.js:273
-msgid "Process Time"
-msgstr "Время процесса"
+#~ msgid "Percentage"
+#~ msgstr "Процент"
-#: sensors.js:290
-msgid "State"
-msgstr "Состояние"
+#~ msgid "Rate"
+#~ msgstr "Показатель"
-#: sensors.js:295
-msgid "Cycles"
-msgstr "Циклы"
+#~ msgid "Energy (full)"
+#~ msgstr "Энергия (полный)"
-#: sensors.js:300 sensors.js:330
-msgid "Energy (full)"
-msgstr "Энергия (полный)"
+#~ msgid "Energy (design)"
+#~ msgstr "Энергия (изначальная)"
-#: sensors.js:302 sensors.js:332
-msgid "Capacity"
-msgstr "Ёмкость"
+#~ msgid "Capacity"
+#~ msgstr "Ёмкость"
-#: sensors.js:303 sensors.js:333
-msgid "Energy (design)"
-msgstr "Энергия (изначальная)"
+#~ msgid "Energy (now)"
+#~ msgstr "Энергия (сейчас)"
-#: sensors.js:311 sensors.js:340
-msgid "Rate"
-msgstr "Показатель"
+#~ msgid "Vendor"
+#~ msgstr "Производитель"
-#: sensors.js:312 sensors.js:341
-msgid "battery"
-msgstr "Батарея"
+#~ msgid "Bogomips"
+#~ msgstr "Bogomips"
-#: sensors.js:316 sensors.js:344
-msgid "Energy (now)"
-msgstr "Энергия (сейчас)"
+#~ msgid "Sockets"
+#~ msgstr "Сокеты"
-#: sensors.js:322 sensors.js:350
-msgid "Percentage"
-msgstr "Процент"
+#~ msgid "Cache"
+#~ msgstr "Кэш"
-#: sensors.js:411
-msgid "WiFi Link Quality"
-msgstr "Качество соединения WiFi"
+#~ msgid "Temperature"
+#~ msgstr "Температура"
-#: sensors.js:412
-msgid "WiFi Signal Level"
-msgstr "Уровень сигнала WiFi"
+#~ msgid "Network"
+#~ msgstr "Сеть"
-#: sensors.js:432
-msgid "ARC Target"
-msgstr "Цель ARC"
+#~ msgid "Storage"
+#~ msgstr "Хранилище"
-#: sensors.js:433
-msgid "ARC Maximum"
-msgstr "Максимум ARC"
+#~ msgid "Memory"
+#~ msgstr "Память"
-#: sensors.js:434
-msgid "ARC Current"
-msgstr "Текущий ARC"
+#, fuzzy
+#~ msgid "Battery"
+#~ msgstr "Батарея"
-#: sensors.js:445
-msgid "Read total"
-msgstr "Чтение всего"
+#, fuzzy
+#~ msgid "Battery 1"
+#~ msgstr "Батарея"
-#: sensors.js:446
-msgid "Write total"
-msgstr "Запись всего"
+#, fuzzy
+#~ msgid "Battery 2"
+#~ msgstr "Батарея"
-#: sensors.js:447
-msgid "Read rate"
-msgstr "Показатель чтения"
+#, fuzzy
+#~ msgid "Battery 3"
+#~ msgstr "Батарея"
-#: sensors.js:448
-msgid "Write rate"
-msgstr "Показатель записи"
+#, fuzzy
+#~ msgid "Battery 4"
+#~ msgstr "Батарея"
-#: sensors.js:467
-msgid "Total"
-msgstr "Всего"
+#, fuzzy
+#~ msgid "Battery 5"
+#~ msgstr "Батарея"
-#: sensors.js:468
-msgid "Used"
-msgstr "Использовано"
+#~ msgid "System"
+#~ msgstr "Система"
-#: sensors.js:469
-msgid "Reserved"
-msgstr "Зарезервиравано"
+#~ msgid "Processor"
+#~ msgstr "Процессор"
-#: sensors.js:470
-msgid "Free"
-msgstr "Свободно"
+#~ msgid "Fan"
+#~ msgstr "Вентилятор"
-#: sensors.js:471
-msgid "storage"
-msgstr "Хранилище"
+#~ msgid "Boost"
+#~ msgstr "Разгон"
diff --git a/locale/vitals.pot b/locale/vitals.pot
index 8df0908a..61ec3a56 100644
--- a/locale/vitals.pot
+++ b/locale/vitals.pot
@@ -1,274 +1,254 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: \n"
-"POT-Creation-Date: 2023-10-22 21:04+0200\n"
-"PO-Revision-Date: \n"
-"Last-Translator: Chris Monahan \n"
-"Language-Team: \n"
-"Language: en\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2025-11-28 12:03+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"POT-Revision-Date: 2018-12-29 10:26+0100\n"
-"X-Generator: Poedit 3.4\n"
-"X-Poedit-Basepath: ..\n"
-"X-Poedit-KeywordsList: _returnValue:2\n"
-"X-Poedit-SearchPath-0: values.js\n"
-"X-Poedit-SearchPath-1: sensors.js\n"
-"X-Poedit-SearchPath-2: prefs.js\n"
-"X-Poedit-SearchPath-3: menuItem.js\n"
-"X-Poedit-SearchPath-4: extension.js\n"
-"X-Poedit-SearchPath-5: schemas/org.gnome.shell.extensions."
-"vitals.gschema.xml\n"
-"X-Poedit-SearchPath-6: prefs.ui\n"
-
-#: extension.js:109
-msgid "Batteries"
-msgstr ""
-
-#: extension.js:133
-msgid "No Data"
-msgstr ""
-#: extension.js:159
+#: extension.js:134
msgid "Refresh"
msgstr ""
-#: extension.js:174
+#: extension.js:149
msgid "System Monitor"
msgstr ""
-#: extension.js:182 prefs.js:106
+#: extension.js:157 prefs.js:147
msgid "Preferences"
msgstr ""
-#: prefs.ui:42
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:81
+#: extension.js:193
+msgid "No Data"
+msgstr ""
+
+#: prefs.ui:25 schemas/org.gnome.shell.extensions.vitals.gschema.xml:81
msgid "Include public IP address"
msgstr ""
-#: prefs.ui:70
+#: prefs.ui:30
msgid "Format"
msgstr ""
-#: prefs.ui:78
+#: prefs.ui:34
msgid "Bytes"
msgstr ""
-#: prefs.ui:79
+#: prefs.ui:35
msgid "Bits"
msgstr ""
-#: prefs.ui:121
+#: prefs.ui:54
msgid "General"
msgstr ""
-#: prefs.ui:149
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:11
+#: prefs.ui:57 schemas/org.gnome.shell.extensions.vitals.gschema.xml:11
msgid "Seconds between updates"
msgstr ""
-#: prefs.ui:184
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:16
+#: prefs.ui:72 schemas/org.gnome.shell.extensions.vitals.gschema.xml:16
msgid "Position in panel"
msgstr ""
-#: prefs.ui:193
+#: prefs.ui:76
msgid "Left"
msgstr ""
-#: prefs.ui:194
+#: prefs.ui:77
msgid "Center"
msgstr ""
-#: prefs.ui:195
+#: prefs.ui:78
msgid "Right"
msgstr ""
-#: prefs.ui:196
+#: prefs.ui:79
msgid "Far Left"
msgstr ""
-#: prefs.ui:197
+#: prefs.ui:80
msgid "Far Right"
msgstr ""
-#: prefs.ui:220
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:21
+#: prefs.ui:88 schemas/org.gnome.shell.extensions.vitals.gschema.xml:21
msgid "Use higher precision"
msgstr ""
-#: prefs.ui:247
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:26
+#: prefs.ui:93 schemas/org.gnome.shell.extensions.vitals.gschema.xml:26
msgid "Alphabetize sensors"
msgstr ""
-#: prefs.ui:274
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:31
+#: prefs.ui:98 schemas/org.gnome.shell.extensions.vitals.gschema.xml:31
msgid "Hide zero values"
msgstr ""
-#: prefs.ui:301
+#: prefs.ui:103
msgid "Use fixed widths"
msgstr ""
-#: prefs.ui:328
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:171
+#: prefs.ui:108 schemas/org.gnome.shell.extensions.vitals.gschema.xml:121
msgid "Hide icons in top bar"
msgstr ""
-#: prefs.ui:355
+#: prefs.ui:113
msgid "Menu always centered"
msgstr ""
-#: prefs.ui:379
-msgid "About"
+#: prefs.ui:118
+msgid "Icon style"
msgstr ""
-#: prefs.ui:394
-msgid ""
-"Feature requests or bugs? Please visit GitHub. No warranty, "
-"expressed or implied. Donate if you found this useful."
+#: prefs.ui:122
+msgid "Original"
+msgstr ""
+
+#: prefs.ui:123
+msgid "GNOME"
msgstr ""
-#: prefs.ui:421
+#: prefs.ui:133
msgid "Sensors"
msgstr ""
-#: prefs.ui:449
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:36
+#: prefs.ui:136 schemas/org.gnome.shell.extensions.vitals.gschema.xml:36
msgid "Monitor temperature"
msgstr ""
-#: prefs.ui:500
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:46
+#: prefs.ui:152 schemas/org.gnome.shell.extensions.vitals.gschema.xml:46
msgid "Monitor voltage"
msgstr ""
-#: prefs.ui:528
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:51
+#: prefs.ui:157 schemas/org.gnome.shell.extensions.vitals.gschema.xml:51
msgid "Monitor fan"
msgstr ""
-#: prefs.ui:556
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:56
+#: prefs.ui:162 schemas/org.gnome.shell.extensions.vitals.gschema.xml:56
msgid "Monitor memory"
msgstr ""
-#: prefs.ui:607
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:61
+#: prefs.ui:178 schemas/org.gnome.shell.extensions.vitals.gschema.xml:61
msgid "Monitor processor"
msgstr ""
-#: prefs.ui:658
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:66
+#: prefs.ui:195 schemas/org.gnome.shell.extensions.vitals.gschema.xml:66
msgid "Monitor system"
msgstr ""
-#: prefs.ui:709
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:76
+#: prefs.ui:212 schemas/org.gnome.shell.extensions.vitals.gschema.xml:76
msgid "Monitor network"
msgstr ""
-#: prefs.ui:760
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:71
+#: prefs.ui:229 schemas/org.gnome.shell.extensions.vitals.gschema.xml:71
msgid "Monitor storage"
msgstr ""
-#: prefs.ui:811
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:96
+#: prefs.ui:245 schemas/org.gnome.shell.extensions.vitals.gschema.xml:96
msgid "Monitor battery"
msgstr ""
-#: prefs.ui:890
+#: prefs.ui:261
+msgid "Monitor GPU (beta)"
+msgstr ""
+
+#: prefs.ui:286
+msgid "About"
+msgstr ""
+
+#: prefs.ui:304
+msgid ""
+"Feature requests or bugs? Please visit GitHub. No warranty, expressed or implied. Donate if you found this "
+"useful."
+msgstr ""
+
+#: prefs.ui:332
msgid "Path"
msgstr ""
-#: prefs.ui:922 prefs.ui:1031
+#: prefs.ui:338 prefs.ui:394
msgid "Measurement"
msgstr ""
-#: prefs.ui:930 prefs.ui:1039
+#: prefs.ui:342 prefs.ui:398
msgid "Binary"
msgstr ""
-#: prefs.ui:931 prefs.ui:1040
+#: prefs.ui:343 prefs.ui:399
msgid "Decimal"
msgstr ""
-#: prefs.ui:976
+#: prefs.ui:366
msgid "Unit"
msgstr ""
-#: prefs.ui:985
-msgid "°C"
-msgstr ""
-
-#: prefs.ui:986
-msgid "°F"
+#: prefs.ui:370
+msgid "\302\260C"
msgstr ""
-#: prefs.ui:1086
-msgid "Monitor BAT0"
+#: prefs.ui:371
+msgid "\302\260F"
msgstr ""
-#: prefs.ui:1116
-msgid "Monitor BAT1"
+#: prefs.ui:422
+msgid "Display Battery"
msgstr ""
-#: prefs.ui:1146
-msgid "Monitor BAT2"
+#: prefs.ui:426
+msgid "BAT0"
msgstr ""
-#: prefs.ui:1176
-msgid "Monitor CMB0"
+#: prefs.ui:427
+msgid "BAT1"
msgstr ""
-#: prefs.ui:1206
-msgid "Monitor macsmc-battery"
+#: prefs.ui:428
+msgid "BAT2"
msgstr ""
-#: prefs.ui:1247
-msgid "Calculate Combined Values"
+#: prefs.ui:429
+msgid "BATT"
msgstr ""
-#: prefs.ui:1277
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:141
-msgid "Include BAT0"
+#: prefs.ui:430
+msgid "CMB0"
msgstr ""
-#: prefs.ui:1307
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:146
-msgid "Include BAT1"
+#: prefs.ui:431
+msgid "CMB1"
msgstr ""
-#: prefs.ui:1337
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:151
-msgid "Include BAT2"
+#: prefs.ui:432
+msgid "CMB2"
msgstr ""
-#: prefs.ui:1367
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:156
-msgid "Include CMB0"
+#: prefs.ui:433
+msgid "macsmc-battery"
msgstr ""
-#: prefs.ui:1397
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:161
-msgid "Include macsmc-battery"
-msgstr ""
-
-#: prefs.ui:1446
+#: prefs.ui:456
msgid "Monitor command"
msgstr ""
-#: prefs.ui:1498
+#: prefs.ui:476
msgid "Include static info"
msgstr ""
+#: prefs.ui:496
+msgid "Include static GPU info"
+msgstr ""
+
#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:6
msgid "Sensors to show in panel"
msgstr ""
@@ -307,8 +287,8 @@ msgstr ""
#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:42
msgid ""
-"The unit ('centigrade' or 'fahrenheit') the extension should "
-"display the temperature in"
+"The unit ('centigrade' or 'fahrenheit') the extension should display the "
+"temperature in"
msgstr ""
#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:47
@@ -380,373 +360,74 @@ msgid "Can use gigabyte or gibibyte for storage"
msgstr ""
#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:111
-msgid "Display battery BAT0"
+msgid "Battery slot to monitor"
msgstr ""
#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:112
-msgid "Should battery 'BAT0' be displayed?"
+msgid "Which numerical battery slot should vitals monitor"
msgstr ""
#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:116
-msgid "Display battery BAT1"
+msgid "Use fixed widths in top bar"
msgstr ""
#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:117
-msgid "Should battery 'BAT1' be displayed?"
-msgstr ""
-
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:121
-msgid "Display battery BAT2"
+msgid "Keep sensors in top bar from jumping around"
msgstr ""
#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:122
-msgid "Should battery 'BAT2' be displayed?"
+msgid "Keep top bar clean by only showing sensor values"
msgstr ""
#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:126
-msgid "Display battery CMB0"
+msgid "Make the menu centered"
msgstr ""
#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:127
-msgid "Should battery 'CMB0' be displayed?"
+msgid "Center the menu to the icon regardless of the position in the panel"
msgstr ""
#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:131
-msgid "Display battery macsmc-battery"
-msgstr ""
-
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:132
-msgid "Should battery 'macsmc-battery' be displayed?"
-msgstr ""
-
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:136
-msgid "Display combined battery data"
-msgstr ""
-
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:137
-msgid "Display combined values for selected batteries"
-msgstr ""
-
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:142
-msgid "Include 'BAT0' when calculating combined Battery"
-msgstr ""
-
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:147
-msgid "Include 'BAT1' when calculating combined Battery"
-msgstr ""
-
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:152
-msgid "Include 'BAT2' when calculating combined Battery"
-msgstr ""
-
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:157
-msgid "Include 'CMB0' when calculating combined Battery"
-msgstr ""
-
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:162
-msgid "Include 'macsmc-battery' when calculating combined Battery"
-msgstr ""
-
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:166
-msgid "Use fixed widths in top bar"
-msgstr ""
-
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:167
-msgid "Keep sensors in top bar from jumping around"
-msgstr ""
-
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:172
-msgid "Keep top bar clean by only showing sensor values"
-msgstr ""
-
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:176
-msgid "Make the menu centered"
-msgstr ""
-
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:177
-msgid ""
-"Center the menu to the icon regardless of the position in the "
-"panel"
-msgstr ""
-
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:181
msgid "System Monitor command"
msgstr ""
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:182
+#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:132
msgid "The command run when system monitor button is clicked"
msgstr ""
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:186
+#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:136
msgid "Include processor static information"
msgstr ""
-#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:187
+#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:137
msgid "Display processor static information that doesn't change"
msgstr ""
-#: sensors.js:65
-msgid "Public IP"
-msgstr ""
-
-#: sensors.js:133 sensors.js:181
-msgid "Usage"
-msgstr ""
-
-#: sensors.js:134
-msgid "memory"
-msgstr ""
-
-#: sensors.js:135
-msgid "Physical"
-msgstr ""
-
-#: sensors.js:136
-msgid "Available"
-msgstr ""
-
-#: sensors.js:137
-msgid "Allocated"
+#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:141
+msgid "Monitor GPU"
msgstr ""
-#: sensors.js:138
-msgid "Cached"
+#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:142
+msgid "Display GPU information (requires the nvidia-smi tool)"
msgstr ""
-#: sensors.js:139 sensors.js:355
-msgid "Free"
+#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:146
+msgid "Include GPU static information"
msgstr ""
-#: sensors.js:140
-msgid "Swap"
+#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:147
+msgid "Display GPU static information that doesn't change"
msgstr ""
-#: sensors.js:248
-msgid "Average"
+#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:151
+msgid "Icon styles"
msgstr ""
-#: sensors.js:180
-msgid "processor"
+#: schemas/org.gnome.shell.extensions.vitals.gschema.xml:152
+msgid "Set the style for the displayed sensor icons ('original', 'updated')"
msgstr ""
-#: sensors.js:183
+#: sensors.js:201
#, javascript-format
msgid "Core %d"
msgstr ""
-
-#: sensors.js:213 sensors.js:222
-msgid "Frequency"
-msgstr ""
-
-#: sensors.js:231
-msgid "Open Files"
-msgstr ""
-
-#: sensors.js:238
-msgid "Load 1m"
-msgstr ""
-
-#: sensors.js:239
-msgid "system"
-msgstr ""
-
-#: sensors.js:240
-msgid "Load 5m"
-msgstr ""
-
-#: sensors.js:241
-msgid "Load 15m"
-msgstr ""
-
-#: sensors.js:242
-msgid "Threads Active"
-msgstr ""
-
-#: sensors.js:243
-msgid "Threads Total"
-msgstr ""
-
-#: sensors.js:248
-msgid "Uptime"
-msgstr ""
-
-#: sensors.js:252
-msgid "Process Time"
-msgstr ""
-
-#: sensors.js:302
-msgid "WiFi Link Quality"
-msgstr ""
-
-#: sensors.js:303
-msgid "WiFi Signal Level"
-msgstr ""
-
-#: sensors.js:318
-msgid "ARC Target"
-msgstr ""
-
-#: sensors.js:319
-msgid "ARC Maximum"
-msgstr ""
-
-#: sensors.js:320
-msgid "ARC Current"
-msgstr ""
-
-#: sensors.js:330
-msgid "Read total"
-msgstr ""
-
-#: sensors.js:331
-msgid "Write total"
-msgstr ""
-
-#: sensors.js:332
-msgid "Read rate"
-msgstr ""
-
-#: sensors.js:333
-msgid "Write rate"
-msgstr ""
-
-#: sensors.js:352
-msgid "Total"
-msgstr ""
-
-#: sensors.js:353
-msgid "Used"
-msgstr ""
-
-#: sensors.js:354
-msgid "Reserved"
-msgstr ""
-
-#: sensors.js:356
-msgid "storage"
-msgstr ""
-
-#: sensors.js:393
-msgid "Label"
-msgstr ""
-
-#: sensors.js:404 sensors.js:529
-msgid "State"
-msgstr ""
-
-#: sensors.js:409 sensors.js:519
-msgid "Cycles"
-msgstr ""
-
-#: sensors.js:414
-msgid "Voltage"
-msgstr ""
-
-#: sensors.js:418
-msgid "Level"
-msgstr ""
-
-#: sensors.js:422 sensors.js:553
-msgid "Percentage"
-msgstr ""
-
-#: sensors.js:432 sensors.js:527
-msgid "Rate"
-msgstr ""
-
-#: sensors.js:442 sensors.js:535
-msgid "Energy (full)"
-msgstr ""
-
-#: sensors.js:451 sensors.js:541
-msgid "Energy (design)"
-msgstr ""
-
-#: sensors.js:455
-msgid "Capacity"
-msgstr ""
-
-#: sensors.js:464 sensors.js:547
-msgid "Energy (now)"
-msgstr ""
-
-#: sensors.js:501 sensors.js:504 sensors.js:588 sensors.js:591
-msgid "Time left"
-msgstr ""
-
-#: sensors.js:677
-msgid "Vendor"
-msgstr ""
-
-#: sensors.js:678
-msgid "Bogomips"
-msgstr ""
-
-#: sensors.js:679
-msgid "Sockets"
-msgstr ""
-
-#: sensors.js:680
-msgid "Cache"
-msgstr ""
-
-#: sensors.js:685
-msgid "Kernel"
-msgstr ""
-
-
-#: prefs.js:98
-msgid "Temperature"
-msgstr ""
-
-#: prefs.js:98
-msgid "Network"
-msgstr ""
-
-#: prefs.js:98
-msgid "Storage"
-msgstr ""
-
-#: prefs.js:98
-msgid "Memory"
-msgstr ""
-
-#: prefs.js:98
-msgid "Battery"
-msgstr ""
-
-#: extension.js:112
-msgid "Battery 1"
-msgstr ""
-
-#: extension.js:112
-msgid "Battery 2"
-msgstr ""
-
-#: extension.js:112
-msgid "Battery 3"
-msgstr ""
-
-#: extension.js:112
-msgid "Battery 4"
-msgstr ""
-
-#: extension.js:112
-msgid "Battery 5"
-msgstr ""
-
-#: extension.js:115
-msgid "Battery (hidden)"
-msgstr ""
-
-#: prefs.js:98
-msgid "System"
-msgstr ""
-
-#: prefs.js:98
-msgid "Processor"
-msgstr ""
-
-#: sensors.js:759
-msgid "Fan"
-msgstr ""
diff --git a/prefs.js b/prefs.js
index 07916bdf..df742321 100644
--- a/prefs.js
+++ b/prefs.js
@@ -1,8 +1,11 @@
-import Adw from 'gi://Adw';
-import Gio from 'gi://Gio';
-import GObject from 'gi://GObject';
-import Gtk from 'gi://Gtk';
-import {ExtensionPreferences, gettext as _} from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
+import Adw from "gi://Adw";
+import Gio from "gi://Gio";
+import GObject from "gi://GObject";
+import Gtk from "gi://Gtk";
+import {
+ ExtensionPreferences,
+ gettext as _,
+} from "resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js";
/*
if (sensor == 'show-storage' && this._settings.get_boolean(sensor)) {
@@ -22,104 +25,151 @@ import {ExtensionPreferences, gettext as _} from 'resource:///org/gnome/Shell/Ex
*/
const Settings = new GObject.Class({
- Name: 'Vitals.Settings',
+ Name: "Vitals.Settings",
- _init: function(extensionObject, params) {
- this._extensionObject = extensionObject
+ _init: function (extensionObject, params) {
+ this._extensionObject = extensionObject;
this.parent(params);
-
+
this._settings = extensionObject.getSettings();
this.builder = new Gtk.Builder();
- this.builder.set_translation_domain(this._extensionObject.metadata['gettext-domain']);
- this.builder.add_from_file(this._extensionObject.path + '/prefs.ui');
- this.widget = this.builder.get_object('prefs-container');
+ this.builder.set_translation_domain(
+ this._extensionObject.metadata["gettext-domain"]
+ );
+ this.builder.add_from_file(this._extensionObject.path + "/prefs.ui");
+ this.widget = this.builder.get_object("prefs-container");
this._bind_settings();
},
// Bind the gtk window to the schema settings
- _bind_settings: function() {
- let widget;
-
- // process sensor toggles
- let sensors = [ 'show-temperature', 'show-voltage', 'show-fan',
- 'show-memory', 'show-processor', 'show-system',
- 'show-network', 'show-storage', 'use-higher-precision',
- 'alphabetize', 'hide-zeros', 'include-public-ip',
- 'show-battery', 'fixed-widths', 'hide-icons',
- 'menu-centered', 'include-static-info',
- 'show-gpu', 'include-static-gpu-info' ];
-
- for (let key in sensors) {
- let sensor = sensors[key];
-
- widget = this.builder.get_object(sensor);
- widget.set_active(this._settings.get_boolean(sensor));
- widget.connect('state-set', (_, val) => {
- this._settings.set_boolean(sensor, val);
- });
+ _bind_settings: function () {
+ const boolParams = [
+ "show-system",
+ "show-network",
+ "alphabetize",
+ "fixed-widths",
+ "hide-icons",
+ "hide-zeros",
+ "include-public-ip",
+ "include-static-gpu-info",
+ "include-static-info",
+ "menu-centered",
+ "show-fan",
+ "show-memory",
+ "show-processor",
+ "show-storage",
+ "show-temperature",
+ "show-voltage",
+ "use-higher-precision",
+ "show-battery",
+ "show-gpu",
+ ];
+ for (const param in boolParams) {
+ let paramName = boolParams[param];
+ const widget = this.builder.get_object(paramName);
+ if (!widget) {
+ console.error("Widget not found: " + paramName);
+ }
+ this._settings.bind(
+ paramName,
+ widget,
+ "active",
+ Gio.SettingsBindFlags.DEFAULT
+ );
}
- // process individual drop down sensor preferences
- sensors = [ 'position-in-panel', 'unit', 'network-speed-format', 'memory-measurement', 'storage-measurement', 'battery-slot', 'icon-style' ];
- for (let key in sensors) {
- let sensor = sensors[key];
-
- widget = this.builder.get_object(sensor);
- widget.set_active(this._settings.get_int(sensor));
- widget.connect('changed', (widget) => {
- this._settings.set_int(sensor, widget.get_active());
- });
+ const comboParams = [
+ "icon-style",
+ "position-in-panel",
+ "unit",
+ "network-speed-format",
+ "storage-measurement",
+ "memory-measurement",
+ "battery-slot",
+ ];
+ for (const param in comboParams) {
+ let paramName = comboParams[param];
+ const widget = this.builder.get_object(paramName);
+ this._settings.bind(
+ paramName,
+ widget,
+ "selected",
+ Gio.SettingsBindFlags.DEFAULT
+ );
}
- this._settings.bind('update-time', this.builder.get_object('update-time'), 'value', Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind(
+ "update-time",
+ this.builder.get_object("update-time"),
+ "value",
+ Gio.SettingsBindFlags.DEFAULT
+ );
// process individual text entry sensor preferences
- sensors = [ 'storage-path', 'monitor-cmd' ];
- for (let key in sensors) {
- let sensor = sensors[key];
-
- widget = this.builder.get_object(sensor);
- widget.set_text(this._settings.get_string(sensor));
-
- widget.connect('changed', (widget) => {
- let text = widget.get_text();
- if (!text) text = widget.get_placeholder_text();
- this._settings.set_string(sensor, text);
- });
+ const entryRows = ["storage-path", "monitor-cmd"];
+ for (let key in entryRows) {
+ let paramName = entryRows[key];
+
+ const widget = this.builder.get_object(paramName);
+
+ this._settings.bind(
+ paramName,
+ widget,
+ "text",
+ Gio.SettingsBindFlags.DEFAULT
+ );
}
// makes individual sensor preference boxes appear
- sensors = [ 'temperature', 'network', 'storage', 'memory', 'battery', 'system', 'processor', 'gpu' ];
+ const sensors = [
+ "temperature",
+ "network",
+ "storage",
+ "memory",
+ "battery",
+ "system",
+ "processor",
+ "gpu",
+ ];
for (let key in sensors) {
let sensor = sensors[key];
// create dialog for intelligent autohide advanced settings
- this.builder.get_object(sensor + '-prefs').connect('clicked', () => {
- let transientObj = this.widget.get_root();
- let title = sensor.charAt(0).toUpperCase() + sensor.slice(1);
- let dialog = new Gtk.Dialog({ title: _(title) + ' ' + _('Preferences'),
- transient_for: transientObj,
- use_header_bar: false,
- modal: true });
-
- let box = this.builder.get_object(sensor + '_prefs');
- dialog.get_content_area().append(box);
- dialog.connect('response', (dialog, id) => {
- // remove the settings box so it doesn't get destroyed;
- dialog.get_content_area().remove(box);
- dialog.destroy();
- return;
+ this.builder
+ .get_object(sensor + "-prefs")
+ .connect("clicked", (sender, arg) => {
+ let transientObj = this.widget.get_root();
+ let title =
+ sensor.charAt(0).toUpperCase() + sensor.slice(1);
+ let dialog = new Adw.Dialog({
+ title: _(title) + " " + _("Preferences"),
+ });
+ try {
+ let box = this.builder.get_object(sensor + "_prefs");
+ const view = new Adw.ToolbarView({});
+ view.add_top_bar(new Adw.HeaderBar({}));
+
+ const clamp = new Adw.Clamp({});
+ clamp.set_child(box);
+ view.set_content(clamp);
+ dialog.set_child(view);
+
+ dialog.present(sender);
+ } catch (e) {
+ const alert = new Adw.AlertDialog({
+ heading: "Error",
+ body: e.message,
+ });
+ alert.add_response("ok", "OK");
+ alert.present(sender);
+ }
});
-
- dialog.show();
- });
}
- }
+ },
});
-
export default class VitalsPrefs extends ExtensionPreferences {
fillPreferencesWindow(window) {
window._settings = this.getSettings();
@@ -132,7 +182,7 @@ export default class VitalsPrefs extends ExtensionPreferences {
group.add(widget);
page.add(group);
window.add(page);
- window.set_default_size(widget.width, widget.height);
+ window.set_default_size(800, 600);
widget.show();
}
}
diff --git a/prefs.ui b/prefs.ui
index 950c1b0f..e7306c76 100644
--- a/prefs.ui
+++ b/prefs.ui
@@ -1,6 +1,7 @@
-
+
+
0
- 0
6
6
6
6
vertical
- 2
+ 20
-
- 0
- 1
- 1
- 1
+
+ General
-
- 0
- 12
- 9
- 12
- 12
- vertical
- 12
-
-
- 0
- start
- baseline
- General
-
-
-
+
+ Seconds between updates
+ if-valid
+
+
+ 0
+ 60
+ 50
+ 10
+ 1
+
+
+
+
+
+
+ Position in panel
+
+
+
+ - Left
+ - Center
+ - Right
+ - Far Left
+ - Far Right
+
+
+
+
+
+
+
+ Use higher precision
+
+
+
+
+ Alphabetize sensors
+
+
+
+
+ Hide zero values
+
+
+
+
+ Use fixed widths
+
+
+
+
+ Hide icons in top bar
+
+
+
+
+
+
+
+ Icon style
+
+
+
+ - Original
+ - GNOME
+
+
+
+
+
+
+
+
+
+ Sensors
+
+
+ Monitor temperature
+
+
+ 1
+ center
+ center
+ emblem-system-symbolic
+
-
-
- 0
-
-
- 0
- none
-
-
- 100
- 0
-
-
- 0
- 6
- 6
-
-
- 1
- 0
- start
- 5
- 5
- Seconds between updates
-
-
-
-
- 5
- 5
- 0
- 2
- update-time-params
- 1
- 1
- 1
- if-valid
-
-
-
-
-
-
-
-
- 100
- 0
- 0
-
-
- 0
- 6
- 6
-
-
- 1
- 0
- start
- 5
- 5
- Position in panel
-
-
-
-
- 0
- 5
- 0
-
- - Left
- - Center
- - Right
- - Far Left
- - Far Right
-
-
-
-
-
-
-
-
-
- 100
- 0
-
-
- 0
- 6
- 6
-
-
- 1
- 0
- start
- 5
- 5
- Use higher precision
-
-
-
-
- end
- 5
-
-
-
-
-
-
-
-
- 100
- 0
-
-
- 0
- 6
- 6
-
-
- 1
- 0
- start
- 5
- 5
- Alphabetize sensors
-
-
-
-
- end
- 5
-
-
-
-
-
-
-
-
- 100
- 0
-
-
- 0
- 6
- 6
-
-
- 1
- 0
- start
- 5
- 5
- Hide zero values
-
-
-
-
- end
- 5
-
-
-
-
-
-
-
-
- 100
- 0
-
-
- 0
- 6
- 6
-
-
- 1
- 0
- start
- 5
- 5
- Use fixed widths
-
-
-
-
- end
- 5
-
-
-
-
-
-
-
-
- 100
- 0
-
-
- 0
- 6
- 6
-
-
- 1
- 0
- start
- 5
- 5
- Hide icons in top bar
-
-
-
-
- end
- 5
-
-
-
-
-
-
-
-
- 100
- 0
-
-
- 0
- 6
- 6
-
-
- 1
- 0
- start
- 5
- 5
- Menu always centered
-
-
-
-
-
-
-
-
-
-
-
- 100
- 0
- 0
-
-
- 0
- 6
- 6
-
-
- 1
- 0
- start
- 5
- 5
- Icon style
-
-
-
-
- 0
- 5
- 0
-
- - Original
- - GNOME
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ Monitor voltage
+
+
+
+
+ Monitor fan
+
+
+
+
+ Monitor memory
+
+
+ 1
+ center
+ center
+ emblem-system-symbolic
+
-
- 0
- 6
- 9
- 12
- 12
- vertical
- 12
-
-
- 0
- start
- baseline
- Sensors
-
-
-
+
+ Monitor processor
+
+
+
+ 1
+ center
+ center
+ emblem-system-symbolic
+
-
-
- 0
-
-
- 0
-
-
- 100
- 0
-
-
- 0
- center
- 6
- 6
-
-
- 1
- 0
- start
- 5
- 5
- Monitor temperature
-
-
-
-
- 0
- 6
-
-
- 1
- center
- center
-
-
- 0
- emblem-system-symbolic
-
-
-
-
-
-
-
- end
- center
- 5
-
-
-
-
-
-
-
-
-
-
- 100
- 0
-
-
- 0
- center
- 6
- 6
-
-
- 1
- 0
- start
- 5
- 5
- Monitor voltage
-
-
-
-
- end
- 5
-
-
-
-
-
-
-
-
- 100
- 0
-
-
- 0
- center
- 6
- 6
-
-
- 1
- 0
- start
- 5
- 5
- Monitor fan
-
-
-
-
- end
- 5
-
-
-
-
-
-
-
-
- 100
- 0
-
-
- 0
- center
- 6
- 6
-
-
- 1
- 0
- start
- 5
- 5
- Monitor memory
-
-
-
-
- 0
- 6
-
-
- 1
- center
- center
-
-
- 0
- emblem-system-symbolic
-
-
-
-
-
-
-
- end
- center
- 5
-
-
-
-
-
-
-
-
-
-
- 100
- 0
-
-
- 0
- center
- 6
- 6
-
-
- 1
- 0
- start
- 5
- 5
- Monitor processor
-
-
-
-
- 0
- 6
-
-
- 1
- center
- center
-
-
- 0
- emblem-system-symbolic
-
-
-
-
-
-
-
- end
- center
- 5
-
-
-
-
-
-
-
-
-
-
- 100
- 0
-
-
- 0
- center
- 6
- 6
-
-
- 1
- 0
- start
- 5
- 5
- Monitor system
-
-
-
-
- 0
- 6
-
-
- 1
- center
- center
-
-
- 0
- emblem-system-symbolic
-
-
-
-
-
-
-
- end
- center
- 5
-
-
-
-
-
-
-
-
-
-
- 100
- 0
-
-
- 0
- center
- 6
- 6
-
-
- 1
- 0
- start
- 5
- 5
- Monitor network
-
-
-
-
- 0
- 6
-
-
- 1
- center
- center
-
-
- 0
- emblem-system-symbolic
-
-
-
-
-
-
-
- end
- center
- 5
-
-
-
-
-
-
-
-
-
-
- 100
- 0
-
-
- 0
- center
- 6
- 6
-
-
- 1
- 0
- start
- 5
- 5
- Monitor storage
-
-
-
-
- 0
- 6
-
-
- 1
- center
- center
-
-
- 0
- emblem-system-symbolic
-
-
-
-
-
-
-
- end
- center
- 5
-
-
-
-
-
-
-
-
-
-
- 100
- 0
-
-
- 0
- center
- 6
- 6
-
-
- 1
- 0
- start
- 5
- 5
- Monitor battery
-
-
-
-
- 0
- 6
-
-
- 1
- center
- center
-
-
- 0
- emblem-system-symbolic
-
-
-
-
-
-
-
- end
- center
- 5
-
-
-
-
-
-
-
-
-
-
- 100
- 0
-
-
- 0
- center
- 6
- 6
-
-
- 1
- 0
- start
- 5
- 5
- Monitor GPU (beta)
-
-
-
-
- 0
- 6
-
-
- 1
- center
- center
-
-
- 0
- emblem-system-symbolic
-
-
-
-
-
-
-
- end
- center
- 5
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ Monitor system
+
+
+
+ 1
+ center
+ center
+ emblem-system-symbolic
+
+
+
+
+
+
+
+ Monitor network
+
+
+
+ 1
+ center
+ center
+ emblem-system-symbolic
+
+
+
+
+
+
+
+ Monitor storage
+
+
+ 1
+ center
+ center
+ emblem-system-symbolic
+
+
+
+
+
+
+
+ Monitor battery
+
+
+ 1
+ center
+ center
+ emblem-system-symbolic
+
+
+
+
+
+
+
+ Monitor GPU (beta)
+
+
+ 1
+ center
+ center
+ emblem-system-symbolic
+
@@ -946,448 +275,227 @@
-
- start
- 0
- 12
- 9
- 12
- About
-
-
-
-
-
-
-
- 0
- 6
- 6
-
+
+ vertical
+ 6
+
- 0
start
- baseline
- 5
- 5
- 5
- 5
- Feature requests or bugs? Please visit <a href="https://github.com/corecoding/Vitals/issues">GitHub</a>. No warranty, expressed or implied. <a href="https://corecoding.com/donate.php">Donate</a> if you found this useful.
- 1
- 1
- 0
+ 12
+ 12
+ About
+
+
+
+
+
+
+
+ 6
+ 6
+
+
+ start
+ baseline
+ 5
+ 5
+ 5
+ 5
+ Feature requests or bugs? Please visit <a href="https://github.com/corecoding/Vitals/issues">GitHub</a>. No warranty, expressed or implied. <a href="https://corecoding.com/donate.php">Donate</a> if you found this useful.
+ 1
+ 1
+ 0
+
+
+
+
+
-
-
-
- 1
12
12
- 6
- 6
+ 12
+ 12
vertical
-
- 1
-
-
- 1
- none
-
-
- 100
- 1
- 0
-
-
- 1
- 6
- 6
- 6
- 6
- 12
-
-
- 1
- 1
- start
- Path
-
-
-
-
- /
- 1
- 1
- 24
-
-
-
-
-
-
-
-
- 100
- 0
-
-
- 0
- center
- 6
- 6
- 6
- 6
-
-
- 1
- 0
- start
- Measurement
-
-
-
-
- 0
- 0
-
- - Binary
- - Decimal
-
-
-
-
-
+
+
+ none
+
+
+ Path
+ 24
+
+
+
+
+ Measurement
+
+
+
+ - Binary
+ - Decimal
+
-
+
-
+
- 0
12
12
- 6
- 6
+ 12
+ 12
vertical
-
- 0
-
-
- 0
- none
-
-
- 100
- 1
- 0
-
-
- 0
- 6
- 6
- 6
- 6
- 12
-
-
- 1
- 0
- start
- Unit
-
-
-
-
- 0
- 0
- end
-
- - °C
- - °F
-
-
-
-
-
+
+
+ none
+
+
+ Unit
+
+
+
+ - °C
+ - °F
+
-
+
-
+
- 0
12
12
- 6
- 6
+ 12
+ 12
vertical
-
- 0
-
-
- 0
- none
-
-
- 100
- 1
- 0
-
-
- 0
- 6
- 6
- 6
- 6
- 12
-
-
- 1
- 0
- start
- Measurement
-
-
-
-
- 0
- 0
-
- - Binary
- - Decimal
-
-
-
-
-
+
+
+ none
+
+
+ Measurement
+
+
+
+ - Binary
+ - Decimal
+
-
+
-
+
- 0
12
12
- 6
- 6
+ 12
+ 12
vertical
-
- 0
-
-
- 0
- none
-
-
- 100
- 1
- 0
-
-
- 0
- 6
- 6
- 6
- 6
- 12
-
-
- 1
- 0
- start
- Display Battery
-
-
-
-
- 0
- 0
-
- - BAT0
- - BAT1
- - BAT2
- - BATT
- - CMB0
- - CMB1
- - CMB2
- - macsmc-battery
-
-
-
-
-
+
+ none
+
+
+
+ Display Battery
+
+
+
+ - BAT0
+ - BAT1
+ - BAT2
+ - BATT
+ - CMB0
+ - CMB1
+ - CMB2
+ - macsmc-battery
+
-
+
-
+
- 1
12
12
- 6
- 6
+ 12
+ 12
vertical
-
- 1
-
-
- 1
- none
-
-
- 100
- 1
- 0
-
-
- 1
- 6
- 6
- 6
- 6
- 12
-
-
- 1
- 1
- start
- Monitor command
-
-
-
-
- gnome-system-monitor
- 1
- 1
- 24
-
-
-
-
-
-
+
+
+ none
+
+
+ Monitor command
-
+
- 0
12
12
- 6
- 6
+ 12
+ 12
vertical
-
- 0
-
-
- 0
- none
-
-
- 100
- 1
- 0
-
-
- 0
- 6
- 6
- 6
- 6
- 12
-
-
- 1
- 0
- start
- Include static info
-
-
-
-
- end
- 5
-
-
-
-
-
-
+
+
+ none
+
+
+ Include static info
-
+
- 0
12
12
- 6
- 6
+ 12
+ 12
vertical
-
- 0
-
-
- 0
- none
-
-
- 100
- 1
- 0
-
-
- 0
- 6
- 6
- 6
- 6
- 12
-
-
- 1
- 0
- start
- Include static GPU info
-
-
-
-
- end
- 5
-
-
-
-
-
-
+
+
+ none
+
+
+ Include static GPU info
-
+