很棒的 WM:在启动时按特定顺序放置平铺客户端
Awesome WM: Placing tiled clients in specific order on startup
大约一周前我安装了 Awesome WM。从那时起,我一直在尝试在启动时以特定顺序放置终端客户端(裸终端和 vim、vifm、htop)。这是我要实现的目标的直观表示:
########################
# # htop #
# ###########
# vim # bare #
# ###########
# # vifm #
########################
我已经设法将 vim 放在正确的位置,但其他 windows 的放置顺序似乎是任意的,每次重新启动时都会发生变化。这是我的 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。我应该添加哪个客户端 属性 以获得所需的行为?
我不明白你的意思:“我遇到问题的标签布局向左平铺。” 我假设你的意思是你的终端是没有正确平铺?几年前我使用 AwesomeWM 大约一个星期,但很快意识到它需要大量修改才能准确地获得您想要的效果。你的遭遇正是我 运行 所关注的。
发现使用 LXDE 和 Devilspie2 更容易。您可以 Lua 脚本 windows 取消修饰和最大化,跳转到其他桌面或任何您想要的,相当容易。 可能会帮助您到达目的地,但很难说,因为您的问题没有得到澄清。
local screenwidth = awful.screen.geometry.width
local screenheight = awful.screen.geometry.height
local halfwidth = math.floor( screenwidth /2 )
local thirdheight = math.floor( screenheight /3 )
awful .spawn( terminal .." -e vim", {
tag = "edit",
width = halfwidth,
height = screenheight,
placement = awful .placement .left,
callback = function(c) awful .client .setmaster(c) end } )
awful .spawn( terminal.." -e htop", {
tag = "edit",
width = halfwidth,
height = thirdheight,
placement = awful .placement .top_right } )
awful .spawn( terminal, { -- bare
tag = "edit",
width = halfwidth,
height = thirdheight,
placement = awful .placement .right } )
awful .spawn( terminal .." -e vifm", {
tag = "edit",
width = halfwidth,
height = thirdheight,
placement = awful .placement .bottom_right } )
此外,我要指出 Conky 可能是一个可行的解决方案,如果您只是想在桌面上查看终端输出,同时在 Lua.[=12 中编写脚本=]
要在启动时在所需位置生成客户端,应使用 回调 选项。这是与该问题相关的 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 })
在前一个客户端的回调函数中生成下一个客户端确保放置 属性 将为它们保留。
大约一周前我安装了 Awesome WM。从那时起,我一直在尝试在启动时以特定顺序放置终端客户端(裸终端和 vim、vifm、htop)。这是我要实现的目标的直观表示:
########################
# # htop #
# ###########
# vim # bare #
# ###########
# # vifm #
########################
我已经设法将 vim 放在正确的位置,但其他 windows 的放置顺序似乎是任意的,每次重新启动时都会发生变化。这是我的 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。我应该添加哪个客户端 属性 以获得所需的行为?
我不明白你的意思:“我遇到问题的标签布局向左平铺。” 我假设你的意思是你的终端是没有正确平铺?几年前我使用 AwesomeWM 大约一个星期,但很快意识到它需要大量修改才能准确地获得您想要的效果。你的遭遇正是我 运行 所关注的。
发现使用 LXDE 和 Devilspie2 更容易。您可以 Lua 脚本 windows 取消修饰和最大化,跳转到其他桌面或任何您想要的,相当容易。 可能会帮助您到达目的地,但很难说,因为您的问题没有得到澄清。
local screenwidth = awful.screen.geometry.width
local screenheight = awful.screen.geometry.height
local halfwidth = math.floor( screenwidth /2 )
local thirdheight = math.floor( screenheight /3 )
awful .spawn( terminal .." -e vim", {
tag = "edit",
width = halfwidth,
height = screenheight,
placement = awful .placement .left,
callback = function(c) awful .client .setmaster(c) end } )
awful .spawn( terminal.." -e htop", {
tag = "edit",
width = halfwidth,
height = thirdheight,
placement = awful .placement .top_right } )
awful .spawn( terminal, { -- bare
tag = "edit",
width = halfwidth,
height = thirdheight,
placement = awful .placement .right } )
awful .spawn( terminal .." -e vifm", {
tag = "edit",
width = halfwidth,
height = thirdheight,
placement = awful .placement .bottom_right } )
此外,我要指出 Conky 可能是一个可行的解决方案,如果您只是想在桌面上查看终端输出,同时在 Lua.[=12 中编写脚本=]
要在启动时在所需位置生成客户端,应使用 回调 选项。这是与该问题相关的 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 })
在前一个客户端的回调函数中生成下一个客户端确保放置 属性 将为它们保留。