3

在迁移到 Awesome 3.5.1 之前,我的屏幕顶部有两个面板(彼此重叠,有点像),底部没有。我用来实现这个 pre-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.* 中那样工作,那将不胜感激。

4

2 回答 2

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)

首先,它创建一个“约束”布局,确保布局“布局”(应显示在顶部的小部件)始终获得 16 像素的大小。然后它将这个约束布局堆叠在任务列表的顶部,并在 wibox 中显示结果。

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

于 2013-10-23T20:07:08.143 回答
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 或任何其他小部件一起使用。

于 2013-10-21T11:19:55.003 回答