init
This commit is contained in:
commit
d2743fe41d
22 changed files with 2290 additions and 0 deletions
85
lib/tree/init.lua
Normal file
85
lib/tree/init.lua
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
-- This source code form is subject to the terms of the MPL-v2 https://mozilla.org/MPL/2.0/ --
|
||||
--* .name Manages the tree structure that holds all monitors, containers, windows, and tags
|
||||
local X = require("x")
|
||||
local EWMH = require("ewmh")
|
||||
local Conf = require("conf")
|
||||
local Tree = {
|
||||
windows = {},
|
||||
monitors = {},
|
||||
focusedWindow = nil,
|
||||
focusedMonitor = nil,
|
||||
-- tags = {},
|
||||
}
|
||||
|
||||
-- local Tag = require("tree.tag")
|
||||
local Window = require("tree.window")
|
||||
|
||||
function Tree.newWindow(ev)
|
||||
local win = Window.new(ev.id)
|
||||
if EWMH.shouldManage(win) then
|
||||
Tree.windows[win.id] = win
|
||||
win.managed = true
|
||||
if EWMH.shouldTile(win) then
|
||||
table.insert(Tree.focusedMonitor.stack, win)
|
||||
win.monitor = Tree.focusedMonitor
|
||||
-- Tree.focusedMonitor:updateTiling()
|
||||
else
|
||||
win:float()
|
||||
end
|
||||
win:show()
|
||||
else
|
||||
win.managed = false
|
||||
win:show()
|
||||
return
|
||||
end
|
||||
return win
|
||||
end
|
||||
|
||||
----* table tag Tree.newTag(any id, [table preset]) Creates a new tag that can then be added to tables. New tags are also initialised automatically with *Window*:*addTag*()
|
||||
--function Tree.newTag(id, tbl)
|
||||
-- if Tree.tags[id] then return Tree.tags[id] end
|
||||
-- local tag = Tag.new(tbl)
|
||||
-- tag.id = id
|
||||
-- Tree.tags[id] = tag
|
||||
-- return tag
|
||||
--end
|
||||
--* Tree.init() Sets up the tree
|
||||
function Tree.init()
|
||||
Window.init()
|
||||
for m,monitor in pairs(X.getMonitors()) do
|
||||
Tree.monitors[m] = monitor
|
||||
monitor.number = m
|
||||
monitor.stack = {}
|
||||
monitor.dockMargins = { top = 0, bottom = 0, left = 0, right = 0 }
|
||||
monitor.margins = { top = 5, bottom = 5, left = 5, right = 5 }
|
||||
function monitor:updateTiling()
|
||||
if self.tiler then
|
||||
self.tiler:tile(self.stack, self)
|
||||
end
|
||||
end
|
||||
function monitor:setMargins(m)
|
||||
print("привет", inspect(m))
|
||||
self.margins.top = m.top + self.dockMargins.top
|
||||
self.margins.bottom = m.bottom + self.dockMargins.bottom
|
||||
self.margins.right = m.right + self.dockMargins.right
|
||||
self.margins.left = m.left + self.dockMargins.left
|
||||
end
|
||||
if Conf.eventHandlers.newMonitor then
|
||||
Conf.eventHandlers.newMonitor(monitor)
|
||||
end
|
||||
end
|
||||
Tree.focusedMonitor = Tree.monitors[1]
|
||||
-- Tree.newTag("focused")
|
||||
end
|
||||
-- function Tree.updateDirty()
|
||||
-- if Tree.dirtyGeometry then
|
||||
-- for w,win in pairs(Tree.windows) do
|
||||
-- if win.dirtyGeometry then
|
||||
-- win:applyGeometry()
|
||||
-- end
|
||||
-- end
|
||||
-- end
|
||||
-- end
|
||||
|
||||
return Tree
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue