diff --git a/lua/binds/apps.lua b/lua/binds/apps.lua new file mode 100644 index 0000000..bcc54e4 --- /dev/null +++ b/lua/binds/apps.lua @@ -0,0 +1,23 @@ +local M = {} +local settings = require("lua.lib.settings") +local bind = require("lua.lib.bind") + +M.binds = { + { + keys = bind.with_leader("Return"), + desc = "Open terminal", + dispatcher = hl.dsp.exec_cmd(settings.apps.terminal), + }, + { + keys = bind.with_leader("B"), + desc = "Open web browser", + dispatcher = hl.dsp.exec_cmd(settings.apps.browser), + }, + { + keys = bind.with_leader("E"), + desc = "Open file manager", + dispatcher = hl.dsp.exec_cmd(settings.apps.file_manager), + }, +} + +return M diff --git a/lua/binds/init.lua b/lua/binds/init.lua new file mode 100644 index 0000000..756103f --- /dev/null +++ b/lua/binds/init.lua @@ -0,0 +1,21 @@ +local M = {} +local bind = require("lua.lib.bind") + +local pieces = { + "apps", +} + +M.binds = {} + +for _, piece in pairs(pieces) do + local bind_piece = require("lua.binds." .. piece).binds + for _, bind_item in pairs(bind_piece) do + table.insert(M.binds, bind_item) + end +end + +function M.load() + bind.map(M.binds) +end + +return M diff --git a/lua/conf/init.lua b/lua/conf/init.lua index bc1f45d..751dc0f 100644 --- a/lua/conf/init.lua +++ b/lua/conf/init.lua @@ -11,6 +11,5 @@ require("lua.conf.decoration").load() require("lua.conf.layout").load() require("lua.conf.misc").load() +require("lua.binds").load() require("lua.modules").load() - -hl.bind("SUPER + Return", hl.dsp.exec_cmd("kitty")) diff --git a/lua/lib/bind.lua b/lua/lib/bind.lua index 83a95fc..4dc8a51 100644 --- a/lua/lib/bind.lua +++ b/lua/lib/bind.lua @@ -16,7 +16,7 @@ local function merge(...) return out end -local function with_leader(keys) +function bind.with_leader(keys) if keys == nil or keys == "" then return bind.leader end @@ -34,8 +34,24 @@ function bind.key(keys, dispatcher, desc, opts) return hl.bind(keys, dispatcher, flags) end -function bind.leader_key(keys, dispatcher, desc, opts) - return bind.key(with_leader(keys), dispatcher, desc, opts) +function bind.set(table) + local keys = table.keys + local dispatcher = table.dispatcher + local desc = "" + local opts = {} + if table.desc ~= nil and table.desc ~= "" then + desc = table.desc + end + if table.opts ~= nil then + opts = table.opts + end + bind.key(keys, dispatcher, desc, opts) +end + +function bind.map(table) + for _, item in pairs(table) do + bind.set(item) + end end return bind diff --git a/lua/lib/settings.lua b/lua/lib/settings.lua index a11f890..3dd079d 100644 --- a/lua/lib/settings.lua +++ b/lua/lib/settings.lua @@ -18,6 +18,13 @@ settings["default_layout"] = "dwindle" ---@type string settings["font_family"] = "FiraCode Nerd Font" +---@type table +settings["apps"] = { + terminal = "kitty", + file_manager = "thunar", + browser = "chromium", +} + ---@type "catppuccin"|"catppuccin-mocha" settings["colorscheme"] = "catppuccin" diff --git a/lua/modules/init.lua b/lua/modules/init.lua index c310548..e7d5c70 100644 --- a/lua/modules/init.lua +++ b/lua/modules/init.lua @@ -2,6 +2,7 @@ local settings = require("lua.lib.settings") require("lua.lib.globals") local utils = require("lua.lib.utils") local events = require("lua.lib.events") +local bind = require("lua.lib.bind") local M = {} local modules = {} @@ -53,9 +54,7 @@ function M.load() events.map("hyprland.start", M.autostart) events.map("hyprland.shutdown", M.autostop) - for _, bind in pairs(M.binds) do - bind() - end + bind.map(M.binds) end return M diff --git a/lua/modules/pypr.lua b/lua/modules/pypr.lua index dd8c8bc..5e958a4 100644 --- a/lua/modules/pypr.lua +++ b/lua/modules/pypr.lua @@ -10,9 +10,11 @@ M.autostart = { } M.binds = { - function() - bind.leader_key("SHIFT + Return", hl.dsp.exec_cmd("pypr toggle term"), "Pyprland: toggle drop terminal", {}) - end, + { + keys = bind.with_leader("SHIFT + Return"), + dispatcher = hl.dsp.exec_cmd("pypr toggle term"), + desc = "Pyprland: toggle drop terminal", + }, } return M diff --git a/lua/modules/swayosd.lua b/lua/modules/swayosd.lua index 699183f..0a89cc1 100644 --- a/lua/modules/swayosd.lua +++ b/lua/modules/swayosd.lua @@ -41,48 +41,68 @@ local function swayosd_client_cmd(args) end M.binds = { - function() - bind.key( - "XF86MonBrightnessUp", - swayosd_client_cmd("--brightness raise"), - "Increase brightness ", - { long_press = true, locked = true } - ) - bind.key( - "XF86MonBrightnessDown", - swayosd_client_cmd("--brightness lower"), - "Decrease brightness ", - { long_press = true, locked = true } - ) - bind.key( - "XF86AudioRaiseVolume", - swayosd_client_cmd("--output-volume raise"), - "Increase brightness ", - { long_press = true, locked = true } - ) - bind.key( - "XF86AudioLowerVolume", - swayosd_client_cmd("--output-volume lower"), - "Decrease brightness ", - { long_press = true, locked = true } - ) - bind.key( - "XF86AudioMute", - swayosd_client_cmd("--output-volume mute-toggle"), - "Toggle output mute", - { long_press = true, locked = true } - ) - bind.key( - "XF86AudioMicMute", - swayosd_client_cmd("--input-volume mute-toggle"), - "Toggle input mute", - { long_press = true, locked = true } - ) - bind.key("XF86AudioPlay", swayosd_client_cmd("--playerctl play-pause"), "Player play/pause", { locked = true }) - bind.key("XF86AudioPause", swayosd_client_cmd("--playerctl pause"), "Player pause", { locked = true }) - bind.key("XF86AudioNext", swayosd_client_cmd("--playerctl next"), "Player next", { locked = true }) - bind.key("XF86AudioPrev", swayosd_client_cmd("--playerctl prev"), "Player previous", { locked = true }) - end, + { + keys = "XF86MonBrightnessUp", + dispatcher = function() + swayosd_client_cmd("--brightness raise") + end, + dosc = "Increase brightness ", + opts = { long_press = true, locked = true }, + }, + { + keys = "XF86MonBrightnessDown", + dispatcher = swayosd_client_cmd("--brightness lower"), + desc = "Decrease brightness ", + opts = { long_press = true, locked = true }, + }, + { + keys = "XF86AudioRaiseVolume", + dispatcher = swayosd_client_cmd("--output-volume raise"), + desc = "Increase brightness ", + opts = { long_press = true, locked = true }, + }, + { + keys = "XF86AudioLowerVolume", + dispatcher = swayosd_client_cmd("--output-volume lower"), + desc = "Decrease brightness ", + opts = { long_press = true, locked = true }, + }, + { + keys = "XF86AudioMute", + dispatcher = swayosd_client_cmd("--output-volume mute-toggle"), + desc = "Toggle output mute", + opts = { long_press = true, locked = true }, + }, + { + keys = "XF86AudioMicMute", + dispatcher = swayosd_client_cmd("--input-volume mute-toggle"), + desc = "Toggle input mute", + opts = { long_press = true, locked = true }, + }, + { + keys = "XF86AudioPlay", + dispatcher = swayosd_client_cmd("--playerctl play-pause"), + desc = "Player play/pause", + opts = { locked = true }, + }, + { + keys = "XF86AudioPause", + dispatcher = swayosd_client_cmd("--playerctl pause"), + desc = "Player pause", + opts = { locked = true }, + }, + { + keys = "XF86AudioNext", + dispatcher = swayosd_client_cmd("--playerctl next"), + desc = "Player next", + opts = { locked = true }, + }, + { + keys = "XF86AudioPrev", + dispatcher = swayosd_client_cmd("--playerctl prev"), + desc = "Player previous", + opts = { locked = true }, + }, } return M diff --git a/lua/modules/waybar.lua b/lua/modules/waybar.lua index 69b4f7e..a0bf9cd 100644 --- a/lua/modules/waybar.lua +++ b/lua/modules/waybar.lua @@ -10,10 +10,16 @@ M.autostart = { } M.binds = { - function() - bind.leader_key("SHIFT + B", hl.dsp.exec_cmd("~/dotfiles/waybar/launch.sh"), "(re)launch waybar", {}) - bind.leader_key("CTRL + B", hl.dsp.exec_cmd("~/dotfiles/waybar/toggle.sh"), "toggle waybar", {}) - end, + { + keys = bind.with_leader("SHIFT + B"), + dispatcher = hl.dsp.exec_cmd("~/dotfiles/waybar/launch.sh"), + desc = "(re)launch waybar", + }, + { + keys = bind.with_leader("CTRL + B"), + dispatcher = hl.dsp.exec_cmd("~/dotfiles/waybar/toggle.sh"), + desc = "toggle waybar", + }, } return M