diff --git a/man/waybar-image.5.scd b/man/waybar-image.5.scd index 2d09f666..09e871e3 100644 --- a/man/waybar-image.5.scd +++ b/man/waybar-image.5.scd @@ -13,7 +13,10 @@ The *image* module displays an image from a path. *path*: ++ typeof: string ++ The path to the image. - +*exec*: ++ + typeof: string ++ + The path to the script, which should return image path file + it will only execute if the path is not set *size*: ++ typeof: integer ++ The width/height to render the image. diff --git a/src/modules/image.cpp b/src/modules/image.cpp index 130fe790..22f49821 100644 --- a/src/modules/image.cpp +++ b/src/modules/image.cpp @@ -11,7 +11,6 @@ waybar::modules::Image::Image(const std::string& id, const Json::Value& config) dp.emit(); - path_ = config["path"].asString(); size_ = config["size"].asInt(); interval_ = config_["interval"].asInt(); @@ -42,8 +41,22 @@ void waybar::modules::Image::refresh(int sig) { } auto waybar::modules::Image::update() -> void { - Glib::RefPtr pixbuf; + util::command::res output_; + Glib::RefPtr pixbuf; + if(config_["path"].isString()) + { + path_ = config_["path"].asString(); + } + else if(config_["exec"].isString()) + { + output_ = util::command::exec(config_["exec"].asString()); + path_ =output_.out; + } + else + { + path_=""; + } if (Glib::file_test(path_, Glib::FILE_TEST_EXISTS)) pixbuf = Gdk::Pixbuf::create_from_file(path_, size_, size_); else