local M = {} local awful = require("awful") local object = require("gears.object") local function desktop_show(self, screen, page_idx) if page_idx == nil then local page_hist = self.page_history[screen] if page_hist ~= nil then page_idx = page_hist else page_idx = 1 end end local page = self.pages[page_idx] if page then self.page_history[screen] = page_idx end return page_idx end local function desktop_new(idx, name, nb_pages, layout) local ret = object() ret:add_signal("page:view") ret:add_signal("desktop:name") ret.show = desktop_show ret.name = name ret.pages = {} for i = 1, nb_pages do ret.pages[i] = awful.tag.add(name .. i, { layout = layout }) end -- page_history[i] is the last page viewed on screen i ret.page_history = {} return ret end M.new = desktop_new return M