Awesome WM 3.5 中是否有任何与 awful.prompt 相关的事件?
are there any events related to awful.prompt in Awesome WM 3.5?
我想知道是否可以从 awful.prompt 小部件捕获事件,例如当小部件被激活时的事件:
myprompt:run()
或者当用户按 Enter 来验证他的输入或 Esc 到 leave/quit 这个小部件时。
无法直接在 awful.widget.prompt 上连接信号,但可以在执行命令后向提示小部件指定一些指令:
在 awful/widget/prompt.lua 中 运行 函数启动 awful.prompt.run():
local function run(promptbox)
return prompt.run({ prompt = promptbox.prompt },
promptbox.widget,
function (...)
local result = util.spawn(...)
if type(result) == "string" then
promptbox.widget:set_text(result)
end
end,
completion.shell,
util.getdir("cache") .. "/history")
end
一些参数是:
- args A table 带有可选参数:fg_cursor、bg_cursor、ul_cursor、提示、文本、全选、字体、自动执行。
- textbox 用于提示的文本框。
- exe_callback 完成后以命令为参数调用的回调函数。
- completion_callback 调用完成的回调函数。
- history_path 可选参数:保存历史的文件路径,设置为nil则禁用历史
- history_max 可选参数:设置历史文件的最大条目数,默认为50
- done_callback 可选参数:无论提示是否被取消,始终不带参数调用的回调函数。
- changed_callback可选参数:命令改变时以命令为参数调用的回调函数。
- keypressed_callback
所以我只需要在提示框中使用 awful.prompt.run 并指定 done_callback
示例:wibox中的提示框。按下Mod4 + r键时显示wibox,执行命令时隐藏wibox:
awful.key({ modkey }, "r", function ()
--promptlist is a table that contains wibox for each screen
if promptlist[mouse.screen].visible == false then
promptlist[mouse.screen].visible=true
awful.prompt.run({
prompt = promptlist.prompt[mouse.screen].prompt },
promptlist.prompt[mouse.screen].widget,
function (...)
local result = awful.util.spawn(...)
if type(result) == "string" then
promptlist.prompt[mouse.screen].widget:set_text(result)
--promptlist.prompt table that contains prompt widget for each screen
end
end,
awful.completion.shell,
awful.util.getdir("cache") .. "/history",
50,
function()
promptlist[mouse.screen].visible = false
end
)
else
promptlist[mouse.screen].visible=false
end
end),
我想知道是否可以从 awful.prompt 小部件捕获事件,例如当小部件被激活时的事件:
myprompt:run()
或者当用户按 Enter 来验证他的输入或 Esc 到 leave/quit 这个小部件时。
无法直接在 awful.widget.prompt 上连接信号,但可以在执行命令后向提示小部件指定一些指令:
在 awful/widget/prompt.lua 中 运行 函数启动 awful.prompt.run():
local function run(promptbox)
return prompt.run({ prompt = promptbox.prompt },
promptbox.widget,
function (...)
local result = util.spawn(...)
if type(result) == "string" then
promptbox.widget:set_text(result)
end
end,
completion.shell,
util.getdir("cache") .. "/history")
end
一些参数是:
- args A table 带有可选参数:fg_cursor、bg_cursor、ul_cursor、提示、文本、全选、字体、自动执行。
- textbox 用于提示的文本框。
- exe_callback 完成后以命令为参数调用的回调函数。
- completion_callback 调用完成的回调函数。
- history_path 可选参数:保存历史的文件路径,设置为nil则禁用历史
- history_max 可选参数:设置历史文件的最大条目数,默认为50
- done_callback 可选参数:无论提示是否被取消,始终不带参数调用的回调函数。
- changed_callback可选参数:命令改变时以命令为参数调用的回调函数。
- keypressed_callback
所以我只需要在提示框中使用 awful.prompt.run 并指定 done_callback
示例:wibox中的提示框。按下Mod4 + r键时显示wibox,执行命令时隐藏wibox:
awful.key({ modkey }, "r", function ()
--promptlist is a table that contains wibox for each screen
if promptlist[mouse.screen].visible == false then
promptlist[mouse.screen].visible=true
awful.prompt.run({
prompt = promptlist.prompt[mouse.screen].prompt },
promptlist.prompt[mouse.screen].widget,
function (...)
local result = awful.util.spawn(...)
if type(result) == "string" then
promptlist.prompt[mouse.screen].widget:set_text(result)
--promptlist.prompt table that contains prompt widget for each screen
end
end,
awful.completion.shell,
awful.util.getdir("cache") .. "/history",
50,
function()
promptlist[mouse.screen].visible = false
end
)
else
promptlist[mouse.screen].visible=false
end
end),