diff --git a/data/net.nokyan.Resources.gschema.xml.in b/data/net.nokyan.Resources.gschema.xml.in index 0d5c4c6d..15e71f66 100644 --- a/data/net.nokyan.Resources.gschema.xml.in +++ b/data/net.nokyan.Resources.gschema.xml.in @@ -141,6 +141,18 @@ false Display GPU memory usage in Processes view + + false + Display total CPU time in Processes view + + + false + Display user CPU time in Processes view + + + false + Display system CPU time in Processes view + false Display logical CPU graphs in Processor view diff --git a/data/resources/ui/dialogs/process_dialog.ui b/data/resources/ui/dialogs/process_dialog.ui index 7358c1d1..a388c6f9 100644 --- a/data/resources/ui/dialogs/process_dialog.ui +++ b/data/resources/ui/dialogs/process_dialog.ui @@ -140,6 +140,33 @@ Video Decoder + + + + true + Total CPU Time + + + + + + true + User CPU Time + + + + + + true + System CPU Time + + diff --git a/data/resources/ui/dialogs/settings_dialog.ui b/data/resources/ui/dialogs/settings_dialog.ui index e22e39ee..2b874811 100644 --- a/data/resources/ui/dialogs/settings_dialog.ui +++ b/data/resources/ui/dialogs/settings_dialog.ui @@ -240,6 +240,21 @@ Video Decoder + + + Total CPU Time + + + + + User CPU Time + + + + + System CPU Time + + diff --git a/lib/process_data/src/lib.rs b/lib/process_data/src/lib.rs index a90f1686..f87113d8 100644 --- a/lib/process_data/src/lib.rs +++ b/lib/process_data/src/lib.rs @@ -126,7 +126,8 @@ pub struct ProcessData { proc_path: PathBuf, pub comm: String, pub commandline: String, - pub cpu_time: u64, + pub user_cpu_time: u64, + pub system_cpu_time: u64, pub cpu_time_timestamp: u64, pub memory_usage: usize, pub starttime: u64, // in clock ticks, see man proc(5)! @@ -244,7 +245,8 @@ impl ProcessData { let comm = comm.replace('\n', ""); // -2 to accommodate for only collecting after the second item (which is the executable name as mentioned above) - let cpu_time = stat[13 - 2].parse::()? + stat[14 - 2].parse::()?; + let user_cpu_time = stat[13 - 2].parse::()?; + let system_cpu_time = stat[14 - 2].parse::()?; let cpu_time_timestamp = unix_as_millis(); @@ -285,7 +287,8 @@ impl ProcessData { uid, comm, commandline, - cpu_time, + user_cpu_time, + system_cpu_time, cpu_time_timestamp, memory_usage, starttime, diff --git a/po/de.po b/po/de.po index e383964b..fabc34e3 100644 --- a/po/de.po +++ b/po/de.po @@ -1,23 +1,24 @@ # +# piekay <>, 2024. # nokyan , 2022-2024. # msgid "" msgstr "" "Project-Id-Version: resources\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 20:24+0100\n" -"PO-Revision-Date: 2024-02-28 20:27+0100\n" -"Last-Translator: piekay\n" +"POT-Creation-Date: 2024-04-07 13:57+0200\n" +"PO-Revision-Date: 2024-04-07 14:09+0200\n" +"Last-Translator: nokyan \n" "Language-Team: German \n" "Language: de\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" -"X-Generator: Gtranslator 45.3\n" +"X-Generator: Gtranslator 46.0\n" #: data/net.nokyan.Resources.desktop.in.in:3 -#: data/net.nokyan.Resources.metainfo.xml.in.in:4 src/application.rs:194 +#: data/net.nokyan.Resources.metainfo.xml.in.in:4 src/application.rs:191 msgid "Resources" msgstr "Ressourcen" @@ -43,8 +44,8 @@ msgid "" msgstr "" "Ressourcen ermöglicht es Ihnen, die Auslastung Ihrer Systemressourcen zu " "überwachen und Ihre laufenden Prozesse und Anwendungen zu kontrollieren. " -"Dank GNOMEs libadwaita ist Ressourcen einfach verständlich " -"und passt somit perfekt in einen modernen Desktop." +"Dank GNOMEs libadwaita ist Ressourcen einfach verständlich und passt somit " +"perfekt in einen modernen Desktop." #: data/net.nokyan.Resources.metainfo.xml.in.in:21 msgid "Resources supports monitoring the following components:" @@ -55,28 +56,28 @@ msgid "CPU" msgstr "CPU" #: data/net.nokyan.Resources.metainfo.xml.in.in:26 -#: src/ui/pages/applications/mod.rs:657 src/ui/pages/memory.rs:119 -#: src/ui/pages/memory.rs:190 src/ui/pages/processes/mod.rs:750 -#: data/resources/ui/window.ui:155 data/resources/ui/window.ui:162 -#: data/resources/ui/dialogs/app_dialog.ui:83 -#: data/resources/ui/dialogs/process_dialog.ui:70 -#: data/resources/ui/dialogs/settings_dialog.ui:127 -#: data/resources/ui/dialogs/settings_dialog.ui:198 +#: src/ui/pages/applications/mod.rs:664 src/ui/pages/memory.rs:132 +#: src/ui/pages/memory.rs:205 src/ui/pages/processes/mod.rs:751 +#: data/resources/ui/window.ui:158 data/resources/ui/window.ui:165 +#: data/resources/ui/dialogs/app_dialog.ui:81 +#: data/resources/ui/dialogs/process_dialog.ui:68 +#: data/resources/ui/dialogs/settings_dialog.ui:124 +#: data/resources/ui/dialogs/settings_dialog.ui:195 msgid "Memory" msgstr "Arbeitsspeicher" #: data/net.nokyan.Resources.metainfo.xml.in.in:27 -#: src/ui/pages/applications/mod.rs:947 src/ui/pages/gpu.rs:138 -#: src/ui/pages/processes/mod.rs:1051 src/ui/window.rs:277 -#: data/resources/ui/dialogs/app_dialog.ui:132 -#: data/resources/ui/dialogs/process_dialog.ui:115 -#: data/resources/ui/dialogs/settings_dialog.ui:157 -#: data/resources/ui/dialogs/settings_dialog.ui:228 +#: src/ui/pages/applications/mod.rs:954 src/ui/pages/gpu.rs:146 +#: src/ui/pages/processes/mod.rs:1052 src/ui/window.rs:278 +#: data/resources/ui/dialogs/app_dialog.ui:130 +#: data/resources/ui/dialogs/process_dialog.ui:113 +#: data/resources/ui/dialogs/settings_dialog.ui:154 +#: data/resources/ui/dialogs/settings_dialog.ui:225 msgid "GPU" msgstr "GPU" #: data/net.nokyan.Resources.metainfo.xml.in.in:28 -#: data/resources/ui/dialogs/settings_dialog.ui:266 +#: data/resources/ui/dialogs/settings_dialog.ui:278 msgid "Network Interfaces" msgstr "Netzwerkschnittstellen" @@ -84,169 +85,167 @@ msgstr "Netzwerkschnittstellen" msgid "Storage Devices" msgstr "Datenträger" -#: src/application.rs:196 +#: src/application.rs:193 msgid "The Nalux Team" msgstr "Das Nalux-Team" -#: src/application.rs:204 +#: src/application.rs:201 msgid "Report Issues" msgstr "Probleme melden" #. Translator credits. Replace "translator-credits" with your name/username, and optionally an email or URL. #. One name per line, please do not remove previous names. -#: src/application.rs:210 +#: src/application.rs:207 msgid "translator-credits" -msgstr "" -"nokyan " -"piekay" +msgstr "nokyan piekay" -#: src/application.rs:211 +#: src/application.rs:208 msgid "Icon by" msgstr "Icon von" -#: src/ui/dialogs/app_dialog.rs:163 src/ui/dialogs/process_dialog.rs:188 -#: src/ui/pages/drive.rs:267 src/ui/pages/drive.rs:273 +#: src/ui/dialogs/app_dialog.rs:161 src/ui/dialogs/process_dialog.rs:202 +#: src/ui/pages/drive.rs:295 src/ui/pages/drive.rs:301 msgid "No" msgstr "Nein" -#: src/ui/dialogs/app_dialog.rs:164 src/ui/dialogs/process_dialog.rs:189 +#: src/ui/dialogs/app_dialog.rs:162 src/ui/dialogs/process_dialog.rs:203 msgid "Yes (Flatpak)" msgstr "Ja (Flatpak)" -#: src/ui/dialogs/app_dialog.rs:165 src/ui/dialogs/process_dialog.rs:190 +#: src/ui/dialogs/app_dialog.rs:163 src/ui/dialogs/process_dialog.rs:204 msgid "Yes (Snap)" msgstr "Ja (Snap)" -#: src/ui/dialogs/process_dialog.rs:129 src/ui/dialogs/process_dialog.rs:136 -#: src/ui/dialogs/process_dialog.rs:143 src/ui/dialogs/process_dialog.rs:150 -#: src/ui/dialogs/process_dialog.rs:176 src/ui/dialogs/process_dialog.rs:183 -#: src/ui/dialogs/process_dialog.rs:185 src/ui/pages/applications/mod.rs:766 -#: src/ui/pages/applications/mod.rs:864 src/ui/pages/cpu.rs:222 -#: src/ui/pages/cpu.rs:237 src/ui/pages/cpu.rs:251 src/ui/pages/cpu.rs:257 -#: src/ui/pages/cpu.rs:263 src/ui/pages/cpu.rs:269 src/ui/pages/cpu.rs:273 -#: src/ui/pages/cpu.rs:276 src/ui/pages/cpu.rs:364 src/ui/pages/gpu.rs:240 -#: src/ui/pages/gpu.rs:285 src/ui/pages/gpu.rs:308 src/ui/pages/gpu.rs:311 -#: src/ui/pages/gpu.rs:322 src/ui/pages/gpu.rs:344 src/ui/pages/gpu.rs:354 -#: src/ui/pages/gpu.rs:368 src/ui/pages/gpu.rs:371 src/ui/pages/gpu.rs:377 -#: src/ui/pages/gpu.rs:384 src/ui/pages/gpu.rs:388 src/ui/pages/gpu.rs:391 -#: src/ui/pages/memory.rs:225 src/ui/pages/memory.rs:230 -#: src/ui/pages/memory.rs:235 src/ui/pages/memory.rs:236 -#: src/ui/pages/memory.rs:240 src/ui/pages/memory.rs:245 -#: src/ui/pages/memory.rs:274 src/ui/pages/memory.rs:328 -#: src/ui/pages/network.rs:238 src/ui/pages/network.rs:246 -#: src/ui/pages/network.rs:253 src/ui/pages/network.rs:260 -#: src/ui/pages/network.rs:263 src/ui/pages/processes/mod.rs:858 -#: src/ui/pages/processes/mod.rs:911 src/ui/pages/processes/mod.rs:964 -#: src/ui/pages/processes/mod.rs:1017 src/utils/app.rs:686 src/utils/app.rs:762 -#: src/utils/drive.rs:90 src/utils/gpu/mod.rs:250 src/utils/gpu/mod.rs:256 +#: src/ui/dialogs/process_dialog.rs:133 src/ui/dialogs/process_dialog.rs:140 +#: src/ui/dialogs/process_dialog.rs:147 src/ui/dialogs/process_dialog.rs:154 +#: src/ui/dialogs/process_dialog.rs:190 src/ui/dialogs/process_dialog.rs:197 +#: src/ui/dialogs/process_dialog.rs:199 src/ui/pages/applications/mod.rs:773 +#: src/ui/pages/applications/mod.rs:871 src/ui/pages/cpu.rs:237 +#: src/ui/pages/cpu.rs:252 src/ui/pages/cpu.rs:266 src/ui/pages/cpu.rs:272 +#: src/ui/pages/cpu.rs:278 src/ui/pages/cpu.rs:284 src/ui/pages/cpu.rs:288 +#: src/ui/pages/cpu.rs:291 src/ui/pages/cpu.rs:379 src/ui/pages/gpu.rs:251 +#: src/ui/pages/gpu.rs:296 src/ui/pages/gpu.rs:321 src/ui/pages/gpu.rs:324 +#: src/ui/pages/gpu.rs:335 src/ui/pages/gpu.rs:355 src/ui/pages/gpu.rs:367 +#: src/ui/pages/gpu.rs:381 src/ui/pages/gpu.rs:383 src/ui/pages/gpu.rs:395 +#: src/ui/pages/gpu.rs:402 src/ui/pages/gpu.rs:406 src/ui/pages/memory.rs:240 +#: src/ui/pages/memory.rs:241 src/ui/pages/memory.rs:245 +#: src/ui/pages/memory.rs:246 src/ui/pages/memory.rs:250 +#: src/ui/pages/memory.rs:251 src/ui/pages/memory.rs:279 +#: src/ui/pages/memory.rs:333 src/ui/pages/network.rs:257 +#: src/ui/pages/network.rs:264 src/ui/pages/network.rs:271 +#: src/ui/pages/network.rs:277 src/ui/pages/network.rs:280 +#: src/ui/pages/processes/mod.rs:859 src/ui/pages/processes/mod.rs:912 +#: src/ui/pages/processes/mod.rs:965 src/ui/pages/processes/mod.rs:1018 +#: src/utils/app.rs:686 src/utils/app.rs:762 src/utils/drive.rs:90 +#: src/utils/gpu/mod.rs:255 src/utils/gpu/mod.rs:261 msgid "N/A" msgstr "n. v." -#: src/ui/pages/applications/mod.rs:141 data/resources/ui/window.ui:62 -#: data/resources/ui/window.ui:69 -#: data/resources/ui/dialogs/settings_dialog.ui:121 +#: src/ui/pages/applications/mod.rs:150 data/resources/ui/window.ui:65 +#: data/resources/ui/window.ui:72 +#: data/resources/ui/dialogs/settings_dialog.ui:118 msgid "Applications" msgstr "Anwendungen" -#: src/ui/pages/applications/mod.rs:561 +#: src/ui/pages/applications/mod.rs:567 msgid "Running Applications: {}" msgstr "Laufende Anwendungen: {}" -#: src/ui/pages/applications/mod.rs:590 src/ui/pages/processes/mod.rs:572 +#: src/ui/pages/applications/mod.rs:595 src/ui/pages/processes/mod.rs:576 msgid "Cancel" msgstr "Abbrechen" -#: src/ui/pages/applications/mod.rs:615 +#: src/ui/pages/applications/mod.rs:622 msgid "Application" msgstr "Anwendung" -#: src/ui/pages/applications/mod.rs:703 src/ui/pages/cpu.rs:136 -#: src/ui/pages/processes/mod.rs:795 src/ui/window.rs:316 -#: data/resources/ui/window.ui:124 data/resources/ui/window.ui:131 -#: data/resources/ui/dialogs/app_dialog.ui:74 -#: data/resources/ui/dialogs/process_dialog.ui:61 -#: data/resources/ui/dialogs/settings_dialog.ui:132 -#: data/resources/ui/dialogs/settings_dialog.ui:203 +#: src/ui/pages/applications/mod.rs:710 src/ui/pages/cpu.rs:149 +#: src/ui/pages/processes/mod.rs:796 src/ui/window.rs:317 +#: data/resources/ui/window.ui:127 data/resources/ui/window.ui:134 +#: data/resources/ui/dialogs/app_dialog.ui:72 +#: data/resources/ui/dialogs/process_dialog.ui:59 +#: data/resources/ui/dialogs/settings_dialog.ui:129 +#: data/resources/ui/dialogs/settings_dialog.ui:200 msgid "Processor" msgstr "Prozessor" -#: src/ui/pages/applications/mod.rs:748 src/ui/pages/processes/mod.rs:840 -#: data/resources/ui/dialogs/app_dialog.ui:92 -#: data/resources/ui/dialogs/process_dialog.ui:75 -#: data/resources/ui/dialogs/settings_dialog.ui:137 -#: data/resources/ui/dialogs/settings_dialog.ui:208 +#: src/ui/pages/applications/mod.rs:755 src/ui/pages/processes/mod.rs:841 +#: data/resources/ui/dialogs/app_dialog.ui:90 +#: data/resources/ui/dialogs/process_dialog.ui:73 +#: data/resources/ui/dialogs/settings_dialog.ui:134 +#: data/resources/ui/dialogs/settings_dialog.ui:205 msgid "Drive Read" msgstr "Lesevorgänge" -#: src/ui/pages/applications/mod.rs:799 src/ui/pages/processes/mod.rs:893 -#: data/resources/ui/dialogs/app_dialog.ui:101 -#: data/resources/ui/dialogs/process_dialog.ui:84 -#: data/resources/ui/dialogs/settings_dialog.ui:142 -#: data/resources/ui/dialogs/settings_dialog.ui:213 +#: src/ui/pages/applications/mod.rs:806 src/ui/pages/processes/mod.rs:894 +#: data/resources/ui/dialogs/app_dialog.ui:99 +#: data/resources/ui/dialogs/process_dialog.ui:82 +#: data/resources/ui/dialogs/settings_dialog.ui:139 +#: data/resources/ui/dialogs/settings_dialog.ui:210 msgid "Drive Read Total" msgstr "Lesevorgänge insgesamt" -#: src/ui/pages/applications/mod.rs:846 src/ui/pages/processes/mod.rs:946 -#: data/resources/ui/dialogs/app_dialog.ui:110 -#: data/resources/ui/dialogs/process_dialog.ui:93 -#: data/resources/ui/dialogs/settings_dialog.ui:147 -#: data/resources/ui/dialogs/settings_dialog.ui:218 +#: src/ui/pages/applications/mod.rs:853 src/ui/pages/processes/mod.rs:947 +#: data/resources/ui/dialogs/app_dialog.ui:108 +#: data/resources/ui/dialogs/process_dialog.ui:91 +#: data/resources/ui/dialogs/settings_dialog.ui:144 +#: data/resources/ui/dialogs/settings_dialog.ui:215 msgid "Drive Write" msgstr "Schreibvorgänge" -#: src/ui/pages/applications/mod.rs:899 src/ui/pages/processes/mod.rs:999 -#: data/resources/ui/dialogs/app_dialog.ui:119 -#: data/resources/ui/dialogs/process_dialog.ui:102 -#: data/resources/ui/dialogs/settings_dialog.ui:152 -#: data/resources/ui/dialogs/settings_dialog.ui:223 +#: src/ui/pages/applications/mod.rs:906 src/ui/pages/processes/mod.rs:1000 +#: data/resources/ui/dialogs/app_dialog.ui:117 +#: data/resources/ui/dialogs/process_dialog.ui:100 +#: data/resources/ui/dialogs/settings_dialog.ui:149 +#: data/resources/ui/dialogs/settings_dialog.ui:220 msgid "Drive Write Total" msgstr "Schreibvorgänge insgesamt" -#: src/ui/pages/applications/mod.rs:992 src/ui/pages/processes/mod.rs:1096 -#: data/resources/ui/dialogs/app_dialog.ui:150 -#: data/resources/ui/dialogs/process_dialog.ui:133 -#: data/resources/ui/dialogs/settings_dialog.ui:167 -#: data/resources/ui/dialogs/settings_dialog.ui:238 +#: src/ui/pages/applications/mod.rs:999 src/ui/pages/processes/mod.rs:1097 +#: data/resources/ui/dialogs/app_dialog.ui:148 +#: data/resources/ui/dialogs/process_dialog.ui:131 +#: data/resources/ui/dialogs/settings_dialog.ui:164 +#: data/resources/ui/dialogs/settings_dialog.ui:235 msgid "Video Encoder" msgstr "Videokodierer" -#: src/ui/pages/applications/mod.rs:1039 src/ui/pages/processes/mod.rs:1143 -#: data/resources/ui/dialogs/app_dialog.ui:159 -#: data/resources/ui/dialogs/process_dialog.ui:142 -#: data/resources/ui/dialogs/settings_dialog.ui:172 -#: data/resources/ui/dialogs/settings_dialog.ui:243 +#: src/ui/pages/applications/mod.rs:1046 src/ui/pages/processes/mod.rs:1144 +#: data/resources/ui/dialogs/app_dialog.ui:157 +#: data/resources/ui/dialogs/process_dialog.ui:140 +#: data/resources/ui/dialogs/settings_dialog.ui:169 +#: data/resources/ui/dialogs/settings_dialog.ui:240 msgid "Video Decoder" msgstr "Videodekodierer" -#: src/ui/pages/applications/mod.rs:1085 src/ui/pages/processes/mod.rs:1190 -#: data/resources/ui/dialogs/app_dialog.ui:141 -#: data/resources/ui/dialogs/process_dialog.ui:124 -#: data/resources/ui/dialogs/settings_dialog.ui:162 -#: data/resources/ui/dialogs/settings_dialog.ui:233 +#: src/ui/pages/applications/mod.rs:1092 src/ui/pages/processes/mod.rs:1191 +#: data/resources/ui/dialogs/app_dialog.ui:139 +#: data/resources/ui/dialogs/process_dialog.ui:122 +#: data/resources/ui/dialogs/settings_dialog.ui:159 +#: data/resources/ui/dialogs/settings_dialog.ui:230 msgid "Video Memory" msgstr "Grafikspeicher" -#: src/ui/pages/applications/mod.rs:1129 src/ui/pages/processes/mod.rs:1235 +#: src/ui/pages/applications/mod.rs:1136 src/ui/pages/processes/mod.rs:1374 msgid "End {}?" msgstr "{} beenden?" -#: src/ui/pages/applications/mod.rs:1130 src/ui/pages/processes/mod.rs:1236 +#: src/ui/pages/applications/mod.rs:1137 src/ui/pages/processes/mod.rs:1375 msgid "Halt {}?" msgstr "{} anhalten?" -#: src/ui/pages/applications/mod.rs:1131 src/ui/pages/processes/mod.rs:1237 +#: src/ui/pages/applications/mod.rs:1138 src/ui/pages/processes/mod.rs:1376 msgid "Kill {}?" msgstr "{} abwürgen?" -#: src/ui/pages/applications/mod.rs:1132 src/ui/pages/processes/mod.rs:1238 +#: src/ui/pages/applications/mod.rs:1139 src/ui/pages/processes/mod.rs:1377 msgid "Continue {}?" msgstr "{} fortsetzen?" -#: src/ui/pages/applications/mod.rs:1138 src/ui/pages/processes/mod.rs:1244 +#: src/ui/pages/applications/mod.rs:1145 src/ui/pages/processes/mod.rs:1383 msgid "Unsaved work might be lost." msgstr "Ungespeicherte Daten könnten verloren gehen." -#: src/ui/pages/applications/mod.rs:1139 +#: src/ui/pages/applications/mod.rs:1146 msgid "" "Halting an application can come with serious risks such as losing data and " "security implications. Use with caution." @@ -254,7 +253,7 @@ msgstr "" "Das Anhalten einer Anwendung ist mit Risiken wie dem Verlust von Daten sowie " "Sicherheitsproblemen verbunden. Sie sollten vorsichtig sein." -#: src/ui/pages/applications/mod.rs:1140 +#: src/ui/pages/applications/mod.rs:1147 msgid "" "Killing an application can come with serious risks such as losing data and " "security implications. Use with caution." @@ -262,148 +261,166 @@ msgstr "" "Das Abwürgen einer Anwendung ist mit Risiken wie dem Verlust von Daten sowie " "Sicherheitsproblemen verbunden. Sie sollten vorsichtig sein." -#: src/ui/pages/applications/mod.rs:1147 +#: src/ui/pages/applications/mod.rs:1154 msgid "End application" msgstr "Anwendung beenden" -#: src/ui/pages/applications/mod.rs:1148 +#: src/ui/pages/applications/mod.rs:1155 msgid "Halt application" msgstr "Anwendung anhalten" -#: src/ui/pages/applications/mod.rs:1149 +#: src/ui/pages/applications/mod.rs:1156 msgid "Kill application" msgstr "Anwendung abwürgen" -#: src/ui/pages/applications/mod.rs:1150 +#: src/ui/pages/applications/mod.rs:1157 msgid "Continue application" msgstr "Anwendung fortfahren" -#: src/ui/pages/cpu.rs:221 src/ui/pages/gpu.rs:210 +#: src/ui/pages/cpu.rs:236 src/ui/pages/gpu.rs:222 msgid "Total Usage" msgstr "Gesamtauslastung" -#: src/ui/pages/cpu.rs:236 src/ui/pages/cpu.rs:348 src/ui/pages/cpu.rs:352 +#: src/ui/pages/cpu.rs:251 src/ui/pages/cpu.rs:363 src/ui/pages/cpu.rs:367 msgid "CPU {}" msgstr "CPU {}" -#: src/ui/pages/drive.rs:135 +#: src/ui/pages/drive.rs:151 msgid "Drive" msgstr "Speicher" -#: src/ui/pages/drive.rs:216 +#: src/ui/pages/drive.rs:244 msgid "Drive Activity" msgstr "Speicheraktivität" -#: src/ui/pages/drive.rs:223 +#: src/ui/pages/drive.rs:251 msgid "Read Speed" msgstr "Lesegeschwindigkeit" -#: src/ui/pages/drive.rs:227 +#: src/ui/pages/drive.rs:255 msgid "Write Speed" msgstr "Schreibgeschwindigkeit" -#: src/ui/pages/drive.rs:265 src/ui/pages/drive.rs:271 +#: src/ui/pages/drive.rs:293 src/ui/pages/drive.rs:299 msgid "Yes" msgstr "Ja" -#: src/ui/pages/drive.rs:339 src/ui/pages/drive.rs:344 -#: src/ui/pages/network.rs:309 src/ui/pages/network.rs:318 +#: src/ui/pages/drive.rs:367 src/ui/pages/drive.rs:372 +#: src/ui/pages/network.rs:326 src/ui/pages/network.rs:335 msgid "Highest:" msgstr "Höchste:" #. Translators: This is an abbreviation for "Read" and "Write". This is displayed in the sidebar so your #. translation should preferably be quite short or an abbreviation -#: src/ui/pages/drive.rs:352 +#: src/ui/pages/drive.rs:380 msgid "R: {} · W: {}" msgstr "L: {} · S: {}" -#: src/ui/pages/gpu.rs:218 +#: src/ui/pages/gpu.rs:230 msgid "Video Encoder/Decoder Usage" msgstr "Videokodierer/Videodekodierer" -#: src/ui/pages/gpu.rs:224 +#: src/ui/pages/gpu.rs:236 msgid "Video Encoder Usage" msgstr "Videokodiererauslastung" -#: src/ui/pages/gpu.rs:229 +#: src/ui/pages/gpu.rs:241 msgid "Video Decoder Usage" msgstr "Videodekodiererauslastung" -#: src/ui/pages/gpu.rs:234 +#: src/ui/pages/gpu.rs:246 msgid "Video Memory Usage" msgstr "Grafikspeicherauslastung" -#: src/ui/pages/gpu.rs:397 +#: src/ui/pages/gpu.rs:412 msgid "VRAM: {}" msgstr "VRAM: {}" -#: src/ui/pages/memory.rs:196 +#: src/ui/pages/memory.rs:211 msgid "Swap" msgstr "Auslagerungsspeicher" -#: src/ui/pages/memory.rs:270 +#: src/ui/pages/memory.rs:275 msgid "{} of {}" msgstr "{} von {}" -#: src/ui/pages/memory.rs:273 +#: src/ui/pages/memory.rs:278 msgid "{} MT/s" msgstr "{} MT/s" #. Translators: This will be displayed in the sidebar, so your translation for "Swap" should #. preferably be quite short or an abbreviation -#: src/ui/pages/memory.rs:347 +#: src/ui/pages/memory.rs:352 msgid "{} / {} · Swap: {} %" msgstr "{} / {} · Ausl.: {} %" -#: src/ui/pages/network.rs:134 src/utils/network.rs:122 +#: src/ui/pages/network.rs:149 src/utils/network.rs:122 msgid "Network Interface" msgstr "Netzwerkschnittstelle" -#: src/ui/pages/network.rs:221 +#: src/ui/pages/network.rs:245 msgid "Receiving" msgstr "Empfangen" -#: src/ui/pages/network.rs:229 +#: src/ui/pages/network.rs:249 msgid "Sending" msgstr "Senden" #. Translators: This is an abbreviation for "Receive" and "Send". This is displayed in the sidebar so #. your translation should preferably be quite short or an abbreviation -#: src/ui/pages/network.rs:332 +#: src/ui/pages/network.rs:346 msgid "R: {} · S: {}" msgstr "E: {} · S: {}" -#: src/ui/pages/processes/mod.rs:149 data/resources/ui/window.ui:93 -#: data/resources/ui/window.ui:100 -#: data/resources/ui/dialogs/settings_dialog.ui:182 +#: src/ui/pages/processes/mod.rs:158 data/resources/ui/window.ui:96 +#: data/resources/ui/window.ui:103 +#: data/resources/ui/dialogs/settings_dialog.ui:179 msgid "Processes" msgstr "Prozesse" -#: src/ui/pages/processes/mod.rs:540 +#: src/ui/pages/processes/mod.rs:550 msgid "Running Processes: {}" msgstr "Laufende Prozesse: {}" -#: src/ui/pages/processes/mod.rs:611 +#: src/ui/pages/processes/mod.rs:612 msgid "root" msgstr "root" -#: src/ui/pages/processes/mod.rs:623 +#: src/ui/pages/processes/mod.rs:624 msgid "Process" msgstr "Prozess" -#: src/ui/pages/processes/mod.rs:669 -#: data/resources/ui/dialogs/process_dialog.ui:156 -#: data/resources/ui/dialogs/settings_dialog.ui:188 +#: src/ui/pages/processes/mod.rs:670 +#: data/resources/ui/dialogs/process_dialog.ui:181 +#: data/resources/ui/dialogs/settings_dialog.ui:185 msgid "Process ID" msgstr "Prozess-ID" -#: src/ui/pages/processes/mod.rs:709 -#: data/resources/ui/dialogs/process_dialog.ui:183 -#: data/resources/ui/dialogs/settings_dialog.ui:193 +#: src/ui/pages/processes/mod.rs:710 +#: data/resources/ui/dialogs/process_dialog.ui:208 +#: data/resources/ui/dialogs/settings_dialog.ui:190 msgid "User" msgstr "Benutzer" -#: src/ui/pages/processes/mod.rs:1245 +#: src/ui/pages/processes/mod.rs:1237 +#: data/resources/ui/dialogs/process_dialog.ui:149 +#: data/resources/ui/dialogs/settings_dialog.ui:245 +msgid "Total CPU Time" +msgstr "Gesamte Prozessorzeit" + +#: src/ui/pages/processes/mod.rs:1283 +#: data/resources/ui/dialogs/process_dialog.ui:158 +#: data/resources/ui/dialogs/settings_dialog.ui:250 +msgid "User CPU Time" +msgstr "Benutzerprozessorzeit" + +#: src/ui/pages/processes/mod.rs:1329 +#: data/resources/ui/dialogs/process_dialog.ui:167 +#: data/resources/ui/dialogs/settings_dialog.ui:255 +msgid "System CPU Time" +msgstr "Systemprozessorzeit" + +#: src/ui/pages/processes/mod.rs:1384 msgid "" "Halting a process can come with serious risks such as losing data and " "security implications. Use with caution." @@ -411,7 +428,7 @@ msgstr "" "Das Anhalten eines Prozesses ist mit Risiken wie dem Verlust von Daten sowie " "Sicherheitsproblemen verbunden. Sie sollten vorsichtig sein." -#: src/ui/pages/processes/mod.rs:1246 +#: src/ui/pages/processes/mod.rs:1385 msgid "" "Killing a process can come with serious risks such as losing data and " "security implications. Use with caution." @@ -419,79 +436,79 @@ msgstr "" "Das Abwürgen eines Prozesses ist mit Risiken wie dem Verlust von Daten sowie " "Sicherheitsproblemen verbunden. Sie sollten vorsichtig sein." -#: src/ui/pages/processes/mod.rs:1253 +#: src/ui/pages/processes/mod.rs:1392 msgid "End process" msgstr "Prozess beenden" -#: src/ui/pages/processes/mod.rs:1254 +#: src/ui/pages/processes/mod.rs:1393 msgid "Halt process" msgstr "Prozess anhalten" -#: src/ui/pages/processes/mod.rs:1255 +#: src/ui/pages/processes/mod.rs:1394 msgid "Kill process" msgstr "Prozess abwürgen" -#: src/ui/pages/processes/mod.rs:1256 +#: src/ui/pages/processes/mod.rs:1395 msgid "Continue process" msgstr "Prozess fortsetzen" -#: src/ui/window.rs:275 +#: src/ui/window.rs:276 msgid "GPU {}" msgstr "GPU {}" -#: src/ui/window.rs:794 +#: src/ui/window.rs:813 msgid "Successfully ended {}" msgstr "{} wurde erfolgreich beendet" -#: src/ui/window.rs:795 +#: src/ui/window.rs:814 msgid "Successfully halted {}" msgstr "{} wurde erfolgreich angehalten" -#: src/ui/window.rs:796 +#: src/ui/window.rs:815 msgid "Successfully killed {}" msgstr "{} wurde erfolgreich abgewürgt" -#: src/ui/window.rs:797 +#: src/ui/window.rs:816 msgid "Successfully continued {}" msgstr "{} wurde erfolgreich fortgesetzt" -#: src/ui/window.rs:804 +#: src/ui/window.rs:823 msgid "There was a problem ending a process" msgid_plural "There were problems ending {} processes" msgstr[0] "Es gab ein Problem beim Beenden von {} Prozessen" msgstr[1] "Es gab ein Problem beim Beenden eines Prozesses" -#: src/ui/window.rs:810 +#: src/ui/window.rs:829 msgid "There was a problem halting a process" msgid_plural "There were problems halting {} processes" msgstr[0] "Es gab ein Problem beim Anhalten von {} Prozessen" msgstr[1] "Es gab ein Problem beim Anhalten eines Prozesses" -#: src/ui/window.rs:816 +#: src/ui/window.rs:835 msgid "There was a problem killing a process" msgid_plural "There were problems killing {} processes" msgstr[0] "Es gab ein Problem beim Abwürgen von {} Prozessen" msgstr[1] "Es gab ein Problem beim Abwürgen eines Prozesses" -#: src/ui/window.rs:822 +#: src/ui/window.rs:841 msgid "There was a problem continuing a process" msgid_plural "There were problems continuing {} processes" msgstr[0] "Es gab ein Problem beim Fortsetzen von {} Prozessen" msgstr[1] "Es gab ein Problem beim Fortsetzen eines Prozesses" -#: src/ui/window.rs:832 +#: src/ui/window.rs:851 msgid "There was a problem ending {}" msgstr "Es gab ein Problem beim Beenden von {}" -#: src/ui/window.rs:833 +#: src/ui/window.rs:852 msgid "There was a problem halting {}" msgstr "Es gab ein Problem beim Anhalten von {}" -#: src/ui/window.rs:834 +#: src/ui/window.rs:853 msgid "There was a problem killing {}" msgstr "Es gab ein Problem beim Abwürgen von {}" -#: src/ui/window.rs:835 +#: src/ui/window.rs:854 msgid "There was a problem continuing {}" msgstr "Es gab ein Problem beim Fortsetzen von {}" @@ -623,356 +640,356 @@ msgstr "WLAN-Verbindung" msgid "WWAN Connection" msgstr "WWAN-Verbindung" -#: src/utils/units.rs:51 +#: src/utils/units.rs:59 msgid "{} K" msgstr "{} K" -#: src/utils/units.rs:53 +#: src/utils/units.rs:61 msgid "{} °C" msgstr "{} °C" -#: src/utils/units.rs:55 +#: src/utils/units.rs:63 msgid "{} °F" msgstr "{} °F" -#: src/utils/units.rs:73 src/utils/units.rs:87 src/utils/units.rs:107 -#: src/utils/units.rs:121 +#: src/utils/units.rs:81 src/utils/units.rs:95 src/utils/units.rs:115 +#: src/utils/units.rs:129 msgid "{} B" msgstr "{} B" -#: src/utils/units.rs:74 src/utils/units.rs:88 +#: src/utils/units.rs:82 src/utils/units.rs:96 msgid "{} kB" msgstr "{} kB" -#: src/utils/units.rs:75 src/utils/units.rs:89 +#: src/utils/units.rs:83 src/utils/units.rs:97 msgid "{} MB" msgstr "{} MB" -#: src/utils/units.rs:76 src/utils/units.rs:90 +#: src/utils/units.rs:84 src/utils/units.rs:98 msgid "{} GB" msgstr "{} GB" -#: src/utils/units.rs:77 src/utils/units.rs:91 +#: src/utils/units.rs:85 src/utils/units.rs:99 msgid "{} TB" msgstr "{} TB" -#: src/utils/units.rs:78 src/utils/units.rs:92 +#: src/utils/units.rs:86 src/utils/units.rs:100 msgid "{} PB" msgstr "{} PB" -#: src/utils/units.rs:79 src/utils/units.rs:93 +#: src/utils/units.rs:87 src/utils/units.rs:101 msgid "{} EB" msgstr "{} EB" -#: src/utils/units.rs:80 src/utils/units.rs:94 +#: src/utils/units.rs:88 src/utils/units.rs:102 msgid "{} ZB" msgstr "{} ZB" -#: src/utils/units.rs:81 src/utils/units.rs:95 +#: src/utils/units.rs:89 src/utils/units.rs:103 msgid "{} YB" msgstr "{} YB" -#: src/utils/units.rs:82 src/utils/units.rs:96 +#: src/utils/units.rs:90 src/utils/units.rs:104 msgid "{} RB" msgstr "{} RB" -#: src/utils/units.rs:83 src/utils/units.rs:97 +#: src/utils/units.rs:91 src/utils/units.rs:105 msgid "{} QB" msgstr "{} QB" -#: src/utils/units.rs:108 src/utils/units.rs:122 +#: src/utils/units.rs:116 src/utils/units.rs:130 msgid "{} KiB" msgstr "{} KiB" -#: src/utils/units.rs:109 src/utils/units.rs:123 +#: src/utils/units.rs:117 src/utils/units.rs:131 msgid "{} MiB" msgstr "{} MiB" -#: src/utils/units.rs:110 src/utils/units.rs:124 +#: src/utils/units.rs:118 src/utils/units.rs:132 msgid "{} GiB" msgstr "{} GiB" -#: src/utils/units.rs:111 src/utils/units.rs:125 +#: src/utils/units.rs:119 src/utils/units.rs:133 msgid "{} TiB" msgstr "{} TiB" -#: src/utils/units.rs:112 src/utils/units.rs:126 +#: src/utils/units.rs:120 src/utils/units.rs:134 msgid "{} PiB" msgstr "{} PiB" -#: src/utils/units.rs:113 src/utils/units.rs:127 +#: src/utils/units.rs:121 src/utils/units.rs:135 msgid "{} EiB" msgstr "{} EiB" -#: src/utils/units.rs:114 src/utils/units.rs:128 +#: src/utils/units.rs:122 src/utils/units.rs:136 msgid "{} ZiB" msgstr "{} ZiB" -#: src/utils/units.rs:115 src/utils/units.rs:129 +#: src/utils/units.rs:123 src/utils/units.rs:137 msgid "{} YiB" msgstr "{} YiB" -#: src/utils/units.rs:116 src/utils/units.rs:130 +#: src/utils/units.rs:124 src/utils/units.rs:138 msgid "{} RiB" msgstr "{} RiB" -#: src/utils/units.rs:117 src/utils/units.rs:131 +#: src/utils/units.rs:125 src/utils/units.rs:139 msgid "{} QiB" msgstr "{} QiB" -#: src/utils/units.rs:158 src/utils/units.rs:175 +#: src/utils/units.rs:166 src/utils/units.rs:183 msgid "{} B/s" msgstr "{} B/s" -#: src/utils/units.rs:159 +#: src/utils/units.rs:167 msgid "{} kB/s" msgstr "{} kB/s" -#: src/utils/units.rs:160 +#: src/utils/units.rs:168 msgid "{} MB/s" msgstr "{} MB/s" -#: src/utils/units.rs:161 +#: src/utils/units.rs:169 msgid "{} GB/s" msgstr "{} GB/s" -#: src/utils/units.rs:162 +#: src/utils/units.rs:170 msgid "{} TB/s" msgstr "{} TB/s" -#: src/utils/units.rs:163 +#: src/utils/units.rs:171 msgid "{} PB/s" msgstr "{} PB/s" -#: src/utils/units.rs:164 +#: src/utils/units.rs:172 msgid "{} EB/s" msgstr "{} EB/s" -#: src/utils/units.rs:165 +#: src/utils/units.rs:173 msgid "{} ZB/s" msgstr "{} ZB/s" -#: src/utils/units.rs:166 +#: src/utils/units.rs:174 msgid "{} YB/s" msgstr "{} YB/s" -#: src/utils/units.rs:167 +#: src/utils/units.rs:175 msgid "{} RB/s" msgstr "{} RB/s" -#: src/utils/units.rs:168 +#: src/utils/units.rs:176 msgid "{} QB/s" msgstr "{} QB/s" -#: src/utils/units.rs:176 +#: src/utils/units.rs:184 msgid "{} KiB/s" msgstr "{} KiB/s" -#: src/utils/units.rs:177 +#: src/utils/units.rs:185 msgid "{} MiB/s" msgstr "{} MiB/s" -#: src/utils/units.rs:178 +#: src/utils/units.rs:186 msgid "{} GiB/s" msgstr "{} GiB/s" -#: src/utils/units.rs:179 +#: src/utils/units.rs:187 msgid "{} TiB/s" msgstr "{} TiB/s" -#: src/utils/units.rs:180 +#: src/utils/units.rs:188 msgid "{} PiB/s" msgstr "{} PiB/s" -#: src/utils/units.rs:181 +#: src/utils/units.rs:189 msgid "{} EiB/s" msgstr "{} EiB/s" -#: src/utils/units.rs:182 +#: src/utils/units.rs:190 msgid "{} ZiB/s" msgstr "{} ZiB/s" -#: src/utils/units.rs:183 +#: src/utils/units.rs:191 msgid "{} YiB/s" msgstr "{} YiB/s" -#: src/utils/units.rs:184 +#: src/utils/units.rs:192 msgid "{} RiB/s" msgstr "{} RiB/s" -#: src/utils/units.rs:185 +#: src/utils/units.rs:193 msgid "{} QiB/s" msgstr "{} QiB/s" -#: src/utils/units.rs:192 src/utils/units.rs:209 +#: src/utils/units.rs:200 src/utils/units.rs:217 msgid "{} b/s" msgstr "{} b/s" -#: src/utils/units.rs:193 +#: src/utils/units.rs:201 msgid "{} kb/s" msgstr "{} kb/s" -#: src/utils/units.rs:194 +#: src/utils/units.rs:202 msgid "{} Mb/s" msgstr "{} Mb/s" -#: src/utils/units.rs:195 +#: src/utils/units.rs:203 msgid "{} Gb/s" msgstr "{} Gb/s" -#: src/utils/units.rs:196 +#: src/utils/units.rs:204 msgid "{} Tb/s" msgstr "{} Tb/s" -#: src/utils/units.rs:197 +#: src/utils/units.rs:205 msgid "{} Pb/s" msgstr "{} Pb/s" -#: src/utils/units.rs:198 +#: src/utils/units.rs:206 msgid "{} Eb/s" msgstr "{} Eb/s" -#: src/utils/units.rs:199 +#: src/utils/units.rs:207 msgid "{} Zb/s" msgstr "{} Zb/s" -#: src/utils/units.rs:200 +#: src/utils/units.rs:208 msgid "{} Yb/s" msgstr "{} Yb/s" -#: src/utils/units.rs:201 +#: src/utils/units.rs:209 msgid "{} Rb/s" msgstr "{} Rb/s" -#: src/utils/units.rs:202 +#: src/utils/units.rs:210 msgid "{} Qb/s" msgstr "{} Qb/s" -#: src/utils/units.rs:210 +#: src/utils/units.rs:218 msgid "{} Kib/s" msgstr "{} Kib/s" -#: src/utils/units.rs:211 +#: src/utils/units.rs:219 msgid "{} Mib/s" msgstr "{} Mib/s" -#: src/utils/units.rs:212 +#: src/utils/units.rs:220 msgid "{} Gib/s" msgstr "{} Gib/s" -#: src/utils/units.rs:213 +#: src/utils/units.rs:221 msgid "{} Tib/s" msgstr "{} Tib/s" -#: src/utils/units.rs:214 +#: src/utils/units.rs:222 msgid "{} Pib/s" msgstr "{} Pib/s" -#: src/utils/units.rs:215 +#: src/utils/units.rs:223 msgid "{} Eib/s" msgstr "{} Eib/s" -#: src/utils/units.rs:216 +#: src/utils/units.rs:224 msgid "{} Zib/s" msgstr "{} Zib/s" -#: src/utils/units.rs:217 +#: src/utils/units.rs:225 msgid "{} Yib/s" msgstr "{} Yib/s" -#: src/utils/units.rs:218 +#: src/utils/units.rs:226 msgid "{} Rib/s" msgstr "{} Rib/s" -#: src/utils/units.rs:219 +#: src/utils/units.rs:227 msgid "{} Qib/s" msgstr "{} Qib/s" -#: src/utils/units.rs:226 +#: src/utils/units.rs:234 msgid "{} Hz" msgstr "{} Hz" -#: src/utils/units.rs:227 +#: src/utils/units.rs:235 msgid "{} kHz" msgstr "{} kHz" -#: src/utils/units.rs:228 +#: src/utils/units.rs:236 msgid "{} MHz" msgstr "{} MHz" -#: src/utils/units.rs:229 +#: src/utils/units.rs:237 msgid "{} GHz" msgstr "{} GHz" -#: src/utils/units.rs:230 +#: src/utils/units.rs:238 msgid "{} THz" msgstr "{} THz" -#: src/utils/units.rs:231 +#: src/utils/units.rs:239 msgid "{} PHz" msgstr "{} PHz" -#: src/utils/units.rs:232 +#: src/utils/units.rs:240 msgid "{} EHz" msgstr "{} EHz" -#: src/utils/units.rs:233 +#: src/utils/units.rs:241 msgid "{} ZHz" msgstr "{} ZHz" -#: src/utils/units.rs:234 +#: src/utils/units.rs:242 msgid "{} YHz" msgstr "{} YHz" -#: src/utils/units.rs:235 +#: src/utils/units.rs:243 msgid "{} RHz" msgstr "{} RHz" -#: src/utils/units.rs:236 +#: src/utils/units.rs:244 msgid "{} QHz" msgstr "{} QHz" -#: src/utils/units.rs:243 +#: src/utils/units.rs:251 msgid "{} W" msgstr "{} W" -#: src/utils/units.rs:244 +#: src/utils/units.rs:252 msgid "{} kW" msgstr "{} kW" -#: src/utils/units.rs:245 +#: src/utils/units.rs:253 msgid "{} MW" msgstr "{} MW" -#: src/utils/units.rs:246 +#: src/utils/units.rs:254 msgid "{} GW" msgstr "{} GW" -#: src/utils/units.rs:247 +#: src/utils/units.rs:255 msgid "{} TW" msgstr "{} TW" -#: src/utils/units.rs:248 +#: src/utils/units.rs:256 msgid "{} PW" msgstr "{} PW" -#: src/utils/units.rs:249 +#: src/utils/units.rs:257 msgid "{} EW" msgstr "{} EW" -#: src/utils/units.rs:250 +#: src/utils/units.rs:258 msgid "{} ZW" msgstr "{} ZW" -#: src/utils/units.rs:251 +#: src/utils/units.rs:259 msgid "{} YW" msgstr "{} YW" -#: src/utils/units.rs:252 +#: src/utils/units.rs:260 msgid "{} RW" msgstr "{} RW" -#: src/utils/units.rs:253 +#: src/utils/units.rs:261 msgid "{} QW" msgstr "{} QW" @@ -1038,195 +1055,190 @@ msgstr "Tastenkombinationen" msgid "About Resources" msgstr "Über Ressourcen" -#: data/resources/ui/dialogs/app_dialog.ui:9 +#: data/resources/ui/dialogs/app_dialog.ui:7 msgid "Application Information" msgstr "Anwendungsinformationen" -#: data/resources/ui/dialogs/app_dialog.ui:71 -#: data/resources/ui/dialogs/process_dialog.ui:54 -#: data/resources/ui/pages/cpu.ui:42 data/resources/ui/pages/cpu.ui:55 +#: data/resources/ui/dialogs/app_dialog.ui:69 +#: data/resources/ui/dialogs/process_dialog.ui:52 +#: data/resources/ui/pages/cpu.ui:45 data/resources/ui/pages/cpu.ui:58 #: data/resources/ui/pages/drive.ui:22 data/resources/ui/pages/gpu.ui:22 #: data/resources/ui/pages/memory.ui:31 data/resources/ui/pages/network.ui:22 msgid "Usage" msgstr "Auslastung" -#: data/resources/ui/dialogs/app_dialog.ui:166 -#: data/resources/ui/dialogs/process_dialog.ui:149 -#: data/resources/ui/pages/applications.ui:26 data/resources/ui/pages/cpu.ui:91 -#: data/resources/ui/pages/drive.ui:36 data/resources/ui/pages/gpu.ui:80 -#: data/resources/ui/pages/memory.ui:42 data/resources/ui/pages/network.ui:51 -#: data/resources/ui/pages/processes.ui:26 +#: data/resources/ui/dialogs/app_dialog.ui:164 +#: data/resources/ui/dialogs/process_dialog.ui:174 +#: data/resources/ui/pages/cpu.ui:97 data/resources/ui/pages/drive.ui:36 +#: data/resources/ui/pages/gpu.ui:80 data/resources/ui/pages/memory.ui:42 +#: data/resources/ui/pages/network.ui:51 msgid "Properties" msgstr "Eigenschaften" -#: data/resources/ui/dialogs/app_dialog.ui:172 +#: data/resources/ui/dialogs/app_dialog.ui:170 msgid "ID" msgstr "ID" -#: data/resources/ui/dialogs/app_dialog.ui:182 -#: data/resources/ui/dialogs/process_dialog.ui:165 +#: data/resources/ui/dialogs/app_dialog.ui:180 +#: data/resources/ui/dialogs/process_dialog.ui:190 msgid "Running Since" msgstr "Läuft seit" -#: data/resources/ui/dialogs/app_dialog.ui:190 +#: data/resources/ui/dialogs/app_dialog.ui:188 msgid "Running Processes" msgstr "Laufende Prozesse" -#: data/resources/ui/dialogs/app_dialog.ui:199 -#: data/resources/ui/dialogs/process_dialog.ui:201 +#: data/resources/ui/dialogs/app_dialog.ui:197 +#: data/resources/ui/dialogs/process_dialog.ui:226 msgid "Containerized" msgstr "Benutzt Container" -#: data/resources/ui/dialogs/process_dialog.ui:9 +#: data/resources/ui/dialogs/process_dialog.ui:7 msgid "Process Information" msgstr "Prozessinformationen" -#: data/resources/ui/dialogs/process_dialog.ui:174 +#: data/resources/ui/dialogs/process_dialog.ui:199 msgid "Commandline" msgstr "Befehlszeile" -#: data/resources/ui/dialogs/process_dialog.ui:192 +#: data/resources/ui/dialogs/process_dialog.ui:217 msgid "Control Group" msgstr "Kontrollgruppe" -#: data/resources/ui/dialogs/settings_dialog.ui:10 +#: data/resources/ui/dialogs/settings_dialog.ui:7 msgid "General" msgstr "Allgemein" -#: data/resources/ui/dialogs/settings_dialog.ui:13 +#: data/resources/ui/dialogs/settings_dialog.ui:10 msgid "Units" msgstr "Einheiten" -#: data/resources/ui/dialogs/settings_dialog.ui:16 +#: data/resources/ui/dialogs/settings_dialog.ui:13 msgid "Data Unit Prefix" msgstr "Dezimalsystem" -#: data/resources/ui/dialogs/settings_dialog.ui:20 +#: data/resources/ui/dialogs/settings_dialog.ui:17 msgid "Decimal" msgstr "Dezimal" -#: data/resources/ui/dialogs/settings_dialog.ui:21 +#: data/resources/ui/dialogs/settings_dialog.ui:18 msgid "Binary" msgstr "Binär" -#: data/resources/ui/dialogs/settings_dialog.ui:29 +#: data/resources/ui/dialogs/settings_dialog.ui:26 msgid "Show Network Speeds in Bits per Second" msgstr "Netzwerkgeschwindigkeiten in Bits pro Sekunde anzeigen" -#: data/resources/ui/dialogs/settings_dialog.ui:34 +#: data/resources/ui/dialogs/settings_dialog.ui:31 msgid "Temperature Unit" msgstr "Temperatureinheit" -#: data/resources/ui/dialogs/settings_dialog.ui:38 +#: data/resources/ui/dialogs/settings_dialog.ui:35 msgid "Celsius" msgstr "Celsius" -#: data/resources/ui/dialogs/settings_dialog.ui:39 +#: data/resources/ui/dialogs/settings_dialog.ui:36 msgid "Kelvin" msgstr "Kelvin" -#: data/resources/ui/dialogs/settings_dialog.ui:40 +#: data/resources/ui/dialogs/settings_dialog.ui:37 msgid "Fahrenheit" msgstr "Fahrenheit" -#: data/resources/ui/dialogs/settings_dialog.ui:50 +#: data/resources/ui/dialogs/settings_dialog.ui:47 msgid "User Interface" msgstr "Nutzeroberfläche" -#: data/resources/ui/dialogs/settings_dialog.ui:53 +#: data/resources/ui/dialogs/settings_dialog.ui:50 msgid "Refresh Speed" msgstr "Aktualisierungsgeschwindigkeit" -#: data/resources/ui/dialogs/settings_dialog.ui:57 +#: data/resources/ui/dialogs/settings_dialog.ui:54 msgid "Very Slow" msgstr "Sehr langsam" -#: data/resources/ui/dialogs/settings_dialog.ui:58 +#: data/resources/ui/dialogs/settings_dialog.ui:55 msgid "Slow" msgstr "Langsam" -#: data/resources/ui/dialogs/settings_dialog.ui:59 +#: data/resources/ui/dialogs/settings_dialog.ui:56 msgid "Normal" msgstr "Normal" -#: data/resources/ui/dialogs/settings_dialog.ui:60 +#: data/resources/ui/dialogs/settings_dialog.ui:57 msgid "Fast" msgstr "Schnell" -#: data/resources/ui/dialogs/settings_dialog.ui:61 +#: data/resources/ui/dialogs/settings_dialog.ui:58 msgid "Very Fast" msgstr "Sehr schnell" -#: data/resources/ui/dialogs/settings_dialog.ui:69 +#: data/resources/ui/dialogs/settings_dialog.ui:66 msgid "Show Graph Grids" msgstr "Raster in Graphen anzeigen" -#: data/resources/ui/dialogs/settings_dialog.ui:74 +#: data/resources/ui/dialogs/settings_dialog.ui:71 msgid "Graph Data Points" msgstr "Datenpunke in Graphen" -#: data/resources/ui/dialogs/settings_dialog.ui:88 +#: data/resources/ui/dialogs/settings_dialog.ui:85 msgid "Show Search Fields on Launch" msgstr "Alle Suchfelder beim Start anzeigen" -#: data/resources/ui/dialogs/settings_dialog.ui:93 +#: data/resources/ui/dialogs/settings_dialog.ui:90 msgid "Show Usage Details in Sidebar" msgstr "Auslastungsdetails in der Seitenleiste anzeigen" -#: data/resources/ui/dialogs/settings_dialog.ui:98 +#: data/resources/ui/dialogs/settings_dialog.ui:95 msgid "Show Device Descriptions in Sidebar" msgstr "Gerätebeschreibungen in der Seitenleiste anzeigen" -#: data/resources/ui/dialogs/settings_dialog.ui:103 +#: data/resources/ui/dialogs/settings_dialog.ui:100 msgid "Sidebar Meter Type" msgstr "Auslastungsdarstellung in der Seitenleiste" -#: data/resources/ui/dialogs/settings_dialog.ui:107 +#: data/resources/ui/dialogs/settings_dialog.ui:104 msgid "Bar" msgstr "Leiste" -#: data/resources/ui/dialogs/settings_dialog.ui:108 +#: data/resources/ui/dialogs/settings_dialog.ui:105 msgid "Graph" msgstr "Graph" -#: data/resources/ui/dialogs/settings_dialog.ui:124 -#: data/resources/ui/dialogs/settings_dialog.ui:185 +#: data/resources/ui/dialogs/settings_dialog.ui:121 +#: data/resources/ui/dialogs/settings_dialog.ui:182 msgid "Information Columns" msgstr "Informationsspalten" -#: data/resources/ui/dialogs/settings_dialog.ui:253 +#: data/resources/ui/dialogs/settings_dialog.ui:265 msgid "Devices" msgstr "Geräte" -#: data/resources/ui/dialogs/settings_dialog.ui:256 +#: data/resources/ui/dialogs/settings_dialog.ui:268 msgid "Drives" msgstr "Datenträger" -#: data/resources/ui/dialogs/settings_dialog.ui:259 +#: data/resources/ui/dialogs/settings_dialog.ui:271 msgid "Show Virtual Drives" msgstr "Virtuelle Laufwerke anzeigen" -#: data/resources/ui/dialogs/settings_dialog.ui:269 +#: data/resources/ui/dialogs/settings_dialog.ui:281 msgid "Show Virtual Network Interfaces" msgstr "Virtuelle Netzwerkschnittstellen anzeigen" #: data/resources/ui/pages/applications.ui:6 -#: data/resources/ui/pages/applications.ui:36 msgid "Kill Application" msgstr "Anwendung abwürgen" #: data/resources/ui/pages/applications.ui:10 -#: data/resources/ui/pages/applications.ui:40 msgid "Halt Application" msgstr "Anwendung anhalten" #: data/resources/ui/pages/applications.ui:14 -#: data/resources/ui/pages/applications.ui:44 msgid "Continue Application" msgstr "Anwendung fortsetzen" -#: data/resources/ui/pages/applications.ui:32 -#: data/resources/ui/pages/applications.ui:115 +#: data/resources/ui/pages/applications.ui:95 msgid "End Application" msgstr "Anwendung beenden" @@ -1238,35 +1250,35 @@ msgstr "Optionen" msgid "Show Usages of Logical CPUs" msgstr "Auslastung der logischen Prozessoren anzeigen" -#: data/resources/ui/pages/cpu.ui:77 data/resources/ui/pages/gpu.ui:66 +#: data/resources/ui/pages/cpu.ui:83 data/resources/ui/pages/gpu.ui:66 msgid "Sensors" msgstr "Sensoren" -#: data/resources/ui/pages/cpu.ui:84 data/resources/ui/pages/gpu.ui:69 +#: data/resources/ui/pages/cpu.ui:90 data/resources/ui/pages/gpu.ui:69 msgid "Temperature" msgstr "Temperatur" -#: data/resources/ui/pages/cpu.ui:98 +#: data/resources/ui/pages/cpu.ui:104 msgid "Max Frequency" msgstr "Maximale Taktfrequenz" -#: data/resources/ui/pages/cpu.ui:107 +#: data/resources/ui/pages/cpu.ui:113 msgid "Logical Cores" msgstr "Logische Kerne" -#: data/resources/ui/pages/cpu.ui:116 +#: data/resources/ui/pages/cpu.ui:122 msgid "Physical Cores" msgstr "Physische Kerne" -#: data/resources/ui/pages/cpu.ui:125 +#: data/resources/ui/pages/cpu.ui:131 msgid "Sockets" msgstr "Sockel" -#: data/resources/ui/pages/cpu.ui:134 +#: data/resources/ui/pages/cpu.ui:140 msgid "Virtualization" msgstr "Virtualisierung" -#: data/resources/ui/pages/cpu.ui:143 +#: data/resources/ui/pages/cpu.ui:149 msgid "Architecture" msgstr "Architektur" @@ -1315,10 +1327,6 @@ msgid "Driver Used" msgstr "Benutzter Treiber" #: data/resources/ui/pages/gpu.ui:114 -msgid "Current Power Cap" -msgstr "Derzeitige Leistungsbegrenzung" - -#: data/resources/ui/pages/gpu.ui:123 msgid "Max Power Cap" msgstr "Maximale Leistungsbegrenzung" @@ -1363,25 +1371,24 @@ msgid "Hardware Address" msgstr "Geräteadresse" #: data/resources/ui/pages/processes.ui:6 -#: data/resources/ui/pages/processes.ui:36 msgid "Kill Process" msgstr "Prozess abwürgen" #: data/resources/ui/pages/processes.ui:10 -#: data/resources/ui/pages/processes.ui:40 msgid "Halt Process" msgstr "Prozess anhalten" #: data/resources/ui/pages/processes.ui:14 -#: data/resources/ui/pages/processes.ui:44 msgid "Continue Process" msgstr "Prozess fortsetzen" -#: data/resources/ui/pages/processes.ui:32 -#: data/resources/ui/pages/processes.ui:115 +#: data/resources/ui/pages/processes.ui:95 msgid "End Process" msgstr "Prozess beenden" +#~ msgid "Current Power Cap" +#~ msgstr "Derzeitige Leistungsbegrenzung" + #~ msgid "Window width" #~ msgstr "Fensterbreite" @@ -1404,7 +1411,8 @@ msgstr "Prozess beenden" #~ msgstr "Virtuelle Datenträger, wie z.B. LVM-Container anzeigen" #~ msgid "Show virtual network interfaces such as Docker interfaces" -#~ msgstr "Virtuelle Netzwerkschnittstellen, wie z.B. Docker-Schnittstellen anzeigen" +#~ msgstr "" +#~ "Virtuelle Netzwerkschnittstellen, wie z.B. Docker-Schnittstellen anzeigen" #~ msgid "Show usage details in the sidebar" #~ msgstr "Auslastungsdetails in der Seitenleiste anzeigen" @@ -1428,7 +1436,8 @@ msgstr "Prozess beenden" #~ msgstr "Insgesamt gelesene Datenmenge bei Anwendungen anzeigen" #~ msgid "Display drive write speed in Applications view" -#~ msgstr "Schreibgeschwindigkeit auf den Datenträgern bei Anwendungen anzeigen" +#~ msgstr "" +#~ "Schreibgeschwindigkeit auf den Datenträgern bei Anwendungen anzeigen" #~ msgid "Display drive write total in Applications view" #~ msgstr "Insgesamt geschriebene Datenmenge bei Anwendungen anzeigen" @@ -1505,7 +1514,8 @@ msgstr "Prozess beenden" #~ msgid "" #~ "A simple yet powerful monitor for your system resources and processes." #~ msgstr "" -#~ "Ein einfacher und zugleich mächtiger Monitor für Systemressourcen und Prozesse." +#~ "Ein einfacher und zugleich mächtiger Monitor für Systemressourcen und " +#~ "Prozesse." #~ msgid "{} {}B Drive" #~ msgstr "{}-{}B-Datenträger" diff --git a/po/resources.pot b/po/resources.pot index ed062001..83028bf2 100644 --- a/po/resources.pot +++ b/po/resources.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-03-06 12:37+0100\n" +"POT-Creation-Date: 2024-04-07 13:57+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: data/net.nokyan.Resources.desktop.in.in:3 -#: data/net.nokyan.Resources.metainfo.xml.in.in:4 src/application.rs:194 +#: data/net.nokyan.Resources.metainfo.xml.in.in:4 src/application.rs:191 msgid "Resources" msgstr "" @@ -51,28 +51,28 @@ msgid "CPU" msgstr "" #: data/net.nokyan.Resources.metainfo.xml.in.in:26 -#: src/ui/pages/applications/mod.rs:666 src/ui/pages/memory.rs:132 -#: src/ui/pages/memory.rs:205 src/ui/pages/processes/mod.rs:759 -#: data/resources/ui/window.ui:154 data/resources/ui/window.ui:161 -#: data/resources/ui/dialogs/app_dialog.ui:83 -#: data/resources/ui/dialogs/process_dialog.ui:70 -#: data/resources/ui/dialogs/settings_dialog.ui:127 -#: data/resources/ui/dialogs/settings_dialog.ui:198 +#: src/ui/pages/applications/mod.rs:664 src/ui/pages/memory.rs:132 +#: src/ui/pages/memory.rs:205 src/ui/pages/processes/mod.rs:751 +#: data/resources/ui/window.ui:158 data/resources/ui/window.ui:165 +#: data/resources/ui/dialogs/app_dialog.ui:81 +#: data/resources/ui/dialogs/process_dialog.ui:68 +#: data/resources/ui/dialogs/settings_dialog.ui:124 +#: data/resources/ui/dialogs/settings_dialog.ui:195 msgid "Memory" msgstr "" #: data/net.nokyan.Resources.metainfo.xml.in.in:27 -#: src/ui/pages/applications/mod.rs:956 src/ui/pages/gpu.rs:146 -#: src/ui/pages/processes/mod.rs:1060 src/ui/window.rs:277 -#: data/resources/ui/dialogs/app_dialog.ui:132 -#: data/resources/ui/dialogs/process_dialog.ui:115 -#: data/resources/ui/dialogs/settings_dialog.ui:157 -#: data/resources/ui/dialogs/settings_dialog.ui:228 +#: src/ui/pages/applications/mod.rs:954 src/ui/pages/gpu.rs:146 +#: src/ui/pages/processes/mod.rs:1052 src/ui/window.rs:278 +#: data/resources/ui/dialogs/app_dialog.ui:130 +#: data/resources/ui/dialogs/process_dialog.ui:113 +#: data/resources/ui/dialogs/settings_dialog.ui:154 +#: data/resources/ui/dialogs/settings_dialog.ui:225 msgid "GPU" msgstr "" #: data/net.nokyan.Resources.metainfo.xml.in.in:28 -#: data/resources/ui/dialogs/settings_dialog.ui:266 +#: data/resources/ui/dialogs/settings_dialog.ui:278 msgid "Network Interfaces" msgstr "" @@ -80,191 +80,191 @@ msgstr "" msgid "Storage Devices" msgstr "" -#: src/application.rs:196 +#: src/application.rs:193 msgid "The Nalux Team" msgstr "" -#: src/application.rs:204 +#: src/application.rs:201 msgid "Report Issues" msgstr "" #. Translator credits. Replace "translator-credits" with your name/username, and optionally an email or URL. #. One name per line, please do not remove previous names. -#: src/application.rs:210 +#: src/application.rs:207 msgid "translator-credits" msgstr "" -#: src/application.rs:211 +#: src/application.rs:208 msgid "Icon by" msgstr "" -#: src/ui/dialogs/app_dialog.rs:163 src/ui/dialogs/process_dialog.rs:188 +#: src/ui/dialogs/app_dialog.rs:161 src/ui/dialogs/process_dialog.rs:202 #: src/ui/pages/drive.rs:295 src/ui/pages/drive.rs:301 msgid "No" msgstr "" -#: src/ui/dialogs/app_dialog.rs:164 src/ui/dialogs/process_dialog.rs:189 +#: src/ui/dialogs/app_dialog.rs:162 src/ui/dialogs/process_dialog.rs:203 msgid "Yes (Flatpak)" msgstr "" -#: src/ui/dialogs/app_dialog.rs:165 src/ui/dialogs/process_dialog.rs:190 +#: src/ui/dialogs/app_dialog.rs:163 src/ui/dialogs/process_dialog.rs:204 msgid "Yes (Snap)" msgstr "" -#: src/ui/dialogs/process_dialog.rs:129 src/ui/dialogs/process_dialog.rs:136 -#: src/ui/dialogs/process_dialog.rs:143 src/ui/dialogs/process_dialog.rs:150 -#: src/ui/dialogs/process_dialog.rs:176 src/ui/dialogs/process_dialog.rs:183 -#: src/ui/dialogs/process_dialog.rs:185 src/ui/pages/applications/mod.rs:775 -#: src/ui/pages/applications/mod.rs:873 src/ui/pages/cpu.rs:237 +#: src/ui/dialogs/process_dialog.rs:133 src/ui/dialogs/process_dialog.rs:140 +#: src/ui/dialogs/process_dialog.rs:147 src/ui/dialogs/process_dialog.rs:154 +#: src/ui/dialogs/process_dialog.rs:190 src/ui/dialogs/process_dialog.rs:197 +#: src/ui/dialogs/process_dialog.rs:199 src/ui/pages/applications/mod.rs:773 +#: src/ui/pages/applications/mod.rs:871 src/ui/pages/cpu.rs:237 #: src/ui/pages/cpu.rs:252 src/ui/pages/cpu.rs:266 src/ui/pages/cpu.rs:272 #: src/ui/pages/cpu.rs:278 src/ui/pages/cpu.rs:284 src/ui/pages/cpu.rs:288 -#: src/ui/pages/cpu.rs:291 src/ui/pages/cpu.rs:379 src/ui/pages/gpu.rs:252 -#: src/ui/pages/gpu.rs:298 src/ui/pages/gpu.rs:321 src/ui/pages/gpu.rs:324 -#: src/ui/pages/gpu.rs:335 src/ui/pages/gpu.rs:357 src/ui/pages/gpu.rs:367 +#: src/ui/pages/cpu.rs:291 src/ui/pages/cpu.rs:379 src/ui/pages/gpu.rs:251 +#: src/ui/pages/gpu.rs:296 src/ui/pages/gpu.rs:321 src/ui/pages/gpu.rs:324 +#: src/ui/pages/gpu.rs:335 src/ui/pages/gpu.rs:355 src/ui/pages/gpu.rs:367 #: src/ui/pages/gpu.rs:381 src/ui/pages/gpu.rs:383 src/ui/pages/gpu.rs:395 #: src/ui/pages/gpu.rs:402 src/ui/pages/gpu.rs:406 src/ui/pages/memory.rs:240 -#: src/ui/pages/memory.rs:245 src/ui/pages/memory.rs:250 -#: src/ui/pages/memory.rs:251 src/ui/pages/memory.rs:255 -#: src/ui/pages/memory.rs:260 src/ui/pages/memory.rs:289 -#: src/ui/pages/memory.rs:343 src/ui/pages/network.rs:258 -#: src/ui/pages/network.rs:266 src/ui/pages/network.rs:273 -#: src/ui/pages/network.rs:280 src/ui/pages/network.rs:283 -#: src/ui/pages/processes/mod.rs:867 src/ui/pages/processes/mod.rs:920 -#: src/ui/pages/processes/mod.rs:973 src/ui/pages/processes/mod.rs:1026 +#: src/ui/pages/memory.rs:241 src/ui/pages/memory.rs:245 +#: src/ui/pages/memory.rs:246 src/ui/pages/memory.rs:250 +#: src/ui/pages/memory.rs:251 src/ui/pages/memory.rs:279 +#: src/ui/pages/memory.rs:333 src/ui/pages/network.rs:257 +#: src/ui/pages/network.rs:264 src/ui/pages/network.rs:271 +#: src/ui/pages/network.rs:277 src/ui/pages/network.rs:280 +#: src/ui/pages/processes/mod.rs:859 src/ui/pages/processes/mod.rs:912 +#: src/ui/pages/processes/mod.rs:965 src/ui/pages/processes/mod.rs:1018 #: src/utils/app.rs:686 src/utils/app.rs:762 src/utils/drive.rs:90 #: src/utils/gpu/mod.rs:255 src/utils/gpu/mod.rs:261 msgid "N/A" msgstr "" -#: src/ui/pages/applications/mod.rs:152 data/resources/ui/window.ui:61 -#: data/resources/ui/window.ui:68 -#: data/resources/ui/dialogs/settings_dialog.ui:121 +#: src/ui/pages/applications/mod.rs:150 data/resources/ui/window.ui:65 +#: data/resources/ui/window.ui:72 +#: data/resources/ui/dialogs/settings_dialog.ui:118 msgid "Applications" msgstr "" -#: src/ui/pages/applications/mod.rs:570 +#: src/ui/pages/applications/mod.rs:567 msgid "Running Applications: {}" msgstr "" -#: src/ui/pages/applications/mod.rs:599 src/ui/pages/processes/mod.rs:581 +#: src/ui/pages/applications/mod.rs:595 src/ui/pages/processes/mod.rs:576 msgid "Cancel" msgstr "" -#: src/ui/pages/applications/mod.rs:624 +#: src/ui/pages/applications/mod.rs:622 msgid "Application" msgstr "" -#: src/ui/pages/applications/mod.rs:712 src/ui/pages/cpu.rs:149 -#: src/ui/pages/processes/mod.rs:804 src/ui/window.rs:316 -#: data/resources/ui/window.ui:123 data/resources/ui/window.ui:130 -#: data/resources/ui/dialogs/app_dialog.ui:74 -#: data/resources/ui/dialogs/process_dialog.ui:61 -#: data/resources/ui/dialogs/settings_dialog.ui:132 -#: data/resources/ui/dialogs/settings_dialog.ui:203 +#: src/ui/pages/applications/mod.rs:710 src/ui/pages/cpu.rs:149 +#: src/ui/pages/processes/mod.rs:796 src/ui/window.rs:317 +#: data/resources/ui/window.ui:127 data/resources/ui/window.ui:134 +#: data/resources/ui/dialogs/app_dialog.ui:72 +#: data/resources/ui/dialogs/process_dialog.ui:59 +#: data/resources/ui/dialogs/settings_dialog.ui:129 +#: data/resources/ui/dialogs/settings_dialog.ui:200 msgid "Processor" msgstr "" -#: src/ui/pages/applications/mod.rs:757 src/ui/pages/processes/mod.rs:849 -#: data/resources/ui/dialogs/app_dialog.ui:92 -#: data/resources/ui/dialogs/process_dialog.ui:75 -#: data/resources/ui/dialogs/settings_dialog.ui:137 -#: data/resources/ui/dialogs/settings_dialog.ui:208 +#: src/ui/pages/applications/mod.rs:755 src/ui/pages/processes/mod.rs:841 +#: data/resources/ui/dialogs/app_dialog.ui:90 +#: data/resources/ui/dialogs/process_dialog.ui:73 +#: data/resources/ui/dialogs/settings_dialog.ui:134 +#: data/resources/ui/dialogs/settings_dialog.ui:205 msgid "Drive Read" msgstr "" -#: src/ui/pages/applications/mod.rs:808 src/ui/pages/processes/mod.rs:902 -#: data/resources/ui/dialogs/app_dialog.ui:101 -#: data/resources/ui/dialogs/process_dialog.ui:84 -#: data/resources/ui/dialogs/settings_dialog.ui:142 -#: data/resources/ui/dialogs/settings_dialog.ui:213 +#: src/ui/pages/applications/mod.rs:806 src/ui/pages/processes/mod.rs:894 +#: data/resources/ui/dialogs/app_dialog.ui:99 +#: data/resources/ui/dialogs/process_dialog.ui:82 +#: data/resources/ui/dialogs/settings_dialog.ui:139 +#: data/resources/ui/dialogs/settings_dialog.ui:210 msgid "Drive Read Total" msgstr "" -#: src/ui/pages/applications/mod.rs:855 src/ui/pages/processes/mod.rs:955 -#: data/resources/ui/dialogs/app_dialog.ui:110 -#: data/resources/ui/dialogs/process_dialog.ui:93 -#: data/resources/ui/dialogs/settings_dialog.ui:147 -#: data/resources/ui/dialogs/settings_dialog.ui:218 +#: src/ui/pages/applications/mod.rs:853 src/ui/pages/processes/mod.rs:947 +#: data/resources/ui/dialogs/app_dialog.ui:108 +#: data/resources/ui/dialogs/process_dialog.ui:91 +#: data/resources/ui/dialogs/settings_dialog.ui:144 +#: data/resources/ui/dialogs/settings_dialog.ui:215 msgid "Drive Write" msgstr "" -#: src/ui/pages/applications/mod.rs:908 src/ui/pages/processes/mod.rs:1008 -#: data/resources/ui/dialogs/app_dialog.ui:119 -#: data/resources/ui/dialogs/process_dialog.ui:102 -#: data/resources/ui/dialogs/settings_dialog.ui:152 -#: data/resources/ui/dialogs/settings_dialog.ui:223 +#: src/ui/pages/applications/mod.rs:906 src/ui/pages/processes/mod.rs:1000 +#: data/resources/ui/dialogs/app_dialog.ui:117 +#: data/resources/ui/dialogs/process_dialog.ui:100 +#: data/resources/ui/dialogs/settings_dialog.ui:149 +#: data/resources/ui/dialogs/settings_dialog.ui:220 msgid "Drive Write Total" msgstr "" -#: src/ui/pages/applications/mod.rs:1001 src/ui/pages/processes/mod.rs:1105 -#: data/resources/ui/dialogs/app_dialog.ui:150 -#: data/resources/ui/dialogs/process_dialog.ui:133 -#: data/resources/ui/dialogs/settings_dialog.ui:167 -#: data/resources/ui/dialogs/settings_dialog.ui:238 +#: src/ui/pages/applications/mod.rs:999 src/ui/pages/processes/mod.rs:1097 +#: data/resources/ui/dialogs/app_dialog.ui:148 +#: data/resources/ui/dialogs/process_dialog.ui:131 +#: data/resources/ui/dialogs/settings_dialog.ui:164 +#: data/resources/ui/dialogs/settings_dialog.ui:235 msgid "Video Encoder" msgstr "" -#: src/ui/pages/applications/mod.rs:1048 src/ui/pages/processes/mod.rs:1152 -#: data/resources/ui/dialogs/app_dialog.ui:159 -#: data/resources/ui/dialogs/process_dialog.ui:142 -#: data/resources/ui/dialogs/settings_dialog.ui:172 -#: data/resources/ui/dialogs/settings_dialog.ui:243 +#: src/ui/pages/applications/mod.rs:1046 src/ui/pages/processes/mod.rs:1144 +#: data/resources/ui/dialogs/app_dialog.ui:157 +#: data/resources/ui/dialogs/process_dialog.ui:140 +#: data/resources/ui/dialogs/settings_dialog.ui:169 +#: data/resources/ui/dialogs/settings_dialog.ui:240 msgid "Video Decoder" msgstr "" -#: src/ui/pages/applications/mod.rs:1094 src/ui/pages/processes/mod.rs:1199 -#: data/resources/ui/dialogs/app_dialog.ui:141 -#: data/resources/ui/dialogs/process_dialog.ui:124 -#: data/resources/ui/dialogs/settings_dialog.ui:162 -#: data/resources/ui/dialogs/settings_dialog.ui:233 +#: src/ui/pages/applications/mod.rs:1092 src/ui/pages/processes/mod.rs:1191 +#: data/resources/ui/dialogs/app_dialog.ui:139 +#: data/resources/ui/dialogs/process_dialog.ui:122 +#: data/resources/ui/dialogs/settings_dialog.ui:159 +#: data/resources/ui/dialogs/settings_dialog.ui:230 msgid "Video Memory" msgstr "" -#: src/ui/pages/applications/mod.rs:1138 src/ui/pages/processes/mod.rs:1244 +#: src/ui/pages/applications/mod.rs:1136 src/ui/pages/processes/mod.rs:1374 msgid "End {}?" msgstr "" -#: src/ui/pages/applications/mod.rs:1139 src/ui/pages/processes/mod.rs:1245 +#: src/ui/pages/applications/mod.rs:1137 src/ui/pages/processes/mod.rs:1375 msgid "Halt {}?" msgstr "" -#: src/ui/pages/applications/mod.rs:1140 src/ui/pages/processes/mod.rs:1246 +#: src/ui/pages/applications/mod.rs:1138 src/ui/pages/processes/mod.rs:1376 msgid "Kill {}?" msgstr "" -#: src/ui/pages/applications/mod.rs:1141 src/ui/pages/processes/mod.rs:1247 +#: src/ui/pages/applications/mod.rs:1139 src/ui/pages/processes/mod.rs:1377 msgid "Continue {}?" msgstr "" -#: src/ui/pages/applications/mod.rs:1147 src/ui/pages/processes/mod.rs:1253 +#: src/ui/pages/applications/mod.rs:1145 src/ui/pages/processes/mod.rs:1383 msgid "Unsaved work might be lost." msgstr "" -#: src/ui/pages/applications/mod.rs:1148 +#: src/ui/pages/applications/mod.rs:1146 msgid "" "Halting an application can come with serious risks such as losing data and " "security implications. Use with caution." msgstr "" -#: src/ui/pages/applications/mod.rs:1149 +#: src/ui/pages/applications/mod.rs:1147 msgid "" "Killing an application can come with serious risks such as losing data and " "security implications. Use with caution." msgstr "" -#: src/ui/pages/applications/mod.rs:1156 +#: src/ui/pages/applications/mod.rs:1154 msgid "End application" msgstr "" -#: src/ui/pages/applications/mod.rs:1157 +#: src/ui/pages/applications/mod.rs:1155 msgid "Halt application" msgstr "" -#: src/ui/pages/applications/mod.rs:1158 +#: src/ui/pages/applications/mod.rs:1156 msgid "Kill application" msgstr "" -#: src/ui/pages/applications/mod.rs:1159 +#: src/ui/pages/applications/mod.rs:1157 msgid "Continue application" msgstr "" @@ -297,7 +297,7 @@ msgid "Yes" msgstr "" #: src/ui/pages/drive.rs:367 src/ui/pages/drive.rs:372 -#: src/ui/pages/network.rs:329 src/ui/pages/network.rs:338 +#: src/ui/pages/network.rs:326 src/ui/pages/network.rs:335 msgid "Highest:" msgstr "" @@ -331,17 +331,17 @@ msgstr "" msgid "Swap" msgstr "" -#: src/ui/pages/memory.rs:285 +#: src/ui/pages/memory.rs:275 msgid "{} of {}" msgstr "" -#: src/ui/pages/memory.rs:288 +#: src/ui/pages/memory.rs:278 msgid "{} MT/s" msgstr "" #. Translators: This will be displayed in the sidebar, so your translation for "Swap" should #. preferably be quite short or an abbreviation -#: src/ui/pages/memory.rs:362 +#: src/ui/pages/memory.rs:352 msgid "{} / {} · Swap: {} %" msgstr "" @@ -359,125 +359,143 @@ msgstr "" #. Translators: This is an abbreviation for "Receive" and "Send". This is displayed in the sidebar so #. your translation should preferably be quite short or an abbreviation -#: src/ui/pages/network.rs:349 +#: src/ui/pages/network.rs:346 msgid "R: {} · S: {}" msgstr "" -#: src/ui/pages/processes/mod.rs:160 data/resources/ui/window.ui:92 -#: data/resources/ui/window.ui:99 -#: data/resources/ui/dialogs/settings_dialog.ui:182 +#: src/ui/pages/processes/mod.rs:158 data/resources/ui/window.ui:96 +#: data/resources/ui/window.ui:103 +#: data/resources/ui/dialogs/settings_dialog.ui:179 msgid "Processes" msgstr "" -#: src/ui/pages/processes/mod.rs:549 +#: src/ui/pages/processes/mod.rs:550 msgid "Running Processes: {}" msgstr "" -#: src/ui/pages/processes/mod.rs:620 +#: src/ui/pages/processes/mod.rs:612 msgid "root" msgstr "" -#: src/ui/pages/processes/mod.rs:632 +#: src/ui/pages/processes/mod.rs:624 msgid "Process" msgstr "" -#: src/ui/pages/processes/mod.rs:678 -#: data/resources/ui/dialogs/process_dialog.ui:156 -#: data/resources/ui/dialogs/settings_dialog.ui:188 +#: src/ui/pages/processes/mod.rs:670 +#: data/resources/ui/dialogs/process_dialog.ui:181 +#: data/resources/ui/dialogs/settings_dialog.ui:185 msgid "Process ID" msgstr "" -#: src/ui/pages/processes/mod.rs:718 -#: data/resources/ui/dialogs/process_dialog.ui:183 -#: data/resources/ui/dialogs/settings_dialog.ui:193 +#: src/ui/pages/processes/mod.rs:710 +#: data/resources/ui/dialogs/process_dialog.ui:208 +#: data/resources/ui/dialogs/settings_dialog.ui:190 msgid "User" msgstr "" -#: src/ui/pages/processes/mod.rs:1254 +#: src/ui/pages/processes/mod.rs:1237 +#: data/resources/ui/dialogs/process_dialog.ui:149 +#: data/resources/ui/dialogs/settings_dialog.ui:245 +msgid "Total CPU Time" +msgstr "" + +#: src/ui/pages/processes/mod.rs:1283 +#: data/resources/ui/dialogs/process_dialog.ui:158 +#: data/resources/ui/dialogs/settings_dialog.ui:250 +msgid "User CPU Time" +msgstr "" + +#: src/ui/pages/processes/mod.rs:1329 +#: data/resources/ui/dialogs/process_dialog.ui:167 +#: data/resources/ui/dialogs/settings_dialog.ui:255 +msgid "System CPU Time" +msgstr "" + +#: src/ui/pages/processes/mod.rs:1384 msgid "" "Halting a process can come with serious risks such as losing data and " "security implications. Use with caution." msgstr "" -#: src/ui/pages/processes/mod.rs:1255 +#: src/ui/pages/processes/mod.rs:1385 msgid "" "Killing a process can come with serious risks such as losing data and " "security implications. Use with caution." msgstr "" -#: src/ui/pages/processes/mod.rs:1262 +#: src/ui/pages/processes/mod.rs:1392 msgid "End process" msgstr "" -#: src/ui/pages/processes/mod.rs:1263 +#: src/ui/pages/processes/mod.rs:1393 msgid "Halt process" msgstr "" -#: src/ui/pages/processes/mod.rs:1264 +#: src/ui/pages/processes/mod.rs:1394 msgid "Kill process" msgstr "" -#: src/ui/pages/processes/mod.rs:1265 +#: src/ui/pages/processes/mod.rs:1395 msgid "Continue process" msgstr "" -#: src/ui/window.rs:275 +#: src/ui/window.rs:276 msgid "GPU {}" msgstr "" -#: src/ui/window.rs:818 +#: src/ui/window.rs:813 msgid "Successfully ended {}" msgstr "" -#: src/ui/window.rs:819 +#: src/ui/window.rs:814 msgid "Successfully halted {}" msgstr "" -#: src/ui/window.rs:820 +#: src/ui/window.rs:815 msgid "Successfully killed {}" msgstr "" -#: src/ui/window.rs:821 +#: src/ui/window.rs:816 msgid "Successfully continued {}" msgstr "" -#: src/ui/window.rs:828 +#: src/ui/window.rs:823 msgid "There was a problem ending a process" msgid_plural "There were problems ending {} processes" msgstr[0] "" msgstr[1] "" -#: src/ui/window.rs:834 +#: src/ui/window.rs:829 msgid "There was a problem halting a process" msgid_plural "There were problems halting {} processes" msgstr[0] "" msgstr[1] "" -#: src/ui/window.rs:840 +#: src/ui/window.rs:835 msgid "There was a problem killing a process" msgid_plural "There were problems killing {} processes" msgstr[0] "" msgstr[1] "" -#: src/ui/window.rs:846 +#: src/ui/window.rs:841 msgid "There was a problem continuing a process" msgid_plural "There were problems continuing {} processes" msgstr[0] "" msgstr[1] "" -#: src/ui/window.rs:856 +#: src/ui/window.rs:851 msgid "There was a problem ending {}" msgstr "" -#: src/ui/window.rs:857 +#: src/ui/window.rs:852 msgid "There was a problem halting {}" msgstr "" -#: src/ui/window.rs:858 +#: src/ui/window.rs:853 msgid "There was a problem killing {}" msgstr "" -#: src/ui/window.rs:859 +#: src/ui/window.rs:854 msgid "There was a problem continuing {}" msgstr "" @@ -609,356 +627,356 @@ msgstr "" msgid "WWAN Connection" msgstr "" -#: src/utils/units.rs:51 +#: src/utils/units.rs:59 msgid "{} K" msgstr "" -#: src/utils/units.rs:53 +#: src/utils/units.rs:61 msgid "{} °C" msgstr "" -#: src/utils/units.rs:55 +#: src/utils/units.rs:63 msgid "{} °F" msgstr "" -#: src/utils/units.rs:73 src/utils/units.rs:87 src/utils/units.rs:107 -#: src/utils/units.rs:121 +#: src/utils/units.rs:81 src/utils/units.rs:95 src/utils/units.rs:115 +#: src/utils/units.rs:129 msgid "{} B" msgstr "" -#: src/utils/units.rs:74 src/utils/units.rs:88 +#: src/utils/units.rs:82 src/utils/units.rs:96 msgid "{} kB" msgstr "" -#: src/utils/units.rs:75 src/utils/units.rs:89 +#: src/utils/units.rs:83 src/utils/units.rs:97 msgid "{} MB" msgstr "" -#: src/utils/units.rs:76 src/utils/units.rs:90 +#: src/utils/units.rs:84 src/utils/units.rs:98 msgid "{} GB" msgstr "" -#: src/utils/units.rs:77 src/utils/units.rs:91 +#: src/utils/units.rs:85 src/utils/units.rs:99 msgid "{} TB" msgstr "" -#: src/utils/units.rs:78 src/utils/units.rs:92 +#: src/utils/units.rs:86 src/utils/units.rs:100 msgid "{} PB" msgstr "" -#: src/utils/units.rs:79 src/utils/units.rs:93 +#: src/utils/units.rs:87 src/utils/units.rs:101 msgid "{} EB" msgstr "" -#: src/utils/units.rs:80 src/utils/units.rs:94 +#: src/utils/units.rs:88 src/utils/units.rs:102 msgid "{} ZB" msgstr "" -#: src/utils/units.rs:81 src/utils/units.rs:95 +#: src/utils/units.rs:89 src/utils/units.rs:103 msgid "{} YB" msgstr "" -#: src/utils/units.rs:82 src/utils/units.rs:96 +#: src/utils/units.rs:90 src/utils/units.rs:104 msgid "{} RB" msgstr "" -#: src/utils/units.rs:83 src/utils/units.rs:97 +#: src/utils/units.rs:91 src/utils/units.rs:105 msgid "{} QB" msgstr "" -#: src/utils/units.rs:108 src/utils/units.rs:122 +#: src/utils/units.rs:116 src/utils/units.rs:130 msgid "{} KiB" msgstr "" -#: src/utils/units.rs:109 src/utils/units.rs:123 +#: src/utils/units.rs:117 src/utils/units.rs:131 msgid "{} MiB" msgstr "" -#: src/utils/units.rs:110 src/utils/units.rs:124 +#: src/utils/units.rs:118 src/utils/units.rs:132 msgid "{} GiB" msgstr "" -#: src/utils/units.rs:111 src/utils/units.rs:125 +#: src/utils/units.rs:119 src/utils/units.rs:133 msgid "{} TiB" msgstr "" -#: src/utils/units.rs:112 src/utils/units.rs:126 +#: src/utils/units.rs:120 src/utils/units.rs:134 msgid "{} PiB" msgstr "" -#: src/utils/units.rs:113 src/utils/units.rs:127 +#: src/utils/units.rs:121 src/utils/units.rs:135 msgid "{} EiB" msgstr "" -#: src/utils/units.rs:114 src/utils/units.rs:128 +#: src/utils/units.rs:122 src/utils/units.rs:136 msgid "{} ZiB" msgstr "" -#: src/utils/units.rs:115 src/utils/units.rs:129 +#: src/utils/units.rs:123 src/utils/units.rs:137 msgid "{} YiB" msgstr "" -#: src/utils/units.rs:116 src/utils/units.rs:130 +#: src/utils/units.rs:124 src/utils/units.rs:138 msgid "{} RiB" msgstr "" -#: src/utils/units.rs:117 src/utils/units.rs:131 +#: src/utils/units.rs:125 src/utils/units.rs:139 msgid "{} QiB" msgstr "" -#: src/utils/units.rs:158 src/utils/units.rs:175 +#: src/utils/units.rs:166 src/utils/units.rs:183 msgid "{} B/s" msgstr "" -#: src/utils/units.rs:159 +#: src/utils/units.rs:167 msgid "{} kB/s" msgstr "" -#: src/utils/units.rs:160 +#: src/utils/units.rs:168 msgid "{} MB/s" msgstr "" -#: src/utils/units.rs:161 +#: src/utils/units.rs:169 msgid "{} GB/s" msgstr "" -#: src/utils/units.rs:162 +#: src/utils/units.rs:170 msgid "{} TB/s" msgstr "" -#: src/utils/units.rs:163 +#: src/utils/units.rs:171 msgid "{} PB/s" msgstr "" -#: src/utils/units.rs:164 +#: src/utils/units.rs:172 msgid "{} EB/s" msgstr "" -#: src/utils/units.rs:165 +#: src/utils/units.rs:173 msgid "{} ZB/s" msgstr "" -#: src/utils/units.rs:166 +#: src/utils/units.rs:174 msgid "{} YB/s" msgstr "" -#: src/utils/units.rs:167 +#: src/utils/units.rs:175 msgid "{} RB/s" msgstr "" -#: src/utils/units.rs:168 +#: src/utils/units.rs:176 msgid "{} QB/s" msgstr "" -#: src/utils/units.rs:176 +#: src/utils/units.rs:184 msgid "{} KiB/s" msgstr "" -#: src/utils/units.rs:177 +#: src/utils/units.rs:185 msgid "{} MiB/s" msgstr "" -#: src/utils/units.rs:178 +#: src/utils/units.rs:186 msgid "{} GiB/s" msgstr "" -#: src/utils/units.rs:179 +#: src/utils/units.rs:187 msgid "{} TiB/s" msgstr "" -#: src/utils/units.rs:180 +#: src/utils/units.rs:188 msgid "{} PiB/s" msgstr "" -#: src/utils/units.rs:181 +#: src/utils/units.rs:189 msgid "{} EiB/s" msgstr "" -#: src/utils/units.rs:182 +#: src/utils/units.rs:190 msgid "{} ZiB/s" msgstr "" -#: src/utils/units.rs:183 +#: src/utils/units.rs:191 msgid "{} YiB/s" msgstr "" -#: src/utils/units.rs:184 +#: src/utils/units.rs:192 msgid "{} RiB/s" msgstr "" -#: src/utils/units.rs:185 +#: src/utils/units.rs:193 msgid "{} QiB/s" msgstr "" -#: src/utils/units.rs:192 src/utils/units.rs:209 +#: src/utils/units.rs:200 src/utils/units.rs:217 msgid "{} b/s" msgstr "" -#: src/utils/units.rs:193 +#: src/utils/units.rs:201 msgid "{} kb/s" msgstr "" -#: src/utils/units.rs:194 +#: src/utils/units.rs:202 msgid "{} Mb/s" msgstr "" -#: src/utils/units.rs:195 +#: src/utils/units.rs:203 msgid "{} Gb/s" msgstr "" -#: src/utils/units.rs:196 +#: src/utils/units.rs:204 msgid "{} Tb/s" msgstr "" -#: src/utils/units.rs:197 +#: src/utils/units.rs:205 msgid "{} Pb/s" msgstr "" -#: src/utils/units.rs:198 +#: src/utils/units.rs:206 msgid "{} Eb/s" msgstr "" -#: src/utils/units.rs:199 +#: src/utils/units.rs:207 msgid "{} Zb/s" msgstr "" -#: src/utils/units.rs:200 +#: src/utils/units.rs:208 msgid "{} Yb/s" msgstr "" -#: src/utils/units.rs:201 +#: src/utils/units.rs:209 msgid "{} Rb/s" msgstr "" -#: src/utils/units.rs:202 +#: src/utils/units.rs:210 msgid "{} Qb/s" msgstr "" -#: src/utils/units.rs:210 +#: src/utils/units.rs:218 msgid "{} Kib/s" msgstr "" -#: src/utils/units.rs:211 +#: src/utils/units.rs:219 msgid "{} Mib/s" msgstr "" -#: src/utils/units.rs:212 +#: src/utils/units.rs:220 msgid "{} Gib/s" msgstr "" -#: src/utils/units.rs:213 +#: src/utils/units.rs:221 msgid "{} Tib/s" msgstr "" -#: src/utils/units.rs:214 +#: src/utils/units.rs:222 msgid "{} Pib/s" msgstr "" -#: src/utils/units.rs:215 +#: src/utils/units.rs:223 msgid "{} Eib/s" msgstr "" -#: src/utils/units.rs:216 +#: src/utils/units.rs:224 msgid "{} Zib/s" msgstr "" -#: src/utils/units.rs:217 +#: src/utils/units.rs:225 msgid "{} Yib/s" msgstr "" -#: src/utils/units.rs:218 +#: src/utils/units.rs:226 msgid "{} Rib/s" msgstr "" -#: src/utils/units.rs:219 +#: src/utils/units.rs:227 msgid "{} Qib/s" msgstr "" -#: src/utils/units.rs:226 +#: src/utils/units.rs:234 msgid "{} Hz" msgstr "" -#: src/utils/units.rs:227 +#: src/utils/units.rs:235 msgid "{} kHz" msgstr "" -#: src/utils/units.rs:228 +#: src/utils/units.rs:236 msgid "{} MHz" msgstr "" -#: src/utils/units.rs:229 +#: src/utils/units.rs:237 msgid "{} GHz" msgstr "" -#: src/utils/units.rs:230 +#: src/utils/units.rs:238 msgid "{} THz" msgstr "" -#: src/utils/units.rs:231 +#: src/utils/units.rs:239 msgid "{} PHz" msgstr "" -#: src/utils/units.rs:232 +#: src/utils/units.rs:240 msgid "{} EHz" msgstr "" -#: src/utils/units.rs:233 +#: src/utils/units.rs:241 msgid "{} ZHz" msgstr "" -#: src/utils/units.rs:234 +#: src/utils/units.rs:242 msgid "{} YHz" msgstr "" -#: src/utils/units.rs:235 +#: src/utils/units.rs:243 msgid "{} RHz" msgstr "" -#: src/utils/units.rs:236 +#: src/utils/units.rs:244 msgid "{} QHz" msgstr "" -#: src/utils/units.rs:243 +#: src/utils/units.rs:251 msgid "{} W" msgstr "" -#: src/utils/units.rs:244 +#: src/utils/units.rs:252 msgid "{} kW" msgstr "" -#: src/utils/units.rs:245 +#: src/utils/units.rs:253 msgid "{} MW" msgstr "" -#: src/utils/units.rs:246 +#: src/utils/units.rs:254 msgid "{} GW" msgstr "" -#: src/utils/units.rs:247 +#: src/utils/units.rs:255 msgid "{} TW" msgstr "" -#: src/utils/units.rs:248 +#: src/utils/units.rs:256 msgid "{} PW" msgstr "" -#: src/utils/units.rs:249 +#: src/utils/units.rs:257 msgid "{} EW" msgstr "" -#: src/utils/units.rs:250 +#: src/utils/units.rs:258 msgid "{} ZW" msgstr "" -#: src/utils/units.rs:251 +#: src/utils/units.rs:259 msgid "{} YW" msgstr "" -#: src/utils/units.rs:252 +#: src/utils/units.rs:260 msgid "{} RW" msgstr "" -#: src/utils/units.rs:253 +#: src/utils/units.rs:261 msgid "{} QW" msgstr "" @@ -1024,174 +1042,174 @@ msgstr "" msgid "About Resources" msgstr "" -#: data/resources/ui/dialogs/app_dialog.ui:9 +#: data/resources/ui/dialogs/app_dialog.ui:7 msgid "Application Information" msgstr "" -#: data/resources/ui/dialogs/app_dialog.ui:71 -#: data/resources/ui/dialogs/process_dialog.ui:54 -#: data/resources/ui/pages/cpu.ui:42 data/resources/ui/pages/cpu.ui:55 +#: data/resources/ui/dialogs/app_dialog.ui:69 +#: data/resources/ui/dialogs/process_dialog.ui:52 +#: data/resources/ui/pages/cpu.ui:45 data/resources/ui/pages/cpu.ui:58 #: data/resources/ui/pages/drive.ui:22 data/resources/ui/pages/gpu.ui:22 #: data/resources/ui/pages/memory.ui:31 data/resources/ui/pages/network.ui:22 msgid "Usage" msgstr "" -#: data/resources/ui/dialogs/app_dialog.ui:166 -#: data/resources/ui/dialogs/process_dialog.ui:149 -#: data/resources/ui/pages/cpu.ui:91 data/resources/ui/pages/drive.ui:36 +#: data/resources/ui/dialogs/app_dialog.ui:164 +#: data/resources/ui/dialogs/process_dialog.ui:174 +#: data/resources/ui/pages/cpu.ui:97 data/resources/ui/pages/drive.ui:36 #: data/resources/ui/pages/gpu.ui:80 data/resources/ui/pages/memory.ui:42 #: data/resources/ui/pages/network.ui:51 msgid "Properties" msgstr "" -#: data/resources/ui/dialogs/app_dialog.ui:172 +#: data/resources/ui/dialogs/app_dialog.ui:170 msgid "ID" msgstr "" -#: data/resources/ui/dialogs/app_dialog.ui:182 -#: data/resources/ui/dialogs/process_dialog.ui:165 +#: data/resources/ui/dialogs/app_dialog.ui:180 +#: data/resources/ui/dialogs/process_dialog.ui:190 msgid "Running Since" msgstr "" -#: data/resources/ui/dialogs/app_dialog.ui:190 +#: data/resources/ui/dialogs/app_dialog.ui:188 msgid "Running Processes" msgstr "" -#: data/resources/ui/dialogs/app_dialog.ui:199 -#: data/resources/ui/dialogs/process_dialog.ui:201 +#: data/resources/ui/dialogs/app_dialog.ui:197 +#: data/resources/ui/dialogs/process_dialog.ui:226 msgid "Containerized" msgstr "" -#: data/resources/ui/dialogs/process_dialog.ui:9 +#: data/resources/ui/dialogs/process_dialog.ui:7 msgid "Process Information" msgstr "" -#: data/resources/ui/dialogs/process_dialog.ui:174 +#: data/resources/ui/dialogs/process_dialog.ui:199 msgid "Commandline" msgstr "" -#: data/resources/ui/dialogs/process_dialog.ui:192 +#: data/resources/ui/dialogs/process_dialog.ui:217 msgid "Control Group" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:10 +#: data/resources/ui/dialogs/settings_dialog.ui:7 msgid "General" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:13 +#: data/resources/ui/dialogs/settings_dialog.ui:10 msgid "Units" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:16 +#: data/resources/ui/dialogs/settings_dialog.ui:13 msgid "Data Unit Prefix" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:20 +#: data/resources/ui/dialogs/settings_dialog.ui:17 msgid "Decimal" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:21 +#: data/resources/ui/dialogs/settings_dialog.ui:18 msgid "Binary" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:29 +#: data/resources/ui/dialogs/settings_dialog.ui:26 msgid "Show Network Speeds in Bits per Second" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:34 +#: data/resources/ui/dialogs/settings_dialog.ui:31 msgid "Temperature Unit" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:38 +#: data/resources/ui/dialogs/settings_dialog.ui:35 msgid "Celsius" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:39 +#: data/resources/ui/dialogs/settings_dialog.ui:36 msgid "Kelvin" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:40 +#: data/resources/ui/dialogs/settings_dialog.ui:37 msgid "Fahrenheit" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:50 +#: data/resources/ui/dialogs/settings_dialog.ui:47 msgid "User Interface" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:53 +#: data/resources/ui/dialogs/settings_dialog.ui:50 msgid "Refresh Speed" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:57 +#: data/resources/ui/dialogs/settings_dialog.ui:54 msgid "Very Slow" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:58 +#: data/resources/ui/dialogs/settings_dialog.ui:55 msgid "Slow" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:59 +#: data/resources/ui/dialogs/settings_dialog.ui:56 msgid "Normal" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:60 +#: data/resources/ui/dialogs/settings_dialog.ui:57 msgid "Fast" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:61 +#: data/resources/ui/dialogs/settings_dialog.ui:58 msgid "Very Fast" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:69 +#: data/resources/ui/dialogs/settings_dialog.ui:66 msgid "Show Graph Grids" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:74 +#: data/resources/ui/dialogs/settings_dialog.ui:71 msgid "Graph Data Points" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:88 +#: data/resources/ui/dialogs/settings_dialog.ui:85 msgid "Show Search Fields on Launch" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:93 +#: data/resources/ui/dialogs/settings_dialog.ui:90 msgid "Show Usage Details in Sidebar" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:98 +#: data/resources/ui/dialogs/settings_dialog.ui:95 msgid "Show Device Descriptions in Sidebar" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:103 +#: data/resources/ui/dialogs/settings_dialog.ui:100 msgid "Sidebar Meter Type" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:107 +#: data/resources/ui/dialogs/settings_dialog.ui:104 msgid "Bar" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:108 +#: data/resources/ui/dialogs/settings_dialog.ui:105 msgid "Graph" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:124 -#: data/resources/ui/dialogs/settings_dialog.ui:185 +#: data/resources/ui/dialogs/settings_dialog.ui:121 +#: data/resources/ui/dialogs/settings_dialog.ui:182 msgid "Information Columns" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:253 +#: data/resources/ui/dialogs/settings_dialog.ui:265 msgid "Devices" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:256 +#: data/resources/ui/dialogs/settings_dialog.ui:268 msgid "Drives" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:259 +#: data/resources/ui/dialogs/settings_dialog.ui:271 msgid "Show Virtual Drives" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:269 +#: data/resources/ui/dialogs/settings_dialog.ui:281 msgid "Show Virtual Network Interfaces" msgstr "" @@ -1207,7 +1225,7 @@ msgstr "" msgid "Continue Application" msgstr "" -#: data/resources/ui/pages/applications.ui:85 +#: data/resources/ui/pages/applications.ui:95 msgid "End Application" msgstr "" @@ -1219,35 +1237,35 @@ msgstr "" msgid "Show Usages of Logical CPUs" msgstr "" -#: data/resources/ui/pages/cpu.ui:77 data/resources/ui/pages/gpu.ui:66 +#: data/resources/ui/pages/cpu.ui:83 data/resources/ui/pages/gpu.ui:66 msgid "Sensors" msgstr "" -#: data/resources/ui/pages/cpu.ui:84 data/resources/ui/pages/gpu.ui:69 +#: data/resources/ui/pages/cpu.ui:90 data/resources/ui/pages/gpu.ui:69 msgid "Temperature" msgstr "" -#: data/resources/ui/pages/cpu.ui:98 +#: data/resources/ui/pages/cpu.ui:104 msgid "Max Frequency" msgstr "" -#: data/resources/ui/pages/cpu.ui:107 +#: data/resources/ui/pages/cpu.ui:113 msgid "Logical Cores" msgstr "" -#: data/resources/ui/pages/cpu.ui:116 +#: data/resources/ui/pages/cpu.ui:122 msgid "Physical Cores" msgstr "" -#: data/resources/ui/pages/cpu.ui:125 +#: data/resources/ui/pages/cpu.ui:131 msgid "Sockets" msgstr "" -#: data/resources/ui/pages/cpu.ui:134 +#: data/resources/ui/pages/cpu.ui:140 msgid "Virtualization" msgstr "" -#: data/resources/ui/pages/cpu.ui:143 +#: data/resources/ui/pages/cpu.ui:149 msgid "Architecture" msgstr "" @@ -1351,6 +1369,6 @@ msgstr "" msgid "Continue Process" msgstr "" -#: data/resources/ui/pages/processes.ui:85 +#: data/resources/ui/pages/processes.ui:95 msgid "End Process" msgstr "" diff --git a/src/ui/dialogs/process_dialog.rs b/src/ui/dialogs/process_dialog.rs index 92fc133b..c5ecc8f7 100644 --- a/src/ui/dialogs/process_dialog.rs +++ b/src/ui/dialogs/process_dialog.rs @@ -7,7 +7,7 @@ use crate::config::PROFILE; use crate::i18n::i18n; use crate::utils::boot_time; use crate::utils::process::ProcessItem; -use crate::utils::units::{convert_speed, convert_storage}; +use crate::utils::units::{convert_speed, convert_storage, format_time}; mod imp { @@ -41,6 +41,12 @@ mod imp { #[template_child] pub decoder_usage: TemplateChild, #[template_child] + pub total_cpu_time: TemplateChild, + #[template_child] + pub user_cpu_time: TemplateChild, + #[template_child] + pub system_cpu_time: TemplateChild, + #[template_child] pub pid: TemplateChild, #[template_child] pub running_since: TemplateChild, @@ -160,6 +166,16 @@ impl ResProcessDialog { imp.decoder_usage .set_subtitle(&format!("{:.1} %", process.dec_usage * 100.0)); + imp.total_cpu_time.set_subtitle(&format_time( + process.user_cpu_time + process.system_cpu_time, + )); + + imp.user_cpu_time + .set_subtitle(&format_time(process.user_cpu_time)); + + imp.system_cpu_time + .set_subtitle(&format_time(process.system_cpu_time)); + imp.pid.set_subtitle(&process.pid.to_string()); imp.running_since.set_subtitle( diff --git a/src/ui/dialogs/settings_dialog.rs b/src/ui/dialogs/settings_dialog.rs index 6a924bb8..c5c008b7 100644 --- a/src/ui/dialogs/settings_dialog.rs +++ b/src/ui/dialogs/settings_dialog.rs @@ -82,6 +82,12 @@ mod imp { pub processes_show_encoder_row: TemplateChild, #[template_child] pub processes_show_decoder_row: TemplateChild, + #[template_child] + pub processes_show_total_cpu_time_row: TemplateChild, + #[template_child] + pub processes_show_user_cpu_time_row: TemplateChild, + #[template_child] + pub processes_show_system_cpu_time_row: TemplateChild, #[template_child] pub show_virtual_drives_row: TemplateChild, @@ -207,6 +213,12 @@ impl ResSettingsDialog { .set_active(SETTINGS.processes_show_encoder()); imp.processes_show_decoder_row .set_active(SETTINGS.processes_show_decoder()); + imp.processes_show_total_cpu_time_row + .set_active(SETTINGS.processes_show_total_cpu_time()); + imp.processes_show_user_cpu_time_row + .set_active(SETTINGS.processes_show_user_cpu_time()); + imp.processes_show_system_cpu_time_row + .set_active(SETTINGS.processes_show_system_cpu_time()); imp.show_virtual_drives_row .set_active(SETTINGS.show_virtual_drives()); @@ -382,6 +394,21 @@ impl ResSettingsDialog { let _ = SETTINGS.set_processes_show_decoder(switch_row.is_active()); }); + imp.processes_show_total_cpu_time_row + .connect_active_notify(|switch_row| { + let _ = SETTINGS.set_processes_show_total_cpu_time(switch_row.is_active()); + }); + + imp.processes_show_user_cpu_time_row + .connect_active_notify(|switch_row| { + let _ = SETTINGS.set_processes_show_user_cpu_time(switch_row.is_active()); + }); + + imp.processes_show_system_cpu_time_row + .connect_active_notify(|switch_row| { + let _ = SETTINGS.set_processes_show_system_cpu_time(switch_row.is_active()); + }); + imp.show_virtual_drives_row .connect_active_notify(|switch_row| { let _ = SETTINGS.set_show_virtual_drives(switch_row.is_active()); diff --git a/src/ui/pages/processes/mod.rs b/src/ui/pages/processes/mod.rs index 715d837a..c2978d42 100644 --- a/src/ui/pages/processes/mod.rs +++ b/src/ui/pages/processes/mod.rs @@ -18,7 +18,7 @@ use crate::ui::window::{Action, MainWindow}; use crate::utils::app::AppsContext; use crate::utils::process::{ProcessAction, ProcessItem}; use crate::utils::settings::SETTINGS; -use crate::utils::units::{convert_speed, convert_storage}; +use crate::utils::units::{convert_speed, convert_storage, format_time}; use self::process_entry::ProcessEntry; use self::process_name_cell::ResProcessNameCell; @@ -358,6 +358,9 @@ impl ResProcesses { columns.push(self.add_gpu_mem_column(&column_view)); columns.push(self.add_encoder_column(&column_view)); columns.push(self.add_decoder_column(&column_view)); + columns.push(self.add_total_cpu_time_column(&column_view)); + columns.push(self.add_user_cpu_time_column(&column_view)); + columns.push(self.add_system_cpu_time_column(&column_view)); let store = gio::ListStore::new::(); @@ -876,7 +879,7 @@ impl ResProcesses { column_view.append_column(&read_speed_col); SETTINGS.connect_processes_show_drive_read_speed( - clone!(@strong read_speed_col => move |visible| { + clone!(@strong read_speed_col => move |visible| { read_speed_col.set_visible(visible); }), ); @@ -1035,7 +1038,7 @@ impl ResProcesses { column_view.append_column(&write_total_col); SETTINGS.connect_processes_show_drive_write_total( - clone!(@strong write_total_col => move |visible| { + clone!(@strong write_total_col => move |visible| { write_total_col.set_visible(visible) }), ); @@ -1081,7 +1084,7 @@ impl ResProcesses { column_view.append_column(&gpu_col); SETTINGS.connect_processes_show_gpu( - clone!(@strong gpu_col => move |visible| gpu_col.set_visible(visible)), + clone!(@strong gpu_col => move |visible| gpu_col.set_visible(visible)), ); gpu_col @@ -1128,7 +1131,7 @@ impl ResProcesses { column_view.append_column(&encoder_col); SETTINGS.connect_processes_show_encoder( - clone!(@strong encoder_col => move |visible| encoder_col.set_visible(visible)), + clone!(@strong encoder_col => move |visible| encoder_col.set_visible(visible)), ); encoder_col @@ -1175,7 +1178,7 @@ impl ResProcesses { column_view.append_column(&decoder_col); SETTINGS.connect_processes_show_decoder( - clone!(@strong decoder_col => move |visible| decoder_col.set_visible(visible)), + clone!(@strong decoder_col => move |visible| decoder_col.set_visible(visible)), ); decoder_col @@ -1221,11 +1224,149 @@ impl ResProcesses { column_view.append_column(&gpu_mem_col); SETTINGS.connect_processes_show_gpu_memory( - clone!(@strong gpu_mem_col => move |visible| gpu_mem_col.set_visible(visible)), + clone!(@strong gpu_mem_col => move |visible| gpu_mem_col.set_visible(visible)), ); gpu_mem_col } + + fn add_total_cpu_time_column(&self, column_view: &ColumnView) -> ColumnViewColumn { + let total_cpu_time_col_factory = gtk::SignalListItemFactory::new(); + + let total_cpu_time_col = gtk::ColumnViewColumn::new( + Some(&i18n("Total CPU Time")), + Some(total_cpu_time_col_factory.clone()), + ); + + total_cpu_time_col.set_resizable(true); + + total_cpu_time_col_factory.connect_setup(move |_factory, item| { + let item = item.downcast_ref::().unwrap(); + + let row = gtk::Inscription::new(None); + row.set_min_chars(9); + + item.set_child(Some(&row)); + item.property_expression("item") + .chain_property::("total_cpu_time") + .chain_closure::(closure!(|_: Option, total_cpu_time: f64| { + format_time(total_cpu_time) + })) + .bind(&row, "text", Widget::NONE); + }); + + let total_cpu_time_col_sorter = NumericSorter::builder() + .sort_order(SortType::Ascending) + .expression(gtk::PropertyExpression::new( + ProcessEntry::static_type(), + None::<>k::Expression>, + "total_cpu_time", + )) + .build(); + + total_cpu_time_col.set_sorter(Some(&total_cpu_time_col_sorter)); + total_cpu_time_col.set_visible(SETTINGS.processes_show_total_cpu_time()); + + column_view.append_column(&total_cpu_time_col); + + SETTINGS.connect_processes_show_total_cpu_time( + clone!(@strong total_cpu_time_col => move |visible| total_cpu_time_col.set_visible(visible)), + ); + + total_cpu_time_col + } + + fn add_user_cpu_time_column(&self, column_view: &ColumnView) -> ColumnViewColumn { + let user_cpu_time_col_factory = gtk::SignalListItemFactory::new(); + + let user_cpu_time_col = gtk::ColumnViewColumn::new( + Some(&i18n("User CPU Time")), + Some(user_cpu_time_col_factory.clone()), + ); + + user_cpu_time_col.set_resizable(true); + + user_cpu_time_col_factory.connect_setup(move |_factory, item| { + let item = item.downcast_ref::().unwrap(); + + let row = gtk::Inscription::new(None); + row.set_min_chars(9); + + item.set_child(Some(&row)); + item.property_expression("item") + .chain_property::("user_cpu_time") + .chain_closure::(closure!(|_: Option, user_cpu_time: f64| { + format_time(user_cpu_time) + })) + .bind(&row, "text", Widget::NONE); + }); + + let user_cpu_time_col_sorter = NumericSorter::builder() + .sort_order(SortType::Ascending) + .expression(gtk::PropertyExpression::new( + ProcessEntry::static_type(), + None::<>k::Expression>, + "user_cpu_time", + )) + .build(); + + user_cpu_time_col.set_sorter(Some(&user_cpu_time_col_sorter)); + user_cpu_time_col.set_visible(SETTINGS.processes_show_user_cpu_time()); + + column_view.append_column(&user_cpu_time_col); + + SETTINGS.connect_processes_show_user_cpu_time( + clone!(@strong user_cpu_time_col => move |visible| user_cpu_time_col.set_visible(visible)), + ); + + user_cpu_time_col + } + + fn add_system_cpu_time_column(&self, column_view: &ColumnView) -> ColumnViewColumn { + let system_cpu_time_col_factory = gtk::SignalListItemFactory::new(); + + let system_cpu_time_col = gtk::ColumnViewColumn::new( + Some(&i18n("System CPU Time")), + Some(system_cpu_time_col_factory.clone()), + ); + + system_cpu_time_col.set_resizable(true); + + system_cpu_time_col_factory.connect_setup(move |_factory, item| { + let item = item.downcast_ref::().unwrap(); + + let row = gtk::Inscription::new(None); + row.set_min_chars(9); + + item.set_child(Some(&row)); + item.property_expression("item") + .chain_property::("system_cpu_time") + .chain_closure::(closure!(|_: Option, system_cpu_time: f64| { + format_time(system_cpu_time) + })) + .bind(&row, "text", Widget::NONE); + }); + + let system_cpu_time_col_sorter = NumericSorter::builder() + .sort_order(SortType::Ascending) + .expression(gtk::PropertyExpression::new( + ProcessEntry::static_type(), + None::<>k::Expression>, + "system_cpu_time", + )) + .build(); + + system_cpu_time_col.set_sorter(Some(&system_cpu_time_col_sorter)); + system_cpu_time_col.set_visible(SETTINGS.processes_show_system_cpu_time()); + + column_view.append_column(&system_cpu_time_col); + + SETTINGS.connect_processes_show_system_cpu_time( + clone!(@strong system_cpu_time_col => move |visible| system_cpu_time_col.set_visible(visible)), + ); + + system_cpu_time_col + } } fn get_action_name(action: ProcessAction, args: &[&str]) -> String { diff --git a/src/ui/pages/processes/process_entry.rs b/src/ui/pages/processes/process_entry.rs index 7a12b1a5..50cc69c7 100644 --- a/src/ui/pages/processes/process_entry.rs +++ b/src/ui/pages/processes/process_entry.rs @@ -65,6 +65,15 @@ mod imp { #[property(get, set)] gpu_mem_usage: Cell, + #[property(get, set)] + total_cpu_time: Cell, + + #[property(get, set)] + user_cpu_time: Cell, + + #[property(get, set)] + system_cpu_time: Cell, + pub process_item: RefCell>, } @@ -87,6 +96,9 @@ mod imp { enc_usage: Cell::new(0.0), dec_usage: Cell::new(0.0), gpu_mem_usage: Cell::new(0), + total_cpu_time: Cell::new(0.0), + user_cpu_time: Cell::new(0.0), + system_cpu_time: Cell::new(0.0), } } } @@ -198,6 +210,9 @@ impl ProcessEntry { self.set_enc_usage(process_item.enc_usage); self.set_dec_usage(process_item.dec_usage); self.set_gpu_mem_usage(process_item.gpu_mem_usage); + self.set_total_cpu_time(process_item.user_cpu_time + process_item.system_cpu_time); + self.set_user_cpu_time(process_item.user_cpu_time); + self.set_system_cpu_time(process_item.system_cpu_time); self.imp().process_item.replace(Some(process_item)); } diff --git a/src/utils/app.rs b/src/utils/app.rs index 39b82136..5a292115 100644 --- a/src/utils/app.rs +++ b/src/utils/app.rs @@ -16,7 +16,7 @@ use crate::i18n::i18n; use super::{ boot_time, process::{Process, ProcessAction, ProcessItem}, - NaNDefault, + NaNDefault, TICK_RATE, }; // This contains executable names that are blacklisted from being recognized as applications @@ -617,6 +617,8 @@ impl AppsContext { icon: process.icon.clone(), memory_usage: process.data.memory_usage, cpu_time_ratio: process.cpu_time_ratio(), + user_cpu_time: ((process.data.user_cpu_time) as f64 / (*TICK_RATE) as f64), + system_cpu_time: ((process.data.system_cpu_time) as f64 / (*TICK_RATE) as f64), commandline: Process::sanitize_cmdline(process.data.commandline.clone()) .unwrap_or(full_comm), containerization: process.data.containerization, @@ -796,7 +798,10 @@ impl AppsContext { updated_processes.insert(process_data.pid); // refresh our old processes if let Some(old_process) = self.processes.get_mut(&process_data.pid) { - old_process.cpu_time_last = old_process.data.cpu_time; + old_process.cpu_time_last = old_process + .data + .user_cpu_time + .saturating_add(old_process.data.system_cpu_time); old_process.timestamp_last = old_process.data.timestamp; old_process.read_bytes_last = old_process.data.read_bytes; old_process.write_bytes_last = old_process.data.write_bytes; diff --git a/src/utils/process.rs b/src/utils/process.rs index 32326170..472a0232 100644 --- a/src/utils/process.rs +++ b/src/utils/process.rs @@ -81,6 +81,8 @@ pub struct ProcessItem { pub icon: Icon, pub memory_usage: usize, pub cpu_time_ratio: f32, + pub user_cpu_time: f64, + pub system_cpu_time: f64, pub commandline: String, pub containerization: Containerization, pub starttime: f64, @@ -279,8 +281,12 @@ impl Process { if self.cpu_time_last == 0 { 0.0 } else { - let delta_cpu_time = - self.data.cpu_time.saturating_sub(self.cpu_time_last) as f32 * 1000.0; + let delta_cpu_time = (self + .data + .user_cpu_time + .saturating_add(self.data.system_cpu_time)) + .saturating_sub(self.cpu_time_last) as f32 + * 1000.0; let delta_time = self.data.timestamp.saturating_sub(self.timestamp_last); delta_cpu_time / (delta_time * *TICK_RATE as u64 * *NUM_CPUS as u64) as f32 diff --git a/src/utils/settings.rs b/src/utils/settings.rs index 6d9fda8d..cce594e9 100644 --- a/src/utils/settings.rs +++ b/src/utils/settings.rs @@ -354,6 +354,9 @@ impl Settings { processes_show_gpu_memory, processes_show_encoder, processes_show_decoder, + processes_show_total_cpu_time, + processes_show_user_cpu_time, + processes_show_system_cpu_time, show_logical_cpus, show_graph_grids ); diff --git a/src/utils/units.rs b/src/utils/units.rs index dd309fa9..5e714c0d 100644 --- a/src/utils/units.rs +++ b/src/utils/units.rs @@ -22,6 +22,14 @@ enum Prefix { Quetta, } +pub fn format_time(time_in_seconds: f64) -> String { + let millis = ((time_in_seconds - time_in_seconds.floor()) * 100.0) as u8; + let seconds = (time_in_seconds % 60.0) as u8; + let minutes = ((time_in_seconds / 60.0) % 60.0) as u8; + let hours = (time_in_seconds / (60.0 * 60.0)) as usize; + format!("{hours}∶{minutes:02}∶{seconds:02}.{millis:02}") +} + fn to_largest_prefix(amount: f64, prefix_base: Base) -> (f64, Prefix) { let mut x = amount; let base = match prefix_base {