diff options
Diffstat (limited to 'awesome/lib/awful/remote.lua')
-rw-r--r-- | awesome/lib/awful/remote.lua | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/awesome/lib/awful/remote.lua b/awesome/lib/awful/remote.lua new file mode 100644 index 0000000..7967f2f --- /dev/null +++ b/awesome/lib/awful/remote.lua @@ -0,0 +1,47 @@ +--------------------------------------------------------------------------- +--- Remote control module allowing usage of awesome-client. +-- +-- @author Julien Danjou <julien@danjou.info> +-- @copyright 2009 Julien Danjou +-- @module awful.remote +--------------------------------------------------------------------------- + +-- Grab environment we need +require("awful.dbus") +local load = loadstring or load -- luacheck: globals loadstring (compatibility with Lua 5.1) +local tostring = tostring +local ipairs = ipairs +local table = table +local unpack = unpack or table.unpack -- luacheck: globals unpack (compatibility with Lua 5.1) +local dbus = dbus +local type = type + +if dbus then + dbus.connect_signal("org.awesomewm.awful.Remote", function(data, code) + if data.member == "Eval" then + local f, e = load(code) + if f then + local results = { f() } + local retvals = {} + for _, v in ipairs(results) do + local t = type(v) + if t == "boolean" then + table.insert(retvals, "b") + table.insert(retvals, v) + elseif t == "number" then + table.insert(retvals, "d") + table.insert(retvals, v) + else + table.insert(retvals, "s") + table.insert(retvals, tostring(v)) + end + end + return unpack(retvals) + elseif e then + return "s", e + end + end + end) +end + +-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 |