微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

很棒的WM:在启动时按特定顺序放置切片客户端

如何解决很棒的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 举报,一经查实,本站将立刻删除。