non-exhaustive collection of TRMNL plugin logic. in sharing these assets we intend to provide transparency in how TRMNL manages user data with respect to 3rd party integrations.
native plugin structure:
- file
plugin_name.rb
represents instance of a PluginSetting (user-owned), which belongs to a Plugin (global, immutable) - screens are generated by first invoking
Plugins::<PluginName>.new(plugin_setting).locals
- the
locals
hash / JSON object contains all the values needed for rendering a screen - files inside
/views
interpolate values fromlocals
using ERB syntax (<%= var %>
) - views prefixed with
_
, for example_common
, are called "partials" (or 'components' in other frameworks) - shared code is not intended to "just work" but to showcase which values, and how, are extracted from 3rd party apps for TRMNL screen generation
- (USA) Top 10 College Football Rankings by @SnarfulSolutionsGroup & @Sitnik
- xkcd comics by @SnarfulSolutionsGroup
- Todoist by @Nynir
- Surf reports by @pcifaldi
- On This Day (in history) by @frethop
- Multi-column ICS calendar by @jfsso
- WooCommerce by @yannicschuller
- Strava goals by @vinayak-mehta
- Valorant Tracker by @MarkHopper24
- NASA Deep Space Network by @schrockwell
- Marvel Character of the Day by @MarkHopper24
- Remember The Milk by @sejtenik
- Habitify by @sejtenik
- Libra by @sejtenik
- This Day in History (Wikipedia) by @jvivona
- Weekly Goal Tracker by @azjgard
- METAR by @schrockwell
- Block Clock by @tyler-dot-earth
- TickTick Calendar by @frethop
- Transport for London (TfL) status messages by @stevekennedyuk
- plugin generator [Laravel] by @bnussbau
- Home Assistant - sensor data by @gitstua
- Bring! Shopping List by @yshrdbrn
to be featured here, add trmnl
topic to your repo, then open a PR or join the developer-only Discord server (link inside TRMNL UI).