Skip to content

processlist: search every process, not just the top 100 by cpu - #3763

Merged
purian23 merged 2 commits into
AvengeMedia:masterfrom
Mario-Mohar:fix/process-search-full-list
Oct 12, 2026
Merged

purian23 merged 2 commits into
AvengeMedia:masterfrom
Mario-Mohar:fix/process-search-full-list

Conversation

@Mario-Mohar

Copy link
Copy Markdown
Contributor

Description

The process list searches DgopService.allProcesses, but dgop is asked for only the top 100 processes sorted by CPU. On a normal system with a few hundred processes, idle ones (0% CPU) fall in and out of that set on every refresh. So a search for an idle process shows it, then "No matching processes", then only some of the matches, depending on the refresh. That is the unstable list from the report.

While a process list has search text, it now asks dgop for every process (limit: 0, which dgop treats as no limit) and refreshes right away. Without a search nothing changes, the polling keeps limit: 100. The request is reference counted in DgopService (requestFullProcessList / releaseFullProcessList), so the popout and the modal can both use it, and ProcessesView releases it when the search is cleared, the view goes inactive or it is destroyed.

Reproduced on master in a nested Hyprland session: three idle processes named metrolist, search "metrolist", 332 processes on the machine. Captures every 2.5 s:

before after
before after

Before: "No matching processes", 2 of 3, a different match, 1 of 3, changing with every refresh. After: all three in every capture over 20 s. Killing one of them while searching removes it right away and keeps the other two.

Type of change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that changes existing behavior)
  • Refactor / internal cleanup
  • Documentation
  • Other

Related issues

Fixes #3641

Screenshots / video

See the table above.

Checklist

  • My code follows the conventions in CONTRIBUTING.md
  • I have tested my changes locally
  • New user-facing strings are wrapped in I18n.tr() with translator context, reusing existing terms where possible (no new strings)
  • Go changes: ran make fmt, added/updated tests, make test passes, and go mod tidy is clean (no Go changes)
  • QML changes: ran make lint-qml with no new warnings
  • I have opened a corresponding pull request in dlx-docs to document any new behaviors: https://github.com/AvengeMedia/DankLinux-Docs (no new behavior to document)

New tests/dgop-process-search.test.mjs pulls buildMetaParams, requestFullProcessList and releaseFullProcessList out of the service: limit 100 without a search, 0 while one is held, back to 100 after the last release. It fails on master. All 316 node tests pass.

@purian23

purian23 commented Oct 12, 2026 •

Copy link
Copy Markdown
Collaborator

@Mario-Mohar, have you been reading my feedback? This is the third time in a row I've asked that, if you'd like to work on an issue, you self-assign it first or just push in hopes it's clear.

We appreciate your willingness to contribute, but DMS is built & maintained by BB and myself. If you self-assign an issue, there's no need to tag only BB each time, as either of us may already be aware of it or actively working on it.

The problem with the current approach is that when you ping only one of us, the other may already be implementing the fix. In several cases, you've also announced that you're working on something that was already nearly complete internally, and the corresponding PR has arrived shortly afterward.

Self-assigning first helps avoid duplicated effort, makes ownership clear, and gives everyone visibility into who's actively working on what. Please make sure you're following that process going forward.

screenshot_2026-10-12_00-20-52

@Mario-Mohar

Copy link
Copy Markdown
Contributor Author

Sorry, I missed your earlier notes, that's on me. I tried to self-assign but GitHub doesn't let me, I don't have triage rights on the repo. From now on I'll comment on the issue asking to be assigned and wait for a go from either of you before starting. Happy to close #3763 or #3764 if you already had something in progress.

@purian23

Copy link
Copy Markdown
Collaborator

Nah you're good, just trying to clear up any confusion or run-ins that may occur. Again, we highly appreciate the assist!

@purian23

Copy link
Copy Markdown
Collaborator

/claude review

@claude

claude Bot commented Oct 12, 2026

Copy link
Copy Markdown
Contributor

Claude review

No issues found.
Checked: ref counting in DgopService request/release, ProcessesView hold/release across search clear, inactive and destruction (popout and modal Loader), the immediate refresh path through updateAllStats while polling is idle or mid-request, buildMetaParams limit switching, and the new node test. Model: claude-opus-5-5.

@purian23

Copy link
Copy Markdown
Collaborator

This one looks good if you could drop the dgop-process-search.test. Thanks again!

@Mario-Mohar

Copy link
Copy Markdown
Contributor Author

Dropped the test file, thanks!

@purian23
purian23 merged commit 0fb2297 into AvengeMedia:master Oct 12, 2026
2 checks passed
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.

system monitor: disconnected list when searching

2 participants