refactor config

This commit is contained in:
Alexander Navarro 2023-02-13 01:53:52 -03:00
commit 4f0e213f4a
155 changed files with 13983 additions and 0 deletions

6
.gitignore vendored Normal file
View file

@ -0,0 +1,6 @@
# Config
**/packer_compiled.lua
config/spicetify/Extracted
config/vifm/Trash
config/vifm/vifminfo.json
config/lazygit/state.yml

1
config/Gnome Extensions Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,3 @@
return {
colorscheme = "catppuccin",
}

View file

@ -0,0 +1,3 @@
return {
"rust_analyzer",
}

View file

@ -0,0 +1,123 @@
return {
n = {
["<C-t>"] = { "<cmd>ToggleTerm<cr>", desc = "Toggle terminal" },
["<leader>fn"] = false,
["<leader>fo"] = false,
["<leader>fh"] = false,
["<leader>fb"] = false,
["<F10>"] = false,
["<F11>"] = false,
["<F12>"] = false,
["<F1>"] = {
function()
require("dap").terminate()
end,
desc = "Debugger: Stop",
}, -- S-F1
["<F2>"] = {
function()
require("dap").restart_frame()
end,
desc = "Debugger: Restart",
},
["<F3>"] = {
function()
require("dap").step_out()
end,
desc = "Debugger: Step Out",
},
["<F4>"] = {
function()
require("dap").step_into()
end,
desc = "Debugger: Step Into",
},
["<F5>"] = {
function()
require("dap").step_over()
end,
desc = "Debugger: Step Over",
},
["<F6>"] = {
function()
require("dap").continue()
end,
desc = "Debugger: Start",
},
["<F7>"] = {
function()
require("dap").toggle_breakpoint()
end,
desc = "Debugger: Toggle Breakpoint",
},
["<leader>fp"] = {
function()
require("telescope").extensions.projects.projects()
end,
desc = "Search project",
},
["<leader>lj"] = {
function()
vim.diagnostic.goto_next()
end,
desc = "Go to next diagnostic",
},
["<leader>lk"] = {
function()
vim.diagnostic.goto_prev()
end,
desc = "Go to prev diagnostic",
},
["<leader>Ch"] = {
function()
require("nvim-comment-frame").add_comment()
end,
desc = "Add a comment frame",
},
["<leader>CH"] = {
function()
require("nvim-comment-frame").add_multiline_comment()
end,
desc = "Add a multiline comment frame",
},
["<leader>Cd"] = {
function()
require("neogen").generate()
end,
desc = "Generate comment docstring",
},
["<leader>ft"] = {
"<cmd>TodoTrouble<CR>",
desc = "Search TODOS",
},
["<leader>r"] = {
":s/",
desc = "Search and replace",
},
["<leader>R"] = {
":%s/",
desc = "Search and replace in whole file",
},
},
v = {
["<leader>r"] = {
":s/",
desc = "Search and replace",
},
["p"] = {
"pgvy",
desc = "Paste and re yank text",
},
},
t = {
["<C-t>"] = { "<cmd>ToggleTerm<cr>", desc = "Toggle terminal" },
},
}

View file

@ -0,0 +1,22 @@
return {
firefox = function(source_name)
local dap = require("dap")
dap.adapters.firefox = {
type = "executable",
command = "node",
args = { os.getenv("HOME") .. "/.local/share/nvim/mason/bin/firefox-debug-adapter" },
}
dap.configurations.javascriptreact = {
{
name = "Debug with Firefox",
type = "firefox",
request = "launch",
reAttach = true,
url = "http://localhost:3000",
webRoot = "${workspaceFolder}",
firefoxExecutable = "/usr/bin/firefox-developer-edition",
},
}
end,
}

View file

@ -0,0 +1,11 @@
return {
g = {
catppuccin_flavour = "macchiato",
},
opt = {
number = true,
relativenumber = true,
-- spelllang = "en_us,es_cl",
},
}

View file

@ -0,0 +1,31 @@
local alpha_button = astronvim.alpha_button
return {
layout = {
{ type = "padding", val = vim.fn.max({ 2, vim.fn.floor(vim.fn.winheight(0) * 0.2) }) },
{
type = "text",
val = astronvim.user_plugin_opts("header", {
" ████ ███ █████ █████ ",
" ░░███ ░░░ ░░███ ░░███ ",
" ██████ ░███ ██████ ████ ███████ ░███ █████",
" ░░░░░███ ░███ ███░░███░░███ ███░░███ ░███░░███ ",
" ███████ ░███ ░███████ ░███ ░███ ░███ ░██████░ ",
" ███░░███ ░███ ░███░░░ ░███ ░███ ░███ ░███░░███ ",
"░░████████ █████░░██████ █████░░████████ ████ █████",
" ░░░░░░░░ ░░░░░ ░░░░░░ ░░░░░ ░░░░░░░░ ░░░░ ░░░░░ ",
}, false),
opts = { position = "center", hl = "DashboardHeader" },
},
{ type = "padding", val = 5 },
{
type = "group",
val = {
alpha_button("LDR f p", " Recent Project "),
alpha_button("LDR f f", " Find File "),
alpha_button("LDR o", "פּ File Explorer "),
alpha_button("LDR m a", " Bookmarks "),
},
opts = { spacing = 1 },
},
},
}

View file

@ -0,0 +1,72 @@
local catppuccin = require("catppuccin")
-- configure it
catppuccin.setup({
transparent_background = true,
term_colors = false,
styles = {
comments = { "italic" },
conditionals = { "italic" },
loops = { "italic" },
functions = { "italic" },
keywords = { "italic" },
strings = { "italic" },
variables = { "italic" },
numbers = {},
booleans = {},
properties = {},
types = {},
operators = {},
},
integrations = {
treesitter = true,
native_lsp = {
enabled = true,
virtual_text = {
errors = { "italic" },
hints = { "italic" },
warnings = { "italic" },
information = { "italic" },
},
underlines = {
errors = { "underline" },
hints = { "underline" },
warnings = { "underline" },
information = { "underline" },
},
},
lsp_trouble = true,
cmp = true,
lsp_saga = true,
gitgutter = false,
gitsigns = true,
telescope = true,
nvimtree = {
enabled = true,
show_root = true,
transparent_panel = true,
},
indent_blankline = { enabled = true, colored_indent_levels = true },
neotree = {
enabled = false,
show_root = true,
transparent_panel = false,
},
dap = { enabled = false, enable_ui = false },
which_key = true,
dashboard = true,
neogit = false,
vim_sneak = false,
fern = false,
barbar = true,
bufferline = true,
markdown = true,
lightspeed = false,
ts_rainbow = true,
hop = false,
notify = true,
telekasten = true,
symbols_outline = true,
mini = false,
},
})

View file

@ -0,0 +1,74 @@
require("harpoon").setup({
global_settings = {
-- sets the marks upon calling `toggle` on the ui, instead of require `:w`.
save_on_toggle = true,
-- saves the harpoon file upon every change. disabling is unrecommended.
save_on_change = true,
-- sets harpoon to run the command immediately as it's passed to the terminal when calling `sendCommand`.
enter_on_sendcmd = true,
-- closes any tmux windows harpoon that harpoon creates when you close Neovim.
tmux_autoclose_windows = false,
-- filetypes that you want to prevent from adding to the harpoon list menu.
excluded_filetypes = { "harpoon" },
-- set marks specific to each git branch inside git repository
mark_branch = false,
},
projects = {
-- Yes $HOME works
["$HOME/personal/vim-with-me/server"] = {
term = {
cmds = {
"./env && npx ts-node src/index.ts",
},
},
},
},
})
local mark = require("harpoon.mark")
local ui = require("harpoon.ui")
local tmux = require("harpoon.tmux")
local telescope = require("telescope")
local command_prompt = "Enter command: "
telescope.load_extension("harpoon")
local function map(key, func, desc)
vim.keymap.set("n", "<leader><leader>" .. key, func, { desc = desc })
end
map("n", mark.add_file, "Add mark")
map("t", ui.toggle_quick_menu, "Toogle UI")
map("j", function()
ui.nav_file(1)
end, "Navigate to file 1")
map("k", function()
ui.nav_file(2)
end, "Navigate to file 2")
map("l", function()
ui.nav_file(3)
end, "Navigate to file 3")
map("ñ", function()
ui.nav_file(4)
end, "Navigate to file 4")
map("g", function()
local input = vim.fn.input(command_prompt)
tmux.sendCommand("{next}", input)
end, "Send command to tmux pane 1")
map("G", function()
tmux.sendCommand("{next}", "\3")
end, "Send command to tmux pane 1")
map("T", "<CMD>Telescope harpoon marks<CR>", "Open marks in telescope")

View file

@ -0,0 +1,86 @@
return {
["/nvim-neo-tree/neo-tree.nvim"] = { disable = true },
["rcarriga/nvim-notify"] = { disable = true },
["catppuccin/nvim"] = {
as = "catppuccin",
config = function()
require("user.plugins.catppuccin")
end,
},
["nvim-treesitter/nvim-treesitter-context"] = {
config = function()
require("treesitter-context").setup()
end,
},
["ahmedkhalf/project.nvim"] = {
config = function()
require("user.plugins.project")
end,
},
["kyazdani42/nvim-tree.lua"] = {
config = function()
require("user.plugins.nvim-tree")
end,
},
["kylechui/nvim-surround"] = {
tag = "*", -- Use for stability; omit to use `main` branch for the latest features
config = function()
require("nvim-surround").setup()
end,
},
["s1n7ax/nvim-comment-frame"] = {
requires = {
{ "nvim-treesitter" },
},
config = function()
require("nvim-comment-frame").setup({
disable_default_keymap = true,
})
end,
},
["danymat/neogen"] = {
config = function()
require("neogen").setup({ snippet_engine = "luasnip" })
end,
requires = "nvim-treesitter/nvim-treesitter",
tag = "*", -- stable releases
},
["folke/todo-comments.nvim"] = {
requires = "nvim-lua/plenary.nvim",
config = function()
require("todo-comments").setup({})
end,
},
["folke/trouble.nvim"] = {
requires = "kyazdani42/nvim-web-devicons",
config = function()
require("user.plugins.trouble")
end,
},
["anuvyklack/pretty-fold.nvim"] = {
config = function()
require("user.plugins.pretty-fold")
end,
},
["simrat39/rust-tools.nvim"] = {
after = "mason-lspconfig.nvim", -- make sure to load after mason-lspconfig
config = function()
require("rust-tools").setup({
server = astronvim.lsp.server_settings("rust_analyzer"), -- get the server settings and built in capabilities/on_attach
})
end,
},
["ThePrimeagen/harpoon"] = {
config = function()
require("user.plugins.harpoon")
end,
},
}

View file

@ -0,0 +1,15 @@
return {
ensure_installed = {
"bashls",
"cssls",
"dockerls",
"emmet_ls",
"html",
"pyright",
"rust_analyzer",
"sqlls",
"sumneko_lua",
"tsserver",
"yamlls",
},
}

View file

@ -0,0 +1,19 @@
return {
ensure_installed = {
"blade_formatter",
"blue",
"eslint_d",
"fixjson",
"gitlint",
"intelephense",
"luacheck",
"markdownlint",
"php-cs-fixer",
"prettierd",
"shellcheck",
"shfmt",
"sql-formatter",
"stylua",
"yamlint",
},
}

View file

@ -0,0 +1,9 @@
return function(config)
local null_ls = require("null-ls")
config.sources = {
null_ls.builtins.formatting.prettierd.with({
disabled_filetypes = { "markdown" },
}),
}
return config
end

View file

@ -0,0 +1,46 @@
local tree = require("nvim-tree")
local tree_cb = require("nvim-tree.config").nvim_tree_callback
tree.setup({
hijack_unnamed_buffer_when_opening = true,
disable_netrw = true,
hijack_netrw = true,
hijack_cursor = true, -- cursor at the start of filename
sync_root_with_cwd = true,
respect_buf_cwd = true,
update_focused_file = {
enable = true, -- focus curren file
update_root = true,
},
actions = { open_file = { quit_on_open = true } },
renderer = {
full_name = true, -- show remaining name in floating text
group_empty = true, -- group empty folders
add_trailing = true, -- Trailing slash to folders
highlight_opened_files = "all",
highlight_git = true,
},
view = {
centralize_selection = true, -- center current file on enter
width = 30, -- N° of columns or %
mappings = {
custom_only = false,
-- list of mappings to set on the tree manually
list = {
{ key = { "l", "<CR>", "o", "<2-LeftMouse>" }, action = "edit" },
-- {key = {"L", "<2-RightMouse>", "<C-]>"}, action = "cd"},
{ key = "s", action = "vsplit" },
{ key = "v", action = "split" },
{ key = "t", action = "tabnew" },
{ key = { "h", "<BS>" }, action = "close_node" },
{ key = "i", action = "toggle_dotfiles" },
{ key = "I", action = "toggle_ignored" },
{ key = { "<C-l>", "<C-CR>" }, cb = tree_cb("system_open") },
},
},
},
})
-- bindings
vim.keymap.set("n", "<leader>e", ":NvimTreeToggle<CR>", { desc = "Toggle file tree", silent = true })
vim.keymap.set("n", "<C-e>", ":NvimTreeToggle<CR>", { desc = "Toggle file tree", silent = true })

View file

@ -0,0 +1,39 @@
require("pretty-fold").setup({
sections = {
left = {
"+",
function()
return string.rep("-", vim.v.foldlevel)
end,
" ",
"content",
" ",
"number_of_folded_lines",
" ",
function()
return string.rep("-", vim.v.foldlevel)
end,
"+",
},
},
fill_char = " ",
-- Possible values:
-- "delete" : Delete all comment signs from the fold string.
-- "spaces" : Replace all comment signs with equal number of spaces.
-- false : Do nothing with comment signs.
process_comment_signs = "delete",
-- List of patterns that will be removed from content foldtext section.
stop_words = {
"@brief%s*", -- (for C++) Remove '@brief' and all spaces after.
},
matchup_patterns = {
{ "{", "}" },
{ "%(", ")" }, -- % to escape lua pattern char
{ "%[", "]" }, -- % to escape lua pattern char
},
ft_ignore = { "neorg" },
})

View file

@ -0,0 +1,44 @@
require("project_nvim").setup({
-- Manual mode doesn't automatically change your root directory, so you have
-- the option to manually do so using `:ProjectRoot` command.
manual_mode = false,
-- Methods of detecting the root directory. **"lsp"** uses the native neovim
-- lsp, while **"pattern"** uses vim-rooter like glob pattern matching. Here
-- order matters: if one is not detected, the other is used as fallback. You
-- can also delete or rearangne the detection methods.
detection_methods = { "lsp", "pattern" },
-- All the patterns used to detect root dir, when **"pattern"** is in
-- detection_methods
patterns = {
".git",
"_darcs",
".hg",
".bzr",
".svn",
"Makefile",
"package.json",
},
-- Table of lsp clients to ignore by name
-- eg: { "efm", ... }
ignore_lsp = {},
-- Don't calculate root dir on specific directories
-- Ex: { "~/.cargo/*", ... }
exclude_dirs = {},
-- Show hidden files in telescope
show_hidden = false,
-- When set to false, you will get a message when project.nvim changes your
-- directory.
silent_chdir = false,
-- Path where project.nvim will store the project history for use in
-- telescope
datapath = vim.fn.stdpath("data"),
})
require("telescope").load_extension("projects")

View file

@ -0,0 +1,15 @@
local telescope_actions = require("telescope.actions")
return {
defaults = {
mappings = {
i = {
["<C-j>"] = telescope_actions.move_selection_next,
["<C-k>"] = telescope_actions.move_selection_previous,
["<C-s>"] = telescope_actions.file_vsplit,
["<C-v>"] = telescope_actions.file_split,
["<ESC>"] = telescope_actions.close,
},
},
},
}

View file

@ -0,0 +1,3 @@
return {
ensure_installed = { "javascript", "typescript", "php", "python", "lua", "bash", "sql", "yaml", "json" },
}

View file

@ -0,0 +1,26 @@
require("trouble").setup({
mode = "document_diagnostics",
action_keys = { -- key mappings for actions in the trouble list
-- map to {} to remove a mapping, for example:
-- close = {},
close = "q", -- close the list
cancel = "<esc>", -- cancel the preview and get back to your last window / buffer / cursor
refresh = "r", -- manually refresh
jump = { "<cr>", "<tab>" }, -- jump to the diagnostic or open / close folds
open_split = { "s" }, -- open buffer in new split
open_vsplit = { "v" }, -- open buffer in new vsplit
open_tab = { "t" }, -- open buffer in new tab
jump_close = { "o" }, -- jump to the diagnostic and close the list
toggle_mode = "m", -- toggle between "workspace" and "document" diagnostics mode
toggle_preview = "P", -- toggle auto_preview
hover = "K", -- opens a small popup with the full multiline message
preview = "p", -- preview the diagnostic location
close_folds = { "zM", "zm" }, -- close all folds
open_folds = { "zR", "zr" }, -- open all folds
toggle_fold = { "zA", "za" }, -- toggle fold of current file
previous = "k", -- previous item
next = "j", -- next item
},
})
vim.keymap.set("n", "<leader>fd", "<cmd>TroubleToggle<cr>", { silent = true, desc = "Search diagnostics" })

View file

@ -0,0 +1,3 @@
return {
use_winbar = "always",
}

View file

@ -0,0 +1,35 @@
return function()
local function alpha_on_bye(cmd)
local bufs = vim.fn.getbufinfo({ buflisted = true })
vim.cmd(cmd)
if require("core.utils").is_available("alpha-nvim") and not bufs[2] then
require("alpha").start(true)
end
end
vim.keymap.del("n", "<leader>C")
if require("core.utils").is_available("bufdelete.nvim") then
vim.keymap.set("n", "<leader>C", function()
alpha_on_bye("Bdelete!")
end, { desc = "Close buffer" })
else
vim.keymap.set("n", "<leader>C", function()
alpha_on_bye("bdelete!")
end, { desc = "Close buffer" })
end
vim.api.nvim_create_autocmd({
"BufEnter",
"BufAdd",
"BufNew",
"BufNewFile",
"BufWinEnter",
}, {
group = vim.api.nvim_create_augroup("TS_FOLD_WORKAROUND", {}),
callback = function()
vim.opt.foldmethod = "expr"
vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
end,
})
end

View file

@ -0,0 +1,8 @@
return {
n = {
["<leader>"] = {
["C"] = { name = "Comment Stuff" },
["<leader>"] = { name = "Harpoon" },
},
},
}

23
config/create-links Executable file
View file

@ -0,0 +1,23 @@
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
[[ ! -e "$HOME/.config" ]] && mkdir -p "$HOME/.config/"
echo "Creating symlinks..."
for var in $SCRIPT_DIR/*; do
pkg=$(basename "$var")
# if exist and is not a symlink
if [[ -e "$HOME/.config/$pkg" && ! -h "$HOME/.config/$pkg" ]]; then
echo "Config for $pkg exist, creating backup ${pkg}.old"
mv "$HOME/.config/$pkg" "$HOME/.config/${pkg}.old"
elif [[ -e "$HOME/.config/$pkg" && -h "$HOME/.config/$pkg" ]]; then
unlink "$HOME/.config/$pkg"
fi
ln -sf "$var" "$HOME/.config/"
done

14
config/helix/config.toml Normal file
View file

@ -0,0 +1,14 @@
theme = "catppuccin_mocha"
[editor]
scrolloff = 15
line-number = "relative"
color-modes = true
[editor.cursor-shape]
normal = "block"
insert = "bar"
select = "underline"
[editor.indent-guides]
render = true

19
config/lazygit/config.yml Normal file
View file

@ -0,0 +1,19 @@
theme:
lightTheme: false
activeBorderColor:
- "#a6da95" # Green
- bold
inactiveBorderColor:
- "#cad3f5" # Text
optionsTextColor:
- "#8aadf4" # Blue
selectedLineBgColor:
- "#363a4f" # Surface0
selectedRangeBgColor:
- "#363a4f" # Surface0
cherryPickedCommitBgColor:
- "#8bd5ca" # Teal
cherryPickedCommitFgColor:
- "#8aadf4" # Blue
unstagedChangesColor:
- red # Red

View file

@ -0,0 +1,11 @@
████ ███ █████ █████
░░███ ░░░ ░░███ ░░███
██████ ░███ ██████ ████ ███████ ░███ █████
░░░░░███ ░███ ███░░███░░███ ███░░███ ░███░░███
███████ ░███ ░███████ ░███ ░███ ░███ ░██████░
███░░███ ░███ ░███░░░ ░███ ░███ ░███ ░███░░███
░░████████ █████░░██████ █████░░████████ ████ █████
░░░░░░░░ ░░░░░ ░░░░░░ ░░░░░ ░░░░░░░░ ░░░░ ░░░░░

View file

@ -0,0 +1,14 @@
-- Siable netrw
vim.g.loaded = 1
vim.g.loaded_netrwPlugin = 1
-- native neovim config
require("options")
-- keybindings config
require("keys")
-- Autocmd config
require("autocommands")
require("plugins")

View file

@ -0,0 +1,17 @@
local cmd = vim.api.nvim_create_autocmd
-- cmd({"BufNewFile", "BufFilePre", "BufRead"}, {
-- pattern = {"*.md"},
-- callback = function() vim.opt.filetype = "markdown" end
-- })
cmd("InsertEnter",
{pattern = "*", command = "norm zz", desc = "Center line on insert mode"})
-- highlight yank selection
cmd("TextYankPost", {
pattern = "*",
callback = function() vim.highlight.on_yank() end,
desc = "Highligth line on yank"
})

View file

@ -0,0 +1,51 @@
--[[
Modes:
| String value | Help page | Affected modes | Vimscript equivalent |
| -------------|------------------|-----------------------------------------------|-----------------------|
| '' | mapmode-nvo | Normal, Visual, Select, Operator-pending | :map |
| 'n' | mapmode-n | Normal | :nmap |
| 'v' | mapmode-v | Visual and Select | :vmap |
| 's' | mapmode-s | Select | :smap |
| 'x' | mapmode-x | Visual | :xmap |
| 'o' | mapmode-o | Operator-pending | :omap |
| '!' | mapmode-ic | Insert and Command-line | :map! |
| 'i' | mapmode-i | Insert | :imap |
| 'l' | mapmode-l | Insert, Command-line, Lang-Arg | :lmap |
| 'c' | mapmode-c | Command-line | :cmap |
| 't' | mapmode-t | Terminal | :tmap |
Define Mapping with:
vim.keymap.set(mode, keys, action[, options])
--]]
-- Leader Key
vim.g.mapleader = ' '
vim.keymap.set('n', "<CR>", ":noh<CR>", { desc = "Remove search Highlight", silent = true })
-- local function changeComment()
-- local table = vim.opt.fo:get()
-- local enabled = tagle.c == true && tagle.r == true && tagle.o == true
-- end
vim.keymap.set('', "<Leader>tc", [[if &fo =~ 'cro' | set fo-=cro | else | set fo+=cro | endif]], { desc = "Toggle autocomments", silent = true })
vim.keymap.set('', "<Leader>ti", ":setlocal autoindent!<CR>", { desc = "toggle auto indent"})
vim.keymap.set('', "<Leader>ts", ":setlocal spell!<CR>", { desc = "Toggle spell checker", silent = true })
vim.keymap.set('t', '<ESC>', [[<C-\><C-n>]], { desc = "Exit terminal with Esc", silent = true })
vim.keymap.set('n', '<C-s>', ':w<CR>', { desc = "Save file", silent = true })
vim.keymap.set({ 'n', 'v', 'i' }, '<A-j>', ':m .+1<CR>==', { desc = "Move current line down", silent = true })
vim.keymap.set({ 'n', 'v', 'i' }, '<A-k>', ':m .-2<CR>==', { desc = "Move current line up", silent = true })
vim.keymap.set('v', '<', '<gv', { desc = "Better indentation in visual mode", silent = true })
vim.keymap.set('v', '>', '>gv', { desc = "Better indentation in visual mode", silent = true })

View file

@ -0,0 +1,63 @@
--------------------------------------------------------------------------------
-- Native Neovim Config --
--------------------------------------------------------------------------------
--[[
vim.opt.{option} -> :set
vim.opt_global.{option} -> :setglobal
vim.opt_local.{option} -> :setlocal
--]]
-- Set Shell
vim.opt.shell = "/usr/bin/env bash"
vim.g.python3_host_prog = "/usr/bin/python3"
-- Keep the cursor centered by X rows from top / bottom
vim.opt.scrolloff = 15
-- Use System clipboard
vim.opt.clipboard = "unnamedplus"
-- Enable Mouse
vim.opt.mouse = "a"
-- Set Numbers
vim.opt.number = true
vim.opt.relativenumber = true
-- Identation
local indent = 2
vim.opt.tabstop = indent
vim.opt.shiftwidth = indent
vim.opt.softtabstop = indent
-- Ignore case when searching
vim.opt.ignorecase = true
-- Override the 'ignorecase' option if the search pattern contains case characters.
vim.opt.smartcase = true
-- Wrap Search
vim.opt.wrapscan = true
-- Autocompletion with 'wildchar'
vim.opt.wildmode = "longest,list,full"
-- Fix Sppliting
vim.opt.splitbelow = true
vim.opt.splitright = true
-- Set undofile
vim.opt.undofile = true
vim.opt.undodir = os.getenv("HOME") .. "/.nvim/undo"
vim.opt.undolevels = 1000
-- Open already open windows
vim.opt.switchbuf = 'usetab'
-- Auto add comments on new line if prev was a comment
vim.opt.fo:append({ cro = true })

View file

@ -0,0 +1,50 @@
-- luasnip setup
local luasnip = require 'luasnip'
local cmp = require 'cmp'
cmp.setup {
snippet = {
expand = function(args) require('luasnip').lsp_expand(args.body) end
},
mapping = {
['<C-p>'] = cmp.mapping.select_prev_item(),
['<C-n>'] = cmp.mapping.select_next_item(),
['<C-d>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.close(),
['<CR>'] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Replace,
select = true
},
['<Tab>'] = function(fallback)
if vim.fn.pumvisible() == 1 then
vim.fn.feedkeys(vim.api.nvim_replace_termcodes('<C-n>', true,
true, true), 'n')
elseif luasnip.expand_or_jumpable() then
vim.fn.feedkeys(vim.api.nvim_replace_termcodes(
'<Plug>luasnip-expand-or-jump', true, true,
true), '')
else
fallback()
end
end,
['<S-Tab>'] = function(fallback)
if vim.fn.pumvisible() == 1 then
vim.fn.feedkeys(vim.api.nvim_replace_termcodes('<C-p>', true,
true, true), 'n')
elseif luasnip.jumpable(-1) then
vim.fn.feedkeys(vim.api.nvim_replace_termcodes(
'<Plug>luasnip-jump-prev', true, true, true),
'')
else
fallback()
end
end
},
sources = {
{name = 'nvim_lsp'}, {name = 'luasnip'}, {name = "nvim_lua"},
{name = 'path'}, {name = 'buffer'}, {name = 'calc'},
{name = 'treesitter'}
}
}

View file

@ -0,0 +1,2 @@
require('nvim-autopairs').setup()

View file

@ -0,0 +1,22 @@
local function config()
require("bufferline").setup({
options = {
diagnostics = "nvim_lsp",
diagnostics_update_in_insert = true,
color_icons = true,
show_close_icon = false
}
})
vim.keymap.set('n', 'H', ':BufferLineCyclePrev<CR>', { desc = "Go to prev buffer", silent = true })
vim.keymap.set('n', 'L', ':BufferLineCycleNext<CR>', { desc = "Go to next buffer", silent = true })
vim.keymap.set('n', '<Leader>c', ':bdelete<CR>', { desc = "Close current buffer", silent = true })
vim.keymap.set('n', '<Leader>C', ':bdelete!<CR>', { desc = "Close current buffer whitout saving", silent = true })
end
return {
'akinsho/bufferline.nvim',
tag = "v2.*",
requires = 'kyazdani42/nvim-web-devicons',
config = config
}

View file

@ -0,0 +1,81 @@
local function config()
local catppuccin = require("catppuccin")
vim.g.catppuccin_flavour = "mocha"
vim.cmd [[colorscheme catppuccin]]
-- configure it
catppuccin.setup({
transparent_background = true,
term_colors = false,
styles = {
comments = {"italic"},
conditionals = {"italic"},
loops = {"italic"},
functions = {"italic"},
keywords = {"italic"},
strings = {"italic"},
variables = {"italic"},
numbers = {},
booleans = {},
properties = {},
types = {},
operators = {}
},
integrations = {
treesitter = true,
native_lsp = {
enabled = true,
virtual_text = {
errors = {"italic"},
hints = {"italic"},
warnings = {"italic"},
information = {"italic"}
},
underlines = {
errors = {"underline"},
hints = {"underline"},
warnings = {"underline"},
information = {"underline"}
}
},
lsp_trouble = true,
cmp = true,
lsp_saga = true,
gitgutter = false,
gitsigns = true,
telescope = true,
nvimtree = {
enabled = true,
show_root = true,
transparent_panel = true
},
indent_blankline = {enabled = true, colored_indent_levels = true},
neotree = {
enabled = false,
show_root = true,
transparent_panel = false
},
dap = {enabled = false, enable_ui = false},
which_key = true,
dashboard = true,
neogit = false,
vim_sneak = false,
fern = false,
barbar = true,
bufferline = true,
markdown = true,
lightspeed = false,
ts_rainbow = true,
hop = false,
notify = true,
telekasten = true,
symbols_outline = true,
mini = false
}
})
end
return {"catppuccin/nvim", as = "catppuccin", config = config}

View file

@ -0,0 +1,33 @@
-- Default FZF
vim.g.dashboard_default_executive = "telescope"
-- Custom Shortcuts
-- TODO: Change this for telescope equivalents
vim.api.nvim_set_keymap('n', '<Leader>db', ":DashboardJumpMark<CR>",
{silent = true})
vim.api.nvim_set_keymap('n', '<Leader>dh', ":DashboardFindHistory<CR>",
{silent = true})
vim.api.nvim_set_keymap('n', '<Leader>df', ":DashboardFindFile<CR>",
{silent = true})
vim.api.nvim_set_keymap('n', '<Leader>dn', ":DashboardNewFile<CR>",
{silent = true})
vim.api.nvim_set_keymap('n', '<Leader>da', ":DashboardFindWord<CR>",
{silent = true})
vim.api.nvim_set_keymap('n', '<Leader>dc', ":DashboardChangeColorscheme<CR>",
{silent = true})
-- Show mappings
vim.g.dashboard_custom_shortcut = {
last_session = 'SPC s l',
book_marks = 'SPC d b',
find_history = 'SPC d h',
find_file = 'SPC d f',
new_file = 'SPC d n',
find_word = 'SPC d a',
change_colorscheme = 'SPC d c'
}
-- Hide tabline on dashboard
vim.cmd([[
autocmd FileType dashboard set showtabline=0 | autocmd WinLeave <buffer> set showtabline=2
]])

View file

@ -0,0 +1,72 @@
local focus = require("focus")
local options = {
-- Completely disable this plugin
-- Default: true
enable = true,
-- Force width for the d window
-- Default: Calculated based on golden ratio
-- width = 120
-- Force height for the d window
-- Default: Calculated based on golden ratio
-- height = 40
-- Sets the width of directory tree buffers such as NerdTree, NvimTree and CHADTree
-- Default: vim.g.nvim_tree_width or 30
-- treewidth = 20
-- Displays a cursorline in the ed window only
-- Not displayed in uned windows
-- Default: true
-- cursorline = false
-- Displays a sign column in the ed window only
-- Not displayed in uned windows
-- Default: true
-- signcolumn = false
-- Displays line numbers in the ed window only
-- Not displayed in uned windows
-- Default: true
number = true,
-- Displays relative line numbers in the ed window only
-- Not displayed in uned windows
-- See :h relativenumber
-- Default: false
relativenumber = true,
-- Displays hybrid line numbers in the ed window only
-- Not displayed in uned windows
-- Combination of :h relativenumber, but also displays the line number of the current line only
-- Default: false
-- hybridnumber = true
-- Enable auto highlighting for ed/unfocussed windows
-- Default: false
winhighlight = true,
}
----------------------------------------------------------------------
-- Mappings --
----------------------------------------------------------------------
local function focusmap(direction)
vim.keymap.set("n", "<C-" .. direction .. ">", function()
focus.split_command(direction)
end, { desc = "Change or create focused window" })
end
focusmap("h")
focusmap("j")
focusmap("k")
focusmap("l")
return {
"beauwilliams/focus.nvim",
config = function()
require("focus").setup(options)
end,
}

View file

@ -0,0 +1,91 @@
local mapper = require("nvim-mapper")
require('gitsigns').setup {
signs = {
add = {
hl = 'GitSignsAdd',
text = '',
numhl = 'GitSignsAddNr',
linehl = 'GitSignsAddLn'
},
change = {
hl = 'GitSignsChange',
text = '',
numhl = 'GitSignsChangeNr',
linehl = 'GitSignsChangeLn'
},
delete = {
hl = 'GitSignsDelete',
text = '_',
numhl = 'GitSignsDeleteNr',
linehl = 'GitSignsDeleteLn'
},
topdelete = {
hl = 'GitSignsDelete',
text = '',
numhl = 'GitSignsDeleteNr',
linehl = 'GitSignsDeleteLn'
},
changedelete = {
hl = 'GitSignsChange',
text = '~',
numhl = 'GitSignsChangeNr',
linehl = 'GitSignsChangeLn'
}
},
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
keymaps = {
-- Default keymap options
noremap = true,
['n ]h'] = {
expr = true,
"&diff ? ']c' : '<cmd>lua require\"gitsigns.actions\".next_hunk()<CR>'"
},
['n [h'] = {
expr = true,
"&diff ? '[c' : '<cmd>lua require\"gitsigns.actions\".prev_hunk()<CR>'"
},
['n <leader>gs'] = '<cmd>lua require"gitsigns".stage_hunk()<CR>',
['v <leader>gs'] = '<cmd>lua require"gitsigns".stage_hunk({vim.fn.line("."), vim.fn.line("v")})<CR>',
['n <leader>gu'] = '<cmd>lua require"gitsigns".undo_stage_hunk()<CR>',
['n <leader>gr'] = '<cmd>lua require"gitsigns".reset_hunk()<CR>',
['v <leader>gr'] = '<cmd>lua require"gitsigns".reset_hunk({vim.fn.line("."), vim.fn.line("v")})<CR>',
['n <leader>gR'] = '<cmd>lua require"gitsigns".reset_buffer()<CR>',
['n <leader>gp'] = '<cmd>lua require"gitsigns".preview_hunk()<CR>',
['n <leader>gb'] = '<cmd>lua require"gitsigns".blame_line(true)<CR>',
['n <leader>gS'] = '<cmd>lua require"gitsigns".stage_buffer()<CR>',
['n <leader>gU'] = '<cmd>lua require"gitsigns".reset_buffer_index()<CR>',
-- Text objects
['o ih'] = ':<C-U>lua require"gitsigns.actions".select_hunk()<CR>',
['x ih'] = ':<C-U>lua require"gitsigns.actions".select_hunk()<CR>'
},
watch_index = {interval = 1000, follow_files = true},
attach_to_untracked = true,
current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
current_line_blame_opts = {
virt_text = true,
virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align'
delay = 1000
},
current_line_blame_formatter_opts = {relative_time = false},
sign_priority = 6,
update_debounce = 100,
status_formatter = nil, -- Use default
max_file_length = 40000,
preview_config = {
-- Options passed to nvim_open_win
border = 'single',
style = 'minimal',
relative = 'cursor',
row = 0,
col = 1
},
diff_opts = {internal = true}, -- If vim.diff or luajit is present
yadm = {enable = false}
}

View file

@ -0,0 +1,27 @@
local mapper = require("nvim-mapper")
require("harpoon").setup({
global_settings = {save_on_toggle = false, save_on_change = true}
})
-- Mark list
mapper.map('n', '<Leader>mq',
[[:lua require("harpoon.ui").toggle_quick_menu()<CR>]],
{silent = true, noremap = true}, "harpoon", "quick_menu",
"Open list of marked files")
-- Mark File
mapper.map('n', '<Leader>ma', [[:lua require("harpoon.mark").add_file()<CR>]],
{silent = true, noremap = true}, "harpoon", "add_file",
"Add current file to mark list")
-- Open marked file
mapper.map('n', '<Leader>mj', [[:lua require("harpoon.ui").nav_file(1)<CR>]],
{silent = true, noremap = true}, "harpoon", "file_navigation_1",
"Go to marked file 1")
mapper.map('n', '<Leader>mk', [[:lua require("harpoon.ui").nav_file(2)<CR>]],
{silent = true, noremap = true}, "harpoon", "file_navigation_2",
"Go to marked file 2")
mapper.map('n', '<Leader>ml', [[:lua require("harpoon.ui").nav_file(3)<CR>]],
{silent = true, noremap = true}, "harpoon", "file_navigation_3",
"Go to marked file 3")

View file

@ -0,0 +1,25 @@
local function config()
-- vim.opt.list = true
-- vim.opt.listchars:append "space:⋅"
-- vim.opt.listchars:append "eol:↴"
require("indent_blankline").setup {
space_char_blankline = " ",
show_current_context = true,
show_current_context_start = false
}
-- vim.g.indent_blankline_char_list = {"│"}
-- vim.g.indentLine_enabled = 1
vim.g.indent_blankline_show_trailing_blankline_indent = false
vim.g.indent_blankline_filetype_exclude = {
"help", "terminal", "dashboard", "nvim-tree"
}
vim.g.indent_blankline_buftype_exclude = {"terminal"}
vim.g.indent_blankline_show_first_indent_level = false
vim.g.indent_blankline_use_treesitter = true
end
return {"lukas-reineke/indent-blankline.nvim", config = config}

View file

@ -0,0 +1,62 @@
local active_plugins = {
"focus",
"colorscheme",
"nvim-tree",
"bufferline",
"treesitter",
"prettyfolds",
"indent-lines",
"lsp",
"telescope",
}
--[[
Auto update plugins from outside neomvim
nvim --headless -c 'autocmd User PackerComplete quitall' -c 'PackerSync'
--]]
--
local ensure_packer = function()
local fn = vim.fn
local install_path = fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim"
if fn.empty(fn.glob(install_path)) > 0 then
fn.system({
"git",
"clone",
"--depth",
"1",
"https://github.com/wbthomason/packer.nvim",
install_path,
})
vim.cmd([[packadd packer.nvim]])
return true
end
return false
end
local packer_bootstrap = ensure_packer()
require("packer").startup({
function(use)
use("wbthomason/packer.nvim")
for _, name in ipairs(active_plugins) do
local ok, plugin = pcall(require, "plugins." .. name)
if ok then
use(plugin)
else
print("Error loading " .. name .. "In: " .. plugin)
end
end
if packer_bootstrap then
require("packer").sync()
end
end,
config = {
display = {
open_fn = function()
return require("packer.util").float({ border = "single" })
end,
},
},
})

View file

@ -0,0 +1,160 @@
--[[
LSP Server: code completition, references for variables and other stuff.
Linter: Code rules for consistency.
Formatter: Code style for eye candy.
Debugger: well... a debugger...
--]]
-- FIXME: Refactor this code so it's more readable
local function setup()
local lsp = require("lsp-zero")
local cmp = require("cmp")
local null_ls = require("null-ls")
-- local mason_null_ls = require("mason-null-ls")
lsp.preset("recommended")
lsp.nvim_workspace({
library = vim.api.nvim_get_runtime_file("", true),
})
local cmp_select = { behavior = cmp.SelectBehavior.Select }
lsp.setup_nvim_cmp({
mapping = lsp.defaults.cmp_mappings({
["<C-p>"] = cmp.mapping.select_prev_item(cmp_select),
["<C-n>"] = cmp.mapping.select_next_item(cmp_select),
}),
sources = {
{ name = "path" },
{ name = "nvim_lsp", keyword_length = 3 },
{ name = "luasnip", keyword_length = 2 },
},
})
lsp.set_preferences({
set_lsp_keymaps = false,
})
vim.keymap.set("n", "K", function()
vim.lsp.buf.hover()
end, { desc = "Show lsp info of the symbol under the cursor", silent = true })
vim.keymap.set("n", "gd", function()
vim.lsp.buf.definition()
end, { desc = "Go to definition", silent = true })
vim.keymap.set("n", "gD", function()
vim.lsp.buf.declaration()
end, { desc = "Go to declaration", silent = true })
vim.keymap.set("n", "gi", function()
vim.lsp.buf.implementation()
end, { desc = "Go to implementation", silent = true })
vim.keymap.set("n", "go", function()
vim.lsp.buf.type_definition()
end, { desc = "Go to definition of the type", silent = true })
vim.keymap.set("n", "gr", function()
vim.lsp.buf.references()
end, { desc = "List references in quickfix window", silent = true })
vim.keymap.set("n", "K", function()
vim.lsp.buf.signature_help()
end, { desc = "Show signature", silent = true })
vim.keymap.set("n", "<Leader>lr", function()
vim.lsp.buf.rename()
end, { desc = "Rename all references", silent = true })
vim.keymap.set("n", "<Leader>la", function()
vim.lsp.buf.code_action()
end, { desc = "Code action", silent = true })
vim.keymap.set("n", "<Leader>lj", function()
vim.diagnostic.goto_next()
end, { desc = "Go to next diagnostics", silent = true })
vim.keymap.set("n", "<Leader>lk", function()
vim.diagnostic.goto_prev()
end, { desc = "Go to prev diagnostics", silent = true })
lsp.setup()
local null_linters = null_ls.builtins.diagnostics
local null_formatters = null_ls.builtins.formatting
local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
local lsp_formatting = function(bufnr)
vim.lsp.buf.format({
filter = function(client)
-- apply whatever logic you want (in this example, we'll only use null-ls)
return client.name == "null-ls"
end,
bufnr = bufnr,
})
end
null_ls.setup({
on_attach = function(client, bufnr)
if client.supports_method("textDocument/formatting") then
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
vim.api.nvim_create_autocmd("BufWritePre", {
group = augroup,
buffer = bufnr,
callback = function()
-- TODO: use this when neovim 8.0 comes out
lsp_formatting(bufnr)
-- vim.lsp.buf.formatting_sync()
end,
})
end
end,
sources = {
-- Linters --
null_linters.eslint_d,
null_linters.gitlint,
null_linters.luacheck,
null_linters.markdownlint,
null_linters.shellcheck,
null_linters.yamllint,
null_linters.todo_comments,
-- Formatters --
null_formatters.blade_formatter,
null_formatters.blue,
null_formatters.fixjson,
null_formatters.phpcsfixer,
null_formatters.prettierd,
null_formatters.shfmt,
null_formatters.sql_formatter,
null_formatters.stylua,
null_formatters.yamlfmt,
},
})
end
return {
"VonHeikemen/lsp-zero.nvim",
config = setup,
requires = {
-- LSP Support
{ "neovim/nvim-lspconfig" },
{ "williamboman/mason.nvim" },
{ "williamboman/mason-lspconfig.nvim" },
-- Autocompletion
{ "hrsh7th/nvim-cmp" },
{ "hrsh7th/cmp-buffer" },
{ "hrsh7th/cmp-path" },
{ "saadparwaiz1/cmp_luasnip" },
{ "hrsh7th/cmp-nvim-lsp" },
{ "hrsh7th/cmp-nvim-lua" },
-- Snippets
{ "L3MON4D3/LuaSnip" },
{ "rafamadriz/friendly-snippets" },
-- Linters and Formatters
{ "jose-elias-alvarez/null-ls.nvim" },
-- { "jayp0521/mason-null-ls.nvim" },
{ "nvim-lua/plenary.nvim" },
},
}

View file

@ -0,0 +1,38 @@
local mapper = require("nvim-mapper")
require('nvim-comment-frame').setup({
-- if true, <leader>cf keymap will be disabled
disable_default_keymap = true,
-- width of the comment frame
frame_width = 70,
-- wrap the line after 'n' characters
line_wrap_len = 50,
-- automatically indent the comment frame based on the line
auto_indent = true,
-- add comment above the current line
add_comment_above = true,
-- configurations for individual language goes here
languages = {
dosini = {
start_str = ';;',
end_str = ';;',
fill_char = '*',
auto_indent = false
}
}
})
mapper.map('n', '<Leader>ch',
[[:lua require('nvim-comment-frame').add_comment()<CR>]],
{silent = true, noremap = true}, "nvim-comment-frame", "one line",
"Add one line header")
mapper.map('n', '<Leader>cH',
[[:lua require('nvim-comment-frame').add_multiline_comment()<CR>]],
{silent = true, noremap = true}, "nvim-comment-frame", "multi line",
"Add multi line header")

View file

@ -0,0 +1,47 @@
local mapper = require("nvim-mapper")
-- don't close terminals on hidden
vim.opt.hidden = true
require("toggleterm").setup {
-- size can be a number or function which is passed the current terminal
size = function(term)
if term.direction == "horizontal" then
return 15
elseif term.direction == "vertical" then
return vim.o.columns * 0.4
end
end,
hide_numbers = true, -- hide the number column in toggleterm buffers
shade_filetypes = {},
shade_terminals = false,
-- shading_factor = '<number>', -- the degree by which to darken to terminal colour, default: 1 for dark backgrounds, 3 for light
start_in_insert = true,
insert_mappings = true, -- whether or not the open mapping applies in insert mode
persist_size = true,
direction = 'float', -- 'vertical' | 'horizontal' | 'window' | 'float',
close_on_exit = true, -- close the terminal window when the process exits
shell = vim.o.shell, -- change the default shell
-- This field is only relevant if direction is set to 'float'
float_opts = {
-- The border key is *almost* the same as 'nvim_win_open'
-- see :h nvim_win_open for details on borders however
-- the 'curved' border is a custom border type
-- not natively supported but implemented in this plugin.
border = 'single', -- 'single' | 'double' | 'shadow' | 'curved' | ... other options supported by win open
width = math.ceil(vim.o.columns * 0.8),
height = math.ceil(vim.o.lines * 0.6),
winblend = 0,
highlights = {border = "Normal", background = "Normal"}
}
}
-- Toggle Terminals
mapper.map('n', '<Leader>mf', [[:1ToggleTerm<CR>]],
{silent = true, noremap = true}, "Terminal", "toggle_term_1",
"Toggle terminal 1")
mapper.map('n', '<Leader>md', [[:2ToggleTerm<CR>]],
{silent = true, noremap = true}, "Terminal", "toggle_term_2",
"Toggle terminal 2")
mapper.map('n', '<Leader>ms', [[:3ToggleTerm<CR>]],
{silent = true, noremap = true}, "Terminal", "toggle_term_3",
"Toggle terminal 3")

View file

@ -0,0 +1,53 @@
local function tree_config()
local tree = require("nvim-tree")
local tree_cb = require("nvim-tree.config").nvim_tree_callback
tree.setup({
hijack_unnamed_buffer_when_opening = true,
disable_netrw = true,
hijack_netrw = true,
hijack_cursor = true, -- cursor at the start of filename
update_focused_file = {
enable = true -- focus curren file
},
actions = { open_file = { quit_on_open = true } },
renderer = {
full_name = true, -- show remaining name in floating text
group_empty = true, -- group empty folders
add_trailing = true, -- Trailing slash to folders
highlight_opened_files = "all",
highlight_git = true
},
view = {
centralize_selection = true, -- center current file on enter
width = 30, -- N° of columns or %
mappings = {
custom_only = false,
-- list of mappings to set on the tree manually
list = {
{ key = { "l", "<CR>", "o", "<2-LeftMouse>" }, action = "edit" },
-- {key = {"L", "<2-RightMouse>", "<C-]>"}, action = "cd"},
{ key = "s", action = "vsplit" },
{ key = "v", action = "split" },
{ key = "t", action = "tabnew" },
{ key = { "h", "<BS>" }, action = "close_node" },
{ key = "i", action = "toggle_dotfiles" },
{ key = "I", action = "toggle_ignored" },
{ key = { "<C-l>", "<C-CR>" }, cb = tree_cb("system_open") }
}
}
}
})
-- bindings
vim.keymap.set("n", "<leader>e", ":NvimTreeToggle<CR>", { desc = "Toggle file tree", silent = true })
vim.keymap.set("n", "<C-e>", ":NvimTreeToggle<CR>", { desc = "Toggle file tree", silent = true })
end
return {
'kyazdani42/nvim-tree.lua',
config = tree_config,
requires = {
'kyazdani42/nvim-web-devicons' -- optional, for file icons
}
}

View file

@ -0,0 +1,3 @@
local function config() require('pretty-fold').setup({fill_char = " "}) end
return {'anuvyklack/pretty-fold.nvim', config = config}

View file

@ -0,0 +1,36 @@
require("project_nvim").setup {
-- Manual mode doesn't automatically change your root directory, so you have
-- the option to manually do so using `:ProjectRoot` command.
manual_mode = false,
-- Methods of detecting the root directory. **"lsp"** uses the native neovim
-- lsp, while **"pattern"** uses vim-rooter like glob pattern matching. Here
-- order matters: if one is not detected, the other is used as fallback. You
-- can also delete or rearangne the detection methods.
detection_methods = {"lsp", "pattern"},
-- All the patterns used to detect root dir, when **"pattern"** is in
-- detection_methods
patterns = {
".git", "_darcs", ".hg", ".bzr", ".svn", "Makefile", "package.json"
},
-- Table of lsp clients to ignore by name
-- eg: { "efm", ... }
ignore_lsp = {},
-- Don't calculate root dir on specific directories
-- Ex: { "~/.cargo/*", ... }
exclude_dirs = {},
-- Show hidden files in telescope
show_hidden = false,
-- When set to false, you will get a message when project.nvim changes your
-- directory.
silent_chdir = false,
-- Path where project.nvim will store the project history for use in
-- telescope
datapath = vim.fn.stdpath("data")
}

View file

@ -0,0 +1,80 @@
local function config()
-- Telescope.nvim
local telescope = require("telescope")
local pickers = require("telescope.builtin")
require("project_nvim").setup()
-- Extensions
telescope.load_extension("projects")
-- Open Files
vim.keymap.set("n", "<Leader>f", function()
pickers.find_files()
end, { silent = true, desc = "Find file" })
vim.keymap.set("n", "<Leader>Fp", function()
telescope.extensions.projects.projects()
end, { silent = true, desc = "Find project" })
-- List vim stuff
vim.keymap.set("n", "<Leader>bf", function()
pickers.buffers()
end, { silent = true, desc = "Find buffers" })
-- List LSP Stuff
vim.keymap.set("n", "<Leader>ld", function()
pickers.diagnostics({ bufnr = 0 })
end, { silent = true, desc = "Find diagnostics" })
vim.keymap.set("n", "<Leader>lD", function()
pickers.diagnostics()
end, { silent = true, desc = "Find diagnostics in all buffers" })
-- Config
local telescope_actions = require("telescope.actions")
telescope.setup({
defaults = {
entry_prefix = " ",
selection_caret = "* ",
file_ignore_patterns = { "%.env", "cache", ".xlsx" },
mappings = {
i = {
["<C-j>"] = telescope_actions.move_selection_next,
["<C-k>"] = telescope_actions.move_selection_previous,
["<C-s>"] = telescope_actions.file_vsplit,
["<C-v>"] = telescope_actions.file_split,
["<ESC>"] = telescope_actions.close,
},
n = {
["gg"] = telescope_actions.move_to_top,
["G"] = telescope_actions.move_to_bottom,
["s"] = telescope_actions.file_vsplit,
["v"] = telescope_actions.file_split,
},
},
path_display = {
truncate = 1,
},
},
-- Specific config
pickers = {
buffers = {
sort_lastused = true,
mappings = {
i = { ["d"] = require("telescope.actions").delete_buffer },
n = { ["<c-d>"] = require("telescope.actions").delete_buffer },
},
},
},
})
end
return {
"nvim-telescope/telescope.nvim",
branch = "0.1.x",
requires = {
"nvim-lua/plenary.nvim",
"ahmedkhalf/project.nvim",
},
config = config,
}

View file

@ -0,0 +1,37 @@
local function config()
require('nvim-treesitter.configs').setup({
ensure_installed = {
"bash", "c", "comment", "cpp", "css", "dockerfile", "html",
"javascript", "jsdoc", "json", "lua", "python", "query", "regex",
"typescript", "yaml", "sql", "http", "php", "rust", "scss",
"markdown", "dart"
},
highlight = {enable = true},
indent = {enable = true},
rainbow = {
enable = true,
extended_mode = true, -- Highlight also non-parentheses delimiters, boolean or table: lang -> boolean
max_file_lines = 1000 -- Do not enable for files with more than 1000 lines, int
}
})
-- Treesitter Folding
vim.api.nvim_create_autocmd({
'BufEnter', 'BufAdd', 'BufNew', 'BufNewFile', 'BufWinEnter'
}, {
group = vim.api.nvim_create_augroup('TS_FOLD_WORKAROUND', {}),
callback = function()
vim.opt.foldmethod = 'expr'
vim.opt.foldexpr = 'nvim_treesitter#foldexpr()'
end
})
end
return {
'nvim-treesitter/nvim-treesitter',
run = function()
require('nvim-treesitter.install').update({with_sync = true})
end,
config = config
}

2
config/pycodestyle Normal file
View file

@ -0,0 +1,2 @@
[pycodestyle]
max-line-length = 100

BIN
config/spicetify/Backup/login.spa Executable file

Binary file not shown.

BIN
config/spicetify/Backup/xpui.spa Executable file

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,9 @@
{
"name": "Marketplace",
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 576 512\"><path fill=\"currentColor\" d=\"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM403.029 192H360v-60c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v60h-43.029c-10.691 0-16.045 12.926-8.485 20.485l67.029 67.029c4.686 4.686 12.284 4.686 16.971 0l67.029-67.029c7.559-7.559 2.205-20.485-8.486-20.485z\"></path></svg>\n",
"active-icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 576 512\"><path fill=\"currentColor\" d=\"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM403.029 192H360v-60c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v60h-43.029c-10.691 0-16.045 12.926-8.485 20.485l67.029 67.029c4.686 4.686 12.284 4.686 16.971 0l67.029-67.029c7.559-7.559 2.205-20.485-8.486-20.485z\"></path></svg>\n",
"subfiles": [],
"subfiles_extension": [
"extension.js"
]
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,40 @@
// Color map
let colorPalette = {
rosewater: "#f2d5cf",
flamingo: "#eebebe",
pink: "#f4b8e4",
maroon: "#ea999c",
red: "#e78284",
peach: "#ef9f76",
yellow: "#e5c890",
green: "#a6d189",
teal: "#81c8be",
blue: "#8caaee",
sky: "#99dadb",
lavender: "#babbf1",
white: "#c6d0f5",
mauve: "#ca9ee6"
}
// waitForElement borrowed from:
// https://github.com/morpheusthewhite/spicetify-themes/blob/master/Dribbblish/dribbblish.js
function waitForElement(els, func, timeout = 100) {
const queries = els.map(el => document.querySelector(el));
if (queries.every(a => a)) {
func(queries);
} else if (timeout > 0) {
setTimeout(waitForElement, 300, els, func, --timeout);
}
}
// Return the color label for a given hex color value
function getKeyByValue(object, value) {
return Object.keys(object).find(key => object[key] === value.trim());
}
// Used to select matching equalizer-animated-COLOR.gif
waitForElement([".Root"], (root) => {
let spiceEq = getComputedStyle(document.querySelector(":root")).getPropertyValue("--spice-equalizer");
let eqColor = getKeyByValue(colorPalette, spiceEq);
root[0].classList.add(`catppuccin-eq-${eqColor}`);
});

View file

@ -0,0 +1,39 @@
// Color map
let colorPalette = {
rosewater: "#dc8a78",
flamingo: "#dd7878",
pink: "#ea76cb",
maroon: "#e64553",
red: "#d20f39",
peach: "#fe640b",
yellow: "#df8e1d",
green: "#40a02b",
teal: "#179299",
blue: "#1e66f5",
sky: "#04a5e5",
lavender: "#7287fd",
white: "#d9e0ee"
}
// waitForElement borrowed from:
// https://github.com/morpheusthewhite/spicetify-themes/blob/master/Dribbblish/dribbblish.js
function waitForElement(els, func, timeout = 100) {
const queries = els.map(el => document.querySelector(el));
if (queries.every(a => a)) {
func(queries);
} else if (timeout > 0) {
setTimeout(waitForElement, 300, els, func, --timeout);
}
}
// Return the color label for a given hex color value
function getKeyByValue(object, value) {
return Object.keys(object).find(key => object[key] === value.trim());
}
// Used to select matching equalizer-animated-COLOR.gif
waitForElement([".Root"], (root) => {
let spiceEq = getComputedStyle(document.querySelector(":root")).getPropertyValue("--spice-equalizer");
let eqColor = getKeyByValue(colorPalette, spiceEq);
root[0].classList.add(`catppuccin-eq-${eqColor}`);
});

View file

@ -0,0 +1,39 @@
// Color map
let colorPalette = {
rosewater: "#f4dbd6",
flamingo: "#f0c6c6",
pink: "#f5bde6",
maroon: "#ee99a0",
red: "#ed8796",
peach: "#f5a97f",
yellow: "#eed49f",
green: "#a6da95",
teal: "#8bd5ca",
blue: "#8aadf4",
sky: "#91d7e3",
lavender: "#b7bdf8",
white: "#d9e0ee"
}
// waitForElement borrowed from:
// https://github.com/morpheusthewhite/spicetify-themes/blob/master/Dribbblish/dribbblish.js
function waitForElement(els, func, timeout = 100) {
const queries = els.map(el => document.querySelector(el));
if (queries.every(a => a)) {
func(queries);
} else if (timeout > 0) {
setTimeout(waitForElement, 300, els, func, --timeout);
}
}
// Return the color label for a given hex color value
function getKeyByValue(object, value) {
return Object.keys(object).find(key => object[key] === value.trim());
}
// Used to select matching equalizer-animated-COLOR.gif
waitForElement([".Root"], (root) => {
let spiceEq = getComputedStyle(document.querySelector(":root")).getPropertyValue("--spice-equalizer");
let eqColor = getKeyByValue(colorPalette, spiceEq);
root[0].classList.add(`catppuccin-eq-${eqColor}`);
});

View file

@ -0,0 +1,39 @@
// Color map
let colorPalette = {
rosewater: "#f5e0dc",
flamingo: "#f2cdcd",
pink: "#f5c2e7",
maroon: "#eba0ac",
red: "#f38ba8",
peach: "#fab387",
yellow: "#f9e2af",
green: "#a6e3a1",
teal: "#94e2d5",
blue: "#89b4fa",
sky: "#89dceb",
lavender: "#b4befe",
white: "#d9e0ee"
}
// waitForElement borrowed from:
// https://github.com/morpheusthewhite/spicetify-themes/blob/master/Dribbblish/dribbblish.js
function waitForElement(els, func, timeout = 100) {
const queries = els.map(el => document.querySelector(el));
if (queries.every(a => a)) {
func(queries);
} else if (timeout > 0) {
setTimeout(waitForElement, 300, els, func, --timeout);
}
}
// Return the color label for a given hex color value
function getKeyByValue(object, value) {
return Object.keys(object).find(key => object[key] === value.trim());
}
// Used to select matching equalizer-animated-COLOR.gif
waitForElement([".Root"], (root) => {
let spiceEq = getComputedStyle(document.querySelector(":root")).getPropertyValue("--spice-equalizer");
let eqColor = getKeyByValue(colorPalette, spiceEq);
root[0].classList.add(`catppuccin-eq-${eqColor}`);
});

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -0,0 +1,265 @@
[rosewater]
text = F2D5CF
subtext = C6D0D5
accent = E5C890
main = 303446
sidebar = 292C3C
player = 232634
card = 232634
shadow = 292C3C
selected-row = 626880
button = 838BA7
button-active = 949CBB
button-disabled = 737994
tab-active = 414559
notification = 414559
notification-error = E78284
equalizer = F2D5CF
misc = 626880
[flamingo]
text = EEBEBE
subtext = C6D0D5
accent = E5C890
main = 303446
sidebar = 292C3C
player = 232634
card = 232634
shadow = 292C3C
selected-row = 626880
button = 838BA7
button-active = 949CBB
button-disabled = 737994
tab-active = 414559
notification = 414559
notification-error = E78284
equalizer = EEBEBE
misc = 626880
[mauve]
text = CA9EE6
subtext = C6D0D5
accent = E5C890
main = 303446
sidebar = 292C3C
player = 232634
card = 232634
shadow = 292C3C
selected-row = 626880
button = 838BA7
button-active = 949CBB
button-disabled = 737994
tab-active = 414559
notification = 414559
notification-error = E78284
equalizer = CA9EE6
misc = 626880
[pink]
text = F4B8E4
subtext = C6D0D5
accent = E5C890
main = 303446
sidebar = 292C3C
player = 232634
card = 232634
shadow = 292C3C
selected-row = 626880
button = 838BA7
button-active = 949CBB
button-disabled = 737994
tab-active = 414559
notification = 414559
notification-error = E78284
equalizer = F4B8E4
misc = 686880
[maroon]
text = EA999C
subtext = C6D0D5
accent = E5C890
main = 303446
sidebar = 292C3C
player = 232634
card = 232634
shadow = 292C3C
selected-row = 626880
button = 838BA7
button-active = 949CBB
button-disabled = 737994
tab-active = 414559
notification = 414559
notification-error = E78284
equalizer = EA999C
misc = 686880
[red]
text = E78284
subtext = C6D0D5
accent = E5C890
main = 303446
sidebar = 292C3C
player = 232634
card = 232634
shadow = 292C3C
selected-row = 626880
button = 838BA7
button-active = 949CBB
button-disabled = 737994
tab-active = 414559
notification = 414559
notification-error = E78284
equalizer = E78284
misc = 686880
[peach]
text = EF9F76
subtext = C6D0D5
accent = E5C890
main = 303446
sidebar = 292C3C
player = 232634
card = 232634
shadow = 292C3C
selected-row = 626880
button = 838BA7
button-active = 949CBB
button-disabled = 737994
tab-active = 414559
notification = 414559
notification-error = E78284
equalizer = EF9F76
misc = 686880
[yellow]
text = E5C890
subtext = C6D0D5
accent = 8CAAEE
main = 303446
sidebar = 292C3C
player = 232634
card = 232634
shadow = 292C3C
selected-row = 626880
button = 838BA7
button-active = 949CBB
button-disabled = 737994
tab-active = 414559
notification = 414559
notification-error = E78284
equalizer = E5C890
misc = 686880
[green]
text = A6D189
subtext = C6D0D5
accent = E5C890
main = 303446
sidebar = 292C3C
player = 232634
card = 232634
shadow = 292C3C
selected-row = 626880
button = 838BA7
button-active = 949CBB
button-disabled = 737994
tab-active = 414559
notification = 414559
notification-error = E78284
equalizer = A6D189
misc = 686880
[teal]
text = 81C8BE
subtext = C6D0D5
accent = E5C890
main = 303446
sidebar = 292C3C
player = 232634
card = 232634
shadow = 292C3C
selected-row = 626880
button = 838BA7
button-active = 949CBB
button-disabled = 737994
tab-active = 414559
notification = 414559
notification-error = E78284
equalizer = 81C8BE
misc = 686880
[blue]
text = 8CAAEE
subtext = C6D0D5
accent = E5C890
main = 303446
sidebar = 292C3C
player = 232634
card = 232634
shadow = 292C3C
selected-row = 626880
button = 838BA7
button-active = 949CBB
button-disabled = 737994
tab-active = 414559
notification = 414559
notification-error = E78284
equalizer = 8CAAEE
misc = 686880
[sky]
text = 99D1DB
subtext = C6D0D5
accent = E5C890
main = 303446
sidebar = 292C3C
player = 232634
card = 232634
shadow = 292C3C
selected-row = 626880
button = 838BA7
button-active = 949CBB
button-disabled = 737994
tab-active = 414559
notification = 414559
notification-error = E78284
equalizer = 99D1DB
misc = 686880
[lavender]
text = BABBF1
subtext = C6D0D5
accent = E5C890
main = 303446
sidebar = 292C3C
player = 232634
card = 232634
shadow = 292C3C
selected-row = 626880
button = 838BA7
button-active = 949CBB
button-disabled = 737994
tab-active = 414559
notification = 414559
notification-error = E78284
equalizer = BABBF1
misc = 686880
[white]
text = C6D0F5
subtext = C6D0D5
accent = E5C890
main = 303446
sidebar = 292C3C
player = 232634
card = 232634
shadow = 292C3C
selected-row = 626880
button = 838BA7
button-active = 949CBB
button-disabled = 737994
tab-active = 414559
notification = 414559
notification-error = E78284
equalizer = C6D0F5
misc = 686880

View file

@ -0,0 +1,272 @@
/* Color Pallette */
/* Note: These variables should be used ONLY when needed across ALL of the color palettes. */
:root {
/* Morning */
--flamingo: #eebebe;
--mauve: #ca9ee6;
--pink: #f4b8e4;
--maroon: #ea999c;
--red: #e78284;
--peach: #ef9f76;
--yellow: #e5c890;
--green: #a6d189;
--teal: #81c8be;
--blue: #8caaee;
--sky: #99dadb;
/* Night */
/* --black-0: #161320; */
--crust: #232634;
/* --black-1: #1A1826; */
--mantle: #292c3c;
/* --black-2: #1E1E2E; */
--base: #303446;
/* --black-3: #302D41; */
--surface0: #414559;
/* --black-4: #575268; */
--surface1: #51576d;
/* --gray-0: #6E6C7E; */
--overlay0: #737994;
/* --gray-1: #988BA2; */
---overlay1: #838ba7;
/* --gray-2: #C3BAC6; */
--overlay2: #949cbb;
/* --white: #D9E0EE; */
--white: #c6d0f5;
--lavender: #babbf1;
--rosewater: #f2d5cf;
}
/* Buttons */
.main-playButton-PlayButton.main-playButton-primary {
color: var(--spice-player);
}
.main-button-primary {
background-color: var(--spice-main);
}
.main-button-primary:active,
.main-button-primary:focus,
.main-button-primary:hover {
background-color: var(--spice-sidebar);
}
.main-view-container button:hover > div[class^='ButtonInner-sc-'] {
background-color: var(--spice-button);
}
.control-button-heart[aria-checked="true"],
.main-addButton-active,
.main-addButton-active:focus,
.main-addButton-active:hover {
color: var(--red);
}
.main-addButton-active:hover {
-webkit-transform: scale(1.06);
transform: scale(1.06);
}
/* Progress bar */
.x-progressBar-progressBarBg > div > div {
background-color: var(--spice-text);
}
/* Top bars */
.main-entityHeader-backgroundColor,
.main-actionBarBackground-background,
.main-view-container main[aria-label="Spotify Web Player"] > div:first-child {
display: none;
}
.main-topBar-background {
background-color: var(--spice-main) !important;
}
.main-entityHeader-withBackgroundImage {
background-color: rgba(var(--spice-rgb-player), 0.2);
}
/* Sidebar */
.main-navBar-navBar li:hover > div,
.main-navBar-navBar li:hover > a:not(.main-navBar-navBarLinkActive),
.spicetify-playlist-list li:hover {
background-color: var(--spice-main);
}
#spicetify-sticky-list li:hover > div {
border-radius: 4px;
}
/* Scrollbar */
.os-theme-spotify > .os-scrollbar-horizontal,
.os-theme-spotify > .os-scrollbar-vertical {
padding: 4px;
}
.os-theme-spotify.os-host-transition
> .os-scrollbar-horizontal
> .os-scrollbar-track
> .os-scrollbar-handle,
.os-theme-spotify.os-host-transition
> .os-scrollbar-vertical
> .os-scrollbar-track
> .os-scrollbar-handle {
background-color: var(--decorative-base);
border-radius: 6px;
}
::-webkit-scrollbar {
width: 0.5em;
}
::-webkit-scrollbar-thumb {
background-color: #575268;
border-radius: 4px;
}
/* Home */
.main-home-homeHeader {
display: none;
}
.main-home-content
> section:first-child
> .main-gridContainer-gridContainer
> div {
background-color: var(--spice-card);
}
.main-home-content
> section:first-child
> .main-gridContainer-gridContainer
> div:hover {
background-color: var(--spice-misc);
}
.main-gridContainer-gridContainer > div,
.main-gridContainer-gridContainer > div > div > div {
border-radius: 6px;
}
/* Cards */
.main-card-card {
border-radius: 6px;
}
.main-card-imageContainer {
margin: -16px -16px 16px -16px;
}
.main-cardImage-imageWrapper,
.main-cardImage-image {
border-radius: 6px 6px 0 0;
}
/* Settings */
input:checked~.x-toggle-indicatorWrapper {
background-color: var(---overlay1);
}
input:hover:not([disabled]):not(:active)~.x-toggle-indicatorWrapper {
background-color: var(--spice-button-active);
}
select option:checked {
color: var(--spice-text);
font-weight: bold;
}
/* Animated equalizer */
/* EQ color classes are specified here in case the js extension is not moved over
* The default green eq will be used in this case */
.catppuccin-eq-rosewater .main-trackList-playingIcon,
.catppuccin-eq-flamingo .main-trackList-playingIcon,
.catppuccin-eq-mauve .main-trackList-playingIcon,
.catppuccin-eq-pink .main-trackList-playingIcon,
.catppuccin-eq-maroon .main-trackList-playingIcon,
.catppuccin-eq-red .main-trackList-playingIcon,
.catppuccin-eq-peach .main-trackList-playingIcon,
.catppuccin-eq-yellow .main-trackList-playingIcon,
.catppuccin-eq-green .main-trackList-playingIcon,
.catppuccin-eq-teal .main-trackList-playingIcon,
.catppuccin-eq-blue .main-trackList-playingIcon,
.catppuccin-eq-sky .main-trackList-playingIcon,
.catppuccin-eq-lavender .main-trackList-playingIcon,
.catppuccin-eq-white .main-trackList-playingIcon {
background-size: cover;
padding-left: 100%;
}
.catppuccin-eq-rosewater .main-trackList-playingIcon {
background-image: url("equalizer-animated-rosewater.gif");
}
.catppuccin-eq-flamingo .main-trackList-playingIcon {
background-image: url("equalizer-animated-flamingo.gif");
}
.catppuccin-eq-mauve .main-trackList-playingIcon {
background-image: url("equalizer-animated-mauve.gif");
}
.catppuccin-eq-pink .main-trackList-playingIcon {
background-image: url("equalizer-animated-pink.gif");
}
.catppuccin-eq-maroon .main-trackList-playingIcon {
background-image: url("equalizer-animated-maroon.gif");
}
.catppuccin-eq-red .main-trackList-playingIcon {
background-image: url("equalizer-animated-red.gif");
}
.catppuccin-eq-peach .main-trackList-playingIcon {
background-image: url("equalizer-animated-peach.gif");
}
.catppuccin-eq-yellow .main-trackList-playingIcon {
background-image: url("equalizer-animated-yellow.gif");
}
.catppuccin-eq-green .main-trackList-playingIcon {
background-image: url("equalizer-animated-green.gif");
}
.catppuccin-eq-teal .main-trackList-playingIcon {
background-image: url("equalizer-animated-teal.gif");
}
.catppuccin-eq-blue .main-trackList-playingIcon {
background-image: url("equalizer-animated-blue.gif");
}
.catppuccin-eq-sky .main-trackList-playingIcon {
background-image: url("equalizer-animated-sky.gif");
}
.catppuccin-eq-lavender .main-trackList-playingIcon {
background-image: url("equalizer-animated-lavender.gif");
}
.catppuccin-eq-lavender .main-trackList-playingIcon {
background-image: url("equalizer-animated-white.gif");
}
/* For that small dot on podcasts that notify us of new episodes */
.main-home-content
> section:first-child
> .main-gridContainer-gridContainer
> div
span[aria-label],
span[aria-label="New episode"],
span[aria-label="New Podcast Episode"] {
background: var(--spice-accent, var(--spice-text));
}
/* Modals */
.GenericModal[aria-label="Already added"] > div {
background-color: var(--spice-card);
color: var(--spice-subtext);
}
.GenericModal[aria-label="Already added"] button:first-child {
color: var(--spice-button-active);
}
.GenericModal[aria-label="Already added"] button:first-child:hover {
color: var(--spice-notification-error);
}
.GenericModal[aria-label="Already added"] button:last-child:hover > div {
background-color: var(--spice-button);
}
.main-rootlist-rootlistItemLink:link, .main-rootlist-rootlistItemLink:visited {
z-index: 1;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -0,0 +1,246 @@
[rosewater]
text = DC8A78
subtext = 4C4F69
accent = FAE3B0
main = EFF1F5
sidebar = E6E9EF
player = DCE0E8
card = CCD0DA
shadow = E6E9EF
selected-row = ACB0BE
button = 8C8FA1
button-active = 7C7F93
button-disabled = 9CA0B0
tab-active = DDC0DA
notification = DDC0DA
notification-error = D20F39
equalizer = DC8A78
misc = ACB0BE
[flamingo]
text = DD7878
subtext = 4C4F69
accent = FAE3B0
main = EFF1F5
sidebar = E6E9EF
player = DCE0E8
card = CCD0DA
shadow = E6E9EF
selected-row = ACB0BE
button = 8C8FA1
button-active = 7C7F93
button-disabled = 9CA0B0
tab-active = DDC0DA
notification = DDC0DA
notification-error = D20F39
equalizer = DD7878
misc = ACB0BE
[mauve]
text = 8839EF
subtext = 4C4F69
accent = FAE3B0
main = EFF1F5
sidebar = E6E9EF
player = DCE0E8
card = CCD0DA
shadow = E6E9EF
selected-row = ACB0BE
button = 8C8FA1
button-active = 7C7F93
button-disabled = 9CA0B0
tab-active = DDC0DA
notification = DDC0DA
notification-error = D20F39
equalizer = 8839EF
misc = ACB0BE
[pink]
text = EA76CB
subtext = 4C4F69
accent = FAE3B0
main = EFF1F5
sidebar = E6E9EF
player = DCE0E8
card = CCD0DA
shadow = E6E9EF
selected-row = ACB0BE
button = 8C8FA1
button-active = 7C7F93
button-disabled = 9CA0B0
tab-active = DDC0DA
notification = DDC0DA
notification-error = D20F39
equalizer = EA76CB
misc = ACB0BE
[maroon]
text = E64553
subtext = 4C4F69
accent = FAE3B0
main = EFF1F5
sidebar = E6E9EF
player = DCE0E8
card = CCD0DA
shadow = E6E9EF
selected-row = ACB0BE
button = 8C8FA1
button-active = 7C7F93
button-disabled = 9CA0B0
tab-active = DDC0DA
notification = DDC0DA
notification-error = D20F39
equalizer = E64553
misc = ACB0BE
[red]
text = D20F39
subtext = 4C4F69
accent = FAE3B0
main = EFF1F5
sidebar = E6E9EF
player = DCE0E8
card = CCD0DA
shadow = E6E9EF
selected-row = ACB0BE
button = 8C8FA1
button-active = 7C7F93
button-disabled = 9CA0B0
tab-active = DDC0DA
notification = DDC0DA
notification-error = D20F39
equalizer = D20F39
misc = ACB0BE
[peach]
text = FE640B
subtext = 4C4F69
accent = FAE3B0
main = EFF1F5
sidebar = E6E9EF
player = DCE0E8
card = CCD0DA
shadow = E6E9EF
selected-row = ACB0BE
button = 8C8FA1
button-active = 7C7F93
button-disabled = 9CA0B0
tab-active = DDC0DA
notification = DDC0DA
notification-error = D20F39
equalizer = FE640B
misc = ACB0BE
[yellow]
text = DF8E1D
subtext = 4C4F69
accent = FAE3B0
main = EFF1F5
sidebar = E6E9EF
player = DCE0E8
card = CCD0DA
shadow = E6E9EF
selected-row = ACB0BE
button = 8C8FA1
button-active = 7C7F93
button-disabled = 9CA0B0
tab-active = DDC0DA
notification = DDC0DA
notification-error = D20F39
equalizer = DF8E1D
misc = ACB0BE
[green]
text = 40A02B
subtext = 4C4F69
accent = FAE3B0
main = EFF1F5
sidebar = E6E9EF
player = DCE0E8
card = CCD0DA
shadow = E6E9EF
selected-row = ACB0BE
button = 8C8FA1
button-active = 7C7F93
button-disabled = 9CA0B0
tab-active = DDC0DA
notification = DDC0DA
notification-error = D20F39
equalizer = 40A02B
misc = ACB0BE
[teal]
text = 179299
subtext = 4C4F69
accent = FAE3B0
main = EFF1F5
sidebar = E6E9EF
player = DCE0E8
card = CCD0DA
shadow = E6E9EF
selected-row = ACB0BE
button = 8C8FA1
button-active = 7C7F93
button-disabled = 9CA0B0
tab-active = DDC0DA
notification = DDC0DA
notification-error = D20F39
equalizer = 179299
misc = ACB0BE
[blue]
text = 1E66F5
subtext = 4C4F69
accent = FAE3B0
main = EFF1F5
sidebar = E6E9EF
player = DCE0E8
card = CCD0DA
shadow = E6E9EF
selected-row = ACB0BE
button = 8C8FA1
button-active = 7C7F93
button-disabled = 9CA0B0
tab-active = DDC0DA
notification = DDC0DA
notification-error = D20F39
equalizer = 1E66F5
misc = ACB0BE
[sky]
text = 04A5E5
subtext = 4C4F69
accent = FAE3B0
main = EFF1F5
sidebar = E6E9EF
player = DCE0E8
card = CCD0DA
shadow = E6E9EF
selected-row = ACB0BE
button = 8C8FA1
button-active = 7C7F93
button-disabled = 9CA0B0
tab-active = DDC0DA
notification = DDC0DA
notification-error = D20F39
equalizer = 04A5E5
misc = ACB0BE
[lavender]
text = 7287FD
subtext = 4C4F69
accent = FAE3B0
main = EFF1F5
sidebar = E6E9EF
player = DCE0E8
card = CCD0DA
shadow = E6E9EF
selected-row = ACB0BE
button = 8C8FA1
button-active = 7C7F93
button-disabled = 9CA0B0
tab-active = DDC0DA
notification = DDC0DA
notification-error = D20F39
equalizer = 7287FD
misc = ACB0BE

View file

@ -0,0 +1,325 @@
/* Color Pallette */
/* Note: These variables should be used ONLY when needed across ALL of the color palettes. */
:root {
/* Morning */
--flamingo: #dd7878;
--mauve: #8839ef;
--pink: #ea76cb;
--maroon: #e64553;
--red: #d20f39;
--peach: #fe640b;
--yellow: #df8e1d;
--green: #40a02b;
--teal: #179299;
--blue: #1e66f5;
--sky: #04a5e5;
/* Night */
/* --black-0: #161320; */
--crust: #dce0e8;
/* --black-1: #1A1826; */
--mantle: #e6e9ef;
/* --black-2: #1E1E2E; */
--base: #eff1f5;
/* --black-3: #302D41; */
--surface0: #ccd0da;
/* --black-4: #575268; */
--surface1: #bcc0cc;
/* --gray-0: #6E6C7E; */
--overlay0: #9ca0b0;
/* --gray-1: #988BA2; */
---overlay1: #8c8fa1;
/* --gray-2: #C3BAC6; */
--overlay2: #7c7f93;
/* --white: #D9E0EE; */
--text: #4c4f69;
--lavender: #7287fd;
--rosewater: #dc8a78;
}
/* * { */
/* color: var(--text); */
/* } */
.button {
color: var(--text);
}
/* Buttons */
.main-playButton-PlayButton.main-playButton-primary {
color: var(--spice-player);
}
.main-actionBar-ActionBar.contentSpacing {
color: var(--text);
}
/* .wCl7pMTEE68v1xuZeZiB */
.main-actionBar-ActionBarRow > div > .button {
color: var(--text);
}
.HbKLiGoYM4dpuK8L4TMX, .Svg-sc-1bi12j5-0.jgfuCe.X1lXSiVj0pzhQCUo_72A, .main-moreButton-button, .wCl7pMTEE68v1xuZeZiB, .w6j_vX6SF5IxSXrrkYw5 {
color: var(--text);
}
.main-actionBar-ActionBarRow > div > .input::placeholder {
color: var(--text);
}
/* Skip button, Forward button, repeat, karoke, lyrics, spotify-connect, volume */
.main-skipBackButton-button, .main-skipForwardButton-button, .main-repeatButton-button, .ZMXGDTbwxKJhbmEDZlYy.control-button, .Button-sc-1dqy6lx-0.hyWUsx, .control-button.iUSAh1wdhXLk9hHSbkCA, .volume-bar__icon-button.control-button {
color: var(--text);
}
.Type__TypeElement-goli3j-0.cpSTHq.playback-bar__progress-time-elapsed, .Type__TypeElement-goli3j-0 cpSTHq main-playbackBarRemainingTime-container {
color: var(--text);
}
/* Search bar placeholder */
.QZhV0hWVKlExlKr266jo::placeholder {
color: var(--text);
}
div.context-menu {
background-color: var(--crust);
}
.main-button-primary {
background-color: var(--spice-main);
}
.main-button-primary:active,
.main-button-primary:focus,
.main-button-primary:hover {
background-color: var(--spice-sidebar);
}
.main-view-container button:hover > div[class^='ButtonInner-sc-'] {
background-color: var(--spice-button);
}
.control-button-heart[aria-checked="true"],
.main-addButton-active,
.main-addButton-active:focus,
.main-addButton-active:hover {
color: var(--red);
}
.main-addButton-active:hover {
-webkit-transform: scale(1.06);
transform: scale(1.06);
}
.QZhV0hWVKlExlKr266jo {
color: var(--text);
}
/* Progress bar */
.x-progressBar-progressBarBg > div > div {
background-color: var(--spice-text);
}
/* Top bars */
.main-entityHeader-backgroundColor,
.main-actionBarBackground-background,
.main-view-container main[aria-label="Spotify Web Player"] > div:first-child {
display: none;
}
.main-topBar-background {
background-color: var(--spice-main) !important;
}
.main-entityHeader-withBackgroundImage {
background-color: rgba(var(--spice-rgb-player), 0.2);
}
/* Sidebar */
.main-navBar-navBar li:hover > div,
.main-navBar-navBar li:hover > a:not(.main-navBar-navBarLinkActive),
.spicetify-playlist-list li:hover {
background-color: var(--spice-main);
}
#spicetify-sticky-list li:hover > div {
border-radius: 4px;
}
/* div.jb9xD5ECTqKFK02qe3HZ {
background-color: var(--mantle);
} */
p.Type__TypeElement-goli3j-0.gAmaez.fUYMR7LuRXv0KJWFvRZA {
color: var(--spice-text);
}
span.UyzJidwrGk3awngSGIwv, .main-tag-container, .Type__TypeElement-goli3j-0.ebHsEf {
color: var(--spice-text);
}
/* Scrollbar */
.os-theme-spotify > .os-scrollbar-horizontal,
.os-theme-spotify > .os-scrollbar-vertical {
padding: 4px;
}
.os-theme-spotify.os-host-transition
> .os-scrollbar-horizontal
> .os-scrollbar-track
> .os-scrollbar-handle,
.os-theme-spotify.os-host-transition
> .os-scrollbar-vertical
> .os-scrollbar-track
> .os-scrollbar-handle {
background-color: var(--decorative-base);
border-radius: 6px;
}
::-webkit-scrollbar {
width: 0.5em;
}
::-webkit-scrollbar-thumb {
background-color: #575268;
border-radius: 4px;
}
/* Home */
.main-home-homeHeader {
display: none;
}
.main-home-content
> section:first-child
> .main-gridContainer-gridContainer
> div {
background-color: var(--spice-card);
}
.main-home-content
> section:first-child
> .main-gridContainer-gridContainer
> div:hover {
background-color: var(--spice-misc);
}
.main-gridContainer-gridContainer > div,
.main-gridContainer-gridContainer > div > div > div {
border-radius: 6px;
}
/* Cards */
.main-card-card {
border-radius: 6px;
background-color: var(--mantle);
}
.main-card-imageContainer {
margin: -16px -16px 16px -16px;
}
.main-cardImage-imageWrapper,
.main-cardImage-image {
border-radius: 6px 6px 0 0;
}
/* Settings */
input:checked~.x-toggle-indicatorWrapper {
/* background-color: var(---overlay1); */
background-color: var(--text);
}
input:hover:not([disabled]):not(:active)~.x-toggle-indicatorWrapper {
background-color: var(--spice-button-active);
}
select option:checked {
color: var(--spice-text);
font-weight: bold;
}
/* Animated equalizer */
/* EQ color classes are specified here in case the js extension is not moved over
* The default green eq will be used in this case */
.catppuccin-eq-rosewater .main-trackList-playingIcon,
.catppuccin-eq-flamingo .main-trackList-playingIcon,
.catppuccin-eq-mauve .main-trackList-playingIcon,
.catppuccin-eq-pink .main-trackList-playingIcon,
.catppuccin-eq-maroon .main-trackList-playingIcon,
.catppuccin-eq-red .main-trackList-playingIcon,
.catppuccin-eq-peach .main-trackList-playingIcon,
.catppuccin-eq-yellow .main-trackList-playingIcon,
.catppuccin-eq-green .main-trackList-playingIcon,
.catppuccin-eq-teal .main-trackList-playingIcon,
.catppuccin-eq-blue .main-trackList-playingIcon,
.catppuccin-eq-sky .main-trackList-playingIcon,
.catppuccin-eq-lavender .main-trackList-playingIcon,
.catppuccin-eq-white .main-trackList-playingIcon {
background-size: cover;
padding-left: 100%;
}
.catppuccin-eq-rosewater .main-trackList-playingIcon {
background-image: url("equalizer-animated-rosewater.gif");
}
.catppuccin-eq-flamingo .main-trackList-playingIcon {
background-image: url("equalizer-animated-flamingo.gif");
}
.catppuccin-eq-mauve .main-trackList-playingIcon {
background-image: url("equalizer-animated-mauve.gif");
}
.catppuccin-eq-pink .main-trackList-playingIcon {
background-image: url("equalizer-animated-pink.gif");
}
.catppuccin-eq-maroon .main-trackList-playingIcon {
background-image: url("equalizer-animated-maroon.gif");
}
.catppuccin-eq-red .main-trackList-playingIcon {
background-image: url("equalizer-animated-red.gif");
}
.catppuccin-eq-peach .main-trackList-playingIcon {
background-image: url("equalizer-animated-peach.gif");
}
.catppuccin-eq-yellow .main-trackList-playingIcon {
background-image: url("equalizer-animated-yellow.gif");
}
.catppuccin-eq-green .main-trackList-playingIcon {
background-image: url("equalizer-animated-green.gif");
}
.catppuccin-eq-teal .main-trackList-playingIcon {
background-image: url("equalizer-animated-teal.gif");
}
.catppuccin-eq-blue .main-trackList-playingIcon {
background-image: url("equalizer-animated-blue.gif");
}
.catppuccin-eq-sky .main-trackList-playingIcon {
background-image: url("equalizer-animated-sky.gif");
}
.catppuccin-eq-lavender .main-trackList-playingIcon {
background-image: url("equalizer-animated-lavender.gif");
}
.catppuccin-eq-lavender .main-trackList-playingIcon {
background-image: url("equalizer-animated-white.gif");
}
/* For that small dot on podcasts that notify us of new episodes */
.main-home-content
> section:first-child
> .main-gridContainer-gridContainer
> div
span[aria-label],
span[aria-label="New episode"],
span[aria-label="New Podcast Episode"] {
background: var(--spice-accent, var(--spice-text));
}
/* Modals */
.GenericModal[aria-label="Already added"] > div {
background-color: var(--spice-card);
color: var(--spice-subtext);
}
.GenericModal[aria-label="Already added"] button:first-child {
color: var(--spice-button-active);
}
.GenericModal[aria-label="Already added"] button:first-child:hover {
color: var(--spice-notification-error);
}
.GenericModal[aria-label="Already added"] button:last-child:hover > div {
background-color: var(--spice-button);
}
.main-rootlist-rootlistItemLink:link, .main-rootlist-rootlistItemLink:visited {
z-index: 1;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Some files were not shown because too many files have changed in this diff Show more