令人敬畏的3.5 - 顶部的两个面板(wiboxes)

时间:2013-10-20 16:38:58

标签: lua awesome-wm

在迁移到Awesome 3.5.1之前,我在屏幕顶部有两个面板(在彼此的顶部,有点),底部没有面板。我用来实现3.5之前版本的代码如下:

-- Create the wibox
mywibox[s] = awful.wibox({ position = "top", height = "32", screen = s })

-- Add widgets to the wibox - order matters
mywibox[s].widgets = {
    {
        {
            -- Upper left section
            mylauncher,
            mytaglist[s],
            mypromptbox[s],
            -- My custom widgets, separators etc...
            layout = awful.widget.layout.horizontal.leftright
        },
        {
            -- Upper right section
            mylayoutbox[s],
            mytextclock,
            -- More widgets, separators, etc...
            s == 1 and mysystray or nil,
            layout = awful.widget.layout.horizontal.rightleft
        },
    },
    {
        -- Lower section (only the tasklist)
        mytasklist[s],
    },
    layout = awful.widget.layout.vertical.flex,
    height = mywibox[s].height
}

现在我正在努力弄清楚如何使用3.5配置实现相同目标。目前我使用非常基本的一个面板(大多数小部件)在顶部,一个(与任务列表)在底部。代码如下所示:

    -- Create the wibox
mywibox[s] = awful.wibox({ position = "top", height = "18", screen = s })
mywibox2[s] = awful.wibox({ position = "bottom", height = "18", screen = s })

-- Widgets that are aligned to the left
local left_layout = wibox.layout.fixed.horizontal()
left_layout:add(mylauncher)
left_layout:add(mytaglist[s])
left_layout:add(mypromptbox[s])
-- My custom widgets, separators, etc...

-- Widgets that are aligned to the right
local right_layout = wibox.layout.fixed.horizontal()
if s == 1 then right_layout:add(wibox.widget.systray()) end
-- My custom widgets, separators, etc...
right_layout:add(mytextclock)
right_layout:add(mylayoutbox[s])

-- Now bring it all together
local layout = wibox.layout.align.horizontal()
layout:set_left(left_layout)
layout:set_right(right_layout)

local layout2 = wibox.layout.align.horizontal()
layout2:set_middle(mytasklist[s])

mywibox[s]:set_widget(layout)
mywibox2[s]:set_widget(layout2)

如果有人有想法如何编辑我当前的rc.lua以使其像Awesome 3.4。*中的上层代码一样工作,那将非常感激。

2 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情,不知道它是否完全符合您的要求(根据您的代码,32是您的wibox的高度):

local const = wibox.layout.constraint()
const:set_widget(layout)
const:set_strategy("exact")
const:set_height(32/2)

local l = wibox.layout.fixed.vertical()
l:add(const)
l:add(mytasklist[s])

mywibox[s]:set_widget(l)

首先,它创建一个“约束”布局,确保布局“布局”(应显示在顶部的小部件)总是大小为16px。然后它将此约束布局堆叠在任务列表的顶部,并在wibox中显示结果。

在最新版本中,有些代码可能会缩短一些,但我不确定3.5.1是否已经有了这些便利性参数。

答案 1 :(得分:0)

我用以下代码做了类似的事情:

wiboxes["top"]=awful.wibox({position="top",height=26})
local top_layout = wibox.layout.fixed.horizontal()
sublayout["cpu"] = wibox.layout.fixed.horizontal()
for i=2,3 do
  sublayout["cpu" .. i] = wibox.layout.fixed.horizontal()
  sublayout["cpu" .. i]:add(graphs["cpu"]..i) -- the graphs table already initialized
  sublayout["cpu" .. i]:add(textboxes["cpu"]..i) -- textboxes table already initialized
  sublayout["cpu"]:add(sublayout["cpu"..i)
end
.....
top_layout:add(sublayout["cpu"])
.....
wiboxes["top"]:set_widget(top_layout)

使用这段代码,我有两个图形和文本框来查看CPU使用情况(每个核心),第一个是顶部,第二个是关闭。它应该与taglist或任何其他小部件一起使用。