lua - 真棒 WM : Placing tiled clients in specific order on startup

标签 lua awesome-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 })

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

关于lua - 真棒 WM : Placing tiled clients in specific order on startup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64670801/

相关文章:

awesome-wm - Awesome 中的不同布局是如何工作的?

linux - AwesomeWM 壁纸更改

file - Lua 5.2中的沙箱

variables - 计算表中未知变量的数量

android - 用于 iOS 和 Android 开发的 Corona vs Titanium

nginx - 如何使用 Nginx 和 Lua 操作 POST 请求的 JSON 正文?

linux - 编辑 rc.lua 时的 Tabcompletion 和 docview

lua - awesome wm 登录时崩溃

lua - Awesome WM (v3.5.5) keygrabber 替代品

c - Lua C 函数调用返回 nil