Skip to content

Support "dense" CPU widget in basic mode #2078

Description

@silverneko

Checklist

Describe the feature request

Right now basic mode always prints 4 CPU per row even when there is plenty of horizontal space. This is problematic on servers with higher CPU count. For example I was working on a machine with 100+ cores, and bottom can only show the first 96 cores, and then just truncates the rest.

It's probably easier to understand by looking at screenshot:

Image

Not only is the horizontal space not utilized well, but a lot of vertical space is also eaten, and I end up only seeing 4 rows of the "process" table. Making it very unusable.

For comparison, htop prints CPUs in much denser (but arguably unreadable) format. But it takes up much less rows, while not truncating any CPU entries, and still leave plenty of space below for the "processes table"
Image

Activity

  1. silverneko commented on May 27, 2026

    @silverneko
    Author

    We could improve bottom's format, by printing more CPUs per row. Either make it auto scale or a user option?

    max_cpus_per_row (default to 4, but could be increased to an arbitrary number)

    Alternatively, make the upper "CPU widget" not take up so much vertical space. Make it collapsible or scrollable when it execeeds 40% of the viewport height?

  2. ClementTsang commented on May 27, 2026

    @ClementTsang
    Owner

    Hm, yeah, I guess it doesn't work as well for that many cores (admittedly I don't have anything like this so never really thought about it). Definitely can look at improving this, I guess making it auto-scale would be nice, with a user option to override?

  3. silverneko commented on May 28, 2026

    @silverneko
    Author

    Yeah it's a bit excessive. I was too dumbfounded with the sheer number of cores when I first started using this machine. But I guess it's slowly becoming the norm for cloud servers/workstations to easily go 100+ vCPUs. Imagine a double CPU motherboard config, with each CPU having 32 cores with 2 virtual threads per core, so 2 x 32 x 2 = 128. So I think this feature has real usefulness for people monitoring servers.

    I agree auto scale (with op-out or opt-in) is the most flexible to the user, but also the more complex approach. We need to strike the best balance between height and width? So some heuristic algorithm to optimize compactness.

    How about:

    1. 1~16 CPUs => 4 CPUs per row
    2. 17~32 CPUs => 8 CPUs per row (so we keep the total rows under 4)
    3. 33~64 CPUs => 8 CPUs per row (since 16 CPUs per row can be unreadable, we keep it at 8 CPUs per row, and we shouldn't exceed 8 total rows)
    4. more than 64 CPUs => 16 CPUs per row (so we keep total rows under 8)
    5. more than 128 CPUs => I don't know... maybe just provide a key to maximize / minimize the CPUs panel?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureRequests for a new feature.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions