diff --git a/foot/.config/foot/foot.ini b/foot/.config/foot/foot.ini index c705df7..a41f5c9 100644 --- a/foot/.config/foot/foot.ini +++ b/foot/.config/foot/foot.ini @@ -32,6 +32,7 @@ blink=no [colors] background=1D1D20 foreground=D8D8D0 +alpha=0.9 regular0=181820 regular1=E00010 diff --git a/nvim/.config/nvim/lua/plugins/lsp.lua b/nvim/.config/nvim/lua/plugins/lsp.lua index b31f547..ac2e964 100644 --- a/nvim/.config/nvim/lua/plugins/lsp.lua +++ b/nvim/.config/nvim/lua/plugins/lsp.lua @@ -1,258 +1,258 @@ -- plugin for language servers return { - "neovim/nvim-lspconfig", - dependencies = { - -- Automatically install LSPs and related tools to stdpath for Neovim - { "williamboman/mason.nvim", config = true }, -- NOTE: Must be loaded before dependants - "williamboman/mason-lspconfig.nvim", - "WhoIsSethDaniel/mason-tool-installer.nvim", + "neovim/nvim-lspconfig", + dependencies = { + -- Automatically install LSPs and related tools to stdpath for Neovim + { "williamboman/mason.nvim", config = true }, -- NOTE: Must be loaded before dependants + "williamboman/mason-lspconfig.nvim", + "WhoIsSethDaniel/mason-tool-installer.nvim", - -- Useful status updates for LSP. - -- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})` - { - "j-hui/fidget.nvim", - tag = "v1.4.0", - opts = { - progress = { - display = { - done_icon = "✓", -- Icon shown when all LSP progress tasks are complete - }, - }, - notification = { - window = { - winblend = 0, -- Background color opacity in the notification window - }, - }, - }, - }, - }, - config = function() - vim.api.nvim_create_autocmd("LspAttach", { - group = vim.api.nvim_create_augroup("kickstart-lsp-attach", { clear = true }), - -- Create a function that lets us more easily define mappings specific - -- for LSP related items. It sets the mode, buffer and description for us each time. - callback = function(event) - local map = function(keys, func, desc, mode) - mode = mode or "n" - vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = "LSP: " .. desc }) - end + -- Useful status updates for LSP. + -- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})` + { + "j-hui/fidget.nvim", + tag = "v1.4.0", + opts = { + progress = { + display = { + done_icon = "✓", -- Icon shown when all LSP progress tasks are complete + }, + }, + notification = { + window = { + winblend = 0, -- Background color opacity in the notification window + }, + }, + }, + }, + }, + config = function() + vim.api.nvim_create_autocmd("LspAttach", { + group = vim.api.nvim_create_augroup("kickstart-lsp-attach", { clear = true }), + -- Create a function that lets us more easily define mappings specific + -- for LSP related items. It sets the mode, buffer and description for us each time. + callback = function(event) + local map = function(keys, func, desc, mode) + mode = mode or "n" + vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = "LSP: " .. desc }) + end - -- Jump to the definition of the word under your cursor. - -- This is where a variable was first declared, or where a function is defined, etc. - -- To jump back, press . - map("gd", require("telescope.builtin").lsp_definitions, "[G]oto [D]efinition") + -- Jump to the definition of the word under your cursor. + -- This is where a variable was first declared, or where a function is defined, etc. + -- To jump back, press . + map("gd", require("telescope.builtin").lsp_definitions, "[G]oto [D]efinition") - -- Find references for the word under your cursor. - map("gr", require("telescope.builtin").lsp_references, "[G]oto [R]eferences") + -- Find references for the word under your cursor. + map("gr", require("telescope.builtin").lsp_references, "[G]oto [R]eferences") - -- Jump to the implementation of the word under your cursor. - -- Useful when your language has ways of declaring types without an actual implementation. - map("gI", require("telescope.builtin").lsp_implementations, "[G]oto [I]mplementation") + -- Jump to the implementation of the word under your cursor. + -- Useful when your language has ways of declaring types without an actual implementation. + map("gI", require("telescope.builtin").lsp_implementations, "[G]oto [I]mplementation") - -- Jump to the type of the word under your cursor. - -- Useful when you're not sure what type a variable is and you want to see - -- the definition of its *type*, not where it was *defined*. - map("D", require("telescope.builtin").lsp_type_definitions, "Type [D]efinition") + -- Jump to the type of the word under your cursor. + -- Useful when you're not sure what type a variable is and you want to see + -- the definition of its *type*, not where it was *defined*. + map("D", require("telescope.builtin").lsp_type_definitions, "Type [D]efinition") - -- Fuzzy find all the symbols in your current document. - -- Symbols are things like variables, functions, types, etc. - map("ds", require("telescope.builtin").lsp_document_symbols, "[D]ocument [S]ymbols") + -- Fuzzy find all the symbols in your current document. + -- Symbols are things like variables, functions, types, etc. + map("ds", require("telescope.builtin").lsp_document_symbols, "[D]ocument [S]ymbols") - -- Fuzzy find all the symbols in your current workspace. - -- Similar to document symbols, except searches over your entire project. - map("ws", require("telescope.builtin").lsp_dynamic_workspace_symbols, "[W]orkspace [S]ymbols") + -- Fuzzy find all the symbols in your current workspace. + -- Similar to document symbols, except searches over your entire project. + map("ws", require("telescope.builtin").lsp_dynamic_workspace_symbols, "[W]orkspace [S]ymbols") - -- Rename the variable under your cursor. - -- Most Language Servers support renaming across files, etc. - map("rn", vim.lsp.buf.rename, "[R]e[n]ame") + -- Rename the variable under your cursor. + -- Most Language Servers support renaming across files, etc. + map("rn", vim.lsp.buf.rename, "[R]e[n]ame") - -- Execute a code action, usually your cursor needs to be on top of an error - -- or a suggestion from your LSP for this to activate. - map("ca", vim.lsp.buf.code_action, "[C]ode [A]ction", { "n", "x" }) + -- Execute a code action, usually your cursor needs to be on top of an error + -- or a suggestion from your LSP for this to activate. + map("ca", vim.lsp.buf.code_action, "[C]ode [A]ction", { "n", "x" }) - -- Opens a popup that displays documentation about the word under your cursor - -- See `:help K` for why this keymap - map("K", vim.lsp.buf.hover, "[K]ontext - Show Tooltip") + -- Opens a popup that displays documentation about the word under your cursor + -- See `:help K` for why this keymap + map("K", vim.lsp.buf.hover, "[K]ontext - Show Tooltip") - -- WARN: This is not Goto Definition, this is Goto Declaration. - -- For example, in C this would take you to the header. - map("gD", vim.lsp.buf.declaration, "[G]oto [D]eclaration") + -- WARN: This is not Goto Definition, this is Goto Declaration. + -- For example, in C this would take you to the header. + map("gD", vim.lsp.buf.declaration, "[G]oto [D]eclaration") - map("df", vim.diagnostic.open_float, "show diagnostic in floating window") + map("df", vim.diagnostic.open_float, "show diagnostic in floating window") - -- The following two autocommands are used to highlight references of the - -- word under your cursor when your cursor rests there for a little while. - -- See `:help CursorHold` for information about when this is executed - -- - -- When you move your cursor, the highlights will be cleared (the second autocommand). - local client = vim.lsp.get_client_by_id(event.data.client_id) - if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_documentHighlight) then - local highlight_augroup = vim.api.nvim_create_augroup("kickstart-lsp-highlight", { clear = false }) - vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, { - buffer = event.buf, - group = highlight_augroup, - callback = vim.lsp.buf.document_highlight, - }) + -- The following two autocommands are used to highlight references of the + -- word under your cursor when your cursor rests there for a little while. + -- See `:help CursorHold` for information about when this is executed + -- + -- When you move your cursor, the highlights will be cleared (the second autocommand). + local client = vim.lsp.get_client_by_id(event.data.client_id) + if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_documentHighlight) then + local highlight_augroup = vim.api.nvim_create_augroup("kickstart-lsp-highlight", { clear = false }) + vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, { + buffer = event.buf, + group = highlight_augroup, + callback = vim.lsp.buf.document_highlight, + }) - vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, { - buffer = event.buf, - group = highlight_augroup, - callback = vim.lsp.buf.clear_references, - }) + vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, { + buffer = event.buf, + group = highlight_augroup, + callback = vim.lsp.buf.clear_references, + }) - vim.api.nvim_create_autocmd("LspDetach", { - group = vim.api.nvim_create_augroup("kickstart-lsp-detach", { clear = true }), - callback = function(event2) - vim.lsp.buf.clear_references() - vim.api.nvim_clear_autocmds({ group = "kickstart-lsp-highlight", buffer = event2.buf }) - end, - }) - end + vim.api.nvim_create_autocmd("LspDetach", { + group = vim.api.nvim_create_augroup("kickstart-lsp-detach", { clear = true }), + callback = function(event2) + vim.lsp.buf.clear_references() + vim.api.nvim_clear_autocmds({ group = "kickstart-lsp-highlight", buffer = event2.buf }) + end, + }) + end - -- The following code creates a keymap to toggle inlay hints in your - -- code, if the language server you are using supports them - -- - -- This may be unwanted, since they displace some of your code - if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then - map("th", function() - vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = event.buf })) - end, "[T]oggle Inlay [H]ints") - end - end, - }) + -- The following code creates a keymap to toggle inlay hints in your + -- code, if the language server you are using supports them + -- + -- This may be unwanted, since they displace some of your code + if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then + map("th", function() + vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = event.buf })) + end, "[T]oggle Inlay [H]ints") + end + end, + }) - local capabilities = vim.lsp.protocol.make_client_capabilities() - capabilities = vim.tbl_deep_extend("force", capabilities, require("cmp_nvim_lsp").default_capabilities()) + local capabilities = vim.lsp.protocol.make_client_capabilities() + capabilities = vim.tbl_deep_extend("force", capabilities, require("cmp_nvim_lsp").default_capabilities()) - -- Enable the following language servers - local servers = { - clangd = {}, - lua_ls = { - -- cmd = {...}, - -- filetypes = { ...}, - -- capabilities = {}, - settings = { - Lua = { - completion = { - callSnippet = "Replace", - }, - runtime = { version = "LuaJIT" }, - workspace = { - checkThirdParty = false, - library = { - "${3rd}/luv/library", - unpack(vim.api.nvim_get_runtime_file("", true)), - }, - }, - diagnostics = { disable = { "missing-fields" } }, + -- Enable the following language servers + local servers = { + clangd = {}, + lua_ls = { + -- cmd = {...}, + -- filetypes = { ...}, + -- capabilities = {}, + settings = { + Lua = { + completion = { + callSnippet = "Replace", + }, + runtime = { version = "LuaJIT" }, + workspace = { + checkThirdParty = false, + library = { + "${3rd}/luv/library", + unpack(vim.api.nvim_get_runtime_file("", true)), + }, + }, + diagnostics = { disable = { "missing-fields" } }, - -- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings - -- diagnostics = { disable = { 'missing-fields' } }, - }, - }, - }, - pylsp = { - settings = { - pylsp = { - plugins = { - pyflakes = { enabled = false }, - pycodestyle = { enabled = false }, - autopep8 = { enabled = false }, - yapf = { enabled = false }, - mccabe = { enabled = false }, - pylsp_mypy = { enabled = false }, - pylsp_black = { enabled = false }, - pylsp_isort = { enabled = false }, - }, - }, - }, - }, - ruff = { - -- Notes on code actions: https://github.com/astral-sh/ruff-lsp/issues/119#issuecomment-1595628355 - -- Get isort like behavior: https://github.com/astral-sh/ruff/issues/8926#issuecomment-1834048218 - commands = { - RuffAutofix = { - function() - vim.lsp.buf.execute_command({ - command = "ruff.applyAutofix", - arguments = { - { uri = vim.uri_from_bufnr(0) }, - }, - }) - end, - description = "Ruff: Fix all auto-fixable problems", - }, - RuffOrganizeImports = { - function() - vim.lsp.buf.execute_command({ - command = "ruff.applyOrganizeImports", - arguments = { - { uri = vim.uri_from_bufnr(0) }, - }, - }) - end, - description = "Ruff: Format imports", - }, - }, - }, - rust_analyzer = { - ["rust-analyzer"] = { - cargo = { - features = "all", - }, - checkOnSave = true, - check = { - command = "clippy", - }, - }, - }, - } + -- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings + -- diagnostics = { disable = { 'missing-fields' } }, + }, + }, + }, + pylsp = { + settings = { + pylsp = { + plugins = { + pyflakes = { enabled = false }, + pycodestyle = { enabled = false }, + autopep8 = { enabled = false }, + yapf = { enabled = false }, + mccabe = { enabled = false }, + pylsp_mypy = { enabled = false }, + pylsp_black = { enabled = false }, + pylsp_isort = { enabled = false }, + }, + }, + }, + }, + ruff = { + -- Notes on code actions: https://github.com/astral-sh/ruff-lsp/issues/119#issuecomment-1595628355 + -- Get isort like behavior: https://github.com/astral-sh/ruff/issues/8926#issuecomment-1834048218 + commands = { + RuffAutofix = { + function() + vim.lsp.buf.execute_command({ + command = "ruff.applyAutofix", + arguments = { + { uri = vim.uri_from_bufnr(0) }, + }, + }) + end, + description = "Ruff: Fix all auto-fixable problems", + }, + RuffOrganizeImports = { + function() + vim.lsp.buf.execute_command({ + command = "ruff.applyOrganizeImports", + arguments = { + { uri = vim.uri_from_bufnr(0) }, + }, + }) + end, + description = "Ruff: Format imports", + }, + }, + }, + rust_analyzer = { + ["rust-analyzer"] = { + cargo = { + features = "all", + }, + checkOnSave = true, + check = { + command = "clippy", + }, + }, + }, + } - -- Ensure the servers and tools above are installed - require("mason").setup() + -- Ensure the servers and tools above are installed + require("mason").setup() - -- You can add other tools here that you want Mason to install - -- for you, so that they are available from within Neovim. - local ensure_installed = vim.tbl_keys(servers or {}) - vim.list_extend(ensure_installed, { - "stylua", -- Used to format Lua code - "clangd", - "rust-analyzer", - }) - require("mason-tool-installer").setup({ ensure_installed = ensure_installed }) + -- You can add other tools here that you want Mason to install + -- for you, so that they are available from within Neovim. + local ensure_installed = vim.tbl_keys(servers or {}) + vim.list_extend(ensure_installed, { + "stylua", -- Used to format Lua code + "clangd", + "rust-analyzer", + }) + require("mason-tool-installer").setup({ ensure_installed = ensure_installed }) - -- vim.cmd([[autocmd! ColorScheme * highlight NormalFloat guibg=#1f2335]]) - -- vim.cmd([[autocmd! ColorScheme * highlight FloatBorder guifg=white guibg=#1f2335]]) + -- vim.cmd([[autocmd! ColorScheme * highlight NormalFloat guibg=#1f2335]]) + -- vim.cmd([[autocmd! ColorScheme * highlight FloatBorder guifg=white guibg=#1f2335]]) - local border = { - { "╭", "FloatBorder" }, - { "─", "FloatBorder" }, - { "╮", "FloatBorder" }, - { "│", "FloatBorder" }, - { "╯", "FloatBorder" }, - { "─", "FloatBorder" }, - { "╰", "FloatBorder" }, - { "│", "FloatBorder" }, - } + local border = { + { "╭", "FloatBorder" }, + { "─", "FloatBorder" }, + { "╮", "FloatBorder" }, + { "│", "FloatBorder" }, + { "╯", "FloatBorder" }, + { "─", "FloatBorder" }, + { "╰", "FloatBorder" }, + { "│", "FloatBorder" }, + } - local orig_util_open_floating_preview = vim.lsp.util.open_floating_preview - function vim.lsp.util.open_floating_preview(contents, syntax, opts, ...) - opts = opts or {} - opts.border = opts.border or border - return orig_util_open_floating_preview(contents, syntax, opts, ...) - end + local orig_util_open_floating_preview = vim.lsp.util.open_floating_preview + function vim.lsp.util.open_floating_preview(contents, syntax, opts, ...) + opts = opts or {} + opts.border = opts.border or border + return orig_util_open_floating_preview(contents, syntax, opts, ...) + end - require("mason-lspconfig").setup({ - handlers = { - function(server_name) - local server = servers[server_name] or {} - -- This handles overriding only values explicitly passed - -- by the server configuration above. Useful when disabling - -- certain features of an LSP (for example, turning off formatting for ts_ls) - server.capabilities = vim.tbl_deep_extend("force", {}, capabilities, server.capabilities or {}) - require("lspconfig")[server_name].setup(server) - end, - }, - }) - end, + require("mason-lspconfig").setup({ + handlers = { + function(server_name) + local server = servers[server_name] or {} + -- This handles overriding only values explicitly passed + -- by the server configuration above. Useful when disabling + -- certain features of an LSP (for example, turning off formatting for ts_ls) + server.capabilities = vim.tbl_deep_extend("force", {}, capabilities, server.capabilities or {}) + require("lspconfig")[server_name].setup(server) + end, + }, + }) + end, } diff --git a/scripts/reminder.sh b/scripts/reminder.sh index 54393bd..d596dd9 100755 --- a/scripts/reminder.sh +++ b/scripts/reminder.sh @@ -2,7 +2,7 @@ source process-status.sh -set_reminder() { +function set_reminder { message_reminder=$( cat <<'EOF' enter reminder message to display when the timer rings @@ -20,10 +20,10 @@ EOF notify-send "ERROR" "[atd.service] is not running" fi - reminder="$(rofi -dmenu -theme ~/.config/rofi/themes/input-dialog-blue.rasi -mesg "${message_reminder}")" + reminder="$(fuzzel --dmenu)" if [[ -z "${reminder}" ]]; then return 1; fi - time="$(rofi -dmenu -theme ~/.config/rofi/themes/input-dialog-blue.rasi -mesg "${message_time}")" + time="$(fuzzel --dmenu)" if [[ -z "${time}" ]]; then return 1; fi if ! $(echo "notify-send '${reminder}'" | at "${time}"); then diff --git a/scripts/select-audio-sink.sh b/scripts/select-audio-sink.sh index 5dba6cf..bff8115 100755 --- a/scripts/select-audio-sink.sh +++ b/scripts/select-audio-sink.sh @@ -13,7 +13,7 @@ select_audio_sink() { return 1 fi - selection="$(printf "%s\n" "${names[@]//\"/}" | rofi -dmenu -i --only-match)" + selection="$(printf "%s\n" "${names[@]//\"/}" | fuzzel --dmenu)" unset number for n in ${!names[@]}; do