Naughtyを使ったrc.luaのデバッグ
~/.config/awesome/rc.luaを書き換えた後に期待通り動かないときに、原因を探るのにはNaughtyを使って変数の値を調べるのが便利。
http://awesome.naquadah.org/wiki/Naughty
rc.luaに以下のような関数を定義する
function dbg(msg, var) local text = "<b>" .. msg .. "</b><br/>" text = text .. "type: " .. type(var) .. "<br/>" if var ~= nil then if type(var) == "string" or type(var) == "number" or type(var) == "nil" then text = text .. "value: " .. var elseif type(var) == "table" then text = text .. "value:<br/> " for k, v in pairs(var) do text = text .. " " .. tostring(k) .. " | " .. tostring(v) .. "<br/>" end else text = text .. "value: " .. tostring(var) .. "<br/>" end end naughty.notify({ text = text, timeout = 0}) end
この関数を適当なキーバインドからよび出せるようにしておくと、値が知りたい関数の名前を入力するだけなので楽。
awful.key({ modkey, "Shift" }, "x", function () awful.prompt.run({ prompt = "variable name: " }, mypromptbox[mouse.screen].widget, function (var) awful.util.eval("dbg('" .. var .. "'," .. var .. ")") end) end),
typeがtableでない時に属性を取得できれば、もっと便利になるのだがやり方がわからなかった。例えば、変数の型がtagの時にnameを表示してくれたりすると、コードを調べたりリファレンスを調べる手間が省けるのでありがたい。
あと変数名が長くなってくると毎回入力するのが面倒なので履歴を使えるようにしたい。