├── 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 | 
6 | 
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 |

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 |

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 | 
17 | *Blank Workspace*
18 |
19 |
20 | 
21 | *Fastefetch, Kitty and Firefox*
22 |
23 |
24 | 
25 | *Neovim Config*
26 |
27 |
28 | 
29 | *Yazi and mpv*
30 |
31 |
32 | 
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 |
--------------------------------------------------------------------------------