HTOP(1)
okay bestie, sit down, hydrate, and let's talk about HTOP(1) ๐ it lives in the User Commands corner of the manual, and it is literally the glow-up of top. no cap.
๐ธ NAME ๐ธ
pcp-htop โ interactive process viewer
โจ SYNOPSIS โจ
htop [-dCFhpustvH]
pcp-htop [-dCFhpustvH] [--host/-h host]
๐ DESCRIPTION ๐
htop is a cross-platform ncurses-based process viewer. periodt. ๐
It's giving top but with main character energy: it lets you scroll vertically and horizontally, and interact using a pointing device (mouse) ๐ฑ๏ธ. You can observe all processes running on the system, along with their command line arguments, and also view them in a tree format, select multiple processes and act on them all at once. obsessed. ๐ซถ
Tasks related to processes (killing, renicing) can be done without entering their PIDs โ yes bestie, no PID typing, we love that for us. โจ
pcp-htop is a version of htop built using the Performance Co-Pilot (PCP) Metrics API (see PCPIntro(1), PMAPI(3)), allowing to extend htop to display values from arbitrary metrics. See the section below titled CONFIG FILES for further details. ๐
๐ COMMAND-LINE OPTIONS ๐
Mandatory arguments to long options are mandatory for short options too. (yes, that is the real sentence, and yes, they meant it ๐)
-d,--delay=DELAYโ Delay between updates, in tenths of a second. If the delay value is less than 1, it is increased to 1, i.e. 1/10 second. If the delay value is greater than 100, it is decreased to 100, i.e. 10 seconds. so it clamps, it does not negotiate. ๐-C,--no-color,--no-colourโ Start htop in monochrome mode. for the minimalists and the aesthetically brave. ๐ค-F,--filter=FILTERโ Filter processes by terms matching the commands. The terms are matched case-insensitive and as fixed strings (not regexs). You can separate multiple terms with"|". ๐--no-function-barโ Hide the function bar.-h,--helpโ Display a help message and exit.-p,--pid=PID,PID...โ Show only the given PIDs.-s,--sort-key COLUMNโ Sort by this column (use--sort-key helpfor a column list). This will force a list view unless you specify-tat the same time. Sorting in tree mode applies to the direct children of each process.-u,--user[=USERNAME|UID]โ Show only the processes of a given user, or self if omitted.-U,--no-unicodeโ Do not use unicode but ASCII characters for graph meters.-M,--no-mouseโ Disable support of mouse control.--no-metersโ Hide graph meters.--readonlyโ Disable all system and process changing features. ๐-V,--versionโ Output version information and exit.-t,--tree[=MODE]โ Show processes in tree view. This can be used to force a tree view when requesting a sort order with-s. The optional MODE can be used to set the stable tree mode (0/classic ; 1/soft/stable ; 2/hard/STABLE). Soft mode will try to stabilize the current PID line visually on the screen. Hard mode will additionally allow to move the whole tree down, creating empty space above the root when necessary. ๐ณ-H,--highlight-changes=DELAYโ Highlight new and old processes.--drop-capabilities[=off|basic|strict]โ Linux only; this option needs to have been enabled at compile-time and requires libcap support at runtime. Drop unneeded Linux capabilities. In strict mode features like killing, changing process priorities and reading process delay accounting information will not work due to fewer capabilities being held. โ ๏ธ
fr fr, read that last one twice before you turn on strict and then wonder why nothing works. ๐
๐ฆ INTERACTIVE COMMANDS ๐ฆ
The following commands are supported while in htop:
Tab, Shift-Tab
Select the next / the previous screen tab to display. You can enable showing the screen tab names in the Setup screen (F2). โจ
Up, Alt-k
Select (highlight) the previous process in the process list. Scroll the list if necessary.
Down, Alt-j
Select (highlight) the next process in the process list. Scroll the list if necessary.
Left, Alt-h
Scroll the process list left.
Right, Alt-l
Scroll the process list right.
PgUp, PgDn
Scroll the process list up or down one window.
Home
Scroll to the top of the process list and select the first process.
End
Scroll to the bottom of the process list and select the last process.
Ctrl-A, ^
Scroll left to the beginning of the process entry (i.e. beginning of line).
Ctrl-E, $
Scroll right to the end of the process entry (i.e. end of line).
Shift-Up, Alt-Up
Pan the process list view up. The Shift-Up key combination is often grabbed by the terminal emulator for scrollback handling. You may need to change its keybindings if you want to free the key combination for htop. ๐ญ
Shift-Down, Alt-Down
Pan the process list view down. The Shift-Down key combination is often grabbed by the terminal emulator for scrollback handling. You may need to change its keybindings if you want to free the key combination for htop. ๐ญ
Space
Tag or untag a process. Commands that can operate on multiple processes, like "kill", will then apply over the list of tagged processes, instead of the currently highlighted one. ๐ท๏ธ
c
Tag the current process and its children. Commands that can operate on multiple processes, like "kill", will then apply over the list of tagged processes, instead of the currently highlighted one.
U
Untag all processes (remove all tags added with the Space or c keys).
s
Trace process system calls: if strace(1) is installed, pressing this key will attach it to the currently selected process, presenting a live update of system calls issued by the process. ๐
l
Display open files for a process: if lsof(1) is installed, pressing this key will display the list of file descriptors opened by the process.
w
Display the command line of the selected process in a separate screen, wrapped onto multiple lines as needed.
x
Display the active file locks of the selected process in a separate screen.
F1, h, ?
Go to the help screen. ๐
F2, S
Go to the setup screen, where you can configure the meters displayed at the top of the screen, set various display options, choose among color schemes, and select which columns are displayed, in which order. this is the decorate-your-room screen, lowkey the best one. ๐
F3, /
Incrementally search the command lines of all the displayed processes. The currently selected (highlighted) command will update as you type. While in search mode, pressing F3 will cycle through matching occurrences. Pressing Shift-F3 will cycle backwards.
Alternatively the search can be started by simply typing the command you are looking for, although for the first character normal key bindings take precedence. โก
F4, \
Incremental process filtering: type in part of a process command line and only processes whose names match will be shown. To cancel filtering, enter the Filter option again and press Esc. The matching is done case-insensitive. Terms are fixed strings (no regex). You can separate multiple terms with "|".
F5, t
Tree view: organize processes by parenthood, and layout the relations between them as a tree. Toggling the key will switch between tree and your previously selected sort view. Selecting a sort view will exit tree view. ๐ฒ
F6, <, >
Selects a field for sorting, also accessible through < and >. The current sort field is indicated by a highlight in the header.
F7, ]
Increase the selected process's priority (subtract from 'nice' value). This can only be done by the superuser. ๐
F8, [
Decrease the selected process's priority (add to 'nice' value).
Shift-F7, }
Increase the selected process's autogroup priority (subtract from autogroup 'nice' value). This can only be done by the superuser. ๐
Shift-F8, {
Decrease the selected process's autogroup priority (add to autogroup 'nice' value).
F9, k
"Kill" process: sends a signal which is selected in a menu, to one or a group of processes. If processes were tagged, sends the signal to all tagged processes. If none is tagged, sends to the currently selected process. ๐
F10, q
Quit. ๐ช
I
Invert the sort order: if sort order is increasing, switch to decreasing, and vice-versa. ๐
+, -, *
When in tree view mode, expand or collapse subtree. When a subtree is collapsed a "+" sign shows to the left of the process name. Pressing "*" will expand or collapse all children of PIDs without parents, so typically PID 1 (init) and PID 2 (kthreadd on Linux, if kernel threads are shown).
a (on multiprocessor machines)
Set CPU affinity: mark which CPUs a process is allowed to use. ๐
u
Show only processes owned by a specified user.
N
Sort by PID.
M
Sort by memory usage (top compatibility key).
P
Sort by processor usage (top compatibility key).
T
Sort by time (top compatibility key).
F
"Follow" process: if the sort order causes the currently selected process to move in the list, make the selection bar follow it. This is useful for monitoring a process: this way, you can keep a process always visible on screen. The behavior of the movement keys depends on the sticky follow setting. You can press Shift or Alt plus the Up and Down cursor keys to pan the view when following a process. When the sticky follow setting is enabled (the default), follow mode remains active until Shift+F is pressed again. If sticky follow is disabled, pressing movement keys like Up, Down, PgUp, and PgDn will end follow mode immediately, while Shift+Up and Shift+Down still pan without disabling follow. ๐
K
Hide kernel threads: prevent the threads belonging the kernel to be displayed in the process list. (This is a toggle key.)
H
Hide user threads: on systems that represent them differently than ordinary processes (such as recent NPTL-based systems), this can hide threads from userspace processes in the process list. (This is a toggle key.)
O
Hide containerized processes: prevent processes running in a container from being displayed in the process list. (This is a toggle key.) ๐ฆ
p
Show full paths to running programs, where applicable. (This is a toggle key.)
Z
Pause/resume process updates. โธ๏ธ
m
Merge exe, comm and cmdline, where applicable. (This is a toggle key.)
b
Show the backtrace of a process. (This feature requires enabling at compile time.)
Ctrl-L
Refresh: redraw screen and recalculate values. โจ
Numbers
PID search: type in process ID and the selection highlight will be moved to it. ๐ข
๐ COLUMNS ๐
okay bestie, this is the good part. these are all the columns that can show up and spill the tea about every process. ๐ซโจ
quick heads up before we dive in: if a column shows - in, like, every single row, that means it's either not supported on your system or htop just hasn't implemented it yet. no drama, it's just not that girl on your machine. ๐
also, the names listed below are the ones you'll see in the "Available Columns" section of the setup screen. and if htop's main screen shows a different name for something, we've put that other name in parentheses right after. iykyk. ๐
๐ฆ Command
the full command line of the process โ like, the program name and all its arguments. the whole receipt. ๐งพ
if the option 'Merge exe, comm and cmdline in Command' is active (you toggle it with the 'm' key, bestie), then the executable path (/proc/[pid]/exe) and the command name (/proc/[pid]/comm) get shown merged in with the command line too, if they're available. slay. ๐
the program basename gets highlighted if you set that up in the configuration. and you can configure additional highlighting for stale executables too (go peek at the EXE column below, it explains). ๐
ngl, Command should be the last column on each screen, because it can get SO long and it thrives on being able to stretch its length dynamically. let it be the main character. ๐
extra color highlighting, because we love a color story:
- Magenta: regular process command names
- Bold blue: userland thread names
- Bold gray: kernel threads, or processes with no command name
๐ COMM
the command name of the process, grabbed from /proc/[pid]/comm, if it's readable.
requires Linux kernel 2.6.33 or newer. old kernels, this one's not for you sorry. ๐ญ
๐ EXE
the abbreviated basename of the process's executable, pulled from /proc/[pid]/exe, if it's readable. on linux, htop can only read this file for ALL the processes if it has the capability CAP_SYS_PTRACE or root privileges. so like, permissions check, periodt. โ
the basename gets marked in red if the executable that was used to run the process has been replaced or deleted on disk since the process started. that info comes from processing the contents of /proc/[pid]/exe. ๐
also, the basename gets marked in yellow if any library is reported as having been replaced or deleted on disk since it was last loaded. that info comes from processing the contents of /proc/[pid]/maps.
and when it's deciding the color? replacement of the main executable always takes precedence over replacement of any other library. so if it's only the memory map that indicates the main executable got replaced, it'll show up looking like any other library got replaced or deleted instead. sneaky. ๐
this extra color markup is configurable in the "Display Options" section of the setup screen.
displaying EXE requiresCAP_SYS_PTRACEandPTRACE_MODE_READ_FSCRED.
๐ธ PID
the process ID. the government name. ๐ชช
๐ STATE (S)
the state of the process, and it's giving alphabet soup:
Sfor sleepingIfor idle (longer inactivity than sleeping, on platforms that even distinguish between the two)Rfor runningDfor disk sleep (uninterruptible)Zfor zombie (waiting for its parent to read its exit status)Tfor traced or suspended (e.g bySIGTSTP)Wfor paging
โญ PPID
the parent process ID. who made you. ๐ถ
๐ PGRP
the process's group ID.
๐ฆ SESSION (SID)
the process's session ID.
๐ TTY
the controlling terminal of the process.
๐ TPGID
the process ID of the foreground process group of the controlling terminal.
โจ MINFLT
the number of page faults happening in the main memory.
๐ CMINFLT
the number of minor faults for the process's waited-for children (see MINFLT above, bestie).
๐ธ MAJFLT
the number of page faults happening out of the main memory.
๐ CMAJFLT
the number of major faults for the process's waited-for children (see MAJFLT above).
๐ง UTIME (UTIME+)
the user CPU time โ that's the amount of time the process has spent executing on the CPU in user mode (i.e. everything except system calls), measured in clock ticks. โฑ๏ธ
๐ STIME (STIME+)
the system CPU time โ the amount of time the kernel has spent executing system calls on behalf of the process, measured in clock ticks.
๐ CUTIME (CUTIME+)
the children's user CPU time โ the amount of time the process's waited-for children have spent executing in user mode (see UTIME above).
โญ CSTIME (CSTIME+)
the children's system CPU time โ the amount of time the kernel has spent executing system calls on behalf of all the process's waited-for children (see STIME above).
๐ PRIORITY (PRI)
the kernel's internal priority for the process โ usually just its nice value plus twenty. it's different for real-time processes though, so don't come for it.
๐ฆ NICE (NI)
the nice value of a process, from 19 (low priority) to -20 (high priority). a high value means the process is being nice, letting others have a higher relative priority. and yeah, the usual OS permission restrictions for adjusting priority still apply, no skipping the line. ๐ซ
๐ STARTTIME (START)
the time the process was started. its birthday. ๐
๐ธ PROCESSOR (CPU)
the ID of the CPU the process last executed on.
โจ M_VIRT (VIRT)
the size of the virtual memory of the process.
๐ M_RESIDENT (RES)
the resident set size (text + data + stack) of the process โ i.e. the size of the process's used physical memory.
๐ M_SHARE (SHR)
the size of the process's shared pages.
๐ M_PRIV (PRIV)
the private memory size of the process โ i.e. the resident set size minus the shared memory size.
๐ M_TRS (CODE)
the text resident set size of the process โ i.e. the size of the process's executable instructions.
๐ง M_DRS (DATA)
the data resident set size (data + stack) of the process โ i.e. the size of anything except the process's executable instructions.
โญ M_LRS (LIB)
the library size of the process.
๐ฆ M_SWAP (SWAP)
the size of the process's swapped pages.
๐ M_PSS (PSS)
the proportional set size โ same as M_RESIDENT but every page gets divided by the number of processes sharing it. sharing is caring, math is math. ๐งฎ
๐ M_M_PSSWP (PSSWP)
the proportional swap share of this mapping. unlike M_SWAP, this one does not take into account swapped out pages of underlying shmem objects.
๐ธ M_EPSS (EPSS)
the effective proportional set size of the process โ that's the proportional set size plus the proportional swap share. and just like M_PSSWP, the swap part doesn't take into account swapped out pages of underlying shmem objects.
โจ ST_UID (UID)
the user ID of the process owner.
๐ PERCENT_CPU (CPU%)
the percentage of the CPU time that the process is currently using. this is the default way to represent CPU usage in Linux. each process can consume up to 100%, which means the full capacity of the core it's running on. you'll sometimes hear this called "Irix mode", e.g. in top(1). ๐ฅ
๐ PERCENT_NORM_CPU (NCPU%)
the percentage of the CPU time that the process is currently using, but normalized by CPU count. this one's sometimes called "Solaris mode", e.g. in top(1).
๐ PERCENT_MEM (MEM%)
the percentage of memory the process is currently using โ calculated from the process's resident memory size, see M_RESIDENT above.
๐ USER
the username of the process owner, or the user ID if the name can't be figured out. mystery user. ๐ต๏ธ
on Linux, the username gets highlighted if the process has elevated privileges โ like, if it was started from binaries with file capabilities set, or retained Linux capabilities via the ambient set, after switching from the root user.
extra color highlighting:
- Magenta: elevated privilege processes
- Bold gray: processes owned by other users
- White (default): processes owned by the current user
๐ง TIME (TIME+)
the time, measured in clock ticks, that the process has spent in user and system time (see UTIME and STIME above).
โญ NLWP
the number of Light-Weight Processes (= threads) in the process. multitasking queen. ๐
๐ฆ TGID
the thread group ID.
๐ RCHAR (RD_CHAR)
the number of bytes the process has read.
๐ WCHAR (WR_CHAR)
the number of bytes the process has written.
๐ธ SYSCR (RD_SYSC)
the number of read(2) syscalls for the process.
โจ SYSCW (WR_SYSC)
the number of write(2) syscalls for the process.
๐ RBYTES (IO_RBYTES)
bytes of read(2) I/O for the process.
๐ WBYTES (IO_WBYTES)
bytes of write(2) I/O for the process.
๐ CNCLWB (IO_CANCEL)
bytes of cancelled write(2) I/O. the ghosted writes. ๐ป
๐ IO_READ_RATE (DISK READ)
the I/O rate of read(2) in bytes per second, for the process.
๐ง IO_WRITE_RATE (DISK WRITE)
the I/O rate of write(2) in bytes per second, for the process.
โญ IO_RATE (DISK R/W)
the I/O rate โ that's IO_READ_RATE + IO_WRITE_RATE (see above). math but make it disk. ๐พ
๐ฆ CGROUP
which cgroup the process is in. want the short version? go see the CCGROUP column right below. โ๏ธ
๐ CCGROUP
a shortened view of the cgroup name the process is in. it does some pattern-based replacements to shorten the displayed string and condense the info. here's the whole recipe:
/*.sliceis shortened to/[*](exceptions below)/system.sliceis shortened to/[S]/user.sliceis shortened to/[U]/user-*.sliceis shortened to/[U:*](a directly preceding/[U]gets dropped before this)/machine.sliceis shortened to/[M]/machine-*.scopeis shortened to/[SNC:*](SNC: systemd nspawn container), uppercase for the monitor/lxc.monitor.*is shortened to/[LXC:*]/lxc.payload.*is shortened to/[lxc:*]/*.scopeis shortened to/!*/*.serviceis shortened to/*(suffix removed)
and fyi: any escape sequences (e.g. from systemd) encountered inside the cgroup name are not decoded. no translation services here. ๐
๐ OOM
OOM killer score. stay on its good side. ๐ฌ
๐ธ CTXT
incremental sum of voluntary and nonvoluntary context switches.
โจ IO_PRIORITY (IO)
the I/O scheduling class, followed by the priority if that class even supports it:
Rfor RealtimeBfor Best-effortidfor Idle
๐ PERCENT_CPU_DELAY (CPUD%)
the percentage of time spent waiting for a CPU (while runnable).
requires CAP_NET_ADMIN.
๐ PERCENT_IO_DELAY (IOD%)
the percentage of time spent waiting for the completion of synchronous block I/O.
requires CAP_NET_ADMIN.
๐ PERCENT_SWAP_DELAY (SWAPD%)
the percentage of time spent swapping in pages.
requires CAP_NET_ADMIN.
๐ AGRP
the autogroup identifier for the process.
requires Linux CFS to be enabled.
๐ง ANI
the autogroup nice value for the process autogroup.
requires Linux CFS to be enabled.
โญ All other flags
currently unsupported โ always displays -. it's not ignoring you, it just literally can't. ๐ญ
๐ EXTERNAL LIBRARIES ๐
okay so htop links against basically all its libraries at build time, right? but bestie, there are three messy exceptions to that rule and they're all about the meters up in the header. They were intentionally built as optional runtime deps instead. Let's go through them one by one, no skipping ๐ซถ
libsystemd
The bindings for libsystemd get used in the SystemD meter to figure out how many services are active and what the overall system state is. The trick is that htop looks for these functions at runtime, so builds can totally support these meters without forcing the package manager to drag these libraries onto systems that don't even use systemd. iconic behavior honestly.
Summary: no build time dependency, optional runtime dependency on libsystemd via dynamic loading, with systemctl(1) fallback.
libsensors
The libsensors bindings are what power the CPU temperature readings in the CPU usage meters โ but only if you've turned temperature display on through the setup screen. For htop to show these temps correctly, it assumes a proper configuration of libsensors through its usual config files, and that all your CPU cores line up with temperature sensors from the coretemp driver, with core 0 matching a sensor labelled "Core 0". The package temperature may show up as "Package id 0". And if it's missing? It gets inferred as the maximum value from the per-core readings you do have. ๐
Summary: build time dependency on libsensors(3) C header files, optional runtime dependency on libsensors(3) via dynamic loading.
libnl-3 / libnl-genl-3
The bindings for libnl-3 and libnl-genl-3 (those are the Netlink socket libraries, iykyk) get used to collect delay accounting data when the delay accounting columns are enabled โ think PERCENT_CPU_DELAY, PERCENT_IO_DELAY, PERCENT_SWAP_DELAY. Support for these columns has to be compiled in with the --enable-delayacct configure flag, so it's not just magically there.
Summary: build time dependency on libnl-3 and libnl-genl-3 C header files (when built with --enable-delayacct), optional runtime dependency on libnl-3-200 and libnl-genl-3-200 via dynamic loading.
๐ CONFIG FILES ๐
By default, htop reads its configuration from the XDG-compliant path ~/.config/htop/htoprc. And bestie, listen โ that file gets overwritten on a clean exit by htop's in-program Setup configuration. So like. do NOT hand-edit it. It's not yours anymore, it belongs to Setup. ๐ญ
If no user configuration exists, htop tries to read the system-wide configuration from /etc/pcp/htoprc, and as a total last resort it falls back to its hard coded defaults.
You can override where the config file lives using the $HTOPRC environment variable โ which slays if you want multiple configurations for different machines that share the same home directory, for example. โจ
The pcp-htop utility makes use of htoprc in a similar way. However โ different vibe โ pcp-htop reads its configuration from a path more conventionally used by Performance Co-Pilot tools: ~/.pcp/htop/htoprc. That way you get separate configuration when both htop and pcp-htop are installed and in use. pcp-htop also supports additional configuration files below that same directory, which let new meters, columns and screen tabs be added via the Setup screen (F2). This displays additional Available Meters, Available Column and Screen Tabs for each meter, column or screen configuration file. ๐ฆ
These pcp-htop configuration files are read once at startup. The format of these files is described in detail in the pcp-htop(5) manual page.
This functionality makes available many thousands of Performance Co-Pilot metrics for display by pcp-htop, plus the ability to display custom metrics added at individual sites. Applications and services instrumented using the OpenMetrics format https://openmetrics.io can also be displayed by pcp-htop if the pmdaopenmetrics(1) component is configured. so many metrics. so little screen. ๐
โ ๏ธ The configuration for bothhtopandpcp-htopis only saved when a clean exit is performed. Sending any signal will cause all configuration changes to be lost. So don't be out here killing htop and then crying about your lost setup. ๐
๐ MEMORY SIZES ๐
Memory sizes in htop are displayed in a human-readable form, because obviously. Sizes are printed in powers of 1024 using binary IEC units. And if no suffix is shown, the units are implicitly K as in KiB (kibibyte, 1 KiB = 1024 bytes).
The decision to use this convention was made in order to conserve screen space and make memory size representations consistent throughout htop, since allocations are granular to full memory pages (4 KiB for most platforms). consistent queen. ๐
๐ SEE ALSO ๐
proc(5), top(1), free(1), ps(1), uptime(1) and limits.conf(5).
๐ธ SEE ALSO FOR PCP ๐ธ
pmdaopenmetrics(1), PCPIntro(1), PMAPI(3), and pcp-htop(5).
๐ซถ AUTHORS ๐ซถ
htop was originally developed by Hisham Muhammad. Nowadays it is maintained by the community at <htop@groups.io>.
pcp-htop is maintained as a collaboration between the <htop@groups.io> and <pcp@groups.io> communities, and forms part of the Performance Co-Pilot suite of tools.
๐ COPYRIGHT ๐
Copyright ยฉ 2004-2019 Hisham Muhammad. Copyright ยฉ 2020-2026 htop dev team.
License GPLv2+: GNU General Public License version 2 or, at your option, any later version.
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
and that's the whole page bestie!! ๐ this lil edition is brought to you by the Performance Co-Pilot crew, dated 2026, filed under HTOP(1) โ go forth and monitor your processes with main character energy ๐โจ๐ธ
๐ฆ where this page comes from
- arch rolling: pcp 7.2.2-2 ยท GPL-2.0-or-later AND LGPL-2.1-or-later AND CC-BY-3.0
- fedora 43: pcp-htop 7.2.1-1.fc43
- fedora 43: pcp-htop 7.2.2-1.fc43
- fedora 43: pcp-htop 7.2.2-2.fc43 ยท GPL-2.0-or-later
- fedora 44: pcp-htop 7.2.1-1.fc44
- fedora 44: pcp-htop 7.2.2-1.fc44
- fedora 44: pcp-htop 7.2.2-2.fc44 ยท GPL-2.0-or-later
- ubuntu stonking: pcp-htop 7.2.1-2build1
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms