diff options
| author | pablu <me@pablu.de> | 2026-08-06 20:49:18 +0200 |
|---|---|---|
| committer | pablu <me@pablu.de> | 2026-08-06 20:49:18 +0200 |
| commit | 0716da5eef605977b804f34f265979cf39be844b (patch) | |
| tree | fa58e49aacfca5a78034b2af63022e5b8bf00447 /dot_config/nvim/lua | |
| parent | b2ea1bd4568c0d1d9b700709ae5d7227de92f78a (diff) | |
update configs
Diffstat (limited to 'dot_config/nvim/lua')
| -rw-r--r-- | dot_config/nvim/lua/hypr-nav.lua | 105 | ||||
| -rw-r--r-- | dot_config/nvim/lua/plugins/catppuccin.lua | 9 | ||||
| -rw-r--r-- | dot_config/nvim/lua/plugins/lsp.lua | 3 |
3 files changed, 92 insertions, 25 deletions
diff --git a/dot_config/nvim/lua/hypr-nav.lua b/dot_config/nvim/lua/hypr-nav.lua index fc05495..3224b1d 100644 --- a/dot_config/nvim/lua/hypr-nav.lua +++ b/dot_config/nvim/lua/hypr-nav.lua @@ -2,55 +2,124 @@ local direction_map = { left = "h", right = "l", up = "k", - down = "j" + down = "j", } local runtime_dir = os.getenv("XDG_RUNTIME_DIR") or "/tmp" -local function get_stable_id() + +local function sanitize(value) + return value:gsub("[^%w_.-]", "_") +end + +local function get_hyprland_stable_id() local handle = io.popen("hyprctl activewindow -j 2>/dev/null") + + if not handle then + return "unknown" + end + local data = handle:read("*a") handle:close() + local ok, json = pcall(vim.json.decode, data) + if ok and json and json.stableId then return tostring(json.stableId) end + return "unknown" end -local stable_id = get_stable_id() +local function get_socket_path() + local pane_id = vim.env.HERDR_PANE_ID + + if pane_id and pane_id ~= "" then + return string.format( + "%s/nvim-hypr-nav-pane-%s.sock", + runtime_dir, + sanitize(pane_id) + ) + end -local socket_path = string.format("%s/nvim-hypr-nav-%s.sock", runtime_dir, stable_id) + return string.format( + "%s/nvim-hypr-nav-%s.sock", + runtime_dir, + get_hyprland_stable_id() + ) +end +local socket_path = get_socket_path() local server = vim.uv.new_pipe(false) + +local function reply(connection, response) + local ok = pcall(function() + connection:write(response, function() + pcall(function() + connection:close() + end) + end) + end) + + if not ok then + pcall(function() + connection:close() + end) + end +end + +-- Normally unnecessary because Herdr sockets contain the process ID, but it +-- also cleans up an ungracefully terminated direct-Neovim instance if the PID +-- happened to be reused. +vim.uv.fs_unlink(socket_path) + server:bind(socket_path) + server:listen(128, function(err) - if err then vim.notify("hypr-nav: " .. err, vim.log.levels.ERROR) end + if err then + vim.schedule(function() + vim.notify("hypr-nav: " .. err, vim.log.levels.ERROR) + end) + return + end - local conn = vim.uv.new_pipe(false) - server:accept(conn) + local connection = vim.uv.new_pipe(false) + server:accept(connection) - conn:read_start(function(err, data) - if not data then - pcall(function() conn:close() end) + connection:read_start(function(read_err, data) + if read_err or not data then + pcall(function() + connection:close() + end) return end + local direction = data:match("nav:(%a+)") - if not direction then - pcall(function() conn:write("invalid\n") end) - pcall(function() conn:close() end) + if not direction or not direction_map[direction] then + reply(connection, "invalid\n") return end vim.schedule(function() local before = vim.api.nvim_get_current_win() - local wincmd_dir = direction_map[direction] or direction:sub(1, 1) - vim.cmd("wincmd " .. wincmd_dir) + + vim.cmd("wincmd " .. direction_map[direction]) + local after = vim.api.nvim_get_current_win() - local response = (before == after) and "failed\n" or "success\n" + local response = before == after and "failed\n" or "success\n" - pcall(function() conn:write(response) end) - pcall(function() conn:close() end) + reply(connection, response) end) end) end) + +vim.api.nvim_create_autocmd("VimLeavePre", { + once = true, + callback = function() + pcall(function() + server:close() + end) + + vim.uv.fs_unlink(socket_path) + end, +}) diff --git a/dot_config/nvim/lua/plugins/catppuccin.lua b/dot_config/nvim/lua/plugins/catppuccin.lua index 86af49a..0734554 100644 --- a/dot_config/nvim/lua/plugins/catppuccin.lua +++ b/dot_config/nvim/lua/plugins/catppuccin.lua @@ -6,17 +6,14 @@ return lazy = false, config = function() require("catppuccin").setup({ - transparent_background = false, + transparent_background = true, custom_highlights = function(colors) return { - Normal = { bg = colors.base }, - NormalNC = { bg = colors.mantle }, - - WinSeparator = { fg = colors.surface1, bg = colors.mantle }, + WinSeparator = { fg = colors.surface1 }, StatusLine = { fg = colors.text, bg = colors.surface0 }, - StatusLineNC = { fg = colors.overlay0, bg = colors.mantle }, + StatusLineNC = { fg = colors.overlay0 }, CursorLine = { bg = colors.surface0 }, } diff --git a/dot_config/nvim/lua/plugins/lsp.lua b/dot_config/nvim/lua/plugins/lsp.lua index 9f049fe..746a48b 100644 --- a/dot_config/nvim/lua/plugins/lsp.lua +++ b/dot_config/nvim/lua/plugins/lsp.lua @@ -17,7 +17,8 @@ return { "templ", "nil_ls", "gleam", - "ty" + "ty", + "buf_ls" }) |
