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:
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" ||\