我大约一周前安装了 Awesome WM。从那时起,我一直尝试在启动时按特定顺序放置终端客户端(裸终端和 vim、vifm、htop)。这是我想要实现的目标的直观表示:
########################
# # htop #
# ###########
# vim # bare #
# ###########
# # vifm #
########################
我已经设法将 vim 放置在正确的位置,但其他窗口的放置顺序似乎是任意的,并且随着每次重新启动而改变。这是我的 autostart.lua 配置的内容:
1 local awful = require("awful")
1
2 awful.spawn.single_instance(terminal.."-e xmodmap ~/.Xmodmap; exit")
3 awful.spawn.single_instance("brave-browser", {
4 fullscreen = true,
5 focus = true
6 })
7
8 awful.spawn(terminal.." -e vim", {
9 tag = "edit",
10 placement = awful.placement.left,
11 callback = function(c) awful.client.setmaster(c) end})
12 awful.spawn(terminal.." -e htop", {
13 tag = "edit",
14 height = 80,
15 placement = awful.placement.top_right})
16 awful.spawn(terminal, {
17 tag = "edit",
18 placement = awful.placement.right})
19 awful.spawn(terminal.." -e vifm", {
20 tag = "edit",
21 placement = awful.placement.bottom_right})
22
23 awful.spawn(terminal.." -e neomutt", {
24 tag = "communication",
25 fullscreen = true })
26
27 awful.spawn("Spotify", { tag = "read" })
我遇到问题的标签布局是“tile”。我使用的是 Awesome v4.3。我应该添加什么客户端属性才能获得所需的行为?
最佳答案
为了让客户端在启动时出现在所需的位置,应使用回调选项。这是与该问题相关的 autostart.lua 文件的一部分:
1 local awful = require("awful")
1
2 local function spawn_vifm ()
3 awful.spawn(terminal.." -e vifm", {
4 tag = "edit",
5 placement = awful.placement.bottom_right
6 })
7 end
8
9 local function spawn_term ()
10 awful.spawn(terminal, {
11 tag = "edit",
12 placement = awful.placement.right,
13 callback = function(c) spawn_vifm() end
14 })
15 end
16
17 local function spawn_htop ()
18 awful.spawn(terminal.." -e htop", {
19 tag = "edit",
20 placement = awful.placement.top_right,
21 callback = function(c) spawn_term() end
22 })
23 end
.......
38 awful.spawn(terminal.." -e vim", {
39 tag = "edit",
40 placement = awful.placement.left,
41 callback = function(c)
42 awful.client.setmaster(c)
43 store_active_client(awful.tag.find_by_name(awful.screen.focused(), "edit"), c)
44 spawn_htop()
45 end
46 })
在前一个客户端的回调函数中生成下一个客户端可确保为它们保留放置属性。
关于lua - 真棒 WM : Placing tiled clients in specific order on startup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64670801/