Skip to content

slicke/trndi

Repository files navigation

⚠️ Quick intro: Right-click on Trndi's window to open its menu for settings and other options!

Build & Release (All Platforms) Donate via PayPal GitHub Sponsors

Trndi

Trndi - Your blood sugar partner

Shows your CGM data on Desktops and displays

Supports Nightscout - Dexcom - Tandem Source - xDrip

🪟 Windows - 🍎 macOS - 🐧 Linux - 🥧 RaspberryPi and ARM Linux

Index

Screenshots

Windows Windows
Windows 11

Linux Linux
Fedora Linux

Linux
RaspberryPi (with touch screen) - see Guide for RPi display

Introduction

NEW: Join us on Discord

Trndi is a desktop app that shows your blood sugar and graph. It works with Night Scout, Tandem Source and Dexcom Share at the moment. It also supports the xDrip app, connecting over the local network/WiFi.

What differs Trndi from apps?

  • Natively runs on your computer without needing installation
  • Runs out-of-the-box! Does not depend on other software to be installed (on Linux, this may depend on your distro)
  • Supports multiple languages
  • Runs on your Raspberry Pi and other arm computers, optionally as a full-screen display
  • Works on touch-screen devices, such as a RaspberryPi with screen
  • Supports modern JavaScript extensions
  • Small and portable
  • Supports dark and light color modes
  • Displays your readings in a trend graph
  • Free and open source
  • Integrates with Windows, macOS and Linux special features such as the macOS dock, Windows taskbar and Linux notifications.
  • Supports low, normal and high blood sugar colors. But also custom ranges such as "normal, but on the edge to high"
  • Offers a WebAPI for other clients to access glucose data
  • Supports experimental predictions
  • Supports Razer Chroma on Windows and Linux
  • Native proxy support on Windows and Linux (uses system proxy on macOS)

Multi-user support

Need to see more than one person? Trndi supports parallel users. Setup the users in the settings. Don't forget to click Save when editing users!

You need to start Trndi multiple times, each instance lets you choose a user. Just open the app multiple times and select a different account. Users can have different sources and run JavaScript plugins independently.

Usage

⚠️ Right-click on the reading on the screen to access the menu, this is how you control Trndi.

Accessibility

Trndi includes built‑in accessibility features to make readings easier to see and hear:

  • Text-to-speech (TTS) — enable "Announce readings" in Settings to have Trndi speak glucose updates.
  • High contrast mode — toggle the high‑contrast theme for improved visibility.
  • Adjustable speech voice & rate — choose voice and set speaking rate from Settings.
  • Keyboard & screen‑reader friendliness — dialogs and controls expose standard labels and keyboard focus so screen readers can navigate the UI.
  • Open links externally — links (Help, documentation) are opened with the system browser.

Installation

Windows

Via Installer (Recommended)

Download TrndiSetup.exe from the latest release and run it.

Portable (No install needed)

Download Trndi-windows-x64.zip from the latest release, extract and run Trndi.exe.

Advanced: Via NuGet/Chocolatey (GitHub Packages)

You can install Trndi via NuGet from GitHub Packages (or Chocolatey), see the guide.

Linux

Download the appropriate package for your distribution from the latest release:

  • Debian/Ubuntu: trndi_VERSION_amd64.deb or trndi_VERSION_arm64.debRecommended for best desktop integration
  • Fedora/RHEL: trndi-VERSION.x86_64.rpm or trndi-VERSION.aarch64.rpmRecommended for best desktop integration
  • AppImage (Universal): Trndi-x86_64.AppImage or Trndi-aarch64.AppImageRecommended for Arch, openSUSE, and other distributions
  • Portable: Trndi-linux-amd64.zip or Trndi-linux-arm64.zip

Package Recommendations

Use native packages (.deb/.rpm) when available:

  • ✅ Better system integration
  • ✅ Desktop extensions (GNOME/KDE) install to system locations automatically
  • ✅ Automatic updates via package manager
  • ✅ Proper uninstallation support

Use AppImage for other distributions:

  • ✅ Works on any Linux distribution
  • ✅ No installation required
  • ✅ Portable and self-contained
  • ℹ️ Desktop extensions need manual installation (see below)

Using AppImage

# Download the AppImage for your architecture
wget https://github.com/slicke/trndi/releases/latest/download/Trndi-x86_64.AppImage

# Make it executable
chmod +x Trndi-x86_64.AppImage

# Run it
./Trndi-x86_64.AppImage

Linux desktop indicators (optional)

  • GNOME: includes a GNOME Shell top-bar extension (trndi-current@slicke.com) that shows the current reading.
  • KDE Plasma 6: includes a panel widget ("Trndi Current") you can add via Add Widgets.

Both indicators read the same cache file: ${XDG_CACHE_HOME:-$HOME/.cache}/trndi/current.txt.

Installation:

  • DEB/RPM packages: Extensions install automatically to /usr/local/share/trndi/
  • AppImage: Extensions are bundled but require manual installation:
    # Extract AppImage to access extensions
    ./Trndi-x86_64.AppImage --appimage-extract
    
    # GNOME: Copy to extensions directory
    mkdir -p ~/.local/share/gnome-shell/extensions
    cp -r squashfs-root/usr/share/trndi/gnome-shell-extension/trndi-current@slicke.com \
      ~/.local/share/gnome-shell/extensions/
    # GNOME: enable / reload the extension
    # - Use the Extensions app or run:
    #   gnome-extensions enable trndi-current@slicke.com
    # - If using Xorg: press Alt+F2, type r and Enter to reload GNOME Shell
    # - If using Wayland: log out and log in to apply the extension
    
    # KDE: Copy to plasmoids directory
    mkdir -p ~/.local/share/plasma/plasmoids
    cp -r squashfs-root/usr/share/trndi/kde-plasmoid/com.slicke.trndi.current \
      ~/.local/share/plasma/plasmoids/
    # KDE: restart Plasma and add widget
    # - Restart (optional): kquitapp6 plasmashell &&  plasmashell (Plasma 5) or log out/in
    # - Add the "Trndi Current" widget via *Add Widgets*

macOS

Download Trndi-macos-silicon.dmg from the latest release.

Note: After opening, you need to remove the quarantine attribute:

xattr -c /path/to/Trndi.app

Haiku

Trndi can be built for Haiku OS using Lazarus.

Requirements:

  • Free Pascal Compiler: pkgman install fpc
  • Lazarus build tools: pkgman install lazarus_bin
  • OpenSSL for HTTPS support: pkgman install openssl

Building from source:

# Install dependencies
pkgman install fpc lazarus_bin openssl
> use pkgman php8 to perform HTTP-based unit tests

# Clone and build
git clone https://github.com/slicke/trndi.git
cd trndi

# Use the included Makefile rather than calling lazbuild directly for simplicity.
# Add noext to remove extensions (mORMot2 dependency issues)
make noext

Features on Haiku:

  • Native notification support (via notify-send if available)
  • Text-to-speech support (via espeak if available)
  • Settings stored in ~/config/settings/Trndi/trndi.ini
  • HTTP/HTTPS support via FPC's TFPHTTPClient

BSD

Trndi can be built for FreeBSD, OpenBSD, and NetBSD using Lazarus.

Requirements:

  • Free Pascal Compiler
  • Lazarus build tools
  • libcurl for HTTP/HTTPS support
  • OpenSSL

Building from source:

# Install dependencies (FreeBSD example)
pkg install fpc lazarus curl openssl

# Clone and build
git clone https://github.com/slicke/trndi.git
cd trndi
# Use the included Makefile rather than calling lazbuild directly
make
# Or build without extensions (no mORMot2 dependency)
make noext

Features on BSD:

  • Native notification support (via notify-send if available)
  • Text-to-speech support (via espeak if available)
  • Settings stored in ~/.config/trndi/trndi.ini
  • HTTP/HTTPS support via libcurl

Setup

Right click or click/hold the reading (or "Setup" text) and choose settings to access settings.

  • For NightScout, settings will be fetched from your server and auto-applied
  • For Dexcom, see the Dexcom setup guide. The backend does not support all features, but this can be fixed with some manual work.
  • For Tandem, see the Tandem setup guide. The backend does not support all features, but this can be fixed with some manual work.
  • For xDrip, you need to turn on the local web server and use that IP/password
  • For other backends, feel free to contribute a api driver. See API Drivers
  • For HTTP API access, see the Web API documentation to expose glucose data to other applications

NOTE To receive notifications see here

See a box instead of an icon? On Debian systems, you may need to install a graphic font. I recommend fonts-noto-color-emoji.

Support

Join us on Discord to discuss issues or new features

Donate

If Trndi is useful to you, consider supporting its development:

Donate via PayPal GitHub Sponsors

Development

Development tools can be obtained via most distros package managers:

  • Fedora/RHEL: dnf install lazarus
  • Ubuntu/Debian: apt install lazarus
  • FreeBSD: pkg install editors/lazarus

Building

GUI

Use the Lazarus IDE to build and/or develop the app, set release target in the Project Options.

Command line

Linux / Haiku / BSD (recommended)

Build development:

make debug

Build release:

make

Build release without extensions support:

This removes dependency on mORMot2

make noext

Build to a release folder:
```bash
make OUTDIR=output_directory

macOS / Windows

Windows (PowerShell):

  • Prefer the included make.ps1 helper for convenience. It wraps lazbuild and provides shortcuts:
    • ./make.ps1 or ./make.ps1 release -> builds Release via lazbuild (-dRelease)
    • ./make.ps1 debug -> builds Debug via lazbuild (-dDebug)
    • ./make.ps1 noext -> builds the "No Ext (Release)" mode
    • ./make.ps1 help -> show usage

macOS / (also usable on Windows if you prefer):

Build development:

lazbuild Trndi.lpi

Build release:

lazbuild --build-mode="No Ext (Release)" Trndi.lpi

Build to a release folder:

lazbuild -B output_directory Trndi.lpi

Makefile

Linux, BSD and Haiku use make, for macOS substitute make with gmake

There is a convenience Makefile that wraps lazbuild with common targets:

  • make (default: release)
  • make debug
  • make build (honors WIDGETSET and BUILD_MODE)
  • make test
  • make list-modes — list available build modes in Trndi.lpi
  • make noext — build without mORMot2 using a temporary project copy (useful if you don't have the mORMot2 package installed locally)
  • make noext-release / make noext-debug — same as noext but force build mode
  • make IGNORE_MORMOT=1 or make build-ignore — force build even if mORMot2 is not found (skip presence check)
  • make clean
  • make.ps1 (Windows PowerShell helper) — run ./make.ps1 help for shortcuts (release, debug, noext)

Defaults by platform:

  • Linux: forces the Qt6 build modes by default (e.g. Qt6 (Release))
  • Windows / macOS: prefers native Extensions (Release) / No Extensions (Release)(respectively) style builds for release targets

Examples:

make            # on Linux -> Qt6 (Release) (artifacts placed in the 'build/' directory)
make noext      # on Linux -> Qt6 (Release) using temporary project copy
make BUILD_MODE=Debug    # chooses Qt6 (Debug) on Linux, Extensions (Debug) on macOS/Windows
make list-modes # show exact LPI targets if you want to pick one explicitly

Note: By default make build writes build artifacts into $(OUTDIR) (default: build/). You can override this by setting OUTDIR=... on the make command line if you prefer a different location.

History

Trndi2 (and later) is a rewrite, less bloated, version of Trndi 1, which was never released publicly. Trndi 1 was originally called Dexmon (and only did Dexcom). The original idea spawns from an old app called TrayTrend which I made with a similar purpose.

Testing

Trndi is actively tested on Windows (x64), Fedora Linux (amd64), Debian Linux (arm64 / Raspberry Pi).

Linux notes

If you find yourself having problems running Trndi, i.e., it will not start, you might be missing the Qt6 framework and/or the pascal headers.

Any distro

You can download them for any RPM/DEB distro in this repo.

Debian / Raspbian

You can install the libqt6pas6 package on Debian-based distros via apt.

Ubuntu

You can install the libqt6pas6 package via apt.

Fedora

You can install the qt6pas package in DNF.

Arch

You can install the qt6pas package.

Others

Look for qt6pas or libqt6-pas (or qt6pas6) in your package manager, or search for libQt6Pas.so.

Settings storage

Trndi stores settings per platform in the standard location:

  • Windows: Registry under HKCU\Software\Trndi
  • macOS: NSUserDefaults (Preferences), typically domain com.slicke.Trndi (often stored in ~/Library/Preferences/com.slicke.Trndi.plist)
  • Linux: Lazarus GetAppConfigFile path, typically ~/.config/Trndi/trndi.ini in section [trndi]

On Linux, this is a single INI file consistently used for Get/Set/Delete operations — no legacy paths or multiple files.

Contributing

Contributions are welcome. Please read CONTRIBUTING for coding style, PasDoc guidelines, and how to generate the developer docs for native, extensions, and API units.

If you're adding or modifying an API driver, start with the API guide for the contract and examples, then follow the API section in CONTRIBUTING.

See also BUILDING.md

Languages / Translations

To contribute a translation, check out LANGUAGES.md.