148 lines
4.3 KiB
Lua
148 lines
4.3 KiB
Lua
|
|
---------------------------------------------------------- dependencies -- ;
|
|
local capi = {root=root}
|
|
local gears = require("gears")
|
|
local naughty = require("naughty")
|
|
local inspect = require('inspect')
|
|
local awful = require("awful")
|
|
local modkey = "Mod4"
|
|
|
|
local machina = require('awesomewm-machina.methods')
|
|
|
|
local compare = machina.compare
|
|
local region_tablist = machina.region_tablist
|
|
local focus_by_direction = machina.focus_by_direction
|
|
local get_active_regions = machina.get_active_regions
|
|
local shift_by_direction = machina.shift_by_direction
|
|
local expand_horizontal = machina.expand_horizontal
|
|
local geoms = machina.geoms
|
|
local shuffle = machina.shuffle
|
|
local my_shifter = machina.my_shifter
|
|
local expand_vertical = machina.expand_vertical
|
|
|
|
---------------------------------------------------------- key bindings -- ;
|
|
|
|
local bindings = {
|
|
----------------╮
|
|
--│ SHUFFLE ◊◊
|
|
----------------╯
|
|
awful.key({modkey}, ";", shift_by_direction("left")),
|
|
--+ standard shift client logic
|
|
|
|
awful.key({modkey}, "'", shift_by_direction("right")),
|
|
--+ standard shift client logic
|
|
|
|
awful.key({modkey, "Shift"}, ";", shift_by_direction("left", true)),
|
|
--+ standard shift swap left
|
|
|
|
awful.key({modkey, "Shift"}, "'", shift_by_direction("right", true)),
|
|
--+ standard shift swap right
|
|
|
|
awful.key({modkey, "Shift"}, "[", my_shifter("backward")),
|
|
--+ custom shift client logic
|
|
|
|
awful.key({modkey, "Shift"}, "]", my_shifter("forward")),
|
|
--+ custom shift client logic
|
|
|
|
awful.key({modkey}, "[", shuffle("backward")),
|
|
--+ shuffle back
|
|
|
|
awful.key({modkey}, "]", shuffle("forward")),
|
|
--+ shuffle forward
|
|
|
|
----------------╮
|
|
--│ PLACEMENT ◊◊
|
|
----------------╯
|
|
awful.key({modkey}, "Insert", expand_horizontal("left")),
|
|
--+ expand to right
|
|
|
|
awful.key({modkey}, "Page_Up", expand_horizontal("right")),
|
|
--+ expand to left
|
|
|
|
awful.key({modkey}, "Home", expand_horizontal("center")),
|
|
--+ expand to center as float
|
|
|
|
awful.key({modkey}, "End", function()
|
|
client.focus.maximized_vertical = false
|
|
client.focus.maximized_horizontal = false
|
|
awful.client.floating.toggle()
|
|
end),
|
|
--+ toggle floating status
|
|
|
|
awful.key({modkey}, "Delete", expand_vertical),
|
|
--+ expand to right
|
|
|
|
----------------╮
|
|
--│ FOCUS ◊◊
|
|
----------------╯
|
|
awful.key({modkey}, "Left", focus_by_direction("left")),
|
|
--+ stack friendly focus left
|
|
|
|
awful.key({modkey}, "j", focus_by_direction("left")),
|
|
--+ stack friendly focus left
|
|
|
|
awful.key({modkey}, "Down", focus_by_direction("down")),
|
|
--+ stack friendly focus down
|
|
|
|
awful.key({modkey}, "k", focus_by_direction("down")),
|
|
--+ stack friendly focus down
|
|
|
|
awful.key({modkey}, "Right", focus_by_direction("right")),
|
|
--+ stack friendly focus right
|
|
|
|
awful.key({modkey}, "l", focus_by_direction("right")),
|
|
--+ stack friendly focus right
|
|
|
|
awful.key({modkey}, "Up", focus_by_direction("up")),
|
|
--+ stack friendly focus up
|
|
|
|
awful.key({modkey}, "i", focus_by_direction("up"))
|
|
--+ stack friendly focus up
|
|
}
|
|
|
|
--------------------------------------------------------------- signals -- ;
|
|
|
|
client.connect_signal("request::activate", function(c)
|
|
c.hidden = false
|
|
c:raise()
|
|
client.focus = c
|
|
end) ----| this is needed to ensure floating stuff becomes
|
|
----| visible when invoked through run_or_raise
|
|
|
|
client.connect_signal("focus", function(c)
|
|
if not c.floating then
|
|
for _, tc in ipairs(screen[awful.screen.focused()].all_clients) do
|
|
if tc.floating then
|
|
tc.hidden = true
|
|
end
|
|
end
|
|
return
|
|
end
|
|
|
|
if c.floating then
|
|
for _, tc in ipairs(screen[awful.screen.focused()].all_clients) do
|
|
if tc.floating and not tc.role then
|
|
tc.hidden = false
|
|
end
|
|
end
|
|
return
|
|
end
|
|
end) ----| hide all floating windows when the user switches to a
|
|
----| tiled client. this is handy when you have a floating
|
|
----| browser open.
|
|
|
|
--------------------------------------------------------------- exports -- ;
|
|
|
|
module = {
|
|
bindings = bindings,
|
|
'';}
|
|
|
|
local function new(arg)
|
|
capi.root.keys(awful.util.table.join(capi.root.keys(), table.unpack(bindings)))
|
|
return module
|
|
end
|
|
|
|
return setmetatable(module, { __call = function(_,...) return new({...}) end })
|
|
|
|
|
|
-- return module |