mirror of
https://github.com/MezzalunaWM/Mezzaluna.git
synced 2026-03-07 19:49:53 -05:00
dwm binds
This commit is contained in:
parent
c8b4606f53
commit
53b9ba2f88
2 changed files with 189 additions and 70 deletions
|
|
@ -10,6 +10,193 @@ end
|
|||
mez.path.config = mez.fs.joinpath(env_conf, "mez", "init.lua")
|
||||
package.path = package.path..";"..mez.fs.joinpath(env_conf, "mez", "lua", "?.lua")
|
||||
|
||||
function print_table (t)
|
||||
for key, value in pairs(t) do
|
||||
print(key .. ":" .. value)
|
||||
end
|
||||
end
|
||||
|
||||
local master = function()
|
||||
local mast = {
|
||||
master_ratio = 0.5,
|
||||
stack = {},
|
||||
master = nil,
|
||||
}
|
||||
|
||||
local tile_views = function ()
|
||||
local res = mez.output.get_resolution(0)
|
||||
|
||||
if #mast.stack == 0 then
|
||||
mez.view.set_size(mast.master, res.width, res.height)
|
||||
mez.view.set_position(mast.master, 0, 0)
|
||||
else
|
||||
mez.view.set_size(mast.master, res.width * mast.master_ratio, res.height)
|
||||
mez.view.set_position(mast.master, 0, 0)
|
||||
|
||||
for i, stack_id in ipairs(mast.stack) do
|
||||
mez.view.set_size(stack_id, res.width * (1 - mast.master_ratio), res.height / #mast.stack)
|
||||
mez.view.set_position(stack_id, res.width * mast.master_ratio, (res.height / #mast.stack * (i - 1)))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
mez.hook.add("ViewMapPre", {
|
||||
callback = function(v)
|
||||
mez.view.set_focused(v)
|
||||
|
||||
if mast.master == nil then
|
||||
mast.master = v
|
||||
else
|
||||
table.insert(mast.stack, #mast.stack + 1, v)
|
||||
end
|
||||
|
||||
tile_views()
|
||||
end
|
||||
})
|
||||
|
||||
mez.hook.add("ViewUnmapPost", {
|
||||
callback = function(v)
|
||||
if v == mast.master then
|
||||
if #mast.stack > 0 then
|
||||
mast.master = table.remove(mast.stack, 1)
|
||||
else
|
||||
mast.master = nil
|
||||
end
|
||||
else
|
||||
for i, id in ipairs(mast.stack) do
|
||||
if id == v then
|
||||
if i == 1 then
|
||||
mez.view.set_focused(mast.master)
|
||||
elseif i == #mast.stack then
|
||||
mez.view.set_focused(mast.stack[i - 1])
|
||||
else
|
||||
mez.view.set_focused(mast.stack[i + 1])
|
||||
end
|
||||
|
||||
table.remove(mast.stack, i)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
tile_views()
|
||||
end
|
||||
})
|
||||
|
||||
mez.input.add_keymap("alt|shift", "Return", {
|
||||
press = function()
|
||||
mez.api.spawn("alacritty")
|
||||
end,
|
||||
})
|
||||
|
||||
mez.input.add_keymap("alt|shift", "C", {
|
||||
press = function ()
|
||||
mez.view.close(0)
|
||||
end
|
||||
})
|
||||
|
||||
mez.input.add_keymap("alt|shift", "q", {
|
||||
press = function ()
|
||||
mez.api.exit();
|
||||
end
|
||||
})
|
||||
|
||||
mez.input.add_keymap("alt", "Return", {
|
||||
press = function()
|
||||
local focused = mez.view.get_focused_id()
|
||||
|
||||
if focused == mast.master then return end
|
||||
|
||||
for i, id in ipairs(mast.stack) do
|
||||
if focused == id then
|
||||
local t = mast.master
|
||||
mast.master = mast.stack[i]
|
||||
mast.stack[i] = t
|
||||
end
|
||||
end
|
||||
|
||||
tile_views()
|
||||
end,
|
||||
})
|
||||
|
||||
mez.input.add_keymap("alt", "j", {
|
||||
press = function ()
|
||||
local focused = mez.view.get_focused_id()
|
||||
|
||||
if focused == mast.master then
|
||||
mez.view.set_focused(mast.stack[1])
|
||||
elseif focused == mast.stack[#mast.stack] then
|
||||
mez.view.set_focused(mast.master)
|
||||
else
|
||||
for i, id in ipairs(mast.stack) do
|
||||
-- TODO: use table.find
|
||||
if focused == id then
|
||||
mez.view.set_focused(mast.stack[i + 1])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
mez.input.add_keymap("alt", "k", {
|
||||
press = function ()
|
||||
local focused = mez.view.get_focused_id()
|
||||
|
||||
if focused == mast.master then
|
||||
mez.view.set_focused(mast.stack[#mast.stack])
|
||||
elseif focused == mast.stack[1] then
|
||||
mez.view.set_focused(mast.master)
|
||||
else
|
||||
for i, id in ipairs(mast.stack) do
|
||||
-- TODO: use table.find
|
||||
if focused == id then
|
||||
mez.view.set_focused(mast.stack[i - 1])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
mez.input.add_keymap("alt", "h", {
|
||||
press = function()
|
||||
if mast.master_ratio > 0.15 then
|
||||
mast.master_ratio = mast.master_ratio - 0.05
|
||||
tile_views()
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
mez.input.add_keymap("alt", "l", {
|
||||
press = function()
|
||||
if mast.master_ratio < 0.85 then
|
||||
mast.master_ratio = mast.master_ratio + 0.05
|
||||
tile_views()
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
mez.input.add_keymap("alt", "Tab", {
|
||||
press = function ()
|
||||
local focused = mez.view.get_focused_id()
|
||||
local all = mez.view.get_all_ids()
|
||||
|
||||
for _, id in ipairs(all) do
|
||||
if id ~= focused then
|
||||
mez.view.set_focused(id)
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
master()
|
||||
|
||||
for i = 1, 12 do
|
||||
mez.input.add_keymap("ctrl|alt", "XF86Switch_VT_"..i, {
|
||||
press = function() mez.api.change_vt(i) end
|
||||
})
|
||||
end
|
||||
|
||||
local test = function()
|
||||
-- View tests
|
||||
mez.api.spawn("alacritty")
|
||||
|
|
@ -37,7 +224,7 @@ local test = function()
|
|||
mez.view.set_size(focused_view, 200, 200)
|
||||
|
||||
-- Output tests
|
||||
local focused_output = mez.output.get_focused_id();
|
||||
local focused_output = mez.output.get_focused_id()
|
||||
print(focused_output)
|
||||
|
||||
local output_ids = mez.output.get_all_ids()
|
||||
|
|
@ -61,71 +248,3 @@ local test = function()
|
|||
local res = mez.output.get_resolution(0)
|
||||
print(res.width .. ", " .. res.height)
|
||||
end
|
||||
|
||||
mez.input.add_keymap("alt", "Return", {
|
||||
press = function()
|
||||
-- foot doesnt resize on uneven columns
|
||||
-- this means alacritty is just better (period)
|
||||
mez.api.spawn("alacritty")
|
||||
end,
|
||||
})
|
||||
|
||||
mez.input.add_keymap("alt", "c", {
|
||||
press = function ()
|
||||
print("closing")
|
||||
mez.view.close(0)
|
||||
end
|
||||
})
|
||||
|
||||
mez.input.add_keymap("alt", "q", {
|
||||
press = function ()
|
||||
mez.api.exit();
|
||||
end
|
||||
})
|
||||
|
||||
mez.input.add_keymap("alt", "v", {
|
||||
press = function ()
|
||||
print(mez.view.check())
|
||||
end
|
||||
})
|
||||
|
||||
mez.input.add_keymap("alt", "Tab", {
|
||||
press = function ()
|
||||
local focused = mez.view.get_focused_id()
|
||||
local all = mez.view.get_all_ids()
|
||||
|
||||
for _, id in ipairs(all) do
|
||||
if id ~= focused then
|
||||
mez.view.set_focused(id)
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
for i = 1, 12 do
|
||||
mez.input.add_keymap("ctrl|alt", "XF86Switch_VT_"..i, {
|
||||
press = function() mez.api.change_vt(i) end
|
||||
})
|
||||
end
|
||||
|
||||
local tiler = function ()
|
||||
local res = mez.output.get_resolution(mez.output.get_focused_id())
|
||||
local all = mez.view.get_all_ids()
|
||||
|
||||
for i, id in ipairs(all) do
|
||||
mez.view.set_position(id, (res.width/ #all) * (i - 1), 0)
|
||||
mez.view.set_size(id, res.width / #all, res.height)
|
||||
end
|
||||
end
|
||||
|
||||
mez.input.add_keymap("alt", "t", {
|
||||
press = function() test() end
|
||||
})
|
||||
|
||||
mez.hook.add("ViewMapPre", {
|
||||
callback = function(v)
|
||||
tiler()
|
||||
mez.view.set_focused(v)
|
||||
end
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue