仅在浮动窗口上显示标题栏
在awesome 4.0中,有没有一种方法仅在浮动窗口上显示标题栏?
查看文档,似乎没有开箱即用的选项。
要指定的是,我正在寻找一个可以在我动态切换窗口的平铺和浮动之间正常工作的解决方案。
有点晚了,但我也想做这个并且我基本上弄好了。它没有涵盖所有情况,当您期望客户端显示或隐藏标题栏时,但对于我的用例来说足够接近了。
这相当简单,首先,您需要对所有客户端禁用标题栏,因此在匹配所有客户端的默认规则的属性中添加titlebars_enabled=false。
然后,当客户端变为浮动时,您需要切换标题栏,并在停止浮动时将其切换掉。
我编写了这个小助手函数以使代码更清晰。它相当简单,如果s为true,则显示栏,在其他情况下隐藏它。但是有一个注意点,在我们的情况下,窗口从未有过标题栏,因此它尚未创建。我们发送信号以请求为我们构建一个标题栏,如果当前标题栏为空。
-- Toggle titlebar on or off depending on s. Creates titlebar if it doesn't exist
local function setTitlebar(client, s)
if s then
if client.titlebar == nil then
client:emit_signal("request::titlebars", "rules", {})
end
awful.titlebar.show(client)
else
awful.titlebar.hide(client)
end
end
现在,我们可以连接属性更改:
--Toggle titlebar on floating status change
client.connect_signal("property::floating", function(c)
setTitlebar(c, c.floating)
end)
但是这仅适用于在创建后更改状态的客户端。我们需要钩子来处理新的客户端,这些客户端在浮动或在浮动标签中诞生:
-- Hook called when a client spawns
client.connect_signal("manage", function(c)
setTitlebar(c, c.floating or c.first_tag.layout == awful.layout.suit.floating)
end)
最后,如果当前布局是浮动的,则客户端没有设置浮动属性,因此我们需要在布局更改时添加挂钩以在内部为客户端添加标题栏。
-- Show titlebars on tags with the floating layout
tag.connect_signal("property::layout", function(t)
-- New to Lua ?
-- pairs iterates on the table and return a key value pair
-- I don't need the key here, so I put _ to ignore it
for _, c in pairs(t:clients()) do
if t.layout == awful.layout.suit.floating then
setTitlebar(c, true)
else
setTitlebar(c, false)
end
end
end)
我不想花费太多时间在这上面,因此它不涵盖将客户端标记为浮动布局的情况,或者当客户端被多次标记并且其中一个标记是浮动的情况。
Niverton的解决方案非常适用于简单地从平铺模式切换到浮动模式;然而,当窗口最大化然后再次取消最大化,浮动窗口将失去它们的标题栏。为了解决这个问题,更好的解决方案是将
client.connect_signal("property::floating", function(c)
setTitlebar(c, c.floating)
end)
替换为
client.connect_signal("property::floating", function(c)
setTitlebar(c, c.floating or c.first_tag and c.first_tag.layout.name == "floating")
end)
这应该解决这个问题,这样窗口就可以正确地最大化,而不需要切换到平铺模式,然后再次切回来以获得标题栏。
我在由u / Ham5andw1ch提供的Reddit帖子中发现了这个总体想法。我只是使用Niverton提出的函数和一些短路逻辑来简化了代码。
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

将以下内容更改为:
{ rule_any = {type = { "normal", "dialog" } }, properties = { titlebars_enabled = true } },更改为:
{ rule_any = {type = { "dialog" } }, properties = { titlebars_enabled = true } },