
Setup Overview
This section documents the tools, configs, and workflows behind my daily setup. It combines real dotfiles, short tutorials, and practical context so the system is not just shown, but also explained.
The topics below cover the desktop, terminal, shell, notifications, widgets, Git, and supporting tools. Documentation files can be read as rendered guides, while config files stay available as raw source.
binds.lua
.config/hypr/lua/binds.lua
local M = {}
local mod = "SUPER"
local function bind(keys, dispatcher, opts)
hl.bind(keys, dispatcher, opts)
end
local function mod_bind(keys, dispatcher, opts)
bind(mod .. " + " .. keys, dispatcher, opts)
end
local function exec(command)
return hl.dsp.exec_cmd(command)
end
local function toggle_special(name)
return hl.dsp.workspace.toggle_special(name)
end
function M.setup(programs)
bind("CTRL + SUPER + SHIFT + T", exec(os.getenv("HOME") .. "/.config/eww/scripts/tux-toggle.sh"))
mod_bind("Return", exec(programs.terminal))
mod_bind("B", exec(programs.browser))
mod_bind("T", exec(programs.tor_browser))
mod_bind("Space", exec(programs.launcher))
mod_bind("Escape", exec(programs.lock))
mod_bind("F1", exec("systemctl suspend"))
mod_bind("CTRL + B", toggle_special("firefox"))
mod_bind("CTRL + D", toggle_special("discord"))
mod_bind("CTRL + N", toggle_special("notes"))
mod_bind("CTRL + F", toggle_special("files"))
mod_bind("CTRL + Return", toggle_special("term"))
mod_bind("CTRL + M", hl.dsp.submap("music"))
hl.define_submap("music", function()
bind("M", toggle_special("music"))
bind("L", toggle_special("cmus"))
bind("escape", hl.dsp.submap("reset"))
bind("catchall", hl.dsp.submap("reset"))
end)
mod_bind("S", exec([[grim -g "$(slurp)" ~/Pictures/Screenshots/$(date +%F_%T).png]]))
mod_bind("CTRL + S", exec([[grim -g "$(slurp)" -t png - | wl-copy --type image/png]]))
mod_bind("CTRL + v", exec(os.getenv("HOME") .. "/.config/waybar/scripts/record-toggle.sh"))
mod_bind("Q", hl.dsp.window.close())
mod_bind("F", hl.dsp.window.fullscreen())
mod_bind("CTRL + Space", hl.dsp.window.float({ action = "toggle" }))
mod_bind("h", hl.dsp.focus({ direction = "left" }))
mod_bind("l", hl.dsp.focus({ direction = "right" }))
mod_bind("k", hl.dsp.focus({ direction = "up" }))
mod_bind("j", hl.dsp.focus({ direction = "down" }))
mod_bind("CTRL + h", hl.dsp.focus({ workspace = "r-1" }))
mod_bind("CTRL + l", hl.dsp.focus({ workspace = "r+1" }))
mod_bind("CTRL + SHIFT + h", hl.dsp.window.move({ direction = "left" }))
mod_bind("CTRL + SHIFT + l", hl.dsp.window.move({ direction = "right" }))
mod_bind("CTRL + SHIFT + k", hl.dsp.window.move({ direction = "up" }))
mod_bind("CTRL + SHIFT + j", hl.dsp.window.move({ direction = "down" }))
mod_bind("ALT + h", hl.dsp.window.move({ workspace = "r-1" }))
mod_bind("ALT + l", hl.dsp.window.move({ workspace = "r+1" }))
mod_bind("SHIFT + h", hl.dsp.window.resize({ x = -40, y = 0, relative = true }), { repeating = true })
mod_bind("SHIFT + l", hl.dsp.window.resize({ x = 40, y = 0, relative = true }), { repeating = true })
mod_bind("SHIFT + k", hl.dsp.window.resize({ x = 0, y = -40, relative = true }), { repeating = true })
mod_bind("SHIFT + j", hl.dsp.window.resize({ x = 0, y = 40, relative = true }), { repeating = true })
for i = 1, 9 do
local key = tostring(i)
mod_bind(key, hl.dsp.focus({ workspace = i }))
mod_bind("CTRL + " .. key, hl.dsp.focus({ workspace = i }))
mod_bind("CTRL + SHIFT + " .. key, hl.dsp.window.move({ workspace = i }))
end
end
return M