CmdRunner
Runs a terminal command on a schedule.
Configuration
cmdrunner:
args: ["-g", "batt"]
cmd: "pmset"
enabled: true
position:
top: 6
left: 1
height: 1
width: 3
refreshInterval: 30s
Attributes
Name | Value |
---|---|
args
The arguments to the command, with each item as an element in an array. |
|
cmd
The terminal command to be run, without the arguments. Ie: ping , whoami , curl .
|
|
maxLines
Optional The maximum number of lines to keep in the buffer. Default: 256 .
|
Any positive integer. |
pty
Optional Run the command in a pseudo-terminal. Some apps will behave differently if they are run in a terminal. For example, some apps will produce colorized output in a terminal, and non-colorized output otherwise. Default: false .
|
true , false |
tail
Optional Automatically scroll with new output. Default: false .
|
true , false |
Known limitations
Internally, CmdRunner relies on Golang's exec.Command()
to run terminal commands. As it does not invoke the system shell, not all commands are supported. To quote Golang docs, it "does not expand any glob patterns or handle other expansions, pipelines, or redirections typically done by shells."
Examples
brew outdated
Displays a list of all the installed Homebrew recipes that have an update available for them.
brew_outdated:
args: ["outdated"]
cmd: "brew"
enabled: true
position:
top: 3
left: 1
width: 2
height: 1
type: cmdrunner
iStats
iStats is a command line tool to view system stats on OSX.
istats:
args: ["all"]
cmd: "istats"
enabled: true
type: "cmdrunner"
position:
top: 0
left: 3
height: 2
width: 2
refreshInterval: 1s
Status Pages
Various services provide status apis which are accessible. For example, the
slack status api at https://status.slack.com/api/v2.0.0/current
This can be accomplished with jq and the cmdrunner module.
First, create a shell script:
#!/bin/sh
curl -s https://status.slack.com/api/v2.0.0/current | \
jq -r '"Status: " + (if (.status == "active") then "Active Incident" else "Ok" end),"Last Updated: " + .date_updated,if (.active_incidents[] | length) > 0 then "Active Incidents\n" + .active_incidents[] .title else "" end'
Second, the following wtfutil config:
slack_status:
cmd: "slack_status_check.sh"
enabled: true
type: "cmdrunner"
title: "Slack Status"
position:
top: 5
left: 0
height: 3
width: 4
refreshInterval: 30s
wego
wego is a command line tool to view weather, from a variety of weather services
weather:
args: ["0"]
cmd: "wego"
enabled: true
type: "cmdrunner"
position:
top: 0
left: 0
height: 1
width: 2
refreshInterval: 100s
Source Code
https://github.com/wtfutil/wtf/tree/master/modules/cmdrunner