How do I connect a TRMNL e-ink display?
collabDoo serves your household’s display under a secret address in three forms: web page, image (PNG) and data (JSON). On the TRMNL there are two ways: the image plugin for full-screen use (recommended, no maintenance) and Liquid templates if collabDoo should share a screen with other plugins. No server of your own is needed.
Part 1
Prepare in the app
You need a TRMNL connected to the TRMNL cloud (trmnl.com) and an account with access to private plugins (developer access). In collabDoo you set up the display and generate the address – as an adult with the admin role.
- Switch the display on
Manage → Display (kitchen display) → switch on Public display address active.
- Calendar, location, photos
Up to 6 calendars via iCal address (Check address shows immediately whether the link works; with Apple replace
webcal://withhttps://), a location for the weather, photos with rotation. How to is in the display guide. - Choose the e-ink view
Under Ansicht E-Ink/Bild choose between Week and Today only. This is the default for image and web page; it can be overridden via the address.
- Generate the display address
Under E-ink / TRMNL tap Generate display address. The app shows three addresses once, with copy button and QR code: web page
…/d/<token>, image…/d/<token>.png, data…/d/<token>.json. Way 1 needs the image address, way 2 the data address.
Anyone who knows the address sees tasks with first names, appointments and the photo. With both ways it ends up in the TRMNL cloud because TRMNL fetches it. Do not pass it on; if lost, Neue Adresse erzeugen (the old one dies immediately) or Adresse widerrufen. The plain text is shown only at the moment of generation.
Part 2
Way 1: image plugin (full screen, recommended)
A private plugin whose markup is just one image. The result is exactly what the collabDoo server renders: tile design, weather, photo – designed for e-ink. No Liquid, no maintenance.
- Create the plugin
At trmnl.com: Plugins → Private Plugin → Add new. Name it “collabDoo”, say.
- Strategy
Strategy: Static. The markup needs no data from TRMNL.
- Paste the markup
Edit Markup → Full, then paste one of these lines and replace
<token>with the part from your image address. The first line fits the TRMNL X, the second the TRMNL OG.<!-- TRMNL X (1872 × 1404, 16 grey levels), week view --> <img src="https://team.collabdoo.app/d/<token>.png?w=1872&h=1404&mode=gray16&view=week" style="width:100%;height:100%;object-fit:contain;"> <!-- TRMNL OG (800 × 480, 1 bit), day view --> <img src="https://team.collabdoo.app/d/<token>.png?w=800&h=480&mode=eink&view=today" style="width:100%;height:100%;object-fit:contain;">The parameters after the
?control the image – all are optional:Parameter Values Effect viewweek·todayWeek tiles or day view. Without it, the app setting “Ansicht E-Ink/Bild” applies. w200 … 2000 Width in pixels – your display’s resolution. h200 … 2000 Height in pixels. The layout scales by height (template 780 px). modeeink·gray·gray16·color1-bit dithered (TRMNL OG) · 4 grey levels · 16 grey levels (TRMNL X) · colour (browser, tablet). rotate0·90·180·270Rotation in degrees, for a portrait-mounted display, say. - Save and add to a playlist
Save, check the preview, add the plugin to a Playlist. Done – the TRMNL fetches the image at its own pace (the device’s refresh rate).
- Optional: alternate day and week
Create a second plugin with
view=today. The playlist order is the alternation rhythm.
The server caches an image for 5 minutes per address and parameters. If the TRMNL catalogue offers an “Image Display” plugin (image from URL), it works with the same image address – but the private plugin with <img> always works and needs no catalogue entry.
Part 3
Way 2: private plugin with Liquid templates (mashups)
Needed when collabDoo should sit next to other plugins on one screen (half or quadrant). TRMNL then renders from the data itself – with our ready-made templates.
- Create the plugin
trmnl.com → Plugins → Private Plugin → Add new, name “collabDoo”.
- Polling strategy
Strategy: Polling, enter the data address
…/d/<token>.jsonas polling URL, verbGET, no headers. - Paste the template
Edit Markup: copy and paste the matching template for each layout from team.collabdoo.app/trmnl/ (table below).
- Check the preview
If no entries appear, the data sits under a root node (happens with several polling URLs). Then replace
dayswithIDX_0.daysin the template – likewisetoday,labels,household,weather,unassigned,title,updated,photo_url. - Playlist or mashup
Add the plugin to the playlist. In a Mashup, collabDoo sits as a quadrant next to weather or news, for example.
| Layout | Template | Shows |
|---|---|---|
| Full (week) | collabdoo-full.liquid | Day tiles 4×2, weather and photo on the right, with 7 days an eighth tile “up for grabs” |
| Full (day) | collabdoo-full-today.liquid | Appointments · tasks (two lines, circle checkbox) · weather and photo |
| Half Horizontal | collabdoo-half_horizontal.liquid | Today left, next day right |
| Half Vertical | collabdoo-half_vertical.liquid | Today large, the next days below |
| Quadrant | collabdoo-quadrant.liquid | Today only, compact |
The full templates load Public Sans and Roboto Condensed from Google Fonts plus weather symbols and photo from the collabDoo server. TRMNL renders in the cloud, which is why all addresses are absolute.
Part 4
Image address parameters and recommendations per device
Append the parameters to the image address with ? and &. Without view the app setting “Ansicht E-Ink/Bild” applies.
| Parameter | Values | Meaning |
|---|---|---|
view | week · today | Week tiles or day view |
w, h | 200 … 2000 | Image size in pixels; the layout scales by height (template 780 px) |
mode | eink · gray · gray16 · color | 1-bit dithered · 4 grey levels · 16 grey levels · colour |
rotate | 0 · 90 · 180 · 270 | Rotation |
TRMNL X (10.3″, 16 grey levels, 1872 × 1404): ?w=1872&h=1404&mode=gray16&view=week
TRMNL OG (7.5″, 1 bit, 800 × 480): ?w=800&h=480&mode=eink&view=today – the day view is more legible on the small display than the week.
Browser or tablet: the web page address …/d/<token> refreshes itself, ?view=today is possible.
Week: one tile per day with weekday, “TODAY” badge, date and the entries in chronological order – appointments with time and calendar, tasks with time and person (“07:00 · Max”, open ones as “07:00 · open”). Weather with an hourly bar 06–20 top right, the photo of the day bottom right. Day: appointments on the left, tasks in the middle as a list with a circle (empty = open, filled = done), time and assignee, then “Tomorrow” if there is room. A clear tile design, made for e-ink.
Part 5
Troubleshooting
| Symptom | Cause and fix |
|---|---|
| Image or page returns 404 | Address wrong, revoked or display switched off. Generate a new address in the app. |
| Old rendering in the browser | Browser cache (60 seconds). Reload with Shift or change a parameter. |
| Image too small or blurry on the TRMNL X | w=1872&h=1404&mode=gray16 |
| Liquid template shows nothing | Root node: days → IDX_0.days and the other fields likewise (part 3, step 4). |
| All tasks say “up for grabs” or “open” | The tasks have no assigned person. Set the assignee in the app or let someone take them. |
| Calendar missing | The iCal address must start with https:// and be publicly reachable; use “check address” in the app. Refresh every 15 minutes. |
| Exclamation mark after the time | The task is overdue – the time has already passed today. |
All templates, symbols and a short guide are publicly available at team.collabdoo.app/trmnl/.
collabDoo · All for one. Done by all.
The week on the wall – without wasting power.
One private plugin, one line of markup, done.
iPhone & iPad · iOS 17 or later · Android to follow

