├── .bashrc ├── .cfg-install.sh ├── .config ├── .gitignore ├── alacritty │ └── alacritty.yml ├── bashrc ├── btop │ └── btop.conf ├── colorscripts │ ├── aloysius.sh │ ├── blacklisted │ │ └── README.md │ ├── bubblemonkey.sh │ ├── drandonuts.sh │ ├── happycultist.sh │ ├── hintman.sh │ ├── jeff.sh │ ├── jeff.surprise.sh │ ├── lardna.sh │ ├── mrsaturn.sh │ ├── ness.bike.sh │ ├── ness.robot.sh │ ├── ness.sh │ ├── ness.sleepy.sh │ ├── ness.surprise.sh │ ├── ness.v.sh │ ├── nessy.sh │ ├── party.left.sh │ ├── party.surprise.sh │ ├── paula.sh │ ├── paula.surprise.sh │ ├── phasedistorter.sh │ ├── pokey.business.sh │ ├── poo.sh │ ├── poo.surprise.sh │ ├── present.sh │ ├── runaway5.sh │ ├── skyrunner.sh │ ├── starman.sh │ └── submarine.sh ├── eslintrc.json ├── fish │ ├── completions │ │ ├── colorscript.fish │ │ └── ticker.fish │ ├── conf.d │ │ ├── nvm.fish │ │ ├── plugin-bang-bang.fish │ │ ├── rustup.fish │ │ └── venv.fish │ ├── config.fish │ ├── fish │ ├── fish_plugins │ ├── fish_variables │ └── functions │ │ ├── clear_github_caches.fish │ │ ├── colorscript.fish │ │ ├── filenametoexif.fish │ │ ├── fish_greeting.fish │ │ ├── jspm-build.fish │ │ ├── makekernel.fish │ │ └── occ.fish ├── forge │ ├── config │ │ └── windows.json │ └── stylesheet │ │ └── forge │ │ └── stylesheet.css ├── gh │ └── config.yml ├── input-remapper │ ├── beta_1.6.0-beta │ │ ├── config.json │ │ ├── presets │ │ │ ├── Diego Palacios cantor │ │ │ │ ├── new preset 2.json │ │ │ │ └── new preset.json │ │ │ ├── Griffin PowerMate │ │ │ │ └── Default.json │ │ │ └── Logitech MX Ergo Multi-Device Trackball │ │ │ │ └── Side Buttons Overview.json │ │ └── xmodmap.json │ ├── config.json │ ├── presets │ │ ├── Diego Palacios cantor │ │ │ └── new preset.json │ │ ├── Griffin PowerMate │ │ │ └── Default.json │ │ └── Logitech MX Ergo Multi-Device Trackball │ │ │ └── Side Buttons.json │ └── xmodmap.json ├── karabiner │ ├── assets │ │ └── complex_modifications │ │ │ └── tmux.json │ └── karabiner.json ├── lazygit │ └── config.yml ├── modules.lua ├── nvim │ ├── .editorconfig │ ├── .luarc.json │ ├── .stylua.toml │ ├── README.md │ ├── after │ │ ├── ftplugin │ │ │ ├── help.lua │ │ │ ├── lazy.lua │ │ │ ├── markdown.lua │ │ │ └── qf.vim │ │ └── queries │ │ │ ├── css │ │ │ └── custom-property-call.scm │ │ │ ├── ecma │ │ │ ├── folds.scm │ │ │ ├── indents.scm │ │ │ └── lit_html.scm │ │ │ ├── html │ │ │ ├── images.scm │ │ │ ├── injections.scm │ │ │ └── links.scm │ │ │ ├── http │ │ │ └── injections.scm │ │ │ ├── markdown │ │ │ ├── injections.scm │ │ │ └── link_reference_definitions.scm │ │ │ ├── markdown_inline │ │ │ ├── images.scm │ │ │ ├── links.scm │ │ │ └── toggle_links_ref.scm │ │ │ └── typescript │ │ │ └── custom_elements.scm │ ├── headers │ │ ├── 16 │ │ │ ├── aloysius.sh │ │ │ ├── drandonuts.sh │ │ │ ├── happycultist.sh │ │ │ ├── jeff.sh │ │ │ ├── jeff.surprise.sh │ │ │ ├── lardna.sh │ │ │ ├── mrsaturn.sh │ │ │ ├── ness.robot.sh │ │ │ ├── ness.sleepy.sh │ │ │ ├── ness.surprise.sh │ │ │ ├── ness.v.sh │ │ │ ├── paula.sh │ │ │ ├── paula.surprise.sh │ │ │ ├── pokey.business.sh │ │ │ ├── poo.sh │ │ │ ├── poo.surprise.sh │ │ │ ├── present.sh │ │ │ └── starman.sh │ │ ├── 32 │ │ │ ├── bubblemonkey.sh │ │ │ ├── hintman.sh │ │ │ └── submarine.sh │ │ ├── 48 │ │ │ ├── ness.bike.sh │ │ │ ├── phasedistorter.sh │ │ │ └── skyrunner.sh │ │ ├── 64 │ │ │ ├── nessy.sh │ │ │ └── runaway5.sh │ │ ├── tall │ │ │ └── shiviti.sh │ │ └── wide │ │ │ └── shiviti.sh │ ├── init.lua │ ├── lazy-lock.json │ ├── lsp │ │ ├── bashls.lua │ │ ├── cssls.lua │ │ ├── custom_elements_ls.lua │ │ ├── denols.lua │ │ ├── design_tokens_ls.lua │ │ ├── emmet_language_server.lua │ │ ├── eslint.lua │ │ ├── fish_lsp.lua │ │ ├── html.lua │ │ ├── jsonls.lua │ │ ├── lua_ls.lua │ │ ├── marksman.lua │ │ ├── rust_analyzer.lua │ │ ├── stylelint_lsp.lua │ │ ├── vtsls.lua │ │ └── yamlls.lua │ ├── lua │ │ ├── aucmds.lua │ │ ├── commands.lua │ │ ├── commands │ │ │ └── lsp.lua │ │ ├── lsp.lua │ │ ├── mappings.lua │ │ ├── options.lua │ │ ├── plugins │ │ │ ├── auto-session.lua │ │ │ ├── colorschemes │ │ │ │ ├── catppuccin.lua │ │ │ │ ├── github-nvim-theme.lua │ │ │ │ ├── leaf-nvim.lua │ │ │ │ ├── nightfox.lua │ │ │ │ ├── noctis.lua │ │ │ │ ├── oxocarbon.lua │ │ │ │ └── tokyonight.lua │ │ │ ├── debugger │ │ │ │ └── dap.lua │ │ │ ├── editing │ │ │ │ ├── _editing.lua │ │ │ │ ├── adelman.lua │ │ │ │ ├── autopairs.lua │ │ │ │ ├── blink.lua │ │ │ │ ├── bufdel.lua │ │ │ │ ├── caser.lua │ │ │ │ ├── changesets.lua │ │ │ │ ├── color-converter.lua │ │ │ │ ├── comment-box.lua │ │ │ │ ├── design-tokens.lua │ │ │ │ ├── dial.lua │ │ │ │ ├── lion.lua │ │ │ │ ├── lorem.lua │ │ │ │ ├── luasnip.lua │ │ │ │ ├── marks.lua │ │ │ │ ├── matchparen.lua │ │ │ │ ├── multicursor.lua │ │ │ │ ├── replacer.lua │ │ │ │ ├── spectre.lua │ │ │ │ ├── spider.lua │ │ │ │ ├── splitjoin.lua │ │ │ │ ├── surround.lua │ │ │ │ ├── svgo.lua │ │ │ │ ├── template-string.lua │ │ │ │ ├── text-case.lua │ │ │ │ ├── vim-textobj-entire.lua │ │ │ │ └── vim-visual-multi.lua │ │ │ ├── firenvim.lua │ │ │ ├── git │ │ │ │ ├── gh-nvim.lua │ │ │ │ ├── git-conflict.lua │ │ │ │ ├── gitsigns.lua │ │ │ │ └── octo.lua │ │ │ ├── init.lua │ │ │ ├── lab.lua │ │ │ ├── languages │ │ │ │ ├── emmet.lua │ │ │ │ ├── gentoo.lua │ │ │ │ ├── haskell.lua │ │ │ │ ├── javascript.lua │ │ │ │ ├── jinja.lua │ │ │ │ ├── lua.lua │ │ │ │ ├── markdown.lua │ │ │ │ ├── php.lua │ │ │ │ └── rust.lua │ │ │ ├── lsp │ │ │ │ ├── document-color.lua │ │ │ │ ├── formatter.lua │ │ │ │ ├── goto-preview.lua │ │ │ │ ├── hoverhints.lua │ │ │ │ ├── inc-rename.lua │ │ │ │ ├── lsp-lines.lua │ │ │ │ ├── lsp-status.lua │ │ │ │ ├── mason.lua │ │ │ │ └── trouble.lua │ │ │ ├── luarocks.lua │ │ │ ├── mini.lua │ │ │ ├── rest.lua │ │ │ ├── silicon.lua │ │ │ ├── startuptime.lua │ │ │ ├── treesitter │ │ │ │ ├── _treesitter.lua │ │ │ │ ├── aerial.lua │ │ │ │ ├── barbecue.lua │ │ │ │ ├── context.lua │ │ │ │ ├── nvim-treesitter.lua │ │ │ │ ├── template-literal-comments.lua │ │ │ │ └── webc.lua │ │ │ └── ui │ │ │ │ ├── alpha.lua │ │ │ │ ├── auto-dark-mode.lua │ │ │ │ ├── biscuits.lua │ │ │ │ ├── bufferline.lua │ │ │ │ ├── buffertabs.lua │ │ │ │ ├── bufmode.lua │ │ │ │ ├── colorizer.lua │ │ │ │ ├── cursorline.lua │ │ │ │ ├── dashboard.lua │ │ │ │ ├── deadcolumn.lua │ │ │ │ ├── dressing.lua │ │ │ │ ├── fidget.lua │ │ │ │ ├── flatten.lua │ │ │ │ ├── frecency.lua │ │ │ │ ├── gx-extended.lua │ │ │ │ ├── hexokinase.lua │ │ │ │ ├── illuminate.lua │ │ │ │ ├── import-cost.lua │ │ │ │ ├── incline.lua │ │ │ │ ├── indent-blankline.lua │ │ │ │ ├── inlayhints.lua │ │ │ │ ├── legendary.lua │ │ │ │ ├── local-highlight.lua │ │ │ │ ├── lualine.lua │ │ │ │ ├── modes.lua │ │ │ │ ├── neo-tree.lua │ │ │ │ ├── noice.lua │ │ │ │ ├── notifier.lua │ │ │ │ ├── notify.lua │ │ │ │ ├── numbers.lua │ │ │ │ ├── oil.lua │ │ │ │ ├── prettyfold.lua │ │ │ │ ├── regexplainer.lua │ │ │ │ ├── reticle.lua │ │ │ │ ├── scrollbar.lua │ │ │ │ ├── statuscol.lua │ │ │ │ ├── tabby.lua │ │ │ │ ├── telescope-heading.lua │ │ │ │ ├── telescope.lua │ │ │ │ ├── toggleterm.lua │ │ │ │ ├── ufo.lua │ │ │ │ ├── web-devicons.lua │ │ │ │ ├── whichkey.lua │ │ │ │ ├── winpick.lua │ │ │ │ ├── winsep.lua │ │ │ │ └── wrapping.lua │ │ └── utils.lua │ ├── luasnippets │ │ ├── css.lua │ │ ├── git.lua │ │ ├── markdown.lua │ │ ├── typescript.lua │ │ └── yaml.lua │ ├── snippets │ │ ├── html.snippets │ │ ├── javascript.snippets │ │ ├── jinja.snippets │ │ ├── lua.snippets │ │ ├── markdown.snippets │ │ ├── scss.snippets │ │ └── typescript.snippets │ └── spell │ │ ├── en.utf-8.add │ │ └── en.utf-8.add.spl ├── screenie.png ├── solaar │ └── rules.yaml ├── starship.toml ├── sway │ ├── config │ └── config.d │ │ ├── 10-effects.conf │ │ ├── 20-bar.conf │ │ └── bindings.conf ├── tmux │ ├── README.md │ └── tmux.conf ├── ulauncher │ ├── extensions.json │ ├── settings.json │ ├── shortcuts.json │ └── user-themes │ │ └── Catppuccin │ │ ├── generated.css │ │ ├── manifest.json │ │ ├── theme-gtk-3.20.css │ │ └── theme.css ├── waybar │ ├── config │ └── style.css └── wezterm │ ├── colors │ ├── cat.js │ ├── duskfox.toml │ ├── github_dark.toml │ └── tokyonight_night.toml │ └── wezterm.lua ├── .gitconfig ├── .gitignore ├── .gitmodules ├── .var └── app │ ├── com.raggesilver.BlackBox │ └── data │ │ └── blackbox │ │ └── schemes │ │ ├── Catppuccin-Frappe.json │ │ ├── Catppuccin-Latte.json │ │ ├── Catppuccin-Macchiato.json │ │ └── Catppuccin-Mocha.json │ └── org.gnome.Geary │ └── config │ └── geary │ └── user-style.css ├── .vimrc └── README.md /.bashrc: -------------------------------------------------------------------------------- 1 | if [[ $- != *i* ]] ; then 2 | # Shell is non-interactive. Be done now! 3 | return 4 | fi 5 | 6 | if [ -f /etc/gentoo-release ]; then 7 | export SSH_AUTH_SOCK=/run/user/1000/keyring/ssh 8 | if [[ "$(tty)" == "/dev/tty1" ]]; then 9 | dbus-run-session sway 10 | elif [ -x /bin/fish ]; then 11 | SHELL=/bin/fish exec fish 12 | fi 13 | else 14 | # Put your fun stuff here. 15 | source ~/.config/bashrc 16 | . "$HOME/.cargo/env" 17 | 18 | export NVM_DIR="$HOME/.nvm" 19 | [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm 20 | [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion 21 | 22 | eval "$(starship init bash)" 23 | fi 24 | 25 | -------------------------------------------------------------------------------- /.config/.gitignore: -------------------------------------------------------------------------------- 1 | nvim/plugin/packer_compiled.lua 2 | -------------------------------------------------------------------------------- /.config/alacritty/alacritty.yml: -------------------------------------------------------------------------------- 1 | env: 2 | TERM: xterm-256color 3 | 4 | window: 5 | decorations: transparent 6 | opacity: 0.9 7 | dynamic_title: true 8 | dynamic_padding: true 9 | 10 | font: 11 | size: 16 12 | use_thin_strokes: true 13 | draw_bold_text_with_bright_colors: true 14 | normal: 15 | # family: VictorMono Nerd Font 16 | # family: Operator Mono 17 | # 18 | family: FiraCode Nerd Font 19 | # 20 | # family: Hack Nerd Font 21 | bold: 22 | # family: VictorMono Nerd Font 23 | # 24 | family: FiraCode Nerd Font 25 | style: Bold 26 | # 27 | # family: Operator Mono 28 | italic: 29 | # family: Hack Nerd Font 30 | # style: Italic 31 | # 32 | # family: VictorMono Nerd Font 33 | # style: Thin Italic 34 | # 35 | family: Operator Mono 36 | style: Book Italic 37 | bold_italic: 38 | # family: Hack Nerd Font 39 | # style: Bold Italic 40 | # 41 | # family: VictorMono Nerd Font 42 | # style: SemiBold Italic 43 | # 44 | family: Operator Mono 45 | style: Bold Italic 46 | 47 | # colors: 48 | # primary: 49 | # # background: '#111111' 50 | # background: '#000000' 51 | # foreground: '#c5c8c6' 52 | 53 | # Nightfox Alacritty Colors 54 | # Style: duskfox 55 | # Upstream: https://github.com/edeneast/nightfox.nvim/raw/main/extra/duskfox/nightfox_alacritty.yml 56 | colors: 57 | # Default colors 58 | primary: 59 | # background: '0x232136' 60 | background: '#000000' 61 | foreground: '0xe0def4' 62 | # Normal colors 63 | normal: 64 | black: '0x393552' 65 | red: '0xeb6f92' 66 | green: '0xa3be8c' 67 | yellow: '0xf6c177' 68 | blue: '0x569FBA' 69 | magenta: '0xc4a7e7' 70 | cyan: '0x9ccfd8' 71 | white: '0xe0def4' 72 | # Bright colors 73 | bright: 74 | black: '0x47407d' 75 | red: '0xf083a2' 76 | green: '0xb1d196' 77 | yellow: '0xf9cb8c' 78 | blue: '0x65b1cd' 79 | magenta: '0xccb1ed' 80 | cyan: '0xa6dae3' 81 | white: '0xe2e0f7' 82 | indexed_colors: 83 | - { index: 16, color: '0xea9a97' } 84 | - { index: 17, color: '0xEB98C3' } 85 | 86 | # Colors (Smyck) 87 | # colors: 88 | # bright: 89 | # black: '#7a7a7a' 90 | # blue: '#8dcff0' 91 | # cyan: '#6ad9cf' 92 | # green: '#c4f137' 93 | # magenta: '#f79aff' 94 | # red: '#d6837c' 95 | # white: '#f7f7f7' 96 | # yellow: '#fee14d' 97 | # cursor: 98 | # cursor: '#bbbbbb' 99 | # text: '#ffffff' 100 | # normal: 101 | # black: '#000000' 102 | # blue: '#62a3c4' 103 | # cyan: '#207383' 104 | # green: '#7da900' 105 | # magenta: '#ba8acc' 106 | # red: '#b84131' 107 | # white: '#a1a1a1' 108 | # yellow: '#c4a500' 109 | # primary: 110 | # background: '#1b1b1b' 111 | # foreground: '#f7f7f7' 112 | # selection: 113 | # background: '#207483' 114 | # text: '#f7f7f7' 115 | -------------------------------------------------------------------------------- /.config/bashrc: -------------------------------------------------------------------------------- 1 | # aliases 2 | shopt -s expand_aliases 3 | alias g="git" 4 | alias nr="npm run" 5 | alias run="nr" 6 | alias rn="nr" 7 | alias config="git --git-dir=$HOME/.cfg/ --work-tree=$HOME" 8 | alias realvim="vim" 9 | alias oldvim="realvim" 10 | alias bramvim="realvim" 11 | alias vim="nvim" 12 | alias vim-update="nvim --headless -c 'autocmd User PackerComplete quitall' -c 'PackerSync'" 13 | 14 | 15 | -------------------------------------------------------------------------------- /.config/colorscripts/blacklisted/README.md: -------------------------------------------------------------------------------- 1 | ## Generators 2 | https://dom111.github.io/image-to-ansi/ 3 | https://github.com/mafik/ansi-art 4 | https://github.com/Nellousan/px2ansi 5 | -------------------------------------------------------------------------------- /.config/colorscripts/happycultist.sh: -------------------------------------------------------------------------------- 1 | printf "\e[49m \e[38;2;48;32;32;49m▄▄\e[38;2;129;129;129;48;2;48;32;32m▄\e[38;2;153;153;153;48;2;48;32;32m▄\e[48;2;48;32;32m \e[49m \e[m 2 | \e[49m \e[38;2;48;32;32;49m▄\e[38;2;129;129;129;48;2;48;32;32m▄\e[38;2;153;153;153;48;2;129;129;129m▄▄\e[48;2;153;153;153m \e[38;2;129;129;129;48;2;48;32;32m▄\e[38;2;48;32;32;49m▄\e[49m \e[m 3 | \e[49m \e[48;2;48;32;32m \e[38;2;153;153;153;48;2;129;129;129m▄\e[48;2;153;153;153m \e[38;2;129;129;129;48;2;48;32;32m▄\e[38;2;48;32;32;49m▄\e[49m \e[m 4 | \e[49m \e[48;2;48;32;32m \e[48;2;129;129;129m \e[48;2;153;153;153m \e[48;2;89;113;121m \e[38;2;48;32;32;48;2;89;113;121m▄\e[38;2;89;113;121;48;2;153;153;153m▄\e[38;2;48;32;32;48;2;89;113;121m▄\e[48;2;89;113;121m \e[48;2;153;153;153m \e[38;2;153;153;153;48;2;129;129;129m▄\e[48;2;48;32;32m \e[49m \e[m 5 | \e[48;2;48;32;32m \e[48;2;129;129;129m \e[48;2;153;153;153m \e[38;2;153;153;153;48;2;89;113;121m▄\e[48;2;153;153;153m \e[38;2;153;153;153;48;2;89;113;121m▄\e[48;2;153;153;153m \e[48;2;129;129;129m \e[48;2;48;32;32m \e[49m \e[m 6 | \e[49;38;2;48;32;32m▀\e[48;2;48;32;32m \e[48;2;129;129;129m \e[38;2;129;129;129;48;2;153;153;153m▄\e[48;2;153;153;153m \e[38;2;129;129;129;48;2;153;153;153m▄\e[48;2;129;129;129m \e[48;2;48;32;32m \e[49m \e[m 7 | \e[49m \e[49;38;2;48;32;32m▀\e[38;2;48;32;32;48;2;129;129;129m▄▄▄▄▄▄▄▄▄\e[49;38;2;48;32;32m▀\e[49m \e[m 8 | \e[49m \e[38;2;48;32;32;49m▄\e[38;2;153;153;153;48;2;48;32;32m▄\e[48;2;153;153;153m \e[38;2;153;153;153;48;2;48;32;32m▄\e[38;2;48;32;32;48;2;89;113;121m▄\e[48;2;48;32;32m \e[38;2;48;32;32;48;2;89;113;121m▄\e[38;2;153;153;153;48;2;48;32;32m▄\e[38;2;129;129;129;48;2;153;153;153m▄\e[38;2;129;129;129;48;2;48;32;32m▄\e[38;2;48;32;32;49m▄\e[49m \e[m 9 | \e[48;2;48;32;32m \e[38;2;89;113;121;48;2;129;129;129m▄\e[38;2;105;137;137;48;2;129;129;129m▄\e[48;2;48;32;32m \e[48;2;153;153;153m \e[48;2;48;32;32m \e[48;2;153;153;153m \e[48;2;48;32;32m \e[38;2;89;113;121;48;2;242;242;242m▄\e[48;2;105;137;137m \e[48;2;48;32;32m \e[49m \e[m 10 | \e[49;38;2;48;32;32m▀\e[38;2;48;32;32;48;2;105;137;137m▄▄\e[38;2;48;32;32;48;2;129;129;129m▄\e[48;2;153;153;153m \e[38;2;72;40;153;48;2;153;153;153m▄\e[38;2;48;32;32;48;2;72;40;153m▄▄\e[48;2;48;32;32m \e[49m \e[m 11 | \e[49m \e[38;2;72;40;153;48;2;48;32;32m▄\e[48;2;48;32;32m \e[48;2;129;129;129m \e[38;2;129;129;129;48;2;153;153;153m▄\e[48;2;129;129;129m \e[48;2;48;32;32m \e[48;2;72;40;153m \e[48;2;48;32;32m \e[48;2;129;129;129m \e[48;2;48;32;32m \e[49m \e[m 12 | \e[49;38;2;72;40;153m▀\e[38;2;48;32;32;48;2;72;40;153m▄\e[38;2;72;40;153;48;2;48;32;32m▄\e[38;2;48;32;32;48;2;153;153;153m▄\e[48;2;48;32;32m \e[38;2;72;40;153;48;2;48;32;32m▄\e[48;2;72;40;153m \e[38;2;72;40;153;48;2;48;32;32m▄\e[48;2;48;32;32m \e[38;2;48;32;32;48;2;129;129;129m▄\e[38;2;72;40;153;48;2;48;32;32m▄\e[48;2;72;40;153m \e[49;38;2;72;40;153m▀▀\e[m 13 | "; 14 | -------------------------------------------------------------------------------- /.config/colorscripts/mrsaturn.sh: -------------------------------------------------------------------------------- 1 | printf "\e[49m \e[m 2 | \e[49m \e[38;2;48;32;32;49m▄\e[49m \e[m 3 | \e[49m \e[38;2;242;0;97;49m▄\e[48;2;242;0;97m \e[38;2;242;0;97;49m▄\e[48;2;48;32;32m \e[49m \e[m 4 | \e[49m \e[48;2;48;32;32m \e[49;38;2;242;0;97m▀\e[48;2;242;0;97m \e[49;38;2;242;0;97m▀\e[49m \e[m 5 | \e[49m \e[38;2;48;32;32;49m▄\e[38;2;242;145;145;48;2;48;32;32m▄\e[38;2;242;178;145;48;2;48;32;32m▄▄▄▄\e[38;2;242;145;145;48;2;48;32;32m▄\e[38;2;48;32;32;49m▄\e[49m \e[m 6 | \e[49m \e[38;2;48;32;32;49m▄\e[38;2;242;178;145;48;2;48;32;32m▄\e[38;2;48;32;32;48;2;242;178;145m▄▄\e[48;2;242;178;145m \e[38;2;48;32;32;48;2;242;178;145m▄\e[38;2;48;32;32;48;2;242;145;145m▄\e[38;2;242;145;145;48;2;48;32;32m▄\e[38;2;48;32;32;49m▄\e[49m \e[m 7 | \e[49m \e[38;2;48;32;32;49m▄\e[38;2;242;145;145;48;2;48;32;32m▄\e[48;2;242;178;145m \e[38;2;48;32;32;48;2;242;178;145m▄\e[48;2;242;178;145m \e[38;2;48;32;32;48;2;242;178;145m▄\e[48;2;242;178;145m \e[38;2;242;145;145;48;2;48;32;32m▄\e[38;2;48;32;32;49m▄\e[49m \e[m 8 | \e[49;38;2;48;32;32m▀\e[48;2;48;32;32m \e[38;2;242;145;145;48;2;48;32;32m▄\e[48;2;242;178;145m \e[38;2;48;32;32;48;2;242;178;145m▄\e[48;2;242;178;145m \e[38;2;48;32;32;48;2;242;178;145m▄\e[48;2;242;178;145m \e[38;2;48;32;32;48;2;242;145;145m▄\e[48;2;48;32;32m \e[38;2;48;32;32;49m▄\e[m 9 | \e[38;2;48;32;32;49m▄\e[48;2;48;32;32m \e[38;2;242;145;145;48;2;48;32;32m▄\e[48;2;242;178;145m \e[48;2;48;32;32m \e[48;2;242;178;145m \e[48;2;48;32;32m \e[48;2;242;178;145m \e[38;2;48;32;32;48;2;242;145;145m▄\e[48;2;48;32;32m \e[49m \e[m 10 | \e[49m \e[48;2;48;32;32m \e[48;2;242;145;145m \e[48;2;242;178;145m \e[38;2;242;178;145;48;2;242;145;145m▄\e[38;2;242;145;145;48;2;48;32;32m▄\e[38;2;48;32;32;48;2;242;145;145m▄▄▄\e[38;2;242;145;145;48;2;48;32;32m▄\e[38;2;242;178;145;48;2;242;145;145m▄\e[48;2;242;178;145m \e[38;2;242;145;145;48;2;242;178;145m▄\e[48;2;242;145;145m \e[48;2;48;32;32m \e[49;38;2;48;32;32m▀\e[m 11 | \e[38;2;48;32;32;49m▄\e[38;2;242;178;145;48;2;48;32;32m▄\e[48;2;242;145;145m \e[38;2;48;32;32;48;2;242;145;145m▄▄▄▄▄▄▄\e[48;2;242;145;145m \e[48;2;48;32;32m \e[49m \e[m 12 | \e[49;38;2;80;113;97m▀\e[38;2;80;113;97;48;2;48;32;32m▄▄▄\e[48;2;80;113;97m \e[38;2;80;113;97;48;2;48;32;32m▄\e[38;2;48;32;32;48;2;242;178;145m▄▄\e[38;2;48;32;32;48;2;242;145;145m▄\e[38;2;80;113;97;48;2;48;32;32m▄\e[m 13 | "; 14 | -------------------------------------------------------------------------------- /.config/colorscripts/ness.sleepy.sh: -------------------------------------------------------------------------------- 1 | printf "\e[49m \e[38;2;48;32;32;49m▄\e[49m \e[38;2;48;32;32;49m▄\e[49m \e[38;2;48;32;32;49m▄\e[49m \e[m 2 | \e[49m \e[38;2;48;32;32;49m▄\e[49m \e[48;2;48;32;32m \e[38;2;48;32;32;49m▄\e[48;2;48;32;32m \e[38;2;48;32;32;49m▄\e[49;38;2;48;32;32m▀\e[49m \e[m 3 | \e[49m \e[48;2;48;32;32m \e[49m \e[m 4 | \e[49m \e[38;2;48;32;32;49m▄\e[48;2;48;32;32m \e[38;2;202;153;121;48;2;48;32;32m▄\e[38;2;242;178;145;48;2;202;153;121m▄\e[38;2;242;178;145;48;2;48;32;32m▄\e[38;2;242;178;145;48;2;202;153;121m▄\e[38;2;202;153;121;48;2;48;32;32m▄\e[38;2;242;178;145;48;2;48;32;32m▄\e[38;2;242;178;145;48;2;202;153;121m▄\e[48;2;48;32;32m \e[49m \e[m 5 | \e[49m \e[48;2;48;32;32m \e[48;2;202;153;121m \e[48;2;242;178;145m \e[38;2;48;32;32;48;2;80;113;97m▄\e[48;2;242;178;145m \e[38;2;48;32;32;48;2;80;113;97m▄\e[48;2;242;178;145m \e[38;2;242;178;145;48;2;48;32;32m▄\e[48;2;242;178;145m \e[48;2;48;32;32m \e[49m \e[m 6 | \e[49m \e[48;2;48;32;32m \e[48;2;242;145;145m \e[48;2;242;178;145m \e[48;2;242;145;145m \e[38;2;48;32;32;48;2;202;153;121m▄\e[49;38;2;48;32;32m▀\e[49m \e[m 7 | \e[49m \e[49;38;2;48;32;32m▀\e[38;2;48;32;32;48;2;242;145;145m▄\e[38;2;242;178;145;48;2;80;113;97m▄\e[38;2;242;178;145;48;2;48;32;32m▄▄\e[38;2;202;153;121;48;2;242;178;145m▄▄\e[38;2;48;32;32;48;2;242;145;145m▄\e[49;38;2;48;32;32m▀\e[49m \e[m 8 | \e[49m \e[38;2;48;32;32;49m▄\e[38;2;242;242;242;48;2;48;32;32m▄\e[38;2;113;113;242;48;2;48;32;32m▄\e[38;2;113;113;242;48;2;202;153;121m▄\e[38;2;113;113;242;48;2;48;32;32m▄\e[38;2;242;242;242;48;2;48;32;32m▄\e[38;2;48;32;32;49m▄\e[49m \e[m 9 | \e[49m \e[38;2;48;32;32;49m▄▄\e[38;2;113;113;242;48;2;48;32;32m▄\e[48;2;242;242;242m \e[38;2;48;32;32;48;2;113;113;242m▄\e[38;2;242;242;242;48;2;48;32;32m▄\e[38;2;242;178;145;48;2;48;32;32m▄\e[48;2;242;242;242m \e[48;2;113;113;242m \e[48;2;48;32;32m \e[49m \e[m 10 | \e[49m \e[48;2;48;32;32m \e[48;2;113;113;242m \e[38;2;113;113;242;48;2;242;242;242m▄\e[48;2;48;32;32m \e[38;2;48;32;32;48;2;242;242;242m▄\e[48;2;48;32;32m \e[38;2;48;32;32;48;2;242;178;145m▄▄\e[38;2;48;32;32;48;2;113;113;242m▄\e[38;2;242;242;242;48;2;48;32;32m▄\e[38;2;113;113;242;48;2;48;32;32m▄\e[38;2;242;242;242;48;2;48;32;32m▄\e[38;2;48;32;32;49m▄\e[49m \e[m 11 | \e[49m \e[49;38;2;48;32;32m▀\e[38;2;48;32;32;48;2;113;113;242m▄\e[48;2;113;113;242m \e[48;2;242;178;145m \e[38;2;48;32;32;48;2;113;113;242m▄\e[38;2;48;32;32;48;2;242;242;242m▄\e[38;2;48;32;32;48;2;113;113;242m▄\e[38;2;48;32;32;48;2;242;242;242m▄\e[38;2;48;32;32;48;2;113;113;242m▄\e[38;2;113;113;242;48;2;242;242;242m▄\e[48;2;242;178;145m \e[38;2;113;113;242;48;2;242;178;145m▄\e[48;2;48;32;32m \e[49m \e[m 12 | \e[49;38;2;80;113;97m▀▀\e[38;2;80;113;97;48;2;48;32;32m▄\e[38;2;48;32;32;48;2;113;113;242m▄▄\e[38;2;80;113;97;48;2;48;32;32m▄\e[48;2;80;113;97m \e[38;2;80;113;97;48;2;48;32;32m▄\e[38;2;48;32;32;48;2;242;242;242m▄\e[38;2;48;32;32;48;2;113;113;242m▄\e[38;2;80;113;97;48;2;48;32;32m▄\e[48;2;80;113;97m \e[49;38;2;80;113;97m▀▀\e[m 13 | "; 14 | -------------------------------------------------------------------------------- /.config/colorscripts/present.sh: -------------------------------------------------------------------------------- 1 | printf "\e[49m \e[48;2;48;32;32m \e[38;2;242;145;0;48;2;48;32;32m▄\e[38;2;48;32;32;49m▄▄▄▄\e[38;2;242;145;0;48;2;48;32;32m▄\e[38;2;242;48;64;48;2;48;32;32m▄\e[48;2;48;32;32m \e[49m \e[m 2 | \e[49m \e[38;2;48;32;32;49m▄▄\e[38;2;242;250;250;48;2;48;32;32m▄\e[48;2;48;32;32m \e[38;2;48;32;32;48;2;242;48;64m▄▄\e[48;2;48;32;32m \e[38;2;48;32;32;48;2;242;48;64m▄▄\e[48;2;48;32;32m \e[38;2;145;153;97;48;2;48;32;32m▄\e[38;2;242;250;250;48;2;48;32;32m▄\e[38;2;48;32;32;49m▄▄\e[49m \e[m 3 | \e[48;2;48;32;32m \e[38;2;48;32;32;48;2;242;250;250m▄▄\e[38;2;242;48;64;48;2;48;32;32m▄▄\e[38;2;48;32;32;48;2;242;48;64m▄▄\e[38;2;145;153;97;48;2;48;32;32m▄\e[38;2;48;32;32;48;2;242;48;64m▄\e[48;2;48;32;32m \e[48;2;242;48;64m \e[38;2;242;48;64;48;2;48;32;32m▄▄\e[38;2;48;32;32;48;2;145;153;97m▄\e[38;2;48;32;32;48;2;242;250;250m▄\e[48;2;48;32;32m \e[m 4 | \e[48;2;48;32;32m \e[38;2;145;153;97;48;2;242;250;250m▄\e[48;2;48;32;32m \e[38;2;242;48;64;48;2;48;32;32m▄\e[48;2;48;32;32m \e[38;2;48;32;32;48;2;145;153;97m▄\e[38;2;242;250;250;48;2;145;153;97m▄\e[48;2;242;250;250m \e[38;2;48;32;32;48;2;242;250;250m▄\e[48;2;48;32;32m \e[38;2;242;48;64;48;2;48;32;32m▄\e[48;2;48;32;32m \e[38;2;242;250;250;48;2;145;153;97m▄\e[48;2;48;32;32m \e[m 5 | \e[48;2;48;32;32m \e[38;2;145;153;97;48;2;242;250;250m▄\e[48;2;48;32;32m \e[48;2;242;48;64m \e[48;2;48;32;32m \e[48;2;145;153;97m \e[38;2;242;250;250;48;2;48;32;32m▄\e[48;2;48;32;32m \e[38;2;145;153;97;48;2;48;32;32m▄\e[48;2;145;153;97m \e[38;2;242;250;250;48;2;145;153;97m▄\e[48;2;48;32;32m \e[48;2;242;48;64m \e[48;2;48;32;32m \e[38;2;242;250;250;48;2;145;153;97m▄\e[48;2;48;32;32m \e[m 6 | \e[48;2;48;32;32m \e[38;2;145;153;97;48;2;242;250;250m▄\e[48;2;48;32;32m \e[48;2;242;48;64m \e[48;2;48;32;32m \e[38;2;145;153;97;48;2;242;250;250m▄\e[38;2;242;250;250;48;2;145;153;97m▄\e[48;2;48;32;32m \e[38;2;145;153;97;48;2;242;250;250m▄▄\e[38;2;242;250;250;48;2;145;153;97m▄\e[48;2;48;32;32m \e[48;2;242;48;64m \e[48;2;48;32;32m \e[38;2;242;250;250;48;2;145;153;97m▄\e[48;2;48;32;32m \e[m 7 | \e[48;2;145;153;97m \e[38;2;145;153;97;48;2;48;32;32m▄▄\e[38;2;48;32;32;48;2;194;129;97m▄\e[48;2;48;32;32m \e[38;2;145;153;97;48;2;242;250;250m▄\e[38;2;242;250;250;48;2;145;153;97m▄\e[48;2;48;32;32m \e[38;2;145;153;97;48;2;242;250;250m▄▄\e[38;2;242;250;250;48;2;145;153;97m▄\e[48;2;48;32;32m \e[38;2;48;32;32;48;2;242;48;64m▄\e[38;2;145;153;97;48;2;48;32;32m▄▄\e[48;2;145;153;97m \e[m 8 | \e[49m \e[49;38;2;145;153;97m▀\e[48;2;145;153;97m \e[38;2;145;153;97;48;2;48;32;32m▄▄\e[38;2;48;32;32;48;2;145;153;97m▄\e[48;2;48;32;32m \e[38;2;48;32;32;48;2;242;250;250m▄\e[38;2;145;153;97;48;2;48;32;32m▄▄\e[48;2;145;153;97m \e[49;38;2;145;153;97m▀▀\e[49m \e[m 9 | "; 10 | -------------------------------------------------------------------------------- /.config/eslintrc.json: -------------------------------------------------------------------------------- 1 | { "extends": "@pwrs" } 2 | -------------------------------------------------------------------------------- /.config/fish/conf.d/nvm.fish: -------------------------------------------------------------------------------- 1 | set --query nvm_mirror || set --global nvm_mirror https://nodejs.org/dist 2 | set --query XDG_DATA_HOME || set --local XDG_DATA_HOME ~/.local/share 3 | set --global nvm_data $XDG_DATA_HOME/nvm 4 | 5 | function _nvm_install --on-event nvm_install 6 | test ! -d $nvm_data && command mkdir -p $nvm_data 7 | echo "Downloading the Node distribution index..." 2>/dev/null 8 | _nvm_index_update 9 | end 10 | 11 | function _nvm_update --on-event nvm_update 12 | set --query --universal nvm_data && set --erase --universal nvm_data 13 | set --query --universal nvm_mirror && set --erase --universal nvm_mirror 14 | set --query nvm_mirror || set --global nvm_mirror https://nodejs.org/dist 15 | end 16 | 17 | function _nvm_uninstall --on-event nvm_uninstall 18 | command rm -rf $nvm_data 19 | 20 | set --query nvm_current_version && _nvm_version_deactivate $nvm_current_version 21 | 22 | set --names | string replace --filter --regex -- "^nvm" "set --erase nvm" | source 23 | functions --erase (functions --all | string match --entire --regex -- "^_nvm_") 24 | end 25 | 26 | if status is-interactive && set --query nvm_default_version && ! set --query nvm_current_version 27 | nvm use --silent $nvm_default_version 28 | end 29 | -------------------------------------------------------------------------------- /.config/fish/conf.d/plugin-bang-bang.fish: -------------------------------------------------------------------------------- 1 | function _plugin-bang-bang_key_bindings --on-variable fish_key_bindings 2 | bind --erase ! 3 | bind --erase '$' 4 | switch "$fish_key_bindings" 5 | case 'fish_default_key_bindings' 6 | bind --mode default ! __history_previous_command 7 | bind --mode default '$' __history_previous_command_arguments 8 | case 'fish_vi_key_bindings' 'fish_hybrid_key_bindings' 9 | bind --mode insert ! __history_previous_command 10 | bind --mode insert '$' __history_previous_command_arguments 11 | end 12 | end 13 | 14 | function _plugin-bang-bang_uninstall --on-event plugin-bang-bang_uninstall 15 | bind --erase ! 16 | bind --erase '$' 17 | functions --erase _plugin-bang-bang_uninstall 18 | end 19 | 20 | _plugin-bang-bang_key_bindings -------------------------------------------------------------------------------- /.config/fish/conf.d/rustup.fish: -------------------------------------------------------------------------------- 1 | source "$HOME/.cargo/env.fish" 2 | -------------------------------------------------------------------------------- /.config/fish/conf.d/venv.fish: -------------------------------------------------------------------------------- 1 | # Based on https://gist.github.com/tommyip/cf9099fa6053e30247e5d0318de2fb9e 2 | 3 | 4 | # Based on https://gist.github.com/bastibe/c0950e463ffdfdfada7adf149ae77c6f 5 | # Changes: 6 | # * Instead of overriding cd, we detect directory change. This allows the script to work 7 | # for other means of cd, such as z. 8 | # * Update syntax to work with new versions of fish. 9 | 10 | function __auto_source_venv --on-variable PWD --description "Activate/Deactivate virtualenv on directory change" 11 | status --is-command-substitution; and return 12 | 13 | # Check if we are inside a git repository 14 | if git rev-parse --show-toplevel &>/dev/null 15 | set dir (realpath (git rev-parse --show-toplevel)) 16 | else 17 | set dir (pwd) 18 | end 19 | 20 | # Find a virtual environment in the directory 21 | set VENV_DIR_NAMES env .env venv .venv 22 | for venv_dir in $dir/$VENV_DIR_NAMES 23 | if test -e "$venv_dir/bin/activate.fish" 24 | break 25 | end 26 | end 27 | 28 | # Activate venv if it was found and not activated before 29 | if test "$VIRTUAL_ENV" != "$venv_dir" -a -e "$venv_dir/bin/activate.fish" 30 | source $venv_dir/bin/activate.fish 31 | # Deactivate venv if it is activated but the directory doesn't exist 32 | else if not test -z "$VIRTUAL_ENV" -o -e "$venv_dir" 33 | deactivate 34 | end 35 | end 36 | 37 | __auto_source_venv 38 | -------------------------------------------------------------------------------- /.config/fish/fish: -------------------------------------------------------------------------------- 1 | fish -------------------------------------------------------------------------------- /.config/fish/fish_plugins: -------------------------------------------------------------------------------- 1 | jorgebucaran/fisher 2 | decors/fish-colored-man 3 | edc/bass 4 | oh-my-fish/plugin-bang-bang 5 | oh-my-fish/plugin-foreign-env 6 | jorgebucaran/nvm.fish 7 | nakulj/auto-venv 8 | -------------------------------------------------------------------------------- /.config/fish/functions/clear_github_caches.fish: -------------------------------------------------------------------------------- 1 | function clear_github_caches -d "delete caches from github repo" 2 | set -f ACCEPT "Accept: application/vnd.github+json" 3 | set -f GH_API_VERSION "X-GitHub-Api-Version: 2022-11-28" 4 | set -f JQ_QUERY ".actions_caches | map(.id) | @sh" 5 | set -f ENDPOINT "/repos/$argv[1]/actions/caches" 6 | # fetch all caches for the repo 7 | set -f CACHES (gh api --paginate --jq $JQ_QUERY -H $ACCEPT -H $GH_API_VERSION $ENDPOINT) 8 | # strip surrounding quotes and store the list of cache ids 9 | set -f CACHE_IDS (string split --no-empty ' ' (string replace --all '"' '' $CACHES)) 10 | for id in $CACHE_IDS 11 | echo "Deleting cache $id"; 12 | gh api --method DELETE -H $ACCEPT -H $GH_API_VERSION "$ENDPOINT/$id" 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /.config/fish/functions/colorscript.fish: -------------------------------------------------------------------------------- 1 | function colorscript -d "Simple CLI for shell-color-scripts, translated to Fish from the original by DT Linux" 2 | set -l usage "Usage: colorscript [option] 3 | Options: 4 | -h, --help Show this help message 5 | -l, --list List all color scripts 6 | -r, --random Run a random color script 7 | -e, --exec Execute a specific color script by name" 8 | 9 | if test (count $argv) -eq 0 10 | echo $usage 11 | return 1 12 | end 13 | 14 | set -l SCRIPTDIR "$HOME/.config/colorscripts/" 15 | 16 | switch $argv[1] 17 | case -h --help 18 | echo $usage 19 | 20 | case -l --list 21 | if test -d $SCRIPTDIR 22 | for script in $SCRIPTDIR/* 23 | basename $script 24 | end 25 | else 26 | echo "No color scripts directory found at $SCRIPTDIR" 27 | return 1 28 | end 29 | 30 | case -r --random 31 | if test -d $SCRIPTDIR 32 | set -l random_script (random choice (ls -1p $SCRIPTDIR | grep -v '/')) 33 | sh $SCRIPTDIR/$random_script 34 | else 35 | echo "No color scripts directory found at $SCRIPTDIR" 36 | return 1 37 | end 38 | 39 | case -e --exec 40 | if test (count $argv) -lt 2 41 | echo "Please specify a color script name" 42 | return 1 43 | end 44 | 45 | set -l script_path "$SCRIPTDIR/$argv[2]" 46 | 47 | if test -f $script_path 48 | sh $script_path 49 | else 50 | echo "Color script '$argv[2]' not found in $SCRIPTDIR" 51 | return 1 52 | end 53 | 54 | case '*' 55 | echo "Unknown option: $argv[1]" 56 | echo $usage 57 | return 1 58 | end 59 | end 60 | -------------------------------------------------------------------------------- /.config/fish/functions/filenametoexif.fish: -------------------------------------------------------------------------------- 1 | function filenametoexif -d "Overwrite exif dates from filename in a directory, so long as the existing exif year is 1800" 2 | argparse 'n/dry-run' 'v/verbose' 'm/match-on-name' 't/tag=?' -- $argv 3 | set -q _flag_t; or set -l _flag_t "DateTimeOriginal" 4 | 5 | for f in $argv 6 | if set -q _flag_m 7 | ___fn2exif__write__ $_flag_n $_flag_v --tag="$_flag_t" $f 8 | continue 9 | end 10 | 11 | # Get the EXIF date 12 | set -l OLDDATE (exiftool "-$_flag_t" $f | awk -F' : ' '{print $2}') 13 | 14 | if test -z $OLDDATE 15 | set -l _flag_t "CreateDate" 16 | set OLDDATE (exiftool "-$_flag_t" $f | awk -F' : ' '{print $2}') 17 | end 18 | set -l OLDYEAR (echo $OLDDATE | cut -d: -f 1) 19 | 20 | if test -z $OLDYEAR 21 | test (count $_flag_v) -gt 1 and; echo "Could not find date for $f" 22 | ___fn2exif__write__ $_flag_n $_flag_v --tag="$_flag_t" $f 23 | continue 24 | end 25 | 26 | if test $OLDYEAR -eq 1800 27 | ___fn2exif__write__ $_flag_n $_flag_v --tag="$_flag_t" --old-date="$OLDDATE" $f 28 | else if test (count $_flag_v) -gt 1 29 | echo "$f: $(set_color yellow)SKIP$(set_color normal)" 30 | end 31 | end 32 | end 33 | 34 | function ___fn2exif__write__ 35 | argparse 'n/dry-run' 'v/verbose' 'm/match-on-name' 'o/old-date=?' 't/tag=?' -- $argv 36 | set -l MATCH 'match($0, /(20[0-9]{6})/, a) {print a[1]}' 37 | set -l FORMAT "%Y:%m:%d %H:%M:%S" 38 | set -l NEWDATE (basename $argv | gawk $MATCH | xargs date +$FORMAT -d) 39 | set -l C_NEWDATE "$(set_color blue)$NEWDATE$(set_color normal)" 40 | set -l C_OLDDATE "$(set_color blue)$_flag_o$(set_color normal)" 41 | if set -q _flag_n 42 | set -l T "$(set_color yellow)WOULD WRITE$(set_color normal)" 43 | if set -q _flag_o 44 | set T "$(set_color yellow)WOULD OVERWRITE$(set_color normal) FROM $C_OLDDATE TO" 45 | end 46 | echo "$argv: $T $C_NEWDATE" 47 | else 48 | set -l T "$(set_color red)WRITING$(set_color normal)" 49 | if set -q _flag_o 50 | set T "$(set_color red)OVERWRITING$(set_color normal) FROM $C_OLDDATE TO" 51 | end 52 | if set -q _flag_v 53 | echo "$argv: $T $C_NEWDATE" 54 | end 55 | exiftool "-$_flag_t=$NEWDATE" $argv 56 | end 57 | end 58 | 59 | -------------------------------------------------------------------------------- /.config/fish/functions/fish_greeting.fish: -------------------------------------------------------------------------------- 1 | function fish_greeting; end 2 | -------------------------------------------------------------------------------- /.config/fish/functions/jspm-build.fish: -------------------------------------------------------------------------------- 1 | function jspm-build -d "Request a build from JSPM" 2 | set -f pkg "$argv[1]" 3 | if set -q argv[2] 4 | set -f pkg_version $argv[2] 5 | else 6 | set -f pkg_version (npm info $pkg version) 7 | end 8 | if set -q JSPM_IO_TOKEN 9 | set -f url "https://api.jspm.io/build/$pkg@$pkg_version?token=$JSPM_IO_TOKEN" 10 | else 11 | set -f url "https://api.jspm.io/build/$pkg@$pkg_version" 12 | end 13 | set -f response (curl -s $url) 14 | set -f error (echo "$response" | jq -r ".error") 15 | if set -q error 16 | echo $error 17 | return 1 18 | else 19 | echo $response 20 | end 21 | end 22 | -------------------------------------------------------------------------------- /.config/fish/functions/makekernel.fish: -------------------------------------------------------------------------------- 1 | function makekernel -d "build and install custom kernel for raspberry pi 5 gentoo" 2 | cd /opt/src/linux 3 | make -j4 Image.gz modules dtbs 4 | sudo mount /boot 5 | sudo cp arch/arm64/boot/dts/broadcom/*.dtb /boot/ 6 | sudo cp arch/arm64/boot/dts/overlays/*.dtb* /boot/overlays/ 7 | sudo cp arch/arm64/boot/dts/overlays/README /boot/overlays/ 8 | sudo cp arch/arm64/boot/Image.gz /boot/kernel_2712.img 9 | end 10 | -------------------------------------------------------------------------------- /.config/fish/functions/occ.fish: -------------------------------------------------------------------------------- 1 | function occ -d "Execute occ commands in the running nextcloud container" 2 | podman exec --user www-data -it nextcloud-aio-nextcloud php occ $argv 3 | end 4 | -------------------------------------------------------------------------------- /.config/forge/stylesheet/forge/stylesheet.css: -------------------------------------------------------------------------------- 1 | .tiled { 2 | color: rgba(236, 94, 94, 1); 3 | opacity: 1; 4 | border-width: 3px; 5 | } 6 | 7 | .split { 8 | color: rgba(255, 246, 108, 1); 9 | opacity: 1; 10 | border-width: 3px; 11 | } 12 | 13 | .stacked { 14 | color: rgba(247, 162, 43, 1); 15 | opacity: 1; 16 | border-width: 3px; 17 | } 18 | 19 | .tabbed { 20 | color: rgba(17, 199, 224, 1); 21 | opacity: 1; 22 | border-width: 3px; 23 | } 24 | 25 | .floated { 26 | color: rgba(180, 167, 214, 1); 27 | border-width: 3px; 28 | opacity: 1; 29 | } 30 | 31 | .window-tiled-border { 32 | border-width: 3px; 33 | border-color: rgb(243,139,168); 34 | border-style: solid; 35 | border-radius: 14px; 36 | } 37 | 38 | .window-split-border { 39 | border-width: 1px; 40 | border-color: rgb(0,0,0); 41 | border-style: solid; 42 | border-radius: 14px; 43 | } 44 | 45 | .window-split-horizontal { 46 | border-left-width: 0; 47 | border-top-width: 0; 48 | border-bottom-width: 0; 49 | } 50 | 51 | .window-split-vertical { 52 | border-left-width: 0; 53 | border-top-width: 0; 54 | border-right-width: 0; 55 | } 56 | 57 | .window-stacked-border { 58 | border-width: 3px; 59 | border-color: rgb(255,246,108); 60 | border-style: solid; 61 | border-radius: 14px; 62 | } 63 | 64 | .window-tabbed-border { 65 | border-width: 3px; 66 | border-color: rgb(17,199,224); 67 | border-style: solid; 68 | border-radius: 14px; 69 | } 70 | 71 | .window-tabbed-bg { 72 | border-radius: 8px; 73 | } 74 | 75 | .window-tabbed-tab { 76 | background-color: rgba(54, 47, 45, 1); 77 | border-color: rgba(17,199,224,0.6); 78 | border-width: 1px; 79 | border-radius: 8px; 80 | color: white; 81 | margin: 1px; 82 | box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); 83 | } 84 | 85 | .window-tabbed-tab-active { 86 | background-color: rgb(17,199,224); 87 | color: black; 88 | box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); 89 | } 90 | 91 | .window-tabbed-tab-close { 92 | padding: 3px; 93 | margin: 4px; 94 | border-radius: 16px; 95 | width: 16px; 96 | background-color: #e06666; 97 | } 98 | 99 | .window-tabbed-tab-icon { 100 | margin: 3px; 101 | } 102 | 103 | .window-floated-border { 104 | border-width: 3px; 105 | border-color: rgb(236,94,94); 106 | border-style: solid; 107 | border-radius: 14px; 108 | } 109 | 110 | .window-tilepreview-tiled { 111 | border-width: 1px; 112 | border-color: rgba(243,139,168,0.3); 113 | border-style: solid; 114 | border-radius: 14px; 115 | background-color: rgba(243,139,168,0.2); 116 | } 117 | 118 | .window-tilepreview-stacked { 119 | border-width: 1px; 120 | border-color: rgba(255,246,108,0.3); 121 | border-style: solid; 122 | border-radius: 14px; 123 | background-color: rgba(255,246,108,0.2); 124 | } 125 | 126 | .window-tilepreview-tabbed { 127 | border-width: 1px; 128 | border-color: rgba(17,199,224,0.3); 129 | border-style: solid; 130 | border-radius: 14px; 131 | background-color: rgba(17,199,224,0.2); 132 | } -------------------------------------------------------------------------------- /.config/gh/config.yml: -------------------------------------------------------------------------------- 1 | # What protocol to use when performing git operations. Supported values: ssh, https 2 | git_protocol: ssh 3 | # What editor gh should run when creating issues, pull requests, etc. If blank, will refer to environment. 4 | editor: nvim 5 | # When to interactively prompt. This is a global config that cannot be overridden by hostname. Supported values: enabled, disabled 6 | prompt: enabled 7 | # A pager program to send command output to, e.g. "less". Set the value to "cat" to disable the pager. 8 | pager: delta 9 | # Aliases allow you to create nicknames for gh commands 10 | aliases: 11 | co: pr checkout 12 | # The path to a unix socket through which send HTTP connections. If blank, HTTP traffic will be handled by net/http.DefaultTransport. 13 | http_unix_socket: 14 | # What web browser gh should use when opening URLs. If blank, will refer to environment. 15 | browser: 16 | version: "1" 17 | -------------------------------------------------------------------------------- /.config/input-remapper/beta_1.6.0-beta/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.6.0-beta", 3 | "autoload": { 4 | "Logitech MX Ergo Multi-Device Trackball ": "Side Buttons Overview", 5 | "Griffin PowerMate": "Default" 6 | }, 7 | "macros": { 8 | "keystroke_sleep_ms": 10 9 | }, 10 | "gamepad": { 11 | "joystick": { 12 | "non_linearity": 4, 13 | "pointer_speed": 80, 14 | "left_purpose": "none", 15 | "right_purpose": "none", 16 | "x_scroll_speed": 2, 17 | "y_scroll_speed": 0.5 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /.config/input-remapper/beta_1.6.0-beta/presets/Diego Palacios cantor/new preset 2.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bennypowers/dotfiles/cd078c7bcc6996394e17199a2c89d44e8b0682c9/.config/input-remapper/beta_1.6.0-beta/presets/Diego Palacios cantor/new preset 2.json -------------------------------------------------------------------------------- /.config/input-remapper/beta_1.6.0-beta/presets/Diego Palacios cantor/new preset.json: -------------------------------------------------------------------------------- 1 | { 2 | "mapping": {} 3 | } 4 | -------------------------------------------------------------------------------- /.config/input-remapper/beta_1.6.0-beta/presets/Griffin PowerMate/Default.json: -------------------------------------------------------------------------------- 1 | { 2 | "1,256,1": { 3 | "target_uinput": "keyboard", 4 | "output_symbol": "KEY_MUTE", 5 | "mapping_type": "key_macro" 6 | }, 7 | "2,7,1": { 8 | "target_uinput": "keyboard", 9 | "output_symbol": "KEY_VOLUMEUP", 10 | "mapping_type": "key_macro", 11 | "deadzone": 0.11, 12 | "gain": 1.1, 13 | "release_timeout": 0.009999999999999997 14 | }, 15 | "2,7,-1": { 16 | "target_uinput": "keyboard", 17 | "output_symbol": "KEY_VOLUMEDOWN", 18 | "mapping_type": "key_macro", 19 | "release_timeout": 0.009999999999999997 20 | }, 21 | "1,256,1+2,7,1": { 22 | "target_uinput": "keyboard", 23 | "output_symbol": "KEY_BRIGHTNESSUP", 24 | "mapping_type": "key_macro", 25 | "release_timeout": 0.009999999999999997 26 | }, 27 | "1,256,1+2,7,-1": { 28 | "target_uinput": "keyboard", 29 | "output_symbol": "KEY_BRIGHTNESSDOWN", 30 | "mapping_type": "key_macro", 31 | "release_timeout": 0.009999999999999997 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /.config/input-remapper/beta_1.6.0-beta/presets/Logitech MX Ergo Multi-Device Trackball /Side Buttons Overview.json: -------------------------------------------------------------------------------- 1 | { 2 | "1,276,1": { 3 | "target_uinput": "keyboard", 4 | "output_symbol": "Super_L", 5 | "mapping_type": "key_macro" 6 | }, 7 | "1,275,1": { 8 | "target_uinput": "keyboard", 9 | "output_symbol": "Super_L+A", 10 | "mapping_type": "key_macro" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /.config/input-remapper/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.5.0", 3 | "autoload": { 4 | "Griffin PowerMate": "Default" 5 | }, 6 | "macros": { 7 | "keystroke_sleep_ms": 10 8 | }, 9 | "gamepad": { 10 | "joystick": { 11 | "non_linearity": 4, 12 | "pointer_speed": 80, 13 | "left_purpose": "none", 14 | "right_purpose": "none", 15 | "x_scroll_speed": 2, 16 | "y_scroll_speed": 0.5 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /.config/input-remapper/presets/Diego Palacios cantor/new preset.json: -------------------------------------------------------------------------------- 1 | { 2 | "mapping": {} 3 | } 4 | -------------------------------------------------------------------------------- /.config/input-remapper/presets/Griffin PowerMate/Default.json: -------------------------------------------------------------------------------- 1 | { 2 | "mapping": { 3 | "1,256,1": [ 4 | "KEY_MUTE", 5 | "keyboard" 6 | ] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /.config/input-remapper/presets/Logitech MX Ergo Multi-Device Trackball /Side Buttons.json: -------------------------------------------------------------------------------- 1 | { 2 | "mapping": { 3 | "1,276,1": [ 4 | "Super_L+A", 5 | "keyboard" 6 | ], 7 | "1,275,1": [ 8 | "Super_L", 9 | "keyboard" 10 | ] 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /.config/karabiner/assets/complex_modifications/tmux.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Tmux Prefix Remapping in Terminal Apps [Cmd-Shift-P to Ctrl-b]", 3 | "rules": [ 4 | { 5 | "description": "Tmux Prefix Remapping in Terminal Apps [Cmd-Shift-P to Ctrl-b]", 6 | "manipulators": [ 7 | { 8 | "conditions": [ 9 | { 10 | "bundle_identifiers": [ 11 | "^com\\.apple\\.Terminal$", 12 | "^com\\.googlecode\\.iterm2$", 13 | "^co\\.zeit\\.hyperterm$", 14 | "^co\\.zeit\\.hyper$", 15 | "^io\\.alacritty$", 16 | "^net\\.kovidgoyal\\.kitty$" 17 | ], 18 | "type": "frontmost_application_if" 19 | } 20 | ], 21 | "from": { 22 | "key_code": "p", 23 | "modifiers": { 24 | "mandatory": [ 25 | "left_gui", 26 | "left_shift" 27 | ] 28 | } 29 | }, 30 | "to": [ 31 | { 32 | "key_code": "b", 33 | "modifiers": [ 34 | "left_control" 35 | ] 36 | } 37 | ], 38 | "type": "basic" 39 | } 40 | ] 41 | } 42 | ] 43 | } 44 | -------------------------------------------------------------------------------- /.config/lazygit/config.yml: -------------------------------------------------------------------------------- 1 | os: 2 | editPreset: nvim 3 | 4 | gui: 5 | theme: 6 | selectedLineBgColor: 7 | - underline 8 | selectedRangeBgColor: 9 | - underline 10 | 11 | git: 12 | paging: 13 | colorArg: never 14 | pager: delta --paging=never 15 | 16 | quitOnTopLevelReturn: true 17 | -------------------------------------------------------------------------------- /.config/modules.lua: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bennypowers/dotfiles/cd078c7bcc6996394e17199a2c89d44e8b0682c9/.config/modules.lua -------------------------------------------------------------------------------- /.config/nvim/.luarc.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/sumneko/vscode-lua/master/setting/schema.json", 3 | "completion.autoRequire": true, 4 | "completion.callSnippet": "Both", 5 | "completion.displayContext": 5, 6 | "completion.keywordSnippet": "Both", 7 | "diagnostics.globals": [ 8 | "command", 9 | "ag", 10 | "au" 11 | ], 12 | "hint.enable": true, 13 | "workspace.library": [ 14 | "/home/bennyp/.config/nvim/init.lua", 15 | "/usr/share/nvim/runtime/lua", 16 | "${3rd}/luv/library" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /.config/nvim/.stylua.toml: -------------------------------------------------------------------------------- 1 | indent_type = 'Spaces' 2 | indent_width = 2 3 | quote_style = 'AutoPreferSingle' 4 | call_parentheses = 'None' 5 | collapse_simple_statement = 'Always' 6 | -------------------------------------------------------------------------------- /.config/nvim/README.md: -------------------------------------------------------------------------------- 1 | ## Neovim 2 | 3 | Text editor for nerds 4 | 5 | - 🔑 [init][init] 6 | - 🔌 [plugins][plugins] 7 | - 💻 [commands][commands] 8 | - 🗺️ [mappings][mappings] 9 | - 🎛️ [options][options] 10 | - 🌐 [LSP configs][lsp] 11 | 12 | [init]: ./init.lua 13 | [plugins]: ./lua/plugins/ 14 | [commands]: ./lua/commands.lua 15 | [mappings]: ./lua/mappings.lua 16 | [options]: ./lua/options.lua 17 | [lsp]: ./lsp/ 18 | -------------------------------------------------------------------------------- /.config/nvim/after/ftplugin/help.lua: -------------------------------------------------------------------------------- 1 | vim.wo.cursorcolumn = false 2 | -------------------------------------------------------------------------------- /.config/nvim/after/ftplugin/lazy.lua: -------------------------------------------------------------------------------- 1 | vim.api.nvim_set_hl(0, 'MiniTrailspace', { 2 | bg = 'NONE' 3 | }) 4 | -------------------------------------------------------------------------------- /.config/nvim/after/ftplugin/qf.vim: -------------------------------------------------------------------------------- 1 | nnoremap dd 2 | \ call setqflist(filter(getqflist(), {idx -> idx != line('.') - 1}), 'r') cc 3 | -------------------------------------------------------------------------------- /.config/nvim/after/queries/css/custom-property-call.scm: -------------------------------------------------------------------------------- 1 | (call_expression 2 | (function_name) @fn 3 | (arguments) @args 4 | (#eq? @fn "var")) @call 5 | -------------------------------------------------------------------------------- /.config/nvim/after/queries/ecma/folds.scm: -------------------------------------------------------------------------------- 1 | ; extends 2 | (comment) @fold (#lua-match? "^/**%s" @fold) 3 | -------------------------------------------------------------------------------- /.config/nvim/after/queries/ecma/indents.scm: -------------------------------------------------------------------------------- 1 | ; inherits 2 | (comment) @auto 3 | -------------------------------------------------------------------------------- /.config/nvim/after/queries/ecma/lit_html.scm: -------------------------------------------------------------------------------- 1 | (call_expression 2 | function: ((identifier) @_name 3 | (#eq? @_name "html")) 4 | arguments: ((template_string) @lit_html)) 5 | -------------------------------------------------------------------------------- /.config/nvim/after/queries/html/images.scm: -------------------------------------------------------------------------------- 1 | ((element 2 | (_ 3 | (tag_name) @_tag 4 | (attribute) @image.html.attr +) @image.html (#eq? @_tag "img"))) 5 | -------------------------------------------------------------------------------- /.config/nvim/after/queries/html/injections.scm: -------------------------------------------------------------------------------- 1 | ; extends 2 | ((text) @twig (#match? @twig "\\{\\%.*\\%\\}")) 3 | 4 | ((element 5 | (start_tag 6 | (tag_name) @_tag_name 7 | (attribute 8 | (attribute_name) @_attr_name 9 | (quoted_attribute_value 10 | (attribute_value) @injection.language))) 11 | (text) @injection.content) 12 | (#eq? @_attr_name "language") 13 | (#match? @_tag_name "code-copy|code-tab")) 14 | 15 | 16 | -------------------------------------------------------------------------------- /.config/nvim/after/queries/html/links.scm: -------------------------------------------------------------------------------- 1 | (element 2 | (start_tag 3 | (tag_name) @_tag (#eq? @_tag "a") 4 | (attribute) +) 5 | _) @link.html 6 | -------------------------------------------------------------------------------- /.config/nvim/after/queries/http/injections.scm: -------------------------------------------------------------------------------- 1 | ; extends 2 | 3 | (document 4 | (section 5 | (request 6 | (header 7 | (header_entity) @_header 8 | (value) @_value) 9 | (#eq? @_value "text/html") 10 | (#match? @_header "^[cC][oO][nN][tT][eE][nN][tT]-[tT][yY][pP][eE]$") 11 | (xml_body) @injection.content 12 | (#set! injection.language "html")))) 13 | 14 | -------------------------------------------------------------------------------- /.config/nvim/after/queries/markdown/injections.scm: -------------------------------------------------------------------------------- 1 | ; extends 2 | ((inline) @ninja (#match? @ninja "\\{\\%.*\\%\\}")) 3 | 4 | -------------------------------------------------------------------------------- /.config/nvim/after/queries/markdown/link_reference_definitions.scm: -------------------------------------------------------------------------------- 1 | (link_reference_definition 2 | (link_label) 3 | (link_destination)) @ref 4 | 5 | -------------------------------------------------------------------------------- /.config/nvim/after/queries/markdown_inline/images.scm: -------------------------------------------------------------------------------- 1 | (image 2 | (image_description) @image.markdown.alt 3 | (link_destination) @image.markdown.src) @image.markdown 4 | -------------------------------------------------------------------------------- /.config/nvim/after/queries/markdown_inline/links.scm: -------------------------------------------------------------------------------- 1 | (inline_link) @link.markdown 2 | -------------------------------------------------------------------------------- /.config/nvim/after/queries/markdown_inline/toggle_links_ref.scm: -------------------------------------------------------------------------------- 1 | [ 2 | (inline_link (link_text) (link_destination)) @inline 3 | (full_reference_link (link_text) (link_label)) @reference 4 | ] 5 | -------------------------------------------------------------------------------- /.config/nvim/after/queries/typescript/custom_elements.scm: -------------------------------------------------------------------------------- 1 | ; ; Defined by customElements.define call 2 | ; (call_expression 3 | ; (member_expression 4 | ; (identifier) @namespace 5 | ; (property_identifier) @method) 6 | ; (arguments 7 | ; (string) @tag_name 8 | ; (identifier) @class_name) 9 | ; (#eq? @namespace "customElements") 10 | ; (#eq? @method "define") 11 | ; (#set! "kind" "define")) 12 | ; 13 | ; ; Defined by @customElement decorator 14 | ; ((decorator 15 | ; (call_expression 16 | ; (identifier) @decorator 17 | ; (arguments 18 | ; (string) @tag_name)) 19 | ; (#eq? @decorator "customElement")) 20 | ; (class_declaration (type_identifier) @class_name) 21 | ; (#set! "kind" "decorator")) 22 | 23 | ; imperative define call 24 | (call_expression 25 | function: (member_expression 26 | object: (identifier) 27 | property: (property_identifier)) 28 | arguments: (arguments 29 | (string) @tag_name 30 | (identifier) @class_name) 31 | (#eq? object "customElements") 32 | (#eq? property "define") 33 | (#set! "kind" "define")) 34 | 35 | ; exported decorated class 36 | (export_statement 37 | decorator: (decorator 38 | (call_expression 39 | function: (identifier) 40 | arguments: (arguments (string) @tag_name)) 41 | (#eq? function "customElement")) 42 | (class_declaration 43 | name: (type_identifier) @class_name) 44 | (#set! "kind" "exported")) 45 | 46 | ; local decorated class 47 | (class_declaration 48 | decorator: (decorator 49 | (call_expression 50 | function: (identifier) 51 | arguments: (arguments (string) @tag_name))) 52 | name: (type_identifier) @class_name 53 | (#eq? function "customElement") 54 | (#set! "kind" "local")) 55 | 56 | -------------------------------------------------------------------------------- /.config/nvim/headers/16/happycultist.sh: -------------------------------------------------------------------------------- 1 | printf "\e[49m \e[38;2;48;32;32;49m▄▄\e[38;2;129;129;129;48;2;48;32;32m▄\e[38;2;153;153;153;48;2;48;32;32m▄\e[48;2;48;32;32m \e[49m \e[m 2 | \e[49m \e[38;2;48;32;32;49m▄\e[38;2;129;129;129;48;2;48;32;32m▄\e[38;2;153;153;153;48;2;129;129;129m▄▄\e[48;2;153;153;153m \e[38;2;129;129;129;48;2;48;32;32m▄\e[38;2;48;32;32;49m▄\e[49m \e[m 3 | \e[49m \e[48;2;48;32;32m \e[38;2;153;153;153;48;2;129;129;129m▄\e[48;2;153;153;153m \e[38;2;129;129;129;48;2;48;32;32m▄\e[38;2;48;32;32;49m▄\e[49m \e[m 4 | \e[49m \e[48;2;48;32;32m \e[48;2;129;129;129m \e[48;2;153;153;153m \e[48;2;89;113;121m \e[38;2;48;32;32;48;2;89;113;121m▄\e[38;2;89;113;121;48;2;153;153;153m▄\e[38;2;48;32;32;48;2;89;113;121m▄\e[48;2;89;113;121m \e[48;2;153;153;153m \e[38;2;153;153;153;48;2;129;129;129m▄\e[48;2;48;32;32m \e[49m \e[m 5 | \e[48;2;48;32;32m \e[48;2;129;129;129m \e[48;2;153;153;153m \e[38;2;153;153;153;48;2;89;113;121m▄\e[48;2;153;153;153m \e[38;2;153;153;153;48;2;89;113;121m▄\e[48;2;153;153;153m \e[48;2;129;129;129m \e[48;2;48;32;32m \e[49m \e[m 6 | \e[49;38;2;48;32;32m▀\e[48;2;48;32;32m \e[48;2;129;129;129m \e[38;2;129;129;129;48;2;153;153;153m▄\e[48;2;153;153;153m \e[38;2;129;129;129;48;2;153;153;153m▄\e[48;2;129;129;129m \e[48;2;48;32;32m \e[49m \e[m 7 | \e[49m \e[49;38;2;48;32;32m▀\e[38;2;48;32;32;48;2;129;129;129m▄▄▄▄▄▄▄▄▄\e[49;38;2;48;32;32m▀\e[49m \e[m 8 | \e[49m \e[38;2;48;32;32;49m▄\e[38;2;153;153;153;48;2;48;32;32m▄\e[48;2;153;153;153m \e[38;2;153;153;153;48;2;48;32;32m▄\e[38;2;48;32;32;48;2;89;113;121m▄\e[48;2;48;32;32m \e[38;2;48;32;32;48;2;89;113;121m▄\e[38;2;153;153;153;48;2;48;32;32m▄\e[38;2;129;129;129;48;2;153;153;153m▄\e[38;2;129;129;129;48;2;48;32;32m▄\e[38;2;48;32;32;49m▄\e[49m \e[m 9 | \e[48;2;48;32;32m \e[38;2;89;113;121;48;2;129;129;129m▄\e[38;2;105;137;137;48;2;129;129;129m▄\e[48;2;48;32;32m \e[48;2;153;153;153m \e[48;2;48;32;32m \e[48;2;153;153;153m \e[48;2;48;32;32m \e[38;2;89;113;121;48;2;242;242;242m▄\e[48;2;105;137;137m \e[48;2;48;32;32m \e[49m \e[m 10 | \e[49;38;2;48;32;32m▀\e[38;2;48;32;32;48;2;105;137;137m▄▄\e[38;2;48;32;32;48;2;129;129;129m▄\e[48;2;153;153;153m \e[38;2;72;40;153;48;2;153;153;153m▄\e[38;2;48;32;32;48;2;72;40;153m▄▄\e[48;2;48;32;32m \e[49m \e[m 11 | \e[49m \e[38;2;72;40;153;48;2;48;32;32m▄\e[48;2;48;32;32m \e[48;2;129;129;129m \e[38;2;129;129;129;48;2;153;153;153m▄\e[48;2;129;129;129m \e[48;2;48;32;32m \e[48;2;72;40;153m \e[48;2;48;32;32m \e[48;2;129;129;129m \e[48;2;48;32;32m \e[49m \e[m 12 | \e[49;38;2;72;40;153m▀\e[38;2;48;32;32;48;2;72;40;153m▄\e[38;2;72;40;153;48;2;48;32;32m▄\e[38;2;48;32;32;48;2;153;153;153m▄\e[48;2;48;32;32m \e[38;2;72;40;153;48;2;48;32;32m▄\e[48;2;72;40;153m \e[38;2;72;40;153;48;2;48;32;32m▄\e[48;2;48;32;32m \e[38;2;48;32;32;48;2;129;129;129m▄\e[38;2;72;40;153;48;2;48;32;32m▄\e[48;2;72;40;153m \e[49;38;2;72;40;153m▀▀\e[m 13 | "; 14 | -------------------------------------------------------------------------------- /.config/nvim/headers/16/mrsaturn.sh: -------------------------------------------------------------------------------- 1 | printf "\e[49m \e[m 2 | \e[49m \e[38;2;48;32;32;49m▄\e[49m \e[m 3 | \e[49m \e[38;2;242;0;97;49m▄\e[48;2;242;0;97m \e[38;2;242;0;97;49m▄\e[48;2;48;32;32m \e[49m \e[m 4 | \e[49m \e[48;2;48;32;32m \e[49;38;2;242;0;97m▀\e[48;2;242;0;97m \e[49;38;2;242;0;97m▀\e[49m \e[m 5 | \e[49m \e[38;2;48;32;32;49m▄\e[38;2;242;145;145;48;2;48;32;32m▄\e[38;2;242;178;145;48;2;48;32;32m▄▄▄▄\e[38;2;242;145;145;48;2;48;32;32m▄\e[38;2;48;32;32;49m▄\e[49m \e[m 6 | \e[49m \e[38;2;48;32;32;49m▄\e[38;2;242;178;145;48;2;48;32;32m▄\e[38;2;48;32;32;48;2;242;178;145m▄▄\e[48;2;242;178;145m \e[38;2;48;32;32;48;2;242;178;145m▄\e[38;2;48;32;32;48;2;242;145;145m▄\e[38;2;242;145;145;48;2;48;32;32m▄\e[38;2;48;32;32;49m▄\e[49m \e[m 7 | \e[49m \e[38;2;48;32;32;49m▄\e[38;2;242;145;145;48;2;48;32;32m▄\e[48;2;242;178;145m \e[38;2;48;32;32;48;2;242;178;145m▄\e[48;2;242;178;145m \e[38;2;48;32;32;48;2;242;178;145m▄\e[48;2;242;178;145m \e[38;2;242;145;145;48;2;48;32;32m▄\e[38;2;48;32;32;49m▄\e[49m \e[m 8 | \e[49;38;2;48;32;32m▀\e[48;2;48;32;32m \e[38;2;242;145;145;48;2;48;32;32m▄\e[48;2;242;178;145m \e[38;2;48;32;32;48;2;242;178;145m▄\e[48;2;242;178;145m \e[38;2;48;32;32;48;2;242;178;145m▄\e[48;2;242;178;145m \e[38;2;48;32;32;48;2;242;145;145m▄\e[48;2;48;32;32m \e[38;2;48;32;32;49m▄\e[m 9 | \e[38;2;48;32;32;49m▄\e[48;2;48;32;32m \e[38;2;242;145;145;48;2;48;32;32m▄\e[48;2;242;178;145m \e[48;2;48;32;32m \e[48;2;242;178;145m \e[48;2;48;32;32m \e[48;2;242;178;145m \e[38;2;48;32;32;48;2;242;145;145m▄\e[48;2;48;32;32m \e[49m \e[m 10 | \e[49m \e[48;2;48;32;32m \e[48;2;242;145;145m \e[48;2;242;178;145m \e[38;2;242;178;145;48;2;242;145;145m▄\e[38;2;242;145;145;48;2;48;32;32m▄\e[38;2;48;32;32;48;2;242;145;145m▄▄▄\e[38;2;242;145;145;48;2;48;32;32m▄\e[38;2;242;178;145;48;2;242;145;145m▄\e[48;2;242;178;145m \e[38;2;242;145;145;48;2;242;178;145m▄\e[48;2;242;145;145m \e[48;2;48;32;32m \e[49;38;2;48;32;32m▀\e[m 11 | \e[38;2;48;32;32;49m▄\e[38;2;242;178;145;48;2;48;32;32m▄\e[48;2;242;145;145m \e[38;2;48;32;32;48;2;242;145;145m▄▄▄▄▄▄▄\e[48;2;242;145;145m \e[48;2;48;32;32m \e[49m \e[m 12 | \e[49;38;2;80;113;97m▀\e[38;2;80;113;97;48;2;48;32;32m▄▄▄\e[48;2;80;113;97m \e[38;2;80;113;97;48;2;48;32;32m▄\e[38;2;48;32;32;48;2;242;178;145m▄▄\e[38;2;48;32;32;48;2;242;145;145m▄\e[38;2;80;113;97;48;2;48;32;32m▄\e[m 13 | "; 14 | -------------------------------------------------------------------------------- /.config/nvim/headers/16/ness.sleepy.sh: -------------------------------------------------------------------------------- 1 | printf "\e[49m \e[38;2;48;32;32;49m▄\e[49m \e[38;2;48;32;32;49m▄\e[49m \e[38;2;48;32;32;49m▄\e[49m \e[m 2 | \e[49m \e[38;2;48;32;32;49m▄\e[49m \e[48;2;48;32;32m \e[38;2;48;32;32;49m▄\e[48;2;48;32;32m \e[38;2;48;32;32;49m▄\e[49;38;2;48;32;32m▀\e[49m \e[m 3 | \e[49m \e[48;2;48;32;32m \e[49m \e[m 4 | \e[49m \e[38;2;48;32;32;49m▄\e[48;2;48;32;32m \e[38;2;202;153;121;48;2;48;32;32m▄\e[38;2;242;178;145;48;2;202;153;121m▄\e[38;2;242;178;145;48;2;48;32;32m▄\e[38;2;242;178;145;48;2;202;153;121m▄\e[38;2;202;153;121;48;2;48;32;32m▄\e[38;2;242;178;145;48;2;48;32;32m▄\e[38;2;242;178;145;48;2;202;153;121m▄\e[48;2;48;32;32m \e[49m \e[m 5 | \e[49m \e[48;2;48;32;32m \e[48;2;202;153;121m \e[48;2;242;178;145m \e[38;2;48;32;32;48;2;80;113;97m▄\e[48;2;242;178;145m \e[38;2;48;32;32;48;2;80;113;97m▄\e[48;2;242;178;145m \e[38;2;242;178;145;48;2;48;32;32m▄\e[48;2;242;178;145m \e[48;2;48;32;32m \e[49m \e[m 6 | \e[49m \e[48;2;48;32;32m \e[48;2;242;145;145m \e[48;2;242;178;145m \e[48;2;242;145;145m \e[38;2;48;32;32;48;2;202;153;121m▄\e[49;38;2;48;32;32m▀\e[49m \e[m 7 | \e[49m \e[49;38;2;48;32;32m▀\e[38;2;48;32;32;48;2;242;145;145m▄\e[38;2;242;178;145;48;2;80;113;97m▄\e[38;2;242;178;145;48;2;48;32;32m▄▄\e[38;2;202;153;121;48;2;242;178;145m▄▄\e[38;2;48;32;32;48;2;242;145;145m▄\e[49;38;2;48;32;32m▀\e[49m \e[m 8 | \e[49m \e[38;2;48;32;32;49m▄\e[38;2;242;242;242;48;2;48;32;32m▄\e[38;2;113;113;242;48;2;48;32;32m▄\e[38;2;113;113;242;48;2;202;153;121m▄\e[38;2;113;113;242;48;2;48;32;32m▄\e[38;2;242;242;242;48;2;48;32;32m▄\e[38;2;48;32;32;49m▄\e[49m \e[m 9 | \e[49m \e[38;2;48;32;32;49m▄▄\e[38;2;113;113;242;48;2;48;32;32m▄\e[48;2;242;242;242m \e[38;2;48;32;32;48;2;113;113;242m▄\e[38;2;242;242;242;48;2;48;32;32m▄\e[38;2;242;178;145;48;2;48;32;32m▄\e[48;2;242;242;242m \e[48;2;113;113;242m \e[48;2;48;32;32m \e[49m \e[m 10 | \e[49m \e[48;2;48;32;32m \e[48;2;113;113;242m \e[38;2;113;113;242;48;2;242;242;242m▄\e[48;2;48;32;32m \e[38;2;48;32;32;48;2;242;242;242m▄\e[48;2;48;32;32m \e[38;2;48;32;32;48;2;242;178;145m▄▄\e[38;2;48;32;32;48;2;113;113;242m▄\e[38;2;242;242;242;48;2;48;32;32m▄\e[38;2;113;113;242;48;2;48;32;32m▄\e[38;2;242;242;242;48;2;48;32;32m▄\e[38;2;48;32;32;49m▄\e[49m \e[m 11 | \e[49m \e[49;38;2;48;32;32m▀\e[38;2;48;32;32;48;2;113;113;242m▄\e[48;2;113;113;242m \e[48;2;242;178;145m \e[38;2;48;32;32;48;2;113;113;242m▄\e[38;2;48;32;32;48;2;242;242;242m▄\e[38;2;48;32;32;48;2;113;113;242m▄\e[38;2;48;32;32;48;2;242;242;242m▄\e[38;2;48;32;32;48;2;113;113;242m▄\e[38;2;113;113;242;48;2;242;242;242m▄\e[48;2;242;178;145m \e[38;2;113;113;242;48;2;242;178;145m▄\e[48;2;48;32;32m \e[49m \e[m 12 | \e[49;38;2;80;113;97m▀▀\e[38;2;80;113;97;48;2;48;32;32m▄\e[38;2;48;32;32;48;2;113;113;242m▄▄\e[38;2;80;113;97;48;2;48;32;32m▄\e[48;2;80;113;97m \e[38;2;80;113;97;48;2;48;32;32m▄\e[38;2;48;32;32;48;2;242;242;242m▄\e[38;2;48;32;32;48;2;113;113;242m▄\e[38;2;80;113;97;48;2;48;32;32m▄\e[48;2;80;113;97m \e[49;38;2;80;113;97m▀▀\e[m 13 | "; 14 | -------------------------------------------------------------------------------- /.config/nvim/headers/16/present.sh: -------------------------------------------------------------------------------- 1 | printf "\e[49m \e[48;2;48;32;32m \e[38;2;242;145;0;48;2;48;32;32m▄\e[38;2;48;32;32;49m▄▄▄▄\e[38;2;242;145;0;48;2;48;32;32m▄\e[38;2;242;48;64;48;2;48;32;32m▄\e[48;2;48;32;32m \e[49m \e[m 2 | \e[49m \e[38;2;48;32;32;49m▄▄\e[38;2;242;250;250;48;2;48;32;32m▄\e[48;2;48;32;32m \e[38;2;48;32;32;48;2;242;48;64m▄▄\e[48;2;48;32;32m \e[38;2;48;32;32;48;2;242;48;64m▄▄\e[48;2;48;32;32m \e[38;2;145;153;97;48;2;48;32;32m▄\e[38;2;242;250;250;48;2;48;32;32m▄\e[38;2;48;32;32;49m▄▄\e[49m \e[m 3 | \e[48;2;48;32;32m \e[38;2;48;32;32;48;2;242;250;250m▄▄\e[38;2;242;48;64;48;2;48;32;32m▄▄\e[38;2;48;32;32;48;2;242;48;64m▄▄\e[38;2;145;153;97;48;2;48;32;32m▄\e[38;2;48;32;32;48;2;242;48;64m▄\e[48;2;48;32;32m \e[48;2;242;48;64m \e[38;2;242;48;64;48;2;48;32;32m▄▄\e[38;2;48;32;32;48;2;145;153;97m▄\e[38;2;48;32;32;48;2;242;250;250m▄\e[48;2;48;32;32m \e[m 4 | \e[48;2;48;32;32m \e[38;2;145;153;97;48;2;242;250;250m▄\e[48;2;48;32;32m \e[38;2;242;48;64;48;2;48;32;32m▄\e[48;2;48;32;32m \e[38;2;48;32;32;48;2;145;153;97m▄\e[38;2;242;250;250;48;2;145;153;97m▄\e[48;2;242;250;250m \e[38;2;48;32;32;48;2;242;250;250m▄\e[48;2;48;32;32m \e[38;2;242;48;64;48;2;48;32;32m▄\e[48;2;48;32;32m \e[38;2;242;250;250;48;2;145;153;97m▄\e[48;2;48;32;32m \e[m 5 | \e[48;2;48;32;32m \e[38;2;145;153;97;48;2;242;250;250m▄\e[48;2;48;32;32m \e[48;2;242;48;64m \e[48;2;48;32;32m \e[48;2;145;153;97m \e[38;2;242;250;250;48;2;48;32;32m▄\e[48;2;48;32;32m \e[38;2;145;153;97;48;2;48;32;32m▄\e[48;2;145;153;97m \e[38;2;242;250;250;48;2;145;153;97m▄\e[48;2;48;32;32m \e[48;2;242;48;64m \e[48;2;48;32;32m \e[38;2;242;250;250;48;2;145;153;97m▄\e[48;2;48;32;32m \e[m 6 | \e[48;2;48;32;32m \e[38;2;145;153;97;48;2;242;250;250m▄\e[48;2;48;32;32m \e[48;2;242;48;64m \e[48;2;48;32;32m \e[38;2;145;153;97;48;2;242;250;250m▄\e[38;2;242;250;250;48;2;145;153;97m▄\e[48;2;48;32;32m \e[38;2;145;153;97;48;2;242;250;250m▄▄\e[38;2;242;250;250;48;2;145;153;97m▄\e[48;2;48;32;32m \e[48;2;242;48;64m \e[48;2;48;32;32m \e[38;2;242;250;250;48;2;145;153;97m▄\e[48;2;48;32;32m \e[m 7 | \e[48;2;145;153;97m \e[38;2;145;153;97;48;2;48;32;32m▄▄\e[38;2;48;32;32;48;2;194;129;97m▄\e[48;2;48;32;32m \e[38;2;145;153;97;48;2;242;250;250m▄\e[38;2;242;250;250;48;2;145;153;97m▄\e[48;2;48;32;32m \e[38;2;145;153;97;48;2;242;250;250m▄▄\e[38;2;242;250;250;48;2;145;153;97m▄\e[48;2;48;32;32m \e[38;2;48;32;32;48;2;242;48;64m▄\e[38;2;145;153;97;48;2;48;32;32m▄▄\e[48;2;145;153;97m \e[m 8 | \e[49m \e[49;38;2;145;153;97m▀\e[48;2;145;153;97m \e[38;2;145;153;97;48;2;48;32;32m▄▄\e[38;2;48;32;32;48;2;145;153;97m▄\e[48;2;48;32;32m \e[38;2;48;32;32;48;2;242;250;250m▄\e[38;2;145;153;97;48;2;48;32;32m▄▄\e[48;2;145;153;97m \e[49;38;2;145;153;97m▀▀\e[49m \e[m 9 | "; 10 | -------------------------------------------------------------------------------- /.config/nvim/headers/tall/shiviti.sh: -------------------------------------------------------------------------------- 1 | printf "\ 2 | ░▓████████████████████████████████████████████████████████▓░ 3 | ░▓█▓░░░░▒█░░░▒▒▒▒▒▒▒▒▒▒█▒░░░░▒█░░░░░▓█░░░░░█▓░░░░█▒░░░░▓██▓░ 4 | ░▓█▓░▓▓▓░▓░░▒▓▓▓▓▓▓▓▓▒░▓▒░▒▓▒░█░▒▒▒░▒█░▓▓▓░█▒░▒▒░█▒░▒▒░░██▓░ 5 | ░▓█▓░░░░░█▒░░░░░░░░░░░░▓▒░▒▒▒░█░▒▒▒░▒█░▒▒▒░█▓░▒▒░█▒▒▒▒▒▒██▓░ 6 | ░▓██▒▒▒░░▓▒░░░░░░░░░░░░▓█▒▒▒░░█▓▒▒░░▓█▒▒▒░░█▓░░▒▒█▓▒░░░▒██▓░ 7 | ░▓█████▒░▓██░░██████▓░░▓████░░████▒░▒████░░█▓░███████░░▓██▓░ 8 | ░▓█████▒▓███░░███████░░▓████▒▓████▒░▒████▒░▒▓░██████▓░░███▓░ 9 | ░▓███████░░░░░███████░░▓██████████▒░▒████▒░░░░░░░░░░░░▒███▓░ 10 | ░▓███████░▓▓▒░███████░░▓██████████▓░▒████▓░░▓▓▓▓████░░████▓░ 11 | ░▓███████░░░░▒███████░▒████████████████████▒▒░░░░░░▒▓█████▓░ 12 | ░▓█████▒▓▓█████████████████████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██████▓░ 13 | ░▓█████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓████▓░ 14 | ░▓█████░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░▒████▓░ 15 | ░▓█████▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒████▓░ 16 | ░▓██████████████████████████████▓█████████████████▒░░▒████▓░ 17 | ░▓███████░░██████████████▒░░░░█▓░░░░▒█████████████▓░░▒████▓░ 18 | ░▓██████▓░░██████████████▒▒▓▒░▓▓░▒▒░▒█████████████▓░░▒████▓░ 19 | ░▓███████░░███████████████▓▓░░▓█▓▓▒░▒██████████████░░▒████▓░ 20 | ░▓███████░▓█████████████████▒▒████▓▒▓█████████▒████░░▓████▓░ 21 | ░▓██████████████████████████████████████████░░░███████████▓░ 22 | ░▓██▓░░░░░▒█▒░░▒▒▒▒▒▒▒▒▒██░░▒▒▒▒▒██░░░░░░▒██░░░░░░░░░░░▓██▓░ 23 | ░▓██▓░▓▓▓▒░█▒░▓▓▓▓▓▓▓▓▓░▒█░▒▓▓▓▓░▓█░▓▓▓▓▓░▓█░▒▓▓▓▓▓▓▓▓▓░██▓░ 24 | ░▓██▓░░░░░░█▒░░░░░░░░░░░▒█░░░░░░░▓█░░░░░░░▓█░░░░░░░░░░░░██▓░ 25 | ░▓███▒▒▒░░░█▓▒░░▒░░░░░░░▒█▒▒▒░░░░▓█▓▒▒▒▒░░▓█▓▒▒▒▒▒▒▒▒░░░██▓░ 26 | ░▓██████▓░░█████████░░░████████░░▒██████▒░███████████▒░░██▓░ 27 | ░▓███████░▒█████████░░▒████████▒░▒██████▒░███████████▒░░██▓░ 28 | ░▓██████████████████░░▒██▓░░░░░▓░░█▓░░░░░░▓██████▓░░░░░░██▓░ 29 | ░▓██████████████████░░▒██▒░░░░░█░░█▒░▓▓▓▓░▓██████▓░░░░░▒██▓░ 30 | ░▓██████████████████▒▓███▓▒▒▒▒▓█▒▓█▓▒▒▒▒▒▒███████▓▓▓▓▓▓███▓░ 31 | ░▓████████████████████████████████████████████████████████▓░ 32 | ░▓██▓░░░░░░░░░░░░█▒░░░░░▓▓░░░░░███▓░░░░░▒██▒░░░░░░░░░░░▓██▓░ 33 | ░▓██▓░░░░░░░░░░░░█▒▒▓▓▓▒▒▓░░░░░██░▒▓▓▓▒▓░▒█▒░░░░░░░░░░░░██▓░ 34 | ░▓██▓░░░░░░░░░░░░▓▒░░░░░▓█░░░░░▓░░░▒▒▒▒▒░░█▒░░░░░░░░░░░░██▓░ 35 | ░▓███▓▒▒▒▒▒▒▒░░░▓██▒▒▒░░▓█▒▒░░░░░▓████▓░░░█▓░░░▒▓▓▓▓▓░░░██▓░ 36 | ░▓███████████░░▒██████▒░▒████░░▓███████▓░▒███░░██████▒░░██▓░ 37 | ░▓███████████░░▒██████░░▓████░░████████▓░▒███░░██████▒░░██▓░ 38 | ░▓███████████░░▒████████████▓░░█░░░░░░░░░▒█░░░░██████▒░░██▓░ 39 | ░▓███████████░░▒████████████▒░░█░░░░░░░░░▒█░▓▓░██████▒░░██▓░ 40 | ░▓███████████▒▓█████████████▒▓██▒▒▓▓▓▓▓▒▓██▒▒▒▓██████▓▓███▓░ 41 | ░▓████████████████████████████████████████████████████████▓░ 42 | ░▓████████████████████████████████████████████████████████▓░ 43 | "; 44 | -------------------------------------------------------------------------------- /.config/nvim/headers/wide/shiviti.sh: -------------------------------------------------------------------------------- 1 | printf "\ 2 | ████████████████████████████████████████████████████████████████████████████████████████████████████████████████ 3 | ████████████████████████████████████████████████████████████████████████████████████████████████████████████████ 4 | █████▒▓▓████████████████████████████████████████████████████████████████████████████████████████████████████████ 5 | █████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓█████▓░░░░▒█░░░▒▒▒▒▒▒▒▒▒▒█▒░░░░▒█░░░░░▓█░░░░░█▓░░░░█▒░░░░▓██ 6 | █████░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░▒█████▓░▓▓▓░▓░░▒▓▓▓▓▓▓▓▓▒░▓▒░▒▓▒░█░▒▒▒░▒█░▓▓▓░█▒░▒▒░█▒░▒▒░░██ 7 | █████▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒█████▓░░░░░█▒░░░░░░░░░░░░▓▒░▒▒▒░█░▒▒▒░▒█░▒▒▒░█▓░▒▒░█▒▒▒▒▒▒██ 8 | ████████████████████████████████████████████████▒░░▒██████▒▒▒░░▓▒░░░░░░░░░░░░▓█▒▒▒░░█▓▒▒░░▓█▒▒▒░░█▓░░▒▒█▓▒░░░▒██ 9 | ███████░░██████████████▒░░░░█▓░░░░▒█████████████▓░░▒█████████▒░▓██░░██████▓░░▓████░░████▒░▒████░░█▓░███████░░▓██ 10 | ██████▓░░██████████████▒▒▓▒░▓▓░▒▒░▒█████████████▓░░▒█████████▒▓███░░███████░░▓████▒▓████▒░▒████▒░▒▓░██████▓░░███ 11 | ███████░░███████████████▓▓░░▓█▓▓▒░▒██████████████░░▒███████████░░░░░███████░░▓██████████▒░▒████▒░░░░░░░░░░░░▒███ 12 | ███████░▓█████████████████▒▒████▓▒▓██████████████░░▓███████████░▓▓▒░███████░░▓██████████▓░▒████▓░░▓▓▓▓████░░████ 13 | ███████████████████████████████████████████████████████████████░░░░▒███████░▒████████████████████▒▒░░░░░░▒▓█████ 14 | ████████████████████████████████████████████████████████████████████████████████████████████████████████████████ 15 | ████████████████████████████████████████████████████████████████████████████████████████████████████▒███████████ 16 | ██████████████████████████████████████████████████████████████████████████████████████████████████░░░███████████ 17 | ██▓░░░░░░░░░░░░█▒░░░░░▓▓░░░░░███▓░░░░░▒██▒░░░░░░░░░░░▓████▓░░░░░▒█▒░░▒▒▒▒▒▒▒▒▒██░░▒▒▒▒▒██░░░░░░▒██░░░░░░░░░░░▓██ 18 | ██▓░░░░░░░░░░░░█▒▒▓▓▓▒▒▓░░░░░██░▒▓▓▓▒▓░▒█▒░░░░░░░░░░░░████▓░▓▓▓▒░█▒░▓▓▓▓▓▓▓▓▓░▒█░▒▓▓▓▓░▓█░▓▓▓▓▓░▓█░▒▓▓▓▓▓▓▓▓▓░██ 19 | ██▓░░░░░░░░░░░░▓▒░░░░░▓█░░░░░▓░░░▒▒▒▒▒░░█▒░░░░░░░░░░░░████▓░░░░░░█▒░░░░░░░░░░░▒█░░░░░░░▓█░░░░░░░▓█░░░░░░░░░░░░██ 20 | ███▓▒▒▒▒▒▒▒░░░▓██▒▒▒░░▓█▒▒░░░░░▓████▓░░░█▓░░░▒▓▓▓▓▓░░░█████▒▒▒░░░█▓▒░░▒░░░░░░░▒█▒▒▒░░░░▓█▓▒▒▒▒░░▓█▓▒▒▒▒▒▒▒▒░░░██ 21 | ███████████░░▒██████▒░▒████░░▓███████▓░▒███░░██████▒░░████████▓░░█████████░░░████████░░▒██████▒░███████████▒░░██ 22 | ███████████░░▒██████░░▓████░░████████▓░▒███░░██████▒░░█████████░▒█████████░░▒████████▒░▒██████▒░███████████▒░░██ 23 | ███████████░░▒████████████▓░░█░░░░░░░░░▒█░░░░██████▒░░████████████████████░░▒██▓░░░░░▓░░█▓░░░░░░▓██████▓░░░░░░██ 24 | ███████████░░▒████████████▒░░█░░░░░░░░░▒█░▓▓░██████▒░░████████████████████░░▒██▒░░░░░█░░█▒░▓▓▓▓░▓██████▓░░░░░▒██ 25 | ███████████▒▓█████████████▒▓██▒▒▓▓▓▓▓▒▓██▒▒▒▓██████▓▓█████████████████████▒▓███▓▒▒▒▒▓█▒▓█▓▒▒▒▒▒▒███████▓▓▓▓▓▓███ 26 | ████████████████████████████████████████████████████████████████████████████████████████████████████████████████ 27 | ████████████████████████████████████████████████████████████████████████████████████████████████████████████████ 28 | "; 29 | -------------------------------------------------------------------------------- /.config/nvim/init.lua: -------------------------------------------------------------------------------- 1 | -- globals 2 | command = vim.api.nvim_create_user_command 3 | ag = vim.api.nvim_create_augroup 4 | au = vim.api.nvim_create_autocmd 5 | 6 | require 'options' 7 | require 'commands' 8 | require 'aucmds' 9 | require 'mappings' 10 | 11 | require 'lazy'.setup('plugins', { 12 | dev = { 13 | path = '~/Developer', 14 | patterns = { 'bennypowers' }, 15 | fallback = true, 16 | } 17 | }) 18 | 19 | vim.cmd.colorscheme'catppuccin' 20 | -------------------------------------------------------------------------------- /.config/nvim/lsp/bashls.lua: -------------------------------------------------------------------------------- 1 | ---@type vim.lsp.ClientConfig 2 | return { 3 | cmd = { 'bash-language-server', 'start' }, 4 | filetypes = { 'bash', 'sh' }, 5 | root_markers = { '.git' }, 6 | settings = { 7 | bashIde = { 8 | -- Glob pattern for finding and parsing shell script files in the workspace. 9 | -- Used by the background analysis features across files. 10 | 11 | -- Prevent recursive scanning which will cause issues when opening a file 12 | -- directly in the home directory (e.g. ~/foo.sh). 13 | -- 14 | -- Default upstream pattern is "**/*@(.sh|.inc|.bash|.command)". 15 | globPattern = vim.env.GLOB_PATTERN or '*@(.sh|.inc|.bash|.command)', 16 | }, 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /.config/nvim/lsp/cssls.lua: -------------------------------------------------------------------------------- 1 | local cfg = require'lsp' 2 | 3 | ---https://github.com/hrsh7th/vscode-langservers-extracted 4 | --- 5 | ---`css-languageserver` can be installed via `npm`: 6 | --- 7 | ---```sh 8 | ---npm i -g vscode-langservers-extracted 9 | ---``` 10 | --- 11 | ---Neovim does not currently include built-in snippets. `vscode-css-language-server` only provides completions when snippet support is enabled. To enable completion, 12 | ---install a snippet plugin and add the following override to your language client capabilities during setup. 13 | --- 14 | ---```lua 15 | -----Enable (broadcasting) snippet capability for completion 16 | ---local capabilities = vim.lsp.protocol.make_client_capabilities() 17 | ---capabilities.textDocument.completion.completionItem.snippetSupport = true 18 | --- 19 | ---require'lspconfig'.cssls.setup { 20 | --- capabilities = capabilities, 21 | ---} 22 | ---``` 23 | ---@type vim.lsp.ClientConfig 24 | return { 25 | cmd = { 'vscode-css-language-server', '--stdio' }, 26 | filetypes = { 'css', 'scss', 'less' }, 27 | root_markers = { 'package.json', '.git' }, 28 | -- init_options = { 29 | -- provideFormatter = false, 30 | -- }, 31 | capabilities = { 32 | textDocument = { 33 | completion = { 34 | completionItem = { 35 | snippetSupport = true 36 | }, 37 | }, 38 | }, 39 | }, 40 | settings = { 41 | css = { validate = true, lint = false }, 42 | scss = { validate = true, lint = false }, 43 | less = { validate = true, lint = false }, 44 | }, 45 | on_attach = cfg.on_attach, 46 | } 47 | -------------------------------------------------------------------------------- /.config/nvim/lsp/custom_elements_ls.lua: -------------------------------------------------------------------------------- 1 | ---https://github.com/Matsuuu/custom-elements-language-server 2 | --- 3 | ---`custom-elements-languageserver` depends on `typescript`. Both packages can be installed via `npm`: 4 | --- 5 | ---```sh 6 | ---npm install -g typescript custom-elements-languageserver 7 | ---``` 8 | --- 9 | ---To configure typescript language server, add a 10 | ---[`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) or 11 | ---[`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig) to the root of your 12 | ---project. 13 | --- 14 | ---Here's an example that disables type checking in JavaScript files. 15 | ---```json 16 | ---{ 17 | --- "compilerOptions": { 18 | --- "module": "commonjs", 19 | --- "target": "es6", 20 | --- "checkJs": false 21 | --- }, 22 | --- "exclude": [ 23 | --- "node_modules" 24 | --- ] 25 | ---} 26 | ---``` 27 | ---@type vim.lsp.ClientConfig 28 | return { 29 | init_options = { hostInfo = 'neovim' }, 30 | cmd = { 'custom-elements-languageserver', '--stdio' }, 31 | root_markers = { 'custom-elements.json', 'tsconfig.json', 'package.json', 'jsconfig.json', '.git' }, 32 | filetypes = { 'html' }, 33 | } 34 | -------------------------------------------------------------------------------- /.config/nvim/lsp/denols.lua: -------------------------------------------------------------------------------- 1 | local lsp = vim.lsp 2 | local cfg = require'lsp' 3 | 4 | local function virtual_text_document_handler(uri, res, client) 5 | if not res then 6 | return nil 7 | end 8 | 9 | local lines = vim.split(res.result, '\n') 10 | local bufnr = vim.uri_to_bufnr(uri) 11 | 12 | local current_buf = vim.api.nvim_buf_get_lines(bufnr, 0, -1, false) 13 | if #current_buf ~= 0 then 14 | return nil 15 | end 16 | 17 | vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, lines) 18 | vim.api.nvim_set_option_value('readonly', true, { buf = bufnr }) 19 | vim.api.nvim_set_option_value('modified', false, { buf = bufnr }) 20 | vim.api.nvim_set_option_value('modifiable', false, { buf = bufnr }) 21 | lsp.buf_attach_client(bufnr, client.id) 22 | end 23 | 24 | local function virtual_text_document(uri, client) 25 | local params = { 26 | textDocument = { 27 | uri = uri, 28 | }, 29 | } 30 | local result = client.request_sync('deno/virtualTextDocument', params) 31 | virtual_text_document_handler(uri, result, client) 32 | end 33 | 34 | local function denols_handler(err, result, ctx, config) 35 | if not result or vim.tbl_isempty(result) then 36 | return nil 37 | end 38 | 39 | local client = vim.lsp.get_client_by_id(ctx.client_id) 40 | for _, res in pairs(result) do 41 | local uri = res.uri or res.targetUri 42 | if uri:match '^deno:' then 43 | virtual_text_document(uri, client) 44 | res['uri'] = uri 45 | res['targetUri'] = uri 46 | end 47 | end 48 | 49 | lsp.handlers[ctx.method](err, result, ctx, config) 50 | end 51 | 52 | ---@type vim.lsp.ClientConfig 53 | return { 54 | cmd = { 'deno', 'lsp' }, 55 | filetypes = { 56 | 'typescript' 57 | }, 58 | root_markers = { 'deno.json', 'deno.jsonc', '.git' }, 59 | root_dir = cfg.required_root_markers {'deno.json', 'deno.jsonc'}, 60 | settings = { 61 | deno = { 62 | lint = true, 63 | enable = true, 64 | suggest = { 65 | imports = { 66 | hosts = { 67 | ['https://deno.land'] = true, 68 | }, 69 | }, 70 | }, 71 | }, 72 | }, 73 | handlers = { 74 | ['textDocument/definition'] = denols_handler, 75 | ['textDocument/typeDefinition'] = denols_handler, 76 | ['textDocument/references'] = denols_handler, 77 | }, 78 | } 79 | -------------------------------------------------------------------------------- /.config/nvim/lsp/design_tokens_ls.lua: -------------------------------------------------------------------------------- 1 | local cfg = require'lsp' 2 | 3 | ---@type vim.lsp.ClientConfig 4 | return { 5 | cmd = { 'design-tokens-language-server' }, 6 | root_markers = { '.git' }, 7 | filetypes = { 'css' }, 8 | on_attach = function(client, bufnr) 9 | cfg.on_attach(client, bufnr) 10 | require'document-color'.on_attach(client, bufnr) 11 | end, 12 | } 13 | 14 | -------------------------------------------------------------------------------- /.config/nvim/lsp/emmet_language_server.lua: -------------------------------------------------------------------------------- 1 | ---@type vim.lsp.ClientConfig 2 | return { 3 | cmd = { 'emmet-language-server', '--stdio' }, 4 | root_markers = {'.git'}, 5 | filetypes = { 6 | 'html', 7 | 'htmlangular', 8 | 'htmldjango', 9 | 'css', 10 | 'eruby', 11 | 'javascript', 12 | 'javascriptreact', 13 | 'jinja', 14 | 'less', 15 | 'markdown', 16 | 'njk', 17 | 'nunjucks', 18 | 'pug', 19 | 'sass', 20 | 'scss', 21 | 'scss', 22 | 'svg', 23 | 'typescript', 24 | 'typescriptreact', 25 | 'webc', 26 | }, 27 | } 28 | 29 | -------------------------------------------------------------------------------- /.config/nvim/lsp/fish_lsp.lua: -------------------------------------------------------------------------------- 1 | ---https://github.com/ndonfris/fish-lsp 2 | --- 3 | ---A Language Server Protocol (LSP) tailored for the fish shell. 4 | ---This project aims to enhance the coding experience for fish, 5 | ---by introducing a suite of intelligent features like auto-completion, 6 | ---scope aware symbol analysis, per-token hover generation, and many others. 7 | --- 8 | ---[homepage](https://www.fish-lsp.dev/) 9 | ---@type vim.lsp.ClientConfig 10 | return { 11 | cmd = { 'fish-lsp', 'start' }, 12 | cmd_env = { fish_lsp_show_client_popups = false }, 13 | filetypes = { 'fish' }, 14 | root_markers = { '.git' }, 15 | single_file_support = true, 16 | } 17 | -------------------------------------------------------------------------------- /.config/nvim/lsp/html.lua: -------------------------------------------------------------------------------- 1 | local cfg = require'lsp' 2 | 3 | ---html language server 4 | ---@type vim.lsp.ClientConfig 5 | return { 6 | cmd = { 'vscode-html-language-server', '--stdio' }, 7 | filetypes = { 'html', 'templ', 'njk', 'svg' }, 8 | root_markers = { 'package.json', '.git' }, 9 | single_file_support = true, 10 | init_options = { 11 | provideFormatter = true, 12 | embeddedLanguages = { css = true, javascript = true }, 13 | configurationSection = { 'html', 'css', 'javascript' }, 14 | }, 15 | capabilities = cfg.capabilities({ 16 | documentFormattingProvider = true, 17 | }), 18 | on_attach = cfg.on_attach, 19 | settings = { 20 | html = { 21 | format = { 22 | templating = true, 23 | wrapLineLength = 200, 24 | wrapAttributes = 'force-aligned', 25 | }, 26 | editor = { 27 | formatOnSave = false, 28 | formatOnPaste = true, 29 | formatOnType = false, 30 | }, 31 | hover = { 32 | documentation = true, 33 | references = true, 34 | }, 35 | }, 36 | }, 37 | } 38 | -------------------------------------------------------------------------------- /.config/nvim/lsp/jsonls.lua: -------------------------------------------------------------------------------- 1 | local cfg = require 'lsp' 2 | 3 | ---@type vim.lsp.ClientConfig 4 | return { 5 | on_attach = cfg.on_attach, 6 | cmd = { 'vscode-json-language-server', '--stdio' }, 7 | root_markers = { '.git' }, 8 | filetypes = { 'json', 'jsonc' }, 9 | init_options = { 10 | provideFormatter = true, 11 | }, 12 | settings = { 13 | json = { 14 | format = { enable = true }, 15 | schemas = require 'schemastore'.json.schemas(), 16 | validate = { enable = true }, 17 | }, 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /.config/nvim/lsp/lua_ls.lua: -------------------------------------------------------------------------------- 1 | ---lua language server 2 | ---@type vim.lsp.ClientConfig 3 | return { 4 | root_markers = { 5 | '.luarc.json', 6 | '.luarc.jsonc', 7 | '.luacheckrc', 8 | '.stylua.toml', 9 | 'stylua.toml', 10 | 'selene.toml', 11 | 'selene.yml', 12 | '.git', 13 | }, 14 | cmd = { 'lua-language-server' }, 15 | filetypes = { 'lua' }, 16 | settings = { 17 | autoFixOnSave = true, 18 | Lua = { 19 | format = { 20 | enable = true, 21 | defaultConfig = { 22 | indent_style = 'space', 23 | indent_size = '2', 24 | quote_style = 'single', 25 | align_call_args = true, 26 | align_function_define_params = true, 27 | continuous_assign_statement_align_to_equal_sign = true, 28 | }, 29 | }, 30 | completion = { 31 | autoRequire = false, 32 | callSnippet = 'Replace', 33 | }, 34 | hint = { 35 | enable = true, 36 | }, 37 | telemetry = { 38 | enable = false, -- Do not send telemetry data containing a randomized but unique identifier 39 | }, 40 | globals = { 41 | 'au', 42 | 'bit', 43 | 'ag', 44 | 'command', 45 | 'describe', 46 | 'it', 47 | 'before_each', 48 | 'after_each', 49 | }, 50 | workspace = { 51 | library = { 52 | '/usr/share/nvim/runtime/lua', 53 | '${3rd}/luv/library' 54 | }, 55 | } 56 | }, 57 | }, 58 | } 59 | -------------------------------------------------------------------------------- /.config/nvim/lsp/marksman.lua: -------------------------------------------------------------------------------- 1 | ---markdown marksman language server 2 | ---@type vim.lsp.ClientConfig 3 | return { 4 | cmd = { 'marksman', 'server' }, 5 | filetypes = { 'markdown', 'markdown.mdx' }, 6 | root_markers = { '.marksman.toml', '.git' }, 7 | settings = { 8 | autoFixOnSave = true, 9 | }, 10 | } 11 | -------------------------------------------------------------------------------- /.config/nvim/lsp/rust_analyzer.lua: -------------------------------------------------------------------------------- 1 | local function reload_workspace(bufnr) 2 | local clients = vim.lsp.get_clients({ name = 'rust_analyzer', bufnr = bufnr }) 3 | for _, client in ipairs(clients) do 4 | vim.notify 'Reloading Cargo Workspace' 5 | client:request('rust-analyzer/reloadWorkspace', nil, function(err) 6 | if err then 7 | error(tostring(err)) 8 | end 9 | vim.notify 'Cargo workspace reloaded' 10 | end, 0) 11 | end 12 | end 13 | 14 | ---@type vim.lsp.ClientConfig 15 | return { 16 | cmd = { 'rust-analyzer' }, 17 | filetypes = { 'rust' }, 18 | root_markers = { 'Cargo.toml', 'rust-project.json', '.git' }, 19 | capabilities = { 20 | experimental = { 21 | serverStatusNotification = true, 22 | }, 23 | }, 24 | before_init = function(init_params, config) 25 | -- See https://github.com/rust-lang/rust-analyzer/blob/eb5da56d839ae0a9e9f50774fa3eb78eb0964550/docs/dev/lsp-extensions.md?plain=1#L26 26 | if config.settings and config.settings['rust-analyzer'] then 27 | init_params.initializationOptions = config.settings['rust-analyzer'] 28 | end 29 | end, 30 | commands = { 31 | CargoReload = function() 32 | reload_workspace(0) 33 | end, 34 | }, 35 | } 36 | -------------------------------------------------------------------------------- /.config/nvim/lsp/stylelint_lsp.lua: -------------------------------------------------------------------------------- 1 | local cfg = require'lsp' 2 | 3 | ---stylelint language server 4 | ---@type vim.lsp.ClientConfig 5 | return { 6 | cmd = { 'stylelint-lsp', '--stdio' }, 7 | filetypes = { 8 | 'css', 9 | 'less', 10 | 'scss', 11 | 'sugarss', 12 | 'vue', 13 | 'wxss', 14 | }, 15 | root_markers = { 16 | '.stylelintrc', 17 | '.stylelintrc.cjs', 18 | '.stylelintrc.js', 19 | '.stylelintrc.json', 20 | '.stylelintrc.yaml', 21 | '.stylelintrc.yml', 22 | 'stylelint.config.cjs', 23 | 'stylelint.config.js', 24 | }, 25 | on_attach = cfg.on_attach, 26 | settings = { 27 | stylelintplus = { 28 | autoFixOnFormat = true, 29 | autoFixOnSave = true, 30 | cssInJs = false, 31 | config = { 32 | rules = {}, 33 | }, 34 | }, 35 | }, 36 | } 37 | -------------------------------------------------------------------------------- /.config/nvim/lsp/vtsls.lua: -------------------------------------------------------------------------------- 1 | local cfg = require'lsp' 2 | 3 | ---https://github.com/yioneko/vtsls 4 | --- 5 | ---`vtsls` can be installed with npm: 6 | ---```sh 7 | ---npm install -g @vtsls/language-server 8 | ---``` 9 | --- 10 | ---To configure a TypeScript project, add a 11 | ---[`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) 12 | ---or [`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig) to 13 | ---the root of your project. 14 | ---@type vim.lsp.ClientConfig 15 | return { 16 | name = 'TypeScript', 17 | cmd = { 'vtsls', '--stdio' }, 18 | root_markers = {'tsconfig.json', 'package.json', 'jsconfig.json', '.git'}, 19 | root_dir = cfg.required_root_markers {'jsconfig.json', 'tsconfig.json'}, 20 | on_attach = cfg.on_attach, 21 | filetypes = { 22 | 'javascript', 23 | 'javascriptreact', 24 | 'javascript.jsx', 25 | 'typescript', 26 | 'typescriptreact', 27 | 'typescript.tsx', 28 | }, 29 | settings = { 30 | typescript = { 31 | inlayHints = { 32 | parameterNames = { enabled = "literals" }, 33 | parameterTypes = { enabled = true }, 34 | variableTypes = { enabled = true }, 35 | propertyDeclarationTypes = { enabled = true }, 36 | functionLikeReturnTypes = { enabled = true }, 37 | enumMemberValues = { enabled = true }, 38 | }, 39 | referencesCodeLens = { 40 | enabled = true, 41 | }, 42 | implementationsCodeLens = { 43 | enabled = true, 44 | }, 45 | format = { 46 | enable = false, 47 | enabled = false 48 | }, 49 | }, 50 | }, 51 | } 52 | -------------------------------------------------------------------------------- /.config/nvim/lsp/yamlls.lua: -------------------------------------------------------------------------------- 1 | --- https://github.com/redhat-developer/yaml-language-server 2 | --- 3 | --- `yaml-language-server` can be installed via `yarn`: 4 | --- ```sh 5 | --- yarn global add yaml-language-server 6 | --- ``` 7 | --- 8 | --- To use a schema for validation, there are two options: 9 | --- 10 | --- 1. Add a modeline to the file. A modeline is a comment of the form: 11 | --- 12 | --- ``` 13 | --- # yaml-language-server: $schema= 14 | --- ``` 15 | --- 16 | --- where the relative filepath is the path relative to the open yaml file, and the absolute filepath 17 | --- is the filepath relative to the filesystem root ('/' on unix systems) 18 | --- 19 | --- 2. Associated a schema url, relative , or absolute (to root of project, not to filesystem root) path to 20 | --- the a glob pattern relative to the detected project root. Check `:LspInfo` to determine the resolved project 21 | --- root. 22 | --- 23 | --- ```lua 24 | --- require('lspconfig').yamlls.setup { 25 | --- ... -- other configuration for setup {} 26 | --- settings = { 27 | --- yaml = { 28 | --- ... -- other settings. note this overrides the lspconfig defaults. 29 | --- schemas = { 30 | --- ["https://json.schemastore.org/github-workflow.json"] = "/.github/workflows/*", 31 | --- ["../path/relative/to/file.yml"] = "/.github/workflows/*", 32 | --- ["/path/from/root/of/project"] = "/.github/workflows/*", 33 | --- }, 34 | --- }, 35 | --- } 36 | --- } 37 | --- ``` 38 | --- 39 | --- Currently, kubernetes is special-cased in yammls, see the following upstream issues: 40 | --- * [#211](https://github.com/redhat-developer/yaml-language-server/issues/211). 41 | --- * [#307](https://github.com/redhat-developer/yaml-language-server/issues/307). 42 | --- 43 | --- To override a schema to use a specific k8s schema version (for example, to use 1.18): 44 | --- 45 | --- ```lua 46 | --- require('lspconfig').yamlls.setup { 47 | --- ... -- other configuration for setup {} 48 | --- settings = { 49 | --- yaml = { 50 | --- ... -- other settings. note this overrides the lspconfig defaults. 51 | --- schemas = { 52 | --- ["https://raw.githubusercontent.com/yannh/kubernetes-json-schema/refs/heads/master/v1.32.1-standalone-strict/all.json"] = "/*.k8s.yaml", 53 | --- ... -- other schemas 54 | --- }, 55 | --- }, 56 | --- } 57 | --- } 58 | --- ``` 59 | ---@type vim.lsp.ClientConfig 60 | return { 61 | cmd = { 'yaml-language-server', '--stdio' }, 62 | filetypes = { 'yaml', 'yaml.docker-compose', 'yaml.gitlab' }, 63 | root_markers = { '.git' }, 64 | settings = { 65 | redhat = { telemetry = { enabled = false } }, 66 | }, 67 | } 68 | -------------------------------------------------------------------------------- /.config/nvim/lua/aucmds.lua: -------------------------------------------------------------------------------- 1 | au('BufEnter', { 2 | group = ag('waybar_config', {}), 3 | pattern = 'config', 4 | callback = function(event) 5 | if event.match == vim.fn.expand('~/.config/waybar/config') then 6 | vim.bo.filetype = 'json' 7 | end 8 | end 9 | }) 10 | 11 | ---Settings for various themes which don't have setup functions 12 | -- 13 | au('ColorSchemePre', { 14 | callback = function(event) 15 | if event.match == 'tokyonight' then 16 | local colors = require 'tokyonight.colors'.setup {} 17 | local util = require 'tokyonight.util' 18 | vim.g.tokyonight_style = 'night' 19 | vim.g.tokyonight_transparent = true 20 | vim.g.tokyonight_lualine_bold = true 21 | vim.g.tokyonight_colors = { 22 | bg_highlight = util.blend(colors.bg_highlight, '#000000', 0.5), 23 | } 24 | elseif event.match == 'oxocarbon-lua' then 25 | vim.g.oxocarbon_lua_transparent = true 26 | end 27 | end 28 | }) 29 | 30 | ---Settings for various themes which don't have setup functions 31 | -- 32 | au('ColorScheme', { 33 | callback = function(event) 34 | if ( event.match == 'tokyonight' 35 | or event.match == 'noctis' 36 | ) then 37 | vim.cmd.hi('Normal', "guibg='transparent'") 38 | end 39 | end 40 | }) 41 | 42 | ---Highlight yanked text 43 | -- 44 | au('TextYankPost', { 45 | group = ag('yank_highlight', {}), 46 | pattern = '*', 47 | callback = function() 48 | vim.highlight.on_yank { higroup='IncSearch', timeout=300 } 49 | end, 50 | }) 51 | 52 | -- Only setup gnvim when it attaches. 53 | au('UIEnter', { 54 | callback = function() 55 | local chanid = vim.v.event.chan 56 | print (chanid) 57 | local chan = vim.api.nvim_get_chan_info(chanid) 58 | if chan.client and chan.client.name == 'gnvim' then 59 | -- Gnvim brings its own runtime files. 60 | local gnvim = require'gnvim' 61 | 62 | -- Set the font 63 | vim.opt.guifont = 'FiraCode Nerd Font 13' 64 | 65 | -- Increase/decrease font. 66 | vim.keymap.set('n', '', function() gnvim.font_size(1) end) 67 | vim.keymap.set('n', '', function() gnvim.font_size(-1) end) 68 | 69 | gnvim.setup({ 70 | cursor = { 71 | blink_transition = 300 72 | } 73 | }) 74 | end 75 | end 76 | }) 77 | 78 | au('OptionSet', { 79 | group = ag('auto_dark_light', {clear=true}), 80 | pattern = 'background', 81 | callback = function() 82 | local colors = require'catppuccin.palettes'.get_palette() 83 | local blend = require 'catppuccin.utils.colors'.blend 84 | vim.api.nvim_set_hl(0, 'DiagnosticErrorLine', { bg = blend(colors.red, colors.surface0, 0.2) }) 85 | vim.api.nvim_set_hl(0, 'DiagnosticWarningLine', { bg = blend(colors.yellow, colors.surface0, 0.2) }) 86 | end 87 | }) 88 | 89 | -------------------------------------------------------------------------------- /.config/nvim/lua/lsp.lua: -------------------------------------------------------------------------------- 1 | local M = {} 2 | 3 | function M.capabilities(caps) 4 | caps = caps or {} 5 | local lsp_status = require 'lsp-status' 6 | ---@note: skip next line after nvim-lspconfig finishes porting to 0.11 7 | -- return vim.tbl_deep_extend('force', require'blink.cmp'.get_lsp_capabilities(lsp_status.capabilities), caps) 8 | return lsp_status.capabilities 9 | end 10 | 11 | function M.on_attach(client, bufnr) 12 | require 'lsp-format'.on_attach(client, bufnr) 13 | require 'lsp-status'.on_attach(client, bufnr) 14 | if client.server_capabilities.documentSymbolProvider then 15 | require 'nvim-navic'.attach(client, bufnr) 16 | end 17 | if client.server_capabilities.inlayHintProvider then 18 | vim.lsp.inlay_hint.enable(true) 19 | end 20 | end 21 | 22 | function M.config() 23 | return { 24 | capabilities = M.capabilities(), 25 | on_attach = M.on_attach, 26 | } 27 | end 28 | 29 | ---@param markers string|string[] 30 | function M.required_root_markers(markers) 31 | return function(buf, cb) 32 | local path = vim.api.nvim_buf_get_name(buf) 33 | local tsconfig_dir = vim.fs.dirname(vim.fs.find(markers, { path = path, upward = true })[1]) 34 | if tsconfig_dir then 35 | cb(tsconfig_dir) 36 | end 37 | end 38 | end 39 | 40 | return M 41 | -------------------------------------------------------------------------------- /.config/nvim/lua/mappings.lua: -------------------------------------------------------------------------------- 1 | -- Plugin mappings are typically in their own plugin definition files 2 | -- see lua/plugins/*/*.lua 3 | -- 4 | 5 | --- Wrapper for vim.keymap.set 6 | local function map(lhs, rhs, desc, opts) 7 | local options = { desc = desc } 8 | for k, v in ipairs(opts or {}) do 9 | options[k] = v 10 | end 11 | vim.keymap.set(opts.mode, lhs, rhs, options) 12 | end 13 | 14 | local function nmap(lhs, rhs, desc) map(lhs, rhs, desc, { mode = 'n' }) end 15 | local function vmap(lhs, rhs, desc) map(lhs, rhs, desc, { mode = 'v' }) end 16 | local function imap(lhs, rhs, desc) map(lhs, rhs, desc, { mode = 'i' }) end 17 | 18 | local function format_async() vim.lsp.buf.format { async = true } end 19 | local function open_diagnostics() vim.diagnostic.open_float { focus = false } end 20 | 21 | -- put without yanking 22 | nmap('', '"_dP') 23 | vmap('', '"_dP') 24 | -- yank to system clipboard 25 | nmap('', '"+y') 26 | vmap('', '"+y') 27 | 28 | nmap('L', ':Lazy', 'Plugin manager') 29 | nmap('', 'ClearNotifications', 'Clear Notifications') 30 | 31 | -- movement between windows 32 | nmap('', 'h', 'Move cursor to window left') 33 | nmap('', 'j', 'Move cursor to window below') 34 | nmap('', 'k', 'Move cursor to window above') 35 | nmap('', 'l', 'Move cursor to window right') 36 | map('', 'h', 'Move cursor to window left' , { mode = { 'i', 't' } }) 37 | map('', 'j', 'Move cursor to window below' , { mode = { 'i', 't' } }) 38 | map('', 'k', 'Move cursor to window above' , { mode = { 'i', 't' } }) 39 | map('', 'l', 'Move cursor to window right' , { mode = { 'i', 't' } }) 40 | 41 | nmap('e', open_diagnostics, 'Open diagnostics in floating window') 42 | nmap('lf', format_async, 'Format file') 43 | 44 | nmap('grD', vim.lsp.buf.declaration, 'Go to declaration') 45 | nmap('gdr', vim.lsp.buf.definition, 'Go to definitions') 46 | nmap('grt', vim.lsp.buf.type_definition, 'Go to type definition') 47 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/auto-session.lua: -------------------------------------------------------------------------------- 1 | return { 'rmagatti/auto-session', 2 | version = 'v2.*', 3 | enabled = false, 4 | opts = { 5 | log_level = vim.log.levels.ERROR, 6 | auto_save_enabled = true, 7 | auto_restore_enabled = true, 8 | auto_session_create_enabled = false, 9 | -- auto_session_suppress_dirs = {}, 10 | auto_session_use_git_branch = true, 11 | auto_session_enable_last_session = true, 12 | session_lens = { 13 | theme_conf = { border = false }, 14 | previewer = true, 15 | }, 16 | bypass_session_save_file_types = { 17 | 'alpha', 18 | 'neo-tree', 19 | 'terminal', 20 | 'tsplayground', 21 | 'query', 22 | }, 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/colorschemes/catppuccin.lua: -------------------------------------------------------------------------------- 1 | return { 'catppuccin/nvim', 2 | enabled = true, 3 | name = 'catppuccin', 4 | priority = 1000, 5 | opts = { 6 | default_integrations = true, 7 | integrations = { 8 | lsp_trouble = true, 9 | notify = true, 10 | blink_cmp = true, 11 | which_key = true, 12 | }, 13 | 14 | custom_highlights = function (colors) 15 | local darken = require 'catppuccin.utils.colors'.darken 16 | local blend = require 'catppuccin.utils.colors'.blend 17 | local dark = {} 18 | 19 | for k, v in pairs(colors) do 20 | if k ~= 'none' then 21 | dark[k] = darken(v, 0.5) 22 | end 23 | end 24 | 25 | 26 | return { 27 | Folded = { fg = colors.subtext0, bg = 'NONE' }, 28 | 29 | ModesCopy = { bg = dark.orange, fg = colors.orange }, 30 | ModesDelete = { bg = dark.red, fg = colors.red }, 31 | ModesInsert = { bg = dark.blue, fg = colors.blue }, 32 | ModesVisual = { bg = dark.purple, fg = colors.purple }, 33 | 34 | TelescopePromptPrefix = { bg = colors.crust }, 35 | TelescopePromptNormal = { bg = colors.crust }, 36 | TelescopeResultsNormal = { bg = colors.mantle }, 37 | TelescopePreviewNormal = { bg = colors.crust }, 38 | TelescopePromptBorder = { bg = colors.crust, fg = colors.crust }, 39 | TelescopeResultsBorder = { bg = colors.mantle, fg = colors.crust }, 40 | TelescopePreviewBorder = { bg = colors.crust, fg = colors.crust }, 41 | TelescopePromptTitle = { fg = colors.crust }, 42 | TelescopeResultsTitle = { fg = colors.text }, 43 | TelescopePreviewTitle = { fg = colors.crust }, 44 | 45 | DiagnosticErrorLine = { bg = blend(colors.red, colors.surface0, 0.2) }, 46 | DiagnosticWarningLine = { bg = blend(colors.yellow, colors.surface0, 0.2) }, 47 | 48 | } 49 | end 50 | }, 51 | } 52 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/colorschemes/github-nvim-theme.lua: -------------------------------------------------------------------------------- 1 | au('BufWritePost', { 2 | pattern = 'github-nvim-theme.lua', 3 | group = ag('gh-theme-reload', {}), 4 | command = [[luafile %]], 5 | }) 6 | 7 | return { 'projekt0n/github-nvim-theme', 8 | enabled = false, 9 | lazy = true, 10 | opts = { 11 | theme_style = 'dark_default', 12 | transparent = true, 13 | dark_float = true, 14 | sidebars = { 15 | 'neo-tree', 16 | }, 17 | dev = true, 18 | ---@param c gt.ColorPalette 19 | overrides = function(c) 20 | local util = require 'github-theme.util' 21 | local telescope_preview_bg = util.darken(c.bright_black, 0.1) 22 | local telescope_prompt_bg = util.darken(c.blue, 0.1) 23 | local telescope_results_bg = c.bg2 24 | return { 25 | TelescopePreviewBorder = { bg = telescope_preview_bg, fg = telescope_preview_bg }, 26 | TelescopePreviewNormal = { bg = telescope_preview_bg }, 27 | TelescopePreviewTitle = { fg = c.fg }, 28 | 29 | TelescopePromptBorder = { bg = telescope_prompt_bg, fg = telescope_prompt_bg }, 30 | TelescopePromptNormal = { bg = telescope_prompt_bg, fg = c.fg }, 31 | TelescopePromptPrefix = { bg = telescope_prompt_bg, fg = c.fg }, 32 | TelescopePromptCounter = { fg = c.fg }, 33 | TelescopePromptTitle = { bg = telescope_prompt_bg, fg = c.fg }, 34 | 35 | TelescopeResultsBorder = { bg = telescope_results_bg, fg = telescope_results_bg }, 36 | TelescopeResultsNormal = { bg = telescope_results_bg }, 37 | TelescopeResultsTitle = { bg = telescope_results_bg, fg = c.fg }, 38 | 39 | LineNr = { fg = util.darken(c.syntax.comment, 0.5), blend = 50 }, 40 | CursorLineNr = { style = "bold" }, 41 | CursorLine = { bg = c.bg_highlight, blend = 50 }, 42 | CursorColumn = { bg = c.bg_highlight, blend = 50 }, 43 | ColorColumn = { bg = c.bg_highlight, blend = 50 }, 44 | 45 | Pmenu = { fg = c.fg, bg = util.darken(c.syntax.func, 0.1) }, 46 | } 47 | end 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/colorschemes/nightfox.lua: -------------------------------------------------------------------------------- 1 | return { 'EdenEast/nightfox.nvim', 2 | enabled = false, 3 | config = function() 4 | local nightfox = require'nightfox' 5 | 6 | -- This function set the configuration of nightfox. If a value is not passed in the setup function 7 | -- it will be taken from the default configuration above 8 | nightfox.setup { 9 | options = { 10 | dim_inactive = true, 11 | modules = { 12 | cmp = true, 13 | diagnostic = true, 14 | lsp_trouble = true, 15 | gitsigns = true, 16 | modes = true, 17 | illuminate = true, 18 | native_lsp = true, 19 | neogit = true, 20 | nvimtree = true, 21 | telescope = true, 22 | treesitter = true, 23 | whichkey = true, 24 | }, 25 | styles = { 26 | comments = 'italic', 27 | keywords = 'bold', 28 | functions = 'italic,bold' 29 | }, 30 | }, 31 | palettes = { 32 | duskfox = { 33 | bg0 = '#1d1d2b', 34 | bg1 = '#000000', 35 | bg3 = '#121820', -- 55% darkened from stock 36 | }, 37 | }, 38 | specs = { 39 | all = { 40 | inactive = 'bg0', 41 | }, 42 | duskfox = { 43 | inactive = '#090909', 44 | }, 45 | }, 46 | groups = { 47 | TSPunctDelimiter = { fg = 'palette.red' }, 48 | CursorLine = { bg = 'bg3' }, 49 | Comment = { style = 'italic' }, 50 | MatchParen = { fg = 'palette.yellow' }, 51 | IndentBlankLineContextChar = { fg = '#88ddff' }, 52 | GitSignsChange = { fg = '#f16d0a' }, 53 | Folded = { bg = 'bg1', }, 54 | LspCodeLens = { bg = "bg1", style = 'italic' }, 55 | NormalNC = { fg = "fg1", bg = 'inactive' }, 56 | NeoTreeNormal = { bg = 'bg1' }, 57 | } 58 | } 59 | 60 | vim.cmd.colorscheme 'duskfox' 61 | 62 | end 63 | } 64 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/colorschemes/noctis.lua: -------------------------------------------------------------------------------- 1 | return { 'kartikp10/noctis.nvim', 2 | enabled = false, 3 | lazy = true, 4 | dependencies = { 'rktjmp/lush.nvim' }, 5 | } 6 | 7 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/colorschemes/oxocarbon.lua: -------------------------------------------------------------------------------- 1 | return { 'B4mbus/oxocarbon-lua.nvim', 2 | enabled = false, 3 | lazy = true, 4 | } 5 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/colorschemes/tokyonight.lua: -------------------------------------------------------------------------------- 1 | return { 'folke/tokyonight.nvim', 2 | enabled = false, 3 | lazy = true, 4 | opts = { 5 | on_highlights = function(hl, colors) 6 | local util = require 'tokyonight.util' 7 | hl.ModesCopy = util.lighten(colors.orange, 0.15) 8 | hl.ModesDelete = util.lighten(colors.red, 0.15) 9 | hl.ModesInsert = 'TRANSPARENT' 10 | hl.ModesVisual = util.lighten(colors.purple, 0.15) 11 | end 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/_editing.lua: -------------------------------------------------------------------------------- 1 | return { 2 | 3 | } 4 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/adelman.lua: -------------------------------------------------------------------------------- 1 | return { 'bennypowers/adelman-keyboard', 2 | enabled = true, 3 | } 4 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/autopairs.lua: -------------------------------------------------------------------------------- 1 | return { 'windwp/nvim-autopairs', 2 | enabled = true, 3 | opts = { 4 | check_ts = true, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/blink.lua: -------------------------------------------------------------------------------- 1 | return { 'saghen/blink.cmp', 2 | -- version = '1.*', 3 | version = '*', 4 | enabled = true, 5 | -- branch = 'fix/luasnip-hidden-snippet', 6 | dependencies = { 'L3MON4D3/LuaSnip' }, 7 | opts_extend = { 'sources.default' }, 8 | ---@type blink.cmp.Config 9 | opts = { 10 | snippets = { preset = 'luasnip', }, 11 | sources = { 12 | default = { 13 | 'lsp', 14 | 'path', 15 | 'snippets', 16 | 'buffer', 17 | }, 18 | }, 19 | fuzzy = { 20 | implementation = 'prefer_rust_with_warning', 21 | }, 22 | keymap = { 23 | preset = 'enter', 24 | }, 25 | signature = { 26 | enabled = true, 27 | }, 28 | appearance = { 29 | nerd_font_variant = 'mono', 30 | }, 31 | completion = { 32 | documentation = { 33 | auto_show = true, 34 | auto_show_delay_ms = 500, 35 | }, 36 | list = { 37 | selection = { 38 | preselect = false, 39 | }, 40 | }, 41 | menu = { 42 | draw = { 43 | columns = { 44 | { 'kind_icon' }, 45 | { 'label', 'label_description', gap = 1 }, 46 | { 'kind'} 47 | }, 48 | } 49 | }, 50 | ghost_text = { 51 | enabled = true, 52 | }, 53 | }, 54 | }, 55 | } 56 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/bufdel.lua: -------------------------------------------------------------------------------- 1 | -- close buffers (tabs) with less headache 2 | return { 'ojroques/nvim-bufdel', 3 | enabled = true, 4 | } 5 | 6 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/caser.lua: -------------------------------------------------------------------------------- 1 | -- change case (camel, dash, etc) 2 | return { 'arthurxavierx/vim-caser', 3 | lazy = true, 4 | enabled = false, 5 | keys = { 6 | { 'gC_', 'CaserSnakeCase', mode = {'n','v'}, desc = 'snake_case' }, 7 | { 'gC-', 'CaserKebabCase', mode = {'n','v'}, desc = 'dash-case' }, 8 | { 'gC.', 'CaserDotCase', mode = {'n','v'}, desc = 'dot.case' }, 9 | { 'gC', 'CaserSpaceCase', mode = {'n','v'}, desc = 'space case' }, 10 | { 'gCc', 'CaserCamelCase', mode = {'n','v'}, desc = 'camelCase' }, 11 | { 'gCK', 'CaserTitleKebabCase', mode = {'n','v'}, desc = 'Upper-Dash-Case' }, 12 | { 'gCp', 'CaserMixedCase', mode = {'n','v'}, desc = 'PascalCase' }, 13 | { 'gCs', 'CaserSentenceCase', mode = {'n','v'}, desc = 'Sentence case' }, 14 | { 'gCt', 'CaserTitleCase', mode = {'n','v'}, desc = 'Title Case' }, 15 | { 'gCu', 'CaserUpperCase', mode = {'n','v'}, desc = 'UPPER_SNAKE_CASE' }, 16 | { 'gCU', 'CaserUpperCase', mode = {'n','v'}, desc = 'UPPER_SNAKE_CASE' }, 17 | }, 18 | init = function () 19 | vim.g.caser_no_mappings = 1 20 | end, 21 | } 22 | 23 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/changesets.lua: -------------------------------------------------------------------------------- 1 | return { 'bennypowers/changesets.nvim', 2 | enabled = true, 3 | keys = { 4 | { 'cs', 5 | function() require'changesets'.create() end, 6 | mode = 'n', 7 | desc = 'Create a changeset', 8 | }, 9 | { 'ca', 10 | function() require'changesets'.add_package() end, 11 | mode = 'n', 12 | desc = 'Add a package to the changeset in the current buffer', 13 | }, 14 | }, 15 | } 16 | 17 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/color-converter.lua: -------------------------------------------------------------------------------- 1 | local function cycle_color() 2 | require 'color-converter'.cycle() 3 | end 4 | 5 | local function format_hsl() 6 | require 'color-converter'.to_hsl() 7 | vim.cmd [[:s/%//g]] 8 | end 9 | 10 | -- convert colour values 11 | return { 'NTBBloodbath/color-converter.nvim', 12 | enabled = true, 13 | lazy = true, 14 | keys = { 15 | { 'roc', cycle_color, desc = 'Cycle colour format' }, 16 | { 'roh', format_hsl, desc = 'Format color as hsl()' }, 17 | { 'roc', cycle_color, mode = 'v', desc = 'Cycle colour format' }, 18 | { 'roh', format_hsl, mode = 'v', desc = 'Format color as hsl()' }, 19 | }, 20 | } 21 | 22 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/comment-box.lua: -------------------------------------------------------------------------------- 1 | return { 'LudoPinelli/comment-box.nvim', 2 | enabled = false, 3 | lazy = true, 4 | opts = {}, 5 | } 6 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/design-tokens.lua: -------------------------------------------------------------------------------- 1 | return { 'bennypowers/design-tokens.nvim', 2 | filetypes = {'css'}, 3 | keys = { 4 | { 'tt', function() require'designtokens'.cycle_fallbacks() end, desc = 'Toggle design token fallbacks' }, 5 | }, 6 | opts = { 7 | tokens = { 8 | -- vim.fn.expand'~/Developer/design-tokens/pf.json', 9 | -- vim.fn.expand'~/Developer/redhat-ux/red-hat-design-tokens/json/rhds.tokens.json', 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/dial.lua: -------------------------------------------------------------------------------- 1 | local function get_map(c, m, g) return function() 2 | if vim.bo.filetype == 'markdown' then 3 | pcall(require'commands'.toggle_markdown_image) 4 | end 5 | require'dial.map'.manipulate(c, m, g) 6 | end end 7 | 8 | -- c-a to toggle bool, increment version, etc 9 | return { 'monaqa/dial.nvim', 10 | enabled = true, 11 | lazy = true, 12 | keys = { 13 | { '', get_map('increment','normal'), mode = {'n'}, desc = 'Increment (dial)' }, 14 | { '', get_map('decrement','normal'), mode = {'n'}, desc = 'Decrement (dial)' }, 15 | { 'g', get_map('increment','gnormal'), mode = {'n'}, desc = 'Increment (g) (dial)' }, 16 | { 'g', get_map('decrement','gnormal'), mode = {'n'}, desc = 'Decrement (g) (dial)' }, 17 | { '', get_map('increment','visual'), mode = {'v'}, desc = 'Increment (dial)' }, 18 | { '', get_map('decrement','visual'), mode = {'v'}, desc = 'Decrement (dial)' }, 19 | { 'g', get_map('increment','gvisual'), mode = {'v'}, desc = 'Increment (g) (dial)' }, 20 | { 'g', get_map('decrement','gvisual'), mode = {'v'}, desc = 'Decrement (g) (dial)' }, 21 | }, 22 | config = function() 23 | local a = require'dial.augend' 24 | require'dial.config'.augends:register_group { 25 | default = { 26 | a.integer.alias.decimal, 27 | a.constant.alias.bool, 28 | a.constant.new { elements = {'✅', '❌'} }, 29 | a.constant.new { elements = {'ON', 'OFF'} }, 30 | a.hexcolor.new { case = "lower" }, 31 | a.semver.alias.semver, 32 | a.misc.alias.markdown_header, 33 | } 34 | } 35 | end 36 | } 37 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/lion.lua: -------------------------------------------------------------------------------- 1 | -- align anything 2 | return { 'tommcdo/vim-lion', 3 | enabled = true, 4 | lazy = true, 5 | keys = { 6 | { 'gl', mode = {'n', 'v'} }, 7 | { 'gL', mode = {'n', 'v'} }, 8 | }, 9 | } 10 | 11 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/lorem.lua: -------------------------------------------------------------------------------- 1 | return { 'derektata/lorem.nvim', 2 | enabled = false, 3 | } 4 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/luasnip.lua: -------------------------------------------------------------------------------- 1 | local function next_choice() 2 | local luasnip = require'luasnip' 3 | if luasnip.in_snippet() then 4 | luasnip.change_choice(1) 5 | end 6 | end 7 | 8 | local function prev_choice() 9 | local luasnip = require'luasnip' 10 | if luasnip.in_snippet() then 11 | luasnip.change_choice(-1) 12 | end 13 | end 14 | 15 | local function pick_choice() 16 | local luasnip = require'luasnip' 17 | if luasnip.in_snippet() then 18 | require'luasnip.extras.select_choice'() 19 | end 20 | end 21 | 22 | local filetype_extensions = { 23 | css = { 'css', 'scss' }, 24 | html = { 'css', 'javascript', 'json', 'svg' }, 25 | svg = { 'css', 'html' }, 26 | javascript = { 'html', 'svg' }, 27 | typescript = { 'html', 'svg' }, 28 | markdown = { 29 | 'lua', 30 | 'json', 31 | 'html', 32 | 'svg', 33 | 'yaml', 34 | 'css', 35 | 'typescript', 36 | 'javascript', 37 | } 38 | } 39 | 40 | return { 'L3MON4D3/LuaSnip', 41 | enabled = true, 42 | version = '2.*', 43 | build = 'make install_jsregexp', 44 | dependencies = { 'bennypowers/design-tokens.nvim' }, 45 | keys = { 46 | { '', next_choice, mode = { 'i' }, desc = 'Luasnip - next choice' }, 47 | { '', prev_choice, mode = { 'i' }, desc = 'Luasnip - prev choice' }, 48 | { '', pick_choice, mode = { 'i' }, desc = 'Luasnip - pick choice' }, 49 | }, 50 | config = function() 51 | local ls = require'luasnip' 52 | local ft = require'luasnip.extras.filetype_functions' 53 | local lu = require'luasnip.util.types' 54 | local fl = require'luasnip.loaders.from_lua' 55 | local fs = require'luasnip.loaders.from_snipmate' 56 | 57 | ls.config.setup { 58 | history = true, 59 | native_menu = false, 60 | updateevents = 'TextChanged,TextChangedI', 61 | enable_autosnippets = true, 62 | ext_opts = { 63 | [lu.choiceNode] = { 64 | active = { 65 | virt_text = { { "●", "GruvboxOrange" } } 66 | } 67 | } 68 | }, 69 | ft_func = ft.from_pos, 70 | load_ft_func = ft.extend_load_ft(filetype_extensions), 71 | } 72 | 73 | fl.lazy_load() 74 | 75 | fs.lazy_load { 76 | paths = { '~/.config/nvim/snippets' }, 77 | fs_event_providers = { libuv = true }, 78 | } 79 | 80 | for filetype, extensions in pairs(filetype_extensions) do 81 | if #filetype > 0 then 82 | ls.filetype_extend(filetype, extensions) 83 | end 84 | end 85 | end 86 | } 87 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/marks.lua: -------------------------------------------------------------------------------- 1 | -- better vim marks 2 | return { 'chentau/marks.nvim', 3 | enabled = false 4 | } 5 | 6 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/matchparen.lua: -------------------------------------------------------------------------------- 1 | -- highlight matching paren 2 | return { 'monkoose/matchparen.nvim', 3 | enabled = true, 4 | opts = { 5 | on_startup = true, 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/replacer.lua: -------------------------------------------------------------------------------- 1 | -- Telescope live_grep -> to select files -> to populate qflist -> h to find/replace in qf files 2 | return { 'gabrielpoca/replacer.nvim', 3 | enabled = false, 4 | lazy = true, 5 | keys = { 6 | { 'h', function() require 'replacer'.run() end, desc = 'Edit quicklist' }, 7 | } 8 | } 9 | 10 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/spectre.lua: -------------------------------------------------------------------------------- 1 | return { 'nvim-pack/nvim-spectre', 2 | enabled = true, 3 | lazy = true, 4 | cmd = { 'Spectre' }, 5 | } 6 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/spider.lua: -------------------------------------------------------------------------------- 1 | return { 'chrisgrieser/nvim-spider', 2 | lazy = true, 3 | enabled = false, 4 | keys = { 5 | { 'w', 'lua require"spider".motion"w"', desc = 'Spider-w', mode = {'n', 'o', 'x'} }, 6 | { 'e', 'lua require"spider".motion"e"', desc = 'Spider-e', mode = {'n', 'o', 'x'} }, 7 | { 'b', 'lua require"spider".motion"b"', desc = 'Spider-b', mode = {'n', 'o', 'x'} }, 8 | { 'ge', 'lua require"spider".motion"ge"', desc = 'Spider-ge', mode = {'n', 'o', 'x'} }, 9 | }, 10 | } 11 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/splitjoin.lua: -------------------------------------------------------------------------------- 1 | -- like vmp `g,` action 2 | return { 'bennypowers/splitjoin.nvim', 3 | enabled = true, 4 | lazy = true, 5 | keys = { 6 | { 'gj', function() require'splitjoin'.join() end, desc = 'Join the object under cursor' }, 7 | { 'g,', function() require'splitjoin'.split() end, desc = 'Split the object under cursor' }, 8 | }, 9 | opts = { 10 | languages = { 11 | html = { 12 | nodes = { 13 | attribute = { 14 | aligned = true, 15 | }, 16 | }, 17 | }, 18 | }, 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/surround.lua: -------------------------------------------------------------------------------- 1 | -- ysiw 2 | return { 3 | 'kylechui/nvim-surround', 4 | enabled = true, 5 | version = '2', 6 | opts = { 7 | move_cursor = 'sticky', 8 | surrounds = { 9 | ['<'] = { add = { '<', '>' } }, 10 | ['>'] = { add = { '< ', ' >' } }, 11 | ['['] = { add = { '[', ']' } }, 12 | [']'] = { add = { '[ ', ' ]' } }, 13 | 14 | ['t'] = { 15 | -- add = wrap_with_abbreviation, 16 | add = function() 17 | local input = vim.fn.input 'Emmet Abbreviation:' 18 | 19 | if input then 20 | --- hat_tip to https://github.com/b0o/nvim-conf/blob/363e126f6ae3dff5f190680841e790467a00124d/lua/user/util/wrap.lua#L12 21 | local bufnr = 0 22 | local client = unpack(vim.lsp.get_clients{ bufnr = bufnr, name = 'emmet_language_server' }) 23 | if client then 24 | local splitter = 'BENNYSPECIALSECRETSTRING' 25 | local response = client.request_sync('emmet/expandAbbreviation', { 26 | abbreviation = input, 27 | language = vim.opt.filetype, 28 | options = { 29 | text = splitter, 30 | }, 31 | }, 50, bufnr) 32 | if response then 33 | if response.err then 34 | vim.notify(response.err.message) 35 | else 36 | vim.notify(vim.inspect(response)) 37 | return (vim.split(response.result, splitter)) 38 | end 39 | end 40 | end 41 | end 42 | end, 43 | find = function() 44 | return require 'nvim-surround.config'.get_selection { motion = 'at' } 45 | end, 46 | delete = '^(%b<>)().-(%b<>)()$', 47 | change = { 48 | target = '^<([^%s<>]*)().-([^/]*)()>$', 49 | replacement = function() 50 | local input = vim.fn.input'New Emmet Abbreviation:' 51 | if input then 52 | local element = input:match '^]*)' 53 | local attributes = input:match '^]*%s+(.-)>?$' 54 | 55 | local open = attributes and element .. ' ' .. attributes or element 56 | local close = element 57 | 58 | return { { open }, { close } } 59 | end 60 | end, 61 | }, 62 | }, 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/svgo.lua: -------------------------------------------------------------------------------- 1 | return { 'bennypowers/svgo.nvim', 2 | dev = true, 3 | enabled = true, 4 | cmd = { 'Svgo' }, 5 | opts = {} 6 | } 7 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/template-string.lua: -------------------------------------------------------------------------------- 1 | 2 | -- autoconvert '' or "" to `` 3 | local filetypes = { 4 | 'html', 5 | 'javascript', 6 | 'typescript', 7 | -- 'javascriptreact', 8 | -- 'typescriptreact', 9 | 'python', 10 | } 11 | 12 | return { 'axelvc/template-string.nvim', 13 | enabled = true, 14 | ft = filetypes, 15 | opts = { 16 | filetypes = filetypes 17 | } 18 | } 19 | 20 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/text-case.lua: -------------------------------------------------------------------------------- 1 | return { 'johmsalas/text-case.nvim', 2 | dependencies = { 'telescope' }, 3 | enabled = true, 4 | config = function() 5 | require'textcase'.setup{} 6 | require'telescope'.load_extension'textcase' 7 | end, 8 | keys = { 9 | 'ga', 10 | { 'ga', 'TextCaseOpenTelescope', mode = { 'n', 'x' }, desc = 'Caser menu' }, 11 | }, 12 | cmd = { 13 | -- NOTE: The Subs command name can be customized via the option "substitude_command_name" 14 | 'Subs', 15 | 'TextCaseOpenTelescope', 16 | 'TextCaseOpenTelescopeQuickChange', 17 | 'TextCaseOpenTelescopeLSPChange', 18 | 'TextCaseStartReplacingCommand', 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/vim-textobj-entire.lua: -------------------------------------------------------------------------------- 1 | -- yae, cae, etc 2 | return { 'kana/vim-textobj-entire', 3 | enabled = false, 4 | dependencies = { 'kana/vim-textobj-user' } 5 | } 6 | 7 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/editing/vim-visual-multi.lua: -------------------------------------------------------------------------------- 1 | -- multiple cursors, kinda like atom + vim-mode-plus 2 | return { 'mg979/vim-visual-multi', 3 | branch = 'master', 4 | enabled = false, 5 | lazy = true, 6 | keys = { 7 | { '', nil, mode = { 'n', 'v' } }, 8 | { '', '(VM-Find-Subword-Under)', mode = 'v', desc = 'Find occurrence of subword under cursor' } 9 | }, 10 | } 11 | 12 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/firenvim.lua: -------------------------------------------------------------------------------- 1 | -- 🔥 Browser Integration 2 | -- here be 🐉 🐲 3 | return { 'glacambre/firenvim', 4 | enabled = false, 5 | -- Explanation: https://github.com/folke/lazy.nvim/discussions/463#discussioncomment-4819297 6 | lazy = not vim.g.started_by_firenvim, 7 | build = function() 8 | vim.fn['firenvim#install'](0) 9 | end, 10 | init = function () 11 | if vim.g.started_by_firenvim then 12 | print'firenvim' 13 | vim.g.auto_session_enabled = false 14 | vim.opt.laststatus = 0 15 | vim.opt.showtabline = 0 16 | vim.opt.guifont = 'FiraCode_Nerd_Font' 17 | au('BufEnter', { 18 | group = ag('firenvim_md', {}), 19 | pattern = 'github.com_*.txt', 20 | command = 'set filetype=markdown' 21 | }) 22 | end 23 | end 24 | } 25 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/git/gh-nvim.lua: -------------------------------------------------------------------------------- 1 | return { 'litee/gh.nvim', 2 | enabled = false, 3 | config = function() 4 | require 'litee.lib'.setup() 5 | require 'litee.gh'.setup() 6 | end, 7 | } 8 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/git/git-conflict.lua: -------------------------------------------------------------------------------- 1 | -- resolve conflicts 2 | return { 'akinsho/git-conflict.nvim', 3 | enabled = true, 4 | event = { 'BufEnter' }, 5 | opts = { 6 | disable_diagnostics = true, -- This will disable the diagnostics in a buffer whilst it is conflicted 7 | default_mappings = { 8 | ours = 'gCo', 9 | theirs = 'gCt', 10 | none = 'gC0', 11 | both = 'gCb', 12 | next = '[x', 13 | prev = ']x', 14 | }, 15 | highlights = { -- They must have background color, otherwise the default color will be used 16 | incoming = 'DiffText', 17 | current = 'DiffAdd', 18 | } 19 | }, 20 | } 21 | 22 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/git/gitsigns.lua: -------------------------------------------------------------------------------- 1 | -- git gutter 2 | return { 'lewis6991/gitsigns.nvim', 3 | enabled = true, 4 | version = 'v0.6', 5 | opts = { 6 | current_line_blame = true, 7 | trouble = true, 8 | } 9 | } 10 | 11 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/git/octo.lua: -------------------------------------------------------------------------------- 1 | return { 'pwntester/octo.nvim', 2 | enabled = false, 3 | dependencies = { 4 | 'nvim-lua/plenary.nvim', 5 | 'nvim-telescope/telescope.nvim', 6 | 'nvim-tree/nvim-web-devicons', 7 | }, 8 | opts = {}, 9 | } 10 | 11 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/init.lua: -------------------------------------------------------------------------------- 1 | return { 2 | 3 | { import = 'plugins.colorschemes' }, 4 | { import = 'plugins.debugger' }, 5 | { import = 'plugins.editing' }, 6 | { import = 'plugins.git' }, 7 | { import = 'plugins.languages' }, 8 | { import = 'plugins.lsp' }, 9 | { import = 'plugins.treesitter' }, 10 | { import = 'plugins.ui' }, 11 | 12 | { 'masukomi/html_encode_decode', enabled = false }, 13 | 14 | { 'powerman/vim-plugin-AnsiEsc', lazy = true }, 15 | 16 | } 17 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/lab.lua: -------------------------------------------------------------------------------- 1 | return { '0x100101/lab.nvim', 2 | enabled = false, 3 | dependencies = { 'nvim-lua/plenary.nvim' }, 4 | build = 'cd js && npm ci', 5 | opts = { 6 | code_runner = { 7 | enabled = true, 8 | }, 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/languages/emmet.lua: -------------------------------------------------------------------------------- 1 | return { 'olrtg/nvim-emmet', 2 | enabled = true, 3 | ft = { 4 | 'html', 'webc', 'svg', 5 | 'css', 'scss', 6 | 'njk', 'nunjucks', 'jinja', 7 | 'md', 'markdown', 8 | 'erb', 'eruby', 9 | 'ts', 'typescript', 'typescriptreact', 10 | 'js', 'javascript', 'javascriptreact', 11 | }, 12 | } 13 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/languages/gentoo.lua: -------------------------------------------------------------------------------- 1 | return { 2 | 'gentoo/gentoo-syntax', 3 | } 4 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/languages/haskell.lua: -------------------------------------------------------------------------------- 1 | return { 'MrcJkb/haskell-tools.nvim', 2 | enabled = true, 3 | ft = { 'haskell' }, 4 | dependencies = { 5 | 'nvim-lua/plenary.nvim', 6 | 'telescope', 7 | }, 8 | } 9 | 10 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/languages/javascript.lua: -------------------------------------------------------------------------------- 1 | return { 2 | 3 | -- lit-html 4 | { 'jonsmithers/vim-html-template-literals', enabled = false }, 5 | 6 | } 7 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/languages/jinja.lua: -------------------------------------------------------------------------------- 1 | return { 2 | 3 | -- regexp-based syntax for njk 4 | { 'lepture/vim-jinja', ft = { 'jinja', 'html' }, enabled = false }, 5 | 6 | } 7 | 8 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/languages/lua.lua: -------------------------------------------------------------------------------- 1 | return { 2 | -- 🌔 Lua Development 3 | 4 | -- lua docs in vim help 5 | 'milisims/nvim-luaref', 6 | -- lua REPL/scratchpad 7 | { 'rafcamlet/nvim-luapad', 8 | enabled = true, 9 | cmd = 'Luapad', 10 | opts = {}, 11 | }, 12 | } 13 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/languages/markdown.lua: -------------------------------------------------------------------------------- 1 | return { 2 | 3 | -- markdown previews 4 | { 'iamcco/markdown-preview.nvim', 5 | enabled = true, 6 | ft = { 'md', 'markdown' }, 7 | build = function() 8 | vim.fn["mkdp#util#install"]() 9 | end }, 10 | 11 | } 12 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/languages/php.lua: -------------------------------------------------------------------------------- 1 | -- Lua 2 | return { 'gbprod/phpactor.nvim', 3 | enabled = false, 4 | dependencies = { 5 | 'nvim-lua/plenary.nvim', 6 | }, 7 | build = function() 8 | require'phpactor.handler.update'() 9 | end, 10 | opts = { 11 | }, 12 | } 13 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/languages/rust.lua: -------------------------------------------------------------------------------- 1 | -- better to burn out than to fade away 2 | return { 3 | 'simrat39/rust-tools.nvim', 4 | enabled = true, 5 | ft = 'rust', 6 | } 7 | 8 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/lsp/document-color.lua: -------------------------------------------------------------------------------- 1 | return { 'bennypowers/document-color.nvim', 2 | enabled = true, 3 | opts = true, 4 | } 5 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/lsp/formatter.lua: -------------------------------------------------------------------------------- 1 | local ignores = { 2 | 'nusah/keymap.json' 3 | } 4 | 5 | ---Adapted from MunifTanjim/prettier.nvim 6 | ---@param project_root string 7 | ---@return boolean 8 | local function prettier_package_json_key_exists(project_root) 9 | local ok, has_prettier_key = pcall(function() 10 | local package_json_blob = table.concat(vim.fn.readfile(require 'lspconfig.util'.path.join(project_root, 11 | '/package.json'))) 12 | local package_json = vim.json.decode(package_json_blob) or {} 13 | return not not package_json.prettier 14 | end) 15 | return ok and has_prettier_key 16 | end 17 | 18 | ---Adapted from MunifTanjim/prettier.nvim 19 | ---@param project_root string 20 | ---@return boolean 21 | local function prettier_config_file_exists(project_root) 22 | return (not not project_root) 23 | and vim.tbl_count(vim.fn.glob('.prettierrc*', true, true)) > 0 24 | or vim.tbl_count(vim.fn.glob('prettier.config.*', true, true)) > 0 25 | end 26 | 27 | local function prettier_d() 28 | local startpath = vim.fn.getcwd() 29 | local project_root = (require 'lspconfig.util'.find_git_ancestor(startpath) 30 | or require 'lspconfig.util'.find_package_json_ancestor(startpath)) 31 | if prettier_config_file_exists(project_root) 32 | or prettier_package_json_key_exists(project_root) then 33 | return require 'formatter.defaults.prettierd' () 34 | end 35 | end 36 | 37 | local function ignore_file(filepath) 38 | local match = vim.fn.match(ignores, filepath); 39 | return match ~= -1 40 | end 41 | 42 | return { 43 | 'mhartington/formatter.nvim', 44 | enabled = true, 45 | config = function() 46 | require 'formatter'.setup { 47 | filetype = { 48 | -- lua = require'formatter.filetypes.lua'.stylua, 49 | javascript = { 50 | require 'formatter.filetypes.javascript'.eslint_d, 51 | -- prettier_d, 52 | }, 53 | typescript = { 54 | require 'formatter.filetypes.typescript'.eslint_d, 55 | -- prettier_d, 56 | }, 57 | json = require 'formatter.filetypes.json'.fixjson, 58 | }, 59 | } 60 | local format_on_save = true 61 | command('FormatDisable', function() 62 | format_on_save = false 63 | end, { 64 | desc = 'Disable format on save', 65 | }) 66 | command('FormatEnable', function() 67 | format_on_save = true 68 | end, { 69 | desc = 'Enable format on save', 70 | }) 71 | au('BufWritePost', { 72 | group = ag('FormatAutogroup', {}), 73 | pattern = '*', 74 | callback = function(args) 75 | if format_on_save and not ignore_file(args.file) then 76 | vim.cmd [[FormatWrite]] 77 | end 78 | end 79 | }) 80 | end, 81 | } 82 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/lsp/goto-preview.lua: -------------------------------------------------------------------------------- 1 | local function goto_definition() 2 | require 'goto-preview'.goto_preview_definition {} 3 | end 4 | 5 | local function goto_implementation() 6 | require 'goto-preview'.goto_preview_implementation {} 7 | end 8 | 9 | local function goto_references() 10 | require 'goto-preview'.goto_preview_references() 11 | end 12 | 13 | local function goto_type_definition() 14 | require 'goto-preview'.goto_preview_type_definition() 15 | end 16 | 17 | local function close_all_win() 18 | require 'goto-preview'.close_all_win() 19 | end 20 | 21 | -- gd, but in a floating window 22 | return { 'rmagatti/goto-preview', 23 | enabled = true, 24 | lazy = true, 25 | dependencies = {'telescope'}, 26 | keys = { 27 | { 'gpd', goto_definition, desc = 'Preview Definition' }, 28 | { 'gpi', goto_implementation, desc = 'Preview implementation' }, 29 | { 'gpr', goto_references, desc = 'Preview References' }, 30 | { 'gpt', goto_type_definition, desc = 'Preview Type Definitions' }, 31 | { 'gP', close_all_win, desc = 'Preview References' }, 32 | }, 33 | config = function() 34 | require 'goto-preview'.setup { 35 | width = 120; -- Width of the floating window 36 | height = 15; -- Height of the floating window 37 | border = { "↖", "─", "┐", "│", "┘", "─", "└", "│" }; -- Border characters of the floating window 38 | default_mappings = false; -- Bind default mappings 39 | debug = false; -- Print debug information 40 | opacity = nil; -- 0-100 opacity level of the floating window where 100 is fully transparent. 41 | resizing_mappings = false; -- Binds arrow keys to resizing the floating window. 42 | post_open_hook = nil; -- A function taking two arguments, a buffer and a window to be ran as a hook. 43 | references = { -- Configure the telescope UI for slowing the references cycling window. 44 | telescope = require 'telescope.themes'.get_dropdown({ hide_preview = false }) 45 | }; 46 | -- These two configs can also be passed down to the goto-preview definition and implementation calls for one off "peak" functionality. 47 | focus_on_open = false; -- Focus the floating window when opening it. 48 | dismiss_on_move = true; -- Dismiss the floating window when moving the cursor. 49 | force_close = true, -- passed into vim.api.nvim_win_close's second argument. See :h nvim_win_close 50 | bufhidden = "wipe", -- the bufhidden option to set on the floating window. See :h bufhidden 51 | } 52 | end, 53 | } 54 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/lsp/hoverhints.lua: -------------------------------------------------------------------------------- 1 | return { 'soulis-1256/hoverhints.nvim', 2 | enabled = false, 3 | opts = { 4 | border = 'shadow' 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/lsp/inc-rename.lua: -------------------------------------------------------------------------------- 1 | local function make_bind() 2 | return ':IncRename ' .. vim.fn.expand '' 3 | end 4 | 5 | return { 6 | 'smjonas/inc-rename.nvim', 7 | enabled = true, 8 | keys = { 9 | { 'rn', ':IncRename ', desc = 'Rename (Incrementally)' }, 10 | { 'rN', make_bind, desc = 'Rename (Incrementally) with word', expr = true }, 11 | }, 12 | opts = {}, 13 | } 14 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/lsp/lsp-lines.lua: -------------------------------------------------------------------------------- 1 | return { 'https://git.sr.ht/~whynothugo/lsp_lines.nvim', 2 | enabled = false, 3 | config = function() 4 | vim.diagnostic.config { virtual_lines = false } 5 | require 'lsp_lines'.setup() 6 | vim.diagnostic.config { virtual_lines = false } 7 | require 'lsp_lines'.toggle() 8 | end, 9 | } 10 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/lsp/lsp-status.lua: -------------------------------------------------------------------------------- 1 | -- support for reporting buffer's lsp status (diagnostics, etc) to other plugins 2 | return { 'nvim-lua/lsp-status.nvim', 3 | enabled = true, 4 | config = function() 5 | local lsp_status = require 'lsp-status' 6 | lsp_status.config { 7 | current_function = false, 8 | kind_labels = vim.g.completion_customize_lsp_label, 9 | indicator_errors = '🔥', 10 | indicator_warnings = ' 🚧', 11 | indicator_info = 'ℹ️ ', 12 | indicator_hint = '🙋 ', 13 | indicator_ok = ' ', 14 | spinner_frames = { '⣾', '⣽', '⣻', '⢿', '⡿', '⣟', '⣯', '⣷' }, 15 | status_symbol = '', 16 | -- status_symbol = '💬: ', 17 | -- status_symbol = ' ', 18 | } 19 | lsp_status.register_progress() 20 | end 21 | } 22 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/lsp/mason.lua: -------------------------------------------------------------------------------- 1 | -- 🤖 Language Servers, automatically installed 2 | return { 3 | 'williamboman/mason.nvim', 4 | enabled = true, 5 | dependencies = { 6 | -- 'typescript', 7 | 'nvim-lua/lsp-status.nvim', 8 | 'b0o/schemastore.nvim', -- json schema support 9 | 'onsails/lspkind-nvim', -- fancy icons for lsp AST types and such 10 | { 'lukas-reineke/lsp-format.nvim', opts = {} }, 11 | { 'Bilal2453/luvit-meta', lazy = true }, -- optional `vim.uv` typings 12 | { 13 | 'folke/lazydev.nvim', 14 | ft = 'lua', -- only load on lua files 15 | opts = { 16 | library = { 17 | -- Library items can be absolute paths 18 | -- "~/projects/my-awesome-lib", 19 | -- Or relative, which means they will be resolved as a plugin 20 | 'LazyVim', 21 | -- When relative, you can also provide a path to the library in the plugin dir 22 | 'luvit-meta/library', -- see below 23 | }, 24 | }, 25 | }, 26 | }, 27 | opts = {}, 28 | } 29 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/lsp/trouble.lua: -------------------------------------------------------------------------------- 1 | -- language-server diagnostics panel 2 | return { 'folke/lsp-trouble.nvim', 3 | enabled = true, 4 | lazy = true, 5 | cmd = { 'Trouble' }, 6 | dependencies = { 7 | 'folke/trouble.nvim', 8 | 'nvim-tree/nvim-web-devicons', 9 | }, 10 | keys = { 11 | {'td', ':Trouble diagnostics', desc = 'Toggle trouble (diagnostics)' }, 12 | {'ts', ':Trouble symbols', desc = 'Toggle trouble (symbols)' }, 13 | }, 14 | opts = { 15 | auto_open = false, 16 | auto_close = true, 17 | auto_preview = true, 18 | use_diagnostic_signs = true, 19 | }, 20 | init = function() 21 | au('BufNew', { 22 | pattern = "Trouble", 23 | command = "setlocal colorcolumn=0" 24 | }) 25 | end 26 | } 27 | 28 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/luarocks.lua: -------------------------------------------------------------------------------- 1 | return { 'vhyrro/luarocks.nvim', 2 | priority = 1000, 3 | opts = { 4 | rocks = { 5 | 'lua-curl', 6 | 'nvim-nio', 7 | 'mimetypes', 8 | 'xml2lua', 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/mini.lua: -------------------------------------------------------------------------------- 1 | -- replaces various individual of plugins 2 | return { 'echasnovski/mini.nvim', 3 | enabled = true, 4 | config = function() 5 | if vim.version().major == 0 and vim.version().minor < 10 then 6 | require 'mini.comment'.setup {} 7 | end 8 | require 'mini.trailspace'.setup {} 9 | au('BufWritePre', { 10 | group = ag('MiniTrailspaceOnSave', {}), 11 | pattern = { '*.lua' }, 12 | callback = function() 13 | require 'mini.trailspace'.trim() 14 | end 15 | }) 16 | end 17 | } 18 | 19 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/rest.lua: -------------------------------------------------------------------------------- 1 | return { 'rest-nvim/rest.nvim', 2 | enabled = true, 3 | ft = 'http', 4 | dependencies = { 'vhyrro/luarocks.nvim' }, 5 | main = 'rest-nvim', 6 | keys = { 7 | { '', ':Rest run', ft = 'http', desc = 'Run request under the cursor' }, 8 | }, 9 | opts = { } 10 | } 11 | 12 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/silicon.lua: -------------------------------------------------------------------------------- 1 | local function screenshot() 2 | require'silicon'.visualise_api { } 3 | end 4 | 5 | local function screenshot_buffer() 6 | require'silicon'.visualise_api { show_buf = true } 7 | end 8 | 9 | local function screenshot_debug() 10 | require'silicon'.visualise_api { debug = true } 11 | end 12 | 13 | local function screenshot_visible() 14 | require'silicon'.visualise_api { visible = true } 15 | end 16 | 17 | -- Take screenshots from nvim 18 | return { 'narutoxy/silicon.lua', 19 | enabled = false, 20 | lazy = true, 21 | dependencies = { 'nvim-lua/plenary.nvim' }, 22 | keys = { 23 | { 'ss', screenshot, mode = 'n', desc = 'Save a Screenshot' }, 24 | { 'sb', screenshot_buffer, mode = 'n', desc = 'Save a Screenshot with Buffer' }, 25 | { 'ss', screenshot, mode = 'v', desc = 'Save a Screenshot' }, 26 | { 'sv', screenshot_visible, mode = 'v', desc = 'Save a Screenshot of visible area' }, 27 | { 'sb', screenshot_buffer, mode = 'v', desc = 'Save a Screenshot of entire Buffer' }, 28 | }, 29 | config = function() 30 | require'silicon'.setup { 31 | windowControls = false, 32 | gobble = true, 33 | padHoriz = 30, 34 | padVert = 20, 35 | shadowBlurRadius = 5, 36 | bgColor = '#3330'; 37 | output = string.format( 38 | vim.fn.expand"~/Pictures/Screenshots/SILICON_%s-%s-%s_%s-%s.png", 39 | os.date("%Y"), 40 | os.date("%m"), 41 | os.date("%d"), 42 | os.date("%H"), 43 | os.date("%M") 44 | ), 45 | } 46 | 47 | local silicon_utils = require'silicon.utils' 48 | 49 | ag('SiliconRefresh', { clear = true }) 50 | au('ColorScheme', { 51 | group = 'SiliconRefresh', 52 | desc = 'Reload silicon themes cache on colorscheme switch', 53 | callback = function() 54 | silicon_utils.build_tmTheme() 55 | silicon_utils.reload_silicon_cache({ 56 | async = true, 57 | }) 58 | end, 59 | }) 60 | end 61 | } 62 | 63 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/startuptime.lua: -------------------------------------------------------------------------------- 1 | -- vim startup profiler. Use together with `PackerProfile` 2 | return { 'tweekmonster/startuptime.vim', cmd = 'StartupTime' } 3 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/treesitter/_treesitter.lua: -------------------------------------------------------------------------------- 1 | return { 2 | 3 | -- help writing treesitter queries 4 | 'ziontee113/query-secretary', 5 | 6 | -- close HTML tags, but using treesitter 7 | { 'windwp/nvim-ts-autotag' }, 8 | 9 | -- append `end` in useful places 10 | 'RRethy/nvim-treesitter-endwise', 11 | 12 | } 13 | 14 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/treesitter/aerial.lua: -------------------------------------------------------------------------------- 1 | return { 'stevearc/aerial.nvim', 2 | enabled = true, 3 | cmd = { 4 | 'AerialToggle', 5 | 'AerialOpen', 6 | 'AerialOpenAll', 7 | 'AerialClose', 8 | 'AerialCloseAll', 9 | 'AerialNext', 10 | 'AerialPrev', 11 | 'AerialGo', 12 | 'AerialInfo', 13 | 'AerialNavToggle', 14 | 'AerialNavOpen', 15 | 'AerialNavClose', 16 | }, 17 | opts = {} 18 | } 19 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/treesitter/barbecue.lua: -------------------------------------------------------------------------------- 1 | return { 2 | 'utilyre/barbecue.nvim', 3 | enabled = true, 4 | name = 'barbecue', 5 | version = '*', 6 | dependencies = { 'SmiteshP/nvim-navic', 'nvim-tree/nvim-web-devicons' }, 7 | opts = { 8 | attach_navic = false, -- prevent barbecue from automatically attaching nvim-navic 9 | theme = 'catppuccin' 10 | }, 11 | } 12 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/treesitter/context.lua: -------------------------------------------------------------------------------- 1 | return { 'nvim-treesitter/nvim-treesitter-context', 2 | name = 'treesitter-context', 3 | enabled = false, 4 | opts = { 5 | enable = true, -- Enable this plugin (Can be enabled/disabled later via commands) 6 | patterns = { -- Match patterns for TS nodes. These get wrapped to match at word boundaries. 7 | -- For all filetypes 8 | -- Note that setting an entry here replaces all other patterns for this entry. 9 | -- By setting the 'default' entry below, you can control which nodes you want to 10 | -- appear in the context window. 11 | default = { 12 | 'class', 13 | 'function', 14 | 'method', 15 | 'switch', 16 | }, 17 | }, 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/treesitter/template-literal-comments.lua: -------------------------------------------------------------------------------- 1 | return { 'bennypowers/template-literal-comments.nvim', 2 | enabled = true, 3 | opts = true, 4 | ft = { 5 | 'javascript', 6 | 'typescript', 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/treesitter/webc.lua: -------------------------------------------------------------------------------- 1 | return { 'bennypowers/webc.nvim', 2 | enabled = true, 3 | dependencies = 'nvim-treesitter/nvim-treesitter', 4 | opts = true, 5 | } 6 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/auto-dark-mode.lua: -------------------------------------------------------------------------------- 1 | -- return { 'f-person/auto-dark-mode.nvim', 2 | -- opts = { 3 | -- update_interval = 1000, 4 | -- set_dark_mode = function() 5 | -- vim.opt.background = 'dark' 6 | -- end, 7 | -- set_light_mode = function() 8 | -- vim.opt.background = 'light' 9 | -- end, 10 | -- }, 11 | -- } 12 | return { 'vimpostor/vim-lumen' } 13 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/biscuits.lua: -------------------------------------------------------------------------------- 1 | local function biscuits_toggle() 2 | require 'nvim-biscuits'.toggle_biscuits() 3 | end 4 | 5 | -- hints for block ends 6 | return { 'code-biscuits/nvim-biscuits', 7 | enabled = true, 8 | lazy = true, 9 | keys = { 10 | { 'cb', biscuits_toggle, desc = 'Toggle code biscuits' }, 11 | }, 12 | opts = { 13 | show_on_start = true, 14 | cursor_line_only = true, 15 | on_events = { 'InsertLeave', 'CursorHoldI' }, 16 | default_config = { 17 | max_length = 12, 18 | min_distance = 5, 19 | prefix_string = " 📎 " 20 | }, 21 | language_config = { 22 | html = { 23 | prefix_string = " 🌐 " 24 | }, 25 | }, 26 | }, 27 | } 28 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/bufferline.lua: -------------------------------------------------------------------------------- 1 | -- editor tabs. yeah ok I know they're not "tabs" 2 | return { 'akinsho/bufferline.nvim', 3 | version = "v4.*", 4 | enabled = true, 5 | lazy = true, 6 | event = 'ColorScheme', 7 | dependencies = {'catppuccin/nvim'}, 8 | config = function () 9 | require 'bufferline'.setup { 10 | highlights = require'catppuccin.groups.integrations.bufferline'.get(), 11 | options = { 12 | -- mode = 'tabs', 13 | separator_style = 'slant', 14 | numbers = 'none', 15 | diagnostics = 'nvim_lsp', 16 | show_buffer_icons = true, 17 | show_close_icon = true, 18 | right_mouse_command = 'bdelete', 19 | close_command = 'bdelete', 20 | custom_filter = function(bufnr) 21 | local filetype = vim.bo[bufnr].filetype 22 | local filename = vim.fn.bufname(bufnr) 23 | return ( filetype ~= 'neo-tree' 24 | and filetype ~= 'Trouble' 25 | and filename ~= 'neo-tree filesystem [1]' 26 | and filename ~= '[No Name]' 27 | and filename ~= '' ) 28 | end, 29 | hover = { 30 | enabled = true, 31 | delay = 200, 32 | reveal = {'close'}, 33 | }, 34 | offsets = { 35 | { 36 | filetype = "neo-tree", 37 | text_align = "center", 38 | highlight = 'BufferlineFill', 39 | text = function() 40 | return vim.fn.getcwd() 41 | end, 42 | }, 43 | }, 44 | }, 45 | } 46 | command('BufferlineCloseOthers', function(args) 47 | if args.bang then 48 | vim.cmd[[ 49 | :BufferLineCloseLeft! 50 | :BufferLineCloseRight! 51 | ]] 52 | else 53 | vim.cmd[[ 54 | :BufferLineCloseLeft 55 | :BufferLineCloseRight 56 | ]] 57 | end 58 | end, { desc = 'Close unfocused listed buffers' }) 59 | end, 60 | } 61 | 62 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/buffertabs.lua: -------------------------------------------------------------------------------- 1 | return { 'tomiis4/BufferTabs.nvim', 2 | enabled = false, 3 | dependencies = { 'nvim-tree/nvim-web-devicons' }, 4 | lazy = false, 5 | config = function() 6 | require'buffertabs'.setup { 7 | display = 'column', 8 | horizontal = 'right', 9 | } 10 | require'buffertabs'.toggle() 11 | au('ModeChanged', { 12 | group = ag('bufmodechanged', {}), 13 | callback = function(args) 14 | local prev, next = unpack(vim.split(args.match, ':')) 15 | if next == 'BUFFERS' or prev == 'BUFFERS' then 16 | require'buffertabs'.toggle() 17 | end 18 | end 19 | }) 20 | end 21 | } 22 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/bufmode.lua: -------------------------------------------------------------------------------- 1 | return { 'Iron-E/nvim-bufmode', 2 | enabled = false, 3 | lazy = true, 4 | keys = { 5 | { 'gb', ':BufmodeEnter', desc = 'Enter Buffer Mode', }, 6 | { 'B', ':BufmodeEnter', desc = 'Enter Buffer Mode', }, 7 | }, 8 | dependencies = {'Iron-E/nvim-libmodal'}, 9 | -- bufferline.nvim 10 | -- opts = { 11 | -- bufferline = true, 12 | -- keymaps = { 13 | -- [''] = '', 14 | -- f = 'Telescope buffers', 15 | -- t = 'Neotree float buffers', 16 | -- d = 'BufDel', 17 | -- P = 'BufferLineTogglePin', 18 | -- e = 'BufferLineCycleNext', 19 | -- j = 'BufferLineCycleNext', 20 | -- k = 'BufferLineCyclePrev', 21 | -- E = 'BufferLineMoveNext', 22 | -- } 23 | -- }, 24 | config = function() 25 | require'bufmode'.setup { 26 | bufferline = true, 27 | keymaps = { 28 | [''] = '', 29 | B = '', 30 | f = 'Telescope buffers', 31 | t = 'Neotree float buffers', 32 | d = 'bdelete', 33 | l = 'bnext', 34 | j = 'bnext', 35 | k = 'bprev', 36 | h = 'bprev', 37 | } 38 | } 39 | end 40 | } 41 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/colorizer.lua: -------------------------------------------------------------------------------- 1 | return { "catgoose/nvim-colorizer.lua", 2 | event = "BufReadPre", 3 | enabled = false, 4 | opts = { -- set to setup table 5 | user_default_options = { 6 | mode = 'virtualtext', 7 | names_custom = function() 8 | local json_path = '~/Developer/redhat-ux/red-hat-design-tokens/editor/neovim/nvim-colorizer.json' 9 | local handle = assert(io.open(vim.fn.expand(json_path), "r")) -- assuming path is in the scope 10 | local content = handle:read("*a") 11 | handle:close() 12 | local colors = vim.json.decode(content) 13 | return colors 14 | end, 15 | } 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/cursorline.lua: -------------------------------------------------------------------------------- 1 | -- return { 'yamatsum/nvim-cursorline', config = c 'cursorline' } 2 | return { 'bennypowers/nvim-cursorline', 3 | branch = 'feat/disable-filetype', 4 | enabled = false, 5 | opts = { 6 | cursorline = { 7 | enable = true, 8 | timeout = 1000, 9 | number = false, 10 | }, 11 | cursorword = { 12 | enable = false, 13 | }, 14 | disable_filetypes = { 15 | 'alpha', 16 | 'neo-tree', 17 | 'neo-tree-popup', 18 | }, 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/dashboard.lua: -------------------------------------------------------------------------------- 1 | return { 'glepnir/dashboard-nvim', 2 | enabled = false, 3 | config = function() 4 | local expand = vim.fn.expand 5 | local db = require 'dashboard' 6 | local headers_basedir = expand('~/.config/nvim/headers/') 7 | 8 | -- db.preview_command = "cat | sed '$d'" 9 | -- db.preview_file_height = 40 10 | -- db.preview_file_width = 80 11 | -- db.preview_file_path = function() 12 | -- local headers_dirnames = { headers_basedir .. 'small' } 13 | -- 14 | -- if vim.fn.winwidth('%') >= 100 then 15 | -- table.insert(headers_dirnames, headers_basedir .. 'wide') 16 | -- end 17 | -- 18 | -- if vim.fn.winheight('%') >= 60 then 19 | -- table.insert(headers_dirnames, headers_basedir .. 'large') 20 | -- end 21 | -- 22 | -- local headers = {} 23 | -- 24 | -- for _, dirname in ipairs(headers_dirnames) do 25 | -- for _, filename in ipairs(vim.fn.readdir(dirname)) do 26 | -- table.insert(headers, dirname .. '/' .. filename) 27 | -- end 28 | -- end 29 | -- 30 | -- local path = headers[math.random(1, #headers)] 31 | -- 32 | -- local lines = vim.fn.readfile(path) 33 | -- db.preview_file_height = #lines 34 | -- local max = 0 35 | -- for _, line in ipairs(lines) do 36 | -- if string.len(line) > max then 37 | -- max = #line 38 | -- end 39 | -- end 40 | -- db.preview_file_width = max 41 | -- 42 | -- return path 43 | -- end 44 | 45 | db.custom_center = { 46 | { icon = ' ', 47 | desc = 'Load previous session ', 48 | shortcut = 'SPC s l', 49 | action = 'SessionLoad' }, 50 | { icon = ' ', 51 | desc = 'Recently opened files ', 52 | action = 'Telescope oldfiles', 53 | shortcut = 'SPC f h' }, 54 | { icon = ' ', 55 | desc = 'Find File ', 56 | action = 'Telescope find_files find_command=rg,--hidden,--files', 57 | shortcut = 'SPC f f' }, 58 | { icon = ' ', 59 | desc = 'File Browser ', 60 | action = 'Neotree float', 61 | shortcut = 'SPC f b' }, 62 | { icon = ' ', 63 | desc = 'Find word ', 64 | action = 'Telescope live_grep', 65 | shortcut = 'SPC f w' }, 66 | { icon = ' ', 67 | desc = 'Open config ', 68 | action = 'Telescope dotfiles path=' .. expand('~/.config/nvim'), 69 | shortcut = 'SPC f d' }, 70 | } 71 | 72 | end, 73 | } 74 | 75 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/deadcolumn.lua: -------------------------------------------------------------------------------- 1 | return { 'Bekaboo/deadcolumn.nvim', 2 | enabled = false, 3 | opts = { 4 | scope = 'visible', 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/dressing.lua: -------------------------------------------------------------------------------- 1 | -- telescope as UI for various vim built-in things 2 | return { 'stevearc/dressing.nvim', 3 | enabled = true, 4 | opts = { 5 | input = { 6 | enabled = true, 7 | win_options = { 8 | winblend = 25, 9 | number = false, 10 | }, 11 | }, 12 | }, 13 | } 14 | 15 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/fidget.lua: -------------------------------------------------------------------------------- 1 | -- LSP eye-candy 2 | return { 'j-hui/fidget.nvim', 3 | enabled = true, 4 | tag = 'v1.1.0', 5 | opts = { 6 | notification = { 7 | window = { 8 | winblend = 0, 9 | } 10 | } 11 | }, 12 | } 13 | 14 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/flatten.lua: -------------------------------------------------------------------------------- 1 | return { 'willothy/flatten.nvim', 2 | enabled = false, 3 | opts = { 4 | callbacks = { 5 | pre_open = function() 6 | -- Close toggleterm when an external open request is received 7 | require'toggleterm'.toggle(0) 8 | end, 9 | post_open = function(bufnr, winnr, ft) 10 | if ft == 'gitcommit' then 11 | -- If the file is a git commit, create one-shot autocmd to delete it on write 12 | -- If you just want the toggleable terminal integration, ignore this bit and only use the 13 | -- code in the else block 14 | au('BufWritePost', { 15 | buffer = bufnr, 16 | once = true, 17 | callback = function() 18 | -- This is a bit of a hack, but if you run bufdelete immediately 19 | -- the shell can occasionally freeze 20 | vim.defer_fn(function() vim.api.nvim_buf_delete(bufnr, {}) end, 50) 21 | end 22 | }) 23 | else 24 | -- If it's a normal file, then reopen the terminal, then switch back to the newly opened window 25 | -- This gives the appearance of the window opening independently of the terminal 26 | require'toggleterm'.toggle(0) 27 | vim.api.nvim_set_current_win(winnr) 28 | end 29 | end, 30 | block_end = function() 31 | -- After blocking ends (for a git commit, etc), reopen the terminal 32 | require'toggleterm'.toggle(0) 33 | end 34 | } 35 | } 36 | } 37 | 38 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/frecency.lua: -------------------------------------------------------------------------------- 1 | -- tries to sort files helpfully 2 | return { 'nvim-telescope/telescope-frecency.nvim', 3 | requires = 'tami5/sqlite.lua', 4 | enabled = false, 5 | config = function() 6 | require 'telescope'.load_extension 'frecency' 7 | end, 8 | } 9 | 10 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/gx-extended.lua: -------------------------------------------------------------------------------- 1 | return { 'rmagatti/gx-extended.nvim', 2 | enabled = vim.version().major == 0 and vim.version().minor < 10, 3 | dev = false, 4 | keys = { 'gx' }, 5 | opts = { 6 | open_fn = require'lazy.util'.open, 7 | extensions = { 8 | { 9 | patterns = { '*/plugins/**/*.lua' }, 10 | match_to_url = function(line_string) 11 | local line = string.match(line_string, '["|\'].*/.*["|\']') 12 | local repo = vim.split(line, ':')[1]:gsub('["|\']', '') 13 | local url = 'https://github.com/' .. repo 14 | return (line and repo) and url or nil 15 | end, 16 | } 17 | } 18 | } 19 | } 20 | 21 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/hexokinase.lua: -------------------------------------------------------------------------------- 1 | -- display colour values 2 | return { 'RRethy/vim-hexokinase', 3 | enabled = false, 4 | build = 'make hexokinase', 5 | cmd = { 'HexokinaseToggle', 'HexokinaseTurnOn' }, 6 | init = function() 7 | 8 | vim.g.Hexokinase_ftOptOutPatterns = { 9 | json = { 'colour_names' }, 10 | yaml = { 'colour_names' }, 11 | } 12 | 13 | vim.g.Hexokinase_palettes = { 14 | vim.fn.expand('~/Developer/redhat-ux/red-hat-design-tokens/editor/neovim/hexokinase-vars.json'), 15 | vim.fn.expand('~/Developer/redhat-ux/red-hat-design-tokens/editor/neovim/hexokinase-refs.json'), 16 | } 17 | 18 | end, 19 | } 20 | 21 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/illuminate.lua: -------------------------------------------------------------------------------- 1 | return { 'RRethy/vim-illuminate', 2 | enabled = true, 3 | lazy = true, 4 | dependencies = { 5 | 'nvim-lua/plenary.nvim', 6 | }, 7 | event = { 'CursorMoved', 'InsertLeave' }, 8 | config = function() 9 | require'illuminate'.configure { 10 | filetypes_denylist = { 11 | 'alpha', 12 | 'neo-tree', 13 | 'neo-tree-popup', 14 | 'Telescope', 15 | 'telescope', 16 | } 17 | } 18 | 19 | vim.cmd[[ 20 | hi clear IlluminatedWordText 21 | hi clear IlluminatedWordRead 22 | hi clear IlluminatedWordWrite 23 | hi link IlluminatedWordText CursorLine 24 | hi link IlluminatedWordRead CursorLine 25 | hi link IlluminatedWordWrite CursorLine 26 | hi illuminatedCurWord cterm=italic gui=italic 27 | ]] 28 | end 29 | } 30 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/import-cost.lua: -------------------------------------------------------------------------------- 1 | return { 'barrett-ruth/import-cost.nvim', 2 | enabled = true, 3 | lazy = true, 4 | ft = { 'javascript', 'typescript', 'html' }, 5 | build = 'sh install.sh npm', 6 | opts = {}, 7 | } 8 | 9 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/incline.lua: -------------------------------------------------------------------------------- 1 | return { 'b0o/incline.nvim', 2 | event = 'VeryLazy', 3 | opts = { 4 | window = { 5 | padding = 0, 6 | margin = { horizontal = 0 }, 7 | }, 8 | render = function(props) 9 | local helpers = require'incline.helpers' 10 | local devicons = require'nvim-web-devicons' 11 | local filename = vim.fn.fnamemodify(vim.api.nvim_buf_get_name(props.buf), ':t') 12 | if filename == '' then 13 | filename = '[No Name]' 14 | end 15 | local ft_icon, ft_color = devicons.get_icon_color(filename) 16 | local modified = vim.bo[props.buf].modified 17 | return { 18 | ft_icon and { ' ', ft_icon, ' ', guibg = ft_color, guifg = helpers.contrast_color(ft_color) } or '', 19 | ' ', 20 | { filename, gui = modified and 'bold,italic' or 'bold' }, 21 | ' ', 22 | guibg = '#44406e', 23 | } 24 | end, 25 | }, 26 | } 27 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/indent-blankline.lua: -------------------------------------------------------------------------------- 1 | -- indent guide 2 | return { 'lukas-reineke/indent-blankline.nvim', 3 | enabled = true, 4 | lazy = true, 5 | version = '*', 6 | event = 'CursorMoved', 7 | main = 'ibl', 8 | opts = { 9 | indent = { 10 | -- enabled = true, 11 | -- char = ' ', 12 | }, 13 | scope = { 14 | enabled = true, 15 | show_start = false, 16 | show_end = true, 17 | }, 18 | whitespace = { 19 | remove_blankline_trail = true, 20 | }, 21 | exclude = { 22 | filetypes = { 23 | 'Regexplainer', 24 | 'VGit', 25 | 'alpha', 26 | 'Alpha', 27 | 'dashboard', 28 | 'packer', 29 | 'fugitive', 30 | 'help', 31 | 'neo-tree', 32 | 'notify', 33 | 'unix', 34 | 'dressing', 35 | }, 36 | }, 37 | }, 38 | } 39 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/inlayhints.lua: -------------------------------------------------------------------------------- 1 | return { 'lvimuser/lsp-inlayhints.nvim', 2 | enabled = vim.version().major == 0 and vim.version().minor < 10, 3 | config = function() 4 | 5 | require 'lsp-inlayhints'.setup { 6 | inlay_hints = { 7 | parameter_hints = { 8 | show = true, 9 | prefix = "<- ", 10 | separator = ", ", 11 | remove_colon_start = false, 12 | remove_colon_end = true, 13 | }, 14 | type_hints = { 15 | -- type and other hints 16 | show = true, 17 | prefix = "", 18 | separator = ", ", 19 | remove_colon_start = false, 20 | remove_colon_end = false, 21 | }, 22 | -- separator between types and parameter hints. Note that type hints are 23 | -- shown before parameter 24 | labels_separator = " ", 25 | -- whether to align to the length of the longest line in the file 26 | max_len_align = false, 27 | -- padding from the left if max_len_align is true 28 | max_len_align_padding = 1, 29 | -- whether to align to the extreme right or not 30 | right_align = false, 31 | -- padding from the right if right_align is true 32 | right_align_padding = 7, 33 | -- highlight group 34 | -- highlight = "LspInlayHint", -- default 35 | highlight = "Comment", 36 | }, 37 | } 38 | 39 | -- vim.cmd.hi('link', 'LspInlayHint', 'Comment') 40 | au('LspAttach', { 41 | group = ag('LspAttach_inlayhints', {}), 42 | callback = function(args) 43 | if (args.data and args.data.client_id) then 44 | local client = vim.lsp.get_client_by_id(args.data.client_id) 45 | require 'lsp-inlayhints'.on_attach(client, args.buf, false) 46 | end 47 | end 48 | }) 49 | 50 | end, 51 | } 52 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/legendary.lua: -------------------------------------------------------------------------------- 1 | return { 'mrjones2014/legendary.nvim', 2 | enabled = true, 3 | lazy = false, 4 | priority = 10000, 5 | keys = { 6 | { 'k', ':Legendary', desc = 'Command Palette' }, 7 | }, 8 | opts = { 9 | extensions = { 10 | lazy_nvim = { 11 | auto_register = true, 12 | }, 13 | }, 14 | }, 15 | } 16 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/local-highlight.lua: -------------------------------------------------------------------------------- 1 | return { 'tzachar/local-highlight.nvim', 2 | lazy = true, 3 | enabled = false, 4 | opts = { 5 | file_types = { 6 | 'python', 7 | 'cpp', 8 | 'html', 9 | 'markdown', 10 | 'javascript', 11 | 'typescript', 12 | 'css', 13 | 'lua', 14 | }, 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/lualine.lua: -------------------------------------------------------------------------------- 1 | -- pretty statusline 2 | return { 'nvim-lualine/lualine.nvim', 3 | enabled = true, 4 | config = function() 5 | local theme = ( vim.g.colors_name == 'tokyonight' and 'tokyonight' 6 | or vim.g.colors_name == 'catppuccin' and 'catppuccin' 7 | or 'auto' ) 8 | 9 | local colors = require 'catppuccin.palettes'.get_palette() 10 | 11 | local MODES = { 12 | BUFFERS = colors.teal, 13 | ['c'] = {'COMMAND-LINE', colors.red}, 14 | ['ce'] = {'NORMAL EX', colors.red}, 15 | ['cv'] = {'EX', colors.red}, 16 | ['i'] = {'INSERT', colors.green}, 17 | ['ic'] = {'INS-COMPLETE', colors.green}, 18 | ['n'] = {'NORMAL', colors.blue}, 19 | ['no'] = {'OPERATOR-PENDING', colors.purple}, 20 | ['r'] = {'HIT-ENTER', colors.sky}, 21 | ['r?'] = {':CONFIRM', colors.sky}, 22 | ['rm'] = {'--MORE', colors.blue}, 23 | ['R'] = {'REPLACE', colors.pink}, 24 | ['Rv'] = {'VIRTUAL', colors.mauve}, 25 | ['s'] = {'SELECT', colors.sapphire}, 26 | ['S'] = {'SELECT', colors.sapphire}, 27 | ['␓'] = {'SELECT', colors.sapphire}, 28 | ['t'] = {'TERMINAL', colors.peach}, 29 | ['v'] = {'VISUAL', colors.mauve}, 30 | ['V'] = {'VISUAL LINE', colors.mauve}, 31 | ['␖'] = {'VISUAL BLOCK', colors.mauve}, 32 | ['!'] = {'SHELL', colors.yellow}, 33 | } 34 | 35 | require 'lualine'.setup { 36 | theme = theme, 37 | extentions = {}, 38 | options = { 39 | disabled_filetypes = { 'neo-tree' }, 40 | globalstatus = true, 41 | }, 42 | sections = { 43 | lualine_a = { { 44 | function() 45 | return vim.g.libmodalActiveModeName or MODES[vim.api.nvim_get_mode().mode][1] 46 | end, 47 | color = function(section) 48 | return { gui = 'bold', fg = colors.crust, bg = MODES[vim.g.libmodalActiveModeName] or MODES[vim.api.nvim_get_mode().mode][2] } 49 | end, 50 | } }, 51 | lualine_b = { 'branch', 'diff', 'diagnostics' }, 52 | lualine_c = { 'filename' }, 53 | lualine_x = { 'encoding', 'fileformat', 'filetype' }, 54 | lualine_y = { 'progress' }, 55 | lualine_z = { 'location' }, 56 | }, 57 | } 58 | end 59 | } 60 | 61 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/modes.lua: -------------------------------------------------------------------------------- 1 | return { 'mvllow/modes.nvim', 2 | enabled = false, 3 | config = function() 4 | require'modes'.setup() 5 | end 6 | } 7 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/noice.lua: -------------------------------------------------------------------------------- 1 | return { 'folke/noice.nvim', 2 | enabled = true, 3 | event = 'VeryLazy', 4 | dependencies = { 5 | 'MunifTanjim/nui.nvim', 6 | 'rcarriga/nvim-notify', 7 | }, 8 | config = function() 9 | if vim.fn.has'gui_running' == 0 then 10 | require'noice'.setup { 11 | lsp = { 12 | -- override markdown rendering so that **cmp** and other plugins use **Treesitter** 13 | override = { 14 | ['vim.lsp.util.convert_input_to_markdown_lines'] = true, 15 | ['vim.lsp.util.stylize_markdown'] = true, 16 | ['cmp.entry.get_documentation'] = true, 17 | }, 18 | }, 19 | -- you can enable a preset for easier configuration 20 | presets = { 21 | bottom_search = true, -- use a classic bottom cmdline for search 22 | command_palette = true, -- position the cmdline and popupmenu together 23 | long_message_to_split = true, -- long messages will be sent to a split 24 | inc_rename = true, -- enables an input dialog for inc-rename.nvim 25 | lsp_doc_border = false, -- add a border to hover docs and signature help 26 | }, 27 | views = { 28 | cmdline_popup = { 29 | border = { 30 | style = 'none', 31 | padding = {1, 3}, 32 | }, 33 | filter_options = {}, 34 | win_options = { 35 | winhighlight = 'NormalFloat:NormalFloat,FloatBorder:FloatBorder', 36 | }, 37 | }, 38 | popupmenu = { 39 | backend = 'cmp', 40 | size = { 41 | width = 60, 42 | }, 43 | }, 44 | }, 45 | } 46 | require'telescope'.load_extension'noice' 47 | end 48 | end, 49 | } 50 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/notifier.lua: -------------------------------------------------------------------------------- 1 | return { 'vigoux/notifier.nvim', 2 | enabled = false, 3 | opts = { 4 | -- components = { 'nvim', 'lsp' } -- replace fidget 5 | components = { 'nvim' } 6 | }, 7 | } 8 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/notify.lua: -------------------------------------------------------------------------------- 1 | -- pretty notifications 2 | return { 'rcarriga/nvim-notify', 3 | enabled = false, 4 | config = function() 5 | local notify = require 'notify' 6 | 7 | notify.setup { 8 | background_colour = '#000000', 9 | -- render = 'minimal' 10 | } 11 | 12 | vim.notify = notify 13 | 14 | pcall(function() 15 | require 'telescope'.load_extension 'notify' 16 | end) 17 | 18 | end, 19 | } 20 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/numbers.lua: -------------------------------------------------------------------------------- 1 | -- disables relative line numbers when appropriate 2 | return { 'nkakouros-original/numbers.nvim', 3 | enabled = true, 4 | opts = { 5 | excluded_filetypes = { 6 | 'Alpha', 7 | 'alpha', 8 | 'neo-tree', 9 | 'neo-tree-popup', 10 | 'oil', 11 | 'DressingInput', 12 | 'terminal', 13 | 'Terminal', 14 | '', 15 | 'mason', 16 | 'lazy', 17 | 'packer', 18 | 'toggleterm', 19 | 'Telescope', 20 | 'TelescopePrompt', 21 | }, 22 | }, 23 | } 24 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/oil.lua: -------------------------------------------------------------------------------- 1 | local function parse_output(proc) 2 | local result = proc:wait() 3 | local ret = {} 4 | if result.code == 0 then 5 | for line in vim.gsplit(result.stdout, "\n", { plain = true, trimempty = true }) do 6 | -- Remove trailing slash 7 | line = line:gsub("/$", "") 8 | ret[line] = true 9 | end 10 | end 11 | return ret 12 | end 13 | 14 | -- build git status cache 15 | local function new_git_status() 16 | return setmetatable({}, { 17 | __index = function(self, key) 18 | local ignore_proc = vim.system( 19 | { "git", "ls-files", "--ignored", "--exclude-standard", "--others", "--directory" }, 20 | { 21 | cwd = key, 22 | text = true, 23 | } 24 | ) 25 | local tracked_proc = vim.system({ "git", "ls-tree", "HEAD", "--name-only" }, { 26 | cwd = key, 27 | text = true, 28 | }) 29 | local ret = { 30 | ignored = parse_output(ignore_proc), 31 | tracked = parse_output(tracked_proc), 32 | } 33 | 34 | rawset(self, key, ret) 35 | return ret 36 | end, 37 | }) 38 | end 39 | 40 | local git_status = new_git_status() 41 | 42 | return { 'stevearc/oil.nvim', 43 | keys = { 44 | { '-', 'Oil', mode = 'n', desc = 'Open parent directory' }, 45 | }, 46 | dependencies = { 'nvim-tree/nvim-web-devicons' }, 47 | opts = function() 48 | 49 | -- Clear git status cache on refresh 50 | local refresh = require'oil.actions'.refresh 51 | local orig_refresh = refresh.callback 52 | refresh.callback = function(...) 53 | git_status = new_git_status() 54 | orig_refresh(...) 55 | end 56 | 57 | vim.api.nvim_set_hl(0, 'OilDotFile', vim.tbl_extend( 58 | 'force', 59 | vim.api.nvim_get_hl(0, { name = 'Oil' }), 60 | vim.api.nvim_get_hl(0, { name = 'Comment' }), 61 | { bold = true } 62 | )) 63 | 64 | return { 65 | view_options = { 66 | show_hidden = true, 67 | is_hidden_file = function(name, bufnr) 68 | local dir = require'oil'.get_current_dir(bufnr) 69 | local is_dotfile = vim.startswith(name, '.') and name ~= '..' 70 | if not dir then 71 | return is_dotfile 72 | end 73 | local status = git_status[dir] 74 | if is_dotfile then 75 | return not status.tracked[name] 76 | else 77 | return status.ignored[name] 78 | end 79 | end, 80 | highlight_filename = function(entry, is_hidden) 81 | if vim.startswith(entry.name, '.') and entry.name ~= '..' then 82 | return 'OilDotFile' 83 | end 84 | end 85 | } 86 | } 87 | end 88 | } 89 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/prettyfold.lua: -------------------------------------------------------------------------------- 1 | -- pretty folds with previews 2 | return { 'anuvyklack/pretty-fold.nvim', 3 | enabled = false, 4 | dependencies = { 5 | 'anuvyklack/nvim-keymap-amend', 6 | 'anuvyklack/fold-preview.nvim' 7 | }, 8 | config = function() 9 | require 'pretty-fold'.setup { 10 | keep_indentation = false, 11 | fill_char = '━', 12 | sections = { 13 | left = { 14 | '━ ', function() return string.rep('>', vim.v.foldlevel) end, ' ━┫', 'content', '┣' 15 | }, 16 | right = { 17 | '┫ ', 'number_of_folded_lines', ': ', 'percentage', ' ┣━━', 18 | } 19 | } 20 | } 21 | 22 | require 'fold-preview'.setup() 23 | end, 24 | } 25 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/regexplainer.lua: -------------------------------------------------------------------------------- 1 | return { 'bennypowers/nvim-regexplainer', 2 | enabled = true, 3 | dev = true, 4 | ft = { 'javascript', 'typescript', 'html', 'python', 'jinja' }, 5 | dependencies = { 6 | 'MunifTanjim/nui.nvim', 7 | 'edluffy/hologram.nvim' 8 | }, 9 | opts = { 10 | -- test authoring mode 11 | -- display = 'split', 12 | -- debug = true, 13 | -- mode = 'narrative', 14 | 15 | auto = true, 16 | display = 'popup', 17 | -- display = 'split', 18 | debug = true, 19 | mode = 'narrative', 20 | -- mode = 'debug', 21 | -- mode = 'railroad', 22 | 23 | -- narrative = { 24 | -- indentation_string = '> ' 25 | -- }, 26 | 27 | }, 28 | } 29 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/reticle.lua: -------------------------------------------------------------------------------- 1 | return { 'tummetott/reticle.nvim', 2 | event = { 'WinNew', 'WinLeave' }, 3 | enabled = false, 4 | opts = { 5 | always_highlight_number = true, 6 | on_focus = { 7 | cursorline = { 8 | 'alpha', 9 | 'neo-tree', 10 | }, 11 | }, 12 | }, 13 | } 14 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/scrollbar.lua: -------------------------------------------------------------------------------- 1 | return { 'petertriho/nvim-scrollbar', 2 | enabled = true, 3 | opts = {}, 4 | } 5 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/statuscol.lua: -------------------------------------------------------------------------------- 1 | return { 'luukvbaal/statuscol.nvim', 2 | enabled = true, 3 | cond = vim.fn.exists'&statuscolumn' == 1, 4 | config = function() 5 | local builtin = require'statuscol.builtin' 6 | require'statuscol'.setup { 7 | setopt = true, 8 | relculright = true, 9 | segments = { 10 | { text = { builtin.foldfunc }, click = 'v:lua.ScFa' }, 11 | { text = { '%s' }, click = 'v:lua.ScSa' }, 12 | { text = { builtin.lnumfunc }, click = 'v:lua.ScLa' }, 13 | }, 14 | } 15 | end, 16 | } 17 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/tabby.lua: -------------------------------------------------------------------------------- 1 | return { 'nanozuki/tabby.nvim', 2 | enabled = false, 3 | config = function() 4 | local theme = { 5 | fill = 'TabLineFill', 6 | -- Also you can do this: fill = { fg='#f2e9de', bg='#907aa9', style='italic' } 7 | head = 'TabLine', 8 | current_tab = 'TabLineSel', 9 | tab = 'TabLine', 10 | win = 'TabLine', 11 | tail = 'TabLine', 12 | } 13 | require('tabby.tabline').set(function(line) 14 | return { 15 | { 16 | { '  ', hl = theme.head }, 17 | line.sep('', theme.head, theme.fill), 18 | }, 19 | line.tabs().foreach(function(tab) 20 | local hl = tab.is_current() and theme.current_tab or theme.tab 21 | return { 22 | line.sep('', hl, theme.fill), 23 | tab.is_current() and '' or '󰆣', 24 | tab.number(), 25 | tab.name(), 26 | tab.close_btn(''), 27 | line.sep('', hl, theme.fill), 28 | hl = hl, 29 | margin = ' ', 30 | } 31 | end), 32 | line.spacer(), 33 | line.wins_in_tab(line.api.get_current_tab()).foreach(function(win) 34 | return { 35 | line.sep('', theme.win, theme.fill), 36 | win.is_current() and '' or '', 37 | win.buf_name(), 38 | line.sep('', theme.win, theme.fill), 39 | hl = theme.win, 40 | margin = ' ', 41 | } 42 | end), 43 | { 44 | line.sep('', theme.tail, theme.fill), 45 | { '  ', hl = theme.tail }, 46 | }, 47 | hl = theme.fill, 48 | } 49 | end) 50 | end 51 | } 52 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/telescope-heading.lua: -------------------------------------------------------------------------------- 1 | -- navigate to markdown headers 2 | return { 'crispgm/telescope-heading.nvim', 3 | lazy = true, 4 | ft = { 'md', 'markdown' }, 5 | } 6 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/toggleterm.lua: -------------------------------------------------------------------------------- 1 | local term_lazydotfiles 2 | local term_lazygit 3 | local term_pinned 4 | 5 | local lazygit_term_options = { 6 | cmd = 'lazygit', 7 | direction = 'float', 8 | hidden = true, 9 | -- Close a terminal whose command exits cleanly. 10 | -- For good measure, refresh the neo-tree filesystem view either way 11 | on_exit = function(terminal, _, exit_code) 12 | if exit_code == 0 then 13 | terminal:close() 14 | end 15 | pcall(function() 16 | require 'neo-tree.sources.manager'.refresh 'filesystem' 17 | end) 18 | end, 19 | start_in_insert = true, 20 | shade_terminals = false, 21 | highlights = { 22 | -- NormalFloat = { 23 | -- guibg = "#212121", 24 | -- }, 25 | }, 26 | float_opts = { 27 | -- winblend = 3, 28 | border = 'shadow', 29 | }, 30 | } 31 | 32 | ---Launch lazygit in a scratch terminal, 33 | ---but if we're in `~/.config`, use the bare repo 34 | local function toggle_term_lazygit() 35 | local cwd = vim.loop.cwd() 36 | if cwd and vim.startswith(cwd, vim.fn.expand'~/.config') then 37 | term_lazydotfiles:toggle() 38 | else 39 | local Terminal = require 'toggleterm.terminal'.Terminal 40 | term_lazygit = term_lazygit or Terminal:new(lazygit_term_options) 41 | term_lazygit:toggle() 42 | end 43 | end 44 | 45 | local function toggle_term_pinned() 46 | term_pinned:toggle() 47 | end 48 | 49 | -- 🖥️ terminal emulator 50 | return { 'akinsho/toggleterm.nvim', 51 | enabled = true, 52 | keys = { 53 | { '', toggle_term_pinned, desc = 'Toggle terminal in horizontal split', mode = { 'n', 'i', 't' } }, 54 | { '', toggle_term_lazygit, desc = 'Git UI via lazygit', mode = { 'n', 't' } }, 55 | }, 56 | dependencies = { 57 | { 'stevearc/stickybuf.nvim', enabled = false, opts = {} } 58 | }, 59 | config = function() 60 | require'toggleterm'.setup { 61 | shell = 'fish' 62 | } 63 | 64 | local Terminal = require 'toggleterm.terminal'.Terminal 65 | 66 | term_lazygit = Terminal:new(lazygit_term_options) 67 | 68 | term_lazydotfiles = Terminal:new(vim.tbl_extend('force', lazygit_term_options, { 69 | cmd = 'lazygit --git-dir=$HOME/.cfg --work-tree=$HOME', 70 | })) 71 | 72 | term_pinned = Terminal:new { 73 | direction = 'horizontal', 74 | size = 20, 75 | dir = 'git_dir', 76 | start_in_insert = true, 77 | on_create = function() 78 | pcall(function() require'stickybuf'.pin_buftype() end) 79 | end 80 | } 81 | 82 | au('TermOpen', { 83 | pattern = '*', 84 | group = ag('terminal_setup', {}), 85 | command = 'nnoremap i' 86 | }) 87 | end 88 | } 89 | 90 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/ufo.lua: -------------------------------------------------------------------------------- 1 | return { 'kevinhwang91/nvim-ufo', 2 | enabled = true, 3 | keys = { 4 | { 'zc' }, 5 | { 'zo' }, 6 | { 'zC' }, 7 | { 'zO' }, 8 | { 'za' }, 9 | { 'zA' }, 10 | { 'zr', function() require'ufo'.openFoldsExceptKinds() end, desc = 'Open folds except kinds' }, 11 | { 'zR', function() require'ufo'.openAllFolds() end, desc = 'Open all folds' }, 12 | { 'zM', function() require'ufo'.closeAllFolds() end, desc = 'Close all folds' }, 13 | { 'zm', function() require'ufo'.closeAllFolds() end, desc = 'Close folds with' }, 14 | { 'zp', function() if not require'ufo'.peedFoldedLinesUnderCursor() then vim.lsp.buf.hover() end end, desc = 'Peek folds' }, 15 | }, 16 | event = 'VeryLazy', 17 | dependencies = { 18 | 'kevinhwang91/promise-async', 19 | 'luukvbaal/statuscol.nvim', 20 | }, 21 | init = function() 22 | vim.opt.fillchars = [[eob: ,fold: ,foldopen:,foldsep: ,foldclose:]] 23 | vim.opt.foldcolumn = tostring(vim.fn.exists'&statuscolumn') 24 | vim.opt.foldlevel = 99 25 | vim.opt.foldlevelstart = 99 26 | vim.opt.foldenable = true 27 | end, 28 | opts = { 29 | provider_selector = function() 30 | return { 'treesitter', 'indent' } 31 | end 32 | }, 33 | } 34 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/web-devicons.lua: -------------------------------------------------------------------------------- 1 | local MD = ''; 2 | local GH = ''; 3 | local TS = ''; 4 | local JS = ''; 5 | local HTML = ''; 6 | local NODE = ''; 7 | 8 | return { 'nvim-tree/nvim-web-devicons', 9 | opts = { 10 | override = { 11 | ['.github'] = { 12 | icon = GH, 13 | name = "GitHub", 14 | }, 15 | ['tsconfig.json'] = { 16 | icon = TS, 17 | -- color = "#284d5d", -- darker colour for light bg 18 | color = '#688c9c', -- lighter colour for dark bg 19 | name = 'TSConfigJson' 20 | }, 21 | ['.nvmrc'] = { 22 | icon = NODE, 23 | color = 'grey', 24 | name = 'NvmRc' 25 | }, 26 | -- ['.eslintignore'] = { 27 | -- icon = '' 28 | -- }, 29 | node_modules = { 30 | icon = NODE, 31 | color = '#90a959', 32 | name = 'NodeModules', 33 | }, 34 | }, 35 | override_by_extension = { 36 | md = { 37 | icon = MD, 38 | color = '#519aba', 39 | cterm_color = '67', 40 | name = 'Markdown', 41 | }, 42 | js = { 43 | icon = JS, 44 | color = '#f7df1e', 45 | name = 'JavaScript', 46 | }, 47 | ts = { 48 | icon = TS, 49 | color = '#519aba', 50 | cterm_color = '67', 51 | name = 'TypeScript', 52 | }, 53 | cjs = { 54 | icon = JS, 55 | color = '#5FA04E', 56 | name = 'CommonJS' 57 | }, 58 | njk = { 59 | icon = HTML, 60 | color = '#3d8137', 61 | name = 'Nunjucks', 62 | }, 63 | webc = { 64 | icon = HTML, 65 | color = '#ffa07a', 66 | name = 'WebC', 67 | }, 68 | }, 69 | }, 70 | } 71 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/whichkey.lua: -------------------------------------------------------------------------------- 1 | -- Live cheat sheet for key bindings 2 | return { 'folke/which-key.nvim', 3 | enabled = true, 4 | dependencies = { 'mrjones2014/legendary.nvim' }, 5 | config = function() 6 | local wk = require'which-key' 7 | wk.setup { 8 | preset = 'helix', 9 | } 10 | 11 | wk.add({ 12 | mode = {'n', 'v' }, 13 | { 'F', group = 'Telescope' }, 14 | { '', group = 'Leader' }, 15 | { 'l', group = 'LSP' }, 16 | { 'r', group = '+re...', }, 17 | { 'ro', group = '+colours' }, 18 | { 'rc', group = '+caser' }, 19 | { 's', group = '+screenshots' }, 20 | { 'f', group = '+telescope' }, 21 | }) 22 | 23 | wk.add({ 24 | mode = 'v', 25 | { 'gL', name = 'align right' }, 26 | { 'gl', name = 'align left' }, 27 | { 'g%', name = 'match surround backwards' }, 28 | { 'gn', group = 'incremental' }, 29 | { 'gnn', name = 'select' }, 30 | }) 31 | 32 | end 33 | } 34 | 35 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/winpick.lua: -------------------------------------------------------------------------------- 1 | local function winpick() 2 | require 'winpick'.select() 3 | end 4 | 5 | return { 'gbrlsnchs/winpick.nvim', 6 | enabled = true, 7 | lazy = true, 8 | keys = { 9 | { 'w', winpick, desc = 'Pick window', mode = { 'n' } }, 10 | { '', winpick, desc = 'Pick window', mode = { 't' } }, 11 | }, 12 | opts = {}, 13 | } 14 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/winsep.lua: -------------------------------------------------------------------------------- 1 | return { 'nvim-zh/colorful-winsep.nvim', 2 | enabled = true, 3 | opts = {} 4 | } 5 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/ui/wrapping.lua: -------------------------------------------------------------------------------- 1 | return { 'andrewferrier/wrapping.nvim', 2 | enabled = true, 3 | opts = {} 4 | } 5 | -------------------------------------------------------------------------------- /.config/nvim/lua/utils.lua: -------------------------------------------------------------------------------- 1 | local M = {}; 2 | 3 | --- Most Recently Used files 4 | --- @param start number 5 | --- @param items_number number optional number of items to generate, default = 10 6 | --- @param cwd string optional 7 | function M.mru(start, items_number, cwd, opts) 8 | local cont, path = pcall(require,'plenary.path') 9 | if not cont then return {} end 10 | 11 | opts = opts or { 12 | ignore = function(filepath, ext) 13 | return (string.find(filepath, "COMMIT_EDITMSG")) or (vim.tbl_contains({ "gitcommit" }, ext)) 14 | end, 15 | } 16 | 17 | items_number = items_number or 9 18 | 19 | local oldfiles = {} 20 | for _, v in pairs(vim.v.oldfiles) do 21 | if #oldfiles == items_number then 22 | break 23 | end 24 | local cwd_cond 25 | if not cwd then 26 | cwd_cond = true 27 | else 28 | cwd_cond = vim.startswith(v, cwd) 29 | end 30 | local ignore_ext = '' 31 | local match = v:match'^.+(%..+)$' if match then ignore_ext = match:sub(2) end 32 | local ignore = (opts.ignore and opts.ignore(v, ignore_ext)) or false 33 | if (vim.fn.filereadable(v) == 1) and cwd_cond and not ignore then 34 | oldfiles[#oldfiles + 1] = v 35 | end 36 | end 37 | 38 | local special_shortcuts = { 'a', 's', 'd' } 39 | local target_width = 35 40 | 41 | local tbl = {} 42 | for i, file_name in ipairs(oldfiles) do 43 | local short_file_name 44 | if cwd then 45 | short_file_name = vim.fn.fnamemodify(file_name, ":.") 46 | else 47 | short_file_name = vim.fn.fnamemodify(file_name, ":~") 48 | end 49 | 50 | if (#short_file_name > target_width) then 51 | short_file_name = path.new(short_file_name):shorten(1, { -2, -1 }) 52 | if (#short_file_name > target_width) then 53 | short_file_name = path.new(short_file_name):shorten(1, { -1 }) 54 | end 55 | end 56 | 57 | local shortcut = "" 58 | if i <= #special_shortcuts then 59 | shortcut = special_shortcuts[i] 60 | else 61 | shortcut = tostring(i + start - 1 - #special_shortcuts) 62 | end 63 | 64 | tbl[i] = { file_name, " " .. shortcut, short_file_name } 65 | end 66 | 67 | return tbl 68 | end 69 | 70 | return M 71 | -------------------------------------------------------------------------------- /.config/nvim/luasnippets/css.lua: -------------------------------------------------------------------------------- 1 | -- return require'designtokens.luasnip'.make_snippets() 2 | -------------------------------------------------------------------------------- /.config/nvim/luasnippets/git.lua: -------------------------------------------------------------------------------- 1 | local ls = require("luasnip") 2 | local s = ls.snippet 3 | local t = ls.text_node 4 | local i = ls.insert_node 5 | 6 | return { 7 | git = { 8 | -- choice node > commit types 9 | -- choice node > scope yes/no 10 | s({ 11 | 'chore', 12 | 'docs', 13 | 'feat', 14 | 'fix', 15 | 'style', 16 | }, { 17 | i(1, "type"), t("("), i(2, "scope"), t("): "), i(3, "description"), 18 | }), 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /.config/nvim/luasnippets/markdown.lua: -------------------------------------------------------------------------------- 1 | ---@diagnostic disable: unused-local 2 | 3 | local ls = require 'luasnip' 4 | local s = ls.snippet 5 | local sn = ls.snippet_node 6 | local isn = ls.indent_snippet_node 7 | local t = ls.text_node 8 | local i = ls.insert_node 9 | local f = ls.function_node 10 | local c = ls.choice_node 11 | local d = ls.dynamic_node 12 | local r = ls.restore_node 13 | local events = require 'luasnip.util.events' 14 | local ai = require 'luasnip.nodes.absolute_indexer' 15 | local fmt = require 'luasnip.extras.fmt'.fmt 16 | local m = require 'luasnip.extras'.m 17 | local lambda = require 'luasnip.extras'.l 18 | 19 | local fenced_code_block_tpl = [[ 20 | ```{} 21 | {} 22 | ``` 23 | ]] 24 | 25 | local fenced_code_block_options = { 26 | show_condition = function() 27 | return false 28 | -- return #vim.trim(vim.api.nvim_get_current_line()) == 0 29 | end, 30 | } 31 | 32 | ---@param lang string Fenced code block language tag 33 | ---@param placeholder string Placeholder text 34 | local function fenced_code_block(lang, placeholder) 35 | return s({ 36 | trig = lang, 37 | name = lang:upper() .. ' fenced code block', 38 | }, fmt(fenced_code_block_tpl, { t(lang), i(1, placeholder) }), fenced_code_block_options) 39 | end 40 | 41 | return { 42 | s({ 43 | trig = '```', 44 | name = 'fenced code block', 45 | }, fmt(fenced_code_block_tpl, { i(1, 'lang'), i(2, 'body') }), fenced_code_block_options), 46 | fenced_code_block('html', '

Insert your HTML

'), 47 | fenced_code_block('css', ':host { display: block; }'), 48 | fenced_code_block('bash', '#!/bin/bash'), 49 | fenced_code_block('sh', 'npm i lit'), 50 | fenced_code_block('js', 'console.log("hello world")'); 51 | fenced_code_block('ts', 'console.log("hello world")'), 52 | s({ 53 | trig = '---', 54 | name = 'changeset' 55 | }, fmt([[--- 56 | "{}": {} 57 | --- 58 | {}]], { 59 | i(1, 'package'), 60 | c(2, { t'patch', t'minor', t'major' }), 61 | i(3, 'description'), 62 | })), 63 | } 64 | -------------------------------------------------------------------------------- /.config/nvim/snippets/html.snippets: -------------------------------------------------------------------------------- 1 | snippet html 2 | 3 | 4 | 5 | 6 | 7 | ${2:`substitute(vim_snippets#Filename('', 'Page Title'), '^.', '\u&', '')`} 8 | ${3:link} 9 | 10 | 11 | ${0:body} 12 | 13 | 14 | 15 | snippet pfe 16 | PatternFly Elements 17 | 18 | snippet pfeperformant 19 |

20 | A performant design system, made with 21 | ☕ 22 | and 23 | Web Components 24 | for 25 | Performant, progressively-enhanced experiences 26 |

27 | 28 | snippet pfedemohtml 29 | 30 | 31 | 32 | 33 | 34 | PatternFly Element 35 | 36 | 37 | 38 | 54 | 55 | 62 | 63 | 66 | 67 | 68 | 69 | 70 | 71 | snippet module 72 | 75 | 76 | snippet modulesrc 77 | 78 | 79 | snippet importmap 80 | 87 | -------------------------------------------------------------------------------- /.config/nvim/snippets/lua.snippets: -------------------------------------------------------------------------------- 1 | snippet #! 2 | #!/usr/bin/env lua 3 | $1 4 | snippet local 5 | local ${1:x} = ${0:1} 6 | snippet fun 7 | function ${1:fname}(${2:...}) 8 | ${0:-- body} 9 | end 10 | snippet for 11 | for ${1:i}=${2:1},${3:10} do 12 | ${0:print(i)} 13 | end 14 | snippet forp 15 | for ${1:i},${2:v} in pairs(${3:table_name}) do 16 | ${0:-- body} 17 | end 18 | snippet fori 19 | for ${1:i},${2:v} in ipairs(${3:table_name}) do 20 | ${0:-- body} 21 | end 22 | snippet if 23 | if ${1:condition} then 24 | ${2:-- body} 25 | end 26 | snippet ife 27 | if ${1:condition} then 28 | ${2:-- if condition} 29 | else 30 | ${0:-- else} 31 | end 32 | snippet elif 33 | elseif ${1:condition} then 34 | ${0:--body} 35 | snippet repeat 36 | repeat 37 | ${1:--body} 38 | until ${0:condition} 39 | snippet while 40 | while ${1:condition} do 41 | ${0:--body} 42 | end 43 | snippet print 44 | print("${1:string}") 45 | snippet im 46 | import "${1:import file}" 47 | -------------------------------------------------------------------------------- /.config/nvim/snippets/markdown.snippets: -------------------------------------------------------------------------------- 1 | snippet pfereadme "PFE readme" 2 | # PatternFly Elements ${1:title} 3 | 4 | ${$VISUAL} 5 | 6 | Read more about ${1} in the [PatternFly Elements ${1} documentation](https://patternflyelements.org/components/${2:slug}) 7 | 8 | ## Installation 9 | 10 | Load \`\` via CDN: 11 | 12 | \`\`\`html 13 | 14 | \`\`\` 15 | 16 | Or, if you are using [NPM](https://npm.im), install it 17 | 18 | \`\`\`bash 19 | npm install @patternfly/pfe-${2} 20 | \`\`\` 21 | 22 | Then once installed, import it to your application: 23 | 24 | \`\`\`js 25 | import '@patternfly/pfe-${2}'; 26 | \`\`\` 27 | 28 | ## Usage 29 | 30 | snippet section "RHDS Section" 31 | {% section headline="${1}" %} 32 | ${2} 33 | {% endsection %} 34 | 35 | snippet example "RHDS Example" 36 | {% example headline="${1}" %} 37 | ${2} 38 | {% endexample %} 39 | -------------------------------------------------------------------------------- /.config/nvim/snippets/scss.snippets: -------------------------------------------------------------------------------- 1 | extends css 2 | 3 | snippet $ 4 | $${1:variable}: ${0:value}; 5 | snippet imp 6 | @import '${0}'; 7 | snippet use 8 | @use '${0}'; 9 | snippet usea 10 | @use '${0}' as ${1:*}; 11 | snippet mix 12 | @mixin ${1:name}(${2}) { 13 | ${0} 14 | } 15 | snippet inc 16 | @include ${1:mixin}(${2}); 17 | snippet ext 18 | @extend ${0}; 19 | snippet fun 20 | @function ${1:name}(${2:args}) { 21 | ${0} 22 | } 23 | snippet if 24 | @if ${1:condition} { 25 | ${0} 26 | } 27 | snippet ife 28 | @if ${1:condition} { 29 | ${2} 30 | } @else { 31 | ${0} 32 | } 33 | snippet eif 34 | @else if ${1:condition} { 35 | ${0} 36 | } 37 | snippet for 38 | @for ${1:$i} from ${2:1} through ${3:3} { 39 | ${0} 40 | } 41 | snippet each 42 | @each ${1:$item} in ${2:items} { 43 | ${0} 44 | } 45 | snippet while 46 | @while ${1:$i} ${2:>} ${3:0} { 47 | ${0} 48 | } 49 | -------------------------------------------------------------------------------- /.config/nvim/snippets/typescript.snippets: -------------------------------------------------------------------------------- 1 | extends javascript 2 | 3 | snippet tconst "ts const" 4 | const ${1}: ${2:any} = ${3}; 5 | ${0} 6 | 7 | snippet tlet "ts let" 8 | let ${1}: ${2:any} = ${3}; 9 | ${0} 10 | 11 | snippet tvar "ts var" 12 | var ${1}: ${2:any} = ${3}; 13 | ${0} 14 | 15 | snippet + "ts create field" 16 | ${1}: ${0:any} 17 | 18 | snippet #+ "ts create private field using #" 19 | #${1}: ${0:any} 20 | 21 | snippet tpfi "ts create public field" 22 | public ${1}: ${0:any} 23 | 24 | snippet tprfi "ts create private field" 25 | private ${1}: ${0:any} 26 | 27 | snippet tprofi "ts create protected field" 28 | protected ${1}: ${0:any} 29 | 30 | snippet int "interface" 31 | interface ${1} { 32 | ${2}: ${3:any}; 33 | ${0} 34 | } 35 | 36 | snippet intx "interface extends" 37 | interface ${1} extends ${2} { 38 | ${3}: ${4:any}; 39 | ${0} 40 | } 41 | 42 | snippet tfun "ts function" 43 | function ${1}(${2}): ${3:any} { 44 | ${0} 45 | } 46 | 47 | snippet tpmet "ts public method" 48 | public ${1}(${2}): ${3:any} { 49 | ${0} 50 | } 51 | 52 | snippet tpsmet "ts public static method" 53 | public static ${1}(${2}): ${3:any} { 54 | ${0} 55 | } 56 | 57 | snippet tprmet "ts private method" 58 | private ${1}(${2}): ${3:any} { 59 | ${0} 60 | } 61 | 62 | snippet tpromet "ts protected method" 63 | protected ${1}(${2}): ${3:any} { 64 | ${0} 65 | } 66 | 67 | snippet tcla "ts class" 68 | class ${1} { 69 | ${2} 70 | constructor(public ${3}: ${4: any}) { 71 | ${5} 72 | } 73 | ${0} 74 | } 75 | 76 | snippet tclax "ts class extends" 77 | class ${1} extends ${2} { 78 | ${3} 79 | constructor(public ${4}: ${5: any}) { 80 | ${6} 81 | } 82 | ${} 83 | } 84 | -------------------------------------------------------------------------------- /.config/nvim/spell/en.utf-8.add: -------------------------------------------------------------------------------- 1 | fieldset's 2 | fieldset 3 | accessor 4 | observedAttributes 5 | connectedCallback 6 | attributeChangedCallback 7 | ElementInternals 8 | lazygit 9 | config 10 | eleventyConfig 11 | css 12 | svg 13 | a11y 14 | esbuild 15 | execa 16 | patternfly 17 | rhds 18 | dx 19 | json 20 | npm's 21 | systemd 22 | podman 23 | gentoo 24 | podlet 25 | listbox 26 | js 27 | instanceof 28 | HTMLElement 29 | combobox 30 | -------------------------------------------------------------------------------- /.config/nvim/spell/en.utf-8.add.spl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bennypowers/dotfiles/cd078c7bcc6996394e17199a2c89d44e8b0682c9/.config/nvim/spell/en.utf-8.add.spl -------------------------------------------------------------------------------- /.config/screenie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bennypowers/dotfiles/cd078c7bcc6996394e17199a2c89d44e8b0682c9/.config/screenie.png -------------------------------------------------------------------------------- /.config/solaar/rules.yaml: -------------------------------------------------------------------------------- 1 | %YAML 1.3 2 | --- 3 | - Device: 90DB215F 4 | - Key: [Back Button, pressed] 5 | - KeyPress: 6 | - Super_L 7 | - click 8 | ... 9 | --- 10 | - Key: [Forward Button, pressed] 11 | - Device: 90DB215F 12 | - KeyPress: 13 | - [Super_L] 14 | - click 15 | - KeyPress: 16 | - [Super_L] 17 | - click 18 | ... 19 | -------------------------------------------------------------------------------- /.config/starship.toml: -------------------------------------------------------------------------------- 1 | [shell] 2 | bash_indicator = '  ' 3 | fish_indicator = '' 4 | style = 'bold bright-green' 5 | format = '[$indicator]($style)' 6 | disabled = false 7 | 8 | [container] 9 | symbol = '🥡' 10 | style = 'bold bright-red' 11 | format = '[$symbol $name ]($style)' 12 | -------------------------------------------------------------------------------- /.config/sway/config: -------------------------------------------------------------------------------- 1 | set $mod Mod4 2 | set $left h 3 | set $down j 4 | set $up k 5 | set $right l 6 | set $term kitty 7 | set $menu rofi -show run 8 | 9 | exec /usr/libexec/polkit-gnome-authentication-agent-1 10 | exec swaybg -i $HOME/Pictures/Wallpaper/Earthbound/burglin.png -m fill 11 | 12 | include $HOME/.config/sway/config.d/* 13 | include /etc/sway/config.d/* 14 | -------------------------------------------------------------------------------- /.config/sway/config.d/10-effects.conf: -------------------------------------------------------------------------------- 1 | gaps inner 5 2 | gaps outer 5 3 | smart_gaps off 4 | 5 | blur enable 6 | blur_passes 2 7 | blur_radius 4 8 | corner_radius 12 9 | shadows enable 10 | shadows_on_csd disable 11 | layer_effects "waybar" blur disable; shadows disable; corner_radius 0 12 | 13 | titlebar_separator disable 14 | 15 | default_border none 16 | default_floating_border none 17 | titlebar_border_thickness 0 18 | # font pango:monospace 0 19 | 20 | default_dim_inactive 0.2 21 | -------------------------------------------------------------------------------- /.config/sway/config.d/20-bar.conf: -------------------------------------------------------------------------------- 1 | bar { 2 | position top 3 | swaybar_command waybar 4 | } 5 | -------------------------------------------------------------------------------- /.config/tmux/tmux.conf: -------------------------------------------------------------------------------- 1 | # Terminal Setup 2 | 3 | set -g default-terminal "tmux-256color" 4 | set -ag terminal-overrides ",xterm-256color:RGB" 5 | 6 | set -g default-shell $SHELL 7 | 8 | # split panes using | and - 9 | bind | split-window -h 10 | bind - split-window -v 11 | unbind '"' 12 | unbind % 13 | 14 | # vim-like pane bindings 15 | bind j select-pane -D 16 | bind k select-pane -U 17 | bind h select-pane -L 18 | bind l select-pane -R 19 | 20 | # Options 21 | set-option -g prefix C-b 22 | set-option -g status-interval 5 23 | set-option -g automatic-rename on 24 | set-option -g automatic-rename-format '#{b:pane_current_path}' 25 | 26 | set -g status-position bottom 27 | set -g mouse on 28 | 29 | # To copy, left click and drag to highlight text in yellow, 30 | # once you release left click yellow text will disappear 31 | # and will automatically be available in clibboard 32 | 33 | # Use vim keybindings in copy mode 34 | setw -g mode-keys vi 35 | 36 | # List of plugins 37 | set -g @plugin 'tmux-plugins/tpm' 38 | set -g @plugin 'tmux-plugins/tmux-logging' 39 | set -g @plugin 'tmux-plugins/tmux-sensible' 40 | set -g @plugin 'tmux-plugins/tmux-yank' 41 | set -g @plugin 'alexwforsythe/tmux-which-key' 42 | set -g @plugin 'erikw/tmux-powerline' 43 | setenv -g TMUX_POWERLINE_THEME 'bubble' 44 | 45 | # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) 46 | run -b '~/.config/tmux/plugins/tpm/tpm' 47 | -------------------------------------------------------------------------------- /.config/ulauncher/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "com.github.rootwork.ulauncher-symbol": { 3 | "id": "com.github.rootwork.ulauncher-symbol", 4 | "url": "https://github.com/rootwork/ulauncher-symbol", 5 | "updated_at": "2022-07-15T14:57:28.182880", 6 | "last_commit": "c5d7ab5c94c1b418cb1f8a9161be169a29c65658", 7 | "last_commit_time": "2022-02-24T01:17:09" 8 | }, 9 | "com.github.mikebarkmin.ulauncher-duckduckgo": { 10 | "id": "com.github.mikebarkmin.ulauncher-duckduckgo", 11 | "url": "https://github.com/mikebarkmin/ulauncher-duckduckgo", 12 | "updated_at": "2022-07-15T14:58:08.881926", 13 | "last_commit": "f2ea6a187082c600a59acc9cca6e288d96f66cc0", 14 | "last_commit_time": "2021-08-07T18:51:44" 15 | }, 16 | "com.github.epholys.ultz": { 17 | "id": "com.github.epholys.ultz", 18 | "url": "https://github.com/Epholys/ultz", 19 | "updated_at": "2022-07-15T14:58:35.107145", 20 | "last_commit": "9f0749d6ab1fcb99545dae75934b698e5ff975b6", 21 | "last_commit_time": "2021-05-12T14:01:01" 22 | }, 23 | "com.github.kbialek.ulauncher-bitwarden": { 24 | "id": "com.github.kbialek.ulauncher-bitwarden", 25 | "url": "https://github.com/kbialek/ulauncher-bitwarden", 26 | "updated_at": "2022-07-15T14:59:06.025354", 27 | "last_commit": "5701f18b7d4d14bb0c2da3ccfbaa618804b27d4a", 28 | "last_commit_time": "2022-02-11T10:14:06" 29 | }, 30 | "com.github.eckhoff42.ulauncher-favorite-directories": { 31 | "id": "com.github.eckhoff42.ulauncher-favorite-directories", 32 | "url": "https://github.com/Eckhoff42/Ulauncher-favorite-directories", 33 | "updated_at": "2022-07-15T14:59:58.290092", 34 | "last_commit": "2b26dacb955d0d6a17092dd8fd2671951594898a", 35 | "last_commit_time": "2022-05-13T07:45:27" 36 | }, 37 | "com.github.friday.ulauncher-clipboard": { 38 | "id": "com.github.friday.ulauncher-clipboard", 39 | "url": "https://github.com/friday/ulauncher-clipboard", 40 | "updated_at": "2022-07-15T15:00:41.002627", 41 | "last_commit": "9c8c0de1fd86504754300da8278fbc3db9b1a2b5", 42 | "last_commit_time": "2022-01-18T05:32:06" 43 | }, 44 | "com.github.aksdb.ulauncher-gitmoji": { 45 | "id": "com.github.aksdb.ulauncher-gitmoji", 46 | "url": "https://github.com/aksdb/ulauncher-gitmoji", 47 | "updated_at": "2022-07-15T15:00:47.645705", 48 | "last_commit": "acc3d208f82cd208432b522ff976e9e5fc0e230f", 49 | "last_commit_time": "2022-01-21T07:58:14" 50 | } 51 | } -------------------------------------------------------------------------------- /.config/ulauncher/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "blacklisted-desktop-dirs": "/usr/share/locale:/usr/share/app-install:/usr/share/kservices5:/usr/share/fk5:/usr/share/kservicetypes5:/usr/share/applications/screensavers:/usr/share/kde4:/usr/share/mimelnk", 3 | "clear-previous-query": true, 4 | "disable-desktop-filters": false, 5 | "grab-mouse-pointer": false, 6 | "hotkey-show-app": "space", 7 | "render-on-screen": "mouse-pointer-monitor", 8 | "show-indicator-icon": true, 9 | "show-recent-apps": "0", 10 | "terminal-command": "", 11 | "theme-name": "catppuccin" 12 | } -------------------------------------------------------------------------------- /.config/ulauncher/shortcuts.json: -------------------------------------------------------------------------------- 1 | { 2 | "c91f6999-25a7-4476-9a8d-335ea88a9e60": { 3 | "id": "c91f6999-25a7-4476-9a8d-335ea88a9e60", 4 | "name": "Google Search", 5 | "keyword": "g", 6 | "cmd": "https://google.com/search?q=%s", 7 | "icon": "/usr/share/ulauncher/media/google-search-icon.png", 8 | "is_default_search": true, 9 | "run_without_argument": false, 10 | "added": 1657884888.058328 11 | }, 12 | "3292e2b8-a10a-425d-80d2-a27034db72d9": { 13 | "id": "3292e2b8-a10a-425d-80d2-a27034db72d9", 14 | "name": "Stack Overflow", 15 | "keyword": "so", 16 | "cmd": "https://stackoverflow.com/search?q=%s", 17 | "icon": "/usr/share/ulauncher/media/stackoverflow-icon.svg", 18 | "is_default_search": true, 19 | "run_without_argument": false, 20 | "added": 1657884888.0583544 21 | }, 22 | "8d168c28-2227-4841-a1b3-c7088d49a0d9": { 23 | "id": "8d168c28-2227-4841-a1b3-c7088d49a0d9", 24 | "name": "Wikipedia", 25 | "keyword": "wiki", 26 | "cmd": "https://en.wikipedia.org/wiki/%s", 27 | "icon": "/usr/share/ulauncher/media/wikipedia-icon.png", 28 | "is_default_search": true, 29 | "run_without_argument": false, 30 | "added": 1657884888.0583746 31 | } 32 | } -------------------------------------------------------------------------------- /.config/ulauncher/user-themes/Catppuccin/generated.css: -------------------------------------------------------------------------------- 1 | @import url("/usr/share/ulauncher/themes/light/theme-gtk-3.20.css"); 2 | 3 | @import url("theme.css"); 4 | 5 | .input { 6 | caret-color: @caret_color; 7 | } 8 | .selected.item-box { 9 | /* workaround for a bug in GTK+ < 3.20 */ 10 | border: none; 11 | } -------------------------------------------------------------------------------- /.config/ulauncher/user-themes/Catppuccin/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": "1", 3 | "name": "catppuccin", 4 | "display_name": "Catpuccin", 5 | "extend_theme": "light", 6 | "css_file": "theme.css", 7 | "css_file_gtk_3.20+": "theme-gtk-3.20.css", 8 | "matched_text_hl_colors": { 9 | "when_selected": "#fff", 10 | "when_not_selected": "#fff" 11 | } 12 | } -------------------------------------------------------------------------------- /.config/ulauncher/user-themes/Catppuccin/theme-gtk-3.20.css: -------------------------------------------------------------------------------- 1 | @import url("theme.css"); 2 | 3 | .input { 4 | caret-color: @caret_color; 5 | } 6 | .selected.item-box { 7 | /* workaround for a bug in GTK+ < 3.20 */ 8 | border: none; 9 | } -------------------------------------------------------------------------------- /.config/ulauncher/user-themes/Catppuccin/theme.css: -------------------------------------------------------------------------------- 1 | /** 2 | * App Window 3 | */ 4 | @define-color bg_color #1E1E2E; 5 | @define-color window_bg @bg_color; 6 | @define-color window_border_color #C9CBFF; 7 | @define-color prefs_backgroud #C9CBFF; 8 | 9 | /** 10 | * Input 11 | */ 12 | @define-color selected_bg_color #302D41; 13 | @define-color selected_fg_color #D9E0EE; 14 | @define-color input_color #D9E0EE; 15 | @define-color caret_color darker(@input_color); 16 | 17 | /** 18 | * Result items 19 | */ 20 | @define-color item_name #C9CBFF; 21 | @define-color item_text #C9CBFF; 22 | @define-color item_box_selected #302D41; 23 | @define-color item_text_selected #C9CBFF; 24 | @define-color item_name_selected #C9CBFF; 25 | @define-color item_shortcut_color #D9E0EE; 26 | @define-color item_shortcut_shadow darker(@bg_color); 27 | @define-color item_shortcut_color_sel #ccc; 28 | @define-color item_shortcut_shadow_sel darker(@item_box_selected); 29 | 30 | .app { 31 | background-color: @window_bg; 32 | border-color: @window_border_color; 33 | } 34 | 35 | .input { 36 | color: @input_color; 37 | } 38 | 39 | /** 40 | * Selected text in input 41 | */ 42 | .input *:selected, 43 | .input *:focus, 44 | *:selected:focus { 45 | background-color: alpha (@selected_bg_color, 0.9); 46 | color: @selected_fg_color; 47 | } 48 | 49 | .item-text { 50 | color: @item_text; 51 | } 52 | .item-name { 53 | color: @item_name; 54 | } 55 | 56 | .selected.item-box { 57 | background-color: @item_box_selected; 58 | border-left: 1px solid @window_border_color; 59 | border-right: 1px solid @window_border_color; 60 | } 61 | .selected.item-box .item-text { 62 | color: @item_text_selected; 63 | } 64 | .selected.item-box .item-name { 65 | color: @item_name_selected; 66 | } 67 | .item-shortcut { 68 | color: @item_shortcut_color; 69 | text-shadow: 1px 1px 1px @item_shortcut_shadow; 70 | } 71 | .selected.item-box .item-shortcut { 72 | color: @item_shortcut_color_sel; 73 | text-shadow: 1px 1px 1px @item_shortcut_shadow_sel; 74 | } 75 | 76 | .prefs-btn { 77 | opacity: 0.8; 78 | } 79 | .prefs-btn:hover { 80 | background-color: @prefs_backgroud; 81 | } 82 | 83 | .no-window-shadow { 84 | margin: -20px; 85 | } 86 | -------------------------------------------------------------------------------- /.config/waybar/config: -------------------------------------------------------------------------------- 1 | { 2 | "layer": "top", 3 | "modules-left": [ 4 | "custom/launcher", 5 | "custom/updates", 6 | "custom/media" 7 | ], 8 | "modules-center": [ 9 | "clock" 10 | ], 11 | "modules-right": [ 12 | "network", 13 | "pulseaudio", 14 | "river/tags", 15 | "tray" 16 | ], 17 | 18 | "pulseaudio": { 19 | "tooltip": false, 20 | "scroll-step": 5, 21 | "format": "{icon} {volume}%", 22 | "format-muted": "{icon} {volume}%", 23 | "on-click":"pactl set-sink-mute @DEFAULT_SINK@ toggle", 24 | "format-icons": { 25 | "default": ["", "", ""] 26 | } 27 | }, 28 | 29 | "river/tags": { 30 | "num-tags": 6 31 | }, 32 | 33 | "network": { 34 | "tooltip": false, 35 | "format-wifi": " {essid}", 36 | "format-ethernet": "" 37 | }, 38 | 39 | "backlight": { 40 | "tooltip": false, 41 | "format": " {}%", 42 | "interval":1, 43 | "on-scroll-up": "light -A 5", 44 | "on-scroll-down": "light -U 5" 45 | }, 46 | 47 | "tray":{ 48 | "icon-size":18, 49 | "spacing": 10 50 | }, 51 | 52 | "clock": { 53 | "format": "{: %I:%M %p  %d/%m/%Y}" 54 | }, 55 | 56 | "cpu": { 57 | "interval": 15, 58 | "format": " {}%", 59 | "max-length": 10 60 | }, 61 | 62 | "memory": { 63 | "interval": 30, 64 | "format": " {}%", 65 | "max-length": 10 66 | }, 67 | 68 | "custom/media": { 69 | "interval": 30, 70 | "format": "{icon} {}", 71 | "return-type": "json", 72 | "max-length": 20, 73 | "format-icons": { 74 | "spotify": " ", 75 | "default": " " 76 | }, 77 | "escape": true, 78 | "exec": "$HOME/.config/system_scripts/mediaplayer.py 2> /dev/null", 79 | "on-click": "playerctl play-pause" 80 | }, 81 | 82 | "custom/launcher":{ 83 | "format": "", 84 | "on-click": "ulauncher-toggle", 85 | "on-click-right": "killall ulauncher" 86 | }, 87 | 88 | "custom/updates":{ 89 | "format": "{} Update(s)", 90 | "exec": "checkupdates | wc -l", 91 | "exec-if": "[[ $(checkupdates | wc -l) != 0 ]]", 92 | "interval": 15, 93 | "on-click": "gnome-software --mode updates" 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /.config/wezterm/colors/cat.js: -------------------------------------------------------------------------------- 1 | { 2 | "ansi": [ 3 | "#45475a", 4 | "#f38ba8", 5 | "#a6e3a1", 6 | "#f9e2af", 7 | "#89b4fa", 8 | "#f5c2e7", 9 | "#94e2d5", 10 | "#bac2de" 11 | ], 12 | "background": "#1e1e2e", 13 | "brights": [ 14 | "#585b70", 15 | "#f38ba8", 16 | "#a6e3a1", 17 | "#f9e2af", 18 | "#89b4fa", 19 | "#f5c2e7", 20 | "#94e2d5", 21 | "#a6adc8" 22 | ], 23 | "compose_cursor": "#f2cdcd", 24 | "cursor_bg": "#f5e0dc", 25 | "cursor_border": "#f5e0dc", 26 | "cursor_fg": "#11111b", 27 | "foreground": "#cdd6f4", 28 | "indexed": { 29 | "16": "#fab387", 30 | "17": "#f5e0dc" 31 | }, 32 | "scrollbar_thumb": "#585b70", 33 | "selection_bg": "#585b70", 34 | "selection_fg": "#cdd6f4", 35 | "split": "#6c7086", 36 | "tab_bar": { 37 | "active_tab": { 38 | "bg_color": "#585b70", 39 | "fg_color": "#cdd6f4" 40 | }, 41 | "background": "#11111b", 42 | "inactive_tab": { 43 | "bg_color": "#181825", 44 | "fg_color": "#cdd6f4" 45 | }, 46 | "inactive_tab_edge": "#575757", 47 | "inactive_tab_edge_hover": "#363636", 48 | "inactive_tab_hover": { 49 | "bg_color": "#181825", 50 | "fg_color": "#cdd6f4" 51 | }, 52 | "new_tab": { 53 | "bg_color": "#1e1e2e", 54 | "fg_color": "#cdd6f4" 55 | }, 56 | "new_tab_hover": { 57 | "bg_color": "#181825", 58 | "fg_color": "#cdd6f4" 59 | } 60 | }, 61 | "visual_bell": "#313244" 62 | } 63 | -------------------------------------------------------------------------------- /.config/wezterm/colors/duskfox.toml: -------------------------------------------------------------------------------- 1 | # Nightfox Wezterm Colors 2 | # Style: duskfox 3 | # Upstream: https://github.com/edeneast/nightfox.nvim/raw/main/extra/duskfox/nightfox_wezterm.toml 4 | [colors] 5 | foreground = "#e0def4" 6 | # background = "#232136" 7 | background = "#000000" 8 | cursor_bg = "#e0def4" 9 | cursor_border = "#e0def4" 10 | cursor_fg = "#232136" 11 | selection_bg = "#35334f" 12 | selection_fg = "#e0def4" 13 | ansi = ["#393552", "#eb6f92", "#a3be8c", "#f6c177", "#569FBA", "#c4a7e7", "#9ccfd8", "#e0def4"] 14 | brights = ["#47407d", "#f083a2", "#b1d196", "#f9cb8c", "#65b1cd", "#ccb1ed", "#a6dae3", "#e2e0f7"] 15 | -------------------------------------------------------------------------------- /.config/wezterm/colors/github_dark.toml: -------------------------------------------------------------------------------- 1 | [colors] 2 | foreground = "#b3b1ad" 3 | background = "#0d1117" 4 | cursor_bg = "#73b7f2" 5 | cursor_border = "#73b7f2" 6 | cursor_fg = "#0d1117" 7 | selection_bg = "#163356" 8 | selection_fg = "#b3b1ad" 9 | 10 | # compose_cursor = "#f2cdcd" 11 | # scrollbar_thumb = "#585b70" 12 | # split = "#6c7086" 13 | # visual_bell = "#313244" 14 | 15 | ansi = [ 16 | "#484f58", 17 | "#ff7b72", 18 | "#3fb950", 19 | "#d29922", 20 | "#58a6ff", 21 | "#bc8cff", 22 | "#39c5cf", 23 | "#b1bac4" 24 | ] 25 | brights = [ 26 | "#6e7681", 27 | "#ffa198", 28 | "#56d364", 29 | "#e3b341", 30 | "#79c0ff", 31 | "#d2a8ff", 32 | "#56d4dd", 33 | "#f0f6fc" 34 | ] 35 | [indexed] 36 | 16 = "#d18616" 37 | 17 = "#ffa198" 38 | 39 | [tab_bar] 40 | background = "#11111b" 41 | inactive_tab_edge = "#575757" 42 | inactive_tab_edge_hover = "#363636" 43 | 44 | [tab_bar.active_tab] 45 | bg_color = "#58a6ff" 46 | fg_color = "#090c10" 47 | 48 | [tab_bar.inactive_tab] 49 | bg_color = "#4d5566" 50 | fg_color = "#090c10" 51 | 52 | [tab_bar.inactive_tab_hover] 53 | bg_color = "#181825" 54 | fg_color = "#cdd6f4" 55 | 56 | [tab_bar.new_tab] 57 | bg_color = "#1e1e2e" 58 | fg_color = "#cdd6f4" 59 | 60 | [tab_bar.new_tab_hover] 61 | bg_color = "#181825" 62 | fg_color = "#cdd6f4" 63 | 64 | [metadata] 65 | name = 'GitHub Dark' 66 | -------------------------------------------------------------------------------- /.config/wezterm/colors/tokyonight_night.toml: -------------------------------------------------------------------------------- 1 | [colors] 2 | foreground = "#c0caf5" 3 | # background = "#1a1b26" 4 | background = "#000000" 5 | cursor_bg = "#c0caf5" 6 | cursor_border = "#c0caf5" 7 | cursor_fg = "#1a1b26" 8 | selection_bg = "#33467C" 9 | selection_fg = "#c0caf5" 10 | 11 | ansi = [ 12 | "#15161E", 13 | "#f7768e", 14 | "#9ece6a", 15 | "#e0af68", 16 | "#7aa2f7", 17 | "#bb9af7", 18 | "#7dcfff", 19 | "#a9b1d6"] 20 | brights = [ 21 | "#414868", 22 | "#f7768e", 23 | "#9ece6a", 24 | "#e0af68", 25 | "#7aa2f7", 26 | "#bb9af7", 27 | "#7dcfff", 28 | "#c0caf5"] 29 | -------------------------------------------------------------------------------- /.gitconfig: -------------------------------------------------------------------------------- 1 | [user] 2 | name = Benny Powers 3 | email = web@bennypowers.com 4 | 5 | [core] 6 | excludesfile = /Users/bennyp/.config/git/gitignore 7 | editor = nvim 8 | pager = delta 9 | 10 | [alias] 11 | ap = add -p 12 | ca = commit --amend 13 | ci = commit 14 | cim = commit --message 15 | co = checkout 16 | cp = cherry-pick 17 | count = "!f() { compareBranch=${1-master}; git rev-list --count HEAD ^$compareBranch; }; f" 18 | f = !git ls-files | grep -i 19 | fush = push --force 20 | lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit 21 | pt = push --tags 22 | ra = rebase --abort 23 | rc = rebase --continue 24 | ri = rebase --interactive 25 | s = status 26 | nb = switch -c 27 | 28 | [filter "lfs"] 29 | clean = git-lfs clean -- %f 30 | smudge = git-lfs smudge -- %f 31 | required = true 32 | process = git-lfs filter-process 33 | 34 | [difftool "sourcetree"] 35 | cmd = opendiff \"$LOCAL\" \"$REMOTE\" 36 | path = 37 | [mergetool "sourcetree"] 38 | cmd = /Users/bennyp/Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\" 39 | trustExitCode = true 40 | 41 | [pull] 42 | ff = only 43 | [init] 44 | defaultBranch = main 45 | 46 | [merge] 47 | tool = vimdiff 48 | conflictstyle = diff3 49 | [mergetool] 50 | prompt = true 51 | [mergetool "vimdiff"] 52 | cmd = nvim -d $LOCAL $REMOTE $MERGED -c '$wincmd w' -c 'wincmd J' 53 | [difftool] 54 | prompt = false 55 | [diff] 56 | tool = vimdiff 57 | colorMoved = default 58 | 59 | [include] 60 | path = ~/.config/delta/themes.gitconfig 61 | 62 | [interactive] 63 | diffFilter = delta --color-only --features=interactive 64 | 65 | [delta] 66 | features = collared-trogon 67 | navigate = true 68 | 69 | [delta "interactive"] 70 | keep-plus-minus-markers = false 71 | [safe] 72 | directory = * 73 | [http] 74 | postBuffer = 157286400 75 | 76 | [url "git@github.com:"] 77 | insteadOf = git@github.com/ 78 | insteadOf = github.com/ 79 | insteadOf = git://github.com/ 80 | insteadOf = git@github.com: 81 | insteadOf = github.com: 82 | insteadOf = git://github.com: 83 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # General 2 | .DS_Store 3 | .AppleDouble 4 | .LSOverride 5 | 6 | # Icon must end with two \r 7 | Icon 8 | 9 | # Thumbnails 10 | ._* 11 | 12 | # Files that might appear in the root of a volume 13 | .DocumentRevisions-V100 14 | .fseventsd 15 | .Spotlight-V100 16 | .TemporaryItems 17 | .Trashes 18 | .VolumeIcon.icns 19 | .com.apple.timemachine.donotpresent 20 | 21 | # Directories potentially created on remote AFP share 22 | .AppleDB 23 | .AppleDesktop 24 | Network Trash Folder 25 | Temporary Items 26 | .apdisk 27 | 28 | # Dev Stuff 29 | node_modules 30 | 31 | # Dotfiles repo see https://www.atlassian.com/git/tutorials/dotfiles 32 | ~/.cfg 33 | 34 | ~/.config/karabiner/automatic_backups 35 | ~/.config/gh/hosts.yml 36 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule ".vim/bundle/Vundle.vim"] 2 | path = .vim/bundle/Vundle.vim 3 | url = https://github.com/VundleVim/Vundle.vim.git 4 | [submodule "/Users/bennyp/.tmux/plugins/tpm"] 5 | path = /Users/bennyp/.tmux/plugins/tpm 6 | url = https://github.com/tmux-plugins/tpm 7 | -------------------------------------------------------------------------------- /.var/app/com.raggesilver.BlackBox/data/blackbox/schemes/Catppuccin-Frappe.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Catppuccin-Frappe", 3 | "comment": "Soothing pastel theme for the high-spirited!", 4 | "background-color": "#303446", 5 | "foreground-color": "#C6D0F5", 6 | "badge-color": "#626880", 7 | "bold-color": "#626880", 8 | "cursor-background-color": "#F2D5CF", 9 | "cursor-foreground-color": "#303446", 10 | "highlight-background-color": "#F2D5CF", 11 | "highlight-foreground-color": "#303446", 12 | "palette": [ 13 | "#51576D", 14 | "#E78284", 15 | "#A6D189", 16 | "#E5C890", 17 | "#8CAAEE", 18 | "#F4B8E4", 19 | "#81C8BE", 20 | "#B5BFE2", 21 | "#626880", 22 | "#E78284", 23 | "#A6D189", 24 | "#E5C890", 25 | "#8CAAEE", 26 | "#F4B8E4", 27 | "#81C8BE", 28 | "#A5ADCE" 29 | ], 30 | "use-badge-color": false, 31 | "use-bold-color": false, 32 | "use-cursor-color": true, 33 | "use-highlight-color": true, 34 | "use-theme-colors": false 35 | } 36 | -------------------------------------------------------------------------------- /.var/app/com.raggesilver.BlackBox/data/blackbox/schemes/Catppuccin-Latte.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Catppuccin-Latte", 3 | "comment": "Soothing pastel theme for the high-spirited!", 4 | "background-color": "#EFF1F5", 5 | "foreground-color": "#4C4F69", 6 | "badge-color": "#ACB0BE", 7 | "bold-color": "#ACB0BE", 8 | "cursor-background-color": "#DC8A78", 9 | "cursor-foreground-color": "#EFF1F5", 10 | "highlight-background-color": "#DC8A78", 11 | "highlight-foreground-color": "#EFF1F5", 12 | "palette": [ 13 | "#5C5F77", 14 | "#D20F39", 15 | "#40A02B", 16 | "#DF8E1D", 17 | "#1E66F5", 18 | "#EA76CB", 19 | "#179299", 20 | "#ACB0BE", 21 | "#6C6F85", 22 | "#D20F39", 23 | "#40A02B", 24 | "#DF8E1D", 25 | "#1E66F5", 26 | "#EA76CB", 27 | "#179299", 28 | "#BCC0CC" 29 | ], 30 | "use-badge-color": false, 31 | "use-bold-color": false, 32 | "use-cursor-color": true, 33 | "use-highlight-color": true, 34 | "use-theme-colors": false 35 | } 36 | -------------------------------------------------------------------------------- /.var/app/com.raggesilver.BlackBox/data/blackbox/schemes/Catppuccin-Macchiato.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Catppuccin-Macchiato", 3 | "comment": "Soothing pastel theme for the high-spirited!", 4 | "background-color": "#24273A", 5 | "foreground-color": "#CAD3F5", 6 | "badge-color": "#5B6078", 7 | "bold-color": "#5B6078", 8 | "cursor-background-color": "#F4DBD6", 9 | "cursor-foreground-color": "#24273A", 10 | "highlight-background-color": "#F4DBD6", 11 | "highlight-foreground-color": "#24273A", 12 | "palette": [ 13 | "#494D64", 14 | "#ED8796", 15 | "#A6DA95", 16 | "#EED49F", 17 | "#8AADF4", 18 | "#F5BDE6", 19 | "#8BD5CA", 20 | "#B8C0E0", 21 | "#5B6078", 22 | "#ED8796", 23 | "#A6DA95", 24 | "#EED49F", 25 | "#8AADF4", 26 | "#F5BDE6", 27 | "#8BD5CA", 28 | "#A5ADCB" 29 | ], 30 | "use-badge-color": false, 31 | "use-bold-color": false, 32 | "use-cursor-color": true, 33 | "use-highlight-color": true, 34 | "use-theme-colors": false 35 | } 36 | -------------------------------------------------------------------------------- /.var/app/com.raggesilver.BlackBox/data/blackbox/schemes/Catppuccin-Mocha.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Catppuccin-Mocha", 3 | "comment": "Soothing pastel theme for the high-spirited!", 4 | "background-color": "#1E1E2E", 5 | "foreground-color": "#CDD6F4", 6 | "badge-color": "#585B70", 7 | "bold-color": "#585B70", 8 | "cursor-background-color": "#F5E0DC", 9 | "cursor-foreground-color": "#1E1E2E", 10 | "highlight-background-color": "#F5E0DC", 11 | "highlight-foreground-color": "#1E1E2E", 12 | "palette": [ 13 | "#45475A", 14 | "#F38BA8", 15 | "#A6E3A1", 16 | "#F9E2AF", 17 | "#89B4FA", 18 | "#F5C2E7", 19 | "#94E2D5", 20 | "#BAC2DE", 21 | "#585B70", 22 | "#F38BA8", 23 | "#A6E3A1", 24 | "#F9E2AF", 25 | "#89B4FA", 26 | "#F5C2E7", 27 | "#94E2D5", 28 | "#A6ADC8" 29 | ], 30 | "use-badge-color": false, 31 | "use-bold-color": false, 32 | "use-cursor-color": true, 33 | "use-highlight-color": true, 34 | "use-theme-colors": false 35 | } 36 | -------------------------------------------------------------------------------- /.vimrc: -------------------------------------------------------------------------------- 1 | source ~/.config/nvim/config/init.lua 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![ness at prompt](./.config/screenie.png) 2 | 3 | ## 🚋 installation 4 | 5 | ```shell 6 | $ curl -sS https://github.com/bennypowers/dotfiles/blob/master/.cfg-install.sh | sh 7 | ``` 8 | 9 | ## 📺 bunkum 10 | 11 | [🐟 fish shell](./.config/fish/), 12 | [✨ neovim](./.config/nvim/), 13 | [🖌️ colorscripts](./.config/colorscripts/), 14 | --------------------------------------------------------------------------------