멋진 wm 구성에서 각 구성 요소와 관련된 코드를 분리하세요.

멋진 wm 구성에서 각 구성 요소와 관련된 코드를 분리하세요.

이것은 기본 Awesome wm 구성에서 상단 표시줄을 만드는 데 사용되는 코드입니다.

awful.screen.connect_for_each_screen(function(s)
    -- Wallpaper
    set_wallpaper(s)

    -- Each screen has its own tag table.
    awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9" }, s, awful.layout.layouts[1])

    -- Create a promptbox for each screen
    s.mypromptbox = awful.widget.prompt()
    -- Create an imagebox widget which will contain an icon indicating which layout we're using.
    -- We need one layoutbox per screen.
    s.mylayoutbox = awful.widget.layoutbox(s)
    s.mylayoutbox:buttons(gears.table.join(
                           awful.button({ }, 1, function () awful.layout.inc( 1) end),
                           awful.button({ }, 3, function () awful.layout.inc(-1) end),
                           awful.button({ }, 4, function () awful.layout.inc( 1) end),
                           awful.button({ }, 5, function () awful.layout.inc(-1) end)))
    -- Create a taglist widget
    s.mytaglist = awful.widget.taglist {
        screen  = s,
        filter  = awful.widget.taglist.filter.all,
        buttons = taglist_buttons
    }

    -- Create a tasklist widget
    s.mytasklist = awful.widget.tasklist {
        screen  = s,
        filter  = awful.widget.tasklist.filter.currenttags,
        buttons = tasklist_buttons
    }

    -- Create the wibox
    s.mywibox = awful.wibar({ position = "top", screen = s })

    -- Add widgets to the wibox
    s.mywibox:setup {
        layout = wibox.layout.align.horizontal,
        { -- Left widgets
            layout = wibox.layout.fixed.horizontal,
            mylauncher,
            s.mytaglist,
            s.mypromptbox,
        },
        s.mytasklist, -- Middle widget
        { -- Right widgets
            layout = wibox.layout.fixed.horizontal,
            mykeyboardlayout,
            wibox.widget.systray(),
            mytextclock,
            s.mylayoutbox,
        },
    }
end)

태그 관리, 네비게이션 관련 코드를 별도의 모듈로 분리하려고 합니다. 보시다시피, 막대 설정은 wibar:setup다양한 위젯에 대한 설명을 매개변수로 사용하는 호출로 수행됩니다.

이 템플릿에서 태그 관련 코드를 어떻게 분리할 수 있나요? 이것이 내가 지금까지 한 일입니다:

function pkg.SetTags(lst)
    pkg.taglist = lst

    keys = {}
    for i,c in ipairs(tagList) do
        keys = gears.table.join(keys,
            -- View tag only.
            awful.key(
                { modkey }, c,
                viewTagHook(i)
            ),
            -- Toggle tag display.
            awful.key(
                { modkey, "Control" }, c,
                viewToggleHook(i)
            ),
            -- Move client to tag.
            awful.key(
                { modkey, "Shift" }, c,
                moveClientHook(i)
            ),
            -- Toggle tag on focused client.
            awful.key(
                { modkey, "Control", "Shift" }, c,
                viewClienHook(i)
            )
        )
    end

end

관련 정보