diff options
Diffstat (limited to 'private_dot_config')
24 files changed, 1922 insertions, 0 deletions
diff --git a/private_dot_config/atuin/config.toml b/private_dot_config/atuin/config.toml new file mode 100644 index 0000000..b84151a --- /dev/null +++ b/private_dot_config/atuin/config.toml @@ -0,0 +1,92 @@ +## where to store your database, default is your system data directory +## linux/mac: ~/.local/share/atuin/history.db +## windows: %USERPROFILE%/.local/share/atuin/history.db +# db_path = "~/.history.db" + +## where to store your encryption key, default is your system data directory +## linux/mac: ~/.local/share/atuin/key +## windows: %USERPROFILE%/.local/share/atuin/key +# key_path = "~/.key" + +## where to store your auth session token, default is your system data directory +## linux/mac: ~/.local/share/atuin/session +## windows: %USERPROFILE%/.local/share/atuin/session +# session_path = "~/.session" + +## date format used, either "us" or "uk" +# dialect = "us" + +## enable or disable automatic sync +# auto_sync = true + +## enable or disable automatic update checks +# update_check = true + +## address of the sync server +# sync_address = "https://api.atuin.sh" + +## how often to sync history. note that this is only triggered when a command +## is ran, so sync intervals may well be longer +## set it to 0 to sync after every command +# sync_frequency = "1h" + +## which search mode to use +## possible values: prefix, fulltext, fuzzy, skim +# search_mode = "fuzzy" + +## which filter mode to use +## possible values: global, host, session, directory +# filter_mode = "global" + +## which filter mode to use when atuin is invoked from a shell up-key binding +## the accepted values are identical to those of "filter_mode" +## leave unspecified to use same mode set in "filter_mode" +# filter_mode_shell_up_key_binding = "global" + +## which style to use +## possible values: auto, full, compact +# style = "auto" + +## the maximum number of lines the interface should take up +## set it to 0 to always go full screen +# inline_height = 0 + +## enable or disable showing a preview of the selected command +## useful when the command is longer than the terminal width and is cut off +# show_preview = false + +## what to do when the escape key is pressed when searching +## possible values: return-original, return-query +# exit_mode = "return-original" + +## possible values: emacs, subl +# word_jump_mode = "emacs" + +## characters that count as a part of a word +# word_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + +## number of context lines to show when scrolling by pages +# scroll_context_lines = 1 + +## use ctrl instead of alt as the shortcut modifier key for numerical UI shortcuts +## alt-0 .. alt-9 +# ctrl_n_shortcuts = false + +## prevent commands matching any of these regexes from being written to history. +## Note that these regular expressions are unanchored, i.e. if they don't start +## with ^ or end with $, they'll match anywhere in the command. +## For details on the supported regular expression syntax, see +## https://docs.rs/regex/latest/regex/#syntax +# history_filter = [ +# "^secret-cmd", +# "^innocuous-cmd .*--secret=.+" +# ] + +## prevent commands run with cwd matching any of these regexes from being written +## to history. Note that these regular expressions are unanchored, i.e. if they don't +## start with ^ or end with $, they'll match anywhere in CWD. +## For details on the supported regular expression syntax, see +## https://docs.rs/regex/latest/regex/#syntax +# cwd_filter = [ +# "^/very/secret/area" +# ] diff --git a/private_dot_config/gh/config.yml b/private_dot_config/gh/config.yml new file mode 100644 index 0000000..aaec3a0 --- /dev/null +++ b/private_dot_config/gh/config.yml @@ -0,0 +1,12 @@ +# What protocol to use when performing git operations. Supported values: ssh, https +git_protocol: https +# What editor gh should run when creating issues, pull requests, etc. If blank, will refer to environment. +editor: nvim +# When to interactively prompt. This is a global config that cannot be overridden by hostname. Supported values: enabled, disabled +prompt: enabled +# A pager program to send command output to, e.g. "less". Set the value to "cat" to disable the pager. +pager: +# Aliases allow you to create nicknames for gh commands +aliases: + co: pr checkout +version: "1" diff --git a/private_dot_config/i3/config b/private_dot_config/i3/config new file mode 100644 index 0000000..bd31c31 --- /dev/null +++ b/private_dot_config/i3/config @@ -0,0 +1,174 @@ +# Default modkey +set $mod Mod4 + +font pango:Fantasque Sans Mono 11 + +# Start a terminal +bindsym $mod+Return exec alacritty --config-file ~/.alacrittyi3.yml + +# Kill focused window +bindsym $mod+Shift+q kill + +# Move between windows +bindsym $mod+h focus left +bindsym $mod+j focus down +bindsym $mod+k focus up +bindsym $mod+l focus right + +# Alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# Move focused window +bindsym $mod+Shift+h move left +bindsym $mod+Shift+j move down +bindsym $mod+Shift+k move up +bindsym $mod+Shift+l move right + +# Alternatively, you can use the cursor keys: +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# Split in horizontal orientation +bindsym $mod+Mod1+v split h + +# Split in vertical orientation +bindsym $mod+Mod1+h split v + +# Enter fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# Change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +# Toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# Change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# Focus the parent container +bindsym $mod+a focus parent + +# Open d-menu +# bindsym $mod+d exec dmenu_run +bindsym $mod+d exec "rofi -show combi -combi-modi window,drun -matching normal -drun-match-fields name,exec" + +set $ws1 "1" +set $ws2 "2" +set $ws3 "3" +set $ws4 "4" +set $ws5 "5" +set $ws6 "6" +set $ws7 "7" +set $ws8 "8" +set $ws9 "9" +set $ws10 "10" + +# switch to workspace +bindsym $mod+1 workspace number $ws1 +bindsym $mod+2 workspace number $ws2 +bindsym $mod+3 workspace number $ws3 +bindsym $mod+4 workspace number $ws4 +bindsym $mod+5 workspace number $ws5 +bindsym $mod+6 workspace number $ws6 +bindsym $mod+7 workspace number $ws7 +bindsym $mod+8 workspace number $ws8 +bindsym $mod+9 workspace number $ws9 +bindsym $mod+0 workspace number $ws10 + +# move focused container to workspace +bindsym $mod+Shift+1 move container to workspace number $ws1 +bindsym $mod+Shift+2 move container to workspace number $ws2 +bindsym $mod+Shift+3 move container to workspace number $ws3 +bindsym $mod+Shift+4 move container to workspace number $ws4 +bindsym $mod+Shift+5 move container to workspace number $ws5 +bindsym $mod+Shift+6 move container to workspace number $ws6 +bindsym $mod+Shift+7 move container to workspace number $ws7 +bindsym $mod+Shift+8 move container to workspace number $ws8 +bindsym $mod+Shift+9 move container to workspace number $ws9 +bindsym $mod+Shift+0 move container to workspace number $ws10 + + +# Volume +set $sink `pactl list short sinks | grep RUNNING | cut -f1` +bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume $sink +5% +bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume $sink -5% +bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute $sink toggle + +bindsym XF86MonBrightnessUp exec light -A 1 # increase screen brightness +bindsym XF86MonBrightnessDown exec light -U 1 # decrease screen brightness + +# Screenshots +set $screenshot-name `date +%d%m%Y-%H%M%S.png` +bindsym Print exec "mate-screenshot -i" +bindsym Shift+Print exec --no-startup-id mate-screenshot -a + +# Reload the configuration file +bindsym $mod+Shift+c reload + +# Restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $mod+Shift+r restart + +# Resize window (you can also use the mouse for that) +mode "resize" +{ + # Resize with the arrow keys + bindsym Left resize grow width 1 px or 1 ppt + bindsym Down resize shrink height 1 px or 1 ppt + bindsym Up resize grow height 1 px or 1 ppt + bindsym Right resize shrink width 1 px or 1 ppt + + # Back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} + +bindsym $mod+r mode "resize" + +# set primary gruvbox colorscheme colors +set $bg #282828 +set $red #cc241d +set $green #98971a +set $yellow #d79921 +set $blue #458588 +set $purple #b16286 +set $aqua #689d68 +set $gray #a89984 +set $darkgray #1d2021 +set $white #fbf1c7 + +# Start i3blocks to display a workspace bar +bar { + font pango: DejaVuSansMono Nerd Font 9 + i3bar_command i3bar + position bottom + strip_workspace_numbers yes + tray_output nonprimary + status_command i3blocks + + colors { + # bar background color + background $bg + # text color used for blocks that do not have a color specified. + statusline #fafafa + # workspaces section + # border backgr. text + focused_workspace $aqua $aqua $darkgray + inactive_workspace $darkgray $darkgray $yellow + active_workspace $darkgray $darkgray $yellow + urgent_workspace $red $red $bg + } +} + +client.focused $darkgray $aqua #000000 $yellow $darkgray +client.focused_inactive $darkgray $darkgray $yellow $purple $darkgray +client.unfocused $darkgray $darkgray $yellow $purple $darkgray +client.urgent $darkgray $red $white $red $red + diff --git a/private_dot_config/i3blocks/config b/private_dot_config/i3blocks/config new file mode 100644 index 0000000..d099c7c --- /dev/null +++ b/private_dot_config/i3blocks/config @@ -0,0 +1,44 @@ +command=/usr/share/i3blocks/$BLOCK_NAME +separator_block_width=15 + +[weather] +command=curl -Ss 'https://wttr.in/Catania?0&T&Q' | cut -c 16- | head -2 | xargs echo +interval=3600 +color=#A4C2F4 + +[cputemp] +command=sensors | grep edge | cut -d '+' -f 2 | cut -d ' ' -f 1 +interval=10 +label=🌡️ + +[memory] +label=MEM +separator=false +interval=30 + +[disk] +label=DISK +interval=30 + +[cpu_usage] +label=CPU +interval=10 +min_width=CPU: 100.00% + +[wifi] +command=iwgetid -r | tr '\n' ' ' && grep $(iwgetid -m | awk '{ printf "%s", $1 }') /proc/net/wireless | awk '{ printf "%i%\n", int($3 * 100 / 70) }';exit 0 instance=wlp2s0 +interval=5 +label= + +[battery] +command=i3_battery.sh +interval=10 + +[volume] +command=pulsemixer --get-volume | cut -d " " -f 1; exit 0 +interval=1 +label= + +[time] +command=date +interval=1 diff --git a/private_dot_config/i3blocks/i3_battery.sh b/private_dot_config/i3blocks/i3_battery.sh new file mode 100644 index 0000000..97ea493 --- /dev/null +++ b/private_dot_config/i3blocks/i3_battery.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +BAT=$(acpi -b | grep -E -o '[0-9][0-9]?%') +CHECK_CHARGING=$(acpi -b | grep -E -o 'Charging') + +# Full and short texts +echo "Battery: $BAT" +echo "BAT: $BAT" + +if [ "$CHECK_CHARGING" != "" ]; then + echo "#1abc9c" + exit 0 +fi +# Set urgent flag below 5% or use orange below 20% +[ ${BAT%?} -le 5 ] && exit 33 +[ ${BAT%?} -le 35 ] && echo "#d35400" + +exit 0 diff --git a/private_dot_config/iamb/config.toml b/private_dot_config/iamb/config.toml new file mode 100644 index 0000000..3d2939a --- /dev/null +++ b/private_dot_config/iamb/config.toml @@ -0,0 +1,14 @@ +default_profile = "deb" + +[profiles.deb] +user_id = "@santo:matrix.debian.social" +url = "https://matrix.debian.social" +rooms = [] + +[macros.normal] +"q" = ":chats<Enter>" +"v" = "<C-w>m" +"ZZ" = "<Esc>:q<Enter>" + +[settings.notifications] +enabled = true diff --git a/private_dot_config/nvim/after/ftdetect/.keep b/private_dot_config/nvim/after/ftdetect/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/private_dot_config/nvim/after/ftdetect/.keep diff --git a/private_dot_config/nvim/after/ftplugin/dockerfile.vim b/private_dot_config/nvim/after/ftplugin/dockerfile.vim new file mode 100644 index 0000000..b388056 --- /dev/null +++ b/private_dot_config/nvim/after/ftplugin/dockerfile.vim @@ -0,0 +1 @@ +let g:indentLine_enabled = 0 diff --git a/private_dot_config/nvim/after/ftplugin/json.vim b/private_dot_config/nvim/after/ftplugin/json.vim new file mode 100644 index 0000000..b388056 --- /dev/null +++ b/private_dot_config/nvim/after/ftplugin/json.vim @@ -0,0 +1 @@ +let g:indentLine_enabled = 0 diff --git a/private_dot_config/nvim/after/ftplugin/markdown.vim b/private_dot_config/nvim/after/ftplugin/markdown.vim new file mode 100644 index 0000000..b388056 --- /dev/null +++ b/private_dot_config/nvim/after/ftplugin/markdown.vim @@ -0,0 +1 @@ +let g:indentLine_enabled = 0 diff --git a/private_dot_config/nvim/after/syntax/antlr4.vim b/private_dot_config/nvim/after/syntax/antlr4.vim new file mode 100644 index 0000000..8f6c412 --- /dev/null +++ b/private_dot_config/nvim/after/syntax/antlr4.vim @@ -0,0 +1,93 @@ +if exists('b:current_syntax') + finish +endif + +command -nargs=* HiLink highlight link <args> + +syntax match antlr4EventId +[a-zA-Z_][a-zA-Z0-9_]*+ contained +syntax match antlr4ParName +\<[a-z][a-zA-Z0-9_]*\>+ containedin=antlr4RHS +syntax match antlr4LexName +\<[A-Z][a-zA-Z0-9_]*\>+ containedin=antlr4RHS +syntax match antlr4Assign /[a-zA-Z]\++\?=/ containedin=antlr4RHS + +if exists('g:antlr4_highlight_punctuation') + syntax match antlr4Punctuation +[\-():;]+ +endif + +syntax include @included syntax/java.vim + +syntax region antlr4RHS start=+:+ end=+;+ extend + +syntax region antlr4Embed start=+{+ end=+}?\?+ contains=@included,antlr4Variable keepend + \ containedin=antlr4RHS +syntax region antlr4Embed start=+\[+ end=+\]+ contains=@included,antlr4Variable keepend + + +syntax match antlr4Repeat +[+*]+ containedin=antlr4RHS +syntax match antlr4Condition +?+ containedin=antlr4RHS +syntax match antlr4Option "|" containedin=antlr4RHS + +" Use specifically containedin=javaParenT so it will be highlighted inside +" parens +syntax match antlr4Variable contained +\$[a-zA-Z_][a-zA-Z0-9_]*+ containedin=javaParenT + +syntax match antlr4Keyword /@\(\(parser\|lexer\)::\)\?\(header\|members\)/ +syntax match antlr4Keyword /@after/ + +syntax match antlr4Escape +\\[nrvt]+ +syntax match antlr4Escape +\\u[0-9a-fA-F]\{4}+ +syntax match antlr4Escape +\\u{[0-9a-fA-F]\{4}}+ +syntax match antlr4Escape +\\p{.\{-}}+ + +syntax match antlr4SetEscape +\\-+ containedin=antlr4RHS + +syntax keyword antlr4Keyword grammar +syntax keyword antlr4Keyword lexer parser options +syntax keyword antlr4Keyword fragment tokens +syntax keyword antlr4Keyword returns locals throws catch finally mode options + +syntax keyword antlr4Import import + +syntax keyword antlr4Operation skip more popMode mode pushMode type channel + \ containedin=antlr4RHS + +syntax region antlr4Set start=+\[+ end=+\]+ contained + \ contains=antlr4Escape,antlr4SetEscape containedin=antlr4RHS +syntax region antlr4Attr start="<" end=">" + \ containedin=antlr4RHS +syntax region antlr4String start=+'+ end=+'+ containedin=antlr4RHS contains=antlr4Escape + +syntax region antlr4Comment start=+/\*+ end=+\*/+ + \ containedin=antlr4RHS +syntax region antlr4Comment start=+//+ end=+$+ + \ containedin=antlr4RHS + +syntax region antlr4Event start=+#+ end=+$+ + \ containedin=antlr4RHS contains=antlr4EventId + +HiLink antlr4Comment Comment +HiLink antlr4Keyword KeyWord +HiLink antlr4ParName Type +HiLink antlr4LexName Macro +HiLink antlr4Attr Special +HiLink antlr4Assign Statement +HiLink antlr4Set Character +HiLink antlr4String String + +if exists('g:antlr4_highlight_punctuation') + HiLink antlr4Punctuation Operator +endif + +HiLink antlr4Repeat Repeat +HiLink antlr4Condition Conditional +HiLink antlr4Option Delimiter +HiLink antlr4Import PreProc +HiLink antlr4Escape Special +HiLink antlr4SetEscape antlr4Escape +HiLink antlr4Operation Function +HiLink antlr4EventId Function +HiLink antlr4Annotation KeyWord +HiLink antlr4Variable Special + +delcommand HiLink + +let b:current_syntax = 'antlr4' diff --git a/private_dot_config/nvim/after/syntax/jolie.vim b/private_dot_config/nvim/after/syntax/jolie.vim new file mode 100644 index 0000000..c7b3a21 --- /dev/null +++ b/private_dot_config/nvim/after/syntax/jolie.vim @@ -0,0 +1,59 @@ +if exists("b:current_syntax") + finish +endif + +syn keyword jolieBoolean true false +syn keyword jolieDefinitionTypes inputPort outputPort interface type define service +syn keyword jolieKeyword location Location protocol Protocol interfaces Interfaces aggregates Aggregates redirects Redirects class Jolie JavaScript Java OneWay oneWay RequestResponse requestResponse execution +syn keyword jolieOtherKeyword constants cH instanceof execution comp concurrent nullProcess single sequential main foreign java init cset is_defined embed embedded extender courier forward install undef include synchronized throws throw from import as +syn keyword jolieConditional if else +syn keyword jolieRepeat while for foreach until in +syn keyword jolieException throw +syn keyword jolieStatement forward scope provide +syn keyword jolieType void bool int string long double any raw +syn keyword jolieKeywordModifiers csets global +syn match jolieOperators "(<<|&&|\|\||+|-|/|*|=|==|++|-|+=|-=|*=|/=|!|%=|%)" + +syn match jolieSpecialChar contained "\\." + +syn region jolieString start=+"+ end=+"+ contains=jolieSpecialChar + +syn match jolieNumber "\<\d\+\>" + +syn match jolieMethodInvocation "\<\(\w\+\)@\(\w\+\)\>" contains=jolieMethodName,jolieClassName + +syn match jolieMethodName "\w\+@"me=e-1 contained +syn match jolieClassName "@\w\+\>"ms=s+1 contained + +syn match jolieMethodName2 "\(\w\+\)(" + +syn keyword jolieTodo contained TODO FIXME +syn region jolieComment start="/\*" end="\*/" contains=jolieTodo +syn match jolieLineComment "//.*" + +let b:current_syntax = "jolie" + +hi def link jolieBoolean Boolean +hi def link jolieComment Comment +hi def link jolieLineComment Comment +hi def link jolieDefinitionTypes Keyword +hi def link jolieKeyword Keyword +hi def link jolieOtherKeyword Keyword + +hi def link jolieOperators Operator + +hi def link jolieConditional Conditional +hi def link jolieRepeat Repeat +hi def link jolieException Exception +hi def link jolieStatement Statement +hi def link jolieType Type + +hi def link jolieKeywordModifiers StorageClass + +hi def link jolieString String + +hi def link jolieNumber Number + +hi def link jolieMethodName Function +hi def link jolieClassName Type +hi def link jolieMethodName2 Function diff --git a/private_dot_config/nvim/after/syntax/prr.vim b/private_dot_config/nvim/after/syntax/prr.vim new file mode 100644 index 0000000..43a0557 --- /dev/null +++ b/private_dot_config/nvim/after/syntax/prr.vim @@ -0,0 +1,22 @@ +" Vim syntax file +" Language: prr +" Maintainer: Daniel Xu <dxu@dxuuu.xyz> +" Last Change: 2022 Mar 25 +" Credits: Bram Moolenaar <Bram@vim.org> +" +" This version is copied and edited from diff.vim + +" Check whether an earlier file has defined a syntax already +if exists("b:current_syntax") + finish +endif + +syn match diffAdded "^> +.*" +syn match diffRemoved "^> -.*" + +" Define the default highlighting. +" Only used when an item doesn't have highlighting yet +hi def link diffAdded Type +hi def link diffRemoved Statement + +let b:current_syntax = "prr" diff --git a/private_dot_config/nvim/dot_netrwhist b/private_dot_config/nvim/dot_netrwhist new file mode 100644 index 0000000..987ad58 --- /dev/null +++ b/private_dot_config/nvim/dot_netrwhist @@ -0,0 +1,5 @@ +let g:netrw_dirhistmax =10 +let g:netrw_dirhistcnt =3 +let g:netrw_dirhist_3='/var/www/html/riflessi/img/base' +let g:netrw_dirhist_2='/var/www/html/riflessi/img' +let g:netrw_dirhist_1='/var/www/html/riflessi/img/base' diff --git a/private_dot_config/nvim/init.lua b/private_dot_config/nvim/init.lua new file mode 100644 index 0000000..29608d4 --- /dev/null +++ b/private_dot_config/nvim/init.lua @@ -0,0 +1,242 @@ +-- Auto-reload Neovim configuration on save +vim.cmd [[ + augroup packer_user_config + autocmd! + autocmd BufWritePost init.lua source <afile> | PackerCompile + augroup end +]] + +require('packer').startup(function(use) + -- Packer can manage itself + use 'wbthomason/packer.nvim' + + -- use 'cespare/vim-toml' -- TOML syntax highlighting + use 'rust-lang/rust.vim' -- Rust language support + use 'nvim-lua/plenary.nvim' -- Lua utilities for plugins + use 'lewis6991/gitsigns.nvim' -- Git integration (show signs in gutter) + use 'kyazdani42/nvim-web-devicons'-- File icons + use 'mg979/vim-visual-multi' -- Multi-cursor support + use 'tpope/vim-fugitive' -- Git wrapper for commands like :Git + use 'ap/vim-css-color' -- Show color preview for CSS colors + -- use 'lukas-reineke/indent-blankline.nvim' -- Display vertical indentation lines + use 'google/vim-searchindex' -- Show search match count + use 'numToStr/Comment.nvim' -- Easily comment/uncomment lines + -- use 'togglebyte/togglerust' -- Rust debugging tools + -- use 'chriskempson/base16-vim' -- Base16 color schemes + use 'NLKNguyen/papercolor-theme' -- PaperColor theme + -- use 'projekt0n/github-nvim-theme' + use 'Shatur/neovim-ayu' + use 'nvim-telescope/telescope.nvim' -- Fuzzy finder + use 'neovim/nvim-lspconfig' -- LSP configuration for multiple languages + use 'hrsh7th/nvim-cmp' -- Autocompletion engine + use 'hrsh7th/cmp-nvim-lsp' -- LSP source for nvim-cmp + use 'saadparwaiz1/cmp_luasnip' -- Snippet completion for nvim-cmp + use 'L3MON4D3/LuaSnip' -- Snippet engine + use 'kyazdani42/nvim-tree.lua' -- File explorer + use 'ray-x/lsp_signature.nvim' -- Show function signatures as you type + use 'folke/todo-comments.nvim' -- Highlight and search TODO comments + use 'saecki/crates.nvim' -- Rust crate version management + use { + 'nvim-treesitter/nvim-treesitter', + run = ':TSUpdate' -- Update treesitter parsers + } + use 'folke/trouble.nvim' -- Diagnostics and references list + use 'folke/lsp-colors.nvim' -- Adds missing LSP diagnostics highlight groups + use 'sindrets/diffview.nvim' -- Git diff and history viewer + + use 'mfussenegger/nvim-dap' -- Debug Adapter Protocol client implementation + use 'leoluz/nvim-dap-go' -- Neovim DAP extension for Go + use 'nvim-neotest/nvim-nio' + use 'rcarriga/nvim-dap-ui' + + use 'koraa/proverif.vim' + + use { + 'nvim-lualine/lualine.nvim', + requires = { 'nvim-tree/nvim-web-devicons', opt = true } + } + + -- Automatically set up the configuration after cloning packer.nvim + if packer_bootstrap then + require('packer').sync() + end +end) + +-- General Neovim settings + +-- Configure completion options (menu, menuone, noselect) +vim.opt.completeopt = "menu,menuone,noselect" + +-- Enable system clipboard access +vim.opt.clipboard = "unnamedplus" + +-- Enable mouse support in all modes +vim.opt.mouse = "a" + +-- Enable command-line completion features +vim.opt.wildmenu = true +vim.opt.wildmode = { "longest", "list", "full" } + +-- Ignore certain file types when using wildmenu for file navigation +vim.opt.wildignore = "*.png,*.jpg,*.gif,*.swp,*.o,*.pyc,vendor" + +-- Show absolute line numbers +-- vim.opt.number = true + +-- Show relative line numbers +-- vim.opt.relativenumber = true + +-- Set text width to 80 characters +vim.opt.textwidth = 80 + +-- Highlight a column at 80 characters +vim.opt.colorcolumn = "80" + +-- Disable line wrapping +vim.opt.wrap = false + +-- Set tab width and shift width to 4 spaces +vim.opt.tabstop = 4 +vim.opt.shiftwidth = 4 + +-- Use spaces instead of tabs +vim.opt.expandtab = true + +-- Automatically indent new lines to match the previous line +vim.opt.autoindent = true + +-- Automatically reload files if they are modified outside of Neovim +vim.opt.autoread = true + +-- Set UTF-8 as the default encoding +vim.opt.encoding = "UTF-8" + +-- Set the history size for command line and search +vim.opt.history = 1000 + +-- Highlight search matches +vim.opt.hlsearch = true + +-- Incrementally search while typing +vim.opt.incsearch = true + +-- Disable backup file creation +vim.opt.backup = false + +-- Set the status line to always be visible +vim.opt.laststatus = 2 + +-- Show invisible characters (e.g., tabs, spaces, etc.) +vim.opt.list = true + +vim.opt.showmatch = true + +-- Define characters for different invisible characters +vim.opt.listchars = { eol = '⏎', tab = '» ', trail = 'ˑ', nbsp = '⎵' } +vim.cmd([[match Error /\s\+$/]]) +vim.api.nvim_create_autocmd("FileType", { + pattern = { "go", "c", "cpp" }, + callback = function() + vim.opt.autoindent = true + vim.opt.expandtab = false + vim.opt.tabstop = 4 + vim.opt.shiftwidth = 4 + end, +}) + + +-- Use indent-based folding +vim.opt.foldmethod = "indent" + +-- Open vertical splits to the right of the current window +vim.opt.splitright = true + +-- Open horizontal splits below the current window +vim.opt.splitbelow = true + +-- Optimize screen redrawing for performance +vim.opt.lazyredraw = true + +-- Disable swapfile creation +vim.opt.swapfile = false + +-- Enable 24-bit RGB color in the terminal +vim.opt.termguicolors = true + +-- Set background to dark mode +vim.opt.background = "dark" + +-- Highlight the current line +vim.opt.cursorline = true + +-- **Highlight settings** +-- Set custom highlights for various UI components +-- vim.cmd('colorscheme github_dark_default') +vim.cmd('colorscheme ayu') +vim.cmd [[ + highlight Normal guibg=NONE + " highlight NormalNC guibg=#111111 + highlight NonText guibg=NONE + highlight LineNr guibg=NONE + highlight CursorLine guibg=NONE + highlight CursorLineNr guibg=NONE guifg=Yellow + highlight StatusLineNC guibg=#0d1117 guifg=#cacaca + highlight Error guibg=red guifg=#000000 + "highlight StatusLine guibg=#000000 guifg=Yellow + "highlight StatusLineNC guibg=#000000 guifg=Yellow + highlight SignColumn guibg=NONE + highlight GitGutterChange guifg=#f1c40f guibg=#000000 + highlight GitGutterAdd guifg=#2ecc71 guibg=#000000 + highlight GitGutterDelete guifg=#e74c3c guibg=#000000 +]] + +-- Keybindings +vim.g.mapleader = "," -- Set the leader key to "," +vim.api.nvim_set_keymap('n', 'j', 'gj', { noremap = true }) -- Move down visually wrapped lines +vim.api.nvim_set_keymap('n', 'k', 'gk', { noremap = true }) -- Move up visually wrapped lines + +---- Buffers +vim.api.nvim_set_keymap('n', ']b', ':bnext<CR>', { noremap = true, silent = true }) -- Move to the next buffer +vim.api.nvim_set_keymap('n', '[b', ':bprev<CR>', { noremap = true, silent = true }) -- Move to the previous buffer +vim.api.nvim_set_keymap('n', '<leader>b', '<cmd>Telescope buffers<CR>', { noremap = true, silent = true }) -- List and switch to buffers using Telescope + +---- Tabs +vim.api.nvim_set_keymap('n', 'tn', ':tabnew<CR>', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('n', ']t', ':tabn<CR>', { noremap = true, silent = true }) -- Move to the next tab +vim.api.nvim_set_keymap('n', '[t', ':tabp<CR>', { noremap = true, silent = true }) -- Move to the previous tab + +vim.api.nvim_set_keymap('n', '<leader>o', ':only<CR>', { noremap = true }) -- Close all other windows +vim.api.nvim_set_keymap('n', '<A-t>', ':NvimTreeToggle<CR>', { noremap = true }) -- Toggle NvimTree file explorer +vim.api.nvim_set_keymap('n', '<leader>pa', ':set paste<CR>', { noremap = true }) -- Enable paste mode +vim.api.nvim_set_keymap('n', '<leader>npa', ':set nopaste<CR>', { noremap = true }) -- Disable paste mode +vim.api.nvim_set_keymap('n', '<leader>cr', ':Cargo run<CR>', { noremap = true }) -- Run `cargo run` for Rust projects +vim.api.nvim_set_keymap('n', '<space>d', '<cmd>Trouble diagnostics<cr>', { noremap = true }) -- Toggle Trouble diagnostic window +vim.api.nvim_set_keymap('n', '<leader>ff', '<cmd>Telescope find_files<cr>', { noremap = true }) -- Find files with Telescope +vim.api.nvim_set_keymap('n', '<leader>fg', '<cmd>Telescope live_grep<cr>', { noremap = true }) -- Live grep with Telescope +vim.api.nvim_set_keymap('n', '<leader>fh', '<cmd>Telescope help_tags<cr>', { noremap = true }) -- Search help tags with Telescope +vim.api.nvim_set_keymap('n', '<C-i>', ':lua vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled())<CR>', { noremap = true }) + +-- Custom command aliases for Diffview +vim.api.nvim_create_user_command('Do', 'DiffviewOpen', {}) +vim.api.nvim_create_user_command('Dc', 'DiffviewClose', {}) +vim.api.nvim_create_user_command('Dh', 'DiffviewFileHistory', {}) + + +-- Plugin configuration +require('nvim-tree').setup { actions = { open_file = { quit_on_open = true } } } +require('todo-comments').setup {} +require('crates').setup {} +require('nvim-treesitter.configs').setup { highlight = { enable = true } } +require('lsp-colors').setup {} +require('Comment').setup() +-- require("ibl").setup { indent = {char = "¦"} } +-- vim.cmd.highlight('clear @ibl.scope.underline.1') + +-- General settings from ~/.config/nvim/lua/ +require('git') -- Load git-related settings +require('lsp_conf') -- Load LSP configuration +require('dap_conf') +require('evil_lualine') + +-- Set up language client for Go +vim.g.LanguageClient_serverCommands = { go = { 'gopls' } } diff --git a/private_dot_config/nvim/lua/dap_conf.lua b/private_dot_config/nvim/lua/dap_conf.lua new file mode 100644 index 0000000..2346e6a --- /dev/null +++ b/private_dot_config/nvim/lua/dap_conf.lua @@ -0,0 +1,52 @@ +local dap, dapui = require('dap'), require('dapui') +local dapgo = require('dap-go') +dapui.setup() +dapgo.setup() +dap.listeners.before.attach.dapui_config = function() + dapui.open() +end +dap.listeners.before.launch.dapui_config = function() + dapui.open() +end + +dap.adapters.gdb = { + type = "executable", + command = "gdb", + args = { "--interpreter=dap", "--eval-command", "set print pretty on" } +} + +local configurations = {'c', 'cpp', 'rust'} + +for _, conf in ipairs(configurations) do + dap.configurations[conf] = { + { + name = "Launch", + type = "gdb", + request = "launch", + program = function() + return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') + end, + cwd = "${workspaceFolder}", + stopAtBeginningOfMainSubprogram = false, + }, + } +end + +-- Include the next few lines until the comment only if you feel you need it +dap.listeners.before.event_terminated.dapui_config = function() + dapui.close() +end +dap.listeners.before.event_exited.dapui_config = function() + dapui.close() +end +-- Include everything after this + + +vim.keymap.set('n', '<F12>', function() require('dap').continue() end) +vim.keymap.set('n', '<F5>', function() require('dap').step_over() end) +vim.keymap.set('n', '<F6>', function() require('dap').step_into() end) +vim.keymap.set('n', '<F7>', function() require('dap').step_out() end) +vim.keymap.set('n', '<C-K>', function() require('dap').toggle_breakpoint() end) +vim.api.nvim_create_user_command('DapRepeat',function() require('dap').run_last() end, {}) +vim.api.nvim_create_user_command('DapOpen',function() dapui.open() end, {}) +vim.api.nvim_create_user_command('DapClose',function() dapui.close() end, {}) diff --git a/private_dot_config/nvim/lua/evil_lualine.lua b/private_dot_config/nvim/lua/evil_lualine.lua new file mode 100644 index 0000000..b38e283 --- /dev/null +++ b/private_dot_config/nvim/lua/evil_lualine.lua @@ -0,0 +1,152 @@ +-- Eviline config for lualine +-- Author: shadmansaleh +-- Credit: glepnir +local lualine = require('lualine') + +-- Color table for highlights +-- stylua: ignore +local colors = { + bg = '#202328', + fg = '#bbc2cf', + yellow = '#ECBE7B', + cyan = '#008080', + darkblue = '#081633', + green = '#98be65', + orange = '#FF8800', + violet = '#a9a1e1', + magenta = '#c678dd', + blue = '#51afef', + red = '#ec5f67', +} + +local conditions = { + buffer_not_empty = function() + return vim.fn.empty(vim.fn.expand('%:t')) ~= 1 + end, + hide_in_width = function() + return vim.fn.winwidth(0) > 80 + end, + check_git_workspace = function() + local filepath = vim.fn.expand('%:p:h') + local gitdir = vim.fn.finddir('.git', filepath .. ';') + return gitdir and #gitdir > 0 and #gitdir < #filepath + end, +} + +-- Config +local config = { + options = { + -- Disable sections and component separators + component_separators = '', + section_separators = '', + theme = { + -- We are going to use lualine_c an lualine_x as left and + -- right section. Both are highlighted by c theme . So we + -- are just setting default looks o statusline + normal = { c = { fg = colors.fg, bg = colors.bg } }, + inactive = { c = { fg = colors.fg, bg = colors.bg } }, + }, + }, + sections = { + -- these are to remove the defaults + lualine_a = {}, + lualine_b = {}, + lualine_y = {}, + lualine_z = {}, + -- These will be filled later + lualine_c = {}, + lualine_x = {}, + }, + inactive_sections = { + -- these are to remove the defaults + lualine_a = {}, + lualine_b = {}, + lualine_y = {}, + lualine_z = {}, + lualine_c = {}, + lualine_x = {}, + }, +} + +-- Inserts a component in lualine_c at left section +local function ins_left(component) + table.insert(config.sections.lualine_c, component) +end + +-- Inserts a component in lualine_x at right section +local function ins_right(component) + table.insert(config.sections.lualine_x, component) +end + +ins_left { + 'filename', + cond = conditions.buffer_not_empty, + path = 3, + color = { fg = colors.magenta, gui = 'bold' }, +} + +ins_left { + -- filesize component + 'filesize', + cond = conditions.buffer_not_empty, +} + +ins_left { 'location' } + +ins_left { 'progress', color = { fg = colors.fg, gui = 'bold' } } +ins_left { + 'diagnostics', + sources = { 'nvim_diagnostic' }, + symbols = { error = ' ', warn = ' ', info = ' ' }, + diagnostics_color = { + error = { fg = colors.red }, + warn = { fg = colors.yellow }, + info = { fg = colors.cyan }, + }, +} + +-- Insert mid section. You can make any number of sections in neovim :) +-- for lualine it's any number greater then 2 +ins_left { + function() + return '%=' + end, +} + +-- Add components to right sections +ins_right { 'lsp_status' } + +ins_right { + 'o:encoding', -- option component same as &encoding in viml + fmt = string.upper, -- I'm not sure why it's upper case either ;) + cond = conditions.hide_in_width, + color = { fg = colors.green, gui = 'bold' }, +} + +ins_right { + 'fileformat', + fmt = string.upper, + icons_enabled = false, -- I think icons are cool but Eviline doesn't have them. sigh + color = { fg = colors.green, gui = 'bold' }, +} + +ins_right { + 'branch', + icon = '', + color = { fg = colors.violet, gui = 'bold' }, +} + +ins_right { + 'diff', + -- Is it me or the symbol for modified us really weird + symbols = { added = ' ', modified = ' ', removed = ' ' }, + diff_color = { + added = { fg = colors.green }, + modified = { fg = colors.orange }, + removed = { fg = colors.red }, + }, + cond = conditions.hide_in_width, +} + +-- Now don't forget to initialize lualine +lualine.setup(config) diff --git a/private_dot_config/nvim/lua/git.lua b/private_dot_config/nvim/lua/git.lua new file mode 100644 index 0000000..da6bbdd --- /dev/null +++ b/private_dot_config/nvim/lua/git.lua @@ -0,0 +1,65 @@ +require('gitsigns').setup { + signs = { + add = { text = '+' }, + change = { text = '~' }, + delete = { text = '-' }, + topdelete = { text = '-' }, + changedelete = { text = '~' }, + untracked = { text = '┆' }, + }, + signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` + numhl = false, -- Toggle with `:Gitsigns toggle_numhl` + linehl = false, -- Toggle with `:Gitsigns toggle_linehl` + word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` + watch_gitdir = { + follow_files = true + }, + attach_to_untracked = true, + current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame` + current_line_blame_opts = { + virt_text = true, + virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align' + delay = 1000, + ignore_whitespace = false, + }, + current_line_blame_formatter = '<author>, <author_time:%Y-%m-%d> - <summary>', + sign_priority = 6, + update_debounce = 100, + status_formatter = nil, -- Use default + max_file_length = 40000, -- Disable if file is longer than this (in lines) + preview_config = { + -- Options passed to nvim_open_win + border = 'single', + style = 'minimal', + relative = 'cursor', + row = 0, + col = 1 + }, + on_attach = function(bufnr) + local gs = package.loaded.gitsigns + local function map(mode, l, r, opts) + opts = opts or {} + opts.buffer = bufnr + vim.keymap.set(mode, l, r, opts) + end + + map('n', ']c', function() + if vim.wo.diff then return ']c' end + vim.schedule(function() gs.next_hunk() end) + return '<Ignore>' + end, {expr=true}) + + map('n', '[c', function() + if vim.wo.diff then return '[c' end + vim.schedule(function() gs.prev_hunk() end) + return '<Ignore>' + end, {expr=true}) + + map('n', 'hs', gs.stage_hunk) + map('v', 'hs', function() gs.stage_hunk {vim.fn.line('.'), vim.fn.line('v')} end) + map('n', 'hS', gs.stage_buffer) + map('n', 'hu', gs.undo_stage_hunk) + map('n', 'hp', gs.preview_hunk) + map('n', 'hB', gs.blame_line) + end +} diff --git a/private_dot_config/nvim/lua/lsp_conf.lua b/private_dot_config/nvim/lua/lsp_conf.lua new file mode 100644 index 0000000..15fa695 --- /dev/null +++ b/private_dot_config/nvim/lua/lsp_conf.lua @@ -0,0 +1,130 @@ +local nvim_lsp = require('lspconfig') +local trouble = require("trouble") + +local capabilities = require("cmp_nvim_lsp").default_capabilities() + +-- Redefine LSP diagnostic signs +-- local signs = { Error = 'E', Warning = 'W', Hint = 'H', Information = 'I' } +-- +-- for type, icon in pairs(signs) do +-- local hl = 'DiagnosticSign' .. type +-- vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = '' }) +-- end + +local opts = { noremap=true, silent=true } + +-- Setup lsp_signature for function signature help +require "lsp_signature".setup() + +-- Common on_attach function to handle keymaps and settings for all LSPs +local common_on_attach = function(client, bufnr) + -- Key mappings + vim.api.nvim_buf_set_keymap(bufnr, "n", "gD", "<cmd>lua vim.lsp.buf.declaration()<CR>", opts) + vim.api.nvim_buf_set_keymap(bufnr, "n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>", opts) + vim.api.nvim_buf_set_keymap(bufnr, "n", "ga", "<cmd>lua vim.lsp.buf.code_action()<CR>", opts) + vim.api.nvim_buf_set_keymap(bufnr, "n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", opts) + vim.api.nvim_buf_set_keymap(bufnr, "n", "gr", "<cmd>lua vim.lsp.buf.references()<CR>", opts) + -- Use vim.diagnostic.open_float for showing line diagnostics (replacing deprecated call) + vim.api.nvim_buf_set_keymap(bufnr, "n", "<space>e", "<cmd>lua vim.diagnostic.open_float()<CR>", opts) + vim.keymap.set('n', '<A-f>', '<cmd>lua vim.lsp.buf.format {async = true}<cr>', opts) + + -- Autoformat on save + vim.cmd("autocmd BufWritePre <buffer> lua vim.lsp.buf.format {async = true}") +end + +-- LSP servers setup +local servers = { + 'clangd', + 'gopls', + 'jdtls', + 'metals', + 'ocamllsp', + 'ruff', + 'rust_analyzer', + -- 'hls', +} + +capabilities.offsetEncoding = { "utf-16" } + +for _, lsp in ipairs(servers) do + nvim_lsp[lsp].setup { + capabilities = capabilities, + on_attach = common_on_attach, + flags = { + debounce_text_changes = 150, + } + } +end + +nvim_lsp.ts_ls.setup { + capabilities = capabilities, + on_attach = common_on_attach, + filetypes = { "typescript", "typescriptreact", "typescript.tsx" }, + cmd = { "typescript-language-server", "--stdio" } +} + +-- nvim_lsp.pyright.setup { +-- settings = { +-- pyright = { +-- -- Using Ruff's import organizer +-- disableOrganizeImports = true, +-- }, +-- python = { +-- analysis = { +-- -- Ignore all files for analysis to exclusively use Ruff for linting +-- ignore = { '*' }, +-- }, +-- }, +-- }, +-- } + +vim.lsp.inlay_hint.enable(true, { 0 }) + +-- Trouble setup +trouble.setup({ + use_diagnostic_signs = true, + auto_close = true, + auto_open = false +}) + +-- nvim-cmp setup for autocompletion +local luasnip = require 'luasnip' +local cmp = require 'cmp' +cmp.setup { + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + mapping = cmp.mapping.preset.insert({ + ['<C-d>'] = cmp.mapping.scroll_docs(-4), + ['<C-f>'] = cmp.mapping.scroll_docs(4), + ['<C-Space>'] = cmp.mapping.complete(), + ['<CR>'] = cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }, + ['<Tab>'] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + else + fallback() + end + end, { 'i', 's' }), + ['<S-Tab>'] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { 'i', 's' }), + }), + sources = { + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + }, +} diff --git a/private_dot_config/nvim/plugin/packer_compiled.lua b/private_dot_config/nvim/plugin/packer_compiled.lua new file mode 100644 index 0000000..9d220c4 --- /dev/null +++ b/private_dot_config/nvim/plugin/packer_compiled.lua @@ -0,0 +1,254 @@ +-- Automatically generated packer.nvim plugin loader code + +if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then + vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"') + return +end + +vim.api.nvim_command('packadd packer.nvim') + +local no_errors, error_msg = pcall(function() + +_G._packer = _G._packer or {} +_G._packer.inside_compile = true + +local time +local profile_info +local should_profile = false +if should_profile then + local hrtime = vim.loop.hrtime + profile_info = {} + time = function(chunk, start) + if start then + profile_info[chunk] = hrtime() + else + profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6 + end + end +else + time = function(chunk, start) end +end + +local function save_profiles(threshold) + local sorted_times = {} + for chunk_name, time_taken in pairs(profile_info) do + sorted_times[#sorted_times + 1] = {chunk_name, time_taken} + end + table.sort(sorted_times, function(a, b) return a[2] > b[2] end) + local results = {} + for i, elem in ipairs(sorted_times) do + if not threshold or threshold and elem[2] > threshold then + results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms' + end + end + if threshold then + table.insert(results, '(Only showing plugins that took longer than ' .. threshold .. ' ms ' .. 'to load)') + end + + _G._packer.profile_output = results +end + +time([[Luarocks path setup]], true) +local package_path_str = "/home/santo/.cache/nvim/packer_hererocks/2.1.1741730670/share/lua/5.1/?.lua;/home/santo/.cache/nvim/packer_hererocks/2.1.1741730670/share/lua/5.1/?/init.lua;/home/santo/.cache/nvim/packer_hererocks/2.1.1741730670/lib/luarocks/rocks-5.1/?.lua;/home/santo/.cache/nvim/packer_hererocks/2.1.1741730670/lib/luarocks/rocks-5.1/?/init.lua" +local install_cpath_pattern = "/home/santo/.cache/nvim/packer_hererocks/2.1.1741730670/lib/lua/5.1/?.so" +if not string.find(package.path, package_path_str, 1, true) then + package.path = package.path .. ';' .. package_path_str +end + +if not string.find(package.cpath, install_cpath_pattern, 1, true) then + package.cpath = package.cpath .. ';' .. install_cpath_pattern +end + +time([[Luarocks path setup]], false) +time([[try_loadstring definition]], true) +local function try_loadstring(s, component, name) + local success, result = pcall(loadstring(s), name, _G.packer_plugins[name]) + if not success then + vim.schedule(function() + vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {}) + end) + end + return result +end + +time([[try_loadstring definition]], false) +time([[Defining packer_plugins]], true) +_G.packer_plugins = { + ["Comment.nvim"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/Comment.nvim", + url = "https://github.com/numToStr/Comment.nvim" + }, + LuaSnip = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/LuaSnip", + url = "https://github.com/L3MON4D3/LuaSnip" + }, + ["cmp-nvim-lsp"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp", + url = "https://github.com/hrsh7th/cmp-nvim-lsp" + }, + cmp_luasnip = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/cmp_luasnip", + url = "https://github.com/saadparwaiz1/cmp_luasnip" + }, + ["crates.nvim"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/crates.nvim", + url = "https://github.com/saecki/crates.nvim" + }, + ["diffview.nvim"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/diffview.nvim", + url = "https://github.com/sindrets/diffview.nvim" + }, + ["gitsigns.nvim"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/gitsigns.nvim", + url = "https://github.com/lewis6991/gitsigns.nvim" + }, + ["lsp-colors.nvim"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/lsp-colors.nvim", + url = "https://github.com/folke/lsp-colors.nvim" + }, + ["lsp_signature.nvim"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/lsp_signature.nvim", + url = "https://github.com/ray-x/lsp_signature.nvim" + }, + ["lualine.nvim"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/lualine.nvim", + url = "https://github.com/nvim-lualine/lualine.nvim" + }, + ["neovim-ayu"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/neovim-ayu", + url = "https://github.com/Shatur/neovim-ayu" + }, + ["nvim-cmp"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/nvim-cmp", + url = "https://github.com/hrsh7th/nvim-cmp" + }, + ["nvim-dap"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/nvim-dap", + url = "https://github.com/mfussenegger/nvim-dap" + }, + ["nvim-dap-go"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/nvim-dap-go", + url = "https://github.com/leoluz/nvim-dap-go" + }, + ["nvim-dap-ui"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/nvim-dap-ui", + url = "https://github.com/rcarriga/nvim-dap-ui" + }, + ["nvim-lspconfig"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/nvim-lspconfig", + url = "https://github.com/neovim/nvim-lspconfig" + }, + ["nvim-nio"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/nvim-nio", + url = "https://github.com/nvim-neotest/nvim-nio" + }, + ["nvim-tree.lua"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/nvim-tree.lua", + url = "https://github.com/kyazdani42/nvim-tree.lua" + }, + ["nvim-treesitter"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/nvim-treesitter", + url = "https://github.com/nvim-treesitter/nvim-treesitter" + }, + ["nvim-web-devicons"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/nvim-web-devicons", + url = "https://github.com/kyazdani42/nvim-web-devicons" + }, + ["packer.nvim"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/packer.nvim", + url = "https://github.com/wbthomason/packer.nvim" + }, + ["papercolor-theme"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/papercolor-theme", + url = "https://github.com/NLKNguyen/papercolor-theme" + }, + ["plenary.nvim"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/plenary.nvim", + url = "https://github.com/nvim-lua/plenary.nvim" + }, + ["proverif.vim"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/proverif.vim", + url = "https://github.com/koraa/proverif.vim" + }, + ["rust.vim"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/rust.vim", + url = "https://github.com/rust-lang/rust.vim" + }, + ["telescope.nvim"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/telescope.nvim", + url = "https://github.com/nvim-telescope/telescope.nvim" + }, + ["todo-comments.nvim"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/todo-comments.nvim", + url = "https://github.com/folke/todo-comments.nvim" + }, + ["trouble.nvim"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/trouble.nvim", + url = "https://github.com/folke/trouble.nvim" + }, + ["vim-css-color"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/vim-css-color", + url = "https://github.com/ap/vim-css-color" + }, + ["vim-fugitive"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/vim-fugitive", + url = "https://github.com/tpope/vim-fugitive" + }, + ["vim-searchindex"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/vim-searchindex", + url = "https://github.com/google/vim-searchindex" + }, + ["vim-visual-multi"] = { + loaded = true, + path = "/home/santo/.local/share/nvim/site/pack/packer/start/vim-visual-multi", + url = "https://github.com/mg979/vim-visual-multi" + } +} + +time([[Defining packer_plugins]], false) + +_G._packer.inside_compile = false +if _G._packer.needs_bufread == true then + vim.cmd("doautocmd BufRead") +end +_G._packer.needs_bufread = false + +if should_profile then save_profiles() end + +end) + +if not no_errors then + error_msg = error_msg:gsub('"', '\\"') + vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None') +end diff --git a/private_dot_config/redshift.conf b/private_dot_config/redshift.conf new file mode 100644 index 0000000..7d76847 --- /dev/null +++ b/private_dot_config/redshift.conf @@ -0,0 +1,21 @@ +[redshift] + +temp-day=5700 +temp-night=4500 + +fade=1 + +; Custom dawn/dusk intervals. +dawn-time=6:00-7:45 +dusk-time=20:00-21:00 + +gamma-day=1 +gamma-night=0.8 + +location-provider=manual + +adjustment-method=randr + +[manual] +lat=37.46 +lon=15.05 diff --git a/private_dot_config/rofi/config.rasi b/private_dot_config/rofi/config.rasi new file mode 100644 index 0000000..55fb62d --- /dev/null +++ b/private_dot_config/rofi/config.rasi @@ -0,0 +1,15 @@ +configuration { + modi: "run,combi"; + cycle: true; + show-icons: true; + matching: "glob"; + width: 40; + columns: 1; + location: 0; + padding: 50; + font: "UbuntuMono Mono 12"; + hide-scrollbar: true; + sidebar-mode: true; +} + +@theme "gruvbox-dark-hard" diff --git a/private_dot_config/starship.toml b/private_dot_config/starship.toml new file mode 100644 index 0000000..328ae61 --- /dev/null +++ b/private_dot_config/starship.toml @@ -0,0 +1,40 @@ +add_newline = false + +[character] +success_symbol = '[\$](bold green)' +error_symbol = '[\$](bold red)' + +[directory] +truncation_length = 4 +style = "cyan" + +[line_break] +disabled = true + +[custom.ssh_keys] +disabled = true +description = "SSH key count" +when = "ssh-add -l | grep -v -q 'no identities'" +command = "ssh-add -l | grep -v 'no identities' | wc -l" +format = "$symbol[$output]($style) " +shell = ["bash", "--noprofile", "--norc"] +symbol = "🔑" +style = "bold fg:green" + +[gcloud] +disabled = true + +[username] +style_user = 'fg:11 bold' +style_root = 'cyan bold' +format = '[$user]($style)' +disabled = false +show_always = true + +[hostname] +ssh_only = false +format = '[$ssh_symbol](bold blue)@[$hostname](bold red) ' +disabled = false + +[package] +disabled = true diff --git a/private_dot_config/zellij/config.kdl b/private_dot_config/zellij/config.kdl new file mode 100644 index 0000000..65b5e1d --- /dev/null +++ b/private_dot_config/zellij/config.kdl @@ -0,0 +1,415 @@ +// If you'd like to override the default keybindings completely, be sure to change "keybinds" to "keybinds clear-defaults=true" +ui { + pane_frames { + hide_session_name true + } +} + +keybinds { + normal { + // uncomment this and adjust key if using copy_on_select=false + // bind "Alt c" { Copy; } + } + locked { + bind "Ctrl g" { SwitchToMode "Normal"; } + } + resize { + bind "Ctrl n" { SwitchToMode "Normal"; } + bind "h" "Left" { Resize "Increase Left"; } + bind "j" "Down" { Resize "Increase Down"; } + bind "k" "Up" { Resize "Increase Up"; } + bind "l" "Right" { Resize "Increase Right"; } + bind "H" { Resize "Decrease Left"; } + bind "J" { Resize "Decrease Down"; } + bind "K" { Resize "Decrease Up"; } + bind "L" { Resize "Decrease Right"; } + bind "=" "+" { Resize "Increase"; } + bind "-" { Resize "Decrease"; } + } + pane { + bind "Ctrl p" { SwitchToMode "Normal"; } + bind "h" "Left" { MoveFocus "Left"; } + bind "l" "Right" { MoveFocus "Right"; } + bind "j" "Down" { MoveFocus "Down"; } + bind "k" "Up" { MoveFocus "Up"; } + bind "p" { SwitchFocus; } + bind "n" { NewPane; SwitchToMode "Normal"; } + bind "d" { NewPane "Down"; SwitchToMode "Normal"; } + bind "r" { NewPane "Right"; SwitchToMode "Normal"; } + bind "x" { CloseFocus; SwitchToMode "Normal"; } + bind "f" { ToggleFocusFullscreen; SwitchToMode "Normal"; } + bind "z" { TogglePaneFrames; SwitchToMode "Normal"; } + bind "w" { ToggleFloatingPanes; SwitchToMode "Normal"; } + bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "Normal"; } + bind "c" { SwitchToMode "RenamePane"; PaneNameInput 0;} + } + move { + bind "Ctrl h" { SwitchToMode "Normal"; } + bind "n" "Tab" { MovePane; } + bind "p" { MovePaneBackwards; } + bind "h" "Left" { MovePane "Left"; } + bind "j" "Down" { MovePane "Down"; } + bind "k" "Up" { MovePane "Up"; } + bind "l" "Right" { MovePane "Right"; } + } + tab { + bind "Ctrl t" { SwitchToMode "Normal"; } + bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; } + bind "h" "Left" "Up" "k" { GoToPreviousTab; } + bind "l" "Right" "Down" "j" { GoToNextTab; } + bind "n" { NewTab; SwitchToMode "Normal"; } + bind "x" { CloseTab; SwitchToMode "Normal"; } + bind "s" { ToggleActiveSyncTab; SwitchToMode "Normal"; } + bind "b" { BreakPane; SwitchToMode "Normal"; } + bind "]" { BreakPaneRight; SwitchToMode "Normal"; } + bind "[" { BreakPaneLeft; SwitchToMode "Normal"; } + bind "1" { GoToTab 1; SwitchToMode "Normal"; } + bind "2" { GoToTab 2; SwitchToMode "Normal"; } + bind "3" { GoToTab 3; SwitchToMode "Normal"; } + bind "4" { GoToTab 4; SwitchToMode "Normal"; } + bind "5" { GoToTab 5; SwitchToMode "Normal"; } + bind "6" { GoToTab 6; SwitchToMode "Normal"; } + bind "7" { GoToTab 7; SwitchToMode "Normal"; } + bind "8" { GoToTab 8; SwitchToMode "Normal"; } + bind "9" { GoToTab 9; SwitchToMode "Normal"; } + bind "Tab" { ToggleTab; } + } + scroll { + bind "Ctrl s" { SwitchToMode "Normal"; } + bind "e" { EditScrollback; SwitchToMode "Normal"; } + bind "s" { SwitchToMode "EnterSearch"; SearchInput 0; } + bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; } + bind "j" "Down" { ScrollDown; } + bind "k" "Up" { ScrollUp; } + bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; } + bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; } + bind "d" { HalfPageScrollDown; } + bind "u" { HalfPageScrollUp; } + // uncomment this and adjust key if using copy_on_select=false + // bind "Alt c" { Copy; } + } + search { + bind "Ctrl s" { SwitchToMode "Normal"; } + bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; } + bind "j" "Down" { ScrollDown; } + bind "k" "Up" { ScrollUp; } + bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; } + bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; } + bind "d" { HalfPageScrollDown; } + bind "u" { HalfPageScrollUp; } + bind "n" { Search "down"; } + bind "p" { Search "up"; } + bind "c" { SearchToggleOption "CaseSensitivity"; } + bind "w" { SearchToggleOption "Wrap"; } + bind "o" { SearchToggleOption "WholeWord"; } + } + entersearch { + bind "Ctrl c" "Esc" { SwitchToMode "Scroll"; } + bind "Enter" { SwitchToMode "Search"; } + } + renametab { + bind "Ctrl c" { SwitchToMode "Normal"; } + bind "Esc" { UndoRenameTab; SwitchToMode "Tab"; } + } + renamepane { + bind "Ctrl c" { SwitchToMode "Normal"; } + bind "Esc" { UndoRenamePane; SwitchToMode "Pane"; } + } + session { + bind "Ctrl o" { SwitchToMode "Normal"; } + bind "Ctrl s" { SwitchToMode "Scroll"; } + bind "d" { Detach; } + bind "w" { + LaunchOrFocusPlugin "session-manager" { + floating true + move_to_focused_tab true + }; + SwitchToMode "Normal" + } + bind "c" { + LaunchOrFocusPlugin "configuration" { + floating true + move_to_focused_tab true + }; + SwitchToMode "Normal" + } + bind "p" { + LaunchOrFocusPlugin "plugin-manager" { + floating true + move_to_focused_tab true + }; + SwitchToMode "Normal" + } + } + tmux { + bind "[" { SwitchToMode "Scroll"; } + bind "Ctrl b" { Write 2; SwitchToMode "Normal"; } + bind "\"" { NewPane "Down"; SwitchToMode "Normal"; } + bind "%" { NewPane "Right"; SwitchToMode "Normal"; } + bind "z" { ToggleFocusFullscreen; SwitchToMode "Normal"; } + bind "c" { NewTab; SwitchToMode "Normal"; } + bind "," { SwitchToMode "RenameTab"; } + bind "p" { GoToPreviousTab; SwitchToMode "Normal"; } + bind "n" { GoToNextTab; SwitchToMode "Normal"; } + bind "Left" { MoveFocus "Left"; SwitchToMode "Normal"; } + bind "Right" { MoveFocus "Right"; SwitchToMode "Normal"; } + bind "Down" { MoveFocus "Down"; SwitchToMode "Normal"; } + bind "Up" { MoveFocus "Up"; SwitchToMode "Normal"; } + bind "h" { MoveFocus "Left"; SwitchToMode "Normal"; } + bind "l" { MoveFocus "Right"; SwitchToMode "Normal"; } + bind "j" { MoveFocus "Down"; SwitchToMode "Normal"; } + bind "k" { MoveFocus "Up"; SwitchToMode "Normal"; } + bind "o" { FocusNextPane; } + bind "d" { Detach; } + bind "Space" { NextSwapLayout; } + bind "x" { CloseFocus; SwitchToMode "Normal"; } + } + shared_except "locked" { + bind "Ctrl g" { SwitchToMode "Locked"; } + bind "Ctrl q" { Quit; } + bind "Alt f" { ToggleFloatingPanes; } + bind "Alt n" { NewPane; } + bind "Alt i" { MoveTab "Left"; } + bind "Alt o" { MoveTab "Right"; } + bind "Alt h" "Alt Left" { MoveFocusOrTab "Left"; } + bind "Alt l" "Alt Right" { MoveFocusOrTab "Right"; } + bind "Alt j" "Alt Down" { MoveFocus "Down"; } + bind "Alt k" "Alt Up" { MoveFocus "Up"; } + bind "Alt =" "Alt +" { Resize "Increase"; } + bind "Alt -" { Resize "Decrease"; } + bind "Alt [" { PreviousSwapLayout; } + bind "Alt ]" { NextSwapLayout; } + } + shared_except "normal" "locked" { + bind "Enter" "Esc" { SwitchToMode "Normal"; } + } + shared_except "pane" "locked" { + bind "Ctrl p" { SwitchToMode "Pane"; } + } + shared_except "resize" "locked" { + bind "Ctrl n" { SwitchToMode "Resize"; } + } + shared_except "scroll" "locked" { + bind "Ctrl s" { SwitchToMode "Scroll"; } + } + shared_except "session" "locked" { + bind "Ctrl o" { SwitchToMode "Session"; } + } + shared_except "tab" "locked" { + bind "Ctrl t" { SwitchToMode "Tab"; } + } + shared_except "move" "locked" { + bind "Ctrl h" { SwitchToMode "Move"; } + } + shared_except "tmux" "locked" { + bind "Ctrl b" { SwitchToMode "Tmux"; } + } +} + +// Plugin aliases - can be used to change the implementation of Zellij +// changing these requires a restart to take effect +plugins { + tab-bar location="zellij:tab-bar" + status-bar location="zellij:status-bar" + strider location="zellij:strider" + compact-bar location="zellij:compact-bar" + session-manager location="zellij:session-manager" + welcome-screen location="zellij:session-manager" { + welcome_screen true + } + filepicker location="zellij:strider" { + cwd "/" + } + configuration location="zellij:configuration" + plugin-manager location="zellij:plugin-manager" +} + +// Plugins to load in the background when a new session starts +load_plugins { + // "file:/path/to/my-plugin.wasm" + // "https://example.com/my-plugin.wasm" +} + +// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP +// eg. when terminal window with an active zellij session is closed +// (Requires restart) +// Options: +// - detach (Default) +// - quit +// +// on_force_close "quit" + +// Send a request for a simplified ui (without arrow fonts) to plugins +// Options: +// - true +// - false (Default) +// +simplified_ui true + +// Choose the path to the default shell that zellij will use for opening new panes +// Default: $SHELL +// +// default_shell "fish" + +// Choose the path to override cwd that zellij will use for opening new panes +// +// default_cwd "" + +// Toggle between having pane frames around the panes +// Options: +// - true (default) +// - false +// +pane_frames false + +// Toggle between having Zellij lay out panes according to a predefined set of layouts whenever possible +// Options: +// - true (default) +// - false +// +// auto_layout true + +// Whether sessions should be serialized to the cache folder (including their tabs/panes, cwds and running commands) so that they can later be resurrected +// (Requires restart) +// Options: +// - true (default) +// - false +// +// session_serialization false + +// Whether pane viewports are serialized along with the session, default is false +// (Requires restart) +// Options: +// - true +// - false (default) +// +// serialize_pane_viewport true + +// Scrollback lines to serialize along with the pane viewport when serializing sessions, 0 +// defaults to the scrollback size. If this number is higher than the scrollback size, it will +// also default to the scrollback size. This does nothing if `serialize_pane_viewport` is not true. +// (Requires restart) +// +// scrollback_lines_to_serialize 10000 + +// Define color themes for Zellij +// For more examples, see: https://github.com/zellij-org/zellij/tree/main/example/themes +// Once these themes are defined, one of them should to be selected in the "theme" section of this file +// +// themes { +// dracula { +// fg 248 248 242 +// bg 40 42 54 +// red 255 85 85 +// green 80 250 123 +// yellow 241 250 140 +// blue 98 114 164 +// magenta 255 121 198 +// orange 255 184 108 +// cyan 139 233 253 +// black 0 0 0 +// white 255 255 255 +// } +// } + +// Choose the theme that is specified in the themes section. +// Default: default +// +theme "default" + +// The name of the default layout to load on startup +// Default: "default" +// (Requires restart) +// +default_layout "compact" + +// Choose the mode that zellij uses when starting up. +// Default: normal +// +// default_mode "locked" + +// Toggle enabling the mouse mode. +// On certain configurations, or terminals this could +// potentially interfere with copying text. +// (Requires restart) +// Options: +// - true (default) +// - false +// +// mouse_mode false + +// Configure the scroll back buffer size +// This is the number of lines zellij stores for each pane in the scroll back +// buffer. Excess number of lines are discarded in a FIFO fashion. +// (Requires restart) +// Valid values: positive integers +// Default value: 10000 +// +// scroll_buffer_size 10000 + +// Provide a command to execute when copying text. The text will be piped to +// the stdin of the program to perform the copy. This can be used with +// terminal emulators which do not support the OSC 52 ANSI control sequence +// that will be used by default if this option is not set. +// Examples: +// +// copy_command "xclip -selection clipboard" // x11 +// copy_command "wl-copy" // wayland +// copy_command "pbcopy" // osx + +// Choose the destination for copied text +// Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard. +// Does not apply when using copy_command. +// Options: +// - system (default) +// - primary +// +// copy_clipboard "primary" + +// Enable or disable automatic copy (and clear) of selection when releasing mouse +// Default: true +// +// copy_on_select false + +// Path to the default editor to use to edit pane scrollbuffer +// Default: $EDITOR or $VISUAL +// +scrollback_editor "/usr/local/bin/nvim" + +// When attaching to an existing session with other users, +// should the session be mirrored (true) +// or should each user have their own cursor (false) +// (Requires restart) +// Default: false +// +// mirror_session true + +// The folder in which Zellij will look for layouts +// (Requires restart) +// +// layout_dir "/path/to/my/layout_dir" + +// The folder in which Zellij will look for themes +// (Requires restart) +// +// theme_dir "/path/to/my/theme_dir" + +// Enable or disable the rendering of styled and colored underlines (undercurl). +// May need to be disabled for certain unsupported terminals +// (Requires restart) +// Default: true +// +// styled_underlines false + +// Enable or disable writing of session metadata to disk (if disabled, other sessions might not know +// metadata info on this session) +// (Requires restart) +// Default: false +// +// disable_session_metadata true + +// Enable or disable support for the enhanced Kitty Keyboard Protocol (the host terminal must also support it) +// (Requires restart) +// Default: true (if the host terminal supports it) +// +// support_kitty_keyboard_protocol false |