├── rofi ├── config │ ├── power.rasi │ └── sway.rasi └── local │ ├── themes │ ├── catppuccin-mocha-powermenu.rasi │ └── catppuccin-mocha.rasi │ └── scripts │ ├── rofi-power-menu-niri │ └── rofi-power-menu ├── hypr ├── face ├── background ├── mocha.conf └── hyprlock.conf ├── yazi ├── flavors │ ├── catppuccin-mocha.yazi │ │ ├── DO_NOT_MODIFY_ANYTHING_IN_THIS_DIRECTORY │ │ ├── preview.png │ │ ├── README.md │ │ ├── LICENSE │ │ ├── LICENSE-tmtheme │ │ └── flavor.toml │ └── catppuccin-macchiato.yazi │ │ ├── DO_NOT_MODIFY_ANYTHING_IN_THIS_DIRECTORY │ │ ├── preview.png │ │ ├── README.md │ │ ├── LICENSE │ │ ├── LICENSE-tmtheme │ │ └── flavor.toml ├── package.toml ├── yazi.toml ├── keymap.toml ├── init.lua └── theme.toml ├── assets ├── Blank.png ├── Fetch.png ├── Floating.png ├── Launcher.png └── Solarvim.png ├── nvim ├── assets │ ├── Preview.png │ └── CodePreview.png ├── lua │ ├── custom │ │ ├── config │ │ │ ├── notify.lua │ │ │ ├── lualine.lua │ │ │ └── comment.lua │ │ ├── setup │ │ │ ├── notify.lua │ │ │ └── notify-utils.lua │ │ └── plugins │ │ │ └── init.lua │ ├── kickstart │ │ ├── plugins │ │ │ ├── todo-comments.lua │ │ │ ├── indent_line.lua │ │ │ ├── autopairs.lua │ │ │ ├── tokyonight.lua │ │ │ ├── neo-tree.lua │ │ │ ├── treesitter.lua │ │ │ ├── conform.lua │ │ │ ├── mini.lua │ │ │ ├── lint.lua │ │ │ ├── which-key.lua │ │ │ ├── gitsigns.lua │ │ │ ├── cmp.lua │ │ │ ├── debug.lua │ │ │ ├── telescope.lua │ │ │ └── lspconfig.lua │ │ └── health.lua │ ├── lazy-bootstrap.lua │ ├── options.lua │ ├── lazy-plugins.lua │ └── keymaps.lua ├── .stylua.toml ├── README.md └── init.lua ├── wallpapers ├── Grey Waves.jpg └── Grey Spaceman.png ├── fastfetch ├── arch.txt └── config.jsonc ├── swayidle └── config ├── waybar ├── launch.sh ├── mocha.css ├── style-old.css ├── config └── style.css ├── fuzzel ├── themes │ ├── mocha-mauve.ini │ └── mocha-mauve-launcher.ini ├── fuzzel.ini └── launcher.ini ├── kitty ├── kitty.conf ├── theme.conf └── current-theme.conf ├── install.sh ├── mpv └── mpv.conf ├── LICENSE ├── README.md └── niri └── config.kdl /rofi/config/power.rasi: -------------------------------------------------------------------------------- 1 | @theme "catppuccin-mocha-powermenu" 2 | -------------------------------------------------------------------------------- /hypr/face: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaelixd/niri-dotfiles/HEAD/hypr/face -------------------------------------------------------------------------------- /yazi/flavors/catppuccin-mocha.yazi/DO_NOT_MODIFY_ANYTHING_IN_THIS_DIRECTORY: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /yazi/flavors/catppuccin-macchiato.yazi/DO_NOT_MODIFY_ANYTHING_IN_THIS_DIRECTORY: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /hypr/background: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaelixd/niri-dotfiles/HEAD/hypr/background -------------------------------------------------------------------------------- /assets/Blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaelixd/niri-dotfiles/HEAD/assets/Blank.png -------------------------------------------------------------------------------- /assets/Fetch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaelixd/niri-dotfiles/HEAD/assets/Fetch.png -------------------------------------------------------------------------------- /assets/Floating.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaelixd/niri-dotfiles/HEAD/assets/Floating.png -------------------------------------------------------------------------------- /assets/Launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaelixd/niri-dotfiles/HEAD/assets/Launcher.png -------------------------------------------------------------------------------- /assets/Solarvim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaelixd/niri-dotfiles/HEAD/assets/Solarvim.png -------------------------------------------------------------------------------- /nvim/assets/Preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaelixd/niri-dotfiles/HEAD/nvim/assets/Preview.png -------------------------------------------------------------------------------- /nvim/lua/custom/config/notify.lua: -------------------------------------------------------------------------------- 1 | require('notify').setup { 2 | background_colour = '#111111', 3 | } 4 | -------------------------------------------------------------------------------- /wallpapers/Grey Waves.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaelixd/niri-dotfiles/HEAD/wallpapers/Grey Waves.jpg -------------------------------------------------------------------------------- /nvim/assets/CodePreview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaelixd/niri-dotfiles/HEAD/nvim/assets/CodePreview.png -------------------------------------------------------------------------------- /wallpapers/Grey Spaceman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaelixd/niri-dotfiles/HEAD/wallpapers/Grey Spaceman.png -------------------------------------------------------------------------------- /fastfetch/arch.txt: -------------------------------------------------------------------------------- 1 | $1 /\ 2 | / \ 3 | / \ 4 | / \ 5 | / ,, \ 6 | / | | \ 7 | /_-'' ''-_\ 8 | -------------------------------------------------------------------------------- /yazi/flavors/catppuccin-mocha.yazi/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaelixd/niri-dotfiles/HEAD/yazi/flavors/catppuccin-mocha.yazi/preview.png -------------------------------------------------------------------------------- /yazi/flavors/catppuccin-macchiato.yazi/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaelixd/niri-dotfiles/HEAD/yazi/flavors/catppuccin-macchiato.yazi/preview.png -------------------------------------------------------------------------------- /nvim/.stylua.toml: -------------------------------------------------------------------------------- 1 | column_width = 160 2 | line_endings = "Unix" 3 | indent_type = "Spaces" 4 | indent_width = 2 5 | quote_style = "AutoPreferSingle" 6 | call_parentheses = "None" 7 | -------------------------------------------------------------------------------- /nvim/lua/custom/setup/notify.lua: -------------------------------------------------------------------------------- 1 | return function(_, opts) 2 | local notify = require 'notify' 3 | notify.setup(opts) 4 | require('custom.setup.notify-utils').setup(notify) 5 | end 6 | -------------------------------------------------------------------------------- /swayidle/config: -------------------------------------------------------------------------------- 1 | timeout 300 'hyprlock &' 2 | timeout 360 'niri msg action power-off-monitors' resume 'niri msg action power-on-monitors' 3 | timeout 390 'systemctl suspend' before-sleep 'hyprlock &' 4 | -------------------------------------------------------------------------------- /yazi/package.toml: -------------------------------------------------------------------------------- 1 | [plugin] 2 | deps = [] 3 | 4 | [flavor] 5 | deps = [{ use = "yazi-rs/flavors:catppuccin-mocha", rev = "2a95af8" }, { use = "yazi-rs/flavors:catppuccin-macchiato", rev = "2a95af8" }] 6 | -------------------------------------------------------------------------------- /waybar/launch.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PROGRAM_NAME="waybar" 4 | 5 | if pgrep -x "$PROGRAM_NAME" > /dev/null; then 6 | pkill -x "$PROGRAM_NAME" 7 | else 8 | "$PROGRAM_NAME" & 9 | disown 10 | fi 11 | -------------------------------------------------------------------------------- /yazi/yazi.toml: -------------------------------------------------------------------------------- 1 | [manager] 2 | 3 | sort_by = 'alphabetical' 4 | linemode = 'size_and_mtime' 5 | show_symlink = true 6 | 7 | [opener] 8 | 9 | edit = [ 10 | {run = 'nvim $@', block = true, for = 'unix'} 11 | ] 12 | -------------------------------------------------------------------------------- /nvim/README.md: -------------------------------------------------------------------------------- 1 | # SolarVim 2 | 3 | > Please see https://github.com/DoubleDotStudios/SolarVim for the SolarVim repo. 4 | 5 | ![Preview of SolarVim](./assets/Preview.png) 6 | ![Preview of Programming in SolarVim](./assets/CodePreview.png) 7 | -------------------------------------------------------------------------------- /yazi/keymap.toml: -------------------------------------------------------------------------------- 1 | [manager] 2 | prepend_keymap = [ 3 | {on=["m", "o"], run="shell 'mpv . --loop-playlist=inf' --orphan", desc="play (Ordered)"}, 4 | {on=["m", "s"], run="shell 'mpv . --shuffle --loop-playlist=inf' --orphan", desc="play (Shuffled)"} 5 | ] 6 | -------------------------------------------------------------------------------- /nvim/lua/kickstart/plugins/todo-comments.lua: -------------------------------------------------------------------------------- 1 | -- Highlight todo, notes, etc in comments 2 | return { 3 | { 'folke/todo-comments.nvim', event = 'VimEnter', dependencies = { 'nvim-lua/plenary.nvim' }, opts = { signs = false } }, 4 | } 5 | -- vim: ts=2 sts=2 sw=2 et 6 | -------------------------------------------------------------------------------- /fuzzel/themes/mocha-mauve.ini: -------------------------------------------------------------------------------- 1 | [colors] 2 | background=1e1e2ef7 3 | text=cdd6f4ff 4 | prompt=a6e3a1ff 5 | placeholder=7f849cff 6 | input=cdd6f4ff 7 | match=cba6f7ff 8 | selection=585b70ff 9 | selection-text=cdd6f4ff 10 | selection-match=cba6f7ff 11 | counter=7f849cff 12 | border=cba6f7ff 13 | -------------------------------------------------------------------------------- /nvim/lua/kickstart/plugins/indent_line.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { -- Add indentation guides even on blank lines 3 | 'lukas-reineke/indent-blankline.nvim', 4 | -- Enable `lukas-reineke/indent-blankline.nvim` 5 | -- See `:help ibl` 6 | main = 'ibl', 7 | opts = {}, 8 | }, 9 | } 10 | -------------------------------------------------------------------------------- /fuzzel/themes/mocha-mauve-launcher.ini: -------------------------------------------------------------------------------- 1 | [colors] 2 | background=1e1e2eff 3 | text=cdd6f4ff 4 | prompt=cdd6f4ff 5 | placeholder=7f849cff 6 | input=cdd6f4ff 7 | match=cba6f7ff 8 | selection=585b70ff 9 | selection-text=cdd6f4ff 10 | selection-match=cba6f7ff 11 | counter=7f849cff 12 | border=cba6f7ff 13 | -------------------------------------------------------------------------------- /fuzzel/fuzzel.ini: -------------------------------------------------------------------------------- 1 | [main] 2 | include = ~/.config/fuzzel/themes/mocha-mauve.ini 3 | font = CaskaydiaCove Nerd Font:size=23 4 | prompt = '❯ ' 5 | icon-theme = Tela-circle-dracula 6 | horizontal-pad = 20 7 | lines = 8 8 | exit-on-keyboard-focus-loss = yes 9 | terminal = kitty -e 10 | 11 | [border] 12 | width = 4 13 | radius = 8 14 | -------------------------------------------------------------------------------- /rofi/config/sway.rasi: -------------------------------------------------------------------------------- 1 | configuration{ 2 | modi: "drun"; 3 | icon-theme: "Papirus"; 4 | show-icons: true; 5 | terminal: "kitty"; 6 | drun-display-format: "{icon} {name}"; 7 | location: 0; 8 | disable-history: false; 9 | hide-scrollbar: false; 10 | display-drun: "  Run "; 11 | sidebar-mode: false; 12 | } 13 | 14 | @theme "catppuccin-mocha" 15 | -------------------------------------------------------------------------------- /fuzzel/launcher.ini: -------------------------------------------------------------------------------- 1 | [main] 2 | include = ~/.config/fuzzel/themes/mocha-mauve-launcher.ini 3 | font = CaskaydiaCove Nerd Font:size=20 4 | icon-theme = Tela-circle-dracula 5 | 6 | anchor = top-left 7 | x-margin = 15 8 | y-margin = 5 9 | horizontal-pad = 20 10 | lines = 8 11 | 12 | placeholder = "Launch..." 13 | prompt = " " 14 | 15 | exit-on-keyboard-focus-loss = yes 16 | terminal = kitty -e 17 | 18 | [border] 19 | width = 4 20 | radius = 8 21 | -------------------------------------------------------------------------------- /yazi/init.lua: -------------------------------------------------------------------------------- 1 | function Linemode:size_and_mtime() 2 | local year = os.date("%Y") 3 | local time = (self._file.cha.mtime or 0) // 1 4 | 5 | if time > 0 and os.date("%Y", time) == year then 6 | time = os.date("%b %d %H:%M", time) 7 | else 8 | time = time and os.date("%b %d %Y", time) or "" 9 | end 10 | 11 | local size = self._file:size() 12 | return ui.Line(string.format(" %s %s ", size and ya.readable_size(size) or "-", time)) 13 | end 14 | -------------------------------------------------------------------------------- /nvim/lua/kickstart/plugins/autopairs.lua: -------------------------------------------------------------------------------- 1 | -- autopairs 2 | -- https://github.com/windwp/nvim-autopairs 3 | 4 | return { 5 | 'windwp/nvim-autopairs', 6 | event = 'InsertEnter', 7 | -- Optional dependency 8 | dependencies = { 'hrsh7th/nvim-cmp' }, 9 | config = function() 10 | require('nvim-autopairs').setup {} 11 | -- If you want to automatically add `(` after selecting a function or method 12 | local cmp_autopairs = require 'nvim-autopairs.completion.cmp' 13 | local cmp = require 'cmp' 14 | cmp.event:on('confirm_done', cmp_autopairs.on_confirm_done()) 15 | end, 16 | } 17 | -------------------------------------------------------------------------------- /nvim/lua/lazy-bootstrap.lua: -------------------------------------------------------------------------------- 1 | -- [[ Install `lazy.nvim` plugin manager ]] 2 | -- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info 3 | local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' 4 | if not (vim.uv or vim.loop).fs_stat(lazypath) then 5 | local lazyrepo = 'https://github.com/folke/lazy.nvim.git' 6 | local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath } 7 | if vim.v.shell_error ~= 0 then 8 | error('Error cloning lazy.nvim:\n' .. out) 9 | end 10 | end ---@diagnostic disable-next-line: undefined-field 11 | vim.opt.rtp:prepend(lazypath) 12 | 13 | -- vim: ts=2 sts=2 sw=2 et 14 | -------------------------------------------------------------------------------- /kitty/kitty.conf: -------------------------------------------------------------------------------- 1 | font_family CaskaydiaCove Nerd Font Mono 2 | bold_font auto 3 | italic_font auto 4 | bold_italic_font auto 5 | 6 | shell_integration no-cursor 7 | 8 | font_size 14.0 9 | window_padding_width 25 10 | include theme.conf 11 | 12 | close_on_child_death yes 13 | 14 | cursor_shape_unfocused beam 15 | cursor_blink_interval 0.5 ease-in-out 16 | 17 | # background_opacity 0.9 18 | cursor_trail 1 19 | 20 | enable_audio_bell no 21 | 22 | open_url_with firefox 23 | 24 | #hide_window_decorations yes 25 | 26 | #confirm_os_window_close 0 27 | 28 | 29 | # BEGIN_KITTY_THEME 30 | # Catppuccin-Mocha 31 | include current-theme.conf 32 | # END_KITTY_THEME 33 | -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | set -e 4 | 5 | echo "Cloning the dotfiles:" 6 | git clone https://github.com/DoubleDotStudios/niri-dotfiles 7 | cd ./niri-dotfiles 8 | 9 | echo "Moving the config files to ~/.config..." 10 | mv ./niri ~/.config/ 11 | mv ./nvim ~/.config/ 12 | mv ./dunst ~/.config/ 13 | mv ./kitty ~/.config/ 14 | mv ./waybar ~/.config/ 15 | mv ./fastfetch ~/.config/ 16 | mv ./yazi ~/.config/ 17 | mv ./fuzzel ~/.config/ 18 | mv ./mpv ~/.config/ 19 | mv ./hypr ~/.config/ 20 | mv ./rofi/config ~/.config/rofi 21 | 22 | echo "Putting rofi script in ~/.local/share/rofi..." 23 | mv ./rofi/local ~/.local/share/rofi 24 | 25 | echo "Moving wallpapers to ~/Pictures/Wallpapers..." 26 | mv ./wallpapers ~/Pictures/Wallpapers 27 | 28 | echo "Done!" 29 | -------------------------------------------------------------------------------- /nvim/init.lua: -------------------------------------------------------------------------------- 1 | -- NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used) 2 | vim.g.mapleader = ' ' 3 | vim.g.maplocalleader = ',' 4 | 5 | -- Set to true if you have a Nerd Font installed and selected in the terminal 6 | vim.g.have_nerd_font = true 7 | 8 | -- [[ Setting options ]] 9 | require 'options' 10 | 11 | -- [[ Basic Keymaps ]] 12 | require 'keymaps' 13 | 14 | -- [[ Install `lazy.nvim` plugin manager ]] 15 | require 'lazy-bootstrap' 16 | 17 | -- [[ Configure and install plugins ]] 18 | require 'lazy-plugins' 19 | 20 | require 'custom.config.lualine' 21 | require 'custom.config.notify' 22 | require 'custom.config.comment' 23 | -- The line beneath this is called `modeline`. See `:help modeline` 24 | -- vim: ts=2 sts=2 sw=2 et 25 | -------------------------------------------------------------------------------- /nvim/lua/custom/config/lualine.lua: -------------------------------------------------------------------------------- 1 | require('lualine').setup { 2 | options = { 3 | icons_enabled = true, 4 | theme = 'auto', 5 | section_separators = { left = '', right = '' }, 6 | component_separators = { left = '', right = '' }, 7 | }, 8 | sections = { 9 | lualine_a = { 'mode' }, 10 | lualine_b = {}, 11 | lualine_c = { 'filename', 'diff', 'diagnostics' }, 12 | 13 | lualine_x = { 'encoding', 'filetype' }, 14 | lualine_y = {}, 15 | lualine_z = { 'location' }, 16 | }, 17 | inactive_sections = { 18 | lualine_a = {}, 19 | lualine_b = {}, 20 | lualine_c = { 'filename' }, 21 | 22 | lualine_x = { 'location' }, 23 | lualine_y = {}, 24 | lualine_z = {}, 25 | }, 26 | extensions = { 'neo-tree', 'lazy', 'fzf' }, 27 | } 28 | -------------------------------------------------------------------------------- /yazi/flavors/catppuccin-mocha.yazi/README.md: -------------------------------------------------------------------------------- 1 |
2 | Yazi logo 3 |
4 | 5 |

6 | Catppuccin Mocha Flavor for Yazi 7 |

8 | 9 | ## 👀 Preview 10 | 11 | 12 | 13 | ## 🎨 Installation 14 | 15 | ```sh 16 | ya pack -a yazi-rs/flavors:catppuccin-mocha 17 | ``` 18 | 19 | ## ⚙️ Usage 20 | 21 | Add these lines to your `theme.toml` configuration file to use it: 22 | 23 | ```toml 24 | [flavor] 25 | use = "catppuccin-mocha" 26 | ``` 27 | 28 | ## 📜 License 29 | 30 | The flavor is MIT-licensed, and the included tmTheme is also MIT-licensed. 31 | 32 | Check the [LICENSE](LICENSE) and [LICENSE-tmtheme](LICENSE-tmtheme) file for more details. 33 | -------------------------------------------------------------------------------- /yazi/flavors/catppuccin-macchiato.yazi/README.md: -------------------------------------------------------------------------------- 1 |
2 | Yazi logo 3 |
4 | 5 |

6 | Catppuccin Macchiato Flavor for Yazi 7 |

8 | 9 | ## 👀 Preview 10 | 11 | 12 | 13 | ## 🎨 Installation 14 | 15 | ```sh 16 | ya pack -a yazi-rs/flavors:catppuccin-macchiato 17 | ``` 18 | 19 | ## ⚙️ Usage 20 | 21 | Add these lines to your `theme.toml` configuration file to use it: 22 | 23 | ```toml 24 | [flavor] 25 | use = "catppuccin-macchiato" 26 | ``` 27 | 28 | ## 📜 License 29 | 30 | The flavor is MIT-licensed, and the included tmTheme is also MIT-licensed. 31 | 32 | Check the [LICENSE](LICENSE) and [LICENSE-tmtheme](LICENSE-tmtheme) file for more details. 33 | -------------------------------------------------------------------------------- /mpv/mpv.conf: -------------------------------------------------------------------------------- 1 | # Main mpv options 2 | background-color='#1e1e2e' 3 | osd-back-color='#11111b' 4 | osd-border-color='#11111b' 5 | osd-color='#cdd6f4' 6 | osd-shadow-color='#1e1e2e' 7 | 8 | # Stats script options 9 | # Options are on separate lines for clarity 10 | # Colors are in #BBGGRR format 11 | script-opts-append=stats-border_color=251818 12 | script-opts-append=stats-font_color=f4d6cd 13 | script-opts-append=stats-plot_bg_border_color=f7a6cb 14 | script-opts-append=stats-plot_bg_color=251818 15 | script-opts-append=stats-plot_color=f7a6cb 16 | 17 | # External script options 18 | # It is fine to leave these here even if one does not use these scripts because they are just ignored unless a script uses them 19 | 20 | # UOSC options 21 | script-opts-append=uosc-color=foreground=cba6f7,foreground_text=313244,background=1e1e2e,background_text=cdd6f4,curtain=181825,success=a6e3a1,error=f38ba8 22 | -------------------------------------------------------------------------------- /nvim/lua/kickstart/plugins/tokyonight.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { -- You can easily change to a different colorscheme. 3 | -- Change the name of the colorscheme plugin below, and then 4 | -- change the command in the config to whatever the name of that colorscheme is. 5 | -- 6 | -- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`. 7 | 'folke/tokyonight.nvim', 8 | priority = 1000, -- Make sure to load this before all the other start plugins. 9 | init = function() 10 | -- Load the colorscheme here. 11 | -- Like many other themes, this one has different styles, and you could load 12 | -- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'. 13 | vim.cmd.colorscheme 'tokyonight-night' 14 | 15 | -- You can configure highlights by doing something like: 16 | vim.cmd.hi 'Comment gui=none' 17 | end, 18 | }, 19 | } 20 | -- vim: ts=2 sts=2 sw=2 et 21 | -------------------------------------------------------------------------------- /waybar/mocha.css: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Catppuccin Mocha palette 4 | * Maintainer: rubyowo 5 | * 6 | */ 7 | 8 | @define-color base #1e1e2e; 9 | @define-color mantle #181825; 10 | @define-color crust #11111b; 11 | 12 | @define-color text #cdd6f4; 13 | @define-color subtext0 #a6adc8; 14 | @define-color subtext1 #bac2de; 15 | 16 | @define-color surface0 #313244; 17 | @define-color surface1 #45475a; 18 | @define-color surface2 #585b70; 19 | 20 | @define-color overlay0 #6c7086; 21 | @define-color overlay1 #7f849c; 22 | @define-color overlay2 #9399b2; 23 | 24 | @define-color blue #89b4fa; 25 | @define-color lavender #b4befe; 26 | @define-color sapphire #74c7ec; 27 | @define-color sky #89dceb; 28 | @define-color teal #94e2d5; 29 | @define-color green #a6e3a1; 30 | @define-color yellow #f9e2af; 31 | @define-color peach #fab387; 32 | @define-color maroon #eba0ac; 33 | @define-color red #f38ba8; 34 | @define-color mauve #cba6f7; 35 | @define-color pink #f5c2e7; 36 | @define-color flamingo #f2cdcd; 37 | @define-color rosewater #f5e0dc; 38 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 DoubleDotStudios 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /yazi/flavors/catppuccin-mocha.yazi/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 yazi-rs 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /yazi/flavors/catppuccin-macchiato.yazi/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 yazi-rs 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /yazi/flavors/catppuccin-mocha.yazi/LICENSE-tmtheme: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Himanshu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /yazi/flavors/catppuccin-macchiato.yazi/LICENSE-tmtheme: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Himanshu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /fastfetch/config.jsonc: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", 3 | "logo": { 4 | "source": "~/.config/fastfetch/arch.txt", 5 | "type": "file", 6 | "color": { 7 | "1": "blue", 8 | }, 9 | "padding": { 10 | "top": 1 11 | } 12 | }, 13 | "display": { 14 | "separator": " ", 15 | }, 16 | "modules": [ 17 | "break", 18 | "title", 19 | { 20 | "type": "os", 21 | "format": "{3}", 22 | "key": "os ", 23 | "keyColor": "blue", 24 | }, 25 | { 26 | "type": "host", 27 | "format": "{1}", 28 | "key": "host ", 29 | "keyColor": "blue", 30 | }, 31 | { 32 | "type": "kernel", 33 | "format": "{2}", 34 | "key": "kernel", 35 | "keyColor": "blue", 36 | }, 37 | { 38 | "type": "uptime", 39 | "format": "{1}d {2}h {3}m", 40 | "key": "uptime", 41 | "keyColor": "blue", 42 | }, 43 | { 44 | "type": "packages", 45 | "format": "{1}", 46 | "key": "pkgs ", 47 | "keyColor": "blue", 48 | }, 49 | { 50 | "type": "memory", 51 | "format": "{1} / {2}", 52 | "key": "memory", 53 | "keyColor": "blue", 54 | }, 55 | ], 56 | } 57 | -------------------------------------------------------------------------------- /nvim/lua/custom/config/comment.lua: -------------------------------------------------------------------------------- 1 | require('Comment').setup { 2 | ---Add a space b/w comment and the line 3 | padding = true, 4 | ---Whether the cursor should stay at its position 5 | sticky = true, 6 | ---Lines to be ignored while (un)comment 7 | ignore = nil, 8 | ---LHS of toggle mappings in NORMAL mode 9 | toggler = { 10 | ---Line-comment toggle keymap 11 | line = '/', 12 | ---Block-comment toggle keymap 13 | block = nil, 14 | }, 15 | ---LHS of operator-pending mappings in NORMAL and VISUAL mode 16 | opleader = { 17 | ---Line-comment keymap 18 | line = '/', 19 | ---Block-comment keymap 20 | block = nil, 21 | }, 22 | ---LHS of extra mappings 23 | extra = { 24 | ---Add comment on the line above 25 | above = 'gcO', 26 | ---Add comment on the line below 27 | below = 'gco', 28 | ---Add comment at the end of line 29 | eol = 'gcA', 30 | }, 31 | ---Enable keybindings 32 | ---NOTE: If given `false` then the plugin won't create any mappings 33 | mappings = { 34 | ---Operator-pending mapping; `gcc` `gbc` `gc[count]{motion}` `gb[count]{motion}` 35 | basic = true, 36 | ---Extra mapping; `gco`, `gcO`, `gcA` 37 | extra = true, 38 | }, 39 | ---Function to call before (un)comment 40 | pre_hook = nil, 41 | ---Function to call after (un)comment 42 | post_hook = nil, 43 | } 44 | -------------------------------------------------------------------------------- /hypr/mocha.conf: -------------------------------------------------------------------------------- 1 | $rosewater = rgb(f5e0dc) 2 | $rosewaterAlpha = f5e0dc 3 | 4 | $flamingo = rgb(f2cdcd) 5 | $flamingoAlpha = f2cdcd 6 | 7 | $pink = rgb(f5c2e7) 8 | $pinkAlpha = f5c2e7 9 | 10 | $mauve = rgb(cba6f7) 11 | $mauveAlpha = cba6f7 12 | 13 | $red = rgb(f38ba8) 14 | $redAlpha = f38ba8 15 | 16 | $maroon = rgb(eba0ac) 17 | $maroonAlpha = eba0ac 18 | 19 | $peach = rgb(fab387) 20 | $peachAlpha = fab387 21 | 22 | $yellow = rgb(f9e2af) 23 | $yellowAlpha = f9e2af 24 | 25 | $green = rgb(a6e3a1) 26 | $greenAlpha = a6e3a1 27 | 28 | $teal = rgb(94e2d5) 29 | $tealAlpha = 94e2d5 30 | 31 | $sky = rgb(89dceb) 32 | $skyAlpha = 89dceb 33 | 34 | $sapphire = rgb(74c7ec) 35 | $sapphireAlpha = 74c7ec 36 | 37 | $blue = rgb(89b4fa) 38 | $blueAlpha = 89b4fa 39 | 40 | $lavender = rgb(b4befe) 41 | $lavenderAlpha = b4befe 42 | 43 | $text = rgb(cdd6f4) 44 | $textAlpha = cdd6f4 45 | 46 | $subtext1 = rgb(bac2de) 47 | $subtext1Alpha = bac2de 48 | 49 | $subtext0 = rgb(a6adc8) 50 | $subtext0Alpha = a6adc8 51 | 52 | $overlay2 = rgb(9399b2) 53 | $overlay2Alpha = 9399b2 54 | 55 | $overlay1 = rgb(7f849c) 56 | $overlay1Alpha = 7f849c 57 | 58 | $overlay0 = rgb(6c7086) 59 | $overlay0Alpha = 6c7086 60 | 61 | $surface2 = rgb(585b70) 62 | $surface2Alpha = 585b70 63 | 64 | $surface1 = rgb(45475a) 65 | $surface1Alpha = 45475a 66 | 67 | $surface0 = rgb(313244) 68 | $surface0Alpha = 313244 69 | 70 | $base = rgb(1e1e2e) 71 | $baseAlpha = 1e1e2e 72 | 73 | $mantle = rgb(181825) 74 | $mantleAlpha = 181825 75 | 76 | $crust = rgb(11111b) 77 | $crustAlpha = 11111b 78 | -------------------------------------------------------------------------------- /nvim/lua/kickstart/plugins/neo-tree.lua: -------------------------------------------------------------------------------- 1 | -- Neo-tree is a Neovim plugin to browse the file system 2 | -- https://github.com/nvim-neo-tree/neo-tree.nvim 3 | 4 | return { 5 | 'nvim-neo-tree/neo-tree.nvim', 6 | version = '*', 7 | dependencies = { 8 | 'nvim-lua/plenary.nvim', 9 | 'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended 10 | 'MunifTanjim/nui.nvim', 11 | }, 12 | cmd = 'Neotree', 13 | keys = { 14 | { 15 | 'e', 16 | function() 17 | require('neo-tree.command').execute { toggle = true, vim.fn.getcwd() } 18 | end, 19 | desc = 'Toggle Neotree', 20 | silent = true, 21 | }, 22 | { 23 | 'o', 24 | function() 25 | if vim.bo.filetype == 'neo-tree' then 26 | vim.cmd.wincmd 'p' 27 | else 28 | vim.cmd.Neotree 'focus' 29 | end 30 | end, 31 | desc = 'Focus Neotree', 32 | silent = true, 33 | }, 34 | }, 35 | opts = { 36 | filesystem = { 37 | filtered_items = { 38 | hide_dotfiles = false, 39 | }, 40 | }, 41 | git_status = { 42 | symbols = { 43 | -- Change type 44 | added = '✚', 45 | modified = '', 46 | deleted = '✖', 47 | renamed = '󰁕', 48 | 49 | -- Status type 50 | untracked = '', 51 | ignored = '', 52 | unstaged = '󰄱', 53 | staged = '', 54 | conflict = '', 55 | }, 56 | }, 57 | close_if_last_window = true, 58 | }, 59 | } 60 | -------------------------------------------------------------------------------- /nvim/lua/kickstart/plugins/treesitter.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { -- Highlight, edit, and navigate code 3 | 'nvim-treesitter/nvim-treesitter', 4 | build = ':TSUpdate', 5 | main = 'nvim-treesitter.configs', -- Sets main module to use for opts 6 | -- [[ Configure Treesitter ]] See `:help nvim-treesitter` 7 | opts = { 8 | ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' }, 9 | -- Autoinstall languages that are not installed 10 | auto_install = true, 11 | highlight = { 12 | enable = true, 13 | -- Some languages depend on vim's regex highlighting system (such as Ruby) for indent rules. 14 | -- If you are experiencing weird indenting issues, add the language to 15 | -- the list of additional_vim_regex_highlighting and disabled languages for indent. 16 | additional_vim_regex_highlighting = { 'ruby' }, 17 | }, 18 | indent = { enable = true, disable = { 'ruby' } }, 19 | }, 20 | -- There are additional nvim-treesitter modules that you can use to interact 21 | -- with nvim-treesitter. You should go explore a few and see what interests you: 22 | -- 23 | -- - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod` 24 | -- - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context 25 | -- - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects 26 | }, 27 | } 28 | -- vim: ts=2 sts=2 sw=2 et 29 | -------------------------------------------------------------------------------- /nvim/lua/kickstart/plugins/conform.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { -- Autoformat 3 | 'stevearc/conform.nvim', 4 | event = { 'BufWritePre' }, 5 | cmd = { 'ConformInfo' }, 6 | keys = { 7 | { 8 | 'cf', 9 | function() 10 | require('conform').format { async = true, lsp_format = 'fallback' } 11 | end, 12 | mode = '', 13 | desc = 'Format buffer', 14 | }, 15 | }, 16 | opts = { 17 | notify_on_error = false, 18 | format_on_save = function(bufnr) 19 | -- Disable "format_on_save lsp_fallback" for languages that don't 20 | -- have a well standardized coding style. You can add additional 21 | -- languages here or re-enable it for the disabled ones. 22 | local disable_filetypes = { c = true, cpp = true } 23 | local lsp_format_opt 24 | if disable_filetypes[vim.bo[bufnr].filetype] then 25 | lsp_format_opt = 'never' 26 | else 27 | lsp_format_opt = 'fallback' 28 | end 29 | return { 30 | timeout_ms = 500, 31 | lsp_format = lsp_format_opt, 32 | } 33 | end, 34 | formatters_by_ft = { 35 | lua = { 'stylua' }, 36 | -- Conform can also run multiple formatters sequentially 37 | -- python = { "isort", "black" }, 38 | -- 39 | -- You can use 'stop_after_first' to run the first available formatter from the list 40 | -- javascript = { "prettierd", "prettier", stop_after_first = true }, 41 | }, 42 | }, 43 | }, 44 | } 45 | -- vim: ts=2 sts=2 sw=2 et 46 | -------------------------------------------------------------------------------- /nvim/lua/kickstart/plugins/mini.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { -- Collection of various small independent plugins/modules 3 | 'echasnovski/mini.nvim', 4 | config = function() 5 | -- Better Around/Inside textobjects 6 | -- 7 | -- Examples: 8 | -- - va) - [V]isually select [A]round [)]paren 9 | -- - yinq - [Y]ank [I]nside [N]ext [Q]uote 10 | -- - ci' - [C]hange [I]nside [']quote 11 | require('mini.ai').setup { n_lines = 500 } 12 | 13 | -- Add/delete/replace surroundings (brackets, quotes, etc.) 14 | -- 15 | -- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren 16 | -- - sd' - [S]urround [D]elete [']quotes 17 | -- - sr)' - [S]urround [R]eplace [)] ['] 18 | require('mini.surround').setup() 19 | 20 | -- Simple and easy statusline. 21 | -- You could remove this setup call if you don't like it, 22 | -- and try some other statusline plugin 23 | local statusline = require 'mini.statusline' 24 | -- set use_icons to true if you have a Nerd Font 25 | statusline.setup { use_icons = vim.g.have_nerd_font } 26 | 27 | -- You can configure sections in the statusline by overriding their 28 | -- default behavior. For example, here we set the section for 29 | -- cursor location to LINE:COLUMN 30 | ---@diagnostic disable-next-line: duplicate-set-field 31 | statusline.section_location = function() 32 | return '%2l:%-2v' 33 | end 34 | 35 | -- ... and there is more! 36 | -- Check out: https://github.com/echasnovski/mini.nvim 37 | end, 38 | }, 39 | } 40 | -- vim: ts=2 sts=2 sw=2 et 41 | -------------------------------------------------------------------------------- /nvim/lua/kickstart/health.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | -- 3 | -- This file is not required for your own configuration, 4 | -- but helps people determine if their system is setup correctly. 5 | -- 6 | --]] 7 | 8 | local check_version = function() 9 | local verstr = tostring(vim.version()) 10 | if not vim.version.ge then 11 | vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr)) 12 | return 13 | end 14 | 15 | if vim.version.ge(vim.version(), '0.10-dev') then 16 | vim.health.ok(string.format("Neovim version is: '%s'", verstr)) 17 | else 18 | vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr)) 19 | end 20 | end 21 | 22 | local check_external_reqs = function() 23 | -- Basic utils: `git`, `make`, `unzip` 24 | for _, exe in ipairs { 'git', 'make', 'unzip', 'rg' } do 25 | local is_executable = vim.fn.executable(exe) == 1 26 | if is_executable then 27 | vim.health.ok(string.format("Found executable: '%s'", exe)) 28 | else 29 | vim.health.warn(string.format("Could not find executable: '%s'", exe)) 30 | end 31 | end 32 | 33 | return true 34 | end 35 | 36 | return { 37 | check = function() 38 | vim.health.start 'kickstart.nvim' 39 | 40 | vim.health.info [[NOTE: Not every warning is a 'must-fix' in `:checkhealth` 41 | 42 | Fix only warnings for plugins and languages you intend to use. 43 | Mason will give warnings for languages that are not installed. 44 | You do not need to install, unless you want to use those languages!]] 45 | 46 | local uv = vim.uv or vim.loop 47 | vim.health.info('System Information: ' .. vim.inspect(uv.os_uname())) 48 | 49 | check_version() 50 | check_external_reqs() 51 | end, 52 | } 53 | -------------------------------------------------------------------------------- /kitty/theme.conf: -------------------------------------------------------------------------------- 1 | 2 | ## name: Catppuccin Mocha 🌿 3 | ## author: Pocco81 (https://github.com/Pocco81) 4 | ## license: MIT 5 | ## upstream: https://github.com/catppuccin/kitty/blob/main/mocha.conf 6 | ## blurb: Soothing pastel theme for the high-spirited! 7 | 8 | 9 | 10 | # The basic colors 11 | foreground #CDD6F4 12 | background #1E1E2E 13 | selection_foreground #1E1E2E 14 | selection_background #F5E0DC 15 | 16 | # Cursor colors 17 | cursor #F5E0DC 18 | cursor_text_color #1E1E2E 19 | 20 | # URL underline color when hovering with mouse 21 | url_color #B4BEFE 22 | 23 | # Kitty window border colors 24 | active_border_color #CBA6F7 25 | inactive_border_color #8E95B3 26 | bell_border_color #EBA0AC 27 | 28 | # OS Window titlebar colors 29 | wayland_titlebar_color system 30 | macos_titlebar_color system 31 | 32 | # Tab bar colors 33 | active_tab_foreground #11111B 34 | active_tab_background #CBA6F7 35 | inactive_tab_foreground #CDD6F4 36 | inactive_tab_background #181825 37 | tab_bar_background #11111B 38 | 39 | # Colors for marks (marked text in the terminal) 40 | mark1_foreground #1E1E2E 41 | mark1_background #87B0F9 42 | mark2_foreground #1E1E2E 43 | mark2_background #CBA6F7 44 | mark3_foreground #1E1E2E 45 | mark3_background #74C7EC 46 | 47 | # The 16 terminal colors 48 | 49 | # black 50 | color0 #43465A 51 | color8 #43465A 52 | 53 | # red 54 | color1 #F38BA8 55 | color9 #F38BA8 56 | 57 | # green 58 | color2 #A6E3A1 59 | color10 #A6E3A1 60 | 61 | # yellow 62 | color3 #F9E2AF 63 | color11 #F9E2AF 64 | 65 | # blue 66 | color4 #87B0F9 67 | color12 #87B0F9 68 | 69 | # magenta 70 | color5 #F5C2E7 71 | color13 #F5C2E7 72 | 73 | # cyan 74 | color6 #94E2D5 75 | color14 #94E2D5 76 | 77 | # white 78 | color7 #CDD6F4 79 | color15 #A1A8C9 80 | -------------------------------------------------------------------------------- /kitty/current-theme.conf: -------------------------------------------------------------------------------- 1 | # vim:ft=kitty 2 | 3 | ## name: Catppuccin-Mocha 4 | ## author: Pocco81 (https://github.com/Pocco81) 5 | ## license: MIT 6 | ## upstream: https://github.com/catppuccin/kitty/blob/main/mocha.conf 7 | ## blurb: Soothing pastel theme for the high-spirited! 8 | 9 | 10 | 11 | # The basic colors 12 | foreground #CDD6F4 13 | background #1E1E2E 14 | selection_foreground #1E1E2E 15 | selection_background #F5E0DC 16 | 17 | # Cursor colors 18 | cursor #F5E0DC 19 | cursor_text_color #1E1E2E 20 | 21 | # URL underline color when hovering with mouse 22 | url_color #F5E0DC 23 | 24 | # Kitty window border colors 25 | active_border_color #B4BEFE 26 | inactive_border_color #6C7086 27 | bell_border_color #F9E2AF 28 | 29 | # OS Window titlebar colors 30 | wayland_titlebar_color system 31 | macos_titlebar_color system 32 | 33 | # Tab bar colors 34 | active_tab_foreground #11111B 35 | active_tab_background #CBA6F7 36 | inactive_tab_foreground #CDD6F4 37 | inactive_tab_background #181825 38 | tab_bar_background #11111B 39 | 40 | # Colors for marks (marked text in the terminal) 41 | mark1_foreground #1E1E2E 42 | mark1_background #B4BEFE 43 | mark2_foreground #1E1E2E 44 | mark2_background #CBA6F7 45 | mark3_foreground #1E1E2E 46 | mark3_background #74C7EC 47 | 48 | # The 16 terminal colors 49 | 50 | # black 51 | color0 #45475A 52 | color8 #585B70 53 | 54 | # red 55 | color1 #F38BA8 56 | color9 #F38BA8 57 | 58 | # green 59 | color2 #A6E3A1 60 | color10 #A6E3A1 61 | 62 | # yellow 63 | color3 #F9E2AF 64 | color11 #F9E2AF 65 | 66 | # blue 67 | color4 #89B4FA 68 | color12 #89B4FA 69 | 70 | # magenta 71 | color5 #F5C2E7 72 | color13 #F5C2E7 73 | 74 | # cyan 75 | color6 #94E2D5 76 | color14 #94E2D5 77 | 78 | # white 79 | color7 #BAC2DE 80 | color15 #A6ADC8 81 | -------------------------------------------------------------------------------- /hypr/hyprlock.conf: -------------------------------------------------------------------------------- 1 | source = $HOME/.config/hypr/mocha.conf 2 | 3 | $accent = $mauve 4 | $accentAlpha = $mauveAlpha 5 | $font = JetBrainsMono Nerd Font 6 | 7 | # GENERAL 8 | general { 9 | disable_loading_bar = true 10 | hide_cursor = false 11 | } 12 | 13 | # BACKGROUND 14 | background { 15 | monitor = 16 | path = $HOME/.config/hypr/background 17 | blur_passes = 2 18 | color = $base 19 | } 20 | 21 | # LAYOUT 22 | label { 23 | monitor = 24 | text = Layout: $LAYOUT 25 | color = $text 26 | font_size = 25 27 | font_family = $font 28 | position = 30, -30 29 | halign = left 30 | valign = top 31 | } 32 | 33 | # TIME 34 | label { 35 | monitor = 36 | text = $TIME 37 | color = $text 38 | font_size = 90 39 | font_family = $font 40 | position = -30, 0 41 | halign = right 42 | valign = top 43 | } 44 | 45 | # DATE 46 | label { 47 | monitor = 48 | text = cmd[update:43200000] date +"%A, %d %B %Y" 49 | color = $text 50 | font_size = 25 51 | font_family = $font 52 | position = -30, -150 53 | halign = right 54 | valign = top 55 | } 56 | 57 | # USER AVATAR 58 | image { 59 | monitor = 60 | path = $HOME/.config/hypr/face 61 | size = 100 62 | border_color = $accent 63 | position = 0, 75 64 | halign = center 65 | valign = center 66 | } 67 | 68 | # INPUT FIELD 69 | input-field { 70 | monitor = 71 | size = 300, 60 72 | outline_thickness = 4 73 | dots_size = 0.2 74 | dots_spacing = 0.2 75 | dots_center = true 76 | outer_color = $accent 77 | inner_color = $surface0 78 | font_color = $text 79 | fade_on_empty = false 80 | placeholder_text = 󰌾 Logged in as $USER 81 | hide_input = false 82 | check_color = $accent 83 | fail_color = $red 84 | fail_text = $FAIL ($ATTEMPTS) 85 | capslock_color = $yellow 86 | position = 0, -47 87 | halign = center 88 | valign = center 89 | } 90 | -------------------------------------------------------------------------------- /waybar/style-old.css: -------------------------------------------------------------------------------- 1 | @import "mocha.css"; 2 | 3 | * { 4 | font-family: CaskaydiaCove Nerd Font; 5 | font-size: 14px; 6 | min-height: 0; 7 | } 8 | 9 | #waybar { 10 | background: transparent; 11 | color: @text; 12 | margin: 5px 5px; 13 | } 14 | 15 | #workspaces { 16 | border-radius: 1rem; 17 | background-color: @surface0; 18 | margin-right: 1rem; 19 | padding: 0px 5px 0px; 20 | } 21 | 22 | #workspaces button { 23 | color: @blue; 24 | border-radius: 1rem; 25 | padding: 0.4rem 11px 0px 0.4rem; 26 | } 27 | 28 | #workspaces button.active { 29 | color: @mauve; 30 | border-radius: 1rem; 31 | } 32 | 33 | #workspaces button:hover { 34 | color: @lavender; 35 | border-radius: 1rem; 36 | } 37 | 38 | #custom-music, 39 | #tray, 40 | #backlight, 41 | #clock, 42 | #battery, 43 | #pulseaudio, 44 | #custom-lock, 45 | #custom-power { 46 | background-color: @surface0; 47 | padding: 0.5rem 1rem; 48 | margin: 5px 0; 49 | } 50 | 51 | #clock { 52 | color: @blue; 53 | border-radius: 1rem 1rem 1rem 1rem; 54 | margin-right: 1rem; 55 | } 56 | 57 | #battery { 58 | color: @green; 59 | border-radius: 0rem 1rem 1rem 0rem; 60 | margin-right: 1rem; 61 | } 62 | 63 | #battery.charging { 64 | color: @green; 65 | } 66 | 67 | #battery.warning:not(.charging) { 68 | color: @red; 69 | } 70 | 71 | #backlight { 72 | color: @yellow; 73 | } 74 | 75 | #backlight { 76 | border-radius: 0; 77 | } 78 | 79 | #pulseaudio { 80 | color: @maroon; 81 | border-radius: 1rem 0px 0px 1rem; 82 | margin-left: 1rem; 83 | } 84 | 85 | #custom-music { 86 | color: @mauve; 87 | border-radius: 1rem; 88 | } 89 | 90 | #custom-lock { 91 | border-radius: 1rem 0px 0px 1rem; 92 | color: @lavender; 93 | } 94 | 95 | #custom-power { 96 | margin-right: 1rem; 97 | border-radius: 0px 1rem 1rem 0px; 98 | color: @red; 99 | } 100 | 101 | #tray { 102 | margin-right: 1rem; 103 | margin-left: 1rem; 104 | border-radius: 1rem; 105 | } 106 | -------------------------------------------------------------------------------- /nvim/lua/options.lua: -------------------------------------------------------------------------------- 1 | -- [[ Setting options ]] 2 | -- See `:help vim.opt` 3 | -- NOTE: You can change these options as you wish! 4 | -- For more options, you can see `:help option-list` 5 | 6 | -- Make line numbers default 7 | vim.opt.number = true 8 | -- You can also add relative line numbers, to help with jumping. 9 | -- Experiment for yourself to see if you like it! 10 | -- vim.opt.relativenumber = true 11 | 12 | -- Enable mouse mode, can be useful for resizing splits for example! 13 | vim.opt.mouse = 'a' 14 | 15 | -- Don't show the mode, since it's already in the status line 16 | vim.opt.showmode = false 17 | 18 | -- Sync clipboard between OS and Neovim. 19 | -- Schedule the setting after `UiEnter` because it can increase startup-time. 20 | -- Remove this option if you want your OS clipboard to remain independent. 21 | -- See `:help 'clipboard'` 22 | vim.schedule(function() 23 | vim.opt.clipboard = 'unnamedplus' 24 | end) 25 | 26 | -- Enable break indent 27 | vim.opt.breakindent = true 28 | 29 | -- Save undo history 30 | vim.opt.undofile = true 31 | 32 | -- Case-insensitive searching UNLESS \C or one or more capital letters in the search term 33 | vim.opt.ignorecase = true 34 | vim.opt.smartcase = true 35 | 36 | -- Keep signcolumn on by default 37 | vim.opt.signcolumn = 'yes' 38 | 39 | -- Decrease update time 40 | vim.opt.updatetime = 250 41 | 42 | -- Decrease mapped sequence wait time 43 | -- Displays which-key popup sooner 44 | vim.opt.timeoutlen = 300 45 | 46 | -- Configure how new splits should be opened 47 | vim.opt.splitright = true 48 | vim.opt.splitbelow = true 49 | 50 | vim.opt.virtualedit = 'onemore' 51 | 52 | -- Sets how neovim will display certain whitespace characters in the editor. 53 | -- See `:help 'list'` 54 | -- and `:help 'listchars'` 55 | vim.opt.list = true 56 | vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' } 57 | 58 | -- Preview substitutions live, as you type! 59 | vim.opt.inccommand = 'split' 60 | 61 | -- Show which line your cursor is on 62 | vim.opt.cursorline = true 63 | 64 | -- Minimal number of screen lines to keep above and below the cursor. 65 | vim.opt.scrolloff = 10 66 | 67 | -- vim: ts=2 sts=2 sw=2 et 68 | -------------------------------------------------------------------------------- /rofi/local/themes/catppuccin-mocha-powermenu.rasi: -------------------------------------------------------------------------------- 1 | * { 2 | bg-col: #1e1e2e; 3 | bg-col-light: #1e1e2e; 4 | border-col: #1e1e2e; 5 | selected-col: #1e1e2e; 6 | blue: #89b4fa; 7 | mauve: #cba6f7; 8 | fg-col: #cdd6f4; 9 | fg-col2: #f38ba8; 10 | grey: #6c7086; 11 | 12 | font: "CaskaydiaCove Nerd Font 14"; 13 | } 14 | 15 | window { 16 | location: east; 17 | anchor: east; 18 | width: 125; 19 | x-offset: -25px; 20 | background-color: @bg-col; 21 | border: 5px solid; 22 | border-radius: 22; 23 | border-color: @mauve; 24 | } 25 | 26 | mainbox { 27 | spacing: 15px; 28 | padding: 15px; 29 | background-color: transparent; 30 | children: ["listview"]; 31 | } 32 | 33 | listview { 34 | columns: 1; 35 | lines: 4; 36 | cycle: false; 37 | dynamic: true; 38 | scrollbar: false; 39 | layout: vertical; 40 | spacing: 15px; 41 | background-color: transparent; 42 | border: 0px solid; 43 | } 44 | 45 | element { 46 | background-color: inherit; 47 | text-color: @fg-col; 48 | padding: 5px; 49 | border-radius: 5px; 50 | } 51 | 52 | element-text { 53 | background-color: inherit; 54 | text-color: inherit; 55 | font: "CaskaydiaCove Nerd Font 35"; 56 | align-items: center; 57 | vertical-align: 0.5; 58 | horizontal-align: 0.5; 59 | } 60 | 61 | element.normal.normal { 62 | background-color: transparent; 63 | text-color: @fg-col; 64 | } 65 | 66 | element.normal.urgent { 67 | background-color: transparent; 68 | text-color: @fg-col; 69 | } 70 | 71 | element.normal.active { 72 | background-color: transparent; 73 | text-color: @fg-col; 74 | } 75 | 76 | element.selected.normal { 77 | background-color: @mauve; 78 | text-color: @bg-col; 79 | } 80 | 81 | element.selected.urgent { 82 | background-color: @mauve; 83 | text-color: @bg-col; 84 | } 85 | 86 | element.selected.active { 87 | background-color: @mauve; 88 | text-color: @bg-col; 89 | } 90 | 91 | element.alternate.normal { 92 | background-color: transparent; 93 | text-color: @fg-col; 94 | } 95 | 96 | element.alternate.urgent { 97 | background-color: transparent; 98 | text-color: @fg-col; 99 | } 100 | 101 | element.alternate.active { 102 | background-color: transparent; 103 | text-color: @fg-col; 104 | } 105 | -------------------------------------------------------------------------------- /rofi/local/themes/catppuccin-mocha.rasi: -------------------------------------------------------------------------------- 1 | * { 2 | bg-col: #1e1e2e; 3 | bg-col-light: #1e1e2e; 4 | border-col: #1e1e2e; 5 | selected-col: #1e1e2e; 6 | blue: #89b4fa; 7 | mauve: #cba6f7; 8 | fg-col: #cdd6f4; 9 | fg-col2: #f38ba8; 10 | grey: #6c7086; 11 | 12 | width: 600; 13 | font: "CaskaydiaCove Nerd Font 16"; 14 | } 15 | 16 | element-text, element-icon , mode-switcher { 17 | background-color: inherit; 18 | text-color: inherit; 19 | } 20 | 21 | window { 22 | border-color: @mauve; 23 | border-radius: 12; 24 | border: 5px solid; 25 | background-color: @bg-col; 26 | } 27 | 28 | mainbox { 29 | background-color: @bg-col; 30 | padding: 25px; 31 | } 32 | 33 | inputbar { 34 | children: [prompt,entry]; 35 | background-color: @bg-col; 36 | border-radius: 5px; 37 | } 38 | 39 | prompt { 40 | background-color: @mauve; 41 | padding: 5px; 42 | text-color: @bg-col; 43 | border-radius: 3px; 44 | margin: 0px 5px 0px 0px; 45 | horizontal-align: 0.5; 46 | vertical-align: 0.5; 47 | } 48 | 49 | textbox-prompt-colon { 50 | expand: false; 51 | str: ":"; 52 | } 53 | 54 | entry { 55 | padding: 6px; 56 | text-color: @fg-col; 57 | background-color: @bg-col; 58 | vertical-align: 0.5; 59 | } 60 | 61 | listview { 62 | padding: 15px 0px 0px 0px; 63 | columns: 1; 64 | lines: 4; 65 | background-color: @bg-col; 66 | } 67 | 68 | element { 69 | margin: 3px 0px 0px 0px; 70 | padding: 6px; 71 | background-color: @bg-col; 72 | text-color: @fg-col; 73 | } 74 | 75 | element-text { 76 | vertical-align: 0.5; 77 | } 78 | 79 | element-icon { 80 | size: 34px; 81 | vertical-align: 0.5; 82 | } 83 | 84 | element selected.normal { 85 | background-color: @mauve; 86 | border-radius: 10px; 87 | text-color: @bg-col; 88 | } 89 | 90 | mode-switcher { 91 | spacing: 0; 92 | } 93 | 94 | button { 95 | enabled: false; 96 | } 97 | 98 | message { 99 | background-color: @bg-col-light; 100 | margin: 2px; 101 | padding: 2px; 102 | border-radius: 5px; 103 | } 104 | 105 | textbox { 106 | padding: 6px; 107 | margin: 20px 0px 0px 20px; 108 | text-color: @mauve; 109 | background-color: @bg-col-light; 110 | } 111 | -------------------------------------------------------------------------------- /nvim/lua/kickstart/plugins/lint.lua: -------------------------------------------------------------------------------- 1 | return { 2 | 3 | { -- Linting 4 | 'mfussenegger/nvim-lint', 5 | event = { 'BufReadPre', 'BufNewFile' }, 6 | config = function() 7 | local lint = require 'lint' 8 | lint.linters_by_ft = { 9 | markdown = { 'markdownlint' }, 10 | } 11 | 12 | -- To allow other plugins to add linters to require('lint').linters_by_ft, 13 | -- instead set linters_by_ft like this: 14 | -- lint.linters_by_ft = lint.linters_by_ft or {} 15 | -- lint.linters_by_ft['markdown'] = { 'markdownlint' } 16 | -- 17 | -- However, note that this will enable a set of default linters, 18 | -- which will cause errors unless these tools are available: 19 | -- { 20 | -- clojure = { "clj-kondo" }, 21 | -- dockerfile = { "hadolint" }, 22 | -- inko = { "inko" }, 23 | -- janet = { "janet" }, 24 | -- json = { "jsonlint" }, 25 | -- markdown = { "vale" }, 26 | -- rst = { "vale" }, 27 | -- ruby = { "ruby" }, 28 | -- terraform = { "tflint" }, 29 | -- text = { "vale" } 30 | -- } 31 | -- 32 | -- You can disable the default linters by setting their filetypes to nil: 33 | -- lint.linters_by_ft['clojure'] = nil 34 | -- lint.linters_by_ft['dockerfile'] = nil 35 | -- lint.linters_by_ft['inko'] = nil 36 | -- lint.linters_by_ft['janet'] = nil 37 | -- lint.linters_by_ft['json'] = nil 38 | -- lint.linters_by_ft['markdown'] = nil 39 | -- lint.linters_by_ft['rst'] = nil 40 | -- lint.linters_by_ft['ruby'] = nil 41 | -- lint.linters_by_ft['terraform'] = nil 42 | -- lint.linters_by_ft['text'] = nil 43 | 44 | -- Create autocommand which carries out the actual linting 45 | -- on the specified events. 46 | local lint_augroup = vim.api.nvim_create_augroup('lint', { clear = true }) 47 | vim.api.nvim_create_autocmd({ 'BufEnter', 'BufWritePost', 'InsertLeave' }, { 48 | group = lint_augroup, 49 | callback = function() 50 | -- Only run the linter in buffers that you can modify in order to 51 | -- avoid superfluous noise, notably within the handy LSP pop-ups that 52 | -- describe the hovered symbol using Markdown. 53 | if vim.opt_local.modifiable:get() then 54 | lint.try_lint() 55 | end 56 | end, 57 | }) 58 | end, 59 | }, 60 | } 61 | -------------------------------------------------------------------------------- /nvim/lua/kickstart/plugins/which-key.lua: -------------------------------------------------------------------------------- 1 | -- NOTE: Plugins can also be configured to run Lua code when they are loaded. 2 | -- 3 | -- This is often very useful to both group configuration, as well as handle 4 | -- lazy loading plugins that don't need to be loaded immediately at startup. 5 | -- 6 | -- For example, in the following configuration, we use: 7 | -- event = 'VimEnter' 8 | -- 9 | -- which loads which-key before all the UI elements are loaded. Events can be 10 | -- normal autocommands events (`:help autocmd-events`). 11 | -- 12 | -- Then, because we use the `opts` key (recommended), the configuration runs 13 | -- after the plugin has been loaded as `require(MODULE).setup(opts)`. 14 | 15 | return { 16 | { -- Useful plugin to show you pending keybinds. 17 | 'folke/which-key.nvim', 18 | event = 'VimEnter', -- Sets the loading event to 'VimEnter' 19 | opts = { 20 | icons = { 21 | -- set icon mappings to true if you have a Nerd Font 22 | mappings = vim.g.have_nerd_font, 23 | -- If you are using a Nerd Font: set icons.keys to an empty table which will use the 24 | -- default which-key.nvim defined Nerd Font icons, otherwise define a string table 25 | keys = vim.g.have_nerd_font and {} or { 26 | Up = ' ', 27 | Down = ' ', 28 | Left = ' ', 29 | Right = ' ', 30 | C = ' ', 31 | M = ' ', 32 | D = ' ', 33 | S = ' ', 34 | CR = ' ', 35 | Esc = ' ', 36 | ScrollWheelDown = ' ', 37 | ScrollWheelUp = ' ', 38 | NL = ' ', 39 | BS = ' ', 40 | Space = ' ', 41 | Tab = ' ', 42 | F1 = '', 43 | F2 = '', 44 | F3 = '', 45 | F4 = '', 46 | F5 = '', 47 | F6 = '', 48 | F7 = '', 49 | F8 = '', 50 | F9 = '', 51 | F10 = '', 52 | F11 = '', 53 | F12 = '', 54 | }, 55 | }, 56 | 57 | -- Document existing key chains 58 | spec = { 59 | { 'c', group = 'Code', mode = { 'n', 'x' } }, 60 | { 'd', group = 'Diagnostics' }, 61 | { 'f', group = 'Find' }, 62 | { 'g', group = 'Goto' }, 63 | { 'n', group = 'Notifications', icon = '󰋼' }, 64 | { 'r', group = 'Rename' }, 65 | -- { 's', group = 'Search' }, 66 | { 't', group = 'Toggle' }, 67 | { 'w', group = 'Workspace' }, 68 | }, 69 | }, 70 | }, 71 | } 72 | -- vim: ts=2 sts=2 sw=2 et 73 | -------------------------------------------------------------------------------- /nvim/lua/custom/setup/notify-utils.lua: -------------------------------------------------------------------------------- 1 | local M = {} 2 | 3 | ---@type table[] 4 | local notifications = {} 5 | local paused = false 6 | 7 | --- Check if notifications are paused 8 | ---@return boolean # whether or not the notifications are paused 9 | function M.is_paused() 10 | return paused 11 | end 12 | 13 | --- Check now many notifications are pending 14 | ---@return table[] # the number of pending notifications 15 | function M.pending() 16 | return notifications 17 | end 18 | 19 | --- Pause notifications 20 | function M.pause() 21 | paused = true 22 | end 23 | 24 | --- Resume paused notifications 25 | function M.resume() 26 | paused = false 27 | vim.schedule(function() 28 | vim.tbl_map(function(notif) 29 | vim.notify(vim.F.unpack_len(notif)) 30 | end, notifications) 31 | notifications = {} 32 | end) 33 | end 34 | 35 | --- A pausable `vim.notify` function 36 | ---@param message string|string[] Notification message 37 | ---@param level string|number Log level. See vim.log.levels 38 | ---@param opts notify.Options Notification options 39 | function M.notify(message, level, opts) 40 | if M.is_paused() then 41 | local pos = opts and opts.replace 42 | if type(pos) == 'table' and pos.id then 43 | pos = pos.id 44 | end 45 | if type(pos) ~= 'number' or not notifications[pos] then 46 | pos = #notifications + 1 47 | end 48 | if opts then 49 | opts.replace = nil 50 | end 51 | notifications[pos] = vim.F.pack_len(message, level, opts) 52 | return { id = pos } 53 | else 54 | return M._original(message, level, opts) 55 | end 56 | end 57 | 58 | --- Set `vim.notify` to extend it to be pause-able 59 | ---@param notify function|notify? the original notification function (defaults to `vim.notify`) 60 | function M.setup(notify) 61 | if not notify then 62 | notify = vim.notify 63 | end 64 | assert(notify ~= M.notify, 'vim.notify is already setup') 65 | M._original, vim.notify = notify, M.notify 66 | end 67 | 68 | --- Remove `astronvim.notify` utilities and restore original `vim.notify` 69 | function M.restore() 70 | M.notify = M._original 71 | if M.is_paused() then 72 | M.resume() 73 | end 74 | end 75 | 76 | --- Pause notifications for a 500ms delay or until `vim.notify` changes 77 | function M.defer_startup() 78 | M.pause() 79 | 80 | -- defer initially for 500ms or until `vim.notify` changes 81 | local uv = vim.uv or vim.loop 82 | local timer, checker = uv.new_timer(), uv.new_check() 83 | 84 | local function replay() 85 | timer:stop() 86 | checker:stop() 87 | M.resume() 88 | end 89 | 90 | -- wait till vim.notify has been replaced 91 | checker:start(function() 92 | if vim.notify ~= M.notify then 93 | replay() 94 | end 95 | end) 96 | -- or if it took more than 500ms, then something went wrong 97 | timer:start(500, 0, replay) 98 | end 99 | 100 | return M 101 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # niri-Dotfiles 2 | 3 | --- 4 | 5 | [Preview](#preview) 6 | [Dependencies](#dependencies) 7 | [Extras](#optional-extras) 8 | [Install Script](#install-script) 9 | [Manual Install](#manual-install) 10 | [Credit](#credit) 11 | 12 | --- 13 | 14 | ## Preview 15 | 16 | ![Empty](<./assets/Blank.png>) 17 | *Blank Workspace* 18 | 19 | 20 | ![Empty](<./assets/Fetch.png>) 21 | *Fastefetch, Kitty and Firefox* 22 | 23 | 24 | ![Empty](<./assets/Solarvim.png>) 25 | *Neovim Config* 26 | 27 | 28 | ![Empty](<./assets/Floating.png>) 29 | *Yazi and mpv* 30 | 31 | 32 | ![Empty](<./assets/Launcher.png>) 33 | *Waybar app launcher* 34 | 35 | 36 | --- 37 | 38 | ## Dependencies 39 | - niri 40 | 41 | - fuzzel 42 | - waybar 43 | - waypaper 44 | - dunst 45 | - hyprlock 46 | - rofi 47 | 48 | - neovim 49 | - kitty 50 | - yazi 51 | 52 | - CaskaydiaCove Nerd Font / CascadiaCode 53 | - Tela Circle Dracula Icons 54 | 55 | --- 56 | 57 | ## Optional Extras 58 | > lacking some require modification of the niri config file, indicated by * 59 | 60 | - \* firefox 61 | - \* brightnessctl 62 | - \* discord 63 | 64 | - fastfetch 65 | 66 | --- 67 | 68 | ## Install Script 69 | 70 | > [!IMPORTANT] 71 | > To use the install script the following should be installed: 72 | > Wget, Git, Niri, Fuzzel, Neovim, Dunst, Fuzzel, Fastfetch, 73 | > Yazi, Kitty, mpv, Hyprlock, Waypaper, Swayidle and Swaybg 74 | 75 | 1. Download the install script: 76 | ```console 77 | wget https://raw.githubusercontent.com/DoubleDotStudios/niri-dotfiles/refs/heads/main/install.sh 78 | ``` 79 | 80 | 2. Make the script executable: 81 | ```console 82 | chmod +x install.sh 83 | ``` 84 | 85 | 3. Run the installer: 86 | ```console 87 | ./install.sh 88 | ``` 89 | 90 | --- 91 | 92 | ## Manual Install 93 | 94 | 1. Clone the repo: 95 | ```console 96 | git clone https://github.com/DoubleDotStudios/niri-dotfiles 97 | cd ./niri-dotfiles 98 | ``` 99 | 100 | 2. Move all directories except `wallpapers` and `rofi/local` to `~/.config`: 101 | ```console 102 | mv ./niri ~/.config/ 103 | mv ./nvim ~/.config/ 104 | mv ./dunst ~/.config/ 105 | mv ./kitty ~/.config/ 106 | mv ./waybar ~/.config/ 107 | mv ./fastfetch ~/.config/ 108 | mv ./yazi ~/.config/ 109 | mv ./fuzzel ~/.config/ 110 | mv ./mpv ~/.config/ 111 | mv ./hypr ~/.config/ 112 | ``` 113 | 114 | 3. Move `rofi/local` to `~/.local/share/rofi` 115 | ``` 116 | mv ./rofi/local ~/.local/share/rofi 117 | ``` 118 | 119 | 3. Move `wallpapers` to `~/Pictures/Wallpapers`: 120 | ```console 121 | mv ./wallpapers ~/Pictures/Wallpapers 122 | ``` 123 | 124 | --- 125 | 126 | ### Credit 127 | 128 | Catppuccin: [mpv](https://github.com/catppuccin/mpv), [Yazi](https://github.com/catppuccin/yazi), [Hyprlock](https://github.com/catppuccin/hyprlock), [Fuzzel](https://github.com/catppuccin/fuzzel) 129 | Sansroot: [Waybar](https://github.com/sansroot/hypr-dots/tree/mauve/waybar) 130 | Lactua: [Rofi](https://github.com/lactua/dotfiles/tree/master/dots/rofi) 131 | -------------------------------------------------------------------------------- /nvim/lua/kickstart/plugins/gitsigns.lua: -------------------------------------------------------------------------------- 1 | -- Here is a more advanced example where we pass configuration 2 | -- options to `gitsigns.nvim`. This is equivalent to the following Lua: 3 | -- require('gitsigns').setup({ ... }) 4 | -- 5 | -- See `:help gitsigns` to understand what the configuration keys do 6 | return { 7 | { -- Adds git related signs to the gutter, as well as utilities for managing changes 8 | 'lewis6991/gitsigns.nvim', 9 | opts = { 10 | signs = { 11 | add = { text = '+' }, 12 | change = { text = '~' }, 13 | delete = { text = '_' }, 14 | topdelete = { text = '‾' }, 15 | changedelete = { text = '~' }, 16 | }, 17 | on_attach = function(bufnr) 18 | local gitsigns = require 'gitsigns' 19 | 20 | local function map(mode, l, r, opts) 21 | opts = opts or {} 22 | opts.buffer = bufnr 23 | vim.keymap.set(mode, l, r, opts) 24 | end 25 | 26 | -- Navigation 27 | map('n', ']c', function() 28 | if vim.wo.diff then 29 | vim.cmd.normal { ']c', bang = true } 30 | else 31 | gitsigns.nav_hunk 'next' 32 | end 33 | end, { desc = 'Jump to next git [c]hange' }) 34 | 35 | map('n', '[c', function() 36 | if vim.wo.diff then 37 | vim.cmd.normal { '[c', bang = true } 38 | else 39 | gitsigns.nav_hunk 'prev' 40 | end 41 | end, { desc = 'Jump to previous git [c]hange' }) 42 | 43 | -- Actions 44 | -- visual mode 45 | map('v', 'hs', function() 46 | gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' } 47 | end, { desc = 'git [s]tage hunk' }) 48 | map('v', 'hr', function() 49 | gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' } 50 | end, { desc = 'git [r]eset hunk' }) 51 | -- normal mode 52 | map('n', 'hs', gitsigns.stage_hunk, { desc = 'git [s]tage hunk' }) 53 | map('n', 'hr', gitsigns.reset_hunk, { desc = 'git [r]eset hunk' }) 54 | map('n', 'hS', gitsigns.stage_buffer, { desc = 'git [S]tage buffer' }) 55 | map('n', 'hu', gitsigns.undo_stage_hunk, { desc = 'git [u]ndo stage hunk' }) 56 | map('n', 'hR', gitsigns.reset_buffer, { desc = 'git [R]eset buffer' }) 57 | map('n', 'hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' }) 58 | map('n', 'hb', gitsigns.blame_line, { desc = 'git [b]lame line' }) 59 | map('n', 'hd', gitsigns.diffthis, { desc = 'git [d]iff against index' }) 60 | map('n', 'hD', function() 61 | gitsigns.diffthis '@' 62 | end, { desc = 'git [D]iff against last commit' }) 63 | -- Toggles 64 | map('n', 'tb', gitsigns.toggle_current_line_blame, { desc = '[T]oggle git show [b]lame line' }) 65 | map('n', 'tD', gitsigns.toggle_deleted, { desc = '[T]oggle git show [D]eleted' }) 66 | end, 67 | }, 68 | }, 69 | } 70 | -- vim: ts=2 sts=2 sw=2 et 71 | -------------------------------------------------------------------------------- /waybar/config: -------------------------------------------------------------------------------- 1 | { 2 | "layer": "top", // Waybar at top layer 3 | "position": "top", // Waybar position (top|bottom|left|right) 4 | // "width": 1280, // Waybar width 5 | // Choose the order of the modules 6 | "modules-left": ["custom/launcher", "niri/workspaces"], 7 | "modules-center": ["clock"], 8 | "modules-right": ["pulseaudio", "network", "backlight", "battery", "niri/language", "tray", "custom/lock"], 9 | "niri/workspaces": { 10 | "format": "{icon}", 11 | "format-icons": { 12 | "default": "" 13 | }, 14 | }, 15 | "tray": { 16 | "icon-size": 21, 17 | "spacing": 10 18 | }, 19 | "custom/launcher":{ 20 | "format": " ", 21 | "on-click": "fuzzel --config ~/.config/fuzzel/launcher.ini || pkill fuzzel", 22 | "on-click-right": "pkill fuzzel", 23 | "tooltip": false, 24 | }, 25 | "custom/music": { 26 | "format": " {}", 27 | "escape": true, 28 | "interval": 5, 29 | "tooltip": false, 30 | "exec": "playerctl metadata --format='{{ title }}'", 31 | "on-click": "playerctl play-pause", 32 | "max-length": 50 33 | }, 34 | "clock": { 35 | "timezone": "Pacific/Auckland", 36 | "tooltip-format": "{:%Y %B}\n{calendar}", 37 | "format-alt": " {:%d/%m/%Y}", 38 | "format": " {:%H:%M}" 39 | }, 40 | "backlight": { 41 | "device": "amdgpu_bl1", 42 | "format": "{icon} {percent}%", 43 | "format-alt": "{icon}", 44 | "tooltip": false, 45 | "format-icons": ["", "", "", "", "", "", "", "", ""] 46 | }, 47 | "battery": { 48 | "interval": 30, 49 | "states": { 50 | "warning": 20, 51 | "critical": 10 52 | }, 53 | "format": "{icon} {capacity}%", 54 | "format-charging": "󰂄 {capacity}%", 55 | "format-plugged": " {capacity}%", 56 | "format-alt": "{icon}", 57 | "format-icons": ["󰂎", "󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"] 58 | }, 59 | "pulseaudio": { 60 | // "scroll-step": 1, // %, can be a float 61 | "format": "{icon} {volume}%", 62 | "format-muted": " ", 63 | "format-icons": { 64 | "default": ["", "", ""] 65 | }, 66 | "on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle", 67 | "on-click-right": "pavucontrol", 68 | }, 69 | "custom/lock": { 70 | "tooltip": false, 71 | "on-click": "hyprlock &", 72 | "format": " ", 73 | }, 74 | "custom/power": { 75 | "tooltip": false, 76 | "on-click": "wlogout &", 77 | "format": "⏻ " 78 | }, 79 | "niri/language": { 80 | "format": " {short}", 81 | }, 82 | "network": { 83 | "interface": "wlan0", 84 | 85 | "format": "{ifname}", 86 | "format-disconnected": "", 87 | 88 | "format-wifi": " ", 89 | "format-alt": " {essid}", 90 | 91 | "tooltip-format": "{signalStrength}%", 92 | "tooltip-format-wifi": "{essid} {signalStrength}%", 93 | "tooltip-format-disconnected": "No Connection", 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /nvim/lua/lazy-plugins.lua: -------------------------------------------------------------------------------- 1 | -- [[ Configure and install plugins ]] 2 | -- 3 | -- To check the current status of your plugins, run 4 | -- :Lazy 5 | -- 6 | -- You can press `?` in this menu for help. Use `:q` to close the window 7 | -- 8 | -- To update plugins you can run 9 | -- :Lazy update 10 | -- 11 | -- NOTE: Here is where you install your plugins. 12 | require('lazy').setup({ 13 | -- NOTE: Plugins can be added with a link (or for a github repo: 'owner/repo' link). 14 | 'tpope/vim-sleuth', -- Detect tabstop and shiftwidth automatically 15 | 16 | -- NOTE: Plugins can also be added by using a table, 17 | -- with the first argument being the link and the following 18 | -- keys can be used to configure plugin behavior/loading/etc. 19 | -- 20 | -- Use `opts = {}` to force a plugin to be loaded. 21 | -- 22 | 23 | -- modular approach: using `require 'path/name'` will 24 | -- include a plugin definition from file lua/path/name.lua 25 | 26 | -- require 'kickstart/plugins/gitsigns', 27 | 28 | require 'kickstart/plugins/which-key', 29 | 30 | require 'kickstart/plugins/telescope', 31 | 32 | require 'kickstart/plugins/lspconfig', 33 | 34 | require 'kickstart/plugins/conform', 35 | 36 | require 'kickstart/plugins/cmp', 37 | 38 | require 'kickstart/plugins/todo-comments', 39 | 40 | require 'kickstart/plugins/mini', 41 | 42 | require 'kickstart/plugins/treesitter', 43 | 44 | require 'kickstart/plugins/neo-tree', 45 | 46 | require 'kickstart/plugins/autopairs', 47 | 48 | -- The following comments only work if you have downloaded the kickstart repo, not just copy pasted the 49 | -- init.lua. If you want these files, they are in the repository, so you can just download them and 50 | -- place them in the correct locations. 51 | 52 | -- NOTE: Next step on your Neovim journey: Add/Configure additional plugins for Kickstart 53 | -- 54 | -- Here are some example plugins that I've included in the Kickstart repository. 55 | -- Uncomment any of the lines below to enable them (you will need to restart nvim). 56 | -- 57 | -- require 'kickstart.plugins.debug', 58 | -- require 'kickstart.plugins.indent_line', 59 | -- require 'kickstart.plugins.lint', 60 | 61 | -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua` 62 | -- This is the easiest way to modularize your config. 63 | { import = 'custom.plugins' }, 64 | -- 65 | -- For additional information with loading, sourcing and examples see `:help lazy.nvim-🔌-plugin-spec` 66 | -- Or use telescope! 67 | -- In normal mode type `sh` then write `lazy.nvim-plugin` 68 | -- you can continue same window with `sr` which resumes last telescope search 69 | }, { 70 | ui = { 71 | -- If you are using a Nerd Font: set icons to an empty table which will use the 72 | -- default lazy.nvim defined Nerd Font icons, otherwise define a unicode icons table 73 | icons = vim.g.have_nerd_font and {} or { 74 | cmd = '⌘', 75 | config = '🛠', 76 | event = '📅', 77 | ft = '📂', 78 | init = '⚙', 79 | keys = '🗝', 80 | plugin = '🔌', 81 | runtime = '💻', 82 | require = '🌙', 83 | source = '📄', 84 | start = '🚀', 85 | task = '📌', 86 | lazy = '💤 ', 87 | }, 88 | }, 89 | }) 90 | 91 | -- vim: ts=2 sts=2 sw=2 et 92 | -------------------------------------------------------------------------------- /yazi/flavors/catppuccin-mocha.yazi/flavor.toml: -------------------------------------------------------------------------------- 1 | # vim:fileencoding=utf-8:foldmethod=marker 2 | 3 | # : Manager {{{ 4 | 5 | [manager] 6 | cwd = { fg = "#94e2d5" } 7 | 8 | # Hovered 9 | hovered = { reversed = true } 10 | preview_hovered = { underline = true } 11 | 12 | # Find 13 | find_keyword = { fg = "#f9e2af", bold = true, italic = true, underline = true } 14 | find_position = { fg = "#f5c2e7", bg = "reset", bold = true, italic = true } 15 | 16 | # Marker 17 | marker_copied = { fg = "#a6e3a1", bg = "#a6e3a1" } 18 | marker_cut = { fg = "#f38ba8", bg = "#f38ba8" } 19 | marker_marked = { fg = "#94e2d5", bg = "#94e2d5" } 20 | marker_selected = { fg = "#f9e2af", bg = "#f9e2af" } 21 | 22 | # Tab 23 | tab_active = { reversed = true } 24 | tab_inactive = {} 25 | tab_width = 1 26 | 27 | # Count 28 | count_copied = { fg = "#1e1e2e", bg = "#a6e3a1" } 29 | count_cut = { fg = "#1e1e2e", bg = "#f38ba8" } 30 | count_selected = { fg = "#1e1e2e", bg = "#f9e2af" } 31 | 32 | # Border 33 | border_symbol = "│" 34 | border_style = { fg = "#7f849c" } 35 | 36 | # : }}} 37 | 38 | 39 | # : Status {{{ 40 | 41 | [status] 42 | separator_open = "" 43 | separator_close = "" 44 | separator_style = { fg = "#45475a", bg = "#45475a" } 45 | 46 | # Mode 47 | mode_normal = { fg = "#1e1e2e", bg = "#89b4fa", bold = true } 48 | mode_select = { fg = "#1e1e2e", bg = "#a6e3a1", bold = true } 49 | mode_unset = { fg = "#1e1e2e", bg = "#f2cdcd", bold = true } 50 | 51 | # Progress 52 | progress_label = { fg = "#ffffff", bold = true } 53 | progress_normal = { fg = "#89b4fa", bg = "#45475a" } 54 | progress_error = { fg = "#f38ba8", bg = "#45475a" } 55 | 56 | # Permissions 57 | permissions_t = { fg = "#89b4fa" } 58 | permissions_r = { fg = "#f9e2af" } 59 | permissions_w = { fg = "#f38ba8" } 60 | permissions_x = { fg = "#a6e3a1" } 61 | permissions_s = { fg = "#7f849c" } 62 | 63 | # : }}} 64 | 65 | 66 | # : Select {{{ 67 | 68 | [select] 69 | border = { fg = "#89b4fa" } 70 | active = { fg = "#f5c2e7", bold = true } 71 | inactive = {} 72 | 73 | # : }}} 74 | 75 | 76 | # : Input {{{ 77 | 78 | [input] 79 | border = { fg = "#89b4fa" } 80 | title = {} 81 | value = {} 82 | selected = { reversed = true } 83 | 84 | # : }}} 85 | 86 | 87 | # : Completion {{{ 88 | 89 | [completion] 90 | border = { fg = "#89b4fa" } 91 | 92 | # : }}} 93 | 94 | 95 | # : Tasks {{{ 96 | 97 | [tasks] 98 | border = { fg = "#89b4fa" } 99 | title = {} 100 | hovered = { fg = "#f5c2e7", underline = true } 101 | 102 | # : }}} 103 | 104 | 105 | # : Which {{{ 106 | 107 | [which] 108 | mask = { bg = "#313244" } 109 | cand = { fg = "#94e2d5" } 110 | rest = { fg = "#9399b2" } 111 | desc = { fg = "#f5c2e7" } 112 | separator = "  " 113 | separator_style = { fg = "#585b70" } 114 | 115 | # : }}} 116 | 117 | 118 | # : Help {{{ 119 | 120 | [help] 121 | on = { fg = "#94e2d5" } 122 | run = { fg = "#f5c2e7" } 123 | hovered = { reversed = true, bold = true } 124 | footer = { fg = "#45475a", bg = "#cdd6f4" } 125 | 126 | # : }}} 127 | 128 | 129 | # : Notify {{{ 130 | 131 | [notify] 132 | title_info = { fg = "#a6e3a1" } 133 | title_warn = { fg = "#f9e2af" } 134 | title_error = { fg = "#f38ba8" } 135 | 136 | # : }}} 137 | 138 | 139 | # : File-specific styles {{{ 140 | 141 | [filetype] 142 | 143 | rules = [ 144 | # Images 145 | { mime = "image/*", fg = "#94e2d5" }, 146 | 147 | # Media 148 | { mime = "{audio,video}/*", fg = "#f9e2af" }, 149 | 150 | # Archives 151 | { mime = "application/*zip", fg = "#f5c2e7" }, 152 | { mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", fg = "#f5c2e7" }, 153 | 154 | # Documents 155 | { mime = "application/{pdf,doc,rtf,vnd.*}", fg = "#a6e3a1" }, 156 | 157 | # Fallback 158 | { name = "*", fg = "#cdd6f4" }, 159 | { name = "*/", fg = "#89b4fa" } 160 | ] 161 | 162 | # : }}} 163 | -------------------------------------------------------------------------------- /yazi/flavors/catppuccin-macchiato.yazi/flavor.toml: -------------------------------------------------------------------------------- 1 | # vim:fileencoding=utf-8:foldmethod=marker 2 | 3 | # : Manager {{{ 4 | 5 | [manager] 6 | cwd = { fg = "#8bd5ca" } 7 | 8 | # Hovered 9 | hovered = { reversed = true } 10 | preview_hovered = { underline = true } 11 | 12 | # Find 13 | find_keyword = { fg = "#eed49f", bold = true, italic = true, underline = true } 14 | find_position = { fg = "#f5bde6", bg = "reset", bold = true, italic = true } 15 | 16 | # Marker 17 | marker_copied = { fg = "#a6da95", bg = "#a6da95" } 18 | marker_cut = { fg = "#ed8796", bg = "#ed8796" } 19 | marker_marked = { fg = "#8bd5ca", bg = "#8bd5ca" } 20 | marker_selected = { fg = "#eed49f", bg = "#eed49f" } 21 | 22 | # Tab 23 | tab_active = { reversed = true } 24 | tab_inactive = {} 25 | tab_width = 1 26 | 27 | # Count 28 | count_copied = { fg = "#24273a", bg = "#a6da95" } 29 | count_cut = { fg = "#24273a", bg = "#ed8796" } 30 | count_selected = { fg = "#24273a", bg = "#eed49f" } 31 | 32 | # Border 33 | border_symbol = "│" 34 | border_style = { fg = "#8087a2" } 35 | 36 | # : }}} 37 | 38 | 39 | # : Status {{{ 40 | 41 | [status] 42 | separator_open = "" 43 | separator_close = "" 44 | separator_style = { fg = "#494d64", bg = "#494d64" } 45 | 46 | # Mode 47 | mode_normal = { fg = "#24273a", bg = "#8aadf4", bold = true } 48 | mode_select = { fg = "#24273a", bg = "#a6da95", bold = true } 49 | mode_unset = { fg = "#24273a", bg = "#f0c6c6", bold = true } 50 | 51 | # Progress 52 | progress_label = { fg = "#ffffff", bold = true } 53 | progress_normal = { fg = "#8aadf4", bg = "#494d64" } 54 | progress_error = { fg = "#ed8796", bg = "#494d64" } 55 | 56 | # Permissions 57 | permissions_t = { fg = "#8aadf4" } 58 | permissions_r = { fg = "#eed49f" } 59 | permissions_w = { fg = "#ed8796" } 60 | permissions_x = { fg = "#a6da95" } 61 | permissions_s = { fg = "#8087a2" } 62 | 63 | # : }}} 64 | 65 | 66 | # : Select {{{ 67 | 68 | [select] 69 | border = { fg = "#8aadf4" } 70 | active = { fg = "#f5bde6", bold = true } 71 | inactive = {} 72 | 73 | # : }}} 74 | 75 | 76 | # : Input {{{ 77 | 78 | [input] 79 | border = { fg = "#8aadf4" } 80 | title = {} 81 | value = {} 82 | selected = { reversed = true } 83 | 84 | # : }}} 85 | 86 | 87 | # : Completion {{{ 88 | 89 | [completion] 90 | border = { fg = "#8aadf4" } 91 | 92 | # : }}} 93 | 94 | 95 | # : Tasks {{{ 96 | 97 | [tasks] 98 | border = { fg = "#8aadf4" } 99 | title = {} 100 | hovered = { fg = "#f5bde6", underline = true } 101 | 102 | # : }}} 103 | 104 | 105 | # : Which {{{ 106 | 107 | [which] 108 | mask = { bg = "#363a4f" } 109 | cand = { fg = "#8bd5ca" } 110 | rest = { fg = "#939ab7" } 111 | desc = { fg = "#f5bde6" } 112 | separator = "  " 113 | separator_style = { fg = "#5b6078" } 114 | 115 | # : }}} 116 | 117 | 118 | # : Help {{{ 119 | 120 | [help] 121 | on = { fg = "#8bd5ca" } 122 | run = { fg = "#f5bde6" } 123 | hovered = { reversed = true, bold = true } 124 | footer = { fg = "#494d64", bg = "#cad3f5" } 125 | 126 | # : }}} 127 | 128 | 129 | # : Notify {{{ 130 | 131 | [notify] 132 | title_info = { fg = "#a6da95" } 133 | title_warn = { fg = "#eed49f" } 134 | title_error = { fg = "#ed8796" } 135 | 136 | # : }}} 137 | 138 | 139 | # : File-specific styles {{{ 140 | 141 | [filetype] 142 | 143 | rules = [ 144 | # Images 145 | { mime = "image/*", fg = "#8bd5ca" }, 146 | 147 | # Media 148 | { mime = "{audio,video}/*", fg = "#eed49f" }, 149 | 150 | # Archives 151 | { mime = "application/*zip", fg = "#f5bde6" }, 152 | { mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", fg = "#f5bde6" }, 153 | 154 | # Documents 155 | { mime = "application/{pdf,doc,rtf,vnd.*}", fg = "#a6da95" }, 156 | 157 | # Fallback 158 | { name = "*", fg = "#cad3f5" }, 159 | { name = "*/", fg = "#8aadf4" } 160 | ] 161 | 162 | # : }}} 163 | -------------------------------------------------------------------------------- /nvim/lua/keymaps.lua: -------------------------------------------------------------------------------- 1 | -- [[ Basic Keymaps ]] 2 | -- See `:help vim.keymap.set()` 3 | 4 | local function empty_split(split) 5 | vim.cmd(split) 6 | vim.cmd 'enew' 7 | end 8 | 9 | local function move_left_wrap() 10 | local col = vim.fn.col '.' 11 | local tcol = 1 12 | 13 | if vim.fn.mode() == 'i' then 14 | tcol = 0 15 | col = col - 1 16 | end 17 | 18 | if col <= tcol then 19 | vim.cmd 'normal! k$' 20 | if vim.fn.mode() == 'i' then 21 | vim.cmd 'normal! l' 22 | end 23 | else 24 | vim.cmd 'normal! h' 25 | end 26 | end 27 | 28 | local function move_right_wrap() 29 | local col = vim.fn.col '.' 30 | local line_length = vim.fn.col '$' - 1 31 | 32 | if vim.fn.mode() == 'i' then 33 | line_length = line_length + 1 34 | end 35 | 36 | if col >= line_length then 37 | vim.cmd 'normal! j0' 38 | else 39 | vim.cmd 'normal! l' 40 | end 41 | end 42 | 43 | -- Clear highlights on search when pressing in normal mode 44 | -- See `:help hlsearch` 45 | vim.keymap.set('n', '', 'nohlsearch') 46 | 47 | -- Diagnostic keymaps 48 | vim.keymap.set('n', 'dq', vim.diagnostic.setloclist, { desc = 'Open Diagnostic Quickfix List' }) 49 | 50 | -- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier 51 | -- for people to discover. Otherwise, you normally need to press , which 52 | -- is not what someone will guess without a bit more experience. 53 | -- 54 | -- NOTE: This won't work in all terminal emulators/tmux/etc. Try your own mapping 55 | -- or just use to exit terminal mode 56 | vim.keymap.set('t', '', '', { desc = 'Exit terminal mode' }) 57 | 58 | -- TIP: Disable arrow keys in normal mode 59 | -- vim.keymap.set('n', '', 'echo "Use h to move!!"') 60 | -- vim.keymap.set('n', '', 'echo "Use l to move!!"') 61 | -- vim.keymap.set('n', '', 'echo "Use k to move!!"') 62 | -- vim.keymap.set('n', '', 'echo "Use j to move!!"') 63 | 64 | -- Keybinds to make split navigation easier. 65 | -- Use CTRL+ to switch between windows 66 | -- 67 | -- See `:help wincmd` for a list of all window commands 68 | vim.keymap.set('n', '', '', { desc = 'Move focus to the left window' }) 69 | vim.keymap.set('n', '', '', { desc = 'Move focus to the right window' }) 70 | vim.keymap.set('n', '', '', { desc = 'Move focus to the lower window' }) 71 | vim.keymap.set('n', '', '', { desc = 'Move focus to the upper window' }) 72 | 73 | vim.keymap.set('n', '', '', { desc = 'Move focus to the left window' }) 74 | vim.keymap.set('n', '', '', { desc = 'Move focus to the right window' }) 75 | vim.keymap.set('n', '', '', { desc = 'Move focus to the lower window' }) 76 | vim.keymap.set('n', '', '', { desc = 'Move focus to the upper window' }) 77 | 78 | vim.keymap.set('n', '', '+', { desc = 'Increase pane height' }) 79 | vim.keymap.set('n', '', '-', { desc = 'Decrease pane height' }) 80 | vim.keymap.set('n', '', '<', { desc = 'Decrease pane width' }) 81 | vim.keymap.set('n', '', '>', { desc = 'Increase pane width' }) 82 | 83 | vim.keymap.set({ 'i', 'n' }, '', '', { desc = 'End of the line' }) 84 | vim.keymap.set({ 'i', 'n' }, '', '', { desc = 'Start of the line' }) 85 | 86 | vim.keymap.set('n', 'ws', '', { desc = '+Split' }) 87 | vim.keymap.set('n', 'wsv', function() 88 | empty_split 'vsp' 89 | end, { desc = 'Open empty vspilt' }) 90 | vim.keymap.set('n', 'wsh', function() 91 | empty_split 'sp' 92 | end, { desc = 'Open empty hspilt' }) 93 | 94 | vim.keymap.set({ 'n', 'i', 'v' }, '', move_left_wrap, { desc = 'Auto-wrapping cursor' }) 95 | vim.keymap.set({ 'n', 'i', 'v' }, '', move_right_wrap, { desc = 'Auto-wrapping cursor' }) 96 | 97 | -- [[ Basic Autocommands ]] 98 | -- See `:help lua-guide-autocommands` 99 | 100 | -- Highlight when yanking (copying) text 101 | -- Try it with `yap` in normal mode 102 | -- See `:help vim.highlight.on_yank()` 103 | vim.api.nvim_create_autocmd('TextYankPost', { 104 | desc = 'Highlight when yanking (copying) text', 105 | group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }), 106 | callback = function() 107 | vim.highlight.on_yank() 108 | end, 109 | }) 110 | 111 | vim.api.nvim_create_user_command('Q', function() 112 | local buf_content = vim.api.nvim_buf_get_lines(0, 0, -1, false) 113 | if #buf_content == 0 or (#buf_content == 1 and buf_content[1] == '') then 114 | vim.cmd 'bd' 115 | else 116 | vim.cmd 'q' 117 | end 118 | end, { desc = 'Close the buffer if empty, otherwise quit' }) 119 | 120 | vim.cmd 'cabbrev q Q' 121 | 122 | -- vim: ts=2 sts=2 sw=2 et 123 | -------------------------------------------------------------------------------- /nvim/lua/kickstart/plugins/cmp.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { -- Autocompletion 3 | 'hrsh7th/nvim-cmp', 4 | event = 'InsertEnter', 5 | dependencies = { 6 | -- Snippet Engine & its associated nvim-cmp source 7 | { 8 | 'L3MON4D3/LuaSnip', 9 | build = (function() 10 | -- Build Step is needed for regex support in snippets. 11 | -- This step is not supported in many windows environments. 12 | -- Remove the below condition to re-enable on windows. 13 | if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then 14 | return 15 | end 16 | return 'make install_jsregexp' 17 | end)(), 18 | dependencies = { 19 | -- `friendly-snippets` contains a variety of premade snippets. 20 | -- See the README about individual language/framework/plugin snippets: 21 | -- https://github.com/rafamadriz/friendly-snippets 22 | -- { 23 | -- 'rafamadriz/friendly-snippets', 24 | -- config = function() 25 | -- require('luasnip.loaders.from_vscode').lazy_load() 26 | -- end, 27 | -- }, 28 | }, 29 | }, 30 | 'saadparwaiz1/cmp_luasnip', 31 | 32 | -- Adds other completion capabilities. 33 | -- nvim-cmp does not ship with all sources by default. They are split 34 | -- into multiple repos for maintenance purposes. 35 | 'hrsh7th/cmp-nvim-lsp', 36 | 'hrsh7th/cmp-path', 37 | }, 38 | config = function() 39 | -- See `:help cmp` 40 | local cmp = require 'cmp' 41 | local luasnip = require 'luasnip' 42 | luasnip.config.setup {} 43 | 44 | cmp.setup { 45 | snippet = { 46 | expand = function(args) 47 | luasnip.lsp_expand(args.body) 48 | end, 49 | }, 50 | completion = { completeopt = 'menu,menuone,noinsert' }, 51 | 52 | -- For an understanding of why these mappings were 53 | -- chosen, you will need to read `:help ins-completion` 54 | -- 55 | -- No, but seriously. Please read `:help ins-completion`, it is really good! 56 | mapping = cmp.mapping.preset.insert { 57 | -- Select the [n]ext item 58 | [''] = cmp.mapping.select_next_item(), 59 | -- Select the [p]revious item 60 | [''] = cmp.mapping.select_prev_item(), 61 | 62 | -- Scroll the documentation window [b]ack / [f]orward 63 | [''] = cmp.mapping.scroll_docs(-4), 64 | [''] = cmp.mapping.scroll_docs(4), 65 | 66 | -- Accept ([y]es) the completion. 67 | -- This will auto-import if your LSP supports it. 68 | -- This will expand snippets if the LSP sent a snippet. 69 | [''] = cmp.mapping.confirm { select = true }, 70 | 71 | -- If you prefer more traditional completion keymaps, 72 | -- you can uncomment the following lines 73 | [''] = cmp.mapping.confirm { select = true }, 74 | --[''] = cmp.mapping.select_next_item(), 75 | --[''] = cmp.mapping.select_prev_item(), 76 | 77 | -- Manually trigger a completion from nvim-cmp. 78 | -- Generally you don't need this, because nvim-cmp will display 79 | -- completions whenever it has completion options available. 80 | [''] = cmp.mapping.complete {}, 81 | 82 | -- Think of as moving to the right of your snippet expansion. 83 | -- So if you have a snippet that's like: 84 | -- function $name($args) 85 | -- $body 86 | -- end 87 | -- 88 | -- will move you to the right of each of the expansion locations. 89 | -- is similar, except moving you backwards. 90 | [''] = cmp.mapping(function() 91 | if luasnip.expand_or_locally_jumpable() then 92 | luasnip.expand_or_jump() 93 | end 94 | end, { 'i', 's' }), 95 | [''] = cmp.mapping(function() 96 | if luasnip.locally_jumpable(-1) then 97 | luasnip.jump(-1) 98 | end 99 | end, { 'i', 's' }), 100 | 101 | -- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see: 102 | -- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps 103 | }, 104 | sources = { 105 | { 106 | name = 'lazydev', 107 | -- set group index to 0 to skip loading LuaLS completions as lazydev recommends it 108 | group_index = 0, 109 | }, 110 | { name = 'nvim_lsp' }, 111 | { name = 'luasnip' }, 112 | { name = 'path' }, 113 | }, 114 | } 115 | end, 116 | }, 117 | } 118 | -- vim: ts=2 sts=2 sw=2 et 119 | -------------------------------------------------------------------------------- /nvim/lua/kickstart/plugins/debug.lua: -------------------------------------------------------------------------------- 1 | -- debug.lua 2 | -- 3 | -- Shows how to use the DAP plugin to debug your code. 4 | -- 5 | -- Primarily focused on configuring the debugger for Go, but can 6 | -- be extended to other languages as well. That's why it's called 7 | -- kickstart.nvim and not kitchen-sink.nvim ;) 8 | 9 | return { 10 | -- NOTE: Yes, you can install new plugins here! 11 | 'mfussenegger/nvim-dap', 12 | -- NOTE: And you can specify dependencies as well 13 | dependencies = { 14 | -- Creates a beautiful debugger UI 15 | 'rcarriga/nvim-dap-ui', 16 | 17 | -- Required dependency for nvim-dap-ui 18 | 'nvim-neotest/nvim-nio', 19 | 20 | -- Installs the debug adapters for you 21 | 'williamboman/mason.nvim', 22 | 'jay-babu/mason-nvim-dap.nvim', 23 | 24 | -- Add your own debuggers here 25 | 'leoluz/nvim-dap-go', 26 | }, 27 | keys = { 28 | -- Basic debugging keymaps, feel free to change to your liking! 29 | { 30 | '', 31 | function() 32 | require('dap').continue() 33 | end, 34 | desc = 'Debug: Start/Continue', 35 | }, 36 | { 37 | '', 38 | function() 39 | require('dap').step_into() 40 | end, 41 | desc = 'Debug: Step Into', 42 | }, 43 | { 44 | '', 45 | function() 46 | require('dap').step_over() 47 | end, 48 | desc = 'Debug: Step Over', 49 | }, 50 | { 51 | '', 52 | function() 53 | require('dap').step_out() 54 | end, 55 | desc = 'Debug: Step Out', 56 | }, 57 | { 58 | 'b', 59 | function() 60 | require('dap').toggle_breakpoint() 61 | end, 62 | desc = 'Debug: Toggle Breakpoint', 63 | }, 64 | { 65 | 'B', 66 | function() 67 | require('dap').set_breakpoint(vim.fn.input 'Breakpoint condition: ') 68 | end, 69 | desc = 'Debug: Set Breakpoint', 70 | }, 71 | -- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception. 72 | { 73 | '', 74 | function() 75 | require('dapui').toggle() 76 | end, 77 | desc = 'Debug: See last session result.', 78 | }, 79 | }, 80 | config = function() 81 | local dap = require 'dap' 82 | local dapui = require 'dapui' 83 | 84 | require('mason-nvim-dap').setup { 85 | -- Makes a best effort to setup the various debuggers with 86 | -- reasonable debug configurations 87 | automatic_installation = true, 88 | 89 | -- You can provide additional configuration to the handlers, 90 | -- see mason-nvim-dap README for more information 91 | handlers = {}, 92 | 93 | -- You'll need to check that you have the required things installed 94 | -- online, please don't ask me how to install them :) 95 | ensure_installed = { 96 | -- Update this to ensure that you have the debuggers for the langs you want 97 | 'delve', 98 | }, 99 | } 100 | 101 | -- Dap UI setup 102 | -- For more information, see |:help nvim-dap-ui| 103 | dapui.setup { 104 | -- Set icons to characters that are more likely to work in every terminal. 105 | -- Feel free to remove or use ones that you like more! :) 106 | -- Don't feel like these are good choices. 107 | icons = { expanded = '▾', collapsed = '▸', current_frame = '*' }, 108 | controls = { 109 | icons = { 110 | pause = '⏸', 111 | play = '▶', 112 | step_into = '⏎', 113 | step_over = '⏭', 114 | step_out = '⏮', 115 | step_back = 'b', 116 | run_last = '▶▶', 117 | terminate = '⏹', 118 | disconnect = '⏏', 119 | }, 120 | }, 121 | } 122 | 123 | -- Change breakpoint icons 124 | -- vim.api.nvim_set_hl(0, 'DapBreak', { fg = '#e51400' }) 125 | -- vim.api.nvim_set_hl(0, 'DapStop', { fg = '#ffcc00' }) 126 | -- local breakpoint_icons = vim.g.have_nerd_font 127 | -- and { Breakpoint = '', BreakpointCondition = '', BreakpointRejected = '', LogPoint = '', Stopped = '' } 128 | -- or { Breakpoint = '●', BreakpointCondition = '⊜', BreakpointRejected = '⊘', LogPoint = '◆', Stopped = '⭔' } 129 | -- for type, icon in pairs(breakpoint_icons) do 130 | -- local tp = 'Dap' .. type 131 | -- local hl = (type == 'Stopped') and 'DapStop' or 'DapBreak' 132 | -- vim.fn.sign_define(tp, { text = icon, texthl = hl, numhl = hl }) 133 | -- end 134 | 135 | dap.listeners.after.event_initialized['dapui_config'] = dapui.open 136 | dap.listeners.before.event_terminated['dapui_config'] = dapui.close 137 | dap.listeners.before.event_exited['dapui_config'] = dapui.close 138 | 139 | -- Install golang specific config 140 | require('dap-go').setup { 141 | delve = { 142 | -- On Windows delve must be run attached or it crashes. 143 | -- See https://github.com/leoluz/nvim-dap-go/blob/main/README.md#configuring 144 | detached = vim.fn.has 'win32' == 0, 145 | }, 146 | } 147 | end, 148 | } 149 | -------------------------------------------------------------------------------- /nvim/lua/kickstart/plugins/telescope.lua: -------------------------------------------------------------------------------- 1 | -- NOTE: Plugins can specify dependencies. 2 | -- 3 | -- The dependencies are proper plugin specifications as well - anything 4 | -- you do for a plugin at the top level, you can do for a dependency. 5 | -- 6 | -- Use the `dependencies` key to specify the dependencies of a particular plugin 7 | 8 | return { 9 | { -- Fuzzy Finder (files, lsp, etc) 10 | 'nvim-telescope/telescope.nvim', 11 | event = 'VimEnter', 12 | branch = '0.1.x', 13 | dependencies = { 14 | 'nvim-lua/plenary.nvim', 15 | { -- If encountering errors, see telescope-fzf-native README for installation instructions 16 | 'nvim-telescope/telescope-fzf-native.nvim', 17 | 18 | -- `build` is used to run some command when the plugin is installed/updated. 19 | -- This is only run then, not every time Neovim starts up. 20 | build = 'make', 21 | 22 | -- `cond` is a condition used to determine whether this plugin should be 23 | -- installed and loaded. 24 | cond = function() 25 | return vim.fn.executable 'make' == 1 26 | end, 27 | }, 28 | { 'nvim-telescope/telescope-ui-select.nvim' }, 29 | 30 | -- Useful for getting pretty icons, but requires a Nerd Font. 31 | { 'nvim-tree/nvim-web-devicons', enabled = vim.g.have_nerd_font }, 32 | }, 33 | config = function() 34 | -- Telescope is a fuzzy finder that comes with a lot of different things that 35 | -- it can fuzzy find! It's more than just a "file finder", it can search 36 | -- many different aspects of Neovim, your workspace, LSP, and more! 37 | -- 38 | -- The easiest way to use Telescope, is to start by doing something like: 39 | -- :Telescope help_tags 40 | -- 41 | -- After running this command, a window will open up and you're able to 42 | -- type in the prompt window. You'll see a list of `help_tags` options and 43 | -- a corresponding preview of the help. 44 | -- 45 | -- Two important keymaps to use while in Telescope are: 46 | -- - Insert mode: 47 | -- - Normal mode: ? 48 | -- 49 | -- This opens a window that shows you all of the keymaps for the current 50 | -- Telescope picker. This is really useful to discover what Telescope can 51 | -- do as well as how to actually do it! 52 | 53 | -- [[ Configure Telescope ]] 54 | -- See `:help telescope` and `:help telescope.setup()` 55 | require('telescope').setup { 56 | -- You can put your default mappings / updates / etc. in here 57 | -- All the info you're looking for is in `:help telescope.setup()` 58 | -- 59 | -- defaults = { 60 | -- mappings = { 61 | -- i = { [''] = 'to_fuzzy_refine' }, 62 | -- }, 63 | -- }, 64 | -- pickers = {} 65 | extensions = { 66 | ['ui-select'] = { 67 | require('telescope.themes').get_dropdown(), 68 | }, 69 | }, 70 | } 71 | 72 | -- Enable Telescope extensions if they are installed 73 | pcall(require('telescope').load_extension, 'fzf') 74 | pcall(require('telescope').load_extension, 'ui-select') 75 | 76 | -- See `:help telescope.builtin` 77 | local builtin = require 'telescope.builtin' 78 | vim.keymap.set('n', 'fk', builtin.keymaps, { desc = 'Find Keymaps' }) 79 | vim.keymap.set('n', 'ff', builtin.find_files, { desc = 'Find File' }) 80 | vim.keymap.set('n', 'fs', builtin.builtin, { desc = 'Find Telescopes' }) 81 | vim.keymap.set('n', 'fw', builtin.grep_string, { desc = 'Find Current Word' }) 82 | vim.keymap.set('n', 'fg', builtin.live_grep, { desc = 'Find By Grep' }) 83 | vim.keymap.set('n', 'fo', builtin.oldfiles, { desc = 'Find Recent Files' }) 84 | vim.keymap.set('n', 'fh', builtin.help_tags, { desc = 'Find Help' }) 85 | 86 | vim.keymap.set('n', '', builtin.buffers, { desc = 'Find Existing Buffers' }) 87 | 88 | vim.keymap.set('n', 'ds', builtin.diagnostics, { desc = 'Search Diagnostics' }) 89 | 90 | -- Slightly advanced example of overriding default behavior and theme 91 | -- vim.keymap.set('n', '/', function() 92 | -- You can pass additional configuration to Telescope to change the theme, layout, etc. 93 | -- builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { 94 | -- winblend = 10, 95 | -- previewer = false, 96 | -- }) 97 | -- end, { desc = '[/] Fuzzily search in current buffer' }) 98 | 99 | -- It's also possible to pass additional configuration options. 100 | -- See `:help telescope.builtin.live_grep()` for information about particular keys 101 | -- vim.keymap.set('n', 's/', function() 102 | -- builtin.live_grep { 103 | -- grep_open_files = true, 104 | -- prompt_title = 'Live Grep in Open Files', 105 | -- } 106 | -- end, { desc = '[S]earch [/] in Open Files' }) 107 | -- 108 | -- -- Shortcut for searching your Neovim configuration files 109 | -- vim.keymap.set('n', 'sn', function() 110 | -- builtin.find_files { cwd = vim.fn.stdpath 'config' } 111 | -- end, { desc = '[S]earch [N]eovim files' }) 112 | end, 113 | }, 114 | } 115 | -- vim: ts=2 sts=2 sw=2 et 116 | -------------------------------------------------------------------------------- /nvim/lua/custom/plugins/init.lua: -------------------------------------------------------------------------------- 1 | -- You can add your own plugins here or in other files in this directory! 2 | -- I promise not to create any merge conflicts in this directory :) 3 | -- 4 | -- See the kickstart.nvim README for more information 5 | return { 6 | { 7 | 'catppuccin/nvim', 8 | name = 'catppuccin', 9 | opts = { transparent_background = true }, 10 | priority = 1000, 11 | init = function() 12 | vim.cmd.colorscheme 'catppuccin-mocha' 13 | end, 14 | }, 15 | { 16 | 'nvim-lualine/lualine.nvim', 17 | event = 'VeryLazy', 18 | dependencies = { 'nvim-tree/nvim-web-devicons' }, 19 | init = function() 20 | vim.g.lualine_laststatus = vim.o.laststatus 21 | if vim.fn.argc(-1) > 0 then 22 | vim.o.statusline = ' ' 23 | else 24 | vim.o.laststatus = 0 25 | end 26 | end, 27 | }, 28 | { 29 | 'numToStr/Comment.nvim', 30 | event = { 'BufReadPre', 'BufNewFile' }, 31 | }, 32 | { 33 | 'folke/snacks.nvim', 34 | opts = { 35 | dashboard = { 36 | preset = { 37 | header = [[ 38 | ███████╗ ██████╗ ██╗ █████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗ 39 | ██╔════╝██╔═══██╗██║ ██╔══██╗██╔══██╗██║ ██║██║████╗ ████║ 40 | ███████╗██║ ██║██║ ███████║██████╔╝██║ ██║██║██╔████╔██║ 41 | ╚════██║██║ ██║██║ ██╔══██║██╔══██╗╚██╗ ██╔╝██║██║╚██╔╝██║ 42 | ███████║╚██████╔╝███████╗██║ ██║██║ ██║ ╚████╔╝ ██║██║ ╚═╝ ██║ 43 | ╚══════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═══╝ ╚═╝╚═╝ ╚═╝ 44 | ]], 45 | keys = { 46 | { icon = ' ', key = 'f', desc = 'Find File', action = ":lua Snacks.dashboard.pick('files')" }, 47 | { icon = ' ', key = 'g', desc = 'Find Text', action = ":lua Snacks.dashboard.pick('live_grep')" }, 48 | { icon = ' ', key = 'o', desc = 'Recent Files', action = ":lua Snacks.dashboard.pick('oldfiles')" }, 49 | { icon = ' ', key = 'c', desc = 'Config', action = ":lua Snacks.dashboard.pick('files', {cwd = vim.fn.stdpath('config')})" }, 50 | { icon = ' ', key = 'q', desc = 'Quit', action = ':qa' }, 51 | }, 52 | }, 53 | }, 54 | }, 55 | }, 56 | { 57 | 'folke/noice.nvim', 58 | event = 'VeryLazy', 59 | opts = { 60 | lsp = { 61 | override = { 62 | ['vim.lsp.util.convert_input_to_markdown_lines'] = true, 63 | ['vim.lsp.util.stylize_markdown'] = true, 64 | ['cmp.entry.get_documentation'] = true, 65 | }, 66 | }, 67 | routes = { 68 | { 69 | filter = { 70 | event = 'msg_show', 71 | any = { 72 | { find = '%d+L, %d+B' }, 73 | { find = '; after #%d+' }, 74 | { find = '; before #%d+' }, 75 | }, 76 | }, 77 | view = 'mini', 78 | }, 79 | }, 80 | presets = { 81 | bottom_search = true, 82 | command_palette = true, 83 | long_message_to_split = true, 84 | }, 85 | }, 86 | keys = { 87 | { 'nn', '', desc = '+noice' }, 88 | { 89 | '', 90 | function() 91 | require('noice').redirect(vim.fn.getcmdline()) 92 | end, 93 | mode = 'c', 94 | desc = 'Redirect Cmdline', 95 | }, 96 | { 97 | 'nnl', 98 | function() 99 | require('noice').cmd 'last' 100 | end, 101 | desc = 'Noice Last Message', 102 | }, 103 | { 104 | 'nnh', 105 | function() 106 | require('noice').cmd 'history' 107 | end, 108 | desc = 'Noice History', 109 | }, 110 | { 111 | 'nna', 112 | function() 113 | require('noice').cmd 'all' 114 | end, 115 | desc = 'Noice All', 116 | }, 117 | { 118 | 'nnd', 119 | function() 120 | require('noice').cmd 'dismiss' 121 | end, 122 | desc = 'Dismiss All', 123 | }, 124 | { 125 | 'nnt', 126 | function() 127 | require('noice').cmd 'pick' 128 | end, 129 | desc = 'Noice Picker (Telescope/FzfLua)', 130 | }, 131 | { 132 | '', 133 | function() 134 | if not require('noice.lsp').scroll(4) then 135 | return '' 136 | end 137 | end, 138 | silent = true, 139 | expr = true, 140 | desc = 'Scroll Forward', 141 | mode = { 'i', 'n', 's' }, 142 | }, 143 | { 144 | '', 145 | function() 146 | if not require('noice.lsp').scroll(-4) then 147 | return '' 148 | end 149 | end, 150 | silent = true, 151 | expr = true, 152 | desc = 'Scroll Backward', 153 | mode = { 'i', 'n', 's' }, 154 | }, 155 | }, 156 | config = function(_, opts) 157 | if vim.o.filetype == 'lazy' then 158 | vim.cmd [[messages clear]] 159 | end 160 | require('noice').setup(opts) 161 | end, 162 | }, 163 | { 164 | 'rcarriga/nvim-notify', 165 | lazy = true, 166 | specs = { 167 | { 'nvim-lua/plenary.nvim', lazy = true }, 168 | }, 169 | keys = { 170 | { 171 | 'nd', 172 | function() 173 | require('notify').dismiss { pending = true, silent = true } 174 | end, 175 | desc = 'Dismiss notifications', 176 | mode = 'n', 177 | }, 178 | }, 179 | init = function() end, 180 | opts = function(_, opts) 181 | opts.icons = { 182 | DEBUG = '', 183 | ERROR = '', 184 | INFO = '󰋼', 185 | TRACE = '󰌵', 186 | WARN = '', 187 | } 188 | opts.max_height = function() 189 | return math.floor(vim.o.lines * 0.75) 190 | end 191 | opts.max_width = function() 192 | return math.floor(vim.o.columns * 0.75) 193 | end 194 | opts.on_open = function(win) 195 | -- local astrocore = require 'astrocore' 196 | -- vim.api.nvim_win_set_config(win, { zindex = 175 }) 197 | -- if not astrocore.config.features.notifications then 198 | -- vim.api.nvim_win_close(win, true) 199 | -- return 200 | -- end 201 | -- if astrocore.is_available 'nvim-treesitter' then 202 | -- require('lazy').load { plugins = { 'nvim-treesitter' } } 203 | -- end 204 | vim.wo[win].conceallevel = 3 205 | local buf = vim.api.nvim_win_get_buf(win) 206 | if not pcall(vim.treesitter.start, buf, 'markdown') then 207 | vim.bo[buf].syntax = 'markdown' 208 | end 209 | vim.wo[win].spell = false 210 | end 211 | end, 212 | config = function(...) 213 | require 'custom.setup.notify'(...) 214 | end, 215 | }, 216 | } 217 | -------------------------------------------------------------------------------- /niri/config.kdl: -------------------------------------------------------------------------------- 1 | spawn-at-startup "/usr/lib/polkit-kde-authentication-agent-1" 2 | spawn-at-startup "/usr/lib/xdg-desktop-portal-kde" 3 | spawn-at-startup "xwayland-satellite" 4 | spawn-at-startup "waybar" 5 | spawn-at-startup "waypaper" "--restore" 6 | spawn-at-startup "dunst" 7 | spawn-at-startup "swayidle" "-w" 8 | 9 | workspace "1" 10 | workspace "2" 11 | workspace "3" 12 | 13 | prefer-no-csd 14 | 15 | environment { 16 | DISPLAY ":1" 17 | QT_QPA_PLATFORM "wayland" 18 | } 19 | 20 | hotkey-overlay { 21 | skip-at-startup 22 | } 23 | 24 | cursor { 25 | xcursor-theme "Bibata-Modern-Ice" 26 | xcursor-size 28 27 | hide-after-inactive-ms 5000 28 | } 29 | 30 | input { 31 | keyboard { 32 | xkb { 33 | layout "gb,us" 34 | options "ctrl:nocaps" 35 | } 36 | 37 | repeat-delay 400 38 | repeat-rate 25 39 | track-layout "global" 40 | } 41 | 42 | touchpad { 43 | tap 44 | accel-profile "flat" 45 | scroll-method "two-finger" 46 | } 47 | 48 | mouse { 49 | accel-profile "flat" 50 | middle-emulation 51 | } 52 | 53 | warp-mouse-to-focus 54 | 55 | focus-follows-mouse max-scroll-amount="100%" 56 | } 57 | 58 | output "eDP-1" { 59 | scale 1.25 60 | 61 | transform "normal" 62 | 63 | background-color "#303446" 64 | 65 | position x=1280 y=0 66 | } 67 | 68 | layout { 69 | gaps 7 70 | center-focused-column "never" 71 | 72 | preset-column-widths { 73 | proportion 0.25 74 | proportion 0.5 75 | proportion 0.75 76 | proportion 0.99 77 | } 78 | 79 | preset-window-heights { 80 | proportion 0.25 81 | proportion 0.5 82 | proportion 0.75 83 | proportion 1.0 84 | } 85 | 86 | default-column-width { proportion 0.99; } 87 | 88 | focus-ring { 89 | off 90 | } 91 | 92 | border { 93 | width 3 94 | active-color "#cba6f7" 95 | inactive-color "#6c7086" 96 | } 97 | } 98 | 99 | screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" 100 | // screenshot-path null 101 | 102 | switch-events { 103 | lid-close {spawn "hyprlock";} 104 | } 105 | 106 | window-rule { 107 | geometry-corner-radius 8 108 | clip-to-geometry true 109 | opacity 0.95 110 | } 111 | 112 | window-rule { 113 | match app-id=r#"kitty$"# title="^tty-clock$" 114 | 115 | open-floating true 116 | default-column-width { proportion 0.3; } 117 | default-window-height { proportion 0.3; } 118 | default-floating-position x=7 y=7 relative-to="top-right" 119 | open-focused false 120 | opacity 0.97 121 | } 122 | 123 | window-rule { 124 | match app-id=r#"firefox$"# title="^Picture-in-Picture$" 125 | match app-id=r#"firefox$"# title="^Library$" 126 | match app-id=r#"mpv$"# 127 | match app-id=r#"libresprite$"# 128 | match app-id=r#"waypaper$"# 129 | match app-id=r#"Audacity$"# 130 | 131 | open-floating true 132 | opacity 1.0 133 | } 134 | 135 | window-rule { 136 | match app-id=r#"firefox$"# 137 | match app-id=r#"chromium$"# 138 | match app-id=r#"vivaldi-stable$"# 139 | match app-id=r#"virt-manager$"# 140 | match app-id=r#"^com\.obsproject\.Studio$"# 141 | 142 | opacity 1.0 143 | } 144 | 145 | window-rule { 146 | match app-id=r#"^com\.obsproject\.Studio$"# 147 | 148 | min-width 876 149 | } 150 | 151 | binds { 152 | Mod+Shift+Slash { show-hotkey-overlay; } 153 | 154 | Mod+Return { spawn "kitty"; } 155 | Mod+A { spawn "rofi" "-show" "drun" "-config" "~/.config/rofi/sway.rasi"; } 156 | Mod+F {spawn "firefox";} 157 | Mod+D {spawn "discord" "--enable-features=UseOzonePlatform" "--ozone-platform=wayland";} 158 | Mod+E {spawn "kitty" "-e" "yazi";} 159 | Mod+B {spawn "~/.config/waybar/launch.sh"; } 160 | 161 | XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05+"; } 162 | XF86AudioLowerVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05-"; } 163 | XF86AudioMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; } 164 | XF86AudioMicMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; } 165 | XF86MonBrightnessUp cooldown-ms=50 allow-when-locked=true { spawn "brightnessctl" "s" "5%+"; } 166 | XF86MonBrightnessDown cooldown-ms=50 allow-when-locked=true { spawn "brightnessctl" "s" "5%-"; } 167 | 168 | Shift+XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.01+"; } 169 | Shift+XF86AudioLowerVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.01-"; } 170 | 171 | Mod+Q { close-window; } 172 | 173 | Mod+Left { focus-column-left; } 174 | Mod+Down { focus-window-down; } 175 | Mod+Up { focus-window-up; } 176 | Mod+Right { focus-column-right; } 177 | 178 | Mod+Shift+Left { move-column-left; } 179 | Mod+Shift+Down { move-window-down; } 180 | Mod+Shift+Up { move-window-up; } 181 | Mod+Shift+Right { move-column-right; } 182 | 183 | Mod+Home { focus-column-first; } 184 | Mod+End { focus-column-last; } 185 | 186 | Mod+Ctrl+Right { focus-workspace-down; } 187 | Mod+Ctrl+Left { focus-workspace-up; } 188 | Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } 189 | Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } 190 | Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } 191 | Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } 192 | 193 | Mod+WheelScrollRight { focus-column-right; } 194 | Mod+WheelScrollLeft { focus-column-left; } 195 | Mod+Ctrl+WheelScrollRight { move-column-right; } 196 | Mod+Ctrl+WheelScrollLeft { move-column-left; } 197 | 198 | Mod+Shift+WheelScrollDown { focus-column-right; } 199 | Mod+Shift+WheelScrollUp { focus-column-left; } 200 | Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } 201 | Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } 202 | 203 | Mod+1 { focus-workspace 1; } 204 | Mod+2 { focus-workspace 2; } 205 | Mod+3 { focus-workspace 3; } 206 | Mod+4 { focus-workspace 4; } 207 | Mod+5 { focus-workspace 5; } 208 | Mod+6 { focus-workspace 6; } 209 | Mod+7 { focus-workspace 7; } 210 | Mod+8 { focus-workspace 8; } 211 | Mod+9 { focus-workspace 9; } 212 | 213 | Mod+Alt+1 { move-window-to-workspace 1; } 214 | Mod+Alt+2 { move-window-to-workspace 2; } 215 | Mod+Alt+3 { move-window-to-workspace 3; } 216 | Mod+Alt+4 { move-window-to-workspace 4; } 217 | Mod+Alt+5 { move-window-to-workspace 5; } 218 | Mod+Alt+6 { move-window-to-workspace 6; } 219 | Mod+Alt+7 { move-window-to-workspace 7; } 220 | Mod+Alt+8 { move-window-to-workspace 8; } 221 | Mod+Alt+9 { move-window-to-workspace 9; } 222 | 223 | Mod+BracketLeft { consume-or-expel-window-left; } 224 | Mod+BracketRight { consume-or-expel-window-right; } 225 | 226 | Mod+Comma { consume-window-into-column; } 227 | Mod+Period { expel-window-from-column; } 228 | 229 | Mod+R { switch-preset-column-width; } 230 | Mod+Shift+R { switch-preset-window-height; } 231 | Mod+Ctrl+R { reset-window-height; } 232 | Mod+M { maximize-column; } 233 | Mod+C { center-column; } 234 | 235 | Mod+Minus { set-column-width "-5%"; } 236 | Mod+Equal { set-column-width "+5%"; } 237 | 238 | Mod+Shift+Minus { set-window-height "-5%"; } 239 | Mod+Shift+Equal { set-window-height "+5%"; } 240 | 241 | Mod+W { toggle-window-floating; } 242 | Mod+Shift+W { switch-focus-between-floating-and-tiling; } 243 | 244 | Mod+K { switch-layout "next"; } 245 | 246 | Print { screenshot-screen; } 247 | Alt+Print { screenshot; } 248 | Ctrl+Print { screenshot-window; } 249 | 250 | Mod+Shift+E { quit; } 251 | Ctrl+Alt+Delete { spawn "rofi" "-show" "menu" "-modi" "'menu:~/.local/share/rofi/scripts/rofi-power-menu-niri --choices=logout/suspend/reboot/shutdown'" "-config" "~/.config/rofi/power.rasi"; } 252 | 253 | Super+Alt+L { spawn "hyprlock"; } 254 | Mod+Shift+P { power-off-monitors; } 255 | 256 | Mod+Shift+C { center-window; } 257 | } 258 | -------------------------------------------------------------------------------- /waybar/style.css: -------------------------------------------------------------------------------- 1 | * { 2 | border: none; 3 | border-radius: 10; 4 | font-family: "JetbrainsMono Nerd Font"; 5 | font-size: 15px; 6 | min-height: 10px; 7 | } 8 | 9 | window#waybar { 10 | background: transparent; 11 | } 12 | 13 | #network { 14 | margin-top: 10px; 15 | margin-left: 8px; 16 | padding-left: 10px; 17 | padding-right: 10px; 18 | margin-bottom: 0px; 19 | border-radius: 10px; 20 | transition: none; 21 | background: #292c3c; 22 | color: #bd93f9; 23 | border-bottom: 3px; 24 | border-style: solid; 25 | border-color: #bd93f9; 26 | transition: 0.3s; 27 | } 28 | 29 | #network:hover { 30 | color: #292c3c; 31 | background: #bd93f9; 32 | } 33 | 34 | #cava { 35 | margin-top: 10px; 36 | margin-left: 8px; 37 | padding-left: 10px; 38 | padding-right: 10px; 39 | margin-bottom: 0px; 40 | border-radius: 10px; 41 | transition: none; 42 | background: #292c3c; 43 | color: #bd93f9; 44 | border-bottom: 3px; 45 | border-style: solid; 46 | border-color: #bd93f9; 47 | transition: 0.3s; 48 | } 49 | 50 | #cava:hover { 51 | color: #292c3c; 52 | background: #bd93f9; 53 | } 54 | 55 | #battery { 56 | margin-top: 10px; 57 | margin-left: 8px; 58 | padding-left: 10px; 59 | padding-right: 10px; 60 | margin-bottom: 0px; 61 | border-radius: 10px; 62 | transition: none; 63 | background: #292c3c; 64 | color: #bd93f9; 65 | border-bottom: 3px; 66 | border-style: solid; 67 | border-color: #bd93f9; 68 | transition: 0.3s; 69 | } 70 | 71 | #battery:hover { 72 | color: #292c3c; 73 | background: #bd93f9; 74 | } 75 | 76 | #backlight:hover { 77 | color: #292c3c; 78 | background: #bd93f9; 79 | } 80 | 81 | #backlight { 82 | margin-top: 10px; 83 | margin-left: 8px; 84 | padding-left: 10px; 85 | padding-right: 10px; 86 | margin-bottom: 0px; 87 | border-radius: 10px; 88 | transition: none; 89 | background: #292c3c; 90 | color: #bd93f9; 91 | border-bottom: 3px; 92 | border-style: solid; 93 | border-color: #bd93f9; 94 | transition: 0.3s; 95 | } 96 | 97 | #language { 98 | margin-top: 10px; 99 | margin-left: 8px; 100 | padding-left: 10px; 101 | padding-right: 10px; 102 | margin-bottom: 0px; 103 | border-radius: 10px; 104 | transition: none; 105 | background: #292c3c; 106 | color: #bd93f9; 107 | border-bottom: 3px; 108 | border-style: solid; 109 | border-color: #bd93f9; 110 | transition: 0.3s; 111 | } 112 | 113 | #language:hover { 114 | color: #292c3c; 115 | background: #bd93f9; 116 | } 117 | 118 | #pulseaudio { 119 | margin-top: 10px; 120 | margin-left: 8px; 121 | padding-left: 10px; 122 | padding-right: 10px; 123 | margin-bottom: 0px; 124 | border-radius: 10px; 125 | transition: none; 126 | background: #292c3c; 127 | color: #bd93f9; 128 | padding: 8px; 129 | border-bottom: 3px; 130 | border-style: solid; 131 | border-color: #bd93f9; 132 | transition: 0.3s; 133 | } 134 | 135 | #pulseaudio:hover { 136 | background: #bd93f9; 137 | color: #292c3c; 138 | } 139 | 140 | #pulseaudio.muted { 141 | color: #f38ba8; 142 | background: #292c3c; 143 | border-bottom: 3px; 144 | border-style: solid; 145 | border-color: #f38ba8; 146 | transition: 0.3s; 147 | } 148 | 149 | #pulseaudio.muted:hover { 150 | background: #f38ba8; 151 | color: #292c3c; 152 | 153 | } 154 | 155 | #clock { 156 | margin-top: 10px; 157 | margin-left: 8px; 158 | padding-left: 10px; 159 | padding-right: 10px; 160 | margin-bottom: 0px; 161 | border-radius: 10px; 162 | transition: none; 163 | background: #292c3c; 164 | color: #bd93f9; 165 | border-bottom: 3px; 166 | border-style: solid; 167 | border-color: #bd93f9; 168 | transition: 0.3s; 169 | } 170 | 171 | #clock:hover { 172 | color: #292c3c; 173 | background: #bd93f9; 174 | } 175 | 176 | #disk { 177 | margin-top: 10px; 178 | margin-left: 8px; 179 | padding-left: 10px; 180 | padding-right: 10px; 181 | margin-bottom: 0px; 182 | border-radius: 10px; 183 | transition: none; 184 | background: #292c3c; 185 | color: #bd93f9; 186 | border-bottom: 3px; 187 | border-style: solid; 188 | border-color: #bd93f9; 189 | transition: 0.3s; 190 | } 191 | 192 | #disk:hover { 193 | color: #292c3c; 194 | background: #bd93f9; 195 | } 196 | 197 | #privacy { 198 | margin-top: 10px; 199 | margin-left: 8px; 200 | padding-left: 10px; 201 | padding-right: 10px; 202 | margin-bottom: 0px; 203 | border-radius: 10px; 204 | transition: none; 205 | background: #292c3c; 206 | color: #bd93f9; 207 | border-bottom: 3px; 208 | border-style: solid; 209 | border-color: #bd93f9; 210 | transition: 0.3s; 211 | } 212 | 213 | #idle_inhibitor { 214 | margin-top: 10px; 215 | margin-left: 8px; 216 | padding-left: 15px; 217 | padding-right: 15px; 218 | margin-bottom: 0px; 219 | border-radius: 10px; 220 | transition: none; 221 | background: #292c3c; 222 | color: #bd93f9; 223 | border-bottom: 3px; 224 | border-style: solid; 225 | border-color: #bd93f9; 226 | transition: 0.3s; 227 | } 228 | 229 | #idle_inhibitor.activated { 230 | color: #89b4fa; 231 | border-color: #89b4fa; 232 | } 233 | 234 | #idle_inhibitor.activated:hover { 235 | background: #89b4fa; 236 | color: #292c3c; 237 | border-color: #89b4fa; 238 | } 239 | 240 | #idle_inhibitor.deactivated { 241 | color: #bd93f9 242 | } 243 | 244 | #idle_inhibitor.deactivated:hover { 245 | color: #292c3c; 246 | background: #bd93f9; 247 | } 248 | 249 | #memory { 250 | margin-top: 10px; 251 | margin-left: 8px; 252 | padding-left: 10px; 253 | margin-bottom: 0px; 254 | padding-right: 10px; 255 | border-radius: 10px; 256 | transition: none; 257 | background: #292c3c; 258 | color: #bd93f9; 259 | border-bottom: 3px; 260 | border-style: solid; 261 | border-color: #bd93f9; 262 | transition: 0.3s; 263 | } 264 | 265 | #memory:hover { 266 | color: #292c3c; 267 | background: #bd93f9; 268 | 269 | } 270 | 271 | #cpu { 272 | margin-top: 10px; 273 | margin-left: 8px; 274 | padding-left: 10px; 275 | margin-bottom: 0px; 276 | padding-right: 10px; 277 | border-radius: 10px; 278 | transition: none; 279 | background: #292c3c; 280 | color: #bd93f9; 281 | border-bottom: 3px; 282 | border-style: solid; 283 | border-color: #bd93f9; 284 | transition: 0.3s; 285 | } 286 | 287 | #cpu:hover { 288 | color: #292c3c; 289 | background: #bd93f9; 290 | 291 | } 292 | 293 | #custom-launcher { 294 | font-size: 20px; 295 | margin-top: 10px; 296 | margin-left: 17px; 297 | padding-left: 10px; 298 | padding-right: 5px; 299 | border-radius: 10px; 300 | transition: none; 301 | color: #bd93f9; 302 | background: #292c3c; 303 | transition: 0.3s; 304 | border-bottom: 3px; 305 | border-style: solid; 306 | border-color: #bd93f9; 307 | } 308 | 309 | #custom-launcher:hover { 310 | background: #bd93f9; 311 | color: #292c3c; 312 | } 313 | 314 | #network.disconnected { 315 | color: #f38ba8; 316 | background: #292c3c; 317 | border-bottom: 3px; 318 | border-style: solid; 319 | border-color: #f38ba8; 320 | } 321 | 322 | #network.disconnected:hover { 323 | background: #f38ba8; 324 | color: #292c3c; 325 | } 326 | 327 | #custom-lock { 328 | font-size: 15px; 329 | margin-top: 10px; 330 | margin-left: 8px; 331 | margin-right: 17px; 332 | padding-left: 10px; 333 | padding-right: 5px; 334 | margin-bottom: 0px; 335 | border-radius: 10px; 336 | transition: none; 337 | background: #292c3c; 338 | color: #bd93f9; 339 | border-bottom: 3px; 340 | border-style: solid; 341 | border-color: #bd93f9; 342 | transition: 0.3s; 343 | } 344 | 345 | #custom-lock:hover { 346 | 347 | background: #f38ba8; 348 | color: #292c3c; 349 | border-color: #f38ba8; 350 | 351 | } 352 | 353 | #workspaces { 354 | margin-top: 10px; 355 | margin-left: 8px; 356 | padding-right: 4px; 357 | background: #292c3c; 358 | border-bottom: 3px; 359 | border-style: solid; 360 | border-color: #bd93f9; 361 | color: #bd93f9; 362 | transition: 0.3s; 363 | } 364 | 365 | #workspaces button { 366 | color: #bd93f9; 367 | transition: 0.3s; 368 | } 369 | 370 | #workspaces button:hover { 371 | background: transparent; 372 | color: transparent; 373 | } 374 | 375 | #workspaces button.active { 376 | color: #b4befe; 377 | transition: 0.3s; 378 | } 379 | 380 | #tray { 381 | margin-top: 10px; 382 | margin-left: 8px; 383 | padding-left: 10px; 384 | padding-right: 10px; 385 | margin-bottom: 0px; 386 | border-radius: 10px; 387 | transition: none; 388 | background: #292c3c; 389 | color: #bd93f9; 390 | border-bottom: 3px; 391 | border-style: solid; 392 | border-color: #bd93f9; 393 | transition: 0.3s; 394 | } 395 | 396 | #tray menu { 397 | margin-top: 10px; 398 | margin-left: 8px; 399 | padding-left: 10px; 400 | padding-right: 10px; 401 | margin-bottom: 0px; 402 | border-radius: 10px; 403 | transition: none; 404 | background: #292c3c; 405 | color: #bd93f9; 406 | border-bottom: 3px; 407 | border-style: solid; 408 | border-color: #bd93f9; 409 | transition: 0.3s; 410 | } 411 | -------------------------------------------------------------------------------- /rofi/local/scripts/rofi-power-menu-niri: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # This script defines just a mode for rofi instead of being a self-contained 4 | # executable that launches rofi by itself. This makes it more flexible than 5 | # running rofi inside this script as now the user can call rofi as one pleases. 6 | # For instance: 7 | # 8 | # rofi -show powermenu -modi powermenu:./rofi-power-menu 9 | # 10 | # See README.md for more information. 11 | 12 | set -e 13 | set -u 14 | 15 | # All supported choices 16 | all=(shutdown reboot suspend hibernate logout lockscreen) 17 | 18 | # By default, show all (i.e., just copy the array) 19 | show=("${all[@]}") 20 | 21 | declare -A texts 22 | texts[lockscreen]="lock screen" 23 | texts[switchuser]="switch user" 24 | texts[logout]="log out" 25 | texts[suspend]="suspend" 26 | texts[hibernate]="hibernate" 27 | texts[reboot]="reboot" 28 | texts[shutdown]="shut down" 29 | 30 | declare -A icons 31 | icons[lockscreen]="\Uf033e" 32 | icons[switchuser]="\Uf0019" 33 | icons[logout]="\Uf0343" 34 | icons[suspend]="\Uf04b2" 35 | icons[hibernate]="\Uf02ca" 36 | icons[reboot]="\Uf0709" 37 | icons[shutdown]="\Uf0425" 38 | icons[cancel]="\Uf0156" 39 | 40 | declare -A actions 41 | actions[lockscreen]="loginctl lock-session ${XDG_SESSION_ID-}" 42 | actions[logout]="niri msg action quit -s" 43 | actions[suspend]="systemctl suspend" 44 | actions[hibernate]="systemctl hibernate" 45 | actions[reboot]="reboot" 46 | actions[shutdown]="shutdown now" 47 | 48 | # By default, ask for confirmation for actions that are irreversible 49 | confirmations=() 50 | 51 | # By default, no dry run 52 | dryrun=false 53 | showsymbols=true 54 | showtext=false 55 | 56 | function check_valid { 57 | option="$1" 58 | shift 1 59 | for entry in "${@}" 60 | do 61 | if [ -z "${actions[$entry]+x}" ] 62 | then 63 | echo "Invalid choice in $1: $entry" >&2 64 | exit 1 65 | fi 66 | done 67 | } 68 | 69 | # Parse command-line options 70 | parsed=$(getopt --options=h --longoptions=help,dry-run,confirm:,choices:,choose:,symbols,no-symbols,text,no-text,symbols-font: --name "$0" -- "$@") 71 | if [ $? -ne 0 ]; then 72 | echo 'Terminating...' >&2 73 | exit 1 74 | fi 75 | eval set -- "$parsed" 76 | unset parsed 77 | while true; do 78 | case "$1" in 79 | "-h"|"--help") 80 | echo "rofi-power-menu - a power menu mode for Rofi" 81 | echo 82 | echo "Usage: rofi-power-menu [--choices CHOICES] [--confirm CHOICES]" 83 | echo " [--choose CHOICE] [--dry-run] [--symbols|--no-symbols]" 84 | echo 85 | echo "Use with Rofi in script mode. For instance, to ask for shutdown or reboot:" 86 | echo 87 | echo " rofi -show menu -modi \"menu:rofi-power-menu --choices=shutdown/reboot\"" 88 | echo 89 | echo "Available options:" 90 | echo " --dry-run Don't perform the selected action but print it to stderr." 91 | echo " --choices CHOICES Show only the selected choices in the given order. Use /" 92 | echo " as the separator. Available choices are lockscreen," 93 | echo " logout,suspend, hibernate, reboot and shutdown. By" 94 | echo " default, all available choices are shown." 95 | echo " --confirm CHOICES Require confirmation for the gives choices only. Use / as" 96 | echo " the separator. Available choices are lockscreen, logout," 97 | echo " suspend, hibernate, reboot and shutdown. By default, only" 98 | echo " irreversible actions logout, reboot and shutdown require" 99 | echo " confirmation." 100 | echo " --choose CHOICE Preselect the given choice and only ask for a" 101 | echo " confirmation (if confirmation is set to be requested). It" 102 | echo " is strongly recommended to combine this option with" 103 | echo " --confirm=CHOICE if the choice wouldn't require" 104 | echo " confirmation by default. Available choices are" 105 | echo " lockscreen, logout, suspend, hibernate, reboot and" 106 | echo " shutdown." 107 | echo " --[no-]symbols Show Unicode symbols or not. Requires a font with support" 108 | echo " for the symbols. Use, for instance, fonts from the" 109 | echo " Nerdfonts collection. By default, they are shown" 110 | echo " --[no-]text Show text description or not." 111 | echo " --symbols-font FONT Use the given font for symbols. By default, the symbols" 112 | echo " use the same font as the text. That font is configured" 113 | echo " with rofi." 114 | echo " -h,--help Show this help text." 115 | exit 0 116 | ;; 117 | "--dry-run") 118 | dryrun=true 119 | shift 1 120 | ;; 121 | "--confirm") 122 | IFS='/' read -ra confirmations <<< "$2" 123 | check_valid "$1" "${confirmations[@]}" 124 | shift 2 125 | ;; 126 | "--choices") 127 | IFS='/' read -ra show <<< "$2" 128 | check_valid "$1" "${show[@]}" 129 | shift 2 130 | ;; 131 | "--choose") 132 | # Check that the choice is valid 133 | check_valid "$1" "$2" 134 | selectionID="$2" 135 | shift 2 136 | ;; 137 | "--symbols") 138 | showsymbols=true 139 | shift 1 140 | ;; 141 | "--no-symbols") 142 | showsymbols=false 143 | shift 1 144 | ;; 145 | "--text") 146 | showtext=true 147 | shift 1 148 | ;; 149 | "--no-text") 150 | showtext=false 151 | shift 1 152 | ;; 153 | "--symbols-font") 154 | symbols_font="$2" 155 | shift 2 156 | ;; 157 | "--") 158 | shift 159 | break 160 | ;; 161 | *) 162 | echo "Internal error" >&2 163 | exit 1 164 | ;; 165 | esac 166 | done 167 | 168 | if [ "$showsymbols" = "false" -a "$showtext" = "false" ] 169 | then 170 | echo "Invalid options: cannot have --no-symbols and --no-text enabled at the same time." >&2 171 | exit 1 172 | fi 173 | 174 | # Define the messages after parsing the CLI options so that it is possible to 175 | # configure them in the future. 176 | 177 | function write_message { 178 | if [ -z ${symbols_font+x} ]; 179 | then 180 | icon="$1" 181 | else 182 | icon="$1" 183 | fi 184 | text="$2" 185 | if [ "$showsymbols" = "true" ] 186 | then 187 | if [ "$showtext" = "true" ] 188 | then 189 | echo -n "\u200e$icon \u2068$text\u2069" 190 | else 191 | echo -n "\u200e$icon" 192 | fi 193 | else 194 | echo -n "$text" 195 | fi 196 | } 197 | 198 | function print_selection { 199 | echo -e "$1" | $(read -r -d '' entry; echo "echo $entry") 200 | } 201 | 202 | declare -A messages 203 | declare -A confirmationMessages 204 | for entry in "${all[@]}" 205 | do 206 | messages[$entry]=$(write_message "${icons[$entry]}" "${texts[$entry]^}") 207 | done 208 | for entry in "${all[@]}" 209 | do 210 | confirmationMessages[$entry]=$(write_message "${icons[$entry]}" "Yes, ${texts[$entry]}") 211 | done 212 | confirmationMessages[cancel]=$(write_message "${icons[cancel]}" "No, cancel") 213 | 214 | if [ $# -gt 0 ] 215 | then 216 | # If arguments given, use those as the selection 217 | selection="${@}" 218 | else 219 | # Otherwise, use the CLI passed choice if given 220 | if [ -n "${selectionID+x}" ] 221 | then 222 | selection="${messages[$selectionID]}" 223 | fi 224 | fi 225 | 226 | # Don't allow custom entries 227 | echo -e "\0no-custom\x1ftrue" 228 | # Use markup 229 | echo -e "\0markup-rows\x1ftrue" 230 | 231 | if [ -z "${selection+x}" ] 232 | then 233 | echo -e "\0prompt\x1fPower menu" 234 | for entry in "${show[@]}" 235 | do 236 | echo -e "${messages[$entry]}\0icon\x1f${icons[$entry]}" 237 | done 238 | else 239 | for entry in "${show[@]}" 240 | do 241 | if [ "$selection" = "$(print_selection "${messages[$entry]}")" ] 242 | then 243 | # Check if the selected entry is listed in confirmation requirements 244 | for confirmation in "${confirmations[@]}" 245 | do 246 | if [ "$entry" = "$confirmation" ] 247 | then 248 | # Ask for confirmation 249 | echo -e "\0prompt\x1fAre you sure" 250 | echo -e "${confirmationMessages[$entry]}\0icon\x1f${icons[$entry]}" 251 | echo -e "${confirmationMessages[cancel]}\0icon\x1f${icons[cancel]}" 252 | exit 0 253 | fi 254 | done 255 | # If not, then no confirmation is required, so mark confirmed 256 | selection=$(print_selection "${confirmationMessages[$entry]}") 257 | fi 258 | if [ "$selection" = "$(print_selection "${confirmationMessages[$entry]}")" ] 259 | then 260 | if [ $dryrun = true ] 261 | then 262 | # Tell what would have been done 263 | echo "Selected: $entry" >&2 264 | else 265 | # Perform the action 266 | ${actions[$entry]} 267 | fi 268 | exit 0 269 | fi 270 | if [ "$selection" = "$(print_selection "${confirmationMessages[cancel]}")" ] 271 | then 272 | # Do nothing 273 | exit 0 274 | fi 275 | done 276 | # The selection didn't match anything, so raise an error 277 | echo "Invalid selection: $selection" >&2 278 | exit 1 279 | fi 280 | -------------------------------------------------------------------------------- /rofi/local/scripts/rofi-power-menu: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # This script defines just a mode for rofi instead of being a self-contained 4 | # executable that launches rofi by itself. This makes it more flexible than 5 | # running rofi inside this script as now the user can call rofi as one pleases. 6 | # For instance: 7 | # 8 | # rofi -show powermenu -modi powermenu:./rofi-power-menu 9 | # 10 | # See README.md for more information. 11 | 12 | set -e 13 | set -u 14 | 15 | # All supported choices 16 | all=(shutdown reboot suspend hibernate logout lockscreen) 17 | 18 | # By default, show all (i.e., just copy the array) 19 | show=("${all[@]}") 20 | 21 | declare -A texts 22 | texts[lockscreen]="lock screen" 23 | texts[switchuser]="switch user" 24 | texts[logout]="log out" 25 | texts[suspend]="suspend" 26 | texts[hibernate]="hibernate" 27 | texts[reboot]="reboot" 28 | texts[shutdown]="shut down" 29 | 30 | declare -A icons 31 | icons[lockscreen]="\Uf033e" 32 | icons[switchuser]="\Uf0019" 33 | icons[logout]="\Uf0343" 34 | icons[suspend]="\Uf04b2" 35 | icons[hibernate]="\Uf02ca" 36 | icons[reboot]="\Uf0709" 37 | icons[shutdown]="\Uf0425" 38 | icons[cancel]="\Uf0156" 39 | 40 | declare -A actions 41 | actions[lockscreen]="loginctl lock-session ${XDG_SESSION_ID-}" 42 | # actions[switchuser]="???" 43 | # actions[logout]="qtile cmd-obj -o cmd -f shutdown" # For qtile 44 | # actions[logout]="i3-msg exit" # For i3wm 45 | actions[logout]="swaymsg exit" # For sway/swayfx 46 | actions[suspend]="systemctl suspend" 47 | actions[hibernate]="systemctl hibernate" 48 | actions[reboot]="reboot" 49 | actions[shutdown]="shutdown now" 50 | 51 | # By default, ask for confirmation for actions that are irreversible 52 | confirmations=() 53 | 54 | # By default, no dry run 55 | dryrun=false 56 | showsymbols=true 57 | showtext=false 58 | 59 | function check_valid { 60 | option="$1" 61 | shift 1 62 | for entry in "${@}" 63 | do 64 | if [ -z "${actions[$entry]+x}" ] 65 | then 66 | echo "Invalid choice in $1: $entry" >&2 67 | exit 1 68 | fi 69 | done 70 | } 71 | 72 | # Parse command-line options 73 | parsed=$(getopt --options=h --longoptions=help,dry-run,confirm:,choices:,choose:,symbols,no-symbols,text,no-text,symbols-font: --name "$0" -- "$@") 74 | if [ $? -ne 0 ]; then 75 | echo 'Terminating...' >&2 76 | exit 1 77 | fi 78 | eval set -- "$parsed" 79 | unset parsed 80 | while true; do 81 | case "$1" in 82 | "-h"|"--help") 83 | echo "rofi-power-menu - a power menu mode for Rofi" 84 | echo 85 | echo "Usage: rofi-power-menu [--choices CHOICES] [--confirm CHOICES]" 86 | echo " [--choose CHOICE] [--dry-run] [--symbols|--no-symbols]" 87 | echo 88 | echo "Use with Rofi in script mode. For instance, to ask for shutdown or reboot:" 89 | echo 90 | echo " rofi -show menu -modi \"menu:rofi-power-menu --choices=shutdown/reboot\"" 91 | echo 92 | echo "Available options:" 93 | echo " --dry-run Don't perform the selected action but print it to stderr." 94 | echo " --choices CHOICES Show only the selected choices in the given order. Use /" 95 | echo " as the separator. Available choices are lockscreen," 96 | echo " logout,suspend, hibernate, reboot and shutdown. By" 97 | echo " default, all available choices are shown." 98 | echo " --confirm CHOICES Require confirmation for the gives choices only. Use / as" 99 | echo " the separator. Available choices are lockscreen, logout," 100 | echo " suspend, hibernate, reboot and shutdown. By default, only" 101 | echo " irreversible actions logout, reboot and shutdown require" 102 | echo " confirmation." 103 | echo " --choose CHOICE Preselect the given choice and only ask for a" 104 | echo " confirmation (if confirmation is set to be requested). It" 105 | echo " is strongly recommended to combine this option with" 106 | echo " --confirm=CHOICE if the choice wouldn't require" 107 | echo " confirmation by default. Available choices are" 108 | echo " lockscreen, logout, suspend, hibernate, reboot and" 109 | echo " shutdown." 110 | echo " --[no-]symbols Show Unicode symbols or not. Requires a font with support" 111 | echo " for the symbols. Use, for instance, fonts from the" 112 | echo " Nerdfonts collection. By default, they are shown" 113 | echo " --[no-]text Show text description or not." 114 | echo " --symbols-font FONT Use the given font for symbols. By default, the symbols" 115 | echo " use the same font as the text. That font is configured" 116 | echo " with rofi." 117 | echo " -h,--help Show this help text." 118 | exit 0 119 | ;; 120 | "--dry-run") 121 | dryrun=true 122 | shift 1 123 | ;; 124 | "--confirm") 125 | IFS='/' read -ra confirmations <<< "$2" 126 | check_valid "$1" "${confirmations[@]}" 127 | shift 2 128 | ;; 129 | "--choices") 130 | IFS='/' read -ra show <<< "$2" 131 | check_valid "$1" "${show[@]}" 132 | shift 2 133 | ;; 134 | "--choose") 135 | # Check that the choice is valid 136 | check_valid "$1" "$2" 137 | selectionID="$2" 138 | shift 2 139 | ;; 140 | "--symbols") 141 | showsymbols=true 142 | shift 1 143 | ;; 144 | "--no-symbols") 145 | showsymbols=false 146 | shift 1 147 | ;; 148 | "--text") 149 | showtext=true 150 | shift 1 151 | ;; 152 | "--no-text") 153 | showtext=false 154 | shift 1 155 | ;; 156 | "--symbols-font") 157 | symbols_font="$2" 158 | shift 2 159 | ;; 160 | "--") 161 | shift 162 | break 163 | ;; 164 | *) 165 | echo "Internal error" >&2 166 | exit 1 167 | ;; 168 | esac 169 | done 170 | 171 | if [ "$showsymbols" = "false" -a "$showtext" = "false" ] 172 | then 173 | echo "Invalid options: cannot have --no-symbols and --no-text enabled at the same time." >&2 174 | exit 1 175 | fi 176 | 177 | # Define the messages after parsing the CLI options so that it is possible to 178 | # configure them in the future. 179 | 180 | function write_message { 181 | if [ -z ${symbols_font+x} ]; 182 | then 183 | icon="$1" 184 | else 185 | icon="$1" 186 | fi 187 | text="$2" 188 | if [ "$showsymbols" = "true" ] 189 | then 190 | if [ "$showtext" = "true" ] 191 | then 192 | echo -n "\u200e$icon \u2068$text\u2069" 193 | else 194 | echo -n "\u200e$icon" 195 | fi 196 | else 197 | echo -n "$text" 198 | fi 199 | } 200 | 201 | function print_selection { 202 | echo -e "$1" | $(read -r -d '' entry; echo "echo $entry") 203 | } 204 | 205 | declare -A messages 206 | declare -A confirmationMessages 207 | for entry in "${all[@]}" 208 | do 209 | messages[$entry]=$(write_message "${icons[$entry]}" "${texts[$entry]^}") 210 | done 211 | for entry in "${all[@]}" 212 | do 213 | confirmationMessages[$entry]=$(write_message "${icons[$entry]}" "Yes, ${texts[$entry]}") 214 | done 215 | confirmationMessages[cancel]=$(write_message "${icons[cancel]}" "No, cancel") 216 | 217 | if [ $# -gt 0 ] 218 | then 219 | # If arguments given, use those as the selection 220 | selection="${@}" 221 | else 222 | # Otherwise, use the CLI passed choice if given 223 | if [ -n "${selectionID+x}" ] 224 | then 225 | selection="${messages[$selectionID]}" 226 | fi 227 | fi 228 | 229 | # Don't allow custom entries 230 | echo -e "\0no-custom\x1ftrue" 231 | # Use markup 232 | echo -e "\0markup-rows\x1ftrue" 233 | 234 | if [ -z "${selection+x}" ] 235 | then 236 | echo -e "\0prompt\x1fPower menu" 237 | for entry in "${show[@]}" 238 | do 239 | echo -e "${messages[$entry]}\0icon\x1f${icons[$entry]}" 240 | done 241 | else 242 | for entry in "${show[@]}" 243 | do 244 | if [ "$selection" = "$(print_selection "${messages[$entry]}")" ] 245 | then 246 | # Check if the selected entry is listed in confirmation requirements 247 | for confirmation in "${confirmations[@]}" 248 | do 249 | if [ "$entry" = "$confirmation" ] 250 | then 251 | # Ask for confirmation 252 | echo -e "\0prompt\x1fAre you sure" 253 | echo -e "${confirmationMessages[$entry]}\0icon\x1f${icons[$entry]}" 254 | echo -e "${confirmationMessages[cancel]}\0icon\x1f${icons[cancel]}" 255 | exit 0 256 | fi 257 | done 258 | # If not, then no confirmation is required, so mark confirmed 259 | selection=$(print_selection "${confirmationMessages[$entry]}") 260 | fi 261 | if [ "$selection" = "$(print_selection "${confirmationMessages[$entry]}")" ] 262 | then 263 | if [ $dryrun = true ] 264 | then 265 | # Tell what would have been done 266 | echo "Selected: $entry" >&2 267 | else 268 | # Perform the action 269 | ${actions[$entry]} 270 | fi 271 | exit 0 272 | fi 273 | if [ "$selection" = "$(print_selection "${confirmationMessages[cancel]}")" ] 274 | then 275 | # Do nothing 276 | exit 0 277 | fi 278 | done 279 | # The selection didn't match anything, so raise an error 280 | echo "Invalid selection: $selection" >&2 281 | exit 1 282 | fi 283 | -------------------------------------------------------------------------------- /nvim/lua/kickstart/plugins/lspconfig.lua: -------------------------------------------------------------------------------- 1 | -- LSP Plugins 2 | return { 3 | { 4 | -- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins 5 | -- used for completion, annotations and signatures of Neovim apis 6 | 'folke/lazydev.nvim', 7 | ft = 'lua', 8 | opts = { 9 | library = { 10 | -- Load luvit types when the `vim.uv` word is found 11 | { path = 'luvit-meta/library', words = { 'vim%.uv' } }, 12 | }, 13 | }, 14 | }, 15 | { 'Bilal2453/luvit-meta', lazy = true }, 16 | { 17 | -- Main LSP Configuration 18 | 'neovim/nvim-lspconfig', 19 | dependencies = { 20 | -- Automatically install LSPs and related tools to stdpath for Neovim 21 | { 'williamboman/mason.nvim', config = true }, -- NOTE: Must be loaded before dependants 22 | 'williamboman/mason-lspconfig.nvim', 23 | 'WhoIsSethDaniel/mason-tool-installer.nvim', 24 | 25 | -- Useful status updates for LSP. 26 | -- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})` 27 | { 'j-hui/fidget.nvim', opts = {} }, 28 | 29 | -- Allows extra capabilities provided by nvim-cmp 30 | 'hrsh7th/cmp-nvim-lsp', 31 | }, 32 | config = function() 33 | -- Brief aside: **What is LSP?** 34 | -- 35 | -- LSP is an initialism you've probably heard, but might not understand what it is. 36 | -- 37 | -- LSP stands for Language Server Protocol. It's a protocol that helps editors 38 | -- and language tooling communicate in a standardized fashion. 39 | -- 40 | -- In general, you have a "server" which is some tool built to understand a particular 41 | -- language (such as `gopls`, `lua_ls`, `rust_analyzer`, etc.). These Language Servers 42 | -- (sometimes called LSP servers, but that's kind of like ATM Machine) are standalone 43 | -- processes that communicate with some "client" - in this case, Neovim! 44 | -- 45 | -- LSP provides Neovim with features like: 46 | -- - Go to definition 47 | -- - Find references 48 | -- - Autocompletion 49 | -- - Symbol Search 50 | -- - and more! 51 | -- 52 | -- Thus, Language Servers are external tools that must be installed separately from 53 | -- Neovim. This is where `mason` and related plugins come into play. 54 | -- 55 | -- If you're wondering about lsp vs treesitter, you can check out the wonderfully 56 | -- and elegantly composed help section, `:help lsp-vs-treesitter` 57 | 58 | -- This function gets run when an LSP attaches to a particular buffer. 59 | -- That is to say, every time a new file is opened that is associated with 60 | -- an lsp (for example, opening `main.rs` is associated with `rust_analyzer`) this 61 | -- function will be executed to configure the current buffer 62 | vim.api.nvim_create_autocmd('LspAttach', { 63 | group = vim.api.nvim_create_augroup('kickstart-lsp-attach', { clear = true }), 64 | callback = function(event) 65 | -- NOTE: Remember that Lua is a real programming language, and as such it is possible 66 | -- to define small helper and utility functions so you don't have to repeat yourself. 67 | -- 68 | -- In this case, we create a function that lets us more easily define mappings specific 69 | -- for LSP related items. It sets the mode, buffer and description for us each time. 70 | local map = function(keys, func, desc, mode) 71 | mode = mode or 'n' 72 | vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = '' .. desc }) 73 | end 74 | 75 | -- Jump to the definition of the word under your cursor. 76 | -- This is where a variable was first declared, or where a function is defined, etc. 77 | -- To jump back, press . 78 | map('gd', require('telescope.builtin').lsp_definitions, 'Goto Definition') 79 | 80 | -- Find references for the word under your cursor. 81 | map('gr', require('telescope.builtin').lsp_references, 'Goto References') 82 | 83 | -- Jump to the implementation of the word under your cursor. 84 | -- Useful when your language has ways of declaring types without an actual implementation. 85 | map('gi', require('telescope.builtin').lsp_implementations, 'Goto Implementation') 86 | 87 | -- Jump to the type of the word under your cursor. 88 | -- Useful when you're not sure what type a variable is and you want to see 89 | -- the definition of its *type*, not where it was *defined*. 90 | map('gt', require('telescope.builtin').lsp_type_definitions, 'Goto Type Definition') 91 | 92 | -- Fuzzy find all the symbols in your current document. 93 | -- Symbols are things like variables, functions, types, etc. 94 | map('dS', require('telescope.builtin').lsp_document_symbols, 'Document Symbols') 95 | 96 | -- Fuzzy find all the symbols in your current workspace. 97 | -- Similar to document symbols, except searches over your entire project. 98 | map('ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, 'Workspace Symbols') 99 | 100 | -- Rename the variable under your cursor. 101 | -- Most Language Servers support renaming across files, etc. 102 | map('rn', vim.lsp.buf.rename, 'Rename') 103 | 104 | -- Execute a code action, usually your cursor needs to be on top of an error 105 | -- or a suggestion from your LSP for this to activate. 106 | map('ca', vim.lsp.buf.code_action, 'Code Action', { 'n', 'x' }) 107 | 108 | -- WARN: This is not Goto Definition, this is Goto Declaration. 109 | -- For example, in C this would take you to the header. 110 | map('gD', vim.lsp.buf.declaration, 'Goto Declaration') 111 | 112 | -- The following two autocommands are used to highlight references of the 113 | -- word under your cursor when your cursor rests there for a little while. 114 | -- See `:help CursorHold` for information about when this is executed 115 | -- 116 | -- When you move your cursor, the highlights will be cleared (the second autocommand). 117 | local client = vim.lsp.get_client_by_id(event.data.client_id) 118 | if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_documentHighlight) then 119 | local highlight_augroup = vim.api.nvim_create_augroup('kickstart-lsp-highlight', { clear = false }) 120 | vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { 121 | buffer = event.buf, 122 | group = highlight_augroup, 123 | callback = vim.lsp.buf.document_highlight, 124 | }) 125 | 126 | vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, { 127 | buffer = event.buf, 128 | group = highlight_augroup, 129 | callback = vim.lsp.buf.clear_references, 130 | }) 131 | 132 | vim.api.nvim_create_autocmd('LspDetach', { 133 | group = vim.api.nvim_create_augroup('kickstart-lsp-detach', { clear = true }), 134 | callback = function(event2) 135 | vim.lsp.buf.clear_references() 136 | vim.api.nvim_clear_autocmds { group = 'kickstart-lsp-highlight', buffer = event2.buf } 137 | end, 138 | }) 139 | end 140 | 141 | -- The following code creates a keymap to toggle inlay hints in your 142 | -- code, if the language server you are using supports them 143 | -- 144 | -- This may be unwanted, since they displace some of your code 145 | if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then 146 | map('th', function() 147 | vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf }) 148 | end, 'Toggle Inlay Hints') 149 | end 150 | end, 151 | }) 152 | 153 | -- Change diagnostic symbols in the sign column (gutter) 154 | -- if vim.g.have_nerd_font then 155 | -- local signs = { ERROR = '', WARN = '', INFO = '', HINT = '' } 156 | -- local diagnostic_signs = {} 157 | -- for type, icon in pairs(signs) do 158 | -- diagnostic_signs[vim.diagnostic.severity[type]] = icon 159 | -- end 160 | -- vim.diagnostic.config { signs = { text = diagnostic_signs } } 161 | -- end 162 | 163 | -- LSP servers and clients are able to communicate to each other what features they support. 164 | -- By default, Neovim doesn't support everything that is in the LSP specification. 165 | -- When you add nvim-cmp, luasnip, etc. Neovim now has *more* capabilities. 166 | -- So, we create new capabilities with nvim cmp, and then broadcast that to the servers. 167 | local capabilities = vim.lsp.protocol.make_client_capabilities() 168 | capabilities = vim.tbl_deep_extend('force', capabilities, require('cmp_nvim_lsp').default_capabilities()) 169 | 170 | -- Enable the following language servers 171 | -- Feel free to add/remove any LSPs that you want here. They will automatically be installed. 172 | -- 173 | -- Add any additional override configuration in the following tables. Available keys are: 174 | -- - cmd (table): Override the default command used to start the server 175 | -- - filetypes (table): Override the default list of associated filetypes for the server 176 | -- - capabilities (table): Override fields in capabilities. Can be used to disable certain LSP features. 177 | -- - settings (table): Override the default settings passed when initializing the server. 178 | -- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/ 179 | local servers = { 180 | -- clangd = {}, 181 | -- gopls = {}, 182 | -- pyright = {}, 183 | -- rust_analyzer = {}, 184 | -- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs 185 | -- 186 | -- Some languages (like typescript) have entire language plugins that can be useful: 187 | -- https://github.com/pmizio/typescript-tools.nvim 188 | -- 189 | -- But for many setups, the LSP (`ts_ls`) will work just fine 190 | -- ts_ls = {}, 191 | -- 192 | 193 | lua_ls = { 194 | -- cmd = { ... }, 195 | -- filetypes = { ... }, 196 | -- capabilities = {}, 197 | settings = { 198 | Lua = { 199 | completion = { 200 | callSnippet = 'Replace', 201 | }, 202 | -- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings 203 | -- diagnostics = { disable = { 'missing-fields' } }, 204 | }, 205 | }, 206 | }, 207 | } 208 | 209 | -- Ensure the servers and tools above are installed 210 | -- To check the current status of installed tools and/or manually install 211 | -- other tools, you can run 212 | -- :Mason 213 | -- 214 | -- You can press `g?` for help in this menu. 215 | require('mason').setup() 216 | 217 | -- You can add other tools here that you want Mason to install 218 | -- for you, so that they are available from within Neovim. 219 | local ensure_installed = vim.tbl_keys(servers or {}) 220 | vim.list_extend(ensure_installed, { 221 | 'stylua', -- Used to format Lua code 222 | }) 223 | require('mason-tool-installer').setup { ensure_installed = ensure_installed } 224 | 225 | require('mason-lspconfig').setup { 226 | handlers = { 227 | function(server_name) 228 | local server = servers[server_name] or {} 229 | -- This handles overriding only values explicitly passed 230 | -- by the server configuration above. Useful when disabling 231 | -- certain features of an LSP (for example, turning off formatting for ts_ls) 232 | server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {}) 233 | require('lspconfig')[server_name].setup(server) 234 | end, 235 | }, 236 | } 237 | end, 238 | }, 239 | } 240 | -- vim: ts=2 sts=2 sw=2 et 241 | -------------------------------------------------------------------------------- /yazi/theme.toml: -------------------------------------------------------------------------------- 1 | [manager] 2 | cwd = { fg = "#94e2d5" } 3 | 4 | hovered = { fg = "#1e1e2e", bg = "#cba6f7" } 5 | preview_hovered = { fg = "#1e1e2e", bg = "#cdd6f4" } 6 | 7 | find_keyword = { fg = "#f9e2af", italic = true } 8 | find_position = { fg = "#f5c2e7", bg = "reset", italic = true } 9 | 10 | marker_copied = { fg = "#a6e3a1", bg = "#a6e3a1" } 11 | marker_cut = { fg = "#f38ba8", bg = "#f38ba8" } 12 | marker_marked = { fg = "#94e2d5", bg = "#94e2d5" } 13 | marker_selected = { fg = "#cba6f7", bg = "#cba6f7" } 14 | 15 | tab_active = { fg = "#1e1e2e", bg = "#cdd6f4" } 16 | tab_inactive = { fg = "#cdd6f4", bg = "#45475a" } 17 | tab_width = 1 18 | 19 | count_copied = { fg = "#1e1e2e", bg = "#a6e3a1" } 20 | count_cut = { fg = "#1e1e2e", bg = "#f38ba8" } 21 | count_selected = { fg = "#1e1e2e", bg = "#cba6f7" } 22 | 23 | border_symbol = "│" 24 | border_style = { fg = "#7f849c" } 25 | 26 | syntect_theme = "~/.config/yazi/Catppuccin-mocha.tmTheme" 27 | 28 | [mode] 29 | normal_main = { fg = "#1e1e2e", bg = "#cba6f7", bold = true } 30 | normal_alt = { fg = "#cba6f7", bg = "#313244"} 31 | 32 | select_main = { fg = "#1e1e2e", bg = "#a6e3a1", bold = true } 33 | select_alt = { fg = "#a6e3a1", bg = "#313244"} 34 | 35 | unset_main = { fg = "#1e1e2e", bg = "#f2cdcd", bold = true } 36 | unset_alt = { fg = "#f2cdcd", bg = "#313244"} 37 | 38 | [status] 39 | separator_open = "" 40 | separator_close = "" 41 | 42 | progress_label = { fg = "#ffffff", bold = true } 43 | progress_normal = { fg = "#89b4fa", bg = "#45475a" } 44 | progress_error = { fg = "#f38ba8", bg = "#45475a" } 45 | 46 | perm_type = { fg = "#89b4fa" } 47 | perm_read = { fg = "#f9e2af" } 48 | perm_write = { fg = "#f38ba8" } 49 | perm_exec = { fg = "#a6e3a1" } 50 | perm_sep = { fg = "#7f849c" } 51 | 52 | [input] 53 | border = { fg = "#cba6f7" } 54 | title = {} 55 | value = {} 56 | selected = { reversed = true } 57 | 58 | [pick] 59 | border = { fg = "#cba6f7" } 60 | active = { fg = "#f5c2e7" } 61 | inactive = {} 62 | 63 | [confirm] 64 | border = { fg = "#cba6f7" } 65 | title = { fg = "#cba6f7" } 66 | content = {} 67 | list = {} 68 | btn_yes = { reversed = true } 69 | btn_no = {} 70 | 71 | [completion] 72 | border = { fg = "#cba6f7" } 73 | 74 | [tasks] 75 | border = { fg = "#cba6f7" } 76 | title = {} 77 | hovered = { underline = true } 78 | 79 | [which] 80 | mask = { bg = "#313244" } 81 | cand = { fg = "#94e2d5" } 82 | rest = { fg = "#9399b2" } 83 | desc = { fg = "#f5c2e7" } 84 | separator = "  " 85 | separator_style = { fg = "#585b70" } 86 | 87 | [help] 88 | on = { fg = "#94e2d5" } 89 | run = { fg = "#f5c2e7" } 90 | desc = { fg = "#9399b2" } 91 | hovered = { bg = "#585b70", bold = true } 92 | footer = { fg = "#cdd6f4", bg = "#45475a" } 93 | 94 | [notify] 95 | title_info = { fg = "#94e2d5" } 96 | title_warn = { fg = "#f9e2af" } 97 | title_error = { fg = "#f38ba8" } 98 | 99 | [filetype] 100 | rules = [ 101 | # Media 102 | { mime = "image/*", fg = "#94e2d5" }, 103 | { mime = "{audio,video}/*", fg = "#f9e2af" }, 104 | 105 | # Archives 106 | { mime = "application/*zip", fg = "#f5c2e7" }, 107 | { mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", fg = "#f5c2e7" }, 108 | 109 | # Documents 110 | { mime = "application/{pdf,doc,rtf}", fg = "#a6e3a1" }, 111 | 112 | # Fallback 113 | { name = "*", fg = "#cdd6f4" }, 114 | { name = "*/", fg = "#cba6f7" } 115 | ] 116 | 117 | [icon] 118 | files = [ 119 | { name = "kritadisplayrc", text = "", fg = "#cba6f7" }, 120 | { name = ".gtkrc-2.0", text = "", fg = "#f5e0dc" }, 121 | { name = "bspwmrc", text = "", fg = "#313244" }, 122 | { name = "webpack", text = "󰜫", fg = "#74c7ec" }, 123 | { name = "tsconfig.json", text = "", fg = "#74c7ec" }, 124 | { name = ".vimrc", text = "", fg = "#a6e3a1" }, 125 | { name = "gemfile$", text = "", fg = "#313244" }, 126 | { name = "xmobarrc", text = "", fg = "#f38ba8" }, 127 | { name = "avif", text = "", fg = "#7f849c" }, 128 | { name = "fp-info-cache", text = "", fg = "#f5e0dc" }, 129 | { name = ".zshrc", text = "", fg = "#a6e3a1" }, 130 | { name = "robots.txt", text = "󰚩", fg = "#6c7086" }, 131 | { name = "dockerfile", text = "󰡨", fg = "#89b4fa" }, 132 | { name = ".git-blame-ignore-revs", text = "", fg = "#fab387" }, 133 | { name = ".nvmrc", text = "", fg = "#a6e3a1" }, 134 | { name = "hyprpaper.conf", text = "", fg = "#74c7ec" }, 135 | { name = ".prettierignore", text = "", fg = "#89b4fa" }, 136 | { name = "rakefile", text = "", fg = "#313244" }, 137 | { name = "code_of_conduct", text = "", fg = "#f38ba8" }, 138 | { name = "cmakelists.txt", text = "", fg = "#cdd6f4" }, 139 | { name = ".env", text = "", fg = "#f9e2af" }, 140 | { name = "copying.lesser", text = "", fg = "#f9e2af" }, 141 | { name = "readme", text = "󰂺", fg = "#f5e0dc" }, 142 | { name = "settings.gradle", text = "", fg = "#585b70" }, 143 | { name = "gruntfile.coffee", text = "", fg = "#fab387" }, 144 | { name = ".eslintignore", text = "", fg = "#585b70" }, 145 | { name = "kalgebrarc", text = "", fg = "#89b4fa" }, 146 | { name = "kdenliverc", text = "", fg = "#89b4fa" }, 147 | { name = ".prettierrc.cjs", text = "", fg = "#89b4fa" }, 148 | { name = "cantorrc", text = "", fg = "#89b4fa" }, 149 | { name = "rmd", text = "", fg = "#74c7ec" }, 150 | { name = "vagrantfile$", text = "", fg = "#6c7086" }, 151 | { name = ".Xauthority", text = "", fg = "#fab387" }, 152 | { name = "prettier.config.ts", text = "", fg = "#89b4fa" }, 153 | { name = "node_modules", text = "", fg = "#f38ba8" }, 154 | { name = ".prettierrc.toml", text = "", fg = "#89b4fa" }, 155 | { name = "build.zig.zon", text = "", fg = "#fab387" }, 156 | { name = ".ds_store", text = "", fg = "#45475a" }, 157 | { name = "PKGBUILD", text = "", fg = "#89b4fa" }, 158 | { name = ".prettierrc", text = "", fg = "#89b4fa" }, 159 | { name = ".bash_profile", text = "", fg = "#a6e3a1" }, 160 | { name = ".npmignore", text = "", fg = "#f38ba8" }, 161 | { name = ".mailmap", text = "󰊢", fg = "#fab387" }, 162 | { name = ".codespellrc", text = "󰓆", fg = "#a6e3a1" }, 163 | { name = "svelte.config.js", text = "", fg = "#fab387" }, 164 | { name = "eslint.config.ts", text = "", fg = "#585b70" }, 165 | { name = "config", text = "", fg = "#7f849c" }, 166 | { name = ".gitlab-ci.yml", text = "", fg = "#fab387" }, 167 | { name = ".gitconfig", text = "", fg = "#fab387" }, 168 | { name = "_gvimrc", text = "", fg = "#a6e3a1" }, 169 | { name = ".xinitrc", text = "", fg = "#fab387" }, 170 | { name = "checkhealth", text = "󰓙", fg = "#89b4fa" }, 171 | { name = "sxhkdrc", text = "", fg = "#313244" }, 172 | { name = ".bashrc", text = "", fg = "#a6e3a1" }, 173 | { name = "tailwind.config.mjs", text = "󱏿", fg = "#74c7ec" }, 174 | { name = "ext_typoscript_setup.txt", text = "", fg = "#fab387" }, 175 | { name = "commitlint.config.ts", text = "󰜘", fg = "#94e2d5" }, 176 | { name = "py.typed", text = "", fg = "#f9e2af" }, 177 | { name = ".nanorc", text = "", fg = "#313244" }, 178 | { name = "commit_editmsg", text = "", fg = "#fab387" }, 179 | { name = ".luaurc", text = "", fg = "#89b4fa" }, 180 | { name = "fp-lib-table", text = "", fg = "#f5e0dc" }, 181 | { name = ".editorconfig", text = "", fg = "#f5e0dc" }, 182 | { name = "justfile", text = "", fg = "#7f849c" }, 183 | { name = "kdeglobals", text = "", fg = "#89b4fa" }, 184 | { name = "license.md", text = "", fg = "#f9e2af" }, 185 | { name = ".clang-format", text = "", fg = "#7f849c" }, 186 | { name = "docker-compose.yaml", text = "󰡨", fg = "#89b4fa" }, 187 | { name = "copying", text = "", fg = "#f9e2af" }, 188 | { name = "go.mod", text = "", fg = "#74c7ec" }, 189 | { name = "lxqt.conf", text = "", fg = "#89b4fa" }, 190 | { name = "brewfile", text = "", fg = "#313244" }, 191 | { name = "gulpfile.coffee", text = "", fg = "#f38ba8" }, 192 | { name = ".dockerignore", text = "󰡨", fg = "#89b4fa" }, 193 | { name = ".settings.json", text = "", fg = "#6c7086" }, 194 | { name = "tailwind.config.js", text = "󱏿", fg = "#74c7ec" }, 195 | { name = ".clang-tidy", text = "", fg = "#7f849c" }, 196 | { name = ".gvimrc", text = "", fg = "#a6e3a1" }, 197 | { name = "nuxt.config.cjs", text = "󱄆", fg = "#a6e3a1" }, 198 | { name = "xsettingsd.conf", text = "", fg = "#fab387" }, 199 | { name = "nuxt.config.js", text = "󱄆", fg = "#a6e3a1" }, 200 | { name = "eslint.config.cjs", text = "", fg = "#585b70" }, 201 | { name = "sym-lib-table", text = "", fg = "#f5e0dc" }, 202 | { name = ".condarc", text = "", fg = "#a6e3a1" }, 203 | { name = "xmonad.hs", text = "", fg = "#f38ba8" }, 204 | { name = "tmux.conf", text = "", fg = "#a6e3a1" }, 205 | { name = "xmobarrc.hs", text = "", fg = "#f38ba8" }, 206 | { name = ".prettierrc.yaml", text = "", fg = "#89b4fa" }, 207 | { name = ".pre-commit-config.yaml", text = "󰛢", fg = "#fab387" }, 208 | { name = "i3blocks.conf", text = "", fg = "#f5e0dc" }, 209 | { name = "xorg.conf", text = "", fg = "#fab387" }, 210 | { name = ".zshenv", text = "", fg = "#a6e3a1" }, 211 | { name = "vlcrc", text = "󰕼", fg = "#fab387" }, 212 | { name = "license", text = "", fg = "#f9e2af" }, 213 | { name = "unlicense", text = "", fg = "#f9e2af" }, 214 | { name = "tmux.conf.local", text = "", fg = "#a6e3a1" }, 215 | { name = ".SRCINFO", text = "󰣇", fg = "#89b4fa" }, 216 | { name = "tailwind.config.ts", text = "󱏿", fg = "#74c7ec" }, 217 | { name = "security.md", text = "󰒃", fg = "#bac2de" }, 218 | { name = "security", text = "󰒃", fg = "#bac2de" }, 219 | { name = ".eslintrc", text = "", fg = "#585b70" }, 220 | { name = "gradle.properties", text = "", fg = "#585b70" }, 221 | { name = "code_of_conduct.md", text = "", fg = "#f38ba8" }, 222 | { name = "PrusaSlicerGcodeViewer.ini", text = "", fg = "#fab387" }, 223 | { name = "PrusaSlicer.ini", text = "", fg = "#fab387" }, 224 | { name = "procfile", text = "", fg = "#7f849c" }, 225 | { name = "mpv.conf", text = "", fg = "#1e1e2e" }, 226 | { name = ".prettierrc.json5", text = "", fg = "#89b4fa" }, 227 | { name = "i3status.conf", text = "", fg = "#f5e0dc" }, 228 | { name = "prettier.config.mjs", text = "", fg = "#89b4fa" }, 229 | { name = ".pylintrc", text = "", fg = "#7f849c" }, 230 | { name = "prettier.config.cjs", text = "", fg = "#89b4fa" }, 231 | { name = ".luacheckrc", text = "", fg = "#89b4fa" }, 232 | { name = "containerfile", text = "󰡨", fg = "#89b4fa" }, 233 | { name = "eslint.config.mjs", text = "", fg = "#585b70" }, 234 | { name = "gruntfile.js", text = "", fg = "#fab387" }, 235 | { name = "bun.lockb", text = "", fg = "#f5e0dc" }, 236 | { name = ".gitattributes", text = "", fg = "#fab387" }, 237 | { name = "gruntfile.ts", text = "", fg = "#fab387" }, 238 | { name = "pom.xml", text = "", fg = "#313244" }, 239 | { name = "favicon.ico", text = "", fg = "#f9e2af" }, 240 | { name = "package-lock.json", text = "", fg = "#313244" }, 241 | { name = "build", text = "", fg = "#a6e3a1" }, 242 | { name = "package.json", text = "", fg = "#f38ba8" }, 243 | { name = "nuxt.config.ts", text = "󱄆", fg = "#a6e3a1" }, 244 | { name = "nuxt.config.mjs", text = "󱄆", fg = "#a6e3a1" }, 245 | { name = "mix.lock", text = "", fg = "#7f849c" }, 246 | { name = "makefile", text = "", fg = "#7f849c" }, 247 | { name = "gulpfile.js", text = "", fg = "#f38ba8" }, 248 | { name = "lxde-rc.xml", text = "", fg = "#9399b2" }, 249 | { name = "kritarc", text = "", fg = "#cba6f7" }, 250 | { name = "gtkrc", text = "", fg = "#f5e0dc" }, 251 | { name = "ionic.config.json", text = "", fg = "#89b4fa" }, 252 | { name = ".prettierrc.mjs", text = "", fg = "#89b4fa" }, 253 | { name = ".prettierrc.yml", text = "", fg = "#89b4fa" }, 254 | { name = ".npmrc", text = "", fg = "#f38ba8" }, 255 | { name = "weston.ini", text = "", fg = "#f9e2af" }, 256 | { name = "gulpfile.babel.js", text = "", fg = "#f38ba8" }, 257 | { name = "i18n.config.ts", text = "󰗊", fg = "#7f849c" }, 258 | { name = "commitlint.config.js", text = "󰜘", fg = "#94e2d5" }, 259 | { name = ".gitmodules", text = "", fg = "#fab387" }, 260 | { name = "gradle-wrapper.properties", text = "", fg = "#585b70" }, 261 | { name = "hypridle.conf", text = "", fg = "#74c7ec" }, 262 | { name = "vercel.json", text = "▲", fg = "#f5e0dc" }, 263 | { name = "hyprlock.conf", text = "", fg = "#74c7ec" }, 264 | { name = "go.sum", text = "", fg = "#74c7ec" }, 265 | { name = "kdenlive-layoutsrc", text = "", fg = "#89b4fa" }, 266 | { name = "gruntfile.babel.js", text = "", fg = "#fab387" }, 267 | { name = "compose.yml", text = "󰡨", fg = "#89b4fa" }, 268 | { name = "i18n.config.js", text = "󰗊", fg = "#7f849c" }, 269 | { name = "readme.md", text = "󰂺", fg = "#f5e0dc" }, 270 | { name = "gradlew", text = "", fg = "#585b70" }, 271 | { name = "go.work", text = "", fg = "#74c7ec" }, 272 | { name = "gulpfile.ts", text = "", fg = "#f38ba8" }, 273 | { name = "gnumakefile", text = "", fg = "#7f849c" }, 274 | { name = "FreeCAD.conf", text = "", fg = "#f38ba8" }, 275 | { name = "compose.yaml", text = "󰡨", fg = "#89b4fa" }, 276 | { name = "eslint.config.js", text = "", fg = "#585b70" }, 277 | { name = "hyprland.conf", text = "", fg = "#74c7ec" }, 278 | { name = "docker-compose.yml", text = "󰡨", fg = "#89b4fa" }, 279 | { name = "groovy", text = "", fg = "#585b70" }, 280 | { name = "QtProject.conf", text = "", fg = "#a6e3a1" }, 281 | { name = "platformio.ini", text = "", fg = "#fab387" }, 282 | { name = "build.gradle", text = "", fg = "#585b70" }, 283 | { name = ".nuxtrc", text = "󱄆", fg = "#a6e3a1" }, 284 | { name = "_vimrc", text = "", fg = "#a6e3a1" }, 285 | { name = ".zprofile", text = "", fg = "#a6e3a1" }, 286 | { name = ".xsession", text = "", fg = "#fab387" }, 287 | { name = "prettier.config.js", text = "", fg = "#89b4fa" }, 288 | { name = ".babelrc", text = "", fg = "#f9e2af" }, 289 | { name = "workspace", text = "", fg = "#a6e3a1" }, 290 | { name = ".prettierrc.json", text = "", fg = "#89b4fa" }, 291 | { name = ".prettierrc.js", text = "", fg = "#89b4fa" }, 292 | { name = ".Xresources", text = "", fg = "#fab387" }, 293 | { name = ".gitignore", text = "", fg = "#fab387" }, 294 | { name = ".justfile", text = "", fg = "#7f849c" }, 295 | ] 296 | exts = [ 297 | { name = "otf", text = "", fg = "#f5e0dc" }, 298 | { name = "import", text = "", fg = "#f5e0dc" }, 299 | { name = "krz", text = "", fg = "#cba6f7" }, 300 | { name = "adb", text = "", fg = "#94e2d5" }, 301 | { name = "ttf", text = "", fg = "#f5e0dc" }, 302 | { name = "webpack", text = "󰜫", fg = "#74c7ec" }, 303 | { name = "dart", text = "", fg = "#585b70" }, 304 | { name = "vsh", text = "", fg = "#7f849c" }, 305 | { name = "doc", text = "󰈬", fg = "#585b70" }, 306 | { name = "zsh", text = "", fg = "#a6e3a1" }, 307 | { name = "ex", text = "", fg = "#7f849c" }, 308 | { name = "hx", text = "", fg = "#fab387" }, 309 | { name = "fodt", text = "", fg = "#74c7ec" }, 310 | { name = "mojo", text = "", fg = "#fab387" }, 311 | { name = "templ", text = "", fg = "#f9e2af" }, 312 | { name = "nix", text = "", fg = "#74c7ec" }, 313 | { name = "cshtml", text = "󱦗", fg = "#585b70" }, 314 | { name = "fish", text = "", fg = "#585b70" }, 315 | { name = "ply", text = "󰆧", fg = "#7f849c" }, 316 | { name = "sldprt", text = "󰻫", fg = "#a6e3a1" }, 317 | { name = "gemspec", text = "", fg = "#313244" }, 318 | { name = "mjs", text = "", fg = "#f9e2af" }, 319 | { name = "csh", text = "", fg = "#585b70" }, 320 | { name = "cmake", text = "", fg = "#cdd6f4" }, 321 | { name = "fodp", text = "", fg = "#fab387" }, 322 | { name = "vi", text = "", fg = "#f9e2af" }, 323 | { name = "msf", text = "", fg = "#89b4fa" }, 324 | { name = "blp", text = "󰺾", fg = "#89b4fa" }, 325 | { name = "less", text = "", fg = "#45475a" }, 326 | { name = "sh", text = "", fg = "#585b70" }, 327 | { name = "odg", text = "", fg = "#f9e2af" }, 328 | { name = "mint", text = "󰌪", fg = "#a6e3a1" }, 329 | { name = "dll", text = "", fg = "#11111b" }, 330 | { name = "odf", text = "", fg = "#f38ba8" }, 331 | { name = "sqlite3", text = "", fg = "#f5e0dc" }, 332 | { name = "Dockerfile", text = "󰡨", fg = "#89b4fa" }, 333 | { name = "ksh", text = "", fg = "#585b70" }, 334 | { name = "rmd", text = "", fg = "#74c7ec" }, 335 | { name = "wv", text = "", fg = "#74c7ec" }, 336 | { name = "xml", text = "󰗀", fg = "#fab387" }, 337 | { name = "markdown", text = "", fg = "#cdd6f4" }, 338 | { name = "qml", text = "", fg = "#a6e3a1" }, 339 | { name = "3gp", text = "", fg = "#fab387" }, 340 | { name = "pxi", text = "", fg = "#89b4fa" }, 341 | { name = "flac", text = "", fg = "#6c7086" }, 342 | { name = "gpr", text = "", fg = "#cba6f7" }, 343 | { name = "huff", text = "󰡘", fg = "#585b70" }, 344 | { name = "json", text = "", fg = "#f9e2af" }, 345 | { name = "gv", text = "󱁉", fg = "#585b70" }, 346 | { name = "bmp", text = "", fg = "#7f849c" }, 347 | { name = "lock", text = "", fg = "#bac2de" }, 348 | { name = "sha384", text = "󰕥", fg = "#7f849c" }, 349 | { name = "cobol", text = "⚙", fg = "#585b70" }, 350 | { name = "cob", text = "⚙", fg = "#585b70" }, 351 | { name = "java", text = "", fg = "#f38ba8" }, 352 | { name = "cjs", text = "", fg = "#f9e2af" }, 353 | { name = "qm", text = "", fg = "#74c7ec" }, 354 | { name = "ebuild", text = "", fg = "#45475a" }, 355 | { name = "mustache", text = "", fg = "#fab387" }, 356 | { name = "terminal", text = "", fg = "#a6e3a1" }, 357 | { name = "ejs", text = "", fg = "#f9e2af" }, 358 | { name = "brep", text = "󰻫", fg = "#a6e3a1" }, 359 | { name = "rar", text = "", fg = "#fab387" }, 360 | { name = "gradle", text = "", fg = "#585b70" }, 361 | { name = "gnumakefile", text = "", fg = "#7f849c" }, 362 | { name = "applescript", text = "", fg = "#7f849c" }, 363 | { name = "elm", text = "", fg = "#74c7ec" }, 364 | { name = "ebook", text = "", fg = "#fab387" }, 365 | { name = "kra", text = "", fg = "#cba6f7" }, 366 | { name = "tf", text = "", fg = "#585b70" }, 367 | { name = "xls", text = "󰈛", fg = "#585b70" }, 368 | { name = "fnl", text = "", fg = "#f9e2af" }, 369 | { name = "kdbx", text = "", fg = "#a6e3a1" }, 370 | { name = "kicad_pcb", text = "", fg = "#f5e0dc" }, 371 | { name = "cfg", text = "", fg = "#7f849c" }, 372 | { name = "ape", text = "", fg = "#74c7ec" }, 373 | { name = "org", text = "", fg = "#94e2d5" }, 374 | { name = "yml", text = "", fg = "#7f849c" }, 375 | { name = "swift", text = "", fg = "#fab387" }, 376 | { name = "eln", text = "", fg = "#7f849c" }, 377 | { name = "sol", text = "", fg = "#74c7ec" }, 378 | { name = "awk", text = "", fg = "#585b70" }, 379 | { name = "7z", text = "", fg = "#fab387" }, 380 | { name = "apl", text = "⍝", fg = "#fab387" }, 381 | { name = "epp", text = "", fg = "#fab387" }, 382 | { name = "app", text = "", fg = "#45475a" }, 383 | { name = "dot", text = "󱁉", fg = "#585b70" }, 384 | { name = "kpp", text = "", fg = "#cba6f7" }, 385 | { name = "eot", text = "", fg = "#f5e0dc" }, 386 | { name = "hpp", text = "", fg = "#7f849c" }, 387 | { name = "spec.tsx", text = "", fg = "#585b70" }, 388 | { name = "hurl", text = "", fg = "#f38ba8" }, 389 | { name = "cxxm", text = "", fg = "#74c7ec" }, 390 | { name = "c", text = "", fg = "#89b4fa" }, 391 | { name = "fcmacro", text = "", fg = "#f38ba8" }, 392 | { name = "sass", text = "", fg = "#f38ba8" }, 393 | { name = "yaml", text = "", fg = "#7f849c" }, 394 | { name = "xz", text = "", fg = "#fab387" }, 395 | { name = "material", text = "󰔉", fg = "#f38ba8" }, 396 | { name = "json5", text = "", fg = "#f9e2af" }, 397 | { name = "signature", text = "λ", fg = "#fab387" }, 398 | { name = "3mf", text = "󰆧", fg = "#7f849c" }, 399 | { name = "jpg", text = "", fg = "#7f849c" }, 400 | { name = "xpi", text = "", fg = "#fab387" }, 401 | { name = "fcmat", text = "", fg = "#f38ba8" }, 402 | { name = "pot", text = "", fg = "#74c7ec" }, 403 | { name = "bin", text = "", fg = "#45475a" }, 404 | { name = "xlsx", text = "󰈛", fg = "#585b70" }, 405 | { name = "aac", text = "", fg = "#74c7ec" }, 406 | { name = "kicad_sym", text = "", fg = "#f5e0dc" }, 407 | { name = "xcstrings", text = "", fg = "#74c7ec" }, 408 | { name = "lff", text = "", fg = "#f5e0dc" }, 409 | { name = "xcf", text = "", fg = "#585b70" }, 410 | { name = "azcli", text = "", fg = "#6c7086" }, 411 | { name = "license", text = "", fg = "#f9e2af" }, 412 | { name = "jsonc", text = "", fg = "#f9e2af" }, 413 | { name = "xaml", text = "󰙳", fg = "#585b70" }, 414 | { name = "md5", text = "󰕥", fg = "#7f849c" }, 415 | { name = "xm", text = "", fg = "#74c7ec" }, 416 | { name = "sln", text = "", fg = "#6c7086" }, 417 | { name = "jl", text = "", fg = "#7f849c" }, 418 | { name = "ml", text = "", fg = "#fab387" }, 419 | { name = "http", text = "", fg = "#89b4fa" }, 420 | { name = "x", text = "", fg = "#89b4fa" }, 421 | { name = "wvc", text = "", fg = "#74c7ec" }, 422 | { name = "wrz", text = "󰆧", fg = "#7f849c" }, 423 | { name = "csproj", text = "󰪮", fg = "#585b70" }, 424 | { name = "wrl", text = "󰆧", fg = "#7f849c" }, 425 | { name = "wma", text = "", fg = "#74c7ec" }, 426 | { name = "woff2", text = "", fg = "#f5e0dc" }, 427 | { name = "woff", text = "", fg = "#f5e0dc" }, 428 | { name = "tscn", text = "", fg = "#7f849c" }, 429 | { name = "webmanifest", text = "", fg = "#f9e2af" }, 430 | { name = "webm", text = "", fg = "#fab387" }, 431 | { name = "fcbak", text = "", fg = "#f38ba8" }, 432 | { name = "log", text = "󰌱", fg = "#cdd6f4" }, 433 | { name = "wav", text = "", fg = "#74c7ec" }, 434 | { name = "wasm", text = "", fg = "#585b70" }, 435 | { name = "styl", text = "", fg = "#a6e3a1" }, 436 | { name = "gif", text = "", fg = "#7f849c" }, 437 | { name = "resi", text = "", fg = "#f38ba8" }, 438 | { name = "aiff", text = "", fg = "#74c7ec" }, 439 | { name = "sha256", text = "󰕥", fg = "#7f849c" }, 440 | { name = "igs", text = "󰻫", fg = "#a6e3a1" }, 441 | { name = "vsix", text = "", fg = "#6c7086" }, 442 | { name = "vim", text = "", fg = "#a6e3a1" }, 443 | { name = "diff", text = "", fg = "#45475a" }, 444 | { name = "drl", text = "", fg = "#eba0ac" }, 445 | { name = "erl", text = "", fg = "#f38ba8" }, 446 | { name = "vhdl", text = "󰍛", fg = "#a6e3a1" }, 447 | { name = "🔥", text = "", fg = "#fab387" }, 448 | { name = "hrl", text = "", fg = "#f38ba8" }, 449 | { name = "fsi", text = "", fg = "#74c7ec" }, 450 | { name = "mm", text = "", fg = "#74c7ec" }, 451 | { name = "bz", text = "", fg = "#fab387" }, 452 | { name = "vh", text = "󰍛", fg = "#a6e3a1" }, 453 | { name = "kdb", text = "", fg = "#a6e3a1" }, 454 | { name = "gz", text = "", fg = "#fab387" }, 455 | { name = "cpp", text = "", fg = "#74c7ec" }, 456 | { name = "ui", text = "", fg = "#6c7086" }, 457 | { name = "txt", text = "󰈙", fg = "#a6e3a1" }, 458 | { name = "spec.ts", text = "", fg = "#74c7ec" }, 459 | { name = "ccm", text = "", fg = "#f38ba8" }, 460 | { name = "typoscript", text = "", fg = "#fab387" }, 461 | { name = "typ", text = "", fg = "#89dceb" }, 462 | { name = "txz", text = "", fg = "#fab387" }, 463 | { name = "test.ts", text = "", fg = "#74c7ec" }, 464 | { name = "tsx", text = "", fg = "#585b70" }, 465 | { name = "mk", text = "", fg = "#7f849c" }, 466 | { name = "webp", text = "", fg = "#7f849c" }, 467 | { name = "opus", text = "", fg = "#6c7086" }, 468 | { name = "bicep", text = "", fg = "#74c7ec" }, 469 | { name = "ts", text = "", fg = "#74c7ec" }, 470 | { name = "tres", text = "", fg = "#7f849c" }, 471 | { name = "torrent", text = "", fg = "#94e2d5" }, 472 | { name = "cxx", text = "", fg = "#74c7ec" }, 473 | { name = "iso", text = "", fg = "#f2cdcd" }, 474 | { name = "ixx", text = "", fg = "#74c7ec" }, 475 | { name = "hxx", text = "", fg = "#7f849c" }, 476 | { name = "gql", text = "", fg = "#f38ba8" }, 477 | { name = "tmux", text = "", fg = "#a6e3a1" }, 478 | { name = "ini", text = "", fg = "#7f849c" }, 479 | { name = "m3u8", text = "󰲹", fg = "#f38ba8" }, 480 | { name = "image", text = "", fg = "#f2cdcd" }, 481 | { name = "tfvars", text = "", fg = "#585b70" }, 482 | { name = "tex", text = "", fg = "#45475a" }, 483 | { name = "cbl", text = "⚙", fg = "#585b70" }, 484 | { name = "flc", text = "", fg = "#f5e0dc" }, 485 | { name = "elc", text = "", fg = "#7f849c" }, 486 | { name = "test.tsx", text = "", fg = "#585b70" }, 487 | { name = "twig", text = "", fg = "#a6e3a1" }, 488 | { name = "sql", text = "", fg = "#f5e0dc" }, 489 | { name = "test.jsx", text = "", fg = "#74c7ec" }, 490 | { name = "htm", text = "", fg = "#fab387" }, 491 | { name = "gcode", text = "󰐫", fg = "#6c7086" }, 492 | { name = "test.js", text = "", fg = "#f9e2af" }, 493 | { name = "ino", text = "", fg = "#74c7ec" }, 494 | { name = "tcl", text = "󰛓", fg = "#585b70" }, 495 | { name = "cljs", text = "", fg = "#74c7ec" }, 496 | { name = "tsconfig", text = "", fg = "#fab387" }, 497 | { name = "img", text = "", fg = "#f2cdcd" }, 498 | { name = "t", text = "", fg = "#74c7ec" }, 499 | { name = "fcstd1", text = "", fg = "#f38ba8" }, 500 | { name = "out", text = "", fg = "#45475a" }, 501 | { name = "jsx", text = "", fg = "#74c7ec" }, 502 | { name = "bash", text = "", fg = "#a6e3a1" }, 503 | { name = "edn", text = "", fg = "#74c7ec" }, 504 | { name = "rss", text = "", fg = "#fab387" }, 505 | { name = "flf", text = "", fg = "#f5e0dc" }, 506 | { name = "cache", text = "", fg = "#f5e0dc" }, 507 | { name = "sbt", text = "", fg = "#f38ba8" }, 508 | { name = "cppm", text = "", fg = "#74c7ec" }, 509 | { name = "svelte", text = "", fg = "#fab387" }, 510 | { name = "mo", text = "∞", fg = "#7f849c" }, 511 | { name = "sv", text = "󰍛", fg = "#a6e3a1" }, 512 | { name = "ko", text = "", fg = "#f5e0dc" }, 513 | { name = "suo", text = "", fg = "#6c7086" }, 514 | { name = "sldasm", text = "󰻫", fg = "#a6e3a1" }, 515 | { name = "icalendar", text = "", fg = "#313244" }, 516 | { name = "go", text = "", fg = "#74c7ec" }, 517 | { name = "sublime", text = "", fg = "#fab387" }, 518 | { name = "stl", text = "󰆧", fg = "#7f849c" }, 519 | { name = "mobi", text = "", fg = "#fab387" }, 520 | { name = "graphql", text = "", fg = "#f38ba8" }, 521 | { name = "m3u", text = "󰲹", fg = "#f38ba8" }, 522 | { name = "cpy", text = "⚙", fg = "#585b70" }, 523 | { name = "kdenlive", text = "", fg = "#89b4fa" }, 524 | { name = "pyo", text = "", fg = "#f9e2af" }, 525 | { name = "po", text = "", fg = "#74c7ec" }, 526 | { name = "scala", text = "", fg = "#f38ba8" }, 527 | { name = "exs", text = "", fg = "#7f849c" }, 528 | { name = "odp", text = "", fg = "#fab387" }, 529 | { name = "dump", text = "", fg = "#f5e0dc" }, 530 | { name = "stp", text = "󰻫", fg = "#a6e3a1" }, 531 | { name = "step", text = "󰻫", fg = "#a6e3a1" }, 532 | { name = "ste", text = "󰻫", fg = "#a6e3a1" }, 533 | { name = "aif", text = "", fg = "#74c7ec" }, 534 | { name = "strings", text = "", fg = "#74c7ec" }, 535 | { name = "cp", text = "", fg = "#74c7ec" }, 536 | { name = "fsscript", text = "", fg = "#74c7ec" }, 537 | { name = "mli", text = "", fg = "#fab387" }, 538 | { name = "bak", text = "󰁯", fg = "#7f849c" }, 539 | { name = "ssa", text = "󰨖", fg = "#f9e2af" }, 540 | { name = "toml", text = "", fg = "#585b70" }, 541 | { name = "makefile", text = "", fg = "#7f849c" }, 542 | { name = "php", text = "", fg = "#7f849c" }, 543 | { name = "zst", text = "", fg = "#fab387" }, 544 | { name = "spec.jsx", text = "", fg = "#74c7ec" }, 545 | { name = "kbx", text = "󰯄", fg = "#6c7086" }, 546 | { name = "fbx", text = "󰆧", fg = "#7f849c" }, 547 | { name = "blend", text = "󰂫", fg = "#fab387" }, 548 | { name = "ifc", text = "󰻫", fg = "#a6e3a1" }, 549 | { name = "spec.js", text = "", fg = "#f9e2af" }, 550 | { name = "so", text = "", fg = "#f5e0dc" }, 551 | { name = "desktop", text = "", fg = "#45475a" }, 552 | { name = "sml", text = "λ", fg = "#fab387" }, 553 | { name = "slvs", text = "󰻫", fg = "#a6e3a1" }, 554 | { name = "pp", text = "", fg = "#fab387" }, 555 | { name = "ps1", text = "󰨊", fg = "#6c7086" }, 556 | { name = "dropbox", text = "", fg = "#6c7086" }, 557 | { name = "kicad_mod", text = "", fg = "#f5e0dc" }, 558 | { name = "bat", text = "", fg = "#a6e3a1" }, 559 | { name = "slim", text = "", fg = "#fab387" }, 560 | { name = "skp", text = "󰻫", fg = "#a6e3a1" }, 561 | { name = "css", text = "", fg = "#89b4fa" }, 562 | { name = "xul", text = "", fg = "#fab387" }, 563 | { name = "ige", text = "󰻫", fg = "#a6e3a1" }, 564 | { name = "glb", text = "", fg = "#fab387" }, 565 | { name = "ppt", text = "󰈧", fg = "#f38ba8" }, 566 | { name = "sha512", text = "󰕥", fg = "#7f849c" }, 567 | { name = "ics", text = "", fg = "#313244" }, 568 | { name = "mdx", text = "", fg = "#74c7ec" }, 569 | { name = "sha1", text = "󰕥", fg = "#7f849c" }, 570 | { name = "f3d", text = "󰻫", fg = "#a6e3a1" }, 571 | { name = "ass", text = "󰨖", fg = "#f9e2af" }, 572 | { name = "godot", text = "", fg = "#7f849c" }, 573 | { name = "ifb", text = "", fg = "#313244" }, 574 | { name = "cson", text = "", fg = "#f9e2af" }, 575 | { name = "lib", text = "", fg = "#11111b" }, 576 | { name = "luac", text = "", fg = "#74c7ec" }, 577 | { name = "heex", text = "", fg = "#7f849c" }, 578 | { name = "scm", text = "󰘧", fg = "#f5e0dc" }, 579 | { name = "psd1", text = "󰨊", fg = "#7f849c" }, 580 | { name = "sc", text = "", fg = "#f38ba8" }, 581 | { name = "scad", text = "", fg = "#f9e2af" }, 582 | { name = "kts", text = "", fg = "#6c7086" }, 583 | { name = "svh", text = "󰍛", fg = "#a6e3a1" }, 584 | { name = "mts", text = "", fg = "#74c7ec" }, 585 | { name = "nfo", text = "", fg = "#f9e2af" }, 586 | { name = "pck", text = "", fg = "#7f849c" }, 587 | { name = "rproj", text = "󰗆", fg = "#a6e3a1" }, 588 | { name = "rlib", text = "", fg = "#fab387" }, 589 | { name = "cljd", text = "", fg = "#74c7ec" }, 590 | { name = "ods", text = "", fg = "#a6e3a1" }, 591 | { name = "res", text = "", fg = "#f38ba8" }, 592 | { name = "apk", text = "", fg = "#a6e3a1" }, 593 | { name = "haml", text = "", fg = "#f5e0dc" }, 594 | { name = "d.ts", text = "", fg = "#fab387" }, 595 | { name = "razor", text = "󱦘", fg = "#585b70" }, 596 | { name = "rake", text = "", fg = "#313244" }, 597 | { name = "patch", text = "", fg = "#45475a" }, 598 | { name = "cuh", text = "", fg = "#7f849c" }, 599 | { name = "d", text = "", fg = "#f38ba8" }, 600 | { name = "query", text = "", fg = "#a6e3a1" }, 601 | { name = "psb", text = "", fg = "#74c7ec" }, 602 | { name = "nu", text = ">", fg = "#a6e3a1" }, 603 | { name = "mov", text = "", fg = "#fab387" }, 604 | { name = "lrc", text = "󰨖", fg = "#f9e2af" }, 605 | { name = "pyx", text = "", fg = "#89b4fa" }, 606 | { name = "pyw", text = "", fg = "#89b4fa" }, 607 | { name = "cu", text = "", fg = "#a6e3a1" }, 608 | { name = "bazel", text = "", fg = "#a6e3a1" }, 609 | { name = "obj", text = "󰆧", fg = "#7f849c" }, 610 | { name = "pyi", text = "", fg = "#f9e2af" }, 611 | { name = "pyd", text = "", fg = "#f9e2af" }, 612 | { name = "exe", text = "", fg = "#45475a" }, 613 | { name = "pyc", text = "", fg = "#f9e2af" }, 614 | { name = "fctb", text = "", fg = "#f38ba8" }, 615 | { name = "part", text = "", fg = "#94e2d5" }, 616 | { name = "blade.php", text = "", fg = "#f38ba8" }, 617 | { name = "git", text = "", fg = "#fab387" }, 618 | { name = "psd", text = "", fg = "#74c7ec" }, 619 | { name = "qss", text = "", fg = "#a6e3a1" }, 620 | { name = "csv", text = "", fg = "#a6e3a1" }, 621 | { name = "psm1", text = "󰨊", fg = "#7f849c" }, 622 | { name = "dconf", text = "", fg = "#f5e0dc" }, 623 | { name = "config.ru", text = "", fg = "#313244" }, 624 | { name = "prisma", text = "", fg = "#6c7086" }, 625 | { name = "conf", text = "", fg = "#7f849c" }, 626 | { name = "clj", text = "", fg = "#a6e3a1" }, 627 | { name = "o", text = "", fg = "#45475a" }, 628 | { name = "mp4", text = "", fg = "#fab387" }, 629 | { name = "cc", text = "", fg = "#f38ba8" }, 630 | { name = "kicad_prl", text = "", fg = "#f5e0dc" }, 631 | { name = "bz3", text = "", fg = "#fab387" }, 632 | { name = "asc", text = "󰦝", fg = "#6c7086" }, 633 | { name = "png", text = "", fg = "#7f849c" }, 634 | { name = "android", text = "", fg = "#a6e3a1" }, 635 | { name = "pm", text = "", fg = "#74c7ec" }, 636 | { name = "h", text = "", fg = "#7f849c" }, 637 | { name = "pls", text = "󰲹", fg = "#f38ba8" }, 638 | { name = "ipynb", text = "", fg = "#fab387" }, 639 | { name = "pl", text = "", fg = "#74c7ec" }, 640 | { name = "ads", text = "", fg = "#f5e0dc" }, 641 | { name = "sqlite", text = "", fg = "#f5e0dc" }, 642 | { name = "pdf", text = "", fg = "#585b70" }, 643 | { name = "pcm", text = "", fg = "#6c7086" }, 644 | { name = "ico", text = "", fg = "#f9e2af" }, 645 | { name = "a", text = "", fg = "#f5e0dc" }, 646 | { name = "R", text = "󰟔", fg = "#6c7086" }, 647 | { name = "ogg", text = "", fg = "#6c7086" }, 648 | { name = "pxd", text = "", fg = "#89b4fa" }, 649 | { name = "kdenlivetitle", text = "", fg = "#89b4fa" }, 650 | { name = "jxl", text = "", fg = "#7f849c" }, 651 | { name = "nswag", text = "", fg = "#a6e3a1" }, 652 | { name = "nim", text = "", fg = "#f9e2af" }, 653 | { name = "bqn", text = "⎉", fg = "#6c7086" }, 654 | { name = "cts", text = "", fg = "#74c7ec" }, 655 | { name = "fcparam", text = "", fg = "#f38ba8" }, 656 | { name = "rs", text = "", fg = "#fab387" }, 657 | { name = "mpp", text = "", fg = "#74c7ec" }, 658 | { name = "fdmdownload", text = "", fg = "#94e2d5" }, 659 | { name = "pptx", text = "󰈧", fg = "#f38ba8" }, 660 | { name = "jpeg", text = "", fg = "#7f849c" }, 661 | { name = "bib", text = "󱉟", fg = "#f9e2af" }, 662 | { name = "vhd", text = "󰍛", fg = "#a6e3a1" }, 663 | { name = "m", text = "", fg = "#89b4fa" }, 664 | { name = "js", text = "", fg = "#f9e2af" }, 665 | { name = "eex", text = "", fg = "#7f849c" }, 666 | { name = "tbc", text = "󰛓", fg = "#585b70" }, 667 | { name = "astro", text = "", fg = "#f38ba8" }, 668 | { name = "sha224", text = "󰕥", fg = "#7f849c" }, 669 | { name = "xcplayground", text = "", fg = "#fab387" }, 670 | { name = "el", text = "", fg = "#7f849c" }, 671 | { name = "m4v", text = "", fg = "#fab387" }, 672 | { name = "m4a", text = "", fg = "#74c7ec" }, 673 | { name = "cs", text = "󰌛", fg = "#585b70" }, 674 | { name = "hs", text = "", fg = "#7f849c" }, 675 | { name = "tgz", text = "", fg = "#fab387" }, 676 | { name = "fs", text = "", fg = "#74c7ec" }, 677 | { name = "luau", text = "", fg = "#89b4fa" }, 678 | { name = "dxf", text = "󰻫", fg = "#a6e3a1" }, 679 | { name = "download", text = "", fg = "#94e2d5" }, 680 | { name = "cast", text = "", fg = "#fab387" }, 681 | { name = "qrc", text = "", fg = "#a6e3a1" }, 682 | { name = "lua", text = "", fg = "#74c7ec" }, 683 | { name = "lhs", text = "", fg = "#7f849c" }, 684 | { name = "md", text = "", fg = "#cdd6f4" }, 685 | { name = "leex", text = "", fg = "#7f849c" }, 686 | { name = "ai", text = "", fg = "#f9e2af" }, 687 | { name = "lck", text = "", fg = "#bac2de" }, 688 | { name = "kt", text = "", fg = "#6c7086" }, 689 | { name = "bicepparam", text = "", fg = "#7f849c" }, 690 | { name = "hex", text = "", fg = "#6c7086" }, 691 | { name = "zig", text = "", fg = "#fab387" }, 692 | { name = "bzl", text = "", fg = "#a6e3a1" }, 693 | { name = "cljc", text = "", fg = "#a6e3a1" }, 694 | { name = "kicad_dru", text = "", fg = "#f5e0dc" }, 695 | { name = "fctl", text = "", fg = "#f38ba8" }, 696 | { name = "f#", text = "", fg = "#74c7ec" }, 697 | { name = "odt", text = "", fg = "#74c7ec" }, 698 | { name = "conda", text = "", fg = "#a6e3a1" }, 699 | { name = "vala", text = "", fg = "#585b70" }, 700 | { name = "erb", text = "", fg = "#313244" }, 701 | { name = "mp3", text = "", fg = "#74c7ec" }, 702 | { name = "bz2", text = "", fg = "#fab387" }, 703 | { name = "coffee", text = "", fg = "#f9e2af" }, 704 | { name = "cr", text = "", fg = "#f5e0dc" }, 705 | { name = "f90", text = "󱈚", fg = "#585b70" }, 706 | { name = "jwmrc", text = "", fg = "#6c7086" }, 707 | { name = "c++", text = "", fg = "#f38ba8" }, 708 | { name = "fcscript", text = "", fg = "#f38ba8" }, 709 | { name = "fods", text = "", fg = "#a6e3a1" }, 710 | { name = "cue", text = "󰲹", fg = "#f38ba8" }, 711 | { name = "srt", text = "󰨖", fg = "#f9e2af" }, 712 | { name = "info", text = "", fg = "#f9e2af" }, 713 | { name = "hh", text = "", fg = "#7f849c" }, 714 | { name = "sig", text = "λ", fg = "#fab387" }, 715 | { name = "html", text = "", fg = "#fab387" }, 716 | { name = "iges", text = "󰻫", fg = "#a6e3a1" }, 717 | { name = "kicad_wks", text = "", fg = "#f5e0dc" }, 718 | { name = "hbs", text = "", fg = "#fab387" }, 719 | { name = "fcstd", text = "", fg = "#f38ba8" }, 720 | { name = "gresource", text = "", fg = "#f5e0dc" }, 721 | { name = "sub", text = "󰨖", fg = "#f9e2af" }, 722 | { name = "ical", text = "", fg = "#313244" }, 723 | { name = "crdownload", text = "", fg = "#94e2d5" }, 724 | { name = "pub", text = "󰷖", fg = "#f9e2af" }, 725 | { name = "vue", text = "", fg = "#a6e3a1" }, 726 | { name = "gd", text = "", fg = "#7f849c" }, 727 | { name = "fsx", text = "", fg = "#74c7ec" }, 728 | { name = "mkv", text = "", fg = "#fab387" }, 729 | { name = "py", text = "", fg = "#f9e2af" }, 730 | { name = "kicad_sch", text = "", fg = "#f5e0dc" }, 731 | { name = "epub", text = "", fg = "#fab387" }, 732 | { name = "env", text = "", fg = "#f9e2af" }, 733 | { name = "magnet", text = "", fg = "#45475a" }, 734 | { name = "elf", text = "", fg = "#45475a" }, 735 | { name = "fodg", text = "", fg = "#f9e2af" }, 736 | { name = "svg", text = "󰜡", fg = "#fab387" }, 737 | { name = "dwg", text = "󰻫", fg = "#a6e3a1" }, 738 | { name = "docx", text = "󰈬", fg = "#585b70" }, 739 | { name = "pro", text = "", fg = "#f9e2af" }, 740 | { name = "db", text = "", fg = "#f5e0dc" }, 741 | { name = "rb", text = "", fg = "#313244" }, 742 | { name = "r", text = "󰟔", fg = "#6c7086" }, 743 | { name = "scss", text = "", fg = "#f38ba8" }, 744 | { name = "cow", text = "󰆚", fg = "#fab387" }, 745 | { name = "gleam", text = "", fg = "#f5c2e7" }, 746 | { name = "v", text = "󰍛", fg = "#a6e3a1" }, 747 | { name = "kicad_pro", text = "", fg = "#f5e0dc" }, 748 | { name = "liquid", text = "", fg = "#a6e3a1" }, 749 | { name = "zip", text = "", fg = "#fab387" }, 750 | ] 751 | --------------------------------------------------------------------------------