我试图通过以下方式修改我的rc.lua文件:当我按下Mod4 + R,AwesomeWM键绑定来运行命令时,我希望Rofi出现,模糊我的壁纸并隐藏屏幕上的所有内容。我只想要看到模糊壁纸上的Rofi提示。
为实现这一目标,我的conf文件中包含以下代码。我正在使用AwesomeWM v3.5.9(Mighty Ravendark)和Lua 5.3.3:
--From PROmpt COMmand:
procom = "rofi -show run"
awful.key({ modkey }, "r", function () awful.util.spawn(procom)
for _,c in ipairs(client.get()) do
if c:isvisible() then
mywibox[mouse.screen].visible = not mywibox[mouse.screen].visible
else
mywibox[mouse.screen].visible = mywibox[mouse.screen].visible
end
end
end),
重新启动AwesomeWM根本不会抱怨,但我的wibox不会消失。如果我将代码更改为一些微不足道的东西(例如if mywibox[mouse.screen],visible
作为条件语句),小部件将消失,但即使我退出Rofi,只有返回一个空的黑条将保留在那里再次召唤Rofi时的初始状态(这是由我最初的陈述引起的,这就是我认为是微不足道的原因)。
答案 0 :(得分:2)
对于新问题:
您的代码段不起作用,因为您检查客户端是否可见,然后切换随机wibox(好吧,不是那么随机)。如果你为每个客户做这件事,wibox会被多次显示和隐藏。因此,你最终会恢复到原来的状态变化约50%,没有wibox变化约50%,也没办法让它恢复原状。
我将扩展我之前答案的最后部分,因为它现在是问题。
你想要什么:
mywibox
)问题是:
问题3:
不是你的错,3.5没有关于这个的文档,维基也同样令人困惑。
awful.wibox
(现已更名为wibar)就是屏幕顶部的东西wibox
是屏幕上随机自由浮动的小部件。 Wibar是一种像面板一样的wibox。问题2:
这个很棘手。启动命令时,应用程序出现之间会有一段延迟。有办法检测它,但它们并非无足轻重。现在你可以忽略这个问题。
问题1:
这是你真正需要解决的问题。 Awesome 3.5没有良好的API来跟踪从命令到应用程序退出的生命周期。令人敬畏的4.0有点好,但这是一个难以解决的问题。但是,您应该能够知道rofi的class
(使用xprop
)。一旦你知道这一点,你就可以通过关心"在rofi退出时做一个事件来简化问题"。代码是:
client.connect_signal("unmanage", function(c)
if c.class == "whatever_its_class_is" then
-- watch out of you have multiple screens, this may be too simplified.
mywibox[mouse.screen].visible = true
-- show the first tag, change this to what you prefer
awful.tag.gettags(mouse.screen)[1].selected = true
end
end)
问题4:
隐藏当前标记的简单方法(假设您有1个屏幕和1个选定标记,为了简单起见)
awful.tag.selected().selected = false
隐藏主要wibar(假设您保留默认名称)
mywibox[mouse.screen].visible = false
原始答案:(问题已更改)
嗯,c
只是一个变量。在这种情况下,您从未定义过它,因此它是nil
。
我想你想要所有当前可见的客户端。要检查,请使用client:isvisible()。
您可以使用
循环遍历所有客户端for _, c in ipairs(client.get()) do
if c:isvisible() then
-- do something
end
end
如客户文档(https://awesomewm.org/apidoc/classes/client.html [1])
所示话虽如此,我不知道描述和问题/代码是如何适合的。如果要隐藏所有内容,请取消选择所有标记并隐藏wibar。与标题栏(客户端上的东西)混淆似乎是不必要的。
[1]该链接适用于Awesome 4.0,但在这种情况下与3.5 API没有什么不同。
答案 1 :(得分:0)
我rc.lua
中的整个功能。工作正常,但我计划在未来改进它。但是,完全回答这个问题。
-- Prompt
awful.key({ modkey }, "r",
function ()
myscreen = awful.screen.focused()
commandPrompter = "rofi -show run -normal-window"
blur = "hsetroot -fill /usr/local/share/awesome/themes/modded/back$
unblur = "hsetroot -fill /usr/local/share/awesome/themes/modded/back$
awful.spawn(commandPrompter)
myscreen.mywibox.visible = false
awful.spawn(blur)
end),