A Shotwell plugin that makes posters and puts them into the library, ready for print.
  • Vala 72%
  • C 24.1%
  • Shell 3.3%
  • Makefile 0.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
nudged 1b6d1d55f8 shpost: genres and discoveries of the listening, temperature on this day, quieter posters
The listening posters grow: the genres of a week, month or year, ranked and
stacked day by day; the artists, albums and tracks discovered in a span,
with the covers. Both are made for every whole span with plays, the past
ones included, and the spans made are remembered in the settings.

Temperature on this day puts today beside the same day of the past five
years as climate stripes, one number on each. The air pressure poster is
drawn about the standard line: yellow above 1013 hPa, blue beneath.

All posters lose the line of small print with the source and the shpost
mark, and the aside along the edge. The music posters share the head word
"music" and start their lists at the margin.

The plugin identifies itself as io.github.criphack.shpost.
2026-09-26 22:30:02 +02:00
src shpost: genres and discoveries of the listening, temperature on this day, quieter posters 2026-09-26 22:30:02 +02:00
tests shpost: genres and discoveries of the listening, temperature on this day, quieter posters 2026-09-26 22:30:02 +02:00
tools shpost: genres and discoveries of the listening, temperature on this day, quieter posters 2026-09-26 22:30:02 +02:00
vapi shpost: Bauhaus posters for Shotwell - the weather of your places and your listening, in the window or by a daily timer 2026-09-24 04:23:51 +02:00
.gitignore shpost: Bauhaus posters for Shotwell - the weather of your places and your listening, in the window or by a daily timer 2026-09-24 04:23:51 +02:00
install.sh shpost: Bauhaus posters for Shotwell - the weather of your places and your listening, in the window or by a daily timer 2026-09-24 04:23:51 +02:00
LICENSE shpost: Bauhaus posters for Shotwell - the weather of your places and your listening, in the window or by a daily timer 2026-09-24 04:23:51 +02:00
Makefile shpost: genres and discoveries of the listening, temperature on this day, quieter posters 2026-09-26 22:30:02 +02:00
README.md shpost: genres and discoveries of the listening, temperature on this day, quieter posters 2026-09-26 22:30:02 +02:00

Posters for Shotwell

A Shotwell plugin that makes posters and puts them into the library, ready for print. Every poster has the same frame and a legend.

Tab Posters Data
Weather temperature, precipitation, air pressure, wind, humidity, cloud cover: one poster each, hour by hour for the past three whole days at the places given by name; and today's temperature beside the same day of the past five years as climate stripes Open-Meteo, which also finds the places; its archive (ERA5) for the years before
Music the music heard in a day: minutes of music in every hour, the artists heard most with the covers of their albums, the top track; the genres of a week, month or year; the artists, albums and tracks discovered in a week, month or year. Made for every day, week, month and year with plays, the past ones included Needs the Listening Review plugin (rhrev) in Rhythmbox that history and the covers beside the music
  • A3 to A1, 50 × 70 cm, 18 × 24 or 24 × 36 in, at 150, 300 or 600 dpi; drawn as vectors, PNG with its resolution written in. Save As… also writes PDF and SVG for a print shop. Two palettes: Paper and Night.
  • Also while Shotwell is closed: a timer runs every morning and makes each ticked poster when its days have passed - the weather every three, one poster for each place; the listening posters for every day, week, month and year with plays that has none yet. The posters wait in a queue and come into the library the next time Shotwell runs, or at once while it does.

Made for Shotwell 33.x (GTK 4).

The Music tab needs the Listening Review plugin (rhrev) installed and switched on in Rhythmbox. It keeps the history of what was played in ~/.local/share/rhythmbox/rhrev/history.db, which the music posters read; without it there is no Music tab. The posters know only what was played while the plugin was on: the discoveries count as new what is new to that history, and the posters of a month or a year fill up as the history grows.

Install

./install.sh     

Restart Shotwell. The plugin is switched off at first: switch it on under Edit > Preferences > Plugins > Posters. Then there is File > Poster…

A build on the system needs valac, make, gcc and the development files of GTK 4, libgee, libsoup 3, json-glib, cairo, pango, zlib and SQLite:

Fedora (tested here)

sudo dnf install vala make gcc gtk4-devel libgee-devel libsoup3-devel json-glib-devel cairo-devel pango-devel zlib-devel sqlite-devel

Debian

sudo apt install valac make gcc libgtk-4-dev libgee-0.8-dev libsoup-3.0-dev libjson-glib-dev libcairo2-dev libpango1.0-dev zlib1g-dev libsqlite3-dev

Arch

sudo pacman -S vala make gcc gtk4 libgee libsoup3 json-glib cairo pango zlib sqlite

Using it

File > Poster… opens the window with the tabs Weather, Music and Background. On a poster's tab: the poster on the left with what is its own - its places, its tags, and whether and every how many days it is made in the background - then what holds for every poster: paper, resolution, palette; on the right the poster as it will be printed, redrawn with every change. Add to Library hands it to Shotwell's import; Save As… writes a file.

Places are names, parted by semicolons: Paris; Tokyo; Rio de Janeiro, Brazil gives one poster for each; the window shows the first.

Temperature on this day puts today beside the same day one to five years ago: a stripe for each year, blue where the year was colder than today, yellow within 1 °C of it, red where it was warmer (half the colour until 3 °C apart), and on each stripe the day's mean temperature. The big number is today against the mean of the five years; the lowest and the highest of each day are in the photo's comment.

Genres ranks the genres by their minutes and stacks every day (every week for the year) in their colours; the ring in the head is their shares. A play tagged with several genres shares its minutes among them; untagged plays and "Unknown" are "no genre" - as are the plays imported from ListenBrainz, which carry no genre. Discoveries lists the artists heard for the first time with the covers of their albums, counts the new albums and tracks, and shows every day (every month for a year) how much of the listening went to new artists (red) and to known ones (blue); a yellow triangle marks where new artists were first heard.

The Listening Review plugin shows the genre and discovery posters of the week, month or year it is showing as thumbnails in its overview, with a lightbox to look at them large; it has shpost-cli render them from the same history, so they need not be in the library.

The Background tab shows all posters in one table - tick, days, tags, when each was last made - with the places beneath, and a button that makes the due posters at once.

The posters in the background

install.sh sets up a timer of the user's systemd (shpost-<kind>.timer) which runs shpost-cli make every day at seven in the morning, for the Flatpak inside its sandbox. A run missed while the computer was off comes at the next start; one that finds no network is tried again a quarter of an hour later. ./install.sh --at 09:30 picks another time, --no-timer takes the timer off. Without a user systemd, run shpost-cli make from cron.

The posters land in shpost/queue/ of the data folder (~/.var/app/org.gnome.Shotwell/data/ for the Flatpak, ~/.local/share/ otherwise); the plugin watches that folder while Shotwell runs and looks there at the start.

License

LGPL-2.1-or-later, like Shotwell. See LICENSE.