Releases: awn007-eng/lindoze
v0.3.0 — graph readability
Graph readability pass: the sparklines now carry the numbers that give them meaning — per-core clocks, live values, and real axis scales — rendered inside Lindoze's existing dark cards.
Added
- Per-core clock speed on each logical-processor cell in the CPU grid, next to its utilization trace.
- Inline current-value readout painted on every graph, color-coded to the page accent — read CPU %, memory %, GPU %, or live throughput at a glance.
- Axis scale labels: autoscaling Disk/Network graphs show their live ceiling with units (e.g.
247 MB/s).
Changed
- Disk and Network each render their two directions as a single combined graph with two color-coded traces sharing one y-axis and a legend.
- GPU Utilization and VRAM graphs gained real scale + value labels.
- CPU grid cell labels (
CPU N+ clock) are tinted rose to complement the teal traces; the live%stays teal.
Install: pipx install lindoze · sudo dnf copr enable awn007/lindoze && sudo dnf install lindoze
v0.2.6 — CPU grid aspect cap + GNOME validated
The first release validated on a second desktop environment (GNOME on Fedora Workstation), plus a CPU-grid layout fix and a steady-state performance trim.
CPU per-thread grid
- Per-thread cell size is now capped at 250×200 (aspect ~0.6) so low-core machines on a tall window no longer stretch each sparkline into a skyscraper. The grid centers itself on both axes when its footprint is smaller than the viewport.
- High-core (32+) layouts are unchanged — they hit column-width-derived sizing, not the cap.
Performance
- MiniGraph brushes/pens/fonts are cached and rebuilt only on resize; ProcessModel caches fonts, alignment, and group-header colors.
- The Performance page now early-returns when it isn't the visible tab, skipping ~40 graph pushes + repaints per tick while you're on Processes or Startup. Roughly a 2–3% steady-state CPU drop measured on a Ryzen 7945HX.
Cross-desktop validation
- Validated on GNOME (Fedora Workstation 44): Processes monospace numerics, Startup icon-theme fallback chain, and CPU narrow-window reflow all render correctly under Cantarell/Adwaita.
- README claim updated from "tested on KDE" to "Built and tested on KDE Plasma and GNOME (Fedora Workstation); should work on other Qt-capable desktops too."
- Added GNOME screenshots under
docs/screenshots/gnome/.
Install
Fedora / Nobara (Copr):
sudo dnf copr enable awn007/lindoze
sudo dnf install lindoze
Any distro (pipx):
pipx install lindoze
# or
pipx upgrade lindoze
🤖 Generated with Claude Code
v0.2.5 — UX polish pass
A polish-focused release driven by an outside-Claude UI/UX review. No new tabs, but the existing ones read a lot better — especially under high core counts, at idle, and on first launch.
CPU per-thread grid
- Reflows columns on window resize: narrow window → fewer columns, no clipping.
- Vertical scroll area kicks in when even minimum cell size won't fit.
- Last partial row is centered under the rows above (32 threads on 7 columns no longer left-clings).
- Cells have a 100×50 readable floor so labels like
CPU 117won't clip even on Threadripper-class systems.
Processes
- Numeric columns (PID, CPU %, Memory, Disk, Threads) are right-aligned with a monospace font role — digits and unit suffixes line up vertically, scanning for heavy hitters is faster.
- Group header rows (
User processes (N)/System processes (N)) get a faint teal background tint so they read as section dividers, not just bolder text.
Startup apps
- Icons paint a fallback placeholder immediately and cache resolved themed icons. No more empty slots flashing on cold theme caches or first-paint screenshots.
- Empty-state copy rewritten to be friendlier and explain where entries come from.
Sparkline rendering (affects every graph in the app)
- Whole-cell vertical accent wash — faint at the top, stronger at the baseline — so idle/flat traces have presence instead of feeling like empty boxes.
- Trace stroke thickened to 1.8px so it reads more confidently.
- Cell border alpha softened so the per-thread grid looks like 32 quiet cells, not 32 empty boxes.
Window/system polish
- Window + taskbar icon now resolves via Wayland's
setDesktopFileName+ a bundled SVG fallback. KWin/Mutter stop showing the generic 'W' fallback. - Toolbar buttons (Overall, End task, Refresh, 60s/10min/1hr time-scale) unified via a new shared
lindoze/styles.py— same hover, same disabled state, same checked state everywhere.
README
- Softened the "feels native to KDE / GNOME" claim to "tested on KDE; GNOME visual fit unverified" — matches the rest of the README's honest-limits tone. GNOME testing is on the wishlist.
Install
pipx install lindoze
# or
pipx upgrade lindoze
🤖 Generated with Claude Code
v0.2.4 — PyPI listing polish
Metadata-only release. No code changes — fixes the PyPI listing.
Changes
- README: absolute GitHub raw URLs for screenshots (PyPI doesn't rewrite relative paths, so images now render on pypi.org/project/lindoze).
- pyproject: expanded
[project.urls]withRepositoryandBug Trackerso PyPI's sidebar shows project links.
Install:
pipx install lindoze
🤖 Generated with Claude Code
v0.2.3 — Install + CI tooling
Tooling release — no user-visible app changes, but the project is much more installable and shippable than it was at v0.2.2.
Install
- Lindoze is now on PyPI:
pipx install lindoze(orpip install lindoze) - bootstrap.sh now self-installs the
.desktopstart-menu entry and bundled SVG icon into the per-user XDG locations. Idempotent — safe to re-run. No more manual icon/desktop-entry setup aftergit clone. packaging/lindoze.desktopuses an@EXEC_PATH@substitution token and the bundled icon — no more hard-coded paths.
CI
- New GitHub Actions workflow runs pytest matrix on Python 3.10/3.11/3.12 + ruff lint on every push and pull request
- ruff config is
select=["F"]only (pyflakes/real-bug rules), so the compactx = Foo(); x.setBar(...)widget-construction style stays intact
Releases
- New Trusted Publishing workflow auto-publishes future releases to PyPI on
v*tag push via GitHub Actions OIDC — no long-lived API tokens in the repo, and a manual-approval gate via thepypienvironment
🤖 Generated with Claude Code
v0.2.2 — Search highlighting + graph time-scale toggle
Two polish features for the Processes and Performance tabs — plus Lindoze is now on PyPI.
Processes tab
- Matched search needle is now bolded in accent teal in the Name and PID columns via a custom item delegate
- New "N matches" counter sits between the search box and the End-task button; refreshes on each snapshot so newly-spawned matching processes are included
Performance tab
- New 60s / 10min / 1hr time-scale toolbar above the right pane, applied globally to all detail-page graphs
- Sidebar mini-graphs stay fixed at 60s (they're 54px wide — larger scales would just produce noise)
- Selection persists across launches via
QSettings - Graphs now render right-anchored — newest sample at the right edge, oldest where data starts. Fresh launches show graphs growing in from the right instead of starting with a misleading flat-zero baseline.
Install
Lindoze is now on PyPI:
pipx install lindoze
Or pip install lindoze if you don't use pipx. See the README for the from-source path.
🤖 Generated with Claude Code
v0.2.1 — Persist window state across launches
Small QoL release: Lindoze now remembers how you had it set up.
What's new
- Window size and position restored between launches
- Last-viewed top-level tab (Processes / Performance / Startup apps) restored on next launch
- Processes tab remembers column widths and sort order
Internals
- Settings written via Qt's
QSettings()on close; stored in~/.config/Lindoze/Lindoze Process Manager.conf.
🤖 Generated with Claude Code
Lindoze v0.2.0
What's new
Polishes the experimental Intel GPU support that landed after v0.1 and adds a debug flag so Intel users can file actionable bug reports without me needing access to their hardware.
Intel GPU
- Frequency sysfs fallback — older Gen7 (Ivy Bridge HD 4000-era) places
gt_cur_freq_mhzdirectly undercardN/, notcardN/device/. We try both now, so freq reads work across kernel generations. --dump-gpuflag — prints raw PMU file descriptors, counter values, sysfs paths, and event configs to stderr. If your Intel GPU is detected but util/temp/freq look wrong, paste the output into a GitHub issue.- PMU parser unit tests — 15 tests with synthetic counter fixtures exercise the engine-busy math without needing real Intel hardware.
Known thin spots
- Ivy Bridge (Gen7): detection + freq work; PMU util may still report 0. Awaiting a user report with
--dump-gpuoutput. xedriver: temp/freq only; Arc-on-xe testing pending.- Old AMD
radeondriver: nogpu_busy_percentsysfs → not detected. Useamdgpuif available.
Unchanged from v0.1
Processes / Performance (CPU / Mem / NVIDIA+AMD / Disk / Network) / Startup tabs, plus the perf knobs (1500ms sampler, paused-when-hidden, /proc/loadavg thread count) all carry over.
Install
git clone https://github.com/awn007-eng/lindoze.git
cd lindoze && git checkout v0.2.0
python3 -m venv .venv && .venv/bin/pip install -e .
.venv/bin/lindoze
Vibe-coded with Claude Code. Design and decisions are mine; Claude handled most of the typing.
v0.1.0 — Initial release
First public release of Lindoze — a Linux system monitor laid out like Windows 11 Task Manager.
Highlights
- Per-thread CPU grid — every logical processor as its own mini-graph, no overlaid mess
- Multi-GPU support — NVIDIA (NVML) and AMD (sysfs), one page per detected device
- Processes tab with sortable tree, search, end-task / kill / suspend / renice
- Startup apps tab with one-click toggle and 10-second undo
Install
Currently from source:
git clone https://github.com/awn007-eng/lindoze.git
cd lindoze
python3 -m venv .venv
.venv/bin/pip install -e .
.venv/bin/lindoze
Not yet supported (planned)
- Intel GPU page (NVIDIA + AMD only for v0.1)
- Flatpak / Flathub distribution
- Per-process GPU / Network attribution
Credits
Inspired by Dave Plummer's work on the original Windows Task Manager.