在awesome4.0 中,有没有办法只在浮动窗口上显示标题栏?
查看文档,似乎没有开箱即用的选项。
指定;我正在寻找一种解决方案,当我在平铺和浮动之间动态切换窗口时,该解决方案有效。
有点晚了,但我也想这样做,而且我大部分时间都在工作。当您希望客户端显示或隐藏其标题栏时,它并未涵盖所有情况,但对于我的用例来说已经足够接近了。比较简单,首先你需要为每个客户端禁用标题栏,所以添加titlebars_enabled = false匹配所有客户端的默认规则的属性。
然后,当客户端浮动时,您需要在其标题栏上切换,并在停止浮动时将其关闭。
我写了这个小辅助函数来使代码更清晰。这很简单,如果s是true然后显示栏,否则隐藏它。但是有一个问题,在我们的例子中,windows 从来没有标题栏,所以它还没有被创建。如果当前为空,我们发送信号为我们构建一个。
-- 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
Run Code Online (Sandbox Code Playgroud)
现在我们可以挂钩属性更改:
--Toggle titlebar on floating status change
client.connect_signal("property::floating", function(c)
setTitlebar(c, c.floating)
end)
Run Code Online (Sandbox Code Playgroud)
但这仅适用于在创建后更改状态的客户端。我们需要一个钩子用于新客户的浮动或浮动标签:
-- 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)
Run Code Online (Sandbox Code Playgroud)
最后,如果当前布局是浮动的,客户端没有设置浮动属性,所以我们需要添加一个用于布局更改的钩子,以在客户端内部添加标题栏。
-- 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)
Run Code Online (Sandbox Code Playgroud)
我不想花太多时间在这上面,所以它不包括客户端在浮动布局中被标记的情况,或者客户端被多次标记并且其中一个标记是浮动的。
| 归档时间: |
|
| 查看次数: |
1550 次 |
| 最近记录: |