| Age | Commit message (Collapse) | Author | Files | Lines |
|
Add card.ICON and a card.title helper that draws the glyph in the
highlight colour before the label, at the label's own size. The eight
labelled cards use it, in both the fit_unit width measurement and the
draw, so the icon cannot overrun a narrow cell. Clock (no label) and
weather (condition glyph already) are unchanged, and the no-data notice
titles stay text-only.
Codepoints were chosen against a rendered contact sheet, not fontconfig
alone, since a wrong codepoint draws a plausible neighbour.
|
|
Extract card.notice so every cached card's no-data state is one fluid,
theme-consistent face instead of a copy per widget, and delete the
fixed-size card.label it replaces.
Derive weather's arc geometry from its band (pad, curve room, sun dot,
time labels) instead of fixed pixels, and cap the arc at a proportion of
the card's width rather than 240px.
Derive disks' bar-fallback height and its address type from the card's
own label scale.
Standardise the big-value factor to 1.0 across the fit_unit cards and
document the big-value colour rule and the disks headline exception.
|
|
Three changes to the calendar card:
The month grid drops further below the header. The weekday initials sat
close enough to read as part of the header rather than as the top of the
grid.
Event rows carry the date before the time, day/month with no year: the
window is a week and the grid above already names the month, so a year
would spend three characters on the one field that cannot vary.
A legend of the calendar colours is pinned along the card's bottom, and
the event rows now end above it rather than at the card's inner edge. It
lists every calendar khal declared a colour for, in name order so it
does not reshuffle between frames, since pairs() walks a hash.
The row budget also counted one row more than the drawing loop would
draw, which suppressed the '+N more' line exactly when it was needed:
the loop cut the row the count had already spent. Both now test the same
condition.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
|
The month grid with the week's appointments below it, colour-coded by
calendar. Events come from a cache file rather than a live call: khal
costs about 200ms of Python startup, which is two orders of magnitude
over the 2-second draw budget, so bin/calendar-sample.sh writes the
cache on a 5-minute execi and the widget only parses.
Calendar colours are read out of khal's own config by the sampler and
mapped onto the board's palette roles, so the card follows a scheme
change instead of pinning three literal hues.
khal will not emit an ISO date: {start-date} uses the user's dateformat,
which carries no year here, and a strftime spec inside the field raises.
The sampler asks for {start-date-long} and data.calendar_date recovers
the numbers by position, resolving day/month by magnitude and reading a
genuinely ambiguous pair day-first. A 2-digit year is refused rather
than guessed at.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
|
Notes the two things a reader would otherwise get wrong: br0 is a bridge, so
local VM traffic shows up in the chart, and the disks card reads df's
available column rather than computing size minus used, which would overstate
free space by the root-reserved blocks.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
|
DESIGN.md states the two rules that carry the board's identity (big value
at the card's top-right, rows label-left/value-right), plus the type,
colour and glyph conventions, with AGENTS.md pointing at it for anyone
adding a widget.
|
|
Mirror the weather header so the glyph sits large on the left and the
temperature, city and condition run against the right edge, and move the
system card's CPU percentage onto its header line, right-aligned. All
big values now render at the card's right edge.
|
|
The big value moves to the right of the heading, on the same baseline,
so the card's width carries it instead of leaving the right half empty.
Type now scales to fill the cell: card.fit_unit measures the rows and
returns the largest size that fits the width, and the widget takes the
smaller of that and its height budget, shrinking only where a row would
collide.
|
|
Fix the conky.conf.in comment to name all three samplers and the README
to say the cache sampler runs every 15 minutes. Rewrite the disks layout
comment to match per_row = n (no wrapping), drop the stale "seventeenth
bar" note, and record in the spec that the cache age marker is
deliberately deferred with the epoch-line upgrade path.
|
|
|
|
Installs Oswald (OFL-1.1, from googlefonts/OswaldFont) under
~/.fonts/o/Oswald with its license, and points the clock numerals at it
for the squared look the rounded Noto Sans Black did not have.
Per-widget fonts needed no new machinery: card.font() already takes any
family string, so FONT_* are shared defaults rather than a restriction.
FONT_CLOCK joins them, and the weather card keeps FONT_HEAVY, so the two
no longer have to agree.
Cairo still cannot ask for a weight above bold, so a heavier cut is
selected by family name as FONT_HEAVY already did. Worth knowing that
fontconfig substitutes a default for a family it does not recognise,
which is indistinguishable from the font not applying; fc-match tells
you which happened.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
|
Editing the layout table or a widget needs a conky restart and nothing
else, since the Lua is symlinked and conky never rereads its config.
That was three commands to remember, one of them the hyprctl dispatch
form that keeps the dashboard from popping open over the screen.
The script syntax-checks before killing anything and refuses to restart
on a Lua error, naming the file and line. Without that the first sign of
a typo is a blank workspace with no message on any stream, which is the
single most confusing failure mode this project has.
Falls back to a plain exec where Hyprland is not running, and says what
to run by hand if conky fails to come up.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
|
The numerals scaled off the cell but the date block sat at a fixed drop
below them, so a tall cell left a dead band under the date and a short
one would have collided. Now the date pins to the bottom edge, the
numerals take everything above it, and both type sizes derive from the
width, so the slack of a tall cell falls in the middle of the card where
it belongs.
Type scales off width for the same reason the weather card does: height
is what changes when a row is added to the grid, and a widget that
shrinks its text whenever its cell gets shorter reads as broken next to
its neighbours.
Checked at 1x3, 1x6, 2x2, 2x4 and 3x3 on an 8x6 grid before restarting
conky. The 1x6 case stays width-bound and leaves room below the
numerals, which is correct for a cell far taller than it is wide.
The README now states the convention, since it applies to every widget
added later: derive offsets from the rect, scale off width, decide where
the slack goes, and drop an element that would otherwise overlap.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
|
Adds a Weather section covering the API key, where it lives and why, the
401-while-activating behaviour a new key shows, the execi refresh, and
the by-hand fetch check. Adds five gotchas: execi firing under empty
text, the atomic cache write, what OWM actually returns for a bad key
and city, the no-raise invariant in lib/weather.lua, and type scaling
off width.
Also corrects three things that had gone stale: the symlink list omitted
bin/, the layout example still showed a single full-height clock, and
the test line omitted test_weather.lua.
The screenshot recipe was wrong in two ways, both of which bit during
this work. It slept a fixed second and raced the compositor, which is
how a capture came back showing a terminal instead of the dashboard; it
now polls for the workspace switch. And it fed the window's geometry to
grim -g, but a window on a hidden special workspace reports a negative
Y, so that grabs the wrong region; it now captures the output. Every
command in the file was run as written before committing this.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
|
Install, how to edit the layout table, how to run the checks, and the
five gotchas that cost real time: conky_surface() on Wayland, a Lua
error presenting as a blank screen, own_window_type needing to be
normal, the palette being unreadable through conky_parse, and Cairo
having no Black font weight.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|