From d00908fefd6abb6a746c00501cd7862203e15642 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=ADcolas=20D=2E=20Schmidt?= Date: Sun, 25 Dec 2022 17:50:59 -0300 Subject: [PATCH] widget.contrib.nvidia: create widget --- widget/contrib/nvidia.lua | 45 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 widget/contrib/nvidia.lua diff --git a/widget/contrib/nvidia.lua b/widget/contrib/nvidia.lua new file mode 100644 index 00000000..a51a91f0 --- /dev/null +++ b/widget/contrib/nvidia.lua @@ -0,0 +1,45 @@ +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luca CPZ + * (c) 2022, tronfy + +--]] + +local helpers = require("lain.helpers") +local wibox = require("wibox") + +-- NVIDIA GPU usage/temperature info (requires nvidia-smi) +-- lain.widget.contrib.nvidia + +local function factory(args) + args = args or {} + + local nvidia = { widget = args.widget or wibox.widget.textbox() } + local timeout = args.timeout or 5 + local exec = args.exec or "nvidia-smi --query-gpu=utilization.gpu,temperature.gpu --format=csv,noheader,nounits" + local format = args.format or "%.1f" + local settings = args.settings or function() end + + function nvidia.update() + gpu = { + usage = "N/A", + temp = "N/A" + } + + helpers.async(exec, function(f) + -- f -> "usage, temp" + gpu.usage, gpu.temp = f:match("([^,]+),([^,]+)") + gpu.temp = string.format(format, gpu.temp) + + widget = nvidia.widget + settings() + end) + end + + helpers.newtimer("nvidia-gpu", timeout, nvidia.update) + + return nvidia +end + +return factory