Skip to content

Process list in columns, with headings that sort - #13

Merged
Lakr233 merged 1 commit into
mainfrom
issue-8-process-columns
Sep 25, 2026
Merged

Lakr233 merged 1 commit into
mainfrom
issue-8-process-columns

Conversation

@Lakr233

@Lakr233 Lakr233 commented Sep 25, 2026

Copy link
Copy Markdown
Collaborator

The list read as a stack of sentences: a name, then "PID · user · N threads"
under it, with CPU and memory piled at the right edge. Fine for finding one
process, useless for the thing a process viewer is for — running an eye down
the whole system and seeing which one is misbehaving.

Each row is now one line: icon and name, then PID, CPU, memory and threads,
each right-aligned in a column. A column is as wide as the widest figure it
can hold at the current text size, measured once in ProcessListMetrics and
shared by every row and the headings, so figures line up whatever the row
holds. The headings take their edges from a laid-out row rather than their
own margins, so they sit over the figures wherever the table puts the
header. Where a row is too narrow, threads go first, then PID; CPU always
stays. At the accessibility text sizes the figures stack under the name.

CPU shows orange from half a core and red from nine tenths, so a process
spinning a core stands out; idle stays secondary. The user moves off the row
(it is in the details and VoiceOver still reads it), and so does the
disclosure chevron, which cost the name column its width.

A heading sorts by its column, tinted with an arrow like a detail table's.
Threads is a new sort order to match. Rows are laid out by hand at a fixed
height, so a live sample only sets text, and the table never measures a row.

German "Memory" becomes "Speicher", as Activity Monitor has it:
"Arbeitsspeicher" was wider than any figure under it.

Fixes #8

🤖 Generated with Claude Code

The list read as a stack of sentences: a name, then "PID · user · N threads"
under it, with CPU and memory piled at the right edge. Fine for finding one
process, useless for the thing a process viewer is for — running an eye down
the whole system and seeing which one is misbehaving.

Each row is now one line: icon and name, then PID, CPU, memory and threads,
each right-aligned in a column. A column is as wide as the widest figure it
can hold at the current text size, measured once in ProcessListMetrics and
shared by every row and the headings, so figures line up whatever the row
holds. The headings take their edges from a laid-out row rather than their
own margins, so they sit over the figures wherever the table puts the
header. Where a row is too narrow, threads go first, then PID; CPU always
stays. At the accessibility text sizes the figures stack under the name.

CPU shows orange from half a core and red from nine tenths, so a process
spinning a core stands out; idle stays secondary. The user moves off the row
(it is in the details and VoiceOver still reads it), and so does the
disclosure chevron, which cost the name column its width.

A heading sorts by its column, tinted with an arrow like a detail table's.
Threads is a new sort order to match. Rows are laid out by hand at a fixed
height, so a live sample only sets text, and the table never measures a row.

German "Memory" becomes "Speicher", as Activity Monitor has it:
"Arbeitsspeicher" was wider than any figure under it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Lakr233
Lakr233 merged commit 9a46349 into main Sep 25, 2026
1 check passed
@Lakr233
Lakr233 deleted the issue-8-process-columns branch September 25, 2026 13:17
@Lakr233 Lakr233 mentioned this pull request Sep 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

主列表显示优化

1 participant