Commit Graph

728 Commits

Author SHA1 Message Date
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
Clement Tsang 30b2c2ea05
feature: Adds uid and gid collection (no GUI yet) (#375)
Just adds uid and gid collection to the process collection step. This does not add GUI changes, that'll come later.
2020-12-27 10:25:04 -05:00
ClementTsang 2bad8f2d72 other: re-enable table scroll position 2020-12-25 14:34:25 -05:00
Clement Tsang 23ad597d18
bug: Fixes incorrect colours being used the CPU widget in basic mode (#373)
Fixes the colour order being off in basic mode, and not using the average CPU colour.
2020-12-22 02:19:46 -05:00
Clement Tsang 9d1f3c9ac2
feature: Hide SWAP graph and legend in normal mode if SWAP is 0 (#372)
Firstly, note this currently won't affect basic mode. There is code changes due to it, but instead, we'll just display `0.0B/0.0B` instead. I'm personally not really sure if we want to get rid of it in basic mode, since it'll leave an ugly gap in that mode.

Anyways, this change is mainly for the normal mode. All this does is hide the legend entry and chart if the total SWAP drops to 0 KB. It also has a small change to do a unit check on the memory used, as well as slightly adjusting the calculation we use.
2020-12-22 01:12:13 -05:00
Clement Tsang 837c382ee9
refactor: Cut out sysinfo from Linux builds (#368)
Refactors to use only heim for Linux builds. This is now much easier to do since the 0.1 version of heim works fine for ARM. This is ideal since having to rely on two separate sources of data isn't the greatest if we can avoid it.

Sysinfo is still required for macOS and Windows, though. Temperature sensors do not work for those from heim, and for some reason, networks also don't work on Windows with heim...?

My personal CPU core calculation is also currently Linux-only, and as such, I'll still rely on sysinfo for Windows and macOS for now.

This isn't really a big optimization or anything btw. Just something I wanted to try.
2020-12-21 20:24:27 -05:00
Clement Tsang bfdaa09e3a
uptick: 0.5.6 (#362) 2020-12-17 18:42:08 -05:00
Clement Tsang 682f6493d1
refactor: re-use heim for ARM targets if possible (#360)
Use heim on ARM targets again where appropriate.
2020-12-17 17:57:38 -05:00
Clement Tsang 061cdb913b
bug: Fix missing component list refresh (#361) 2020-12-17 17:38:41 -05:00
Clement Tsang 4471ecc161
deps: Update various dependencies (#358) 2020-12-16 00:41:54 -05:00
Lukas Rysavy 120da2c85a
feature: Fine grained kill signals on unix (#263)
* feature: added signal selection for killing in unix

* feature: set default signal to 15 (TERM)

* feature: selecting kill signal number with number keys

* feature: mouse selection of kill signals

* fix: restore working previous kill dialog for win

* bug: more fixes for killing on windows

* feature: made two digit number selection only work in time window

* feature: replaced grid with scrollable list for kill signal selection

* fix: handling scrolling myself

* chore: replaced tui list with span
so we actually know for sure where the buttons are

* feature: always display cancel button in kill signal selection

* chore: simplified as suggested in review

* fix: made scrolling in kill list more intuitive

* fix: differentiating macos from linux signals

* fix: fixed reversed kill confirmation movement

* chore: fixed unused warnings for windows

* feature: added G and gg keybindings for kill signal list
2020-12-15 21:39:17 -05:00
Clement Tsang 49cfc75aca
deps: Update to heim 0.1 (#354) 2020-12-15 21:34:45 -05:00
Clement Tsang 5d7697d3da
refactor: More minor optimization changes (#353)
- Move data rather than cloning during data transferring step
- Try using beef?
2020-12-12 21:06:46 -05:00
Clement Tsang 766fe25c55
refactor: Use feature flags to avoid building with fern and log (#351) 2020-12-11 20:39:32 -05:00
Clement Tsang 8c4ad90e67
refactor: Another small optimization pass (#350)
Making some small changes that would hopefully improve performance a bit.

- Remove redundant string generations for CPU data conversion
- Switch to fnv for PID hashmap and hashsets
- Use buffered reading to avoid having to store too many lines as strings
2020-12-11 19:54:02 -05:00
Clement Tsang 86135e466c
bug: Fix incorrect cpu colour matching again in all position (#349)
Turns out there was yet another bug with the CPU colour allocation. I had forgotten to use the same index calculation for the "all" position.
2020-12-11 16:14:17 -05:00
Clement Tsang fd003f84da
bug: Fix some performance regressions (#344)
Fixes some performance regressions and forgotten cleanup.

Changes to attempt to improve performance to match 0.4.x:

- Remove `trace!` and `--debug` for now.  These were a significant hog.  Removing this dropped initial memory usage by about half.
- Add additional cleaning step for `pid_mapping`  during process harvesting.  This should hopefully improve memory usage as time goes on.
- Slightly change how we do sorting to hopefully be a bit more optimal?  This was just an easy change to make that I spotted.
- Fix broken cleaning child thread task.
2020-12-10 22:29:25 -05:00
Clement Tsang ce020a7429
bug: Fix missing states in processes (#345)
Fixes another change breaking states from showing in processes.
2020-12-10 00:03:55 -05:00
Clement Tsang 19cdc269fb
refactor: Refactor some canvas code (#342) 2020-12-08 22:34:21 -05:00
Clement Tsang f4b8386063
refactor: Rename battery_harvester to batteries (#340) 2020-12-05 18:51:21 -05:00
Clement Tsang e56367fcbb
refactor: Clean up some parts of data harvesting (#336) 2020-12-03 23:45:54 -05:00
Clement Tsang 86169871cb
refactor: Simplify data harvesting (#335)
Refactors the data harvesting system function names.
2020-11-30 19:40:17 -05:00
Clement Tsang 3260ff4663
feature: Add scroll indicator to keep track of table position in widgets. (#333)
Adds the option to enable an "out of" indicator for scrollable table widgets (using --show_table_scroll_position).
2020-11-28 15:37:06 -05:00
Clement Tsang 41b8dd61d0
bug: Fix inverted battery colours (#331)
Fixes colour theming for batteries being flipped.
2020-11-26 19:14:27 -05:00
Clement Tsang a634934e3d
bug: Fix inverted hide_avg_cpu option in config (#327) 2020-11-25 20:30:16 -05:00
Clement Tsang 6aa0dd64a6
other: Switch to once_cell (#324)
Switch from lazy_static to once_cell.
2020-11-22 16:44:40 -05:00
ClementTsang 5abb1ce1a3 other: update default config.toml 2020-11-22 13:26:58 -05:00
ClementTsang 2d127f198e ci: uptick to 0.5.1, fix ci 2020-11-22 02:33:48 -05:00
ClementTsang e04ce4fa1b bug: [skip travis] Fix use_old_network_legend
This was caused by invalid widths being set for the maximal widths in
the table.  This made it impossible to draw.
2020-11-21 14:56:34 -05:00
ClementTsang 99d04029f0 bug: [skip travis] Add a better check for default colors in the config file 2020-11-21 14:49:44 -05:00
ClementTsang 6ef1d66b2b bug: [skip travis] remove nord from possible values 2020-11-20 22:43:28 -05:00
Clement Tsang 2ff8b418b2
feature: add tree flag (#312)
Adds a --tree flag that defaults to tree mode for the process widget.
2020-11-20 00:13:46 -05:00
Clement Tsang 5fedf8a5db
other: update gruvbox and some documentation (#310) 2020-11-19 23:32:57 -05:00
Clement Tsang 92636f3bf9
feature: Add mem_as_value flag (#309)
Adds a new flag, --mem_as_value (and its corresponding config option, mem_as_value = true), which defaults to showing process memory values by their amount rather than percentage.
2020-11-19 00:28:04 -05:00
Clement Tsang c0a8c347e1
bug: remove buggy auto-generated CPU colour implementation (#308)
Removes the random automatically generated colours for the CPU metrics. This was not supported in all terminal emulators, and would cause some of them to break (namely macOS Terminal).

Instead we'll default to colours we can be more certain will work and loop through them as required. Users can still override these colours with their own.
2020-11-18 20:00:31 -05:00
Clement Tsang 669b245367
feature: Add collapsible tree entries (#304)
Adds collapsible trees to the tree mode for processes. These can be toggled via the + or - keys and the mouse by clicking on a selected entry.
2020-11-18 01:28:53 -05:00
Clement Tsang e43456207b
feature: default colour schemes (#296)
Adds some default colour choices to choose from.
2020-11-15 05:16:47 -05:00
Clement Tsang 1d35e1c8b4
refactor: Better responsiveness when resizing cpu basic widget (#292)
Gives better and less jank responsiveness when resizing the window in narrow sizes for the cpu basic widget.
2020-11-02 23:41:57 -05:00
Clement Tsang e8358f8f47
bug: fix incorrect basic cpu spacing (#291)
Fixes a bug with CPU spacing on basic mode.
2020-11-02 22:39:02 -05:00
Clement Tsang 3d9c6b757f
bug: fix incorrect offset for cpu list in cpu basic widget (#289)
Fixes the CPU basic widget showing incorrect data due to an incorrect offset when displaying the data.
2020-11-02 20:59:54 -05:00
Clement Tsang 5df1764e90
bug: fix incorrect CPU colour offset (#290)
Fixes an incorrect offset affecting the CPU colour when scrolling.
2020-11-02 20:29:34 -05:00
Clement Tsang 465a433d0d
clippy: fix unwrap_or_else usage (#286)
Removes some unwrap_or_else calls when unwrap_or would suffice that were caught by clippy nightly.
2020-11-02 15:19:38 -05:00
Clement Tsang 309ebd8dc3
deps: switch from dirs to dirs-next (#285)
Addresses RUSTSEC-2020-0053.
2020-11-01 22:03:29 -05:00
Clement Tsang 05b39d29ae
feature: Add simple indicator for when data updating is frozen (#269) 2020-10-17 23:26:03 -04:00
Clement Tsang b8606c41b9
refactor: Remove redundant as_ref() calls (#268)
Minor refactor to remove redundant `as_ref()` calls.
2020-10-17 18:35:21 -04:00
Clement Tsang 914079868f
bug: Fix widget highlighting styling for dialogs (#266)
Fixes styling for dialog titles.  Cherry picked from commit 06573becfa3c089ac4b2a17c9443f84b6a5af3e8.
2020-10-13 02:45:01 -04:00
Clement Tsang 5675d8192c
other: more traces to debug, update some deps (#264)
Minor update to update some dependencies and remove some traces.
2020-10-02 22:12:07 -04:00
Clement Tsang ba7738e73e
bug: terminate threads, fix blocking poll in input (#262)
Bug fix for improper use of threads, where they were not properly terminated (not really too bad) and the input thread code actually blocked.
2020-10-02 02:49:45 -04:00
Clement Tsang a5b95ae8b2
bug: use cmdline for Linux proc name if >=15 chars (#261)
This was the cause of some process names getting cut off and looking weird for Linux (and Linux only, I'm not directly responsible for the other OSes).

This also adds spaces in between command line flags. Before, they were usually separated by either spaces (which looked fine) or null terminators (which meant it looked like something was broken).
2020-10-01 01:46:09 -04:00
Clement Tsang 5b33e8d6b4
Use tmp_dir rather than /tmp/ (#260)
Uses a less hard-coded method of writing to /tmp/.
2020-09-30 22:53:54 -04:00
Clement Tsang 9afb6d7c88
feature: add --debug flag for logging (#259)
Adds a `--debug` flag to aid in debugging issues.  This saves to `/tmp/bottom_debug.log`.
2020-09-30 22:06:57 -04:00
Clement Tsang 57e87d88d0
feature: Add persistent search settings (#257)
Adds persistent search settings across runs, by saving to the config file.  Each process widget keeps track of it's *own* behaviour.  The previous flags/options are now for *global* behaviour.

The following new behaviour is:
- Relevant flags: `--case_sensitive`, `--whole_word`, and `--regex`, will *override* the current widget's default behaviour.
- Relevant options: `case_sensitive`, `whole_word`, and `regex`, will also *override* the current widget's default behaviour.

As per before, if you set, say, `--case_sensitive`and `case_sensitive=true`, the flag always overrides.

Documentation updates will be done in #248.
2020-09-28 19:50:21 -04:00
ClementTsang fdd2d1b747 bug: fix basic mode arrows being slightly larger than intended 2020-09-26 21:49:28 -04:00
Clement Tsang 750d8f3cb7 refactor: tui-rs 0.11.0 refactor (#253)
Refactors tui-rs usage to the new 0.11.0 release. This release also fixes the highlighting bug from #249, and now, expanding a widget no longer overrides the widget title colour.

This commit also introduces #255, but that seems to be easy to bandaid so hopefully it will get fixed soon?
2020-09-26 20:21:59 -04:00
Clement Tsang 6db76029e2
feature: Beginnings of in-app config (#231)
Initial refactorings and additions to support in-app config.

- Refactor our current options logic to support in-app configs.  That is, we can write to a config file with our changes now.
- The default action when creating a new config file is to leave it blank. (TBD and for now, not sure on this one)
- Previously, we would set everything in a config file on startup; now we need to read from the config TOML struct whenever.
- `C` keybind is now occupied for configs.
- `no_write` option to never write to a config file.
2020-09-22 18:12:36 -04:00
Clement Tsang b0b174eb98
bug: Fix for index oob caused by terminal size mismatch (#238)
Fix for an index out-of-bounds by resizing to a smaller terminal just after the program got the terminal size, but right before the terminal started drawing.
2020-09-18 12:35:32 -04:00
Clement Tsang 86c8b474ae
feature: mouse support for tabs and dd dialog (#230) 2020-09-11 04:20:14 -04:00
Clement Tsang 0c21cba189
refactor: rename data harvesting fns to what archs/oses they support (#229)
Just a simple rename.
2020-09-09 23:30:09 -04:00
Clement Tsang c58b2c2bb9
refactor: rewrite column algorithm (#227)
Update how we position and generate column widths to look less terrible.  This also adds truncation w/ ellipsis to the columns, and for processes, the state will automatically shrink to a short form (just a character) if there isn't enough space.
2020-09-09 21:51:52 -04:00
Clement Tsang eb8295c430
feature: Adds tree view (#223)
Adds a tree process view to bottom.

Currently uses a pretty jank method of column width setting, should get fixed in #225.
2020-09-06 23:03:03 -04:00
Clement Tsang 0d8572c692
fix: Fixes count being sortable, but nothing occuring (#224)
Fixes sorting by count being available, but doing nothing. This fix makes it sortable.
2020-09-06 02:16:50 -04:00
ClementTsang cc87fa8e4a fix: Fix mouse detection not working on proc after closing search 2020-09-05 16:25:35 -04:00
ClementTsang 3843d63dbb bug: change heim io fn to not bail on any error 2020-09-03 03:18:18 -04:00
Clement Tsang cef3166cf8
feature: Add ability to filter out disks and temp (#220)
You can now filter out disks and temp sensors by name via config.
2020-09-02 22:02:49 -04:00
Clement Tsang a949073728
bug: fix being able to click widgets when dd-dialog was open (#219)
Fixes a bug where you could click on a widget when dd's dialog was open.
2020-09-02 05:00:01 -04:00
Clement Tsang 22278d7d75
other: aarch64 support (#217)
Adds theoretical aarch64 support.
2020-09-02 02:59:51 -04:00
ClementTsang 663ae6c5c2 bug: fix broken check from last commit, add tests 2020-09-01 03:08:46 -04:00
ClementTsang d24a797ce9 other: Add config error if default_widget_count is not used with default_widget_type 2020-09-01 00:29:46 -04:00
Clement Tsang a4ddd649e1
refactor: Update error messages w/ anyhow and thiserror (#216)
Refactoring and updating of error messages + tests to be more useful.
2020-08-31 23:59:33 -04:00
Clement Tsang 5ed573157c
bug: Use correct labels for sensors in Linux (#215)
Update temperature sensors in Linux to use labels + names rather than just names.
2020-08-31 20:02:48 -04:00
Clement Tsang 5aa7b4df08
docs: Update some arguments, and documentation (#214)
Some more updates to arguments and documentation.
2020-08-31 18:57:01 -04:00
Clement Tsang 3431411215
other: Add autocomplete file generation (#213)
Adds shell completion generation as part of the build, as well as tweaking install scripts/templates/CI to use them.
2020-08-31 17:50:21 -04:00
Clement Tsang 6632714f26
feature: Allow Ctrl-F and / to work in sort (#212)
Fixes a bug, and also allows `Ctrl-F` and `/` to work in the sort widget.
2020-08-29 19:23:20 -04:00
Clement Tsang 3d2fc76aa2
feature: Add mouse click support for moving between widgets (#208)
Adds mouse support to the application, to move between widgets and click on elements.

List of things to added:

- Click to move between widgets
- Click to move between widgets in basic mode
- Click on widget entries
- Ability to disable mouse if you don't like it, I guess
2020-08-29 18:54:18 -04:00
Clement Tsang b6363096b4
bug: fix bug where you could move down in basic proc when search was off (#211)
Fixes a bug where you could move down in a process widget even if search was disabled while in basic mode.
2020-08-29 04:06:21 -04:00
Clement Tsang 9a11e77aa0
feature: Adaptive network widget (#206)
Allows the network widget graph to grow/shrink with current data, rather than using a static size.
2020-08-28 16:30:24 -04:00
Clement Tsang 2425779e7f
bug: fix searching by command being broken (#204)
Fixes searching by command name being broken.
2020-08-26 20:29:55 -04:00
Clement Tsang 9158c5f6d5
bug: fix grouping being broken after refactor (#201)
Fixes grouping not working properly after some refactoring done in 0.4.6.
2020-08-25 03:36:29 -04:00
ClementTsang 93cf53e5d7 docs: Clarify description 2020-08-25 01:12:57 -04:00
Clement Tsang 7e8bf95179
uptick: 0.4.6 (#200) 2020-08-25 01:01:14 -04:00
Clement Tsang 3252796f17
change: Allow e to also close expanded widgets
Allow `e` to toggle expansion, rather than only allowing it to open.
2020-08-22 17:31:19 -04:00
Clement Tsang 1a25fbb987
bug: fix freezing not affecting processes during search and sort
Fixes a bug where searching refreshed process data even when frozen.
2020-08-22 17:23:27 -04:00
Clement Tsang 3394b9ee66
feature: allow searching by state, add more keyword variants
Allows searching by state (`state = sleep`), and adds more keyword variants for searching: `cpu%`, `mem%`, `r/s`, `w/s`, matching the columns.
2020-08-22 15:38:13 -04:00
Clement Tsang c82f4d40b4
feature: Support memb (mem bytes) searching in processes
Supports searching by the new mem value.
2020-08-21 22:59:49 -04:00
Clement Tsang ff15649be7
refactor: remove kill command, use libc
Removes the kill command call and instead uses libc to manage killing processes.
2020-08-21 18:16:37 -04:00
Clement Tsang 7475f24a4e
feature: Add hook to properly clean up in the case of a kill call
Adds a hook to properly clean up the program in case the program gets SIGTERM'd.
2020-08-21 16:00:14 -04:00
Clement Tsang 1dc9346d3b
refactor: Remove ps calls
Removes and refactor ps calls that... should have not been there in the first place.
2020-08-21 01:33:12 -04:00
Clement Tsang 4b03b4b0b0
refactor: Refactor code, add new tests
Refactor code so we use a lib, allowing for easier testing. Adds additional tests for layouts.
2020-08-19 16:32:33 -04:00
ClementTsang eb5ac54ad0 bug: fix not switching sort type when toggling % in mem 2020-08-17 15:52:09 -04:00
Clement Tsang 3c373d7129
feature: Add appox. total mem as an option for processes and basic mem
Adds a way to display the memory value as a column in the processes widget and the basic memory widget, rather than just the percentage.
2020-08-17 15:41:37 -04:00
Clement Tsang 59ce90f577
bug: Fix bug w/ parsing `/proc/{pid}/stats`
Fixes a bug caused by incorrectly reading the `/proc/{pid}/stats` file.  Due to splitting by whitespace, the string parsing was read incorrectly if the process also contained spaces.
2020-08-16 20:53:34 -04:00
Clement Tsang 08e49b63c1
refactor: Revert tui upgrade to 0.10
Reverts tui upgrade, there are some bugs and issues - namely, issues with rendering text.
We can revert this commit when those bugs are dealt with (should be fine after 0.10.1, tested building from the repo).
2020-08-16 04:25:59 -04:00
ClementTsang 9068108d0f bug: fix missing default battery layout during refactor 2020-08-16 03:08:09 -04:00
Clement Tsang d211c6474c
bug: Fix bug caused by hitting enter w/ a failed dd
This would cause the dd fields to get stuck due to never resetting.
2020-08-16 02:56:54 -04:00
Clement Tsang f3897f0538
feature: Allow sorting by any column
This feature allows any column to be sortable.

This also adds:
- Inverting sort for current column with `I`
- Invoking a sort widget with `s` or `F6`.  Close with same key or esc.

And:
- A bugfix in regards the basic menu and battery widget
- A lot of refactoring
2020-08-15 20:35:49 -04:00
ClementTsang 84f63f2f83 refactor: remove redundant newlines 2020-08-13 02:04:53 -04:00
Clement Tsang e1a7378386
change: Update macOS config dir
Update documentation and program to use the correct config directory as per the dirs package.
2020-08-12 02:15:57 -04:00
ClementTsang 6e38d73116 change: Refactor dd drawing code
This also slightly improves how we generate the widths/heights to be
less... terrible.

Note this is not done, unfortunately.  This requires tui-rs' wrapped
paragraph height PR to land and release so I can properly calculate the
height offsets.

See https://github.com/fdehau/tui-rs/pull/349 for details.
2020-08-12 00:27:02 -04:00
ClementTsang 60f4759494 change: Add WASD keys for widget selection movement 2020-08-11 21:19:55 -04:00
Clement Tsang d0cc6078df
deps: Update dependencies, drop MSRV
Update dependencies to most recent versions if applicable. Refactor to deal with breaking changes. Drop MSRV due to dependency issues, just support stable and later.
2020-08-11 20:22:39 -04:00
Clement Tsang 30bdaa6073
feature: add full command to process widget
This PR adds the ability to toggle between the process name and process path. Currently, this uses `P` as the modifier key.

Currently, the longer command names are dealt with by forcefully changing the width of the columns, but this can be handled in a more graceful manner IMO.
2020-08-07 04:29:20 -04:00
ClementTsang be6f824a43 clippy: clippy error due to redundant conversion
Fixes a redundant usize to usize conversion.
2020-07-06 02:36:24 -04:00
ClementTsang cef81d1b8d refactor: use fold to avoid clones in search for implied AND 2020-05-21 22:06:51 -04:00
ClementTsang c7edad91ed refactor: fix clippy error 2020-05-21 21:46:21 -04:00
ClementTsang b33ea11af2 bug: fix query not working for or, refactor a bit 2020-05-21 21:40:40 -04:00
ClementTsang 948c1206e9 chore: wrote better debugging printing for queries
This should make reading completed queries a bit easier for debugging
2020-05-21 16:55:51 -04:00
ClementTsang dcaef7ebc4 bug: fix incorrect parsing for process i/o calc
Cause was checking the wrong indices for values.  I thought I
had taken in a vector of strings that were just byte values,
but they actually contained the labels... oops.
2020-05-21 14:03:00 -04:00
Clement Tsang cf1d41c83a
feature: add back states to unmerged processes 2020-05-19 17:58:17 -04:00
ClementTsang e2e1ac3006 change: always highlight selected cpu 2020-05-18 23:36:58 -04:00
Clement Tsang e6379982f1
refactor: reduce unchecked type conversions to usize 2020-05-18 23:34:50 -04:00
Clement Tsang 12e4777d97
change: remove slash, change scroll behaviour on cpu
- Removal of the old slash-space-to-hide behaviour of CPU widget
- Scrolling onto a specific entry will only show that entry
- Showing average is now default
2020-05-16 22:38:19 -04:00
ClementTsang 2ae2ebd6d8 deps: update sysinfo 2020-05-14 22:22:29 -04:00
ClementTsang 549d61b836 bug: add extra check for process cpu value to be >= 0 2020-05-13 00:15:41 -04:00
ClementTsang a8ed838726 refactor: use a nicer match statement in one spot 2020-05-11 22:52:35 -04:00
ClementTsang ce563542ee force SWAP and RAM labels to show even if at 0 2020-05-11 22:48:37 -04:00
Clement Tsang 137e3cea5f
bug: disk displays nothing on if IO fails to match
Obvious on macOS.
2020-05-11 22:34:35 -04:00
Clement Tsang 7b5685bf44
refactor: remove redundant empty checks in graphs
Now that the fix for empty data is patched in tui, these checks are
redundant.
2020-05-11 01:32:39 -04:00
ClementTsang 56d6771d1b refactor: re-enable tui-rs linear interpolation 2020-05-10 17:01:45 -04:00
Clement Tsang 90272777f7
change: hide table gap if widget height is small 2020-05-09 16:23:15 -04:00
ClementTsang e6181d4aa4 change: hide time legend if window gets too small 2020-05-09 14:54:23 -04:00
ClementTsang b253d0153b change: reallow spaces to represent "and" 2020-05-08 15:34:46 -04:00
Clement Tsang a71d991695
refactor: avoid using max checks, use saturating_sub instead 2020-05-07 01:09:24 -04:00
ClementTsang 9152ba3281 docs: make process help text consistent with README 2020-05-05 18:57:38 -04:00
Kim Brose 095fb7e54e
Update constants.rs 2020-05-05 20:45:43 +02:00
ClementTsang 38f4967a8a bug/change: removed space as and for now 2020-05-04 23:44:33 -04:00
ClementTsang c8afe0d4f8 chore: support MSRV of 1.40.0 2020-05-04 17:45:11 -04:00
ClementTsang a56156a8f2 bug: swap 'and' and 'or' calls around for correct precedence 2020-05-04 00:27:21 -04:00
ClementTsang 2a32bbac3b change: separated search and process widgets again 2020-05-04 00:03:11 -04:00
ClementTsang 83a4a15cd5 bug: fix broken case if quotes surrounded paren 2020-05-03 00:54:33 -04:00
ClementTsang 0986b96056 bug: made the regex error one line in search 2020-05-03 00:08:18 -04:00
ClementTsang 73c16e259d docs: update with search details 2020-05-02 23:46:07 -04:00
ClementTsang 8307b06c56 bug: fix bug with multiple tokens 2020-05-02 21:50:35 -04:00
ClementTsang e12c2f5212 change: add byte units to search 2020-05-02 19:24:19 -04:00
ClementTsang 5e874eab77 refactor/bug: moved search logic; fix quoted words 2020-05-02 18:36:18 -04:00
ClementTsang ecc111b21a refactor: fix clippy errors 2020-05-02 17:39:48 -04:00
ClementTsang 6e81fbeebf change: more advanced searching and filtering 2020-05-02 16:01:07 -04:00
ClementTsang bb45763b39 feature: Add alt-h and alt-l to move left/right within widget 2020-04-30 15:29:36 -04:00
ClementTsang ecd5a003cf change: Use e key instead to maximize; rename to expand 2020-04-29 23:52:25 -04:00
ClementTsang edd5cff12d change: merge search and process widgets together 2020-04-29 23:43:49 -04:00
ClementTsang dacf8b1abb bug: fix broken basic table arrows on other widgets 2020-04-29 23:12:49 -04:00
ClementTsang 70779c078d docs: update help and README for bindings 2020-04-28 22:46:48 -04:00
Andy e850d3d2a8
Kill dialog: vim navigation (#134)
Add `hjkl` as navigation keys in kill dialog.

Closes #133
2020-04-28 17:43:15 -04:00
Clement Tsang 2faf3c6592
refactor: revert linear interpolation until tui fix comes 2020-04-28 16:44:10 -04:00
ClementTsang 78e3c37947 refactor: fix clippy errors 2020-04-27 16:40:45 -04:00
ClementTsang 15dba2e6cf bug: fix empty widget in layout 2020-04-27 16:20:36 -04:00
ClementTsang 8e4f6a3a02 feature: add battery flag 2020-04-27 15:56:39 -04:00
ClementTsang 8534d42f1b refactor: separate state to different file 2020-04-27 13:48:56 -04:00
ClementTsang e33dbbd350 clippy: remove redundant clone 2020-04-26 20:08:02 -04:00
ClementTsang 80548457f9 refactor: cleaned up some of the concurrent parts 2020-04-26 19:53:26 -04:00
Clement Tsang cf48561777
feature: add battery health percentage 2020-04-26 00:11:34 -04:00
Clement Tsang 3a6f7a6750
refactor: changed how we set help text on resize and init 2020-04-25 17:32:31 -04:00
Clement Tsang 863e780f2f
change: add scrolling to help menu 2020-04-24 19:17:58 -04:00
ClementTsang 9fe6e7d4d2 clippy: use suggested to_string and dereferencing 2020-04-23 15:51:35 -04:00
ClementTsang a6b48921ee refactor: hoist painter creation up to avoid having to clean if fail 2020-04-23 15:33:31 -04:00
ClementTsang 04e4c32aec refactor: update error messages and hex error detection 2020-04-23 15:33:13 -04:00
ClementTsang b1f86262f3 refactor: update error messages to be more uniform 2020-04-23 14:10:59 -04:00
ClementTsang 87dba602f9 fix: Fixes typo in config generation 2020-04-22 17:26:50 -04:00
ClementTsang 121370e9f4 docs: update default config 2020-04-22 17:19:36 -04:00
ClementTsang 25addaee63 chore: Add some words to VS Code dict 2020-04-22 17:13:05 -04:00