Commit graph

886 commits

Author SHA1 Message Date
Clement Tsang
1598654bef
bug: Divide Windows process cpu usage by number of processors (#525)
Fixes a bug displaying the CPU usage of a process in Windows due to not dividing by the number of processors.
2021-06-26 02:34:32 -04:00
Clement Tsang
93b899e745
feature: add F9 as an alternative process kill key (#518)
Adds F9 as an alternative kill shortcut to dd.
2021-06-22 20:34:00 -04:00
Clement Tsang
06071d5abf
docs: migrate documentation over to mkdocs (#506)
A large migration of documentation over to mkdocs, and some rewrites. Some stuff (install information, basic supported systems, contributors, thanks) are still staying in README.md, and CONTRIBUTING.md is essentially duplicated right now. However, stuff like configuration and key/mouse bindings are now moved to mkdocs.

Some parts are still a bit WIP - it is definitely not done (documentation never seems to be...). However, it should be "good enough" for now, and I'm much happier working with the documentation in this form than trying to scroll through a giant endless README.md file. It also works much better for adding new documentation.
2021-06-21 01:40:58 -04:00
Clement Tsang
3313e88334
bug: Fix battery widget color and mouse (#504)
Fixes two bugs causing the battery widget colours and mouse events to be broken.
2021-06-20 20:28:44 -04:00
Clement Tsang
e3ebc48ce8
refactor: Fix clippy lint for entry vacancy check (#503) 2021-06-18 18:35:19 -04:00
Clement Tsang
63f9ed6199
deps: Switch back from dirs-next to dirs (#492)
Since it's supported again, seems like a good time to switch back to
dirs.
2021-06-06 18:58:53 -04:00
Clement Tsang
733d0795db
refactor: remove old traces (#486)
Removes some old trace lines for cleanup
2021-05-23 00:29:31 -04:00
Clement Tsang
6847f2ff0c
refactor: split up data collection by OS (#482)
Refactor to split up data collection by OS and/or the backing library. The goal is to make it easier to work with and add new OS support, as opposed to how it was prior where we stored OS-independent implementations all in the same file.
2021-05-15 21:57:02 -04:00
Clement Tsang
ee6228c2b6
refactor: switch to procfs library (#479)
Switch the Linux proc parts to the procfs library: https://crates.io/crates/procfs.
2021-05-13 23:41:43 -04:00
Clement Tsang
0ac449e573
bug: forgot to create memory usage string when collapsed (#473)
Adds a line to actually build the string of the summed memory usage. I forgot to make the string after summing the values.
2021-05-11 01:38:36 -04:00
Clement Tsang
1d33441f7b
other: lower the timer for multi-digit in dd times (#469)
Lowers the timer for multi-digit inputs in dd.

I'm going to eventually completely rewrite the input part for the entire application though, but this will do for now.
2021-05-09 16:47:14 -04:00
Clement Tsang
574c2c1df7
change: switch from sysinfo to heim for cpu usage in macOS and Windows (#467)
Due to #404, I've just moved all CPU usage calculations over to heim.
2021-05-09 01:39:42 -04:00
Clement Tsang
e367a37b1a
deps: Update dependencies 2021-05-08 (#466)
Did not update crossterm (and tui-rs) since it seems to have resulted in a massive CPU usage increase. Also fix minor clippy error with a duplicated to_string call.
2021-05-08 19:55:01 -04:00
Clement Tsang
ae59489466
other: make advanced kill default (#463)
We make the advanced kill menu the default instead. You can opt out with disable_advanced_kill.
2021-05-06 23:35:30 -04:00
Clement Tsang
fbfa708d1d
change: Adds advanced kill option to default config text (#462)
Adds advanced_kill to the default config gen.
2021-05-06 22:34:22 -04:00
Clement Tsang
f98fa4a5f4
change: remove gap between CPU and columns in basic (#460)
Removes the gap between the CPU section and other columns in basic mode.
2021-04-24 15:08:19 -04:00
Clement Tsang
d4a18aea75
bug: Fix mouse hitboxes (#459)
Fixes the mouse hitbox checks overextending by 1. Also reverts the bandaid fix done for #458.
2021-04-23 23:13:42 -04:00
Clement Tsang
fcc478a1eb
bug: Fixes basic mode mouse hitboxes being broken (#458)
Fixes basic mode having broken click hitboxes (they were 1 unit too long in both directions). I'm pretty sure normal mode does too, but it's less noticeable due to bounding boxes.
2021-04-23 19:31:35 -04:00
Clement Tsang
0148432b15
refactor: Take clippy nightly suggestions into account (#456)
Refactor in regards to clippy nightly. Mostly deals with suggestions with duplicate code on multiple branches.
2021-04-23 00:06:07 -04:00
Clement Tsang
f33bb42c5b
feature: Add mount filtering, rework filter priority logic (#455)
This PR accomplishes two things:

1. This PR aims to add mount_filter to the config file. This allows a user to filter their disk widget entries by the mount name as well; this was particularly a problem in trying to address #431.
2. A slight rework of how the filter system works due to the need of being able to manage two potentially conflicting filter sources, since the disk widget will now potentially filter on both the disk name and the mount name.

In regards to the second point, the new behaviour is as such:

1. Is the entry allowed through any filter? That is, does it match an entry in a filter where is_list_ignored is false? If so, we always keep this entry.
2. Is the entry denied through any filter? That is, does it match an entry in a filter where is_list_ignored is true? If so, we always deny this entry.
3. Anything else is allowed.

This main (breaking) change is really the third point. This would mean that temp_filter and net_filter, when set to allow listed entries with is_list_ignored = false, are kinda... useless, as a whitelist in the scenario of being the only filter is kinda pointless. But hopefully this shouldn't be a problem...?
2021-04-22 23:43:12 -04:00
Clement Tsang
d9fd6be2cc
other: update built-in themes list in config (#452)
Adds nord and nord-light as part of the description in the pre-defined config file.
2021-04-13 17:15:30 -04:00
Clement Tsang
cc03d57f37
change: Add decimal to disk values larger than 1GB (#451)
A bit of a followup to #449, this adds decimal places for values over 1GB in regards to disk usage. This affects the disk widget (for the read/write per second) and process widgets (total read, total write, read/write per second).
2021-04-09 16:14:01 -04:00
Clement Tsang
8c7e85b923
change: Tweak default light colour scheme (#450)
Removes/tweaks some really light colours that might cause issues with a white background. For example, yellow on white didn't look so great, so I adjusted the memory/rx colours for this mode.
2021-04-09 15:57:54 -04:00
Clement Tsang
edb29a43b9
change: Add decimal to actual memory usage in proc (#449)
This change adds a decimal + single digit to memory usage values over the 1 GiB threshold. Otherwise, there is no visible change.

(Note to self: implement the per-column width system soon, this change causes some values to potentially look a bit weird in mem-non-percent mode as it is if the value is really large, like 530.2GiB pushing right up against the column width, but it's currently tied to mem-percent mode. Ugh.)

Also revert a change made by accident where I switched to a decimal prefix system (GB) for memory values. This has been reverted back to a binary prefix (GiB).
2021-04-09 15:43:34 -04:00
Clement Tsang
e63a0b4082
refactor: Unify disk conversion to string step (#446)
Refactor to unify the process disk usage -> string into one function.
2021-04-07 20:52:29 -04:00
Clement Tsang
5bd9e4f6ae
feature: Collapsing in tree mode sums usage to parent (#445)
For the process widget, we now sum the resource usage of the child processes on the parent entry when collapsing in tree mode.

Note that if you search to filter, and collapse, it will not sum the pruned values (values that cannot be seen).  This is partly because I'm a bit lazy, and partly because I think this behaviour makes sense.

For example, let's say I search for a process with 4 child processes "AA, AB, BA, BB", with CPU usage 0.1, 0.2, 0.3, 0.4 respectively.  Assume the parent process has 0 usage.

- Without filter, it sums to 1.0
- With a filter on A, it would sum to just 0.3
- With a filter on AA, it would sum to 0.1

I think this is fine because I'm treating this as summing any child that is still *visible* somehow.  Summing unseen values would probably be weird as it would look like it's not adding up.

Further note that if you had, say, a child "CC" with a usage of, say, 2.0, and its parent of "AB", and you searched for CC in our above example, you would get a sum of 2.2.  This is because AB is still visible by the fact that CC was the searched process, and AB must still exist (albeit faded out) in the tree hierarchy, and as such will still be displayed.
2021-04-05 01:19:17 -04:00
Clement Tsang
405ce64a02
refactor: Switch from fnv to fxhash (#444)
Switches to fxhash from fnv, which should be a bit faster.
2021-04-04 20:48:19 -04:00
Clement Tsang
476aaff45c
change: Make proc widget unit consistent with disk (#443)
In particular, use non-binary prefixes for disk and memory usage in a process. Ideally everything is configurable by the user, but this is fine for now IMO until I can get around to doing in-app config.
2021-04-04 17:03:52 -04:00
Clement Tsang
eb6a737d34
feature: Rework network y-axis, linear interpolation for off-screen data (#437)
Rewrite of the y-axis labeling and scaling for the network widget, along with more customization. This still has one step to be optimized (cache results so we don't have to recalculate the legend each time), but will be done in another PR for sake of this one being too large already.

Furthermore, this change adds linear interpolation at the 0 point in the case a data point shoots too far back - this seems to have lead to ugly gaps to the left of graphs in some cases, because the left hand limit was not big enough for the data point. We address this by grabbing values just outside the time range and linearly interpolating at the leftmost limit. This affects all graph widgets (CPU, mem, network).

This can be optimized, and will hopefully be prior to release in a separate change.
2021-04-04 05:38:57 -04:00
Zeb Piasecki
c79956843e
bug: Fix getpwuid segfault (#440)
Fixes a rare segfault if a uid does not have a passwd entry. The unsafe block at https://github.com/ClementTsang/bottom/blob/master/src/app/data_harvester/processes.rs#L137 can return a null pointer as specified at https://www.gnu.org/software/libc/manual/html_node/Lookup-User.html.
2021-03-23 19:37:28 -04:00
pvanheus
d8f8a92b55
feature: Add support for displaying load average (#392) 2021-03-12 20:03:25 -05:00
Clement Tsang
53d8bdae32
feature: User info in proc widget for Unix-based systems (#425)
Adds users into the process widget (for Unix-based systems).  This shows only in non-grouped modes, similar to state.  Search is also supported.

In addition, a quick fix to prevent users from being in grouped mode when they tried to enter tree mode while grouped.
2021-02-28 17:40:55 -05:00
Clement Tsang
fe74328647
bug: Fix bugs with disk widget and disk encryption (#423)
Two issues were highlighted as a result of using either Void Linux with disk encryption, or just disk encryption on Linux in general:

Two fixes:
1. Fixes a failed `usage()` call in the `get_disk_usage` function from failing the entire result.  Now it only returns an entry with N/A results.  This occurred in some distros and disk encryption setups, for example, the one for Void Linux here: https://docs.voidlinux.org/installation/guides/fde.html.

2. Fixes a potential mapping issue with disk encryption on Linux in general.  Since the disk might map to `/dev/mapper/whatever`, but the I/O harvester was using another name, the mappings would not match.  As such, we now also check if a symlink exists; if it does, then we take it and work out the correct path.  This also fixes the disk name being wrong.
2021-02-24 20:23:35 -05:00
Clement Tsang
3c76b17c27
change: Alter Nord's border colour (#422)
Updates the border colour on the Nord colour scheme to look less jarring.
2021-02-20 18:37:42 -05:00
Clement Tsang
cb1191ff35
deps: Update various deps as per 2021-02-19 (#420)
Major update is tui-rs from 0.13 to 0.14.  This change allows us to update our tables to make them look nicer!
2021-02-19 17:57:39 -05:00
Clement Tsang
f2975c3a7c
change: Don't jump to top when using sort shortcuts (#418)
For consistency, we now don't automatically jump to the top of the list when using a sort shortcut. This behaviour already occurred with the sort menu and sorting by mouse clicks, so this is just now more consistent (and IMO less annoying, you can also always jump to the top via gg).
2021-02-19 01:22:19 -05:00
Clement Tsang
e6c9187928
bug: Fix sorting menu and sort shortcuts not syncing in gui (#417)
Fixes sorting menus and shortcuts not syncing correctly if the sorting window is open.
2021-02-19 01:02:21 -05:00
Clement Tsang
e6230ef156
bug: fix inconsistent spacing with grouped vs non-grouped in the process widget (#416)
Fixes grouped mode having different spacing than non-grouped mode.
2021-02-18 19:15:07 -05:00
Clement Tsang
4db39da75e
feature: Add mouse support to sorting columns (#413)
Adds mouse support for sorting columns within the process widget. You can now click on the column header to sort (or invert the sort).
2021-02-18 17:10:51 -05:00
Clement Tsang
cf14abe37d
feature: Add ctrl-w and ctrl-h support in the search (#409)
Ctrl-w deletes one word backwards from the current cursor location. Ctrl-h is just an alias for backspace.
2021-02-16 18:07:41 -05:00
Clement Tsang
e437b14922
feature: Allow toggling advanced kill menu (#408)
Allows toggling the advanced kill menu via --advanced_kill or advanced_kill=true.
2021-02-15 22:23:22 -05:00
Clement Tsang
fb7b1226fd
feature: add nord and nord-light colours (#406)
Adds colour schemes for Nord, along with a light variant.
2021-02-15 14:12:43 -05:00
Clement Tsang
d48e6cd7e0
bug: Workaround for strange rendering when there are <4 CPU entries reported (#398)
So it seems that tui-rs doesn't like rendering my CPU bars if the height is exactly 1. It needs at least 2. I have no idea why, this is probably something weird with how I render.

This, of course, breaks when there is only one row to report (i.e. with a dual core setup in #397).

The workaround switches the gap between the CPU and mem/net parts to 0, and increases the CPU's draw height by 1, only when the height is otherwise 1 (so the draw height is now at least 2). This does have the side effect of including an extra line to the side borders, but I think it's fine.
2021-01-25 02:21:33 -05:00
Frederick Zhang
b8d3b68e75
feature: Use ps as fallback to query CPU usage under macOS (#390)
When running without elevated permissions under macOS, sysinfo cannot
query states of processes by root user, which results in 0.0% CPU usage
for all this kind of processes (and state = Unknown).

Here we use `ps`, which has SUID, as a fallback to query CPU usages.
This can be potentially applied to other properties if needed in the
future (we'll need a proper struct and parser).
2021-01-21 20:53:55 -05:00
Erlend Hamberg
5e28f0c538
feature: Show Celcius/Fahrenheit with degree symbol (#391) 2021-01-20 01:55:18 -05:00
Clement Tsang
e30518bf62
bug: Fix missing sorting arrow when for non-% mem (#389)
Fixes a bug where you could make the sorting arrow disappear in the mem column if you did:

1. Go to proc widget
2. Switch to memory values from %
3. Press `m`
2021-01-12 21:41:59 -05:00
Clement Tsang
cfddb7e223
bug: Fix hide table gap option not working in battery widget (#386)
Fixes the `hide_table_gap` option not working with the battery widget.
2021-01-05 22:18:56 -05:00
Clement Tsang
90be9730a6
feature: Add network interface filtering (#381)
Adds a new option in the config file to filter out network interfaces.  Also add the option to filter by whole words.

Interface follows that of the existing ones:

```toml
[net_filter]
is_list_ignored = false
list = ["virbr0.*"]
regex = true
case_sensitive = false
whole_word = false
```
2021-01-01 18:09:28 -05:00
ClementTsang
7e16475b76 other: Add reference to why we use sysinfo for Windows network detection for now 2020-12-29 15:35:06 -05:00
Clement Tsang
60d0117c85
feature: Add process_command to default to the process command (#379)
Adds a `process_command` flag and config option to default to showing the full command in the process widget on startup.
2020-12-28 14:34:32 -05:00