No description
Find a file
2020-02-16 05:22:06 +00:00
ambient.d/trains ÖBB post-review changes 2020-01-06 20:05:18 +00:00
bitbar Make BitBar plugin configurable to hide when empty 2020-02-16 05:13:22 +00:00
functions.d Add macOS support 2020-01-05 17:47:37 +01:00
lib Always use Emoji for widgets 2020-01-23 19:23:46 +01:00
widgets.d/trains Merge pull request #5 from tjarksaul/master 2020-01-30 12:12:12 +00:00
ambient Exclude empty lines in output 2020-01-02 21:20:16 +00:00
ambient-widgets MVP widget system 2020-01-02 16:52:42 +00:00
LICENSE LICENSE 2020-01-04 13:34:30 +00:00
README.md Document the config option 2020-02-16 05:22:06 +00:00

ambient

This is a script which captures ambient information available on certain public networks, such as the route, speed and delay information available on:

  • German ICE trains
  • Eurostar
  • Austrian RailJet trains

If you spot a network with some tidbits of information available, please open a PR to add it!

Requirements

The set of dependencies is intentionally kept small:

  • fish (the shell)
  • iw (to check what network you're on)
  • jq
  • The POSIX standard tools, such as grep and sed

Usage

If you just run ambient on its own, it'll output all the data it can find in KEY=VALUE format, such that it can be given to env.

As a convenience, running eg. ambient myscript.py will run the given command with all of this data in the environment.

Example output (abbreviated):

$ ./ambient
AMBIENT_DE_ICE_SPEED=158
AMBIENT_DE_ICE_SPEED_UNIT=km/h
AMBIENT_DE_ICE_TZN=Tz4652
AMBIENT_DE_ICE_SERIES=406
AMBIENT_DE_ICE_WAGON_CLASS=SECOND
AMBIENT_DE_ICE_TRAIN_TYPE=ICE
AMBIENT_DE_ICE_TRIP_DATE=2020-01-02
AMBIENT_DE_ICE_VZN=14
AMBIENT_DE_ICE_STOP_FIRST=Frankfurt (Main) Hbf
AMBIENT_DE_ICE_STOP_FIRST_DEPART_SCHEDULED=2020-01-02T13:29:00Z
AMBIENT_DE_ICE_STOP_FIRST_DEPART_ACTUAL=2020-01-02T13:54:00Z
AMBIENT_DE_ICE_STOP_FIRST_DEPART_DELAY=+25
AMBIENT_DE_ICE_STOP_LAST=Bruxelles Midi
AMBIENT_DE_ICE_STOP_LAST_ARRIVE_SCHEDULED=2020-01-02T16:35:00Z
AMBIENT_DE_ICE_STOP_LAST_ARRIVE_ACTUAL=2020-01-02T17:32:00Z
AMBIENT_DE_ICE_STOP_LAST_ARRIVE_DELAY=+57
AMBIENT_DE_ICE_STOP_NEXT=Bruxelles-Nord
AMBIENT_DE_ICE_STOP_NEXT_DEPART_SCHEDULED=2020-01-02T16:28:00Z
AMBIENT_DE_ICE_STOP_NEXT_DEPART_ACTUAL=2020-01-02T17:25:00Z
AMBIENT_DE_ICE_STOP_NEXT_DEPART_DELAY=+57
AMBIENT_DE_ICE_STOP_NEXT_ARRIVE_SCHEDULED=2020-01-02T16:26:00Z
AMBIENT_DE_ICE_STOP_NEXT_ARRIVE_ACTUAL=2020-01-02T17:23:00Z
AMBIENT_DE_ICE_STOP_NEXT_ARRIVE_DELAY=+57

Running ambient-widgets will run the built-in widget scripts (WIP, uses Font Awesome):

$ ./ambient-widgets
 Bruxelles-Nord
 ICE-14
 219 km/h

Status bar usage

Do you want to see how late your current train is, from the comfort of your status bar? Look no further!

awesomewm (+ vicious)

Create a custom widget which calls the widget script, and replace all newlines with spaces.

myambien = wibox.widget.textbox()
vicious.register(myambien, function(format, warg)
    local f = io.popen("echo -n ' '; " .. os.getenv("HOME") .. "/Projects/src/github.com/liclac/ambient/ambient-widgets")
    local out = f:read("*all")
    f:close()
    return { out:gsub('\n', ' ') }
end, "$1", 31)

Remember to add it to your wibox list! Search for mytextclock with a default configuration.

BitBar

Link bitbar/ambient.60s.sh into your BitBar plugin directory.

ln -s $(pwd)/bitbar/ambient.60s.sh ~/.bitbar

You can put a file named bitbar/plugins/ambient.json in one of the usual locations (e.g. ~/.config) to configure the plugin:

  • If showIfEmpty is false, the plugin will disappear entirely from your menu bar as long as you're not in a known network. Note that BitBar displays its own menu if none of the plugins are active. (Default: true)

Why fish? Why not bash or zsh?

First of all, this was written on a horribly delayed ICE train, and I happen to use fish as my daily driver.

Second, it's quite fast and has a number of nice features like lazy-loaded functions, and semantics that make it harder to shoot yourself in the foot.

If people want it migrated to bash or zsh, that's totally doable.