chore(bindings) module + use argument constructors

This commit is contained in:
Aire-One 2021-12-02 19:55:58 +01:00
parent 5a741f2bc1
commit f2b0f9708f
11 changed files with 313 additions and 167 deletions

View File

@ -0,0 +1,113 @@
local akey = require "awful.key"
local aclient = require "awful.client"
local utils = require "rc.configuration.bindings.utils"
local client_keybindings = {
akey {
modifiers = { utils.mods.modkey },
key = "f",
description = "toggle fullscreen",
group = utils.groups.client,
on_press = function(client)
client.fullscreen = not client.fullscreen
client:raise()
end,
},
akey {
modifiers = { utils.mods.modkey },
key = "c",
description = "close",
group = utils.groups.client,
on_press = function(client)
client:kill()
end,
},
akey {
modifiers = { utils.mods.modkey, utils.mods.control },
key = "space",
description = "toggle floating",
group = utils.groups.client,
on_press = aclient.floating.toggle,
},
akey {
modifiers = { utils.mods.modkey, utils.mods.control },
key = "Return",
description = "move to master",
group = utils.groups.client,
on_press = function(client)
client:swap(aclient.getmaster())
end,
},
akey {
modifiers = { utils.mods.modkey },
key = "o",
description = "move to screen",
group = utils.groups.client,
on_press = function(client)
client:move_to_screen()
end,
},
akey {
modifiers = { utils.mods.modkey },
key = "t",
description = "toggle keep on top",
group = utils.groups.client,
on_press = function(client)
client.ontop = not client.ontop
end,
},
akey {
modifiers = { utils.mods.modkey },
key = "n",
description = "minimize",
group = utils.groups.client,
on_press = function(client)
-- The client currently has the input focus, so it cannot be
-- minimized, since minimized clients can't have the focus.
client.minimized = true
end,
},
akey {
modifiers = { utils.mods.modkey },
key = "m",
description = "(un)maximize",
group = utils.groups.client,
on_press = function(client)
client.maximized = not client.maximized
client:raise()
end,
},
akey {
modifiers = { utils.mods.modkey, utils.mods.control },
key = "m",
description = "(un)maximize vertically",
group = utils.groups.client,
on_press = function(client)
client.maximized_vertical = not client.maximized_vertical
client:raise()
end,
},
akey {
modifiers = { utils.mods.modkey, utils.mods.shift },
key = "m",
description = "(un)maximize horizontally",
group = utils.groups.client,
on_press = function(client)
client.maximized_horizontal = not client.maximized_horizontal
client:raise()
end,
},
}
return client_keybindings

View File

@ -0,0 +1,39 @@
local abutton = require "awful.button"
local utils = require "rc.configuration.bindings.utils"
local mousebindings = {
abutton {
modifiers = {},
button = abutton.names.LEFT,
on_press = function(client)
client:activate {
context = "mouse_click",
}
end,
},
abutton {
modifiers = { utils.mods.modkey },
button = abutton.names.LEFT,
on_press = function(client)
client:activate {
context = "mouse_click",
action = "mouse_move",
}
end,
},
abutton {
modifiers = { utils.mods.modkey },
button = abutton.names.RIGHT,
on_press = function(client)
client:activate {
context = "mouse_click",
action = "mouse_resize",
}
end,
},
}
return mousebindings

View File

@ -13,73 +13,104 @@ local desktop_bar = require "rc.ui.desktop_decoration.bar"
local hotkeys_popup = require "rc.ui.hotkeys_popup"
local mymainmenu = require "rc.ui.menu.mymainmenu"
local utils = require "rc.configuration.bindings.utils"
local capi = {
awesome = _G.awesome,
client = _G.client,
}
local control = "Control"
local modkey = "Mod4"
local shift = "Shift"
local global_keybindings = {
akey({ modkey }, "s", function()
hotkeys_popup.show_help()
end, {
-- Awesome
akey {
modifiers = { utils.mods.modkey },
key = "s",
description = "show help",
group = "awesome",
}),
akey({ modkey }, "w", function()
mymainmenu():show()
end, {
group = utils.groups.awesome,
on_press = function()
hotkeys_popup.show_help()
end,
},
akey {
modifiers = { utils.mods.modkey },
key = "w",
description = "show main menu",
group = "awesome",
}),
akey(
{ modkey, control },
"r",
capi.awesome.restart,
{ description = "reload awesome", group = "awesome" }
),
akey(
{ modkey, shift },
"q",
capi.awesome.quit,
{ description = "quit awesome", group = "awesome" }
),
akey({ modkey }, "x", function()
aprompt.run {
prompt = "Run Lua code: ",
textbox = desktop_bar(ascreen.focused()).promptbox.widget,
exe_callback = autil.eval,
history_path = autil.get_cache_dir() .. "/history_eval",
}
end, {
group = utils.groups.awesome,
on_press = function()
mymainmenu():show()
end,
},
akey {
modifiers = { utils.mods.modkey, utils.mods.control },
key = "r",
description = "reload awesome",
group = utils.groups.awesome,
on_press = capi.awesome.restart,
},
akey {
modifiers = { utils.mods.modkey, utils.mods.shift },
key = "q",
description = "quit awesome",
group = utils.groups.awesome,
on_press = capi.awesome.quit,
},
akey {
modifiers = { utils.mods.modkey },
key = "x",
description = "lua execute prompt",
group = "awesome",
}),
akey({ modkey }, "Return", function()
aspawn(applications.open_terminal())
end, {
group = utils.groups.awesome,
on_press = function()
aprompt.run {
prompt = "Run Lua code: ",
textbox = desktop_bar(ascreen.focused()).promptbox.widget,
exe_callback = autil.eval,
history_path = autil.get_cache_dir() .. "/history_eval",
}
end,
},
-- Launcher
akey {
modifiers = { utils.mods.modkey },
key = "Return",
description = "open a terminal",
group = "launcher",
}),
akey({ modkey }, "r", function()
desktop_bar(ascreen.focused()).promptbox:run()
end, {
group = utils.groups.launcher,
on_press = function()
aspawn(applications.open_terminal())
end,
},
akey {
modifiers = { utils.mods.modkey },
key = "r",
description = "run prompt",
group = "launcher",
}),
akey({ modkey }, "p", function()
menubar.show()
end, {
group = utils.groups.launcher,
on_press = function()
desktop_bar(ascreen.focused()).promptbox:run()
end,
},
akey {
modifiers = { utils.mods.modkey },
key = "p",
description = "show the menubar",
group = "launcher",
}),
group = utils.groups.launcher,
on_press = function()
menubar.show()
end,
},
-- Client focus
akey {
modifiers = { modkey },
modifiers = { utils.mods.modkey },
key = "j",
group = "client",
description = "Focus next client by index",
@ -87,8 +118,9 @@ local global_keybindings = {
aclient.focus.byidx(1)
end,
},
akey {
modifiers = { modkey },
modifiers = { utils.mods.modkey },
key = "k",
group = "client",
description = "Focus previous by index",
@ -98,8 +130,9 @@ local global_keybindings = {
},
-- Layout manipulation
akey {
modifiers = { modkey, shift },
modifiers = { utils.mods.modkey, utils.mods.shift },
key = "j",
group = "client",
description = "Swap with next client",
@ -107,8 +140,9 @@ local global_keybindings = {
aclient.swap.byidx(1)
end,
},
akey {
modifiers = { modkey, shift },
modifiers = { utils.mods.modkey, utils.mods.shift },
key = "k",
group = "client",
description = "Swap with previous client",
@ -116,8 +150,9 @@ local global_keybindings = {
aclient.swap.byidx(-1)
end,
},
akey {
modifiers = { modkey, shift },
modifiers = { utils.mods.modkey, utils.mods.shift },
key = "Right",
description = "Increase master width factor",
group = "client",
@ -125,8 +160,9 @@ local global_keybindings = {
atag.incmwfact(0.01)
end,
},
akey {
modifiers = { modkey, shift },
modifiers = { utils.mods.modkey, utils.mods.shift },
key = "Left",
description = "Decrease master width factor",
group = "client",
@ -136,8 +172,9 @@ local global_keybindings = {
},
-- Tags manipulation
akey {
modifiers = { modkey },
modifiers = { utils.mods.modkey },
keygroup = akey.keygroup.NUMROW,
description = "only view tag",
group = "tag",
@ -150,8 +187,9 @@ local global_keybindings = {
end
end,
},
akey {
modifiers = { modkey, control },
modifiers = { utils.mods.modkey, utils.mods.control },
keygroup = akey.keygroup.NUMROW,
description = "toggle tag",
group = "tag",
@ -164,8 +202,9 @@ local global_keybindings = {
end
end,
},
akey {
modifiers = { modkey, shift },
modifiers = { utils.mods.modkey, utils.mods.shift },
keygroup = akey.keygroup.NUMROW,
description = "move focused client to tag",
group = "tag",

View File

@ -0,0 +1,28 @@
local abutton = require "awful.button"
local atag = require "awful.tag"
local mymainmenu = require "rc.ui.menu.mymainmenu"
local global_mousebindings = {
abutton {
modifiers = {},
button = abutton.names.RIGHT,
on_press = function()
mymainmenu():toggle()
end,
},
abutton {
modifiers = {},
button = abutton.names.SCROLL_UP,
on_press = tag.viewprev,
},
abutton {
modifiers = {},
button = abutton.names.SCROLL_DOWN,
on_press = atag.viewnext,
},
}
return global_mousebindings

View File

@ -0,0 +1,13 @@
local bindings = {}
bindings.client_keybindings =
require "rc.configuration.bindings.client_keybindings"
bindings.client_mousebindings =
require "rc.configuration.bindings.client_mousebindings"
bindings.global_keybindings =
require "rc.configuration.bindings.global_keybindings"
bindings.global_mousebindings =
require "rc.configuration.bindings.global_mousebindings"
bindings.utils = require "rc.configuration.bindings.utils"
return bindings

View File

@ -0,0 +1,16 @@
local mods = {
control = "Control",
modkey = "Mod4",
shift = "Shift",
}
local groups = {
client = "client",
awesome = "awesome",
launcher = "launcher",
}
return {
mods = mods,
groups = groups,
}

View File

@ -1,50 +0,0 @@
local akey = require "awful.key"
local aclient = require "awful.client"
local control = "Control"
local modkey = "Mod4"
local shift = "Shift"
local client_keybindings = {
akey({ modkey }, "f", function(client)
client.fullscreen = not client.fullscreen
client:raise()
end, { description = "toggle fullscreen", group = "client" }),
akey({ modkey, shift }, "c", function(client)
client:kill()
end, { description = "close", group = "client" }),
akey(
{ modkey, control },
"space",
aclient.floating.toggle,
{ description = "toggle floating", group = "client" }
),
akey({ modkey, control }, "Return", function(client)
client:swap(aclient.getmaster())
end, { description = "move to master", group = "client" }),
akey({ modkey }, "o", function(client)
client:move_to_screen()
end, { description = "move to screen", group = "client" }),
akey({ modkey }, "t", function(client)
client.ontop = not client.ontop
end, { description = "toggle keep on top", group = "client" }),
akey({ modkey }, "n", function(client)
-- The client currently has the input focus, so it cannot be
-- minimized, since minimized clients can't have the focus.
client.minimized = true
end, { description = "minimize", group = "client" }),
akey({ modkey }, "m", function(client)
client.maximized = not client.maximized
client:raise()
end, { description = "(un)maximize", group = "client" }),
akey({ modkey, control }, "m", function(client)
client.maximized_vertical = not client.maximized_vertical
client:raise()
end, { description = "(un)maximize vertically", group = "client" }),
akey({ modkey, shift }, "m", function(client)
client.maximized_horizontal = not client.maximized_horizontal
client:raise()
end, { description = "(un)maximize horizontally", group = "client" }),
}
return client_keybindings

View File

@ -1,25 +0,0 @@
local abutton = require "awful.button"
local modkey = "Mod4"
local mousebindings = {
abutton({}, 1, function(client)
client:activate {
context = "mouse_click",
}
end),
abutton({ modkey }, 1, function(client)
client:activate {
context = "mouse_click",
action = "mouse_move",
}
end),
abutton({ modkey }, 3, function(client)
client:activate {
context = "mouse_click",
action = "mouse_resize",
}
end),
}
return mousebindings

View File

@ -1,14 +0,0 @@
local abutton = require "awful.button"
local atag = require "awful.tag"
local mymainmenu = require "rc.ui.menu.mymainmenu"
local global_mousebindings = {
abutton({}, 3, function()
mymainmenu():toggle()
end),
abutton({}, 4, atag.viewprev),
abutton({}, 5, atag.viewnext),
}
return global_mousebindings

View File

@ -1,23 +1,10 @@
local rc_configuration = {}
rc_configuration.applications = require "rc.configuration.applications"
rc_configuration.client_keybindings =
require "rc.configuration.client_keybindings"
rc_configuration.client_mousebindings =
require "rc.configuration.client_mousebindings"
rc_configuration.global_keybindings =
require "rc.configuration.global_keybindings"
rc_configuration.global_mousebindings =
require "rc.configuration.global_mousebindings"
rc_configuration.bindings = require "rc.configuration.bindings"
rc_configuration.menu = require "rc.configuration.menu"
rc_configuration.rules = require "rc.configuration.rules"
rc_configuration.prompt_commands = require "rc.configuration.prompt_commands"
rc_configuration.tag_layouts = require "rc.configuration.tag_layouts"
return rc_configuration

View File

@ -38,8 +38,8 @@ local my_slots = require "rc.slots"
-- This needs to be run after awesome has completed C API initialization and
-- the `root` object is available.
gtimer.delayed_call(function()
legacy.global_mouse_bindings(configuration.global_mousebindings)
legacy.global_keybindings(configuration.global_keybindings)
legacy.global_mouse_bindings(configuration.bindings.global_mousebindings)
legacy.global_keybindings(configuration.bindings.global_keybindings)
end)
-- luacheck: ignore unused variable load_wallpaper
@ -89,7 +89,7 @@ local client_mousebinding = slot {
signal = "request::default_mousebindings",
slot = slot.slots.client.append_mousebindings,
slot_params = {
mousebindings = configuration.client_mousebindings,
mousebindings = configuration.bindings.client_mousebindings,
},
}
@ -101,7 +101,7 @@ local client_keybinding = slot {
signal = "request::default_keybindings",
slot = slot.slots.client.append_keybindings,
slot_params = {
keybindings = configuration.client_keybindings,
keybindings = configuration.bindings.client_keybindings,
},
}