From 4e529b49e64630e58af330e64f5ba6295be2cc19 Mon Sep 17 00:00:00 2001 From: Tim Scheuermann Date: Wed, 9 Oct 2019 14:55:23 +0200 Subject: [PATCH] Expose the widget dimensions to commands in cmdrunner --- modules/cmdrunner/settings.go | 6 ++++++ modules/cmdrunner/widget.go | 12 ++++++++++++ 2 files changed, 18 insertions(+) diff --git a/modules/cmdrunner/settings.go b/modules/cmdrunner/settings.go index 3f6c13db..f1c33f04 100644 --- a/modules/cmdrunner/settings.go +++ b/modules/cmdrunner/settings.go @@ -19,6 +19,10 @@ type Settings struct { cmd string `help:"The terminal command to be run, withouth the arguments. Ie: ping, whoami, curl."` tail bool `help:"Automatically scroll to the end of the command output."` maxLines int `help:"Maximum number of lines kept in the buffer."` + + // The dimensions of the module + width int + height int } // NewSettingsFromYAML loads the cmdrunner portion of the WTF config @@ -33,5 +37,7 @@ func NewSettingsFromYAML(name string, moduleConfig *config.Config, globalConfig maxLines: moduleConfig.UInt("maxLines", 256), } + settings.width, settings.height = utils.CalculateDimensions(moduleConfig, globalConfig) + return &settings } diff --git a/modules/cmdrunner/widget.go b/modules/cmdrunner/widget.go index ddcfd36d..6e8ffecb 100644 --- a/modules/cmdrunner/widget.go +++ b/modules/cmdrunner/widget.go @@ -3,6 +3,7 @@ package cmdrunner import ( "bytes" "fmt" + "os" "os/exec" "strings" "sync" @@ -108,6 +109,7 @@ func (widget *Widget) execute() { // Setup the command to run cmd := exec.Command(widget.settings.cmd, widget.settings.args...) cmd.Stdout = widget + cmd.Env = widget.environment() // Run the command and wait for it to exit in another Go-routine go func() { @@ -134,3 +136,13 @@ func (widget *Widget) drainLines(n int) { widget.buffer.ReadBytes('\n') } } + +func (widget *Widget) environment() []string { + envs := os.Environ() + envs = append( + envs, + fmt.Sprintf("WTF_WIDGET_WIDTH=%d", widget.settings.width), + fmt.Sprintf("WTF_WIDGET_HEIGHT=%d", widget.settings.height), + ) + return envs +}