Arrivals is a Kotlin Multiplatform project for live transit times. It currently supports 3 targets: a macOS toolbar app, a CLI, and a desktop app (primarily intended for Raspberry Pi kiosk displays).
Supported data sources include:
- TfL API for London Underground, Overground, DLR, etc.
- Darwin API for UK National Rail
- MTA GTFS feeds for NYC Subway
- Custom GTFS feeds for other transit systems (many can be found here)
The macOS toolbar app can be downloaded from releases and moved to your Applications folder. The other targets need to be built from source with the instructions below.
- Register to get API keys for the upstream data sources:
- TfL: Transport for London API app key
- UK National Rail: OpenLDBWS access token
- Create
shared/secret.propertiesand add your keys:tfl_app_key=YOURKEY darwin_access_token=YOURTOKEN - Make sure you have a JDK configured at
$JAVA_HOME
| Target | Platform | Description | Quick start |
|---|---|---|---|
| macOS | macOS | SwiftUI status bar app | Open macOS/Arrivals.xcodeproj in Xcode and click the Run button |
| Desktop | Linux (incl. Raspberry Pi), macOS, Windows | Compose Multiplatform window with fullscreen mode | ./gradlew :desktop:run |
| CLI | JVM (all platforms) | Command-line interface | ./gradlew :cli:run |
Native status bar application for macOS, built with SwiftUI.
- Open
macOS/Arrivals.xcodeprojin Xcode - Press the Run button
- Configure via the settings UI
Cross-platform desktop UI, built with Compose Multiplatform. Includes a fullscreen mode for kiosk displays and configuration via a YAML file.
# Windowed mode
./gradlew :desktop:run
# Fullscreen with custom dimensions
./gradlew :desktop:run --args="-pi 1280 400"# Executable in desktop/build/compose/binaries/main/app/
./gradlew :desktop:createDistributableCreate a .arrivals.yml in the user home directory to configure:
# Mode: "tfl", "darwin", or "gtfs"
mode: tfl
# TfL fields
tfl_stop: 910GSHRDHST # Station ID
tfl_platform: 2 # Optional platform number
tfl_direction: all # "inbound", "outbound", or "all"
# Darwin (UK National Rail) fields
darwin_crs: PMR # Station CRS code
darwin_platform: 2 # Optional platform number
# GTFS fields
gtfs_stop: G28S # Station ID
gtfs_realtime: https://api-endpoint.mta.info/Dataservice/mtagtfsfeeds/nyct%2Fgtfs-g
gtfs_schedule: https://transitfeeds.com/p/mta/79/latest/downloadCommand-line interface (uses the JVM package). Run ./gradlew :cli:run --args="--help" for all options.
./gradlew :cli:run --args="tfl --station 910GSHRDHST --platform 2"./gradlew :cli:run --args="darwin --station PMR --platform 2"./gradlew :cli:run --args="gtfs --station G28S \
--realtime https://api-endpoint.mta.info/Dataservice/mtagtfsfeeds/nyct%2Fgtfs-g \
--schedule https://transitfeeds.com/p/mta/79/latest/download"- Powered by TfL Open Data
- OS data © Crown copyright and database rights 2016
- Geomni UK Map data © and database rights 2019
- Powered by Rail Data Marketplace via Huxley2
- Uses this London Underground Typeface for dot matrix text
