很棒的 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 })

在前一个客户端的回调函数中生成下一个客户端确保放置 属性 将为它们保留。