nix/config/sketchybar/utils.lua

33 lines
947 B
Lua

local Promise = require 'promise'
local M = {}
function M.dump(o)
if type(o) == 'table' then
local s = '{'
for k, v in pairs(o) do
if type(k) ~= 'number' then k = '"' .. k .. '"' end
s = s .. ' [' .. k .. '] = ' .. M.dump(v) .. ','
end
return s .. '} '
else
return tostring(o)
end
end
local function onErrorP(reason) print('Error found: ' .. (reason and M.dump(reason) or 'unknown')) end
-- https://github.com/Tnixc/nix-config/blob/main/home/programs/aerospace-sketchybar/sbar-config-libs/items/aerospaces.lua
function M.sbarExecP(cmd)
return Promise.new(function(resolve, failfunc)
sbar.exec(cmd, function(result, exit_code)
if exit_code ~= 0 then
if failfunc ~= nil then failfunc(string.format('Exit Code: %s Message: %s', tostring(exit_code), M.dump(result))) end
else
if resolve ~= nil then resolve(result) end
end
end)
end):catch(onErrorP)
end
return M