From 299293d4c97ced9de9b644d3032205fd0f5f74d8 Mon Sep 17 00:00:00 2001 From: nokyan Date: Mon, 30 Sep 2024 23:57:21 +0200 Subject: [PATCH 01/12] Add swap columns --- data/net.nokyan.Resources.gschema.xml.in | 8 + data/resources/ui/dialogs/app_dialog.ui | 9 + data/resources/ui/dialogs/settings_dialog.ui | 10 + lib/process_data/src/lib.rs | 57 ++++- po/resources.pot | 209 +++++++++--------- src/ui/dialogs/app_dialog.rs | 5 + src/ui/dialogs/process_dialog.rs | 5 + src/ui/dialogs/settings_dialog.rs | 16 ++ .../pages/applications/application_entry.rs | 5 + src/ui/pages/applications/mod.rs | 60 +++++ src/ui/pages/processes/mod.rs | 59 +++++ src/ui/pages/processes/process_entry.rs | 5 + src/utils/app.rs | 7 + src/utils/settings.rs | 2 + 14 files changed, 348 insertions(+), 109 deletions(-) diff --git a/data/net.nokyan.Resources.gschema.xml.in b/data/net.nokyan.Resources.gschema.xml.in index b3bbd459..2abc5f30 100644 --- a/data/net.nokyan.Resources.gschema.xml.in +++ b/data/net.nokyan.Resources.gschema.xml.in @@ -93,6 +93,10 @@ false Display GPU memory usage in Applications view + + false + Display swap usage in Applications view + true Display process ID in Processes view @@ -157,6 +161,10 @@ false Display priority in Processes view + + false + Display swap usage in Processes view + false Display logical CPU graphs in Processor view diff --git a/data/resources/ui/dialogs/app_dialog.ui b/data/resources/ui/dialogs/app_dialog.ui index e1c18caa..208f6115 100644 --- a/data/resources/ui/dialogs/app_dialog.ui +++ b/data/resources/ui/dialogs/app_dialog.ui @@ -86,6 +86,15 @@ true + + + Swap + + true + + Drive Read diff --git a/data/resources/ui/dialogs/settings_dialog.ui b/data/resources/ui/dialogs/settings_dialog.ui index d00471bc..522b76ae 100644 --- a/data/resources/ui/dialogs/settings_dialog.ui +++ b/data/resources/ui/dialogs/settings_dialog.ui @@ -178,6 +178,11 @@ Video Decoder + + + Swap + + @@ -280,6 +285,11 @@ Priority + + + Swap + + diff --git a/lib/process_data/src/lib.rs b/lib/process_data/src/lib.rs index b27f5bbb..41acec9b 100644 --- a/lib/process_data/src/lib.rs +++ b/lib/process_data/src/lib.rs @@ -35,6 +35,8 @@ static RE_UID: Lazy = Lazy::new(|| Regex::new(r"Uid:\s*(\d+)").unwrap()); static RE_AFFINITY: Lazy = Lazy::new(|| Regex::new(r"Cpus_allowed:\s*([0-9A-Fa-f]+)").unwrap()); +static RE_SWAP_USAGGE: Lazy = Lazy::new(|| Regex::new(r"VmSwap:\s*([0-9]+) kB").unwrap()); + static RE_IO_READ: Lazy = Lazy::new(|| Regex::new(r"read_bytes:\s*(\d+)").unwrap()); static RE_IO_WRITE: Lazy = Lazy::new(|| Regex::new(r"write_bytes:\s*(\d+)").unwrap()); @@ -152,6 +154,7 @@ pub struct ProcessData { pub niceness: Niceness, pub affinity: Vec, pub memory_usage: usize, + pub swap_usage: usize, pub starttime: u64, // in clock ticks, see man proc(5)! pub cgroup: Option, pub containerization: Containerization, @@ -271,10 +274,26 @@ 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 parent_pid = stat[3 - 2].parse()?; - let user_cpu_time = stat[13 - 2].parse()?; - let system_cpu_time = stat[14 - 2].parse()?; - let nice = stat[18 - 2].parse()?; + let parent_pid = stat + .get(3 - 2) + .context("wrong stat file format") + .and_then(|x| x.parse().context("couldn't parse stat file content"))?; + let user_cpu_time = stat + .get(13 - 2) + .context("wrong stat file format") + .and_then(|x| x.parse().context("couldn't parse stat file content"))?; + let system_cpu_time = stat + .get(14 - 2) + .context("wrong stat file format") + .and_then(|x| x.parse().context("couldn't parse stat file content"))?; + let nice = stat + .get(18 - 2) + .context("wrong stat file format") + .and_then(|x| x.parse().context("couldn't parse stat file content"))?; + let starttime = stat + .get(21 - 2) + .context("wrong stat file format") + .and_then(|x| x.parse().context("couldn't parse stat file content"))?; let mut affinity = Vec::with_capacity(*NUM_CPUS); RE_AFFINITY @@ -295,9 +314,32 @@ impl ProcessData { }); }); - let memory_usage = (statm[1].parse::()? - statm[2].parse::()?) * *PAGESIZE; - - let starttime = stat[21 - 2].parse()?; + let swap_usage = RE_SWAP_USAGGE + .captures(&status) + .and_then(|captures| captures.get(1)) + .map(|capture| capture.as_str()) + .unwrap_or_default() + .parse::() + .context("couldn't parse status file content")? + .saturating_mul(1000); + + let memory_usage = statm + .get(1) + .context("wrong statm file format") + .and_then(|x| { + x.parse::() + .context("couldn't parse statm file content") + })? + .saturating_sub( + statm + .get(2) + .context("wrong statm file format") + .and_then(|x| { + x.parse::() + .context("couldn't parse statm file content") + })?, + ) + .saturating_mul(*PAGESIZE); let cgroup = Self::sanitize_cgroup(cgroup); @@ -341,6 +383,7 @@ impl ProcessData { niceness: nice, affinity, memory_usage, + swap_usage, starttime, cgroup, containerization, diff --git a/po/resources.pot b/po/resources.pot index 6c662608..48d8ab4c 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-08-26 01:10+0200\n" +"POT-Creation-Date: 2024-09-30 23:49+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -51,28 +51,28 @@ msgid "CPU" msgstr "" #: data/net.nokyan.Resources.metainfo.xml.in.in:25 -#: src/ui/pages/applications/mod.rs:844 src/ui/pages/memory.rs:140 -#: src/ui/pages/memory.rs:221 src/ui/pages/processes/mod.rs:1013 +#: src/ui/pages/applications/mod.rs:842 src/ui/pages/memory.rs:140 +#: src/ui/pages/memory.rs:221 src/ui/pages/processes/mod.rs:1014 #: data/resources/ui/window.ui:158 data/resources/ui/window.ui:165 #: data/resources/ui/dialogs/app_dialog.ui:82 #: data/resources/ui/dialogs/process_dialog.ui:64 #: data/resources/ui/dialogs/settings_dialog.ui:133 -#: data/resources/ui/dialogs/settings_dialog.ui:215 +#: data/resources/ui/dialogs/settings_dialog.ui:220 msgid "Memory" msgstr "" #: data/net.nokyan.Resources.metainfo.xml.in.in:26 -#: src/ui/pages/applications/mod.rs:1217 src/ui/pages/gpu.rs:157 -#: src/ui/pages/processes/mod.rs:1397 src/ui/window.rs:303 -#: data/resources/ui/dialogs/app_dialog.ui:131 +#: src/ui/pages/applications/mod.rs:1215 src/ui/pages/gpu.rs:157 +#: src/ui/pages/processes/mod.rs:1398 src/ui/window.rs:303 +#: data/resources/ui/dialogs/app_dialog.ui:140 #: data/resources/ui/dialogs/process_dialog.ui:109 #: data/resources/ui/dialogs/settings_dialog.ui:163 -#: data/resources/ui/dialogs/settings_dialog.ui:245 +#: data/resources/ui/dialogs/settings_dialog.ui:250 msgid "GPU" msgstr "" #: data/net.nokyan.Resources.metainfo.xml.in.in:27 -#: data/resources/ui/dialogs/settings_dialog.ui:304 +#: data/resources/ui/dialogs/settings_dialog.ui:314 msgid "Network Interfaces" msgstr "" @@ -134,11 +134,11 @@ msgstr "" msgid "Icon by" msgstr "" -#: src/ui/dialogs/app_dialog.rs:146 src/ui/dialogs/process_dialog.rs:125 -#: src/ui/dialogs/process_dialog.rs:133 src/ui/dialogs/process_dialog.rs:135 -#: src/ui/dialogs/process_dialog.rs:153 src/ui/dialogs/process_dialog.rs:160 -#: src/ui/dialogs/process_dialog.rs:167 src/ui/dialogs/process_dialog.rs:174 -#: src/ui/pages/applications/mod.rs:987 src/ui/pages/applications/mod.rs:1111 +#: src/ui/dialogs/app_dialog.rs:148 src/ui/dialogs/process_dialog.rs:127 +#: src/ui/dialogs/process_dialog.rs:135 src/ui/dialogs/process_dialog.rs:137 +#: src/ui/dialogs/process_dialog.rs:158 src/ui/dialogs/process_dialog.rs:165 +#: src/ui/dialogs/process_dialog.rs:172 src/ui/dialogs/process_dialog.rs:179 +#: src/ui/pages/applications/mod.rs:985 src/ui/pages/applications/mod.rs:1109 #: src/ui/pages/battery.rs:239 src/ui/pages/battery.rs:259 #: src/ui/pages/battery.rs:265 src/ui/pages/battery.rs:268 #: src/ui/pages/battery.rs:294 src/ui/pages/battery.rs:318 @@ -164,9 +164,9 @@ msgstr "" #: src/ui/pages/network.rs:357 src/ui/pages/network.rs:360 #: src/ui/pages/network.rs:362 src/ui/pages/network.rs:391 #: src/ui/pages/network.rs:394 src/ui/pages/network.rs:396 -#: src/ui/pages/processes/mod.rs:1155 src/ui/pages/processes/mod.rs:1221 -#: src/ui/pages/processes/mod.rs:1287 src/ui/pages/processes/mod.rs:1353 -#: src/ui/pages/processes/mod.rs:1835 src/ui/pages/processes/mod.rs:1837 +#: src/ui/pages/processes/mod.rs:1156 src/ui/pages/processes/mod.rs:1222 +#: src/ui/pages/processes/mod.rs:1288 src/ui/pages/processes/mod.rs:1354 +#: src/ui/pages/processes/mod.rs:1836 src/ui/pages/processes/mod.rs:1838 #: src/utils/battery.rs:139 src/utils/drive.rs:90 src/utils/gpu/mod.rs:258 #: src/utils/gpu/mod.rs:264 msgid "N/A" @@ -177,18 +177,18 @@ msgstr "" msgid "CPU {}" msgstr "" -#: src/ui/pages/applications/application_entry.rs:179 src/ui/pages/drive.rs:434 -#: src/ui/pages/drive.rs:444 src/ui/pages/processes/process_entry.rs:206 +#: src/ui/pages/applications/application_entry.rs:183 src/ui/pages/drive.rs:434 +#: src/ui/pages/drive.rs:444 src/ui/pages/processes/process_entry.rs:210 msgid "No" msgstr "" -#: src/ui/pages/applications/application_entry.rs:180 -#: src/ui/pages/processes/process_entry.rs:207 +#: src/ui/pages/applications/application_entry.rs:184 +#: src/ui/pages/processes/process_entry.rs:211 msgid "Yes (Flatpak)" msgstr "" -#: src/ui/pages/applications/application_entry.rs:181 -#: src/ui/pages/processes/process_entry.rs:208 +#: src/ui/pages/applications/application_entry.rs:185 +#: src/ui/pages/processes/process_entry.rs:212 msgid "Yes (Snap)" msgstr "" @@ -198,135 +198,144 @@ msgstr "" msgid "Apps" msgstr "" -#: src/ui/pages/applications/mod.rs:700 +#. -1 because we don't want to count System Processes +#: src/ui/pages/applications/mod.rs:699 msgid "Running Apps: {}" msgstr "" -#: src/ui/pages/applications/mod.rs:741 src/ui/pages/processes/mod.rs:798 +#: src/ui/pages/applications/mod.rs:739 src/ui/pages/processes/mod.rs:799 msgid "Cancel" msgstr "" -#: src/ui/pages/applications/mod.rs:787 +#: src/ui/pages/applications/mod.rs:785 msgid "App" msgstr "" -#: src/ui/pages/applications/mod.rs:903 src/ui/pages/cpu.rs:157 -#: src/ui/pages/processes/mod.rs:1071 src/ui/window.rs:355 +#: src/ui/pages/applications/mod.rs:901 src/ui/pages/cpu.rs:157 +#: src/ui/pages/processes/mod.rs:1072 src/ui/window.rs:355 #: data/resources/ui/window.ui:127 data/resources/ui/window.ui:134 #: data/resources/ui/dialogs/app_dialog.ui:73 #: data/resources/ui/dialogs/process_dialog.ui:55 #: data/resources/ui/dialogs/settings_dialog.ui:138 -#: data/resources/ui/dialogs/settings_dialog.ui:220 +#: data/resources/ui/dialogs/settings_dialog.ui:225 msgid "Processor" msgstr "" -#: src/ui/pages/applications/mod.rs:966 src/ui/pages/processes/mod.rs:1134 -#: data/resources/ui/dialogs/app_dialog.ui:91 +#: src/ui/pages/applications/mod.rs:964 src/ui/pages/processes/mod.rs:1135 +#: data/resources/ui/dialogs/app_dialog.ui:100 #: data/resources/ui/dialogs/process_dialog.ui:69 #: data/resources/ui/dialogs/settings_dialog.ui:143 -#: data/resources/ui/dialogs/settings_dialog.ui:225 +#: data/resources/ui/dialogs/settings_dialog.ui:230 msgid "Drive Read" msgstr "" -#: src/ui/pages/applications/mod.rs:1030 src/ui/pages/processes/mod.rs:1200 -#: data/resources/ui/dialogs/app_dialog.ui:100 +#: src/ui/pages/applications/mod.rs:1028 src/ui/pages/processes/mod.rs:1201 +#: data/resources/ui/dialogs/app_dialog.ui:109 #: data/resources/ui/dialogs/process_dialog.ui:78 #: data/resources/ui/dialogs/settings_dialog.ui:148 -#: data/resources/ui/dialogs/settings_dialog.ui:230 +#: data/resources/ui/dialogs/settings_dialog.ui:235 msgid "Drive Read Total" msgstr "" -#: src/ui/pages/applications/mod.rs:1090 src/ui/pages/processes/mod.rs:1266 -#: data/resources/ui/dialogs/app_dialog.ui:109 +#: src/ui/pages/applications/mod.rs:1088 src/ui/pages/processes/mod.rs:1267 +#: data/resources/ui/dialogs/app_dialog.ui:118 #: data/resources/ui/dialogs/process_dialog.ui:87 #: data/resources/ui/dialogs/settings_dialog.ui:153 -#: data/resources/ui/dialogs/settings_dialog.ui:235 +#: data/resources/ui/dialogs/settings_dialog.ui:240 msgid "Drive Write" msgstr "" -#: src/ui/pages/applications/mod.rs:1156 src/ui/pages/processes/mod.rs:1332 -#: data/resources/ui/dialogs/app_dialog.ui:118 +#: src/ui/pages/applications/mod.rs:1154 src/ui/pages/processes/mod.rs:1333 +#: data/resources/ui/dialogs/app_dialog.ui:127 #: data/resources/ui/dialogs/process_dialog.ui:96 #: data/resources/ui/dialogs/settings_dialog.ui:158 -#: data/resources/ui/dialogs/settings_dialog.ui:240 +#: data/resources/ui/dialogs/settings_dialog.ui:245 msgid "Drive Write Total" msgstr "" -#: src/ui/pages/applications/mod.rs:1275 src/ui/pages/processes/mod.rs:1455 -#: data/resources/ui/dialogs/app_dialog.ui:149 +#: src/ui/pages/applications/mod.rs:1273 src/ui/pages/processes/mod.rs:1456 +#: data/resources/ui/dialogs/app_dialog.ui:158 #: data/resources/ui/dialogs/process_dialog.ui:127 #: data/resources/ui/dialogs/settings_dialog.ui:173 -#: data/resources/ui/dialogs/settings_dialog.ui:255 +#: data/resources/ui/dialogs/settings_dialog.ui:260 msgid "Video Encoder" msgstr "" -#: src/ui/pages/applications/mod.rs:1335 src/ui/pages/processes/mod.rs:1515 -#: data/resources/ui/dialogs/app_dialog.ui:158 +#: src/ui/pages/applications/mod.rs:1333 src/ui/pages/processes/mod.rs:1516 +#: data/resources/ui/dialogs/app_dialog.ui:167 #: data/resources/ui/dialogs/process_dialog.ui:136 #: data/resources/ui/dialogs/settings_dialog.ui:178 -#: data/resources/ui/dialogs/settings_dialog.ui:260 +#: data/resources/ui/dialogs/settings_dialog.ui:265 msgid "Video Decoder" msgstr "" -#: src/ui/pages/applications/mod.rs:1394 src/ui/pages/processes/mod.rs:1575 -#: data/resources/ui/dialogs/app_dialog.ui:140 +#: src/ui/pages/applications/mod.rs:1392 src/ui/pages/processes/mod.rs:1576 +#: data/resources/ui/dialogs/app_dialog.ui:149 #: data/resources/ui/dialogs/process_dialog.ui:118 #: data/resources/ui/dialogs/settings_dialog.ui:168 -#: data/resources/ui/dialogs/settings_dialog.ui:250 +#: data/resources/ui/dialogs/settings_dialog.ui:255 msgid "Video Memory" msgstr "" -#: src/ui/pages/applications/mod.rs:1451 src/ui/pages/processes/mod.rs:1877 +#: src/ui/pages/applications/mod.rs:1450 src/ui/pages/memory.rs:227 +#: src/ui/pages/processes/mod.rs:1879 +#: data/resources/ui/dialogs/app_dialog.ui:91 +#: data/resources/ui/dialogs/settings_dialog.ui:183 +#: data/resources/ui/dialogs/settings_dialog.ui:290 +msgid "Swap" +msgstr "" + +#: src/ui/pages/applications/mod.rs:1508 src/ui/pages/processes/mod.rs:1936 msgid "End {}?" msgstr "" -#: src/ui/pages/applications/mod.rs:1452 src/ui/pages/processes/mod.rs:1878 +#: src/ui/pages/applications/mod.rs:1509 src/ui/pages/processes/mod.rs:1937 msgid "Halt {}?" msgstr "" -#: src/ui/pages/applications/mod.rs:1453 src/ui/pages/processes/mod.rs:1879 +#: src/ui/pages/applications/mod.rs:1510 src/ui/pages/processes/mod.rs:1938 msgid "Kill {}?" msgstr "" -#: src/ui/pages/applications/mod.rs:1454 src/ui/pages/processes/mod.rs:1880 +#: src/ui/pages/applications/mod.rs:1511 src/ui/pages/processes/mod.rs:1939 msgid "Continue {}?" msgstr "" -#: src/ui/pages/applications/mod.rs:1460 src/ui/pages/processes/mod.rs:1886 +#: src/ui/pages/applications/mod.rs:1517 src/ui/pages/processes/mod.rs:1945 msgid "Unsaved work might be lost." msgstr "" -#: src/ui/pages/applications/mod.rs:1461 +#: src/ui/pages/applications/mod.rs:1518 msgid "" "Halting an app can come with serious risks such as losing data and security " "implications. Use with caution." msgstr "" -#: src/ui/pages/applications/mod.rs:1462 +#: src/ui/pages/applications/mod.rs:1519 msgid "" "Killing an app can come with serious risks such as losing data and security " "implications. Use with caution." msgstr "" -#: src/ui/pages/applications/mod.rs:1469 +#: src/ui/pages/applications/mod.rs:1526 #: data/resources/ui/pages/applications.ui:22 #: data/resources/ui/pages/applications.ui:127 msgid "End App" msgstr "" -#: src/ui/pages/applications/mod.rs:1470 +#: src/ui/pages/applications/mod.rs:1527 #: data/resources/ui/pages/applications.ui:10 #: data/resources/ui/pages/applications.ui:30 msgid "Halt App" msgstr "" -#: src/ui/pages/applications/mod.rs:1471 +#: src/ui/pages/applications/mod.rs:1528 #: data/resources/ui/pages/applications.ui:6 #: data/resources/ui/pages/applications.ui:26 msgid "Kill App" msgstr "" -#: src/ui/pages/applications/mod.rs:1472 +#: src/ui/pages/applications/mod.rs:1529 #: data/resources/ui/pages/applications.ui:14 #: data/resources/ui/pages/applications.ui:34 msgid "Continue App" @@ -396,10 +405,6 @@ msgstr "" msgid "VRAM: {}" msgstr "" -#: src/ui/pages/memory.rs:227 -msgid "Swap" -msgstr "" - #: src/ui/pages/memory.rs:291 msgid "{} of {}" msgstr "" @@ -434,82 +439,82 @@ msgstr "" #: src/ui/pages/processes/mod.rs:177 data/resources/ui/window.ui:96 #: data/resources/ui/window.ui:103 -#: data/resources/ui/dialogs/settings_dialog.ui:188 +#: data/resources/ui/dialogs/settings_dialog.ui:193 msgid "Processes" msgstr "" -#: src/ui/pages/processes/mod.rs:757 +#: src/ui/pages/processes/mod.rs:758 msgid "Running Processes: {}" msgstr "" -#: src/ui/pages/processes/mod.rs:845 +#: src/ui/pages/processes/mod.rs:846 msgid "Process" msgstr "" -#: src/ui/pages/processes/mod.rs:906 +#: src/ui/pages/processes/mod.rs:907 #: data/resources/ui/dialogs/process_dialog.ui:177 -#: data/resources/ui/dialogs/settings_dialog.ui:205 +#: data/resources/ui/dialogs/settings_dialog.ui:210 msgid "Process ID" msgstr "" -#: src/ui/pages/processes/mod.rs:959 +#: src/ui/pages/processes/mod.rs:960 #: data/resources/ui/dialogs/process_dialog.ui:204 -#: data/resources/ui/dialogs/settings_dialog.ui:210 +#: data/resources/ui/dialogs/settings_dialog.ui:215 msgid "User" msgstr "" -#: src/ui/pages/processes/mod.rs:1634 +#: src/ui/pages/processes/mod.rs:1635 #: data/resources/ui/dialogs/process_dialog.ui:145 -#: data/resources/ui/dialogs/settings_dialog.ui:265 +#: data/resources/ui/dialogs/settings_dialog.ui:270 msgid "Total CPU Time" msgstr "" -#: src/ui/pages/processes/mod.rs:1693 +#: src/ui/pages/processes/mod.rs:1694 #: data/resources/ui/dialogs/process_dialog.ui:154 -#: data/resources/ui/dialogs/settings_dialog.ui:270 +#: data/resources/ui/dialogs/settings_dialog.ui:275 msgid "User CPU Time" msgstr "" -#: src/ui/pages/processes/mod.rs:1752 +#: src/ui/pages/processes/mod.rs:1753 #: data/resources/ui/dialogs/process_dialog.ui:163 -#: data/resources/ui/dialogs/settings_dialog.ui:275 +#: data/resources/ui/dialogs/settings_dialog.ui:280 msgid "System CPU Time" msgstr "" -#: src/ui/pages/processes/mod.rs:1811 +#: src/ui/pages/processes/mod.rs:1812 #: data/resources/ui/dialogs/process_options_dialog.ui:87 -#: data/resources/ui/dialogs/settings_dialog.ui:280 +#: data/resources/ui/dialogs/settings_dialog.ui:285 msgid "Priority" msgstr "" -#: src/ui/pages/processes/mod.rs:1887 +#: src/ui/pages/processes/mod.rs:1946 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:1888 +#: src/ui/pages/processes/mod.rs:1947 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:1895 data/resources/ui/pages/processes.ui:22 +#: src/ui/pages/processes/mod.rs:1954 data/resources/ui/pages/processes.ui:22 #: data/resources/ui/pages/processes.ui:146 msgid "End Process" msgstr "" -#: src/ui/pages/processes/mod.rs:1896 data/resources/ui/pages/processes.ui:10 +#: src/ui/pages/processes/mod.rs:1955 data/resources/ui/pages/processes.ui:10 #: data/resources/ui/pages/processes.ui:30 msgid "Halt Process" msgstr "" -#: src/ui/pages/processes/mod.rs:1897 data/resources/ui/pages/processes.ui:6 +#: src/ui/pages/processes/mod.rs:1956 data/resources/ui/pages/processes.ui:6 #: data/resources/ui/pages/processes.ui:26 msgid "Kill Process" msgstr "" -#: src/ui/pages/processes/mod.rs:1898 data/resources/ui/pages/processes.ui:14 +#: src/ui/pages/processes/mod.rs:1957 data/resources/ui/pages/processes.ui:14 #: data/resources/ui/pages/processes.ui:34 msgid "Continue Process" msgstr "" @@ -582,7 +587,7 @@ msgstr "" msgid "There was a problem continuing {}" msgstr "" -#: src/utils/app.rs:220 +#: src/utils/app.rs:224 msgid "System Processes" msgstr "" @@ -1251,7 +1256,7 @@ msgstr "" msgid "Usage" msgstr "" -#: data/resources/ui/dialogs/app_dialog.ui:165 +#: data/resources/ui/dialogs/app_dialog.ui:174 #: data/resources/ui/dialogs/process_dialog.ui:170 #: data/resources/ui/pages/battery.ui:33 data/resources/ui/pages/cpu.ui:89 #: data/resources/ui/pages/drive.ui:54 data/resources/ui/pages/gpu.ui:80 @@ -1259,20 +1264,20 @@ msgstr "" msgid "Properties" msgstr "" -#: data/resources/ui/dialogs/app_dialog.ui:171 +#: data/resources/ui/dialogs/app_dialog.ui:180 msgid "ID" msgstr "" -#: data/resources/ui/dialogs/app_dialog.ui:181 +#: data/resources/ui/dialogs/app_dialog.ui:190 #: data/resources/ui/dialogs/process_dialog.ui:186 msgid "Running Since" msgstr "" -#: data/resources/ui/dialogs/app_dialog.ui:189 +#: data/resources/ui/dialogs/app_dialog.ui:198 msgid "Running Processes" msgstr "" -#: data/resources/ui/dialogs/app_dialog.ui:198 +#: data/resources/ui/dialogs/app_dialog.ui:207 #: data/resources/ui/dialogs/process_dialog.ui:222 msgid "Containerized" msgstr "" @@ -1475,45 +1480,45 @@ msgid "" msgstr "" #: data/resources/ui/dialogs/settings_dialog.ui:130 -#: data/resources/ui/dialogs/settings_dialog.ui:202 +#: data/resources/ui/dialogs/settings_dialog.ui:207 msgid "Information Columns" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:191 +#: data/resources/ui/dialogs/settings_dialog.ui:196 #: data/resources/ui/pages/cpu.ui:22 data/resources/ui/pages/processes.ui:40 msgid "Options" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:194 +#: data/resources/ui/dialogs/settings_dialog.ui:199 msgid "Show Niceness Values" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:195 +#: data/resources/ui/dialogs/settings_dialog.ui:200 msgid "" "Display priorities as niceness to allow for more fine-grained adjustments" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:290 +#: data/resources/ui/dialogs/settings_dialog.ui:300 msgid "Devices" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:293 +#: data/resources/ui/dialogs/settings_dialog.ui:303 msgid "Drives" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:296 +#: data/resources/ui/dialogs/settings_dialog.ui:306 msgid "Show Virtual Drives" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:297 +#: data/resources/ui/dialogs/settings_dialog.ui:307 msgid "Virtual drives are for example ZFS volumes or mapped devices" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:307 +#: data/resources/ui/dialogs/settings_dialog.ui:317 msgid "Show Virtual Network Interfaces" msgstr "" -#: data/resources/ui/dialogs/settings_dialog.ui:308 +#: data/resources/ui/dialogs/settings_dialog.ui:318 msgid "Virtual network interfaces are for example bridges or VPN tunnels" msgstr "" diff --git a/src/ui/dialogs/app_dialog.rs b/src/ui/dialogs/app_dialog.rs index 56f1cd5c..3a1f012f 100644 --- a/src/ui/dialogs/app_dialog.rs +++ b/src/ui/dialogs/app_dialog.rs @@ -26,6 +26,8 @@ mod imp { #[template_child] pub memory_usage: TemplateChild, #[template_child] + pub swap_usage: TemplateChild, + #[template_child] pub drive_read_speed: TemplateChild, #[template_child] pub drive_read_total: TemplateChild, @@ -159,6 +161,9 @@ impl ResAppDialog { imp.memory_usage .set_subtitle(&convert_storage(app.memory_usage() as f64, false)); + imp.swap_usage + .set_subtitle(&convert_storage(app.swap_usage() as f64, false)); + imp.drive_read_speed .set_subtitle(&convert_speed(app.read_speed(), false)); diff --git a/src/ui/dialogs/process_dialog.rs b/src/ui/dialogs/process_dialog.rs index 10546505..6b905b9d 100644 --- a/src/ui/dialogs/process_dialog.rs +++ b/src/ui/dialogs/process_dialog.rs @@ -22,6 +22,8 @@ mod imp { #[template_child] pub memory_usage: TemplateChild, #[template_child] + pub swap_usage: TemplateChild, + #[template_child] pub drive_read_speed: TemplateChild, #[template_child] pub drive_read_total: TemplateChild, @@ -149,6 +151,9 @@ impl ResProcessDialog { imp.memory_usage .set_subtitle(&convert_storage(process.memory_usage() as f64, false)); + imp.swap_usage + .set_subtitle(&convert_storage(process.swap_usage() as f64, false)); + if process.read_speed() == -1.0 { imp.drive_read_speed.set_subtitle(&i18n("N/A")); } else { diff --git a/src/ui/dialogs/settings_dialog.rs b/src/ui/dialogs/settings_dialog.rs index 64e9e15b..3e2f4f85 100644 --- a/src/ui/dialogs/settings_dialog.rs +++ b/src/ui/dialogs/settings_dialog.rs @@ -59,6 +59,8 @@ mod imp { pub apps_show_encoder_row: TemplateChild, #[template_child] pub apps_show_decoder_row: TemplateChild, + #[template_child] + pub apps_show_swap_row: TemplateChild, #[template_child] pub processes_niceness: TemplateChild, @@ -94,6 +96,8 @@ mod imp { pub processes_show_system_cpu_time_row: TemplateChild, #[template_child] pub processes_show_priority_row: TemplateChild, + #[template_child] + pub processes_show_swap_row: TemplateChild, #[template_child] pub show_virtual_drives_row: TemplateChild, @@ -202,6 +206,7 @@ impl ResSettingsDialog { .set_active(SETTINGS.apps_show_encoder()); imp.apps_show_decoder_row .set_active(SETTINGS.apps_show_decoder()); + imp.apps_show_swap_row.set_active(SETTINGS.apps_show_swap()); imp.processes_niceness .set_active(SETTINGS.detailed_priority()); @@ -237,6 +242,8 @@ impl ResSettingsDialog { .set_active(SETTINGS.processes_show_system_cpu_time()); imp.processes_show_priority_row .set_active(SETTINGS.processes_show_system_cpu_time()); + imp.processes_show_swap_row + .set_active(SETTINGS.processes_show_swap()); imp.show_virtual_drives_row .set_active(SETTINGS.show_virtual_drives()); @@ -357,6 +364,10 @@ impl ResSettingsDialog { let _ = SETTINGS.set_apps_show_drive_write_total(switch_row.is_active()); }); + imp.apps_show_swap_row.connect_active_notify(|switch_row| { + let _ = SETTINGS.set_apps_show_swap(switch_row.is_active()); + }); + imp.processes_niceness.connect_active_notify(|switch_row| { let _ = SETTINGS.set_detailed_priority(switch_row.is_active()); }); @@ -441,6 +452,11 @@ impl ResSettingsDialog { let _ = SETTINGS.set_processes_show_priority(switch_row.is_active()); }); + imp.processes_show_swap_row + .connect_active_notify(|switch_row| { + let _ = SETTINGS.set_processes_show_swap(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/applications/application_entry.rs b/src/ui/pages/applications/application_entry.rs index ba00a9ea..134e1e46 100644 --- a/src/ui/pages/applications/application_entry.rs +++ b/src/ui/pages/applications/application_entry.rs @@ -42,6 +42,9 @@ mod imp { #[property(get, set)] memory_usage: Cell, + #[property(get, set)] + swap_usage: Cell, + #[property(get, set)] read_speed: Cell, @@ -90,6 +93,7 @@ mod imp { icon: Cell::new(ThemedIcon::new("generic-process").into()), cpu_usage: Cell::new(0.0), memory_usage: Cell::new(0), + swap_usage: Cell::new(0), read_speed: Cell::new(0.0), read_total: Cell::new(0), write_speed: Cell::new(0.0), @@ -195,6 +199,7 @@ impl ApplicationEntry { pub fn update(&self, app: &App, apps_context: &AppsContext) { self.set_cpu_usage(app.cpu_time_ratio(apps_context)); self.set_memory_usage(app.memory_usage(apps_context) as u64); + self.set_swap_usage(app.swap_usage(apps_context) as u64); self.set_read_speed(app.read_speed(apps_context)); self.set_read_total(app.read_total(apps_context)); self.set_write_speed(app.write_speed(apps_context)); diff --git a/src/ui/pages/applications/mod.rs b/src/ui/pages/applications/mod.rs index 88aa8da8..ba17f116 100644 --- a/src/ui/pages/applications/mod.rs +++ b/src/ui/pages/applications/mod.rs @@ -406,6 +406,7 @@ impl ResApplications { 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_swap_column(&column_view)); let store = gio::ListStore::new::(); @@ -1441,6 +1442,65 @@ impl ResApplications { gpu_mem_col } + + fn add_swap_column(&self, column_view: &ColumnView) -> ColumnViewColumn { + let swap_col_factory = gtk::SignalListItemFactory::new(); + + let swap_col = + gtk::ColumnViewColumn::new(Some(&i18n("Swap")), Some(swap_col_factory.clone())); + + swap_col.set_resizable(true); + + swap_col_factory.connect_setup(clone!( + #[weak(rename_to = this)] + self, + 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::("swap_usage") + .chain_closure::(closure!(|_: Option, swap_usage: u64| { + convert_storage(swap_usage as f64, false) + })) + .bind(&row, "text", Widget::NONE); + + this.add_gestures(item); + } + )); + + swap_col_factory.connect_teardown(move |_factory, item| { + let item = item.downcast_ref::().unwrap(); + item.set_child(None::<>k::Inscription>); + }); + + let swap_col_sorter = NumericSorter::builder() + .sort_order(SortType::Ascending) + .expression(gtk::PropertyExpression::new( + ApplicationEntry::static_type(), + None::<>k::Expression>, + "swap_usage", + )) + .build(); + + swap_col.set_sorter(Some(&swap_col_sorter)); + swap_col.set_visible(SETTINGS.apps_show_swap()); + + column_view.append_column(&swap_col); + + SETTINGS.connect_apps_show_swap(clone!( + #[weak] + swap_col, + move |visible| swap_col.set_visible(visible) + )); + + swap_col + } } fn get_action_name(action: ProcessAction, args: &[&str]) -> String { diff --git a/src/ui/pages/processes/mod.rs b/src/ui/pages/processes/mod.rs index 91db4ad2..011397af 100644 --- a/src/ui/pages/processes/mod.rs +++ b/src/ui/pages/processes/mod.rs @@ -436,6 +436,7 @@ impl ResProcesses { columns.push(self.add_user_cpu_time_column(&column_view)); columns.push(self.add_system_cpu_time_column(&column_view)); columns.push(self.add_priority_column(&column_view)); + columns.push(self.add_swap_column(&column_view)); let store = gio::ListStore::new::(); @@ -1870,6 +1871,64 @@ impl ResProcesses { priority_col } + + fn add_swap_column(&self, column_view: &ColumnView) -> ColumnViewColumn { + let swap_col_factory = gtk::SignalListItemFactory::new(); + + let swap_col = + gtk::ColumnViewColumn::new(Some(&i18n("Swap")), Some(swap_col_factory.clone())); + + swap_col.set_resizable(true); + + swap_col_factory.connect_setup(clone!( + #[weak(rename_to = this)] + self, + 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::("swap_usage") + .chain_closure::(closure!(|_: Option, swap_usage: u64| { + convert_storage(swap_usage as f64, false) + })) + .bind(&row, "text", Widget::NONE); + + this.add_gestures(item); + } + )); + + swap_col_factory.connect_teardown(move |_factory, item| { + let item = item.downcast_ref::().unwrap(); + item.set_child(None::<>k::Inscription>); + }); + + let swap_col_sorter = NumericSorter::builder() + .sort_order(SortType::Ascending) + .expression(gtk::PropertyExpression::new( + ProcessEntry::static_type(), + None::<>k::Expression>, + "swap_usage", + )) + .build(); + + swap_col.set_sorter(Some(&swap_col_sorter)); + swap_col.set_visible(SETTINGS.processes_show_swap()); + + column_view.append_column(&swap_col); + + SETTINGS.connect_processes_show_swap(clone!( + #[weak] + swap_col, + move |visible| swap_col.set_visible(visible) + )); + + swap_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 a63592d3..49f3a19b 100644 --- a/src/ui/pages/processes/process_entry.rs +++ b/src/ui/pages/processes/process_entry.rs @@ -45,6 +45,9 @@ mod imp { #[property(get, set)] memory_usage: Cell, + #[property(get, set)] + swap_usage: Cell, + #[property(get, set)] read_speed: Cell, // will be -1.0 if read data is not available @@ -108,6 +111,7 @@ mod imp { pid: Cell::new(0), cpu_usage: Cell::new(0.0), memory_usage: Cell::new(0), + swap_usage: Cell::new(0), read_speed: Cell::new(0.0), read_total: Cell::new(0), write_speed: Cell::new(0.0), @@ -225,6 +229,7 @@ impl ProcessEntry { pub fn update(&self, process: &Process) { self.set_cpu_usage(process.cpu_time_ratio()); self.set_memory_usage(process.data.memory_usage as u64); + self.set_swap_usage(process.data.swap_usage as u64); self.set_read_speed(process.read_speed().unwrap_or(-1.0)); self.set_read_total( process diff --git a/src/utils/app.rs b/src/utils/app.rs index 1238c579..e3becd2b 100644 --- a/src/utils/app.rs +++ b/src/utils/app.rs @@ -410,6 +410,13 @@ impl App { .sum() } + #[must_use] + pub fn swap_usage(&self, apps: &AppsContext) -> usize { + self.processes_iter(apps) + .map(|process| process.data.swap_usage) + .sum() + } + #[must_use] pub fn cpu_time_ratio(&self, apps: &AppsContext) -> f32 { self.processes_iter(apps).map(Process::cpu_time_ratio).sum() diff --git a/src/utils/settings.rs b/src/utils/settings.rs index c7594727..dc6c4916 100644 --- a/src/utils/settings.rs +++ b/src/utils/settings.rs @@ -341,6 +341,7 @@ impl Settings { apps_show_gpu_memory, apps_show_encoder, apps_show_decoder, + apps_show_swap, processes_show_id, processes_show_user, processes_show_memory, @@ -357,6 +358,7 @@ impl Settings { processes_show_user_cpu_time, processes_show_system_cpu_time, processes_show_priority, + processes_show_swap, show_logical_cpus, show_graph_grids, normalize_cpu_usage, From aa28a1f80996601b8fccb07dc607189031304cc7 Mon Sep 17 00:00:00 2001 From: nokyan Date: Mon, 30 Sep 2024 23:57:30 +0200 Subject: [PATCH 02/12] Update German translation --- po/de.po | 215 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 112 insertions(+), 103 deletions(-) diff --git a/po/de.po b/po/de.po index 22e1d83e..71819f68 100644 --- a/po/de.po +++ b/po/de.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: resources\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-24 11:07+0200\n" -"PO-Revision-Date: 2024-08-24 11:32+0200\n" +"POT-Creation-Date: 2024-09-30 23:49+0200\n" +"PO-Revision-Date: 2024-09-30 23:50+0200\n" "Last-Translator: nokyan \n" "Language-Team: German \n" "Language: de\n" @@ -56,28 +56,28 @@ msgid "CPU" msgstr "CPU" #: data/net.nokyan.Resources.metainfo.xml.in.in:25 -#: src/ui/pages/applications/mod.rs:844 src/ui/pages/memory.rs:140 -#: src/ui/pages/memory.rs:221 src/ui/pages/processes/mod.rs:1013 +#: src/ui/pages/applications/mod.rs:842 src/ui/pages/memory.rs:140 +#: src/ui/pages/memory.rs:221 src/ui/pages/processes/mod.rs:1014 #: data/resources/ui/window.ui:158 data/resources/ui/window.ui:165 #: data/resources/ui/dialogs/app_dialog.ui:82 #: data/resources/ui/dialogs/process_dialog.ui:64 #: data/resources/ui/dialogs/settings_dialog.ui:133 -#: data/resources/ui/dialogs/settings_dialog.ui:215 +#: data/resources/ui/dialogs/settings_dialog.ui:220 msgid "Memory" msgstr "Arbeitsspeicher" #: data/net.nokyan.Resources.metainfo.xml.in.in:26 -#: src/ui/pages/applications/mod.rs:1217 src/ui/pages/gpu.rs:157 -#: src/ui/pages/processes/mod.rs:1397 src/ui/window.rs:303 -#: data/resources/ui/dialogs/app_dialog.ui:131 +#: src/ui/pages/applications/mod.rs:1215 src/ui/pages/gpu.rs:157 +#: src/ui/pages/processes/mod.rs:1398 src/ui/window.rs:303 +#: data/resources/ui/dialogs/app_dialog.ui:140 #: data/resources/ui/dialogs/process_dialog.ui:109 #: data/resources/ui/dialogs/settings_dialog.ui:163 -#: data/resources/ui/dialogs/settings_dialog.ui:245 +#: data/resources/ui/dialogs/settings_dialog.ui:250 msgid "GPU" msgstr "GPU" #: data/net.nokyan.Resources.metainfo.xml.in.in:27 -#: data/resources/ui/dialogs/settings_dialog.ui:304 +#: data/resources/ui/dialogs/settings_dialog.ui:314 msgid "Network Interfaces" msgstr "Netzwerkschnittstellen" @@ -139,11 +139,11 @@ msgstr "nokyan piekay" msgid "Icon by" msgstr "Icon von" -#: src/ui/dialogs/app_dialog.rs:146 src/ui/dialogs/process_dialog.rs:125 -#: src/ui/dialogs/process_dialog.rs:133 src/ui/dialogs/process_dialog.rs:135 -#: src/ui/dialogs/process_dialog.rs:153 src/ui/dialogs/process_dialog.rs:160 -#: src/ui/dialogs/process_dialog.rs:167 src/ui/dialogs/process_dialog.rs:174 -#: src/ui/pages/applications/mod.rs:987 src/ui/pages/applications/mod.rs:1111 +#: src/ui/dialogs/app_dialog.rs:148 src/ui/dialogs/process_dialog.rs:127 +#: src/ui/dialogs/process_dialog.rs:135 src/ui/dialogs/process_dialog.rs:137 +#: src/ui/dialogs/process_dialog.rs:158 src/ui/dialogs/process_dialog.rs:165 +#: src/ui/dialogs/process_dialog.rs:172 src/ui/dialogs/process_dialog.rs:179 +#: src/ui/pages/applications/mod.rs:985 src/ui/pages/applications/mod.rs:1109 #: src/ui/pages/battery.rs:239 src/ui/pages/battery.rs:259 #: src/ui/pages/battery.rs:265 src/ui/pages/battery.rs:268 #: src/ui/pages/battery.rs:294 src/ui/pages/battery.rs:318 @@ -169,9 +169,9 @@ msgstr "Icon von" #: src/ui/pages/network.rs:357 src/ui/pages/network.rs:360 #: src/ui/pages/network.rs:362 src/ui/pages/network.rs:391 #: src/ui/pages/network.rs:394 src/ui/pages/network.rs:396 -#: src/ui/pages/processes/mod.rs:1155 src/ui/pages/processes/mod.rs:1221 -#: src/ui/pages/processes/mod.rs:1287 src/ui/pages/processes/mod.rs:1353 -#: src/ui/pages/processes/mod.rs:1835 src/ui/pages/processes/mod.rs:1837 +#: src/ui/pages/processes/mod.rs:1156 src/ui/pages/processes/mod.rs:1222 +#: src/ui/pages/processes/mod.rs:1288 src/ui/pages/processes/mod.rs:1354 +#: src/ui/pages/processes/mod.rs:1836 src/ui/pages/processes/mod.rs:1838 #: src/utils/battery.rs:139 src/utils/drive.rs:90 src/utils/gpu/mod.rs:258 #: src/utils/gpu/mod.rs:264 msgid "N/A" @@ -182,18 +182,18 @@ msgstr "n. v." msgid "CPU {}" msgstr "CPU {}" -#: src/ui/pages/applications/application_entry.rs:179 src/ui/pages/drive.rs:434 -#: src/ui/pages/drive.rs:444 src/ui/pages/processes/process_entry.rs:206 +#: src/ui/pages/applications/application_entry.rs:183 src/ui/pages/drive.rs:434 +#: src/ui/pages/drive.rs:444 src/ui/pages/processes/process_entry.rs:210 msgid "No" msgstr "Nein" -#: src/ui/pages/applications/application_entry.rs:180 -#: src/ui/pages/processes/process_entry.rs:207 +#: src/ui/pages/applications/application_entry.rs:184 +#: src/ui/pages/processes/process_entry.rs:211 msgid "Yes (Flatpak)" msgstr "Ja (Flatpak)" -#: src/ui/pages/applications/application_entry.rs:181 -#: src/ui/pages/processes/process_entry.rs:208 +#: src/ui/pages/applications/application_entry.rs:185 +#: src/ui/pages/processes/process_entry.rs:212 msgid "Yes (Snap)" msgstr "Ja (Snap)" @@ -203,105 +203,114 @@ msgstr "Ja (Snap)" msgid "Apps" msgstr "Anwendungen" -#: src/ui/pages/applications/mod.rs:700 +#. -1 because we don't want to count System Processes +#: src/ui/pages/applications/mod.rs:699 msgid "Running Apps: {}" msgstr "Laufende Anwendungen: {}" -#: src/ui/pages/applications/mod.rs:741 src/ui/pages/processes/mod.rs:798 +#: src/ui/pages/applications/mod.rs:739 src/ui/pages/processes/mod.rs:799 msgid "Cancel" msgstr "Abbrechen" -#: src/ui/pages/applications/mod.rs:787 +#: src/ui/pages/applications/mod.rs:785 msgid "App" msgstr "Anwendung" -#: src/ui/pages/applications/mod.rs:903 src/ui/pages/cpu.rs:157 -#: src/ui/pages/processes/mod.rs:1071 src/ui/window.rs:355 +#: src/ui/pages/applications/mod.rs:901 src/ui/pages/cpu.rs:157 +#: src/ui/pages/processes/mod.rs:1072 src/ui/window.rs:355 #: data/resources/ui/window.ui:127 data/resources/ui/window.ui:134 #: data/resources/ui/dialogs/app_dialog.ui:73 #: data/resources/ui/dialogs/process_dialog.ui:55 #: data/resources/ui/dialogs/settings_dialog.ui:138 -#: data/resources/ui/dialogs/settings_dialog.ui:220 +#: data/resources/ui/dialogs/settings_dialog.ui:225 msgid "Processor" msgstr "Prozessor" -#: src/ui/pages/applications/mod.rs:966 src/ui/pages/processes/mod.rs:1134 -#: data/resources/ui/dialogs/app_dialog.ui:91 +#: src/ui/pages/applications/mod.rs:964 src/ui/pages/processes/mod.rs:1135 +#: data/resources/ui/dialogs/app_dialog.ui:100 #: data/resources/ui/dialogs/process_dialog.ui:69 #: data/resources/ui/dialogs/settings_dialog.ui:143 -#: data/resources/ui/dialogs/settings_dialog.ui:225 +#: data/resources/ui/dialogs/settings_dialog.ui:230 msgid "Drive Read" msgstr "Lesevorgänge" -#: src/ui/pages/applications/mod.rs:1030 src/ui/pages/processes/mod.rs:1200 -#: data/resources/ui/dialogs/app_dialog.ui:100 +#: src/ui/pages/applications/mod.rs:1028 src/ui/pages/processes/mod.rs:1201 +#: data/resources/ui/dialogs/app_dialog.ui:109 #: data/resources/ui/dialogs/process_dialog.ui:78 #: data/resources/ui/dialogs/settings_dialog.ui:148 -#: data/resources/ui/dialogs/settings_dialog.ui:230 +#: data/resources/ui/dialogs/settings_dialog.ui:235 msgid "Drive Read Total" msgstr "Lesevorgänge insgesamt" -#: src/ui/pages/applications/mod.rs:1090 src/ui/pages/processes/mod.rs:1266 -#: data/resources/ui/dialogs/app_dialog.ui:109 +#: src/ui/pages/applications/mod.rs:1088 src/ui/pages/processes/mod.rs:1267 +#: data/resources/ui/dialogs/app_dialog.ui:118 #: data/resources/ui/dialogs/process_dialog.ui:87 #: data/resources/ui/dialogs/settings_dialog.ui:153 -#: data/resources/ui/dialogs/settings_dialog.ui:235 +#: data/resources/ui/dialogs/settings_dialog.ui:240 msgid "Drive Write" msgstr "Schreibvorgänge" -#: src/ui/pages/applications/mod.rs:1156 src/ui/pages/processes/mod.rs:1332 -#: data/resources/ui/dialogs/app_dialog.ui:118 +#: src/ui/pages/applications/mod.rs:1154 src/ui/pages/processes/mod.rs:1333 +#: data/resources/ui/dialogs/app_dialog.ui:127 #: data/resources/ui/dialogs/process_dialog.ui:96 #: data/resources/ui/dialogs/settings_dialog.ui:158 -#: data/resources/ui/dialogs/settings_dialog.ui:240 +#: data/resources/ui/dialogs/settings_dialog.ui:245 msgid "Drive Write Total" msgstr "Schreibvorgänge insgesamt" -#: src/ui/pages/applications/mod.rs:1275 src/ui/pages/processes/mod.rs:1455 -#: data/resources/ui/dialogs/app_dialog.ui:149 +#: src/ui/pages/applications/mod.rs:1273 src/ui/pages/processes/mod.rs:1456 +#: data/resources/ui/dialogs/app_dialog.ui:158 #: data/resources/ui/dialogs/process_dialog.ui:127 #: data/resources/ui/dialogs/settings_dialog.ui:173 -#: data/resources/ui/dialogs/settings_dialog.ui:255 +#: data/resources/ui/dialogs/settings_dialog.ui:260 msgid "Video Encoder" msgstr "Videokodierer" -#: src/ui/pages/applications/mod.rs:1335 src/ui/pages/processes/mod.rs:1515 -#: data/resources/ui/dialogs/app_dialog.ui:158 +#: src/ui/pages/applications/mod.rs:1333 src/ui/pages/processes/mod.rs:1516 +#: data/resources/ui/dialogs/app_dialog.ui:167 #: data/resources/ui/dialogs/process_dialog.ui:136 #: data/resources/ui/dialogs/settings_dialog.ui:178 -#: data/resources/ui/dialogs/settings_dialog.ui:260 +#: data/resources/ui/dialogs/settings_dialog.ui:265 msgid "Video Decoder" msgstr "Videodekodierer" -#: src/ui/pages/applications/mod.rs:1394 src/ui/pages/processes/mod.rs:1575 -#: data/resources/ui/dialogs/app_dialog.ui:140 +#: src/ui/pages/applications/mod.rs:1392 src/ui/pages/processes/mod.rs:1576 +#: data/resources/ui/dialogs/app_dialog.ui:149 #: data/resources/ui/dialogs/process_dialog.ui:118 #: data/resources/ui/dialogs/settings_dialog.ui:168 -#: data/resources/ui/dialogs/settings_dialog.ui:250 +#: data/resources/ui/dialogs/settings_dialog.ui:255 msgid "Video Memory" msgstr "Grafikspeicher" -#: src/ui/pages/applications/mod.rs:1451 src/ui/pages/processes/mod.rs:1877 +#: src/ui/pages/applications/mod.rs:1450 src/ui/pages/memory.rs:227 +#: src/ui/pages/processes/mod.rs:1879 +#: data/resources/ui/dialogs/app_dialog.ui:91 +#: data/resources/ui/dialogs/settings_dialog.ui:183 +#: data/resources/ui/dialogs/settings_dialog.ui:290 +msgid "Swap" +msgstr "Auslagerungsspeicher" + +#: src/ui/pages/applications/mod.rs:1508 src/ui/pages/processes/mod.rs:1936 msgid "End {}?" msgstr "{} beenden?" -#: src/ui/pages/applications/mod.rs:1452 src/ui/pages/processes/mod.rs:1878 +#: src/ui/pages/applications/mod.rs:1509 src/ui/pages/processes/mod.rs:1937 msgid "Halt {}?" msgstr "{} anhalten?" -#: src/ui/pages/applications/mod.rs:1453 src/ui/pages/processes/mod.rs:1879 +#: src/ui/pages/applications/mod.rs:1510 src/ui/pages/processes/mod.rs:1938 msgid "Kill {}?" msgstr "{} abwürgen?" -#: src/ui/pages/applications/mod.rs:1454 src/ui/pages/processes/mod.rs:1880 +#: src/ui/pages/applications/mod.rs:1511 src/ui/pages/processes/mod.rs:1939 msgid "Continue {}?" msgstr "{} fortsetzen?" -#: src/ui/pages/applications/mod.rs:1460 src/ui/pages/processes/mod.rs:1886 +#: src/ui/pages/applications/mod.rs:1517 src/ui/pages/processes/mod.rs:1945 msgid "Unsaved work might be lost." msgstr "Ungespeicherte Daten könnten verloren gehen." -#: src/ui/pages/applications/mod.rs:1461 +#: src/ui/pages/applications/mod.rs:1518 msgid "" "Halting an app can come with serious risks such as losing data and security " "implications. Use with caution." @@ -309,7 +318,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:1462 +#: src/ui/pages/applications/mod.rs:1519 msgid "" "Killing an app can come with serious risks such as losing data and security " "implications. Use with caution." @@ -317,25 +326,25 @@ 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:1469 +#: src/ui/pages/applications/mod.rs:1526 #: data/resources/ui/pages/applications.ui:22 #: data/resources/ui/pages/applications.ui:127 msgid "End App" msgstr "Anwendung beenden" -#: src/ui/pages/applications/mod.rs:1470 +#: src/ui/pages/applications/mod.rs:1527 #: data/resources/ui/pages/applications.ui:10 #: data/resources/ui/pages/applications.ui:30 msgid "Halt App" msgstr "Anwendung anhalten" -#: src/ui/pages/applications/mod.rs:1471 +#: src/ui/pages/applications/mod.rs:1528 #: data/resources/ui/pages/applications.ui:6 #: data/resources/ui/pages/applications.ui:26 msgid "Kill App" msgstr "Anwendung abwürgen" -#: src/ui/pages/applications/mod.rs:1472 +#: src/ui/pages/applications/mod.rs:1529 #: data/resources/ui/pages/applications.ui:14 #: data/resources/ui/pages/applications.ui:34 msgid "Continue App" @@ -405,10 +414,6 @@ msgstr "Grafikspeicherauslastung" msgid "VRAM: {}" msgstr "VRAM: {}" -#: src/ui/pages/memory.rs:227 -msgid "Swap" -msgstr "Auslagerungsspeicher" - #: src/ui/pages/memory.rs:291 msgid "{} of {}" msgstr "{} von {}" @@ -443,55 +448,55 @@ msgstr "E: {} · S: {}" #: src/ui/pages/processes/mod.rs:177 data/resources/ui/window.ui:96 #: data/resources/ui/window.ui:103 -#: data/resources/ui/dialogs/settings_dialog.ui:188 +#: data/resources/ui/dialogs/settings_dialog.ui:193 msgid "Processes" msgstr "Prozesse" -#: src/ui/pages/processes/mod.rs:757 +#: src/ui/pages/processes/mod.rs:758 msgid "Running Processes: {}" msgstr "Laufende Prozesse: {}" -#: src/ui/pages/processes/mod.rs:845 +#: src/ui/pages/processes/mod.rs:846 msgid "Process" msgstr "Prozess" -#: src/ui/pages/processes/mod.rs:906 +#: src/ui/pages/processes/mod.rs:907 #: data/resources/ui/dialogs/process_dialog.ui:177 -#: data/resources/ui/dialogs/settings_dialog.ui:205 +#: data/resources/ui/dialogs/settings_dialog.ui:210 msgid "Process ID" msgstr "Prozess-ID" -#: src/ui/pages/processes/mod.rs:959 +#: src/ui/pages/processes/mod.rs:960 #: data/resources/ui/dialogs/process_dialog.ui:204 -#: data/resources/ui/dialogs/settings_dialog.ui:210 +#: data/resources/ui/dialogs/settings_dialog.ui:215 msgid "User" msgstr "Benutzer" -#: src/ui/pages/processes/mod.rs:1634 +#: src/ui/pages/processes/mod.rs:1635 #: data/resources/ui/dialogs/process_dialog.ui:145 -#: data/resources/ui/dialogs/settings_dialog.ui:265 +#: data/resources/ui/dialogs/settings_dialog.ui:270 msgid "Total CPU Time" msgstr "Gesamte Prozessorzeit" -#: src/ui/pages/processes/mod.rs:1693 +#: src/ui/pages/processes/mod.rs:1694 #: data/resources/ui/dialogs/process_dialog.ui:154 -#: data/resources/ui/dialogs/settings_dialog.ui:270 +#: data/resources/ui/dialogs/settings_dialog.ui:275 msgid "User CPU Time" msgstr "Benutzerprozessorzeit" -#: src/ui/pages/processes/mod.rs:1752 +#: src/ui/pages/processes/mod.rs:1753 #: data/resources/ui/dialogs/process_dialog.ui:163 -#: data/resources/ui/dialogs/settings_dialog.ui:275 +#: data/resources/ui/dialogs/settings_dialog.ui:280 msgid "System CPU Time" msgstr "Systemprozessorzeit" -#: src/ui/pages/processes/mod.rs:1811 +#: src/ui/pages/processes/mod.rs:1812 #: data/resources/ui/dialogs/process_options_dialog.ui:87 -#: data/resources/ui/dialogs/settings_dialog.ui:280 +#: data/resources/ui/dialogs/settings_dialog.ui:285 msgid "Priority" msgstr "Priorität" -#: src/ui/pages/processes/mod.rs:1887 +#: src/ui/pages/processes/mod.rs:1946 msgid "" "Halting a process can come with serious risks such as losing data and " "security implications. Use with caution." @@ -499,7 +504,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:1888 +#: src/ui/pages/processes/mod.rs:1947 msgid "" "Killing a process can come with serious risks such as losing data and " "security implications. Use with caution." @@ -507,22 +512,22 @@ 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:1895 data/resources/ui/pages/processes.ui:22 +#: src/ui/pages/processes/mod.rs:1954 data/resources/ui/pages/processes.ui:22 #: data/resources/ui/pages/processes.ui:146 msgid "End Process" msgstr "Prozess beenden" -#: src/ui/pages/processes/mod.rs:1896 data/resources/ui/pages/processes.ui:10 +#: src/ui/pages/processes/mod.rs:1955 data/resources/ui/pages/processes.ui:10 #: data/resources/ui/pages/processes.ui:30 msgid "Halt Process" msgstr "Prozess anhalten" -#: src/ui/pages/processes/mod.rs:1897 data/resources/ui/pages/processes.ui:6 +#: src/ui/pages/processes/mod.rs:1956 data/resources/ui/pages/processes.ui:6 #: data/resources/ui/pages/processes.ui:26 msgid "Kill Process" msgstr "Prozess abwürgen" -#: src/ui/pages/processes/mod.rs:1898 data/resources/ui/pages/processes.ui:14 +#: src/ui/pages/processes/mod.rs:1957 data/resources/ui/pages/processes.ui:14 #: data/resources/ui/pages/processes.ui:34 msgid "Continue Process" msgstr "Prozess fortsetzen" @@ -595,7 +600,7 @@ msgstr "Es gab ein Problem beim Abwürgen von {}" msgid "There was a problem continuing {}" msgstr "Es gab ein Problem beim Fortsetzen von {}" -#: src/utils/app.rs:220 +#: src/utils/app.rs:224 msgid "System Processes" msgstr "Systemprozesse" @@ -1264,7 +1269,7 @@ msgstr "Anwendungsinformationen" msgid "Usage" msgstr "Auslastung" -#: data/resources/ui/dialogs/app_dialog.ui:165 +#: data/resources/ui/dialogs/app_dialog.ui:174 #: data/resources/ui/dialogs/process_dialog.ui:170 #: data/resources/ui/pages/battery.ui:33 data/resources/ui/pages/cpu.ui:89 #: data/resources/ui/pages/drive.ui:54 data/resources/ui/pages/gpu.ui:80 @@ -1272,20 +1277,20 @@ msgstr "Auslastung" msgid "Properties" msgstr "Eigenschaften" -#: data/resources/ui/dialogs/app_dialog.ui:171 +#: data/resources/ui/dialogs/app_dialog.ui:180 msgid "ID" msgstr "ID" -#: data/resources/ui/dialogs/app_dialog.ui:181 +#: data/resources/ui/dialogs/app_dialog.ui:190 #: data/resources/ui/dialogs/process_dialog.ui:186 msgid "Running Since" msgstr "Läuft seit" -#: data/resources/ui/dialogs/app_dialog.ui:189 +#: data/resources/ui/dialogs/app_dialog.ui:198 msgid "Running Processes" msgstr "Laufende Prozesse" -#: data/resources/ui/dialogs/app_dialog.ui:198 +#: data/resources/ui/dialogs/app_dialog.ui:207 #: data/resources/ui/dialogs/process_dialog.ui:222 msgid "Containerized" msgstr "Benutzt Container" @@ -1307,6 +1312,10 @@ msgstr "Kontrollgruppe" msgid "Process Options" msgstr "Prozessoptionen" +#: data/resources/ui/dialogs/process_options_dialog.ui:29 +msgid "Apply" +msgstr "Anwenden" + #: data/resources/ui/dialogs/process_options_dialog.ui:72 msgid "Niceness" msgstr "Nice-Wert" @@ -1491,45 +1500,45 @@ msgstr "" "dividiert" #: data/resources/ui/dialogs/settings_dialog.ui:130 -#: data/resources/ui/dialogs/settings_dialog.ui:202 +#: data/resources/ui/dialogs/settings_dialog.ui:207 msgid "Information Columns" msgstr "Informationsspalten" -#: data/resources/ui/dialogs/settings_dialog.ui:191 +#: data/resources/ui/dialogs/settings_dialog.ui:196 #: data/resources/ui/pages/cpu.ui:22 data/resources/ui/pages/processes.ui:40 msgid "Options" msgstr "Optionen" -#: data/resources/ui/dialogs/settings_dialog.ui:194 +#: data/resources/ui/dialogs/settings_dialog.ui:199 msgid "Show Niceness Values" msgstr "Nice-Werte anzeigen" -#: data/resources/ui/dialogs/settings_dialog.ui:195 +#: data/resources/ui/dialogs/settings_dialog.ui:200 msgid "" "Display priorities as niceness to allow for more fine-grained adjustments" msgstr "Prioritäten als Nice-Wert um feinere Anpassungen zu ermöglichen" -#: data/resources/ui/dialogs/settings_dialog.ui:290 +#: data/resources/ui/dialogs/settings_dialog.ui:300 msgid "Devices" msgstr "Geräte" -#: data/resources/ui/dialogs/settings_dialog.ui:293 +#: data/resources/ui/dialogs/settings_dialog.ui:303 msgid "Drives" msgstr "Datenträger" -#: data/resources/ui/dialogs/settings_dialog.ui:296 +#: data/resources/ui/dialogs/settings_dialog.ui:306 msgid "Show Virtual Drives" msgstr "Virtuelle Laufwerke anzeigen" -#: data/resources/ui/dialogs/settings_dialog.ui:297 +#: data/resources/ui/dialogs/settings_dialog.ui:307 msgid "Virtual drives are for example ZFS volumes or mapped devices" msgstr "Als virtuelle Laufwerke zählen zum Beispiel ZFS-Volumen oder RAM-Disks" -#: data/resources/ui/dialogs/settings_dialog.ui:307 +#: data/resources/ui/dialogs/settings_dialog.ui:317 msgid "Show Virtual Network Interfaces" msgstr "Virtuelle Netzwerkschnittstellen anzeigen" -#: data/resources/ui/dialogs/settings_dialog.ui:308 +#: data/resources/ui/dialogs/settings_dialog.ui:318 msgid "Virtual network interfaces are for example bridges or VPN tunnels" msgstr "" "Als virtuelle Netzwerkschnittstellen zählen zum Beispiel Bridges oder Tunnel" From 3edb30b2d6316a99c28d9290686877be1e05a0a4 Mon Sep 17 00:00:00 2001 From: nokyan Date: Tue, 1 Oct 2024 12:30:20 +0200 Subject: [PATCH 03/12] Consistent nomenclature --- src/utils/app.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/utils/app.rs b/src/utils/app.rs index e3becd2b..7b76ed38 100644 --- a/src/utils/app.rs +++ b/src/utils/app.rs @@ -26,7 +26,7 @@ use super::{ /// considered instead to enhance app detection const DESKTOP_ENVIRONMENT_CGROUPS: &[&str] = &["org.gnome.Shell"]; -// This contains executable names that are blacklisted from being recognized as applications +// This contains executable names that are blocklisted from being recognized as applications const DESKTOP_EXEC_BLOCKLIST: &[&str] = &["bash", "zsh", "fish", "sh", "ksh", "flatpak"]; // This contains IDs of desktop files that shouldn't be counted as applications for whatever reason @@ -288,8 +288,8 @@ impl App { if let Some(executable_name) = &executable_name { if DESKTOP_EXEC_BLOCKLIST.contains(&executable_name.as_str()) { - debug!("Skipping {id} because its executable {executable_name} blacklisted…"); - bail!("{id}'s executable {executable_name} is blacklisted") + debug!("Skipping {id} because its executable {executable_name} blocklisted…"); + bail!("{id}'s executable {executable_name} is blocklisted") } } From 1194d64b3d61897f40a0f60848e2b6dec99294a5 Mon Sep 17 00:00:00 2001 From: nokyan Date: Sat, 19 Oct 2024 13:01:35 +0200 Subject: [PATCH 04/12] Add swap row to process dialog --- data/resources/ui/dialogs/process_dialog.ui | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/data/resources/ui/dialogs/process_dialog.ui b/data/resources/ui/dialogs/process_dialog.ui index b379f33c..207b6a31 100644 --- a/data/resources/ui/dialogs/process_dialog.ui +++ b/data/resources/ui/dialogs/process_dialog.ui @@ -64,6 +64,15 @@ Memory + + + + true + Swap + + Drive Read From 6cdfda288649c1c7894eacac9156b331d529ebb4 Mon Sep 17 00:00:00 2001 From: nokyan Date: Sat, 19 Oct 2024 13:12:40 +0200 Subject: [PATCH 05/12] Fix kworkers being excluded from the process list --- lib/process_data/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/process_data/src/lib.rs b/lib/process_data/src/lib.rs index 15f8b036..5205de17 100644 --- a/lib/process_data/src/lib.rs +++ b/lib/process_data/src/lib.rs @@ -309,7 +309,7 @@ impl ProcessData { .map(|capture| capture.as_str()) .unwrap_or_default() .parse::() - .context("couldn't parse status file content")? + .unwrap_or_default() // kworkers don't have swap usage .saturating_mul(1000); let memory_usage = statm From b520bbc646a4990b9e2f96861b9fd0d1f237509b Mon Sep 17 00:00:00 2001 From: nokyan Date: Sat, 19 Oct 2024 13:13:06 +0200 Subject: [PATCH 06/12] Show 'N/A' for empty commandlines --- src/ui/dialogs/process_dialog.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/ui/dialogs/process_dialog.rs b/src/ui/dialogs/process_dialog.rs index 6b905b9d..a98a25af 100644 --- a/src/ui/dialogs/process_dialog.rs +++ b/src/ui/dialogs/process_dialog.rs @@ -1,5 +1,5 @@ use adw::{prelude::*, subclass::prelude::*}; -use gtk::glib; +use gtk::glib::{self, GString}; use crate::config::PROFILE; use crate::i18n::i18n; @@ -127,9 +127,14 @@ impl ResProcessDialog { .unwrap_or_else(|| i18n("N/A").into()), ); - imp.commandline.set_subtitle(&process.commandline()); - imp.commandline - .set_tooltip_text(Some(&process.commandline())); + let commandline_str = if process.commandline().is_empty() { + GString::from(i18n("N/A")) + } else { + process.commandline() + }; + + imp.commandline.set_subtitle(&commandline_str); + imp.commandline.set_tooltip_text(Some(&commandline_str)); imp.cgroup .set_subtitle(&process.cgroup().unwrap_or_else(|| i18n("N/A").into())); From a3737595f50d355ad505dcc026fe7b0c2c5cfffa Mon Sep 17 00:00:00 2001 From: nokyan Date: Sat, 19 Oct 2024 13:27:08 +0200 Subject: [PATCH 07/12] Merge 'main' into swap-columns --- data/resources/ui/pages/applications.ui | 2 +- data/resources/ui/pages/processes.ui | 42 +- lib/process_data/src/lib.rs | 14 +- po/cs.po | 491 ++++++++++++++---------- po/de.po | 304 +++++++++------ po/resources.pot | 296 ++++++++------ src/ui/pages/applications/mod.rs | 38 +- src/ui/pages/drive.rs | 10 +- src/ui/pages/processes/mod.rs | 237 +++++++++--- src/ui/pages/processes/process_entry.rs | 8 +- src/ui/widgets/graph.rs | 5 +- src/ui/window.rs | 139 +++++-- src/utils/app.rs | 8 +- src/utils/cpu.rs | 12 +- src/utils/memory.rs | 8 +- src/utils/process.rs | 15 +- 16 files changed, 1047 insertions(+), 582 deletions(-) diff --git a/data/resources/ui/pages/applications.ui b/data/resources/ui/pages/applications.ui index 032f4d4d..af1959fc 100644 --- a/data/resources/ui/pages/applications.ui +++ b/data/resources/ui/pages/applications.ui @@ -37,7 +37,7 @@
- Show App Information + Information applications.context-information
diff --git a/data/resources/ui/pages/processes.ui b/data/resources/ui/pages/processes.ui index 0fb00ea7..44aa8786 100644 --- a/data/resources/ui/pages/processes.ui +++ b/data/resources/ui/pages/processes.ui @@ -16,6 +16,22 @@ + +
+ + Kill Processes + processes.kill-process + + + Halt Processes + processes.halt-process + + + Continue Processes + processes.continue-process + +
+
@@ -43,16 +59,40 @@
- Show Process Information + Information processes.context-information
+ +
+ + End Processes + processes.end-process + + + Kill Processes + processes.kill-process + + + Halt Processes + processes.halt-process + + + Continue Processes + processes.continue-process + +
+