cowdiag(1)
π cowdiag β the manual, but make it a group chat π
okay bestie, sit DOWN, because cowdiag is about to become your new hyperfixation. this is the cowdiag(1) page from the cow - Window Manager manual, and i'm giving it to you with full personality intact. no details lost, no cap. πβ¨
β¨ NAME β¨
cowdiag β the live diagnostics dashboard for cow and River. that's it, that's the whole vibe. a little window into everything your compositor is doing, in real time. π
πΈ SYNOPSIS πΈ
cowdiag -j [-w] [-i milliseconds]
π¦ DESCRIPTION π¦
so cowdiag is a read-only terminal dashboard for cow(1). read-only meaning it's just looking, respectfully, like a girl who's not gonna touch your stuff, she's just observing. π
it combines three whole things:
- CoW's status snapshot π«Ά
- internal manage/render timing counters
- process statistics for CoW and River
okay and here's the part where i need you to listen, because it's giving nuance: the timing panels separate work actually done inside CoW callbacks from time spent just waiting around at the CoW/River protocol boundary. those are two different things and conflating them is a crime.
π¨ but like, important: these panels do not measure River's GPU rendering or frame presentation time. do not come for them for something they never claimed. periodt.
the interactive display is also a flexible queen β it adapts to your terminal width:
- wide terminals get the full set: process, session, manage, render, and rolling-history panels π
- narrow terminals get a compact layout, still cute, still functional π
π OPTIONS π
-hβ print usage and exit. bye bestie π-imilliseconds β set the sampling interval. default is1000milliseconds. values from100through60000are accepted. like, don't go below 100, she's not gonna do it.-jβ emit one combined JSON sample instead of opening the terminal dashboard. the command waits for one sampling interval so CPU percentages are based on two observations (you need two points to draw a line, babes π).-vβ print the version and exit. short and iconic.-wβ with-j, keep emitting newline-delimited JSON samples until interrupted. it's giving firehose π₯
π KEYS π
q,Escapeβ quit. closing the app is self-care. πSpaceβ pause or resume sampling. freeze frame, main character energy. βrβ clear the local graph history. π§Ή important: CoW's process-lifetime counters are not changed. you're just clearing your local view, not rewriting history, bestie.Tab,Left,Right,1through4β select the line graph. your options are: combined CoW and River CPU, CoW RSS, manage wait, or render wait. pick your fighter π₯gβ toggle an expanded graph-only view. this also makes the graph available in narrow terminals, where the normal stacked layout has no graph panel. so if you were sad about your tiny terminal,gheard you. π«Ά?β show or hide key help. the little pop-up that reminds you what you forgot. π
β METRICS β
π the manage panel reports:
- requests registered by CoW and requests coalesced into the same cycle;
- delay from the first pending request to River's
manage_startevent; and - time spent by CoW handling a manage cycle.
π the render panel reports:
- delay from CoW's
manage_finishrequest to River's nextrender_start; and - time spent by CoW handling a render cycle.
π and the portability tea:
CoW CPU time, process lifetime, and peak resident memory are portable. slay.
cowdiag also shows current CoW and River RSS and River CPU usage on Linux, FreeBSD, OpenBSD, and NetBSD.
- Linux uses procfs πΈ
- the BSD implementations use their native process sysctl interfaces πΈ
- River is identified from the peer credentials of the Wayland socket π¦
- unsupported process fields are displayed as
n/aon other systems. not a bug, just honesty. π
and CPU percentages use a per-core scale: one fully occupied CPU is 100 percent. so yes, you can go over 100 if you have multiple cores going off. she contains multitudes. π
π ENVIRONMENT π
XDG_RUNTIME_DIRβ used to locate CoW's command and status sockets. πWAYLAND_DISPLAYβ selects the CoW instance and identifies the River process. πCOW_IPC_SOCKET,COW_STATUS_SOCKETβ override the normal command and status socket paths. custom paths, custom life. β¨
π«Ά SEE ALSO π«Ά
cow(1), cowbar(1), moocow(1) β the whole friend group, go say hi. π
π and that's the page!! this was version 0.3, dated 2026-09-07, from the cow - Window Manager manual. tysm for reading, bestie, go run cowdiag and watch your compositor absolutely perform. ππβ¨
π¦ where this page comes from
- fedora 44: cow 0.3-1.fc44 Β· ISC
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms