diff --git a/separable/binder.lua b/separable/binder.lua index 6d85b98..92c2a35 100644 --- a/separable/binder.lua +++ b/separable/binder.lua @@ -13,67 +13,110 @@ local app_folders = { "/usr/share/applications", "/usr/local/share/applications", (os.getenv("XDG_DATA_HOME") or os.getenv("HOME") .. "/.local/share") .. "/applications", - os.getenv("HOME") .. "/Desktop" + os.getenv("HOME") .. "/Desktop", } local menubar = require("menubar") menubar.utils.terminal = conf.cmd.terminal -- Set the terminal for applications that require it -local binder = {modal = mb} +local binder = { modal = mb } -local function spawnf(cmd) return function() awful.spawn(cmd) end end +local function spawnf(cmd) + return function() + awful.spawn(cmd) + end +end binder.spawn = spawnf conf.cmd.run = conf.cmd.run or spawnf("dmenu_run") -local function use_layout(layout) return function() awful.layout.set(layout) end end +local function use_layout(layout) + return function() + awful.layout.set(layout) + end +end local layoutmap = { - {"f", use_layout(awful.layout.suit.fair), "Fair" }, - {"h", use_layout(awful.layout.suit.fair.horizontal), "Fair Horizontal" }, - {"t", use_layout(awful.layout.suit.tile), "Tile" }, - {"b", use_layout(awful.layout.suit.tile.bottom), "Tile Bottom" }, - {"m", use_layout(awful.layout.suit.max), "Maximized" }, - {"F", use_layout(awful.layout.suit.max.fullscreen), "Fullscreen" }, - {"space", use_layout(awful.layout.suit.floating), "Float" } + { "f", use_layout(awful.layout.suit.fair), "Fair" }, + { "h", use_layout(awful.layout.suit.fair.horizontal), "Fair Horizontal" }, + { "t", use_layout(awful.layout.suit.tile), "Tile" }, + { "b", use_layout(awful.layout.suit.tile.bottom), "Tile Bottom" }, + { "m", use_layout(awful.layout.suit.max), "Maximized" }, + { "F", use_layout(awful.layout.suit.max.fullscreen), "Fullscreen" }, + { "space", use_layout(awful.layout.suit.floating), "Float" }, } local layoutsettings = { - {"h", function () awful.tag.incmwfact(-0.05) end, "Master smaller" }, - {"l", function () awful.tag.incmwfact( 0.05) end, "Master bigger" }, - {"H", function () awful.tag.incnmaster( 1) end, "More masters" }, - {"L", function () awful.tag.incnmaster(-1) end, "Less masters" }, - {"c", function () awful.tag.incncol( 1) end, "More columns" }, - {"C", function () awful.tag.incncol(-1) end, "Less columns" }, + { + "h", + function() + awful.tag.incmwfact(-0.05) + end, + "Master smaller", + }, + { + "l", + function() + awful.tag.incmwfact(0.05) + end, + "Master bigger", + }, + { + "H", + function() + awful.tag.incnmaster(1) + end, + "More masters", + }, + { + "L", + function() + awful.tag.incnmaster(-1) + end, + "Less masters", + }, + { + "c", + function() + awful.tag.incncol(1) + end, + "More columns", + }, + { + "C", + function() + awful.tag.incncol(-1) + end, + "Less columns", + }, } local opposite_dirs = { - left = "right", + left = "right", right = "left", - up = "down", - down = "up" + up = "down", + down = "up", } local function screen_in_wrapdir(dir, _screen) - local sel = _screen or mouse.screen - if sel then - local geomtbl = {} - for s = 1, screen.count() do - geomtbl[s] = screen[s].geometry - end - local target = awful.util.get_rectangle_in_direction(dir, geomtbl, screen[sel].geometry) - if not target then - local new_target = sel - while new_target do - target = new_target - new_target = awful.util.get_rectangle_in_direction(opposite_dirs[dir], geomtbl, screen[target].geometry) + local sel = _screen or mouse.screen + if sel then + local geomtbl = {} + for s = 1, screen.count() do + geomtbl[s] = screen[s].geometry + end + local target = awful.util.get_rectangle_in_direction(dir, geomtbl, screen[sel].geometry) + if not target then + local new_target = sel + while new_target do + target = new_target + new_target = awful.util.get_rectangle_in_direction(opposite_dirs[dir], geomtbl, screen[target].geometry) + end end - end - return target - end + return target + end end - local function screen_focus_wrapdir(dir) return function() local target = screen_in_wrapdir(dir) @@ -89,13 +132,13 @@ local function screen_move_client_wrapdir(dir) end function binder.add_bindings(keys) - globalkeys = awful.util.table.join(globalkeys, keys); + globalkeys = awful.util.table.join(globalkeys, keys) return binder end function binder.add_reloadable(key_func) - table.insert(globalkeyfuncs, key_func) - return binder + table.insert(globalkeyfuncs, key_func) + return binder end function binder.clear() @@ -104,13 +147,13 @@ function binder.clear() end function binder.apply() - naughty.notify { text="Reloading key bindings" } - local allkeys = awful.util.table.clone(globalkeys) - for _,v in pairs(globalkeyfuncs) do - local loadedkeys = v() - allkeys = awful.util.table.join(allkeys, loadedkeys) - end - root.keys(allkeys) + naughty.notify({ text = "Reloading key bindings" }) + local allkeys = awful.util.table.clone(globalkeys) + for _, v in pairs(globalkeyfuncs) do + local loadedkeys = v() + allkeys = awful.util.table.join(allkeys, loadedkeys) + end + root.keys(allkeys) end local function client_opacity_set(c, default, max, step) @@ -118,7 +161,7 @@ local function client_opacity_set(c, default, max, step) c.opacity = default end - if c.opacity * step < (max-step) * step then + if c.opacity * step < (max - step) * step then c.opacity = c.opacity + step else c.opacity = max @@ -126,41 +169,58 @@ local function client_opacity_set(c, default, max, step) end local clientkeys = awful.util.table.join( -awful.key({ modkey, "Shift" }, "f", function (c) c.fullscreen = not c.fullscreen end), -awful.key({ modkey, "Shift" }, "c", function (c) c:kill() end), -awful.key({ modkey, }, "f", awful.client.floating.toggle ), -awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end), -awful.key({ modkey, }, "o", awful.client.movetoscreen ), -awful.key({ modkey, "Shift" }, "h", screen_move_client_wrapdir("left")), -awful.key({ modkey, "Shift" }, "l", screen_move_client_wrapdir("right")), -awful.key({ modkey, "Control" }, "o", function (c) c.ontop = not c.ontop end), -awful.key({ modkey, "Shift" }, "a", function (c) c.sticky = not c.sticky end), -awful.key({ modkey, }, "Up", function(c) client_opacity_set(c, 1, 1, 0.1) end), -awful.key({ modkey, }, "Down", function(c) client_opacity_set(c, 1, 0, -0.1) end), -awful.key({ }, "XF86Calculater", awful.client.movetoscreen ), -awful.key({ modkey }, "i", function(c) - require("naughty").notify({ text = - string.format( - "name: '%s'\nclass: '%s'\ninstance: '%s'\ntype: '%s'\npid: %d", - c["name"], c["class"], c["instance"], c["type"], c["pid"]) - }) - end) + awful.key({ modkey, "Shift" }, "f", function(c) + c.fullscreen = not c.fullscreen + end), + awful.key({ modkey, "Shift" }, "c", function(c) + c:kill() + end), + awful.key({ modkey }, "f", awful.client.floating.toggle), + awful.key({ modkey, "Control" }, "Return", function(c) + c:swap(awful.client.getmaster()) + end), + awful.key({ modkey }, "o", awful.client.movetoscreen), + awful.key({ modkey, "Shift" }, "h", screen_move_client_wrapdir("left")), + awful.key({ modkey, "Shift" }, "l", screen_move_client_wrapdir("right")), + awful.key({ modkey, "Control" }, "o", function(c) + c.ontop = not c.ontop + end), + awful.key({ modkey, "Shift" }, "a", function(c) + c.sticky = not c.sticky + end), + awful.key({ modkey }, "Up", function(c) + client_opacity_set(c, 1, 1, 0.1) + end), + awful.key({ modkey }, "Down", function(c) + client_opacity_set(c, 1, 0, -0.1) + end), + awful.key({}, "XF86Calculater", awful.client.movetoscreen), + awful.key({ modkey }, "i", function(c) + require("naughty").notify({ + text = string.format( + "name: '%s'\nclass: '%s'\ninstance: '%s'\ntype: '%s'\npid: %d", + c["name"], + c["class"], + c["instance"], + c["type"], + c["pid"] + ), + }) + end) ) -root.buttons(awful.util.table.join( - awful.button({ }, 4, awful.tag.viewnext), - awful.button({ }, 5, awful.tag.viewprev) -)) +root.buttons(awful.util.table.join(awful.button({}, 4, awful.tag.viewnext), awful.button({}, 5, awful.tag.viewprev))) local clientbuttons = awful.util.table.join( - awful.button({ }, 1, function (c) - if c.name ~= "Onboard" then - client.focus = c - c:raise() - end - end), - awful.button({ modkey }, 1, awful.mouse.client.move), - awful.button({ modkey }, 3, awful.mouse.client.resize)) + awful.button({}, 1, function(c) + if c.name ~= "Onboard" then + client.focus = c + c:raise() + end + end), + awful.button({ modkey }, 1, awful.mouse.client.move), + awful.button({ modkey }, 3, awful.mouse.client.resize) +) binder.client = {} @@ -173,62 +233,74 @@ function binder.client.keys() end function binder.client.add_buttons(buttons) - clientbuttons = awful.util.table.join(clientbuttons, buttons); + clientbuttons = awful.util.table.join(clientbuttons, buttons) end function binder.client.add_bindings(keys) - clientkeys = awful.util.table.join(clientkeys, keys); + clientkeys = awful.util.table.join(clientkeys, keys) end local default_bindings = awful.util.table.join( awful.key({ modkey, "Control" }, "r", awesome.restart), - awful.key({ modkey, "Shift" }, "q", awesome.quit), - awful.key({ modkey, }, "Return", spawnf(conf.cmd.terminal)), - awful.key({ modkey, "Shift" }, "Return", spawnf("kitty-session")), + awful.key({ modkey, "Shift" }, "q", awesome.quit), + awful.key({ modkey }, "Return", spawnf(conf.cmd.terminal)), + awful.key({ modkey, "Shift" }, "Return", spawnf("kitty-session")), --{{{ Layout manipulation and client position - awful.key({ modkey }, "j", function () - awful.client.focus.byidx( 1) - if client.focus then client.focus:raise() end + awful.key({ modkey }, "j", function() + awful.client.focus.byidx(1) + if client.focus then + client.focus:raise() + end end), - awful.key({ modkey }, "k", function () + awful.key({ modkey }, "k", function() awful.client.focus.byidx(-1) - if client.focus then client.focus:raise() end + if client.focus then + client.focus:raise() + end end), -- Layout manipulation - awful.key({ modkey }, "Tab", function () + awful.key({ modkey }, "Tab", function() awful.client.focus.history.previous() if client.focus then client.focus:raise() end end), - awful.key({ "Mod1", }, "Tab", function () + awful.key({ "Mod1" }, "Tab", function() awful.client.focus.history.previous() if client.focus then client.focus:raise() end end), - awful.key({ modkey, "Shift" }, "j", function () - awful.client.swap.byidx( 1) + awful.key({ modkey, "Shift" }, "j", function() + awful.client.swap.byidx(1) end), - awful.key({ modkey, "Shift" }, "k", function () - awful.client.swap.byidx( -1) + awful.key({ modkey, "Shift" }, "k", function() + awful.client.swap.byidx(-1) + end), + awful.key({ modkey }, "h", function() + awful.screen.focus_relative(1) + end), + awful.key({ modkey }, "l", function() + awful.screen.focus_relative(-1) end), - awful.key({ modkey, }, "h", function() awful.screen.focus_relative(1) end), - awful.key({ modkey, }, "l", function() awful.screen.focus_relative(-1) end), --}}} --{{{ Modal mappings - awful.key({ modkey }, "space", mb.grabf{keymap=layoutmap, name="Layouts"}), - awful.key({ modkey, "Control" }, "space", mb.grabf{keymap=layoutsettings, name="Layout settings", stay_in_mode=true}), + awful.key({ modkey }, "space", mb.grabf({ keymap = layoutmap, name = "Layouts" })), + awful.key( + { modkey, "Control" }, + "space", + mb.grabf({ keymap = layoutsettings, name = "Layout settings", stay_in_mode = true }) + ), --}}} --{{{ Prompt - awful.key({ modkey }, "r", conf.cmd.run), - awful.key({ modkey, "Shift" }, "r", conf.cmd.drun), + awful.key({ modkey }, "r", conf.cmd.drun), + awful.key({ modkey, "Shift" }, "r", conf.cmd.run), --}}} @@ -239,7 +311,5 @@ function binder.add_default_bindings() return binder.add_bindings(default_bindings) end - - return binder -- vim: set fenc=utf-8 tw=80 foldmethod=marker :