dots

Mika's dotfiles
git clone git://popovic.xyz/dots.git/
Log | Files | Refs | README

commit 77e6504385113bb99ed92200909f6fb3e42bf210
parent 074ae99c27f0f28d9ecdc4064afc00ad33f193d9
Author: Milutin Popovic <milutin@popovic.xyz>
Date:   Sat,  4 Apr 2026 00:34:43 +0100

nvim fixes and trm dmenu-niri

Diffstat:
M.config/nvim/lua/plugins/lsp.lua | 6+-----
M.config/nvim/lua/plugins/telescope.lua | 173+++++++++++++++++++++++++++++++++++++++++--------------------------------------
M.local/bin/scripts/trm | 23++++++++++++++++++-----
3 files changed, 108 insertions(+), 94 deletions(-)

diff --git a/.config/nvim/lua/plugins/lsp.lua b/.config/nvim/lua/plugins/lsp.lua @@ -68,6 +68,7 @@ return { }) require("fidget").setup({}) + require("mason").setup() require("mason-lspconfig").setup({ handlers = { @@ -133,22 +134,17 @@ return { settings = { Lua = { runtime = { - -- Tell the language server which version of Lua you're using - -- (most likely LuaJIT in the case of Neovim) version = 'LuaJIT', }, diagnostics = { - -- Get the language server to recognize the `vim` global globals = { 'vim', 'require' }, }, workspace = { - -- Make the server aware of Neovim runtime files library = vim.api.nvim_get_runtime_file("", true), }, - -- Do not send telemetry data containing a randomized but unique identifier telemetry = { enable = false, }, diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua @@ -1,106 +1,111 @@ return { "nvim-telescope/telescope.nvim", dependencies = { - "nvim-lua/plenary.nvim", - "nvim-lua/popup.nvim", - "nvim-telescope/telescope-fzy-native.nvim", + "nvim-lua/plenary.nvim", + "nvim-lua/popup.nvim", + "nvim-telescope/telescope-fzy-native.nvim", }, config = function() - local previewers = require("telescope.previewers") - local _bad = { ".*%.tex", ".*%.md", ".*%.html" } - local bad_files = function(filepath) - for _, v in ipairs(_bad) do - if filepath:match(v) then - return false + local previewers = require("telescope.previewers") + local _bad = { ".*%.tex", ".*%.md", ".*%.html" } + local bad_files = function(filepath) + for _, v in ipairs(_bad) do + if filepath:match(v) then + return false + end + end + return true end + local new_maker = function(filepath, bufnr, opts) + opts = opts or {} + if opts.use_ft_detect == nil then opts.use_ft_detect = true end + opts.use_ft_detect = opts.use_ft_detect == false and false or bad_files(filepath) + previewers.buffer_previewer_maker(filepath, bufnr, opts) end - return true - end - local new_maker = function(filepath, bufnr, opts) - opts = opts or {} - if opts.use_ft_detect == nil then opts.use_ft_detect = true end - opts.use_ft_detect = opts.use_ft_detect == false and false or bad_files(filepath) - previewers.buffer_previewer_maker(filepath, bufnr, opts) - end - local edge_borders = { - prompt = { "─", "│", "", "│", "┌", "┐", "│", "│" }, - results = { "─", "│", "─", "│", "├", "┤", "┘", "└" }, - preview = { "─", "│", "─", "│", "┌", "┐", "┘", "└" }, - } + local edge_borders = { + prompt = { "─", "│", "─", "│", "┌", "┐", "┘", "└" }, + results = { "─", "│", "─", "│", "┌", "┐", "┘", "└" }, + preview = { "─", "│", "─", "│", "┌", "┐", "┘", "└" }, + } - require("telescope").setup { - defaults = - vim.tbl_extend( - "force", - require("telescope.themes").get_dropdown({ - borderchars = edge_borders, - }), - { - buffer_previewer_maker = new_maker, - } - ), + require("telescope").setup { + defaults = + vim.tbl_extend( + "force", + require("telescope.themes").get_dropdown({}), + { + borderchars = edge_borders, + layout_strategy = "horizontal", + layout_config = { + horizontal = { + prompt_position = "top", + preview_width = 0.55, + results_width = 0.8, + }, + }, + } + ), extentions = { - fzf = {} + fzf = {} } - } + } - local builtin = require('telescope.builtin') - require('telescope').load_extension('fzy_native') + local builtin = require('telescope.builtin') + require('telescope').load_extension('fzy_native') - vim.keymap.set('n', '<leader>ff', builtin.find_files, {}) - vim.keymap.set('n', '<leader>fg', builtin.live_grep, {}) - vim.keymap.set('n', '<leader>fb', builtin.buffers, {}) - vim.keymap.set('n', '<leader>fh', builtin.help_tags, {}) + vim.keymap.set('n', '<leader>ff', builtin.find_files, {}) + vim.keymap.set('n', '<leader>fg', builtin.live_grep, {}) + vim.keymap.set('n', '<leader>fb', builtin.buffers, {}) + vim.keymap.set('n', '<leader>fh', builtin.help_tags, {}) - vim.api.nvim_create_user_command( - 'FindConfig', - function () - builtin.find_files({ - search_dirs = { - os.getenv("XDG_CONFIG_HOME") .. "/nvim/lua", - os.getenv("XDG_CONFIG_HOME") .. "/nvim/after", - os.getenv("XDG_CONFIG_HOME") .. "/zsh", - os.getenv("XDG_CONFIG_HOME") .. "/shell", - os.getenv("XDG_CONFIG_HOME") .. "/X", - os.getenv("XDG_CONFIG_HOME") .. "/X11", - os.getenv("XDG_LOCAL_HOME") .. "/src", - os.getenv("XDG_LOCAL_HOME") .. "/bin", - os.getenv("XDG_DOTFILES"), - }, - hidden = true, - }) + vim.api.nvim_create_user_command( + 'FindConfig', + function() + builtin.find_files({ + search_dirs = { + os.getenv("XDG_CONFIG_HOME") .. "/nvim/lua", + os.getenv("XDG_CONFIG_HOME") .. "/nvim/after", + os.getenv("XDG_CONFIG_HOME") .. "/zsh", + os.getenv("XDG_CONFIG_HOME") .. "/shell", + os.getenv("XDG_CONFIG_HOME") .. "/X", + os.getenv("XDG_CONFIG_HOME") .. "/X11", + os.getenv("XDG_LOCAL_HOME") .. "/src", + os.getenv("XDG_LOCAL_HOME") .. "/bin", + os.getenv("XDG_DOTFILES"), + }, + hidden = true, + }) end, - {} - ) - vim.keymap.set('n', '<leader>lf', ":FindConfig<CR>") + {} + ) + vim.keymap.set('n', '<leader>lf', ":FindConfig<CR>") - vim.api.nvim_create_user_command( - 'GrepConfig', - function () - builtin.live_grep({ - search_dirs = { - os.getenv("XDG_CONFIG_HOME") .. "/nvim/lua", - os.getenv("XDG_CONFIG_HOME") .. "/nvim/after", - os.getenv("XDG_CONFIG_HOME") .. "/zsh", - os.getenv("XDG_CONFIG_HOME") .. "/shell", - os.getenv("XDG_CONFIG_HOME") .. "/X", - os.getenv("XDG_CONFIG_HOME") .. "/X11", - os.getenv("XDG_LOCAL_HOME") .. "/src", - os.getenv("XDG_LOCAL_HOME") .. "/bin", - os.getenv("XDG_DOTFILES"), - }, - hidden = true, - }) - end, - {} - ) - vim.keymap.set('n', '<leader>lg', ":GrepConfig<CR>") + vim.api.nvim_create_user_command( + 'GrepConfig', + function() + builtin.live_grep({ + search_dirs = { + os.getenv("XDG_CONFIG_HOME") .. "/nvim/lua", + os.getenv("XDG_CONFIG_HOME") .. "/nvim/after", + os.getenv("XDG_CONFIG_HOME") .. "/zsh", + os.getenv("XDG_CONFIG_HOME") .. "/shell", + os.getenv("XDG_CONFIG_HOME") .. "/X", + os.getenv("XDG_CONFIG_HOME") .. "/X11", + os.getenv("XDG_LOCAL_HOME") .. "/src", + os.getenv("XDG_LOCAL_HOME") .. "/bin", + os.getenv("XDG_DOTFILES"), + }, + hidden = true, + }) + end, + {} + ) + vim.keymap.set('n', '<leader>lg', ":GrepConfig<CR>") - vim.keymap.set('n', '<C-s>', builtin.spell_suggest, {}) + vim.keymap.set('n', '<C-s>', builtin.spell_suggest, {}) end } - diff --git a/.local/bin/scripts/trm b/.local/bin/scripts/trm @@ -1,6 +1,18 @@ #!/usr/bin/env zsh +is_wayland() { + [[ -n "${WAYLAND_DISPLAY:-}" ]] || [[ "${XDG_SESSION_TYPE:-}" == "wayland" ]] +} + +run_dmenu() { + if is_wayland; then + dmenu-niri "$@" + else + dmenu "$@" + fi +} + stop() { # vpn stop pgrep transmission | xargs kill -9 @@ -11,7 +23,7 @@ finish() { # notifies me when torrent finished downloading and then remove it so it doenst seed file=$(transmission-remote -l | grep 100% | awk '{printf $10}') - confirm=$(printf "yes\nno" | dmenu -p "Remove Torrent $file ?" ) + confirm=$(printf "yes\nno" | run_dmenu -p "Remove Torrent $file ?" ) if [[ $confirm == "yes" ]]; then transmission-remote -l |\ awk '$2 == "100%"{ system("transmission-remote -t " $1 " --remove") }' &&\ @@ -39,9 +51,9 @@ restart() { } magnet() { - LINK="$1" + MAGNET="$1" - if [ -z "$LINK" ]; then + if [ -z "$MAGNET" ]; then notify-send "Error" "need magnet link" fi @@ -49,13 +61,14 @@ magnet() { PORT="9091" ss -tuna | grep 9091 || trm start &&\ - confirm=$(printf "yes\nno" | dmenu -p "Add torrent?" ) + torrent_name=$(echo "$MAGNET" | perl -nE '/dn=([^&]+)/ && do { $n=$1; $n =~ s/%([0-9a-fA-F]{2})/chr(hex($1))/eg; say $n }') + confirm=$(printf "yes\nno" | run_dmenu -p "Add torrent ${torrent_name}?" ) if [[ $confirm == "yes" ]]; then SESSID=$(curl "http://$HOST:$PORT/transmission/rpc" | sed 's/.*<code>//g;s/<\/code>.*//g') add=$(curl --silent --header "$SESSID" \ "http://$HOST:$PORT/transmission/rpc"\ - -d "{\"method\":\"torrent-add\",\"arguments\":{\"filename\":\"${LINK}\"}}") + -d "{\"method\":\"torrent-add\",\"arguments\":{\"filename\":\"${MAGNET}\"}}") name=$(echo $add | jq -r '.arguments[].name') &&\ notify-send "Succsess File" "$name downloading" ||\