diff --git a/README.md b/README.md index 7f3ebbbe..65f01d8c 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,9 @@ Vitals is a GNOME Shell extension for displaying your computer's temperature, vo ## Credits Vitals was originally forked from [gnome-shell-extension-freon](https://github.com/UshakovVasilii/gnome-shell-extension-freon). I was having trouble finding an up to date, resource friendly and fully featured system monitoring tool. My biggest pet peeve was random system delays because of I/O blocking polls, and thus, the idea for Vitals was born! It has been refactored several times over, so most of the code is new or different. -### Icons +## Icons + +### Original Theme * (voltage|fan)-symbolic.svg - inherited from Freon project. * (system|storage)-symbolic.svg - from Pop! OS theme. * temperature-symbolic.svg - [iconnice studio](https://www.iconfinder.com/iconnice). @@ -94,6 +96,12 @@ Vitals was originally forked from [gnome-shell-extension-freon](https://github.c * network\*.svg - [Yannick Lung](https://www.iconfinder.com/yanlu). * Health icon - [Dod Cosmin](https://www.iconfinder.com/icons/458267/cross_doctor_drug_health_healthcare_hospital_icon). +### GNOME Theme +* (battery | storage)-symbolic.svg - from [Adwaita Icon Theme](https://gitlab.gnome.org/GNOME/adwaita-icon-theme). +* (memory | network* | system | voltage)-symbolic.svg - from [Icon Development Kit](https://gitlab.gnome.org/Teams/Design/icon-development-kit). +* fan-symbolic.svg - inherited from [Freon](https://github.com/UshakovVasilii/gnome-shell-extension-freon) project, with mild modifications. +* (temperature | cpu)-symbolic.svg - designed by [daudix](https://github.com/daudix). + ## Disclaimer Sensor data is obtained from the system using hwmon and GTop. Core Coding and the Vitals authors are not responsible for improperly represented data. No warranty expressed or implied. diff --git a/extension.js b/extension.js index 69893db2..63b50c50 100644 --- a/extension.js +++ b/extension.js @@ -44,6 +44,10 @@ var VitalsMenuButton = GObject.registerClass({ 'gpu' : { 'icon': 'gpu-symbolic.svg' } } + // list with the prefixes for the according themes, the index of each + // item must match the index on the combo box + this._sensorsIconPathPrefix = ['/icons/original/', '/icons/gnome/']; + this._warnings = []; this._sensorMenuItems = {}; this._hotLabels = {}; @@ -75,6 +79,7 @@ var VitalsMenuButton = GObject.registerClass({ this._addSettingChangedSignal('update-time', this._updateTimeChanged.bind(this)); this._addSettingChangedSignal('position-in-panel', this._positionInPanelChanged.bind(this)); this._addSettingChangedSignal('menu-centered', this._positionInPanelChanged.bind(this)); + this._addSettingChangedSignal('icon-style', this._iconStyleChanged.bind(this)); let settings = [ 'use-higher-precision', 'alphabetize', 'hide-zeros', 'fixed-widths', 'hide-icons', 'unit', 'memory-measurement', 'include-public-ip', 'network-speed-format', 'storage-measurement', 'include-static-info', 'include-static-gpu-info' ]; for (let setting of Object.values(settings)) @@ -305,6 +310,27 @@ var VitalsMenuButton = GObject.registerClass({ boxes[position[0]].insert_child_at_index(this.container, position[1]); } + _redrawDetailsMenuIcons() { + // updates the icons on the 'details' menu, the one + // you have to click to appear + this._sensors.resetHistory(); + for (const sensor in this._sensorIcons) { + if (sensor == "gpu") continue; + this._groups[sensor].icon.gicon = Gio.icon_new_for_string(this._sensorIconPath(sensor)); + } + + // gpu's are indexed differently, handle them here + const gpuKeys = Object.keys(this._groups).filter(key => key.startsWith("gpu#")); + gpuKeys.forEach((gpuKey) => { + this._groups[gpuKey].icon.gicon = Gio.icon_new_for_string(this._sensorIconPath("gpu")); + }); + } + + _iconStyleChanged() { + this._redrawDetailsMenuIcons(); + this._redrawMenu(); + } + _removeHotLabel(key) { if (key in this._hotLabels) { let label = this._hotLabels[key]; @@ -498,7 +524,8 @@ var VitalsMenuButton = GObject.registerClass({ let sensorKey = sensor; if(sensor.startsWith('gpu')) sensorKey = 'gpu'; - return this._extensionObject.path + '/icons/' + this._sensorIcons[sensorKey][icon]; + const iconPathPrefixIndex = this._settings.get_int('icon-style'); + return this._extensionObject.path + this._sensorsIconPathPrefix[iconPathPrefixIndex] + this._sensorIcons[sensorKey][icon]; } _ucFirst(string) { diff --git a/icons/battery-symbolic.svg b/icons/gnome/battery-symbolic.svg similarity index 100% rename from icons/battery-symbolic.svg rename to icons/gnome/battery-symbolic.svg diff --git a/icons/gnome/cpu-symbolic.svg b/icons/gnome/cpu-symbolic.svg new file mode 100644 index 00000000..86ca8bf7 --- /dev/null +++ b/icons/gnome/cpu-symbolic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/gnome/fan-symbolic.svg b/icons/gnome/fan-symbolic.svg new file mode 100644 index 00000000..ea2b44f7 --- /dev/null +++ b/icons/gnome/fan-symbolic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/gpu-symbolic.svg b/icons/gnome/gpu-symbolic.svg similarity index 100% rename from icons/gpu-symbolic.svg rename to icons/gnome/gpu-symbolic.svg diff --git a/icons/gnome/memory-symbolic.svg b/icons/gnome/memory-symbolic.svg new file mode 100644 index 00000000..1946901d --- /dev/null +++ b/icons/gnome/memory-symbolic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/gnome/network-download-symbolic.svg b/icons/gnome/network-download-symbolic.svg new file mode 100644 index 00000000..4fc170b5 --- /dev/null +++ b/icons/gnome/network-download-symbolic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/gnome/network-symbolic.svg b/icons/gnome/network-symbolic.svg new file mode 100644 index 00000000..2ff97782 --- /dev/null +++ b/icons/gnome/network-symbolic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/gnome/network-upload-symbolic.svg b/icons/gnome/network-upload-symbolic.svg new file mode 100644 index 00000000..0d67f652 --- /dev/null +++ b/icons/gnome/network-upload-symbolic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/gnome/storage-symbolic.svg b/icons/gnome/storage-symbolic.svg new file mode 100644 index 00000000..30d90078 --- /dev/null +++ b/icons/gnome/storage-symbolic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/gnome/system-symbolic.svg b/icons/gnome/system-symbolic.svg new file mode 100644 index 00000000..bfbf1bd5 --- /dev/null +++ b/icons/gnome/system-symbolic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/gnome/temperature-symbolic.svg b/icons/gnome/temperature-symbolic.svg new file mode 100644 index 00000000..e00a2eba --- /dev/null +++ b/icons/gnome/temperature-symbolic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/gnome/voltage-symbolic.svg b/icons/gnome/voltage-symbolic.svg new file mode 100644 index 00000000..1aa22102 --- /dev/null +++ b/icons/gnome/voltage-symbolic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/original/battery-symbolic.svg b/icons/original/battery-symbolic.svg new file mode 100644 index 00000000..70df9ee2 --- /dev/null +++ b/icons/original/battery-symbolic.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/icons/cpu-symbolic.svg b/icons/original/cpu-symbolic.svg similarity index 100% rename from icons/cpu-symbolic.svg rename to icons/original/cpu-symbolic.svg diff --git a/icons/fan-symbolic.svg b/icons/original/fan-symbolic.svg similarity index 100% rename from icons/fan-symbolic.svg rename to icons/original/fan-symbolic.svg diff --git a/icons/original/gpu-symbolic.svg b/icons/original/gpu-symbolic.svg new file mode 100644 index 00000000..d5cf1577 --- /dev/null +++ b/icons/original/gpu-symbolic.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/icons/memory-symbolic.svg b/icons/original/memory-symbolic.svg similarity index 100% rename from icons/memory-symbolic.svg rename to icons/original/memory-symbolic.svg diff --git a/icons/network-download-symbolic.svg b/icons/original/network-download-symbolic.svg similarity index 100% rename from icons/network-download-symbolic.svg rename to icons/original/network-download-symbolic.svg diff --git a/icons/network-symbolic.svg b/icons/original/network-symbolic.svg similarity index 100% rename from icons/network-symbolic.svg rename to icons/original/network-symbolic.svg diff --git a/icons/network-upload-symbolic.svg b/icons/original/network-upload-symbolic.svg similarity index 100% rename from icons/network-upload-symbolic.svg rename to icons/original/network-upload-symbolic.svg diff --git a/icons/storage-symbolic.svg b/icons/original/storage-symbolic.svg similarity index 100% rename from icons/storage-symbolic.svg rename to icons/original/storage-symbolic.svg diff --git a/icons/system-symbolic.svg b/icons/original/system-symbolic.svg similarity index 100% rename from icons/system-symbolic.svg rename to icons/original/system-symbolic.svg diff --git a/icons/temperature-symbolic.svg b/icons/original/temperature-symbolic.svg similarity index 100% rename from icons/temperature-symbolic.svg rename to icons/original/temperature-symbolic.svg diff --git a/icons/voltage-symbolic.svg b/icons/original/voltage-symbolic.svg similarity index 100% rename from icons/voltage-symbolic.svg rename to icons/original/voltage-symbolic.svg diff --git a/prefs.js b/prefs.js index db28afa3..07916bdf 100644 --- a/prefs.js +++ b/prefs.js @@ -62,7 +62,7 @@ const Settings = new GObject.Class({ } // process individual drop down sensor preferences - sensors = [ 'position-in-panel', 'unit', 'network-speed-format', 'memory-measurement', 'storage-measurement', 'battery-slot' ]; + 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]; diff --git a/prefs.ui b/prefs.ui index 978d903e..e254fb94 100644 --- a/prefs.ui +++ b/prefs.ui @@ -45,6 +45,7 @@ end + 5 @@ -146,6 +147,7 @@ 0 start 5 + 5 Seconds between updates @@ -181,6 +183,7 @@ 0 start 5 + 5 Position in panel @@ -217,12 +220,14 @@ 0 start 5 + 5 Use higher precision end + 5 @@ -244,12 +249,14 @@ 0 start 5 + 5 Alphabetize sensors end + 5 @@ -271,12 +278,14 @@ 0 start 5 + 5 Hide zero values end + 5 @@ -298,12 +307,14 @@ 0 start 5 + 5 Use fixed widths end + 5 @@ -325,12 +336,14 @@ 0 start 5 + 5 Hide icons in top bar end + 5 @@ -352,49 +365,54 @@ 0 start 5 + 5 Menu always centered end + 5 + + + + + + + + + 100 + 0 + + + 0 + 6 + 6 + + + 1 + 0 + start + 5 + 5 + Icon style + + + + + 0 + 5 + 0 + + Original + GNOME + - - - - - - - - - - 0 - start - baseline - About - - - - - - - - 0 - - - 0 - start - baseline - 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 @@ -446,6 +464,7 @@ 0 start 5 + 5 Monitor temperature @@ -473,6 +492,7 @@ end center + 5 @@ -497,12 +517,14 @@ 0 start 5 + 5 Monitor voltage end + 5 @@ -525,12 +547,14 @@ 0 start 5 + 5 Monitor fan end + 5 @@ -553,6 +577,7 @@ 0 start 5 + 5 Monitor memory @@ -580,6 +605,7 @@ end center + 5 @@ -604,6 +630,7 @@ 0 start 5 + 5 Monitor processor @@ -631,6 +658,7 @@ end center + 5 @@ -655,6 +683,7 @@ 0 start 5 + 5 Monitor system @@ -682,6 +711,7 @@ end center + 5 @@ -706,6 +736,7 @@ 0 start 5 + 5 Monitor network @@ -733,6 +764,7 @@ end center + 5 @@ -757,6 +789,7 @@ 0 start 5 + 5 Monitor storage @@ -784,6 +817,7 @@ end center + 5 @@ -808,6 +842,7 @@ 0 start 5 + 5 Monitor battery @@ -835,6 +870,7 @@ end center + 5 @@ -859,6 +895,7 @@ 0 start 5 + 5 Monitor gpu (beta; NVIDIA only) @@ -886,6 +923,7 @@ end center + 5 @@ -905,6 +943,44 @@ + + + start + 0 + 12 + 9 + 12 + About + + + + + + + + 0 + 6 + 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 + + + + + + + 1 @@ -1248,6 +1324,7 @@ end + 5 @@ -1297,6 +1374,7 @@ end + 5 diff --git a/schemas/gschemas.compiled b/schemas/gschemas.compiled index f608987e..936fdb3a 100644 Binary files a/schemas/gschemas.compiled and b/schemas/gschemas.compiled differ diff --git a/schemas/org.gnome.shell.extensions.vitals.gschema.xml b/schemas/org.gnome.shell.extensions.vitals.gschema.xml index 39310855..62728687 100644 --- a/schemas/org.gnome.shell.extensions.vitals.gschema.xml +++ b/schemas/org.gnome.shell.extensions.vitals.gschema.xml @@ -126,6 +126,11 @@ Make the menu centered Center the menu to the icon regardless of the position in the panel + + 0 + Icon styles + Set the style for the displayed sensor icons ('original', 'updated') + "gnome-system-monitor" System Monitor command