Skip to content

procs prints an extra blank line between each process row (TTY output double-spaced) #848

@Salvodif

Description

@Salvodif

When running procs in my terminal, the table output is “double-spaced”: after every process row, there is an additional empty line. This happens consistently and makes the output hard to read.

Other commands like seq, ls, etc. do not show double spacing, so it seems specific to procs (or to how procs interacts with my terminal/TTY).

I’m on Arch Linux and using the fish shell.

Environment
OS: Arch Linux

─────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
     │ File: /etc/os-release
─────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1 │ NAME="Arch Linux"
   2 │ PRETTY_NAME="Arch Linux"
   3 │ ID=arch
   4 │ BUILD_ID=rolling
   5 │ ANSI_COLOR="38;2;23;147;209"

Kernel: Linux Glamdring 6.18.1-arch1-2 #1 SMP PREEMPT_DYNAMIC Sat, 13 Dec 2025 18:23:21 +0000 x86_64 GNU/Linux

Shell: fish, version 4.2.1

Terminal emulator: gnome-terminal

echo $TERM: xterm-256color

Terminal width "tput cols": 238

procs version: 0.14.10

Steps to reproduce

Open a terminal (interactive TTY).

Run: procs

Observe that each row is separated by an extra blank line.

Expected behavior

A compact table with one line per process (no empty line between rows).

Actual behavior

Each process row is followed by an empty line (double-spaced output):

 PID:▲ User             │ TTY    CPU MEM CPU Time │ Command                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
                                                                                                         
                        │        [%] [%]          │                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
                                                                                                       
 1     root             │        0.0 0.0 00:00:01 │ /sbin/init                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
                                                                                             
 2     root             │        0.0 0.0 00:00:00 │ [kthreadd]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
                                                                                             
 3     root             │        0.0 0.0 00:00:00 │ [pool_workqueue_release]                              

Troubleshooting / What I tried

  1. Verified it’s not global terminal line spacing
    seq prints normally (no blank lines):
    seq 1 5

  2. Verified it’s not caused by procs config files
    I ran procs with an empty config directory via XDG_CONFIG_HOME (fish syntax):

set -l tmp (mktemp -d)
env XDG_CONFIG_HOME=$tmp procs
rm -rf $tmp

The double-spacing persists.
3) Checked TTY/stty newline translation flags

stty -a shows (relevant excerpt):
opost -olcuc -ocrnl onlcr -onocr ...

So ocrnl is disabled (-ocrnl). This suggests it’s not the classic CRLF/ocrnl “extra newline” issue.

  1. Attempted to avoid right-margin wrapping by forcing a smaller COLUMNS
    This reduced some formatting issues, but the blank line still appears:

env COLUMNS=(math (tput cols) - 3) procs

  1. Notes about my shell aliases
    In my fish setup, cat is aliased to bat, so for debugging I used tools like sed -n '1,3l' instead of cat -v.
    This aliasing should not affect procs output directly, but I’m mentioning it for completeness.

Additional debugging info

stty -a:

speed 38400 baud; rows 55; columns 238; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -ixon -ixoff -iuclc -ixany imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc

Output of a “show invisible characters” pipeline such as:

procs | head -n 5 | sed -n '1,5l'                                                                                                                                                                                 PID:\342\226\262 User             \342\224\202 TTY    CPU MEM CPU Ti\
me \342\224\202 Command$
                        \342\224\202        [%] [%]          \342\224\
\202$
 1     root             \342\224\202        0.0 0.0 00:00:01 \342\224\
\202 /sbin/init$
 2     root             \342\224\202        0.0 0.0 00:00:00 \342\224\
\202 [kthreadd]$
 3     root             \342\224\202        0.0 0.0 00:00:00 \342\224\
\202 [pool_workqueue_release]$

Question

Is this a known issue related to terminal wrapping/terminfo handling (e.g., last-column wrap), or does procs intentionally insert extra newlines under certain conditions? Any suggested flags/config to force single-line rows?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions