Commit graph

99 commits

Author SHA1 Message Date
Sam Atkins
cd7037afd5 SystemMonitor: Remove MakeInspectable::Yes from constructor
I think this was left in by mistake. No application should be hard-coded
as inspectable.
2022-04-18 12:57:34 +02:00
Simon Wanner
206d6ece55 LibGfx: Move other font-related files to LibGfx/Font/ 2022-04-09 23:48:18 +02:00
kleines Filmröllchen
600596fbae SystemMonitor: Keep current process selection expanded if needed
This is a hack until persistent model indices work.
2022-04-06 12:47:50 +02:00
kleines Filmröllchen
0a61b45b64 SystemMonitor: Display processes and their threads in a tree :^)
This shows all non-main threads as children of the process they belong
to. We also show the TID as that is important to distinguish the
different threads in one process.

Fixes #65

:skeleyak:
2022-04-06 12:47:50 +02:00
kleines Filmröllchen
0e71c6a7de SystemMonitor: Pass the correct parent when checking for selected values
This will cause trouble later when the row is not enough to identify a
selection.
2022-04-06 12:47:50 +02:00
Linus Groh
0f27432ec6 Kernel+SystemMonitor+lscpu: Rename 'CPUID' -> 'Vendor ID'
This is what the Intel manual, as well as Linux's cpuinfo calls it.
2022-04-03 23:20:33 +02:00
kleines Filmröllchen
7af87e8e6b SystemMonitor: Move process window to GML
Extra stuff done in this commit to facilitate the above (if you want to
really push my commit count, ask for more atomicisation):
- Register a bunch of widgets that are used in the process window.
- Allow setting the pid after the fact for the process state widget.
2022-04-03 12:21:05 +02:00
kleines Filmröllchen
ee4cec4ea9 SystemMonitor: Open PCI database in parallel
This was causing a bunch of lag (at least half a second, very
noticeable) when first opening the hardware tab, as we would only load
the PCI database when initializing the widget lazily. By starting the
PCI database open on another thread, we avoid this entirely, as nobody
can click the hardware tab this fast :^)
2022-04-03 12:21:05 +02:00
kleines Filmröllchen
81d5e93b92 SystemMonitor: Move storage tab into custom widget 2022-04-03 12:21:05 +02:00
kleines Filmröllchen
99005ca90f SystemMonitor: Move hardware tab to custom widget
This is just a LazyWidget with fancy initialization code that works
perfectly in isolation.
2022-04-03 12:21:05 +02:00
kleines Filmröllchen
5a2716baea SystemMonitor: Move entire main UI to GML
:^)
2022-04-03 12:21:05 +02:00
kleines Filmröllchen
abfddd01d4 SystemMonitor: Register MemoryStatsWidget
This also requires that the associated graph widget may be null.
2022-04-03 12:21:05 +02:00
kleines Filmröllchen
abf2ed4c52 SystemMonitor: Register GraphWidget 2022-04-03 12:21:05 +02:00
kleines Filmröllchen
6d00932612 SystemMonitor: Move NetworkStatisticsWidget into namespace + register it
We don't want to clobber the global namespace with registered widgets.
2022-04-03 12:21:05 +02:00
kleines Filmröllchen
7e34b88ed4 LibGUI: Fully support TabWidget in GML
TabWidgets couldn't be used in GML properly, as the GML creation
routines didn't actually call the necessary functions in the TabWidget
to get a new tab added. This commit fixes that by making the name of the
tab a normal property, the previously introduced "title", which can be
trivially set from GML. Therefore, try_add_widget() loses an argument
(while try_add_tab doesn't, because it newly constructs the widget).
This allows us to get rid of the silly "fixing my widget tree after the
fact" code in Help and will make it super easy to use TabWidget in
future GML. :^)
2022-04-03 12:21:05 +02:00
Idan Horowitz
086969277e Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
int16
3f391d80c4 SystemMonitor: Recognise wxallowed mount flag 2022-03-22 12:20:19 +01:00
Idan Horowitz
e167cafa70 SystemMonitor: Add missing /boot/Kernel.debug unveil
When using the stack tab as root LibSymbolication uses this file to
provide Kernel symbols.
2022-02-21 23:30:46 +02:00
thankyouverycool
9e20d393ac SystemMonitor: Add proper icon to the ProcessState window 2022-02-18 13:10:37 +01:00
Lenny Maiorani
160bda7228 Applications: Use default constructors/destructors
https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#cother-other-default-operation-rules

"The compiler is more likely to get the default semantics right and
you cannot implement these functions better than the compiler."
2022-02-14 22:06:55 +00:00
Vitaly Dyachkov
32b8795091 LibConfig: Rename pledge_domains(String) => pledge_domain(String)
pledge_domains() that takes only one String argument was specifically
added as a shortcut for pledging a single domain. So, it makes sense to
use singular here.
2022-02-11 18:06:39 +01:00
Undefine
9a28ef7aa9 SystemMonitor: Show unknown in PCI devices
In case when the PCI class, device or vendor is unknown, show
that it is unknown instead of just putting the ID
2022-01-19 21:47:40 -08:00
Marcus Nilsson
8b39ec7c18 SystemMonitor: Don't display empty CPU graphs when number of CPUs < 4
When we have less than 4 CPUs we don't need to display a whole row of
CPU graphs.
2022-01-16 15:04:40 +01:00
creator1creeper1
19d9d5bfe1 Everywhere: Mark Vector of mutable references as mutable
The point of a reference type is to behave just like the referred-to
type. So, a Foo& should behave just like a Foo.

In these cases, we had a const Vector. If it was a const Vector of Foo,
iterating over the Vector would only permit taking const references to
the individual Foos.

However, we had a const Vector of Foo&. The behavior should not
change. We should still only be permitted to take const references to
the individual Foos. Otherwise, we would be allowed to mutate the
individual Foos, which would mutate the elements of the const Vector.
This wouldn't modify the stored pointers, but it would modify the
objects that the references refer to. Since references should be
transparent, this should not be legal.

So it should be impossible to get mutable references into a const
Vector. Since we need mutable references in these cases to call the
mutating member functions, we need to mark the Vector as mutable as
well.
2022-01-16 00:38:21 +03:30
Idan Horowitz
d55c130df5 SystemMonitor: Split multi-core CPU usage graphs into multiple rows
This looks much nicer than the current cramped single-row solution.
2022-01-14 01:02:50 +01:00
Idan Horowitz
f9528f1882 Kernel: Rename ProcessorInfo::{m_brandstr => m_brand}
There's no need to specify the type of the member in it's name,
especially not in shorthand format.
2022-01-12 16:09:09 +02:00
creator1creeper1
26eee2c02d SystemMonitor: Propagate errors using try_set_main_widget
build_process_window now uses try_set_main_widget and might return an
error. process_properties_action handles a possible error by simply
not updating the process window if an error occured while building it.
2022-01-09 00:56:11 +01:00
Sam Atkins
f6633a1026 LibGUI+Userland: Make SortingProxyModel::create() return ErrorOr
Unfortunately, most of the users are inside constructors, (and two
others are inside callback lambdas) so the error can't propagate, but
that can be improved later.
2021-12-24 05:11:52 -08:00
Idan Horowitz
d82c91ac2c SystemMonitor: Add back accidentally removed veil lock
Since the call to lock the veil was missing, the protections provided
by unveil() were not actually enabled.
2021-12-19 13:41:35 +01:00
Andreas Kling
96e4077c38 SystemMonitor: Port to LibMain :^)
There's a lot more work to do on this application to take full advantage
of TRY() etc. This patch just scratches the surface.
2021-12-04 14:24:04 +01:00
Ralf Donau
1c59cfa28c SystemMonitor: Remove unveiling /tmp/portal/config 2021-11-25 08:50:31 +01:00
Maciej
62169fda03 SystemMonitor: Ask user before trying to kill/stop process
These actions can be dangerous, especially for important system
processes. Let's make accidental breaking of the system a bit
harder. :^)
2021-11-13 11:14:20 +00:00
Maciej
7f7db7dbec SystemMonitor: Add Delete as alternate shortcut for killing a process
This matches behaviour of other "system monitors", like Windows's Task
Manager
2021-11-13 11:14:20 +00:00
Andreas Kling
ea8c6e796f SystemMonitor: Shrink oversized GroupBox margins
Now that GroupBox reports accurate content margins, we don't need to
account for the title height in internal layout margins.
2021-11-13 11:47:46 +01:00
Andreas Kling
235f39e449 LibGfx: Use ErrorOr<T> for Bitmap::try_load_from_file()
This was used in a lot of places, so this patch makes liberal use of
ErrorOr<T>::release_value_but_fixme_should_propagate_errors().
2021-11-08 00:35:27 +01:00
Undefine
5009202038 SystemMonitor: Save refresh frequency to a config file 2021-10-13 20:44:37 +03:00
sin-ack
7aa3cfda09 SystemMonitor: Use size_t for graph values
The memory and CPU graphs fail to display anything when the memory size
is larger than 2**31 bytes, because of the small range of int. This
commit makes replaces the type with size_t. Hopefully nobody will have
18 quintillion bytes of memory before this gets replaced. :^)
2021-10-07 00:04:05 +02:00
Rodrigo Tobar
ad33efbc8c SystemMonitor: Unveil /usr/local/lib
This is necessary to symbolicate libraries installed under
/usr/local/lib.
2021-09-28 10:55:14 +02:00
David Isaksson
9699648b2a SystemMonitor: Make memory statistics dynamically formatted by size
Previously all memory values on the performance was formatted as KiB,
but with such formatting it can be quite hard to read large numbers
(as mentioned by Andreas on todays office hours livestream :^)).
This patch makes use of the human readable formatting utilies and
displays them in an easier to read format.
2021-09-04 16:05:32 +02:00
Andreas Kling
b36968c442 SystemMonitor: Put the "Hardware" tabs at the end of the list 2021-08-18 13:07:35 +02:00
Andreas Kling
fe1b490416 SystemMonitor: Rename "Graphs" tab to "Performance" 2021-08-18 12:54:59 +02:00
Andreas Kling
636a4fe36c SystemMonitor: Rename "File system" tab to "Storage" 2021-08-18 12:53:59 +02:00
Andreas Kling
f91c499a41 SystemMonitor: Consolidate hardware tabs + remove interrupts tab
Combine the "PCI devices" and "Processors" tabs into a "Hardware" tab.

And then remove the "Interrupts" tab because the number of received
IRQ's per device is not really useful information to expose in this GUI.
If the user needs this, he can check lsirq.
2021-08-18 12:50:24 +02:00
Andreas Kling
9994b81931 SystemMonitor: Remove "Devices" tab
This was crowding up the GUI without providing anything useful.
2021-08-18 12:49:30 +02:00
sin-ack
e11d177618 Userland+LibGUI: Add shorthand versions of the Margins constructor
This allows for typing [8] instead of [8, 8, 8, 8] to specify the same
margin on all edges, for example. The constructors follow CSS' style of
specifying margins. The added constructors are:

- Margins(int all): Sets the same margin on all edges.
- Margins(int vertical, int horizontal): Sets the first argument to top
  and bottom margins, and the second argument to left and right margins.
- Margins(int top, int vertical, int bottom): Sets the first argument to
  the top margin, the second argument to the left and right margins,
  and the third argument to the bottom margin.
2021-08-18 10:30:50 +02:00
sin-ack
9c9a5c55cb Userland+LibGUI: Make Margins arguments match CSS ordering
Previously the argument order for Margins was (left, top, right,
bottom). To make it more familiar and closer to how CSS does it, the
argument order is now (top, right, bottom, left).
2021-08-18 10:30:50 +02:00
Daniel Bertalan
b2ec579e98 SystemMonitor: Don't fail if we don't have ports installed
In #9373, /usr/local/bin was added to the unveiled directories to make
symbolization work on ports. This directory only exists if at least one
port is installed, so unveil would fail with ENOENT if we had none.
2021-08-13 21:29:10 +02:00
Brian Gianforcaro
27111cfc6c SystemMonitor: Unveil /usr/local/bin so symbolization works on ports 2021-08-13 11:08:38 +02:00
sin-ack
ca2c81251a Everywhere: Replace Model::update() with Model::invalidate()
Most of the models were just calling did_update anyway, which is
pointless since it can be unified to the base Model class. Instead, code
calling update() will now call invalidate(), which functions identically
and is more obvious in what it does.

Additionally, a default implementation is provided, which removes the
need to add empty implementations of update() for each model subclass.

Co-Authored-By: Ali Mohammad Pur <ali.mpfard@gmail.com>
2021-08-06 19:14:31 +02:00
Brian Gianforcaro
a51e6547aa Applications: Remove unused header includes 2021-08-01 08:10:16 +02:00