dms-wiener-linien
June 8, 2026 · View on GitHub
A DankMaterialShell plugin that shows real-time Wiener Linien departure times on the DankBar.

Features
- Bar pill showing the next 1–2 departures per tracked stop as coloured line
badges (
U3 2′ 4A 7′), updated on a configurable interval. - Popout with a full departure board: all tracked stops, sorted metro → tram → bus → night bus, with next three countdowns and a barrier-free indicator.
- Station picker in settings: type-to-filter across all 1 700+ Wiener Linien stops, click to add, click the × to remove.
- Automatic 5-minute backoff when the API rate limit is hit, with a human-readable status message instead of a raw error code.
Requirements
- DankMaterialShell with Quickshell ≥ 0.3.0.
No additional tools or credentials. The Wiener Linien Realtime API is open and unauthenticated.
Installing
Clone the repo into the DMS plugins directory and enable it under Settings → Plugins:
git clone https://github.com/Klievan/dms-wiener-linien \
~/.config/DankMaterialShell/plugins/dms-wiener-linien
For development, symlink instead:
ln -s ~/Projects/dms-wiener-linien \
~/.config/DankMaterialShell/plugins/dms-wiener-linien
After edits, reload without restarting DMS:
dms ipc call plugins reload wienerLinien
With Nix / home-manager:
xdg.configFile."DankMaterialShell/plugins/dms-wiener-linien".source =
./dms-wiener-linien;
Configuration
Settings → Plugins → Wiener Linien:
- Tracked stations: search by name, click to add. Stops are queried in a single batched API call per poll cycle.
- Poll interval: 30 s / 1 min / 2 min / 5 min (default 1 min). The Wiener Linien API asks that clients do not poll more than once every 15 seconds; the plugin enforces this as a hard floor regardless of the chosen interval.
Updating station data
The station search is powered by a bundled static file (data/stations.js)
generated from the Wiener Linien OGD open data.
To refresh it, download the three CSVs and run the script:
# Download
curl -O https://data.wien.gv.at/csv/wienerlinien-ogd-haltestellen.csv
curl -O https://data.wien.gv.at/csv/wienerlinien-ogd-steige.csv
curl -O https://data.wien.gv.at/csv/wienerlinien-ogd-linien.csv
# Regenerate
python3 scripts/generate_stations.py \
wienerlinien-ogd-haltestellen.csv \
wienerlinien-ogd-steige.csv \
wienerlinien-ogd-linien.csv
API
Uses the Wiener Linien Realtime API v1.5:
GET http://www.wienerlinien.at/ogd_realtime/monitor?stopId=<rbl>&stopId=<rbl>…
No API key required. Multiple stop IDs are batched into one request per poll.
License
MIT. See LICENSE.