summaryrefslogtreecommitdiffstats
path: root/docs/content/usage/widgets/process.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/content/usage/widgets/process.md')
-rw-r--r--docs/content/usage/widgets/process.md227
1 files changed, 227 insertions, 0 deletions
diff --git a/docs/content/usage/widgets/process.md b/docs/content/usage/widgets/process.md
new file mode 100644
index 00000000..e48f6d57
--- /dev/null
+++ b/docs/content/usage/widgets/process.md
@@ -0,0 +1,227 @@
+# Process Widget
+
+The process widget displays a table containing information regarding a running process, along with sorting,
+searching, and process control features.
+
+<figure>
+ <img src="../../../assets/screenshots/process/process_default.png" alt="A picture of an expanded process widget by default."/>
+</figure>
+
+## Features
+
+The process widget has three main components:
+
+- The main process table
+- The search sub-widget (opened with ++ctrl+f++ or ++slash++)
+- The sort menu sub-widget (opened with ++s++ or ++f6++)
+
+By default, the main process table displays the following information for each process:
+
+- PID
+- Name of the process
+- CPU use percentage (note this is averaged out per available thread)
+- Memory use percentage
+- Reads per second
+- Writes per second
+- Total amount read
+- Total amount written
+- User
+- State
+
+### Sorting
+
+The table can be sorted by clicking on the table headers, which will either sort the table by that column, or if already
+sorting by that column, reverse the sorting order.
+
+Alternatively, one can sort using the sort menu sub-widget, which is brought up using ++s++ or ++f6++, and can be controlled by arrow keys or the mouse.
+
+<figure>
+ <img src="../../../assets/screenshots/process/process_sort_menu.png" alt="A picture of an expanded process widget with the sort menu open."/>
+</figure>
+
+### Grouping
+
+Pressing ++tab++ in the table will group entries with the same name together. The PID column will be replaced with the number of entries in each group, and usage
+is added together when displayed.
+
+<figure>
+ <img src="../../../assets/screenshots/process/process_grouped.png" alt="A picture of grouped mode in a process widget."/>
+</figure>
+
+Note that the process state and user columns are disabled in this mode.
+
+### Tree mode
+
+Pressing ++t++ or ++f5++ in the table toggles tree mode in the process widget, displaying processes in regards to their parent-child process relationships.
+
+<figure>
+ <img src="../../../assets/screenshots/process/process_tree.png" alt="A picture of tree mode in a process widget."/>
+</figure>
+
+A process in tree mode can also be "collapsed", hiding its children and any descendants, using either the ++minus++ or ++plus++ keys, or double clicking on an entry.
+
+Lastly, note that in tree mode, processes cannot be grouped together due to the behaviour of the two modes somewhat clashing.
+
+### Full command
+
+You can show the full command instead of just the process name by pressing ++P++.
+
+<figure>
+ <img src="../../../assets/screenshots/process/process_full.png" alt="A picture of a process widget using full commands."/>
+</figure>
+
+### Search
+
+Pressing ++slash++ or ++ctrl+f++ will open up the search sub-widget. By default, just typing in something will search by the process name.
+
+<figure>
+ <img src="../../../assets/screenshots/process/search/search.png" alt="A picture of searching for a process with a simple search."/>
+</figure>
+
+This search can be further enhanced by matching by case, matching the entire word, or by regex.
+
+<figure>
+ <img src="../../../assets/screenshots/process/search/regex.png" alt="A picture of searching for a process with a search condition that uses regex."/>
+</figure>
+
+We are able to also search for multiple things/conditions.
+
+<figure>
+ <img src="../../../assets/screenshots/process/search/or.png" alt="A picture of searching for a process with a search condition that uses the or operator."/>
+</figure>
+
+And if our search uses a keyword, we need to use quotation marks around the term to properly search it.
+
+<figure>
+ <img src="../../../assets/screenshots/process/search/quotes.png" alt="A picture of searching for a process with a search condition that needs quotation marks."/>
+</figure>
+
+Lastly, we can refine our search even further based on the other columns, like PID, CPU usage, etc., as well as grouping together conditions.
+
+<figure>
+ <img src="../../../assets/screenshots/process/search/cpu.png" alt="A picture of searching for a process with a search condition that uses the CPU keyword."/>
+</figure>
+
+#### Keywords
+
+Note all keywords are case-insensitive. To search for a process/command that collides with a keyword, surround the term with quotes (e.x. `"cpu"`).
+
+| Keywords | Example | Description |
+| ------------------------ | ------------------------------------- | ------------------------------------------------------------------------------- |
+| | `btm` | Matches by process or command name; supports regex |
+| `pid` | `pid=1044` | Matches by PID; supports regex |
+| `cpu` <br/> `cpu%` | `cpu > 0.5` | Matches the CPU column; supports comparison operators |
+| `memb` | `memb > 1000 b` | Matches the memory column in terms of bytes; supports comparison operators |
+| `mem` <br/> `mem%` | `mem < 0.5` | Matches the memory column in terms of percent; supports comparison operators |
+| `read` <br/> `r/s` | `read = 1 mb` | Matches the read/s column in terms of bytes; supports comparison operators |
+| `write` <br/> `w/s` | `write >= 1 kb` | Matches the write/s column in terms of bytes; supports comparison operators |
+| `tread` <br/> `t.read` | `tread <= 1024 gb` | Matches he total read column in terms of bytes; supports comparison operators |
+| `twrite` <br/> `t.write` | `twrite > 1024 tb` | Matches the total write column in terms of bytes; supports comparison operators |
+| `user` | `user=root` | Matches by user; supports regex |
+| `state` | `state=running` | Matches by state; supports regex |
+| `()` | `(<COND 1> AND <COND 2>) OR <COND 3>` | Group together a condition |
+
+#### Comparison operators
+
+| Keywords | Description |
+| -------- | -------------------------------------------------------------- |
+| `=` | Checks if the values are equal |
+| `>` | Checks if the left value is strictly greater than the right |
+| `<` | Checks if the left value is strictly less than the right |
+| `>=` | Checks if the left value is greater than or equal to the right |
+| `<=` | Checks if the left value is less than or equal to the right |
+
+#### Logical operators
+
+Note all operators are case-insensitive, and the `and` operator takes precedence over the `or` operator.
+
+| Keywords | Usage | Description |
+| ------------------------------------ | ------------------------------------------------------------------------------ | --------------------------------------------------- |
+| `and` <br/> `&&` <br/> `<Space>` | `<COND 1> and <COND 2>` <br/> `<COND 1> && <COND 2>` <br/> `<COND 1> <COND 2>` | Requires both conditions to be true to match |
+| `or` <br/> <code>&#124;&#124;</code> | `<COND 1> or <COND 2>` <br/> `<COND 1> &#124;&#124; <COND 2>` | Requires at least one condition to be true to match |
+
+#### Units
+
+All units are case-insensitive.
+
+| Keywords | Description |
+| -------- | ----------- |
+| `B` | Bytes |
+| `KB` | Kilobytes |
+| `MB` | Megabytes |
+| `GB` | Gigabytes |
+| `TB` | Terabytes |
+| `KiB` | Kibibytes |
+| `MiB` | Mebibytes |
+| `GiB` | Gibibytes |
+| `TiB` | Tebibytes |
+
+## Key bindings
+
+Note that key bindings are generally case-sensitive.
+
+### Process table
+
+| Binding | Action |
+| ---------------------- | ---------------------------------------------------------------- |
+| ++up++ , ++k++ | Move up within a widget |
+| ++down++ , ++j++ | Move down within a widget |
+| ++g+g++ , ++home++ | Jump to the first entry in the table |
+| ++G++ , ++end++ | Jump to the last entry in the table |
+| ++d+d++ | Send a kill signal to the selected process |
+| ++c++ | Sort by CPU usage, press again to reverse sorting order |
+| ++m++ | Sort by memory usage, press again to reverse sorting order |
+| ++p++ | Sort by PID name, press again to reverse sorting order |
+| ++n++ | Sort by process name, press again to reverse sorting order |
+| ++tab++ | Toggle grouping processes with the same name |
+| ++P++ | Toggle between showing the full command or just the process name |
+| ++ctrl+f++ , ++slash++ | Toggle showing the search sub-widget |
+| ++s++ , ++f6++ | Toggle showing the sort sub-widget |
+| ++I++ | Invert the current sort |
+| ++"%"++ | Toggle between values and percentages for memory usage |
+| ++t++ , ++f5++ | Toggle tree mode |
+
+### Sort sub-widget
+
+| Binding | Action |
+| ------------------ | ------------------------------------- |
+| ++up++ , ++k++ | Move up within a widget |
+| ++down++ , ++j++ | Move down within a widget |
+| ++g+g++ , ++home++ | Jump to the first entry in the table |
+| ++G++ , ++end++ | Jump to the last entry in the table |
+| ++esc++ | Close the sort sub-widget |
+| ++enter++ | Sorts the corresponding process table |
+
+### Search sub-widget
+
+| Binding | Action |
+| ------------------------------------- | -------------------------------------------- |
+| ++left++ <br/> ++h++ <br/> ++alt+h++ | Moves the cursor left |
+| ++right++ <br/> ++l++ <br/> ++alt+l++ | Moves the cursor right |
+| ++tab++ | Toggle between searching by PID or name |
+| ++esc++ | Close the search widget (retains the filter) |
+| ++ctrl+a++ | Skip to the start of the search query |
+| ++ctrl+e++ | Skip to the end of the search query |
+| ++ctrl+u++ | Clear the current search query |
+| ++ctrl+w++ | Delete a word behind the cursor |
+| ++ctrl+h++ | Delete the character behind the cursor |
+| ++backspace++ | Delete the character behind the cursor |
+| ++delete++ | Delete the character at the cursor |
+| ++alt+c++ , ++f1++ | Toggle matching case |
+| ++alt+w++ , ++f2++ | Toggle matching the entire word |
+| ++alt+r++ , ++f3++ | Toggle using regex |
+
+## Mouse bindings
+
+### Process table
+
+| Binding | Action |
+| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| ++"Scroll"++ | Selects a CPU thread/average to show in the graph |
+| ++lbutton++ | Table header: Sorts/reverse sorts the table by the column <br/> Table entry: Selects an entry in the table, if in tree mode, collapses/expands the entry's children |
+
+### Sort sub-widget
+
+| Binding | Action |
+| ----------- | ----------------------------- |
+| ++lbutton++ | Selects an entry in the table |