如何解决很棒的WM:在启动时按特定顺序放置切片客户端
大约一周前,我已经安装了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 })
在上一个客户端的回调函数中生成下一个客户端,可以确保为这两个客户端保留放置属性。
,我不知道您的意思是什么:“问题所在的标签的布局左对齐。” 我假设您的意思是您的终端没有正确铺贴?几年前,我已经使用AwesomeWM大约一周了,但是很快就意识到,要想准确地获得它,它需要大量的修补工作。您正在发生的事情正是我所遇到的。
发现使用LXDE和Devilspie2更容易。您可以轻松地通过Lua脚本窗口取消装饰并最大化,跳转到其他桌面或任何您想要的东西。这种可能会帮助您到达目的地,但是很难在不弄清楚您的问题的情况下说。
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",height = thirdheight,placement = awful .placement .top_right } )
awful .spawn( terminal,{ -- bare
tag = "edit",placement = awful .placement .right } )
awful .spawn( terminal .." -e vifm",placement = awful .placement .bottom_right } )
此外,我要指出的是,Conky可能是一个可行的解决方案,如果您只是想在Lua中编写脚本时在桌面上查看终端输出。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。