├── .gitconfig ├── .gitignore ├── README.md ├── common ├── .config │ ├── alacritty │ │ ├── alacritty_base.toml │ │ └── catppuccin-mocha-dark.toml │ ├── bat │ │ ├── config │ │ └── themes │ │ │ ├── Catppuccin Frappe.tmTheme │ │ │ ├── Catppuccin Latte.tmTheme │ │ │ ├── Catppuccin Macchiato.tmTheme │ │ │ └── Catppuccin Mocha.tmTheme │ ├── btop │ │ ├── btop.conf │ │ ├── btop.log │ │ └── themes │ │ │ └── catppuccin_mocha.theme │ ├── eza │ │ └── theme.yml │ ├── fastfetch │ │ └── config.jsonc │ ├── ghostty │ │ ├── config_base │ │ └── themes │ │ │ └── mocha │ ├── k9s │ │ ├── aliases.yaml │ │ ├── config.yaml │ │ └── skins │ │ │ └── catppuccin-mocha.yaml │ ├── kitty │ │ ├── current-theme.conf │ │ └── kitty.conf │ ├── lazygit │ │ └── config.yml │ ├── lsd │ │ └── config.yaml │ ├── nvim │ │ ├── .luarc.json │ │ ├── .prettierrc.yaml │ │ ├── .stylua.toml │ │ ├── .vscode │ │ │ └── settings.json │ │ ├── README.md │ │ ├── init.lua │ │ ├── lazy-lock.json │ │ └── lua │ │ │ ├── core │ │ │ ├── commands.lua │ │ │ ├── config │ │ │ │ ├── colors.lua │ │ │ │ ├── dashboard │ │ │ │ │ └── headers.lua │ │ │ │ ├── icons.lua │ │ │ │ ├── lualine │ │ │ │ │ └── components.lua │ │ │ │ └── wkmaps │ │ │ │ │ ├── buffers.lua │ │ │ │ │ ├── copilot.lua │ │ │ │ │ ├── general.lua │ │ │ │ │ ├── git.lua │ │ │ │ │ ├── grapple.lua │ │ │ │ │ ├── grugfar.lua │ │ │ │ │ ├── init.lua │ │ │ │ │ ├── lsp.lua │ │ │ │ │ ├── navigation.lua │ │ │ │ │ ├── neotest.lua │ │ │ │ │ ├── plugins.lua │ │ │ │ │ ├── splits.lua │ │ │ │ │ ├── telescope.lua │ │ │ │ │ └── toggle.lua │ │ │ ├── extra │ │ │ │ ├── avante.lua │ │ │ │ ├── debugmaster.lua │ │ │ │ ├── focus.lua │ │ │ │ ├── harpoon.lua │ │ │ │ ├── indent-blankline.lua │ │ │ │ ├── navbuddy.lua │ │ │ │ ├── navic.lua │ │ │ │ ├── nvim-dap.lua │ │ │ │ ├── precognition.lua │ │ │ │ ├── tstools.lua │ │ │ │ └── twilight.lua │ │ │ ├── filetypes.lua │ │ │ ├── globals.lua │ │ │ ├── keymaps.lua │ │ │ ├── neovide.lua │ │ │ ├── options.lua │ │ │ ├── overrides.lua │ │ │ └── plugins │ │ │ │ ├── _testing_ground │ │ │ │ └── smear-cursor.lua │ │ │ │ ├── devtools │ │ │ │ ├── bloat.lua │ │ │ │ ├── crates.lua │ │ │ │ ├── grugfar.lua │ │ │ │ ├── neotest.lua │ │ │ │ ├── nvim-coverage.lua │ │ │ │ ├── toggleterm.lua │ │ │ │ ├── trouble.lua │ │ │ │ └── which-key.lua │ │ │ │ ├── editing │ │ │ │ ├── autotags.lua │ │ │ │ ├── copilot-chat.lua │ │ │ │ ├── copilot.lua │ │ │ │ ├── peek.lua │ │ │ │ ├── qmk.lua │ │ │ │ ├── todo-comments.lua │ │ │ │ └── tsc.lua │ │ │ │ ├── git │ │ │ │ ├── diffview.lua │ │ │ │ └── gitsigns.lua │ │ │ │ ├── lsp │ │ │ │ ├── actions-preview.lua │ │ │ │ ├── blink.lua │ │ │ │ ├── conform.lua │ │ │ │ ├── init.lua │ │ │ │ ├── lazydev.lua │ │ │ │ └── rustaceanvim.lua │ │ │ │ ├── navigation │ │ │ │ ├── flash.lua │ │ │ │ ├── grapple.lua │ │ │ │ ├── markview.lua │ │ │ │ ├── neo-tree.lua │ │ │ │ ├── oil.lua │ │ │ │ ├── popup.lua │ │ │ │ ├── telescope-undo.lua │ │ │ │ └── telescope.lua │ │ │ │ ├── syntax │ │ │ │ ├── context.lua │ │ │ │ ├── illuminate.lua │ │ │ │ ├── treesitter-context.lua │ │ │ │ ├── treesitter-textobjects.lua │ │ │ │ └── treesitter.lua │ │ │ │ ├── ui │ │ │ │ ├── alpha.lua │ │ │ │ ├── cokeline.lua │ │ │ │ ├── colorscheme-persist.lua │ │ │ │ ├── colorschemes │ │ │ │ │ ├── catppuccin.lua │ │ │ │ │ ├── kanagawa.lua │ │ │ │ │ ├── neomodern.lua │ │ │ │ │ ├── nightfox.lua │ │ │ │ │ ├── rose-pine.lua │ │ │ │ │ ├── tokyonight.lua │ │ │ │ │ └── zenbones.lua │ │ │ │ ├── deadcolumn.lua │ │ │ │ ├── dropbar.lua │ │ │ │ ├── lightbulb.lua │ │ │ │ ├── lualine.lua │ │ │ │ ├── noice.lua │ │ │ │ ├── nvim-colorizer.lua │ │ │ │ └── rainbow-delimiters.lua │ │ │ │ └── utilities │ │ │ │ ├── autopairs.lua │ │ │ │ ├── autosave.lua │ │ │ │ ├── comment.lua │ │ │ │ ├── parinfer.lua │ │ │ │ ├── snacks.lua │ │ │ │ ├── vim-sleuth.lua │ │ │ │ └── vim-surround.lua │ │ │ └── water │ │ │ ├── autocmds.lua │ │ │ ├── buffers.lua │ │ │ ├── config.lua │ │ │ ├── highlights.lua │ │ │ ├── init.lua │ │ │ ├── keymaps.lua │ │ │ ├── state.lua │ │ │ └── ui │ │ │ ├── help.lua │ │ │ ├── preview.lua │ │ │ └── water.lua │ ├── tmux-sessionizer │ │ └── tmux-sessionizer.conf │ ├── tmux │ │ └── tmux.conf │ ├── tmuxinator │ │ ├── adminweb.yml │ │ ├── dotfiles.yml │ │ ├── portfolio.yml │ │ ├── quantum-panel.yml │ │ ├── raf-app.yml │ │ └── raf-service.yml │ ├── wezterm │ │ ├── config │ │ │ ├── _sample.lua │ │ │ ├── behaviour.lua │ │ │ ├── keys.lua │ │ │ ├── layouts.lua │ │ │ ├── theme.lua │ │ │ └── window.lua │ │ ├── stylua.toml │ │ └── wezterm.lua │ └── yazi │ │ ├── flavors │ │ ├── catppuccin-mocha.yazi │ │ │ ├── LICENSE │ │ │ ├── LICENSE-tmtheme │ │ │ ├── README.md │ │ │ ├── flavor.toml │ │ │ ├── preview.png │ │ │ └── tmtheme.xml │ │ └── rose-pine.yazi │ │ │ ├── flavor.toml │ │ │ └── tmtheme.xml │ │ ├── keymap.toml │ │ ├── theme.toml │ │ └── yazi.toml ├── .gitconfig ├── .gitsettings │ ├── .gitmessage.txt │ └── catppuccin │ │ └── .gitconfig ├── .ideavimrc ├── .local │ └── bin │ │ └── tmux-sessionizer ├── .lynxrc ├── .p10k.zsh ├── .zsh_aliases ├── .zsh_env ├── .zsh_functions ├── .zsh_fzf ├── .zsh_path ├── .zshrc ├── images │ └── samurai-skull-flowers.png ├── install.sh └── shell_text.sh ├── lib ├── macos │ └── Brewfile └── sway │ ├── packages-repository.txt │ └── sway-install.sh ├── linux ├── .config │ ├── aerc │ │ ├── aerc.conf │ │ ├── binds.conf │ │ └── stylesets │ │ │ └── catppuccin-mocha │ ├── ags.bak │ │ ├── README.md │ │ ├── assets │ │ │ ├── circle.svg │ │ │ ├── lightbulb.svg │ │ │ ├── notifications-message.svg │ │ │ ├── rocket.svg │ │ │ ├── settings.svg │ │ │ ├── sticker-circle.svg │ │ │ └── watch-circle.svg │ │ ├── config.js │ │ ├── lib │ │ │ └── dateTime.js │ │ ├── styles │ │ │ ├── _colors.scss │ │ │ ├── _fonts.scss │ │ │ ├── _spacing.scss │ │ │ ├── _variables.scss │ │ │ └── main.scss │ │ ├── tsconfig.json │ │ ├── types │ │ └── widgets │ │ │ ├── dateTime.js │ │ │ ├── utilities.js │ │ │ └── workspaces.js │ ├── alacritty │ │ └── alacritty.toml │ ├── geeqie │ │ ├── accels │ │ ├── geeqierc.xml │ │ ├── history │ │ └── marks │ ├── ghostty │ │ └── config │ ├── gtk-3.0 │ │ ├── bookmarks │ │ └── settings.ini │ ├── gtklock │ │ ├── config.ini │ │ ├── style.css │ │ └── wallpaper.png │ ├── hypr │ │ ├── hypridle.conf │ │ ├── hyprland.conf │ │ ├── hyprland │ │ │ ├── colors.conf │ │ │ ├── decorators.conf │ │ │ ├── env.conf │ │ │ ├── execs.conf │ │ │ ├── general.conf │ │ │ ├── keybinds.conf │ │ │ └── rules.conf │ │ └── hyprlock.conf │ ├── kxkbrc │ ├── menus │ │ ├── applications-kmenuedit.menu │ │ └── applications-merged │ │ │ └── xdg-desktop-menu-dummy.menu │ ├── neovide │ │ └── config.toml │ ├── nwg-displays │ │ └── config │ ├── nwg-dock-hyprland │ │ └── style.css │ ├── nwg-look │ │ └── config │ ├── papirus-folders │ │ └── keep │ ├── rofi │ │ ├── config.rasi │ │ ├── rofi-power-menu │ │ └── themes │ │ │ ├── catppuccin-mocha.rasi │ │ │ ├── catppuccin-power.rasi │ │ │ ├── rose-pine-power.rasi │ │ │ └── rose-pine.rasi │ ├── sway │ │ ├── config │ │ ├── config.d │ │ │ ├── application_defaults.conf │ │ │ ├── autostart_applications.conf │ │ │ ├── default.conf │ │ │ ├── input.conf │ │ │ ├── output.conf │ │ │ └── theme.conf │ │ └── scripts │ │ │ ├── screenshots.sh │ │ │ ├── spotify-play-toggle.sh │ │ │ └── toggle_scratchpad_center.sh │ ├── swaync │ │ ├── config.json │ │ ├── style.css │ │ ├── style.css.bak │ │ ├── theme │ │ │ └── rose-pine.css │ │ └── todo.css │ ├── swayosd │ │ └── style.css │ ├── swww │ │ └── walls.sh │ ├── systemd │ │ └── user │ │ │ ├── graphical-session.target.wants │ │ │ └── swayidle.service │ │ │ ├── sway-session.target.wants │ │ │ └── swayidle.service │ │ │ └── swayidle.service │ ├── thefuck │ │ └── settings.py │ ├── waybar │ │ ├── config.jsonc │ │ ├── rose-pine.css │ │ ├── scripts │ │ │ ├── keyhint.sh │ │ │ ├── mediaplayer.py │ │ │ └── power_menu.sh │ │ └── style.css │ └── xsettingsd │ │ └── xsettingsd.conf ├── .gitsettings │ └── credentials.conf ├── hyprpanel_layout.json ├── kwinrulesrc ├── pacman.packages └── scripts │ └── toggle-internal-kb.sh └── macos ├── .config ├── aerospace │ └── aerospace.toml ├── alacritty │ └── alacritty.toml ├── borders │ └── bordersrc ├── ghostty │ └── config └── neovide │ └── config.toml └── .gitsettings └── credentials.conf /.gitconfig: -------------------------------------------------------------------------------- 1 | [include] 2 | path = "~/.gitsettings/catppuccin/.gitconfig" 3 | 4 | [core] 5 | pager = delta 6 | editor = nvim 7 | [interactive] 8 | diffFilter = delta --color-only 9 | [delta] 10 | side-by-side = true 11 | navigate = true 12 | keep-plus-minus-markers = true 13 | features = catppuccin-mocha 14 | [merge] 15 | conflictstyle = diff3 16 | [diff] 17 | colorMoved = default 18 | [commit] 19 | template = ~/.gitsettings/.gitmessage.txt 20 | [init] 21 | defaultBranch = main 22 | [alias] 23 | fix = "!f() { git commit -m \"fix: $1\" ; }; f" 24 | feat = "!f() { git commit -m \"feat: $1\" ; }; f" 25 | build = "!f() { git commit -m \"build: $1\" ; }; f" 26 | chore = "!f() { git commit -m \"chore: $1\" ; }; f" 27 | ci = "!f() { git commit -m \"ci: $1\" ; }; f" 28 | docs = "!f() { git commit -m \"docs: $1\" ; }; f" 29 | style = "!f() { git commit -m \"style: $1\" ; }; f" 30 | refactor = "!f() { git commit -m \"refactor: $1\" ; }; f" 31 | test = "!f() { git commit -m \"test: $1\" ; }; f" 32 | force = "!f() { git add . && git commit --amend --no-edit --no-verify && git push --force-with-lease ; }; f" 33 | untrack = "!f() { git ls-files --ignored --exclude-standard | xargs -0 git rm -r ; }; f" 34 | [user] 35 | name = John Enderby 36 | email = john.enderby.1987@gmail.com 37 | [filter "lfs"] 38 | clean = git-lfs clean -- %f 39 | smudge = git-lfs smudge -- %f 40 | process = git-lfs filter-process 41 | required = true 42 | [credential "https://github.com"] 43 | helper = 44 | helper = !/usr/bin/gh auth git-credential 45 | helper = !/opt/homebrew/bin/gh auth git-credential 46 | [credential "https://gist.github.com"] 47 | helper = 48 | helper = !/usr/bin/gh auth git-credential 49 | helper = !/opt/homebrew/bin/gh auth git-credential 50 | [pull] 51 | rebase = false 52 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .stow-local-ignore 2 | 3 | # aerc ignores 4 | linux/.config/aerc/accounts.conf 5 | 6 | # btop 7 | common/.config/btop/btop.log 8 | 9 | # K9s ignores 10 | common/.config/k9s/clusters/ 11 | common/.config/k9s/k9s.log 12 | 13 | # Lazygit state 14 | common/.config/lazygit/state.yml 15 | 16 | # Spicetify 17 | linux/.spicetify/ 18 | linux/.config/spicetify/ 19 | 20 | # macOS files 21 | .DS_Store 22 | commmon/.config/nvim/tmux*.log 23 | 24 | #tmux 25 | common/.config/tmux/plugins 26 | tmux-client-*.log 27 | linux/.config/spicetify 28 | linux/.config/thefuck/__pycache__/settings.cpython-313.pyc 29 | -------------------------------------------------------------------------------- /common/.config/alacritty/alacritty_base.toml: -------------------------------------------------------------------------------- 1 | # alacritty.toml config 2 | [general] 3 | import = [ 4 | "~/.config/alacritty/catppuccin-mocha-dark.toml" 5 | ] 6 | live_config_reload = true 7 | 8 | [env] 9 | WINIT_X11_SCALE_FACTOR = "1.0" 10 | TERM = "xterm-256color" 11 | 12 | [terminal] 13 | shell = "/bin/zsh" 14 | 15 | [window] 16 | decorations = 'Buttonless' 17 | dynamic_padding = false 18 | dynamic_title = true 19 | opacity = 1 20 | title = '' 21 | 22 | [window.padding] 23 | x = 4 24 | y = 4 25 | 26 | [scrolling] 27 | history = 12000 28 | 29 | 30 | [font.normal] 31 | family = "RecMonoLinear Nerd Font Mono" 32 | style = "Regular" 33 | 34 | [font.bold] 35 | family = "RecMonoLinear Nerd Font Mono" 36 | style = "Bold" 37 | 38 | [font.bold_italic] 39 | family = "RecMonoCasual Nerd Font Mono" 40 | style = "Bold Italic" 41 | 42 | [font.italic] 43 | family = "RecMonoCasual Nerd Font Mono" 44 | style = "Italic" 45 | -------------------------------------------------------------------------------- /common/.config/alacritty/catppuccin-mocha-dark.toml: -------------------------------------------------------------------------------- 1 | [colors.primary] 2 | background = "#11111b" 3 | foreground = "#cdd6f4" 4 | dim_foreground = "#cdd6f4" 5 | bright_foreground = "#11111b" 6 | 7 | [colors.cursor] 8 | text = "#1e1e2e" 9 | cursor = "#D20F39" 10 | 11 | [colors.vi_mode_cursor] 12 | text = "#1e1e2e" 13 | cursor = "#fe640b" 14 | 15 | [colors.search.matches] 16 | foreground = "#1e1e2e" 17 | background = "#a6adc8" 18 | 19 | [colors.search.focused_match] 20 | foreground = "#1e1e2e" 21 | background = "#a6e3a1" 22 | 23 | [colors.footer_bar] 24 | foreground = "#1e1e2e" 25 | background = "#a6adc8" 26 | 27 | [colors.hints.start] 28 | foreground = "#1e1e2e" 29 | background = "#f9e2af" 30 | 31 | [colors.hints.end] 32 | foreground = "#1e1e2e" 33 | background = "#a6adc8" 34 | 35 | [colors.selection] 36 | text = "#1e1e2e" 37 | background = "#cba6fb" 38 | 39 | [colors.normal] 40 | black = "#11111b" 41 | red = "#f38ba8" 42 | green = "#a6e3a1" 43 | yellow = "#f9e2af" 44 | blue = "#89b4fa" 45 | magenta = "#cba6fb" 46 | cyan = "#74c7ec" 47 | white = "#cdd6f4" 48 | 49 | [colors.bright] 50 | black = "#585b70" 51 | red = "#f38ba8" 52 | green = "#a6e3a1" 53 | yellow = "#f9e2af" 54 | blue = "#89b4fa" 55 | magenta = "#cba6fb" 56 | cyan = "#74c7ec" 57 | white = "#a6ADC8" 58 | 59 | [colors.dim] 60 | black = "#1e1e2e" 61 | red = "#e68284" 62 | green = "#a6d189" 63 | yellow = "#e5c890" 64 | blue = "#8caaee" 65 | magenta = "#ca9ee6" 66 | cyan = "#99d1db" 67 | white = "#c6d0f5" 68 | 69 | [[colors.indexed_colors]] 70 | index = 16 71 | color = "#fab387" 72 | 73 | [[colors.indexed_colors]] 74 | index = 17 75 | color = "#f5e0dc" 76 | -------------------------------------------------------------------------------- /common/.config/bat/config: -------------------------------------------------------------------------------- 1 | # This is `bat`s configuration file. Each line either contains a comment or 2 | # a command-line option that you want to pass to `bat` by default. You can 3 | # run `bat --help` to get a list of all possible configuration options. 4 | 5 | # Specify desired highlighting theme (e.g. "TwoDark"). Run `bat --list-themes` 6 | # for a list of all available themes 7 | --theme="Catppuccin Mocha" 8 | 9 | # Enable this to use italic text on the terminal. This is not supported on all 10 | # terminal emulators (like tmux, by default): 11 | #--italic-text=always 12 | 13 | # Uncomment the following line to disable automatic paging: 14 | #--paging=never 15 | 16 | # Uncomment the following line if you are using less version >= 551 and want to 17 | # enable mouse scrolling support in `bat` when running inside tmux. This might 18 | # disable text selection, unless you press shift. 19 | #--pager="less --RAW-CONTROL-CHARS --quit-if-one-screen --mouse" 20 | 21 | # Syntax mappings: map a certain filename pattern to a language. 22 | # Example 1: use the C++ syntax for Arduino .ino files 23 | # Example 2: Use ".gitignore"-style highlighting for ".ignore" files 24 | #--map-syntax "*.ino:C++" 25 | #--map-syntax ".ignore:Git Ignore" 26 | -------------------------------------------------------------------------------- /common/.config/btop/btop.log: -------------------------------------------------------------------------------- 1 | 2 | 2025/03/22 (16:19:25) | ===> btop++ v.1.4.0 3 | 2025/03/22 (16:19:25) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 4 | 2025/03/22 (16:19:25) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 5 | 2025/03/22 (16:19:25) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 6 | 2025/03/22 (16:19:27) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 7 | 2025/03/22 (16:19:27) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 8 | 2025/03/22 (16:19:29) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 9 | 2025/03/22 (16:19:29) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 10 | 2025/03/22 (16:19:30) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 11 | 2025/03/22 (16:19:31) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 12 | 2025/03/22 (16:19:32) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 13 | 2025/03/22 (16:19:33) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 14 | 2025/03/22 (16:19:35) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 15 | 2025/03/22 (16:19:35) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 16 | 17 | 2025/03/22 (16:21:19) | ===> btop++ v.1.4.0 18 | 2025/03/22 (16:21:19) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 19 | 2025/03/22 (16:21:19) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 20 | 2025/03/22 (16:21:19) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 21 | 2025/03/22 (16:21:19) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 22 | 2025/03/22 (16:21:20) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 23 | 2025/03/22 (16:21:21) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 24 | 2025/03/22 (16:21:22) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 25 | 2025/03/22 (16:21:23) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 26 | 2025/03/22 (16:21:24) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 27 | 2025/03/22 (16:21:25) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 28 | 2025/03/22 (16:21:26) | ERROR: Couldn't determine terminal size of "STDOUT_FILENO"! 29 | -------------------------------------------------------------------------------- /common/.config/btop/themes/catppuccin_mocha.theme: -------------------------------------------------------------------------------- 1 | # Main background, empty for terminal default, need to be empty if you want transparent background 2 | theme[main_bg]="#1E1E2E" 3 | 4 | # Main text color 5 | theme[main_fg]="#CDD6F4" 6 | 7 | # Title color for boxes 8 | theme[title]="#CDD6F4" 9 | 10 | # Highlight color for keyboard shortcuts 11 | theme[hi_fg]="#89B4FA" 12 | 13 | # Background color of selected item in processes box 14 | theme[selected_bg]="#45475A" 15 | 16 | # Foreground color of selected item in processes box 17 | theme[selected_fg]="#89B4FA" 18 | 19 | # Color of inactive/disabled text 20 | theme[inactive_fg]="#7F849C" 21 | 22 | # Color of text appearing on top of graphs, i.e uptime and current network graph scaling 23 | theme[graph_text]="#F5E0DC" 24 | 25 | # Background color of the percentage meters 26 | theme[meter_bg]="#45475A" 27 | 28 | # Misc colors for processes box including mini cpu graphs, details memory graph and details status text 29 | theme[proc_misc]="#F5E0DC" 30 | 31 | # CPU, Memory, Network, Proc box outline colors 32 | theme[cpu_box]="#cba6f7" #Mauve 33 | theme[mem_box]="#a6e3a1" #Green 34 | theme[net_box]="#eba0ac" #Maroon 35 | theme[proc_box]="#89b4fa" #Blue 36 | 37 | # Box divider line and small boxes line color 38 | theme[div_line]="#6C7086" 39 | 40 | # Temperature graph color (Green -> Yellow -> Red) 41 | theme[temp_start]="#a6e3a1" 42 | theme[temp_mid]="#f9e2af" 43 | theme[temp_end]="#f38ba8" 44 | 45 | # CPU graph colors (Teal -> Lavender) 46 | theme[cpu_start]="#94e2d5" 47 | theme[cpu_mid]="#74c7ec" 48 | theme[cpu_end]="#b4befe" 49 | 50 | # Mem/Disk free meter (Mauve -> Lavender -> Blue) 51 | theme[free_start]="#cba6f7" 52 | theme[free_mid]="#b4befe" 53 | theme[free_end]="#89b4fa" 54 | 55 | # Mem/Disk cached meter (Sapphire -> Lavender) 56 | theme[cached_start]="#74c7ec" 57 | theme[cached_mid]="#89b4fa" 58 | theme[cached_end]="#b4befe" 59 | 60 | # Mem/Disk available meter (Peach -> Red) 61 | theme[available_start]="#fab387" 62 | theme[available_mid]="#eba0ac" 63 | theme[available_end]="#f38ba8" 64 | 65 | # Mem/Disk used meter (Green -> Sky) 66 | theme[used_start]="#a6e3a1" 67 | theme[used_mid]="#94e2d5" 68 | theme[used_end]="#89dceb" 69 | 70 | # Download graph colors (Peach -> Red) 71 | theme[download_start]="#fab387" 72 | theme[download_mid]="#eba0ac" 73 | theme[download_end]="#f38ba8" 74 | 75 | # Upload graph colors (Green -> Sky) 76 | theme[upload_start]="#a6e3a1" 77 | theme[upload_mid]="#94e2d5" 78 | theme[upload_end]="#89dceb" 79 | 80 | # Process box color gradient for threads, mem and cpu usage (Sapphire -> Mauve) 81 | theme[process_start]="#74C7EC" 82 | theme[process_mid]="#89DCEB" 83 | theme[process_end]="#cba6f7" 84 | -------------------------------------------------------------------------------- /common/.config/ghostty/config_base: -------------------------------------------------------------------------------- 1 | theme = mocha 2 | background = 11111B 3 | 4 | cursor-color = FF00AF 5 | adjust-cursor-thickness = 1 6 | 7 | font-feature = dlig liga 8 | 9 | 10 | shell-integration = zsh 11 | 12 | confirm-close-surface = false 13 | 14 | 15 | window-padding-color = extend 16 | -------------------------------------------------------------------------------- /common/.config/ghostty/themes/mocha: -------------------------------------------------------------------------------- 1 | palette = 0=#11111b 2 | palette = 1=#f38ba8 3 | palette = 2=#a6e3a1 4 | palette = 3=#f9e2af 5 | palette = 4=#89b4fa 6 | palette = 5=#cba6f7 7 | palette = 6=#74c7ec 8 | palette = 7=#cdd6f4 9 | palette = 8=#585b70 10 | palette = 9=f38ba8 11 | palette = 10=a6e3a1 12 | palette = 11=#f9e2af 13 | palette = 12=#89b4fa 14 | palette = 13=#cba6f7 15 | palette = 14=#74c7ec 16 | palette = 15=#a6adc8 17 | background = #11111b 18 | foreground = #cdd6f4 19 | cursor-color = #d20f39 20 | selection-background = #c6a6f7 21 | selection-foreground = #1e1e2e 22 | -------------------------------------------------------------------------------- /common/.config/k9s/aliases.yaml: -------------------------------------------------------------------------------- 1 | aliases: 2 | dp: deployments 3 | sec: v1/secrets 4 | jo: jobs 5 | cr: clusterroles 6 | crb: clusterrolebindings 7 | ro: roles 8 | rb: rolebindings 9 | np: networkpolicies 10 | -------------------------------------------------------------------------------- /common/.config/k9s/config.yaml: -------------------------------------------------------------------------------- 1 | k9s: 2 | liveViewAutoRefresh: false 3 | screenDumpDir: /Users/john.enderby/Library/Application Support/k9s/screen-dumps 4 | refreshRate: 2 5 | maxConnRetry: 5 6 | readOnly: false 7 | noExitOnCtrlC: false 8 | ui: 9 | skin: "catppuccin-mocha" 10 | enableMouse: false 11 | headless: false 12 | logoless: false 13 | crumbsless: false 14 | reactive: false 15 | noIcons: false 16 | defaultsToFullScreen: false 17 | skipLatestRevCheck: false 18 | disablePodCounting: false 19 | shellPod: 20 | image: busybox:1.35.0 21 | namespace: default 22 | limits: 23 | cpu: 100m 24 | memory: 100Mi 25 | imageScans: 26 | enable: false 27 | exclusions: 28 | namespaces: [] 29 | labels: {} 30 | logger: 31 | tail: 100 32 | buffer: 5000 33 | sinceSeconds: -1 34 | textWrap: false 35 | showTime: false 36 | thresholds: 37 | cpu: 38 | critical: 90 39 | warn: 70 40 | memory: 41 | critical: 90 42 | warn: 70 43 | -------------------------------------------------------------------------------- /common/.config/k9s/skins/catppuccin-mocha.yaml: -------------------------------------------------------------------------------- 1 | k9s: 2 | body: 3 | fgColor: '#cdd6f4' 4 | bgColor: '#11111b' 5 | logoColor: '#cba6f7' 6 | prompt: 7 | fgColor: '#cdd6f4' 8 | bgColor: '#181825' 9 | suggestColor: '#89b4fa' 10 | help: 11 | fgColor: '#cdd6f4' 12 | bgColor: '#11111b' 13 | sectionColor: '#a6e3a1' 14 | keyColor: '#89b4fa' 15 | numKeyColor: '#eba0ac' 16 | frame: 17 | title: 18 | fgColor: '#94e2d5' 19 | bgColor: '#11111b' 20 | highlightColor: '#f5c2e7' 21 | counterColor: '#f9e2af' 22 | filterColor: '#a6e3a1' 23 | border: 24 | fgColor: '#cba6f7' 25 | focusColor: '#b4befe' 26 | menu: 27 | fgColor: '#cdd6f4' 28 | keyColor: '#89b4fa' 29 | numKeyColor: '#eba0ac' 30 | crumbs: 31 | fgColor: '#11111b' 32 | bgColor: '#eba0ac' 33 | activeColor: '#f2cdcd' 34 | status: 35 | newColor: '#89b4fa' 36 | modifyColor: '#b4befe' 37 | addColor: '#a6e3a1' 38 | pendingColor: '#fab387' 39 | errorColor: '#f38ba8' 40 | highlightColor: '#89dceb' 41 | killColor: '#cba6f7' 42 | completedColor: '#6c7086' 43 | info: 44 | fgColor: '#fab387' 45 | sectionColor: '#cdd6f4' 46 | views: 47 | table: 48 | fgColor: '#cdd6f4' 49 | bgColor: '#11111b' 50 | cursorFgColor: '#313244' 51 | cursorBgColor: '#45475a' 52 | markColor: '#f5e0dc' 53 | header: 54 | fgColor: '#f9e2af' 55 | bgColor: '#1e1e2e' 56 | sorterColor: '#89dceb' 57 | xray: 58 | fgColor: '#cdd6f4' 59 | bgColor: '#11111b' 60 | cursorColor: '#45475a' 61 | cursorTextColor: '#1e1e2e' 62 | graphicColor: '#f5c2e7' 63 | charts: 64 | bgColor: '#11111b' 65 | chartBgColor: '#11111b' 66 | dialBgColor: '#11111b' 67 | defaultDialColors: 68 | - '#a6e3a1' 69 | - '#f38ba8' 70 | defaultChartColors: 71 | - '#a6e3a1' 72 | - '#f38ba8' 73 | resourceColors: 74 | cpu: 75 | - '#cba6f7' 76 | - '#89b4fa' 77 | mem: 78 | - '#f9e2af' 79 | - '#fab387' 80 | yaml: 81 | keyColor: '#89b4fa' 82 | valueColor: '#cdd6f4' 83 | colonColor: '#a6adc8' 84 | logs: 85 | fgColor: '#cdd6f4' 86 | bgColor: '#1e1e2e' 87 | indicator: 88 | fgColor: '#b4befe' 89 | bgColor: '#1e1e2e' 90 | toggleOnColor: '#a6e3a1' 91 | toggleOffColor: '#a6adc8' 92 | dialog: 93 | fgColor: '#f9e2af' 94 | bgColor: '#9399b2' 95 | buttonFgColor: '#1e1e2e' 96 | buttonBgColor: '#7f849c' 97 | buttonFocusFgColor: '#1e1e2e' 98 | buttonFocusBgColor: '#f5c2e7' 99 | labelFgColor: '#f5e0dc' 100 | fieldFgColor: '#cdd6f4' 101 | -------------------------------------------------------------------------------- /common/.config/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 #11111B 14 | selection_foreground #1E1E2E 15 | selection_background #F5E0DC 16 | 17 | # Cursor colors 18 | cursor #D20F39 19 | cursor_text_color #CDD6F4 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 #11111b 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 #CBA6F7 72 | color13 #CBA6F7 73 | 74 | # cyan 75 | color6 #94E2D5 76 | color14 #94E2D5 77 | 78 | # white 79 | color7 #BAC2DE 80 | color15 #A6ADC8 81 | -------------------------------------------------------------------------------- /common/.config/lazygit/config.yml: -------------------------------------------------------------------------------- 1 | gui: 2 | theme: 3 | activeBorderColor: 4 | - '#cba6f7' 5 | - bold 6 | inactiveBorderColor: 7 | - '#a6adc8' 8 | optionsTextColor: 9 | - '#89b4fa' 10 | selectedLineBgColor: 11 | - '#313244' 12 | cherryPickedCommitBgColor: 13 | - '#45475a' 14 | cherryPickedCommitFgColor: 15 | - '#cba6f7' 16 | unstagedChangesColor: 17 | - '#f38ba8' 18 | defaultFgColor: 19 | - '#cdd6f4' 20 | searchingActiveBorderColor: 21 | - '#f9e2af' 22 | 23 | authorColors: 24 | '*': '#b4befe' 25 | git: 26 | paging: 27 | pager: delta --dark --paging=never 28 | -------------------------------------------------------------------------------- /common/.config/nvim/.luarc.json: -------------------------------------------------------------------------------- 1 | { 2 | "diagnostics.disable": [ 3 | "missing-fields" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/.config/nvim/.prettierrc.yaml: -------------------------------------------------------------------------------- 1 | proseWrap: always 2 | -------------------------------------------------------------------------------- /common/.config/nvim/.stylua.toml: -------------------------------------------------------------------------------- 1 | column_width = 120 2 | line_endings = "Unix" 3 | indent_type = "Spaces" 4 | indent_width = 2 5 | quote_style = "AutoPreferDouble" 6 | call_parentheses = "None" 7 | -------------------------------------------------------------------------------- /common/.config/nvim/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.fontSize": 14 3 | } -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/config/colors.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | -- 3 | -- ██████╗ ██████╗ ██╗ ██████╗ ██████╗ ███████╗ 4 | -- ██╔════╝██╔═══██╗██║ ██╔═══██╗██╔══██╗██╔════╝ 5 | -- ██║ ██║ ██║██║ ██║ ██║██████╔╝███████╗ 6 | -- ██║ ██║ ██║██║ ██║ ██║██╔══██╗╚════██║ 7 | -- ╚██████╗╚██████╔╝███████╗╚██████╔╝██║ ██║███████║ 8 | -- ╚═════╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ 9 | -- 10 | --]] 11 | 12 | -- Catppuccin mocha colors 13 | local colors = { 14 | rosewater = "#f5e0dc", 15 | flamingo = "#f2cdcd", 16 | pink = "#f5c2e7", 17 | mauve = "#cba6f7", 18 | red = "#f38ba8", 19 | maroon = "#eba0ac", 20 | peach = "#fab387", 21 | yellow = "#f9e2af", 22 | green = "#a6e3a1", 23 | teal = "#94e2d5", 24 | sky = "#89dceb", 25 | sapphire = "#74c7ec", 26 | blue = "#89b4fa", 27 | lavender = "#b4befe", 28 | text = "#cdd6f4", 29 | subtext1 = "#bac2de", 30 | subtext0 = "#a6adc8", 31 | overlay2 = "#9399b2", 32 | overlay1 = "#7f849c", 33 | overlay0 = "#6c7086", 34 | surface2 = "#585b70", 35 | surface1 = "#45475a", 36 | surface0 = "#313244", 37 | base = "#1e1e2e", 38 | mantle = "#181825", 39 | crust = "#11111b", 40 | transparent = { 41 | rosewater = "#2D2A34", -- 5% brighter 42 | flamingo = "#2D2933", -- 5% brighter 43 | pink = "#2D263C", -- 5% brighter 44 | mauve = "#2A1F39", -- 5% brighter 45 | red = "#2D1F35", -- 5% brighter 46 | maroon = "#2D1F35", -- 5% brighter 47 | peach = "#2D2229", -- 5% brighter 48 | yellow = "#2D2F31", -- 5% brighter 49 | green = "#2A2F34", -- 5% brighter 50 | teal = "#25303B", -- 5% brighter 51 | sky = "#253344", -- 5% brighter 52 | sapphire = "#212C3D", -- 5% brighter 53 | blue = "#25314B", -- 5% brighter 54 | lavender = "#2A2D43", -- 5% brighter 55 | }, 56 | } 57 | 58 | return colors 59 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/config/wkmaps/buffers.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { "b", group = "Buffer" }, 3 | { "bn", ":bnext", desc = "Next" }, 4 | { "bb", ":bprevious", desc = "Previous" }, 5 | { "bd", ":bd", desc = "Delete" }, 6 | { "bx", ":%bd|e#|bd#", desc = "Delete all except current" }, 7 | } 8 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/config/wkmaps/copilot.lua: -------------------------------------------------------------------------------- 1 | local copilot_chat = require "CopilotChat" 2 | 3 | return { 4 | { 5 | mode = { "n" }, 6 | { "c", group = "CoPilot", icon = icons.misc.CoPilot }, 7 | { "cj", "(copilot-next)", desc = "Next Suggestion" }, 8 | { "ck", "(copilot-previous)", desc = "Previous Suggestion" }, 9 | { "cy", "(copilot-accept)", desc = "Accept Suggestion" }, 10 | { "cd", "(copilot-dismiss)", desc = "Dismiss Suggestion" }, 11 | { "ct", ":Copilot toggle", desc = "Copilot: Toggle" }, 12 | { 13 | "cc", 14 | function() 15 | copilot_chat.toggle() 16 | end, 17 | desc = "Toggle Chat", 18 | }, 19 | { 20 | "cr", 21 | function() 22 | copilot_chat.reset() 23 | end, 24 | desc = "Reset Chat", 25 | }, 26 | }, 27 | { 28 | mode = { "v" }, 29 | { "c", group = "CoPilot", icon = icons.misc.CoPilot }, 30 | { 31 | "ca", 32 | function() 33 | copilot_chat.ask("How can I optimise this?", { 34 | context = { "selection", "buffer", "git:staged" }, 35 | }) 36 | end, 37 | desc = "Ask (Visual Selection)", 38 | }, 39 | { 40 | "ce", 41 | function() 42 | vim.cmd "CopilotChatExplain" 43 | end, 44 | desc = "Ask (Visual Selection)", 45 | }, 46 | }, 47 | } 48 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/config/wkmaps/general.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | mode = { "n", "v" }, 4 | { 5 | "F", 6 | function() 7 | require("conform").format { async = true, lsp_fallback = true } 8 | end, 9 | desc = "Format buffer", 10 | }, 11 | { "q", "q", desc = "Quit" }, 12 | { "/", "(comment_toggle_linewise_current)", desc = "Comment toggle current line" }, 13 | }, 14 | } 15 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/config/wkmaps/git.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { "g", group = "Git" }, 3 | { 4 | "gg", 5 | "lua require 'core.plugins.devtools.toggleterm'.lazygit_toggle()", 6 | desc = "LazyGit", 7 | icon = icons.git.Octoface, 8 | }, 9 | { 10 | "gh", 11 | "lua require 'core.plugins.devtools.toggleterm'.gh_dash_toggle()", 12 | desc = "gh Dash", 13 | icon = icons.git.Octoface, 14 | }, 15 | { "gb", ":Gitsigns blame_line", desc = "Git blame" }, 16 | { "gB", ":Gitsigns blame", desc = "Git blame" }, 17 | { "gd", group = "Diff view" }, 18 | { "gdo", ":DiffviewOpen", desc = "Open diffview" }, 19 | { "gdc", ":DiffviewClose", desc = "Close diffview" }, 20 | { "gdr", ":DiffviewRefresh", desc = "Refresh diffview" }, 21 | { "gx", ":lua Snacks.gitbrowse()", desc = "Open GitRepo" }, 22 | } 23 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/config/wkmaps/grapple.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { "h", group = "Harpoon", icon = icons.misc.Hook }, 3 | { 4 | "hh", 5 | "Grapple toggle", 6 | desc = "Add to list", 7 | }, 8 | 9 | { 10 | "hl", 11 | "Grapple toggle_tags", 12 | desc = "Toggle list", 13 | }, 14 | 15 | { 16 | "ha", 17 | "Grapple select index=1", 18 | desc = "Harpoon 1", 19 | }, 20 | 21 | { 22 | "hs", 23 | "Grapple select index=2", 24 | desc = "Harpoon 2", 25 | }, 26 | 27 | { 28 | "hd", 29 | "Grapple select index=3", 30 | desc = "Harpoon 3", 31 | }, 32 | 33 | { 34 | "hf", 35 | "Grapple select index=4", 36 | desc = "Harpoon 4", 37 | }, 38 | 39 | { 40 | "", 41 | "Grapple cycle_tags next", 42 | desc = "Go to next tag", 43 | }, 44 | 45 | { 46 | "", 47 | "Grapple cycle_tags prev", 48 | desc = "Go to previous tag", 49 | }, 50 | } 51 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/config/wkmaps/grugfar.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { "f", group = "Find & Replace", icon = icons.ui.Search }, 3 | { 4 | "ff", 5 | function() 6 | require("grug-far").open { prefills = { paths = vim.fn.expand "%" } } 7 | end, 8 | desc = "Current file", 9 | }, 10 | { "fr", "GrugFar", desc = "Within project" }, 11 | { "fv", "GrugFarWithin", desc = "Within selection" }, 12 | { 13 | "fe", 14 | function() 15 | local grug = require "grug-far" 16 | local ext = vim.bo.buftype == "" and vim.fn.expand "%:e" 17 | grug.open { 18 | transient = true, 19 | prefills = { 20 | filesFilter = ext and ext ~= "" and "*." .. ext or nil, 21 | }, 22 | } 23 | end, 24 | mode = { "n", "v" }, 25 | desc = "Search and Replace", 26 | }, 27 | } 28 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/config/wkmaps/init.lua: -------------------------------------------------------------------------------- 1 | return { 2 | buffers = require(... .. ".buffers"), 3 | copilot = require(... .. ".copilot"), 4 | general = require(... .. ".general"), 5 | git = require(... .. ".git"), 6 | grug = require(... .. ".grugfar"), 7 | grapple = require(... .. ".grapple"), 8 | lsp = require(... .. ".lsp"), 9 | neotest = require(... .. ".neotest"), 10 | navigation = require(... .. ".navigation"), 11 | plugins = require(... .. ".plugins"), 12 | splits = require(... .. ".splits"), 13 | telescope = require(... .. ".telescope"), 14 | toggle = require(... .. ".toggle"), 15 | } 16 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/config/wkmaps/lsp.lua: -------------------------------------------------------------------------------- 1 | return { 2 | ------------------------------------- 3 | --- LSP 4 | ------------------------------------- 5 | { "l", group = "LSP", icon = icons.ui.Code }, 6 | { 7 | "lc", 8 | ":TSC", 9 | desc = "Check TypeScript types", 10 | }, 11 | { "li", ":LspInfo", desc = "LSP info" }, 12 | { "ll", ":Trouble loclist toggle", desc = "Location list" }, 13 | { "lq", ":Trouble qflist toggle", desc = "Quickfix list" }, 14 | { "lv", ":Trouble lsp toggle focus=false", desc = "LSP toggle" }, 15 | -- TODO: need to create a picker that passes LSP name to LspRestart 16 | { "lr", ":LspRestart", desc = "Restart LSP Server" }, 17 | { 18 | "ls", 19 | ":Trouble symbols", 20 | desc = "Document Symbols", 21 | }, 22 | ------------------------------------- 23 | --- Diagnostics 24 | ------------------------------------- 25 | { "ld", group = "Diagnostics" }, 26 | { "ldX", ":Trouble diagnostics toggle filter.buf=0", desc = "Buffer diagnostics" }, 27 | { "ldx", ":Trouble diagnostics toggle", desc = "Diagnostics" }, 28 | ------------------------------------- 29 | --- Quickfix 30 | ------------------------------------- 31 | { "a", group = "Append to:", icon = icons.ui.List }, 32 | { 33 | "aq", 34 | function() 35 | local entry = { 36 | filename = vim.fn.expand "%:p", 37 | lnum = vim.fn.line ".", 38 | col = vim.fn.col ".", 39 | text = vim.fn.getline ".", 40 | } 41 | 42 | vim.fn.setqflist({ entry }, "a") 43 | print("Added to quickfix list: " .. entry.text) 44 | end, 45 | desc = "Qflist", 46 | icon = icons.ui.List, 47 | }, 48 | { 49 | "al", 50 | function() 51 | local entry = { 52 | filename = vim.fn.expand "%:p", 53 | lnum = vim.fn.line ".", 54 | col = vim.fn.col ".", 55 | text = vim.fn.getline ".", 56 | } 57 | 58 | vim.fn.setloclist(0, { entry }, "a") 59 | print("Added to location list: " .. entry.text) 60 | end, 61 | desc = "Loclist", 62 | icon = icons.ui.List, 63 | }, 64 | { 65 | "K", 66 | function() 67 | vim.lsp.buf.hover() 68 | end, 69 | desc = "Hover Documentation", 70 | }, 71 | } 72 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/config/wkmaps/navigation.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { "n", group = "Navigation", icon = icons.ui.FileTree }, 3 | { "nf", ":Neotree float toggle", desc = "Neotree Float" }, 4 | { "ne", ":Neotree left toggle", desc = "Neotree Sidebar" }, 5 | } 6 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/config/wkmaps/neotest.lua: -------------------------------------------------------------------------------- 1 | return { 2 | 3 | { "T", "", desc = "+Test", icon = icons.misc.Testtube }, 4 | { 5 | "Ta", 6 | function() 7 | require("neotest").run.run(vim.uv.cwd()) 8 | end, 9 | desc = "Run All Test Files", 10 | }, 11 | { 12 | "Tc", 13 | function() 14 | vim.cmd "CoverageToggle" 15 | end, 16 | desc = "Test Coverage", 17 | }, 18 | { 19 | "TC", 20 | function() 21 | vim.cmd "CoverageLoad" 22 | end, 23 | desc = "Test Coverage", 24 | }, 25 | { 26 | "Tf", 27 | function() 28 | require("neotest").run.run(vim.fn.expand "%") 29 | end, 30 | desc = "Run File", 31 | }, 32 | { 33 | "Tk", 34 | function() 35 | require("neotest").run.stop() 36 | end, 37 | desc = "Kill", 38 | }, 39 | { 40 | "Tl", 41 | function() 42 | require("neotest").run.run_last() 43 | end, 44 | desc = "Run Last", 45 | }, 46 | { 47 | "Tn", 48 | function() 49 | require("neotest").run.run() 50 | end, 51 | desc = "Run Nearest", 52 | }, 53 | { 54 | "To", 55 | function() 56 | require("neotest").output.open { enter = true, auto_close = true } 57 | end, 58 | desc = "Show Output", 59 | }, 60 | { 61 | "Tp", 62 | function() 63 | require("neotest").output_panel.toggle() 64 | end, 65 | desc = "Toggle Output Panel", 66 | }, 67 | { 68 | "Ts", 69 | function() 70 | require("neotest").summary.toggle() 71 | end, 72 | desc = "Toggle Summary", 73 | }, 74 | { 75 | "Tw", 76 | function() 77 | require("neotest").watch.toggle(vim.fn.expand "%") 78 | end, 79 | desc = "Toggle Watch", 80 | }, 81 | } 82 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/config/wkmaps/plugins.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { "p", group = "Plugins", icon = icons.misc.Lazy }, 3 | { "p?", ":Lazy help", desc = "Help" }, 4 | { "pd", ":Lazy debug", desc = "Debug" }, 5 | { "ph", ":Lazy health", desc = "Health" }, 6 | { "pl", ":Lazy log", desc = "Log" }, 7 | { "pm", ":Mason", icon = icons.misc.Plug, desc = "Mason" }, 8 | { "po", ":Lazy", desc = "Open" }, 9 | { "pp", ":Lazy profile", desc = "Profile" }, 10 | { "ps", ":Lazy sync", desc = "Sync" }, 11 | { "pu", ":Lazy update", desc = "Update" }, 12 | } 13 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/config/wkmaps/splits.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { "x", group = "Split", icon = icons.misc.Split }, 3 | { "xd", "close", desc = "Close current split" }, 4 | { "xe", "=", desc = "Equalize splits" }, 5 | { "xh", ":sp", desc = "Horizontally" }, 6 | { "xs", ":vs", desc = "Vertically" }, 7 | } 8 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/config/wkmaps/telescope.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { "", "Telescope buffers", desc = "Open files" }, 3 | { "s", group = "Search" }, 4 | { "sb", "Telescope buffers", desc = "Buffers" }, 5 | { 6 | "sc", 7 | function() 8 | require("colorscheme-persist").picker() 9 | end, 10 | desc = "Colorschemes", 11 | }, 12 | { "sd", "Telescope diagnostics", desc = "Diagnostics" }, 13 | { "sf", "Telescope find_files", desc = "Files" }, 14 | { "sg", "Telescope live_grep", desc = "Grep" }, 15 | { "sh", "Telescope help_tags", desc = "Help" }, 16 | { "sk", "Telescope keymaps", desc = "Keymaps" }, 17 | { 18 | "sn", 19 | ":lua require('telescope.builtin').find_files { cwd = vim.fn.stdpath 'config' }", 20 | desc = "Neovim config files", 21 | }, 22 | { 23 | "sp", 24 | "Telescope project project theme=dropdown layout_config={width=0.5, height=0.4}", 25 | desc = "Diagnostics", 26 | }, 27 | { "sr", "Telescope resume", desc = "Resume project" }, 28 | { "ss", "Telescope builtin", desc = "Builtin pickers" }, 29 | { 30 | "st", 31 | "TodoTelescope theme=dropdown previewer=false layout_config={width=0.5,height=0.3}", 32 | desc = "TODOs", 33 | }, 34 | { "sv", "Telescope git_files", desc = "Git files" }, 35 | { "sw", "Telescope grep_string", desc = "Current word" }, 36 | { "sx", "Telescope commands", desc = "Commands" }, 37 | { "s.", "Telescope oldfiles", desc = "Recent files" }, 38 | } 39 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/extra/debugmaster.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "miroshQa/debugmaster.nvim", 3 | config = function() 4 | local status_ok, dm = pcall(require, "debugmaster") 5 | 6 | vim.keymap.set({ "n", "v" }, "i", dm.mode.toggle, { nowait = true }) 7 | end, 8 | } 9 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/extra/focus.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "cdmill/focus.nvim", 3 | 4 | config = function() 5 | local status_ok, focus = pcall(require, "focus") 6 | if not status_ok then 7 | return 8 | end 9 | 10 | focus.setup { 11 | window = { 12 | backdrop = 1, 13 | width = 160, 14 | }, 15 | plugins = { 16 | twilight = { enabled = false }, 17 | }, 18 | } 19 | end, 20 | } 21 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/extra/harpoon.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "ThePrimeagen/harpoon", 3 | branch = "harpoon2", 4 | dependencies = { "nvim-lua/plenary.nvim" }, 5 | event = "VeryLazy", 6 | 7 | config = function() 8 | local status_ok, harpoon = pcall(require, "harpoon") 9 | if not status_ok then 10 | return 11 | end 12 | 13 | harpoon.setup {} 14 | -- Toggle previous & next buffers stored within Harpoon list 15 | -- vim.keymap.set("n", "", function() 16 | -- harpoon:list():prev() 17 | -- end) 18 | -- vim.keymap.set("n", "", function() 19 | -- harpoon:list():next() 20 | -- end) 21 | end, 22 | } 23 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/extra/indent-blankline.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "lukas-reineke/indent-blankline.nvim", 3 | event = "BufRead", 4 | config = function() 5 | local status_ok, ibl = pcall(require, "ibl") 6 | if not status_ok then 7 | return 8 | end 9 | 10 | local hooks = require "ibl.hooks" 11 | -- create the highlight groups in the highlight setup hook, so they are reset 12 | -- every time the colorscheme changes 13 | hooks.register(hooks.type.HIGHLIGHT_SETUP, function() 14 | vim.api.nvim_set_hl(0, "RainbowRed", { fg = colors.transparent.red }) 15 | vim.api.nvim_set_hl(0, "RainbowYellow", { fg = colors.transparent.yellow }) 16 | vim.api.nvim_set_hl(0, "RainbowBlue", { fg = colors.transparent.blue }) 17 | vim.api.nvim_set_hl(0, "RainbowOrange", { fg = colors.transparent.flamingo }) 18 | vim.api.nvim_set_hl(0, "RainbowGreen", { fg = colors.transparent.green }) 19 | vim.api.nvim_set_hl(0, "RainbowViolet", { fg = colors.transparent.mauve }) 20 | vim.api.nvim_set_hl(0, "RainbowCyan", { fg = colors.transparent.sapphire }) 21 | end) 22 | 23 | local highlight = { 24 | "RainbowRed", 25 | "RainbowYellow", 26 | "RainbowBlue", 27 | "RainbowOrange", 28 | "RainbowGreen", 29 | "RainbowViolet", 30 | "RainbowCyan", 31 | } 32 | 33 | ibl.setup { 34 | enabled = false, 35 | indent = { highlight = highlight }, 36 | scope = { enabled = false }, 37 | } 38 | end, 39 | } 40 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/extra/navbuddy.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "SmiteshP/nvim-navbuddy", 3 | dependencies = { 4 | "SmiteshP/nvim-navic", 5 | "MuniTanjim/nui.nvim", 6 | }, 7 | config = function() 8 | local status_ok, navbuddy = pcall(require, "nvim-navbuddy") 9 | if not status_ok then 10 | return 11 | end 12 | 13 | navbuddy.setup { 14 | window = { 15 | border = "rounded", 16 | scrolloff = 4, 17 | }, 18 | icons = { 19 | File = icons.kind.File .. " ", 20 | Module = icons.kind.Module .. " ", 21 | Namespace = icons.kind.Namespace .. " ", 22 | Package = icons.kind.Package .. " ", 23 | Class = icons.kind.Class .. " ", 24 | Method = icons.kind.Method .. " ", 25 | Property = icons.kind.Property .. " ", 26 | Field = icons.kind.Field .. " ", 27 | Constructor = icons.kind.Constructor .. " ", 28 | Enum = icons.kind.Enum .. " ", 29 | Interface = icons.kind.Interface .. " ", 30 | Function = icons.kind.Function .. " ", 31 | Variable = icons.kind.Variable .. " ", 32 | Constant = icons.kind.Constant .. " ", 33 | String = icons.kind.String .. " ", 34 | Number = icons.kind.Number .. " ", 35 | Boolean = icons.kind.Boolean .. " ", 36 | Array = icons.kind.Array .. " ", 37 | Object = icons.kind.Object .. " ", 38 | Key = icons.kind.Key .. " ", 39 | Null = icons.kind.Null .. " ", 40 | EnumMember = icons.kind.EnumMember .. " ", 41 | Struct = icons.kind.Struct .. " ", 42 | Event = icons.kind.Event .. " ", 43 | Operator = icons.kind.Operator .. " ", 44 | TypeParameter = icons.kind.TypeParameter .. " ", 45 | }, 46 | lsp = { 47 | auto_attach = true, 48 | }, 49 | } 50 | end, 51 | } 52 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/extra/navic.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "SmiteshP/nvim-navic", 3 | config = function() 4 | local status_ok, navic = pcall(require, "nvim-navic") 5 | 6 | navic.setup { 7 | icons = { 8 | File = icons.kind.File .. " ", 9 | Module = icons.kind.Module .. " ", 10 | Namespace = icons.kind.Namespace .. " ", 11 | Package = icons.kind.Package .. " ", 12 | Class = icons.kind.Class .. " ", 13 | Method = icons.kind.Method .. " ", 14 | Property = icons.kind.Property .. " ", 15 | Field = icons.kind.Field .. " ", 16 | Constructor = icons.kind.Constructor .. " ", 17 | Enum = icons.kind.Enum .. " ", 18 | Interface = icons.kind.Interface .. " ", 19 | Function = icons.kind.Function .. " ", 20 | Variable = icons.kind.Variable .. " ", 21 | Constant = icons.kind.Constant .. " ", 22 | String = icons.kind.String .. " ", 23 | Number = icons.kind.Number .. " ", 24 | Boolean = icons.kind.Boolean .. " ", 25 | Array = icons.kind.Array .. " ", 26 | Object = icons.kind.Object .. " ", 27 | Key = icons.kind.Key .. " ", 28 | Null = icons.kind.Null .. " ", 29 | EnumMember = icons.kind.EnumMember .. " ", 30 | Struct = icons.kind.Struct .. " ", 31 | Event = icons.kind.Event .. " ", 32 | Operator = icons.kind.Operator .. " ", 33 | TypeParameter = icons.kind.TypeParameter .. " ", 34 | }, 35 | lsp = { 36 | auto_attach = true, 37 | preference = { "vtsls", "graphql" }, 38 | }, 39 | highlight = true, 40 | } 41 | end, 42 | } 43 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/extra/nvim-dap.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "mfussenegger/nvim-dap", 3 | event = "VeryLazy", 4 | 5 | config = function() 6 | local status_ok, dap = pcall(require, "nvim-dap") 7 | if not status_ok then 8 | return 9 | end 10 | end, 11 | } 12 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/extra/precognition.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "tris203/precognition.nvim", 3 | event = "BufRead", 4 | config = function() 5 | local status_ok, precognition = pcall(require, "precognition") 6 | if not status_ok then 7 | return 8 | end 9 | precognition.setup { 10 | highlightColor = { 11 | link = "Comment", 12 | }, 13 | } 14 | end, 15 | } 16 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/extra/tstools.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "pmizio/typescript-tools.nvim", 3 | dependencies = { "nvim-lua/plenary.nvim", "neovim/nvim-lspconfig" }, 4 | opts = {}, 5 | config = function() 6 | local status_ok, ts_tools = pcall(require, "typescript-tools") 7 | if not status_ok then 8 | return 9 | end 10 | 11 | ts_tools.setup { 12 | settings = { 13 | tsserver_plugins = { 14 | "@styled/typescript-styled-plugin", 15 | }, 16 | }, 17 | } 18 | end, 19 | } 20 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/extra/twilight.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "folke/twilight.nvim", 3 | event = { "BufRead", "BufNewFile" }, 4 | config = function() 5 | local status_ok, twilight = pcall(require, "twilight") 6 | if not status_ok then 7 | return 8 | end 9 | twilight.setup {} 10 | end, 11 | } 12 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/filetypes.lua: -------------------------------------------------------------------------------- 1 | -- forces specific "filetypes" for files with odd extensions 2 | -- helps with syntax highlighting especially for configuration files 3 | vim.filetype.add { 4 | extension = { 5 | conf = "conf", 6 | env = "dotenv", 7 | rasi = "rasi", 8 | }, 9 | filename = { 10 | [".env"] = "dotenv", 11 | ["tsconfig.json"] = "jsonc", 12 | [".yamlfmt"] = "yaml", 13 | [".cfg"] = "cfg", 14 | }, 15 | pattern = { 16 | ["%.env%.[%w_.-]+"] = "sh", 17 | [".*/kitty/.*%.conf"] = "bash", 18 | [".*%.rc"] = "bash", 19 | [".*/hypr/.*%.conf"] = "hyprlang", 20 | }, 21 | } 22 | 23 | -- custom filetype icons 24 | 25 | require("nvim-web-devicons").set_icon { 26 | ["cfg"] = { 27 | icon = "", 28 | name = "Configuration", 29 | }, 30 | } 31 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/globals.lua: -------------------------------------------------------------------------------- 1 | -- Default state for virtual text 2 | _G._diagnostics_virtual_text_enabled = false 3 | 4 | -- Default cokeline state 5 | _G._cokeline_enabled = false 6 | 7 | -- Inlay hints state 8 | _G._inlay_hints_enabled = false 9 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/neovide.lua: -------------------------------------------------------------------------------- 1 | -- --------------------------------------- 2 | -- -- Colorscheme overrides 3 | -- --------------------------------------- 4 | -- local neovide_bgs = { 5 | -- catppuccin = "#11111b", 6 | -- ["rose-pine"] = "#11111b", 7 | -- roseprime = "#11111b", 8 | -- } 9 | -- 10 | -- local function set_neovide_background() 11 | -- local name = vim.g.colors_name 12 | -- local bg = neovide_bgs[name] 13 | -- if not bg then 14 | -- return 15 | -- end 16 | -- 17 | -- for _, grp in ipairs { 18 | -- "Normal", 19 | -- "NormalNC", 20 | -- "SignColumn", 21 | -- "VertSplit", 22 | -- "EndOfBuffer", 23 | -- } do 24 | -- vim.cmd(string.format("highlight %s guibg=%s", grp, bg)) 25 | -- end 26 | -- end 27 | -- 28 | -- -- Apply immediately if the theme’s already loaded 29 | -- set_neovide_background() 30 | -- 31 | -- -- Re-apply after *any* colorscheme change 32 | -- vim.api.nvim_create_autocmd("ColorScheme", { 33 | -- callback = set_neovide_background, 34 | -- desc = "Reapply Neovide bg override for selected themes", 35 | -- }) 36 | 37 | --------------------------------------- 38 | -- Neovide overrides 39 | --------------------------------------- 40 | vim.opt.guicursor = "v:hor20-Cursor,i:ver30-Cursor,n-v-c-i:blinkon500-blinkoff500-Cursor" 41 | vim.api.nvim_set_hl(0, "Cursor", { fg = "NONE", bg = "#FF00AF" }) 42 | 43 | if vim.fn.has "linux" == 1 then 44 | vim.g.neovide_scale_factor = 0.7 45 | end 46 | 47 | -- Neovide config options 48 | vim.g.neovide_cursor_animation_length = 0.210 49 | vim.g.neovide_cursor_animate_command_line = false 50 | vim.g.neovide_opacity = 0.7 51 | vim.g.neovide_normal_opacity = 0.8 52 | -- 53 | vim.g.neovide_floating_shadow = true 54 | vim.g.neovide_floating_z_height = 10 55 | vim.g.neovide_light_angle_degrees = 45 56 | vim.g.neovide_light_radius = 5 57 | 58 | vim.g.neovide_floating_blur_amount_x = 5.0 59 | vim.g.neovide_floating_blur_amount_y = 5.0 60 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/overrides.lua: -------------------------------------------------------------------------------- 1 | -- Check if any colorscheme is loaded 2 | local current_colorscheme = vim.g.colors_name 3 | local status = function() 4 | vim.cmd "highlight StatusLine guibg=#222222 guifg=#eeeeee" 5 | end -- replace with your preferred colors 6 | local status_nc = function() 7 | vim.cmd "highlight StatusLineNC guibg=#222222 guifg=#eeeeee" 8 | end -- optional: inactive windows 9 | 10 | if not current_colorscheme or current_colorscheme == "default" then 11 | -- Set statusline background and foreground 12 | status() 13 | status_nc() 14 | end 15 | 16 | vim.api.nvim_create_autocmd("ColorScheme", { 17 | pattern = "*", 18 | callback = function() 19 | if not vim.g.colors_name or vim.g.colors_name == "" or vim.g.colors_name == "default" then 20 | status() 21 | status_nc() 22 | end 23 | end, 24 | }) 25 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/_testing_ground/smear-cursor.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "sphamba/smear-cursor.nvim", 3 | cond = vim.g.neovide == nil, 4 | config = function() 5 | local status_ok, smear = pcall(require, "smear_cursor") 6 | if not status_ok then 7 | return 8 | end 9 | 10 | smear.setup { 11 | -- Motion rules 12 | smear_between_buffers = false, 13 | smear_between_neighbor_lines = true, 14 | scroll_buffer_space = true, 15 | 16 | -- Cursor and color rules 17 | cursor_color = "#FF00AF", 18 | hide_target_hack = true, 19 | never_draw_over_target = true, 20 | 21 | -- Inser mode rules 22 | smear_insert_mode = true, 23 | 24 | -- Physics 25 | stiffness = 1.0, 26 | trailing_stiffness = 0.3, 27 | stiffness_insert_mode = 1.0, 28 | trailing_stiffness_insert_mode = 0.3, 29 | distance_stop_animating = 0.1, 30 | 31 | -- Timing 32 | time_interval = 17, 33 | } 34 | end, 35 | } 36 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/devtools/bloat.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "dundalek/bloat.nvim", 3 | cmd = "Bloat", 4 | } 5 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/devtools/crates.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "saecki/crates.nvim", 3 | tag = "stable", 4 | event = { "BufRead Cargo.toml" }, 5 | 6 | config = function() 7 | local status_ok, crates = pcall(require, "crates") 8 | if not status_ok then 9 | return 10 | end 11 | 12 | crates.setup { 13 | completion = { 14 | crates = { enabled = true, max_results = 8, min_chars = 3 }, 15 | cmp = { enabled = true }, 16 | }, 17 | popup = { 18 | border = "rounded", 19 | }, 20 | null_ls = { 21 | enabled = true, 22 | name = "crates.nvim", 23 | }, 24 | } 25 | end, 26 | } 27 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/devtools/grugfar.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "MagicDuck/grug-far.nvim", 3 | cmd = "GrugFar", 4 | config = function() 5 | local status_ok, grugfar = pcall(require, "grug-far") 6 | if not status_ok then 7 | return 8 | end 9 | 10 | grugfar.setup {} 11 | end, 12 | } 13 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/devtools/neotest.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "nvim-neotest/neotest", 3 | event = "BufRead", 4 | dependencies = { 5 | "nvim-neotest/nvim-nio", 6 | "nvim-lua/plenary.nvim", 7 | "antoinemadec/FixCursorHold.nvim", 8 | "nvim-treesitter/nvim-treesitter", 9 | 10 | -- Adapters etc. 11 | "nvim-neotest/neotest-jest", 12 | }, 13 | 14 | config = function() 15 | local status_ok, neotest = pcall(require, "neotest") 16 | 17 | if not status_ok then 18 | return 19 | end 20 | 21 | neotest.setup { 22 | 23 | adapters = { 24 | -- JEST 25 | require "neotest-jest" { 26 | jestCommand = "npm run test --", 27 | jestConfigFile = "jest.config.ts", 28 | env = { CI = true }, 29 | cw = function() 30 | return vim.fn.getcwd() 31 | end, 32 | }, 33 | }, 34 | } 35 | end, 36 | } 37 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/devtools/nvim-coverage.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "andythigpen/nvim-coverage", 3 | event = "BufRead", 4 | dependencies = { "nvim-lua/plenary.nvim" }, 5 | 6 | config = function() 7 | local status_ok, coverage = pcall(require, "coverage") 8 | if not status_ok then 9 | return 10 | end 11 | coverage.setup { 12 | auto_reload = true, 13 | commands = true, 14 | highlights = { 15 | covered = { fg = colors.green }, 16 | uncovered = { fg = colors.red }, 17 | }, 18 | -- signs = { 19 | -- covered = { text = icons.ui.TestCovered }, 20 | -- uncovered = { text = icons.ui.TestUncovered }, 21 | -- }, 22 | } 23 | end, 24 | } 25 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/editing/autotags.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "windwp/nvim-ts-autotag", 3 | event = "InsertEnter", 4 | module = "nvim-ts-autotag", 5 | config = function() 6 | local status_ok, ts_autotag = pcall(require, "nvim-ts-autotag") 7 | if not status_ok then 8 | return 9 | end 10 | ts_autotag.setup { 11 | filetypes = { "html", "xml", "javascriptreact", "typescriptreact", }, 12 | } 13 | end, 14 | } 15 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/editing/copilot-chat.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "CopilotC-Nvim/CopilotChat.nvim", 3 | cmd = { "InsertEnter", "CopilotChat", "CopilotChatExplain" }, 4 | dependencies = { 5 | "zbirenbaum/copilot.lua", 6 | }, 7 | build = "make tiktoken", 8 | config = function() 9 | local status_ok, copilot_chat = pcall(require, "CopilotChat") 10 | if not status_ok then 11 | return 12 | end 13 | 14 | copilot_chat.setup {} 15 | end, 16 | } 17 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/editing/copilot.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "zbirenbaum/copilot.lua", 3 | cmd = "Copilot", 4 | event = "InsertEnter", 5 | config = function() 6 | local status_ok, copilot = pcall(require, "copilot") 7 | if not status_ok then 8 | return 9 | end 10 | copilot.setup { 11 | panel = { 12 | layout = { 13 | position = "right", 14 | ratio = 0.3, 15 | }, 16 | keymap = { 17 | open = "", 18 | }, 19 | }, 20 | suggestion = { 21 | auto_trigger = false, 22 | keymap = { 23 | accept = "", 24 | }, 25 | }, 26 | } 27 | end, 28 | } 29 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/editing/peek.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "toppair/peek.nvim", 3 | event = "VeryLazy", 4 | build = "deno task --quiet build:fast", 5 | config = function() 6 | local status_ok, peek = pcall(require, "peek") 7 | if not status_ok then 8 | return 9 | end 10 | 11 | vim.api.nvim_create_user_command("PeekOpen", peek.open, {}) 12 | vim.api.nvim_create_user_command("PeekClose", peek.close, {}) 13 | 14 | peek.setup { 15 | app = "browser", 16 | } 17 | end, 18 | } 19 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/editing/qmk.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "codethread/qmk.nvim", 3 | event = "VeryLazy", 4 | config = function() 5 | local status_ok, qmk = pcall(require, "qmk") 6 | if not status_ok then 7 | return 8 | end 9 | 10 | local conf = { 11 | name = "LAYOUT", 12 | layout = { 13 | "x x x x x x _ _ _ x x x x x x", 14 | "x x x x x x _ _ _ x x x x x x", 15 | "x x x x x x _ _ _ x x x x x x", 16 | "x x x x x x x _ x x x x x x x", 17 | "_ _ x x x x x _ x x x x x _ _", 18 | }, 19 | comment_preview = { 20 | keymap_overrides = { 21 | -- default keys 22 | KC_BSPC = "󰁮", 23 | KC_DEL = "󰹾", 24 | KC_LSFT = "󰘶", 25 | KC_RSFT = "󰘶", 26 | LSFT = "󰘶", 27 | KC_TAB = "󰌒", 28 | -- arrow keys 29 | KC_LEFT = "", 30 | KC_DOWN = "", 31 | KC_UP = "", 32 | KC_RIGHT = "", 33 | -- mod keys 34 | KC_LCTL = "󰘴", 35 | LCTL = "󰘴", 36 | KC_RCTL = "󰘴", 37 | KC_LALT = "󰘵", 38 | KC_RALT = "󰘵", 39 | KC_LGUI = "󰘳/", 40 | LGUI = "󰘳/", 41 | KC_RGUI = "󰘳/", 42 | LGUI_T = "󰘳/", 43 | LCTL_T = "󰘴", 44 | KC_HYPR = "", 45 | KC_MEH = "", 46 | HYPR_T = "", 47 | MEH_T = "", 48 | -- media keys 49 | KC_MPLY = "", 50 | KC_VOLU = "", 51 | KC_VOLD = "", 52 | KC_MPRV = "󰒮", 53 | KC_MNXT = "󰒭", 54 | -- layers 55 | KC_LOWER = "󱞡", 56 | KC_RAISE = "󱞿", 57 | KC_QWERTY = "", 58 | KC_LINUX = "", 59 | }, 60 | }, 61 | } 62 | qmk.setup(conf) 63 | end, 64 | } 65 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/editing/todo-comments.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "folke/todo-comments.nvim", 3 | event = "VeryLazy", 4 | config = function() 5 | local status_ok, todo_comments = pcall(require, "todo-comments") 6 | if not status_ok then 7 | return 8 | end 9 | todo_comments.setup { 10 | keywords = { 11 | FIX = { 12 | icon = " ", -- icon used for the sign, and in search results 13 | color = "error", -- can be a hex color, or a named color (see below) 14 | alt = { "FIXME", "BUG", "FIXIT", "ISSUE" }, -- a set of other keywords that all map to this FIX keywords 15 | -- signs = false, -- configure signs for some keywords individually 16 | }, 17 | TODO = { icon = " ", color = "info" }, 18 | HACK = { icon = " ", color = "warning" }, 19 | WARN = { icon = " ", color = "warning", alt = { "WARNING", "XXX" } }, 20 | PERF = { icon = "󰓅 ", alt = { "OPTIM", "PERFORMANCE", "OPTIMIZE" } }, 21 | NOTE = { icon = " ", color = "hint", alt = { "INFO" } }, 22 | TEST = { icon = "󰙨 ", color = "test", alt = { "TESTING", "PASSED", "FAILED" } }, 23 | }, 24 | highlight = { 25 | multiline = false, 26 | }, 27 | } 28 | end, 29 | } 30 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/editing/tsc.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "dmmulroy/tsc.nvim", 3 | event = "VeryLazy", 4 | config = function() 5 | local status_ok, tsc = pcall(require, "tsc") 6 | if not status_ok then 7 | return 8 | end 9 | 10 | local utils = require "tsc.utils" 11 | tsc.setup { 12 | auto_open_qflist = true, 13 | auto_close_qflist = false, 14 | auto_focus_qflist = false, 15 | auto_start_watch_mode = false, 16 | use_trouble_qflist = true, 17 | use_diagnostics = true, 18 | run_as_monorepo = false, 19 | bin_path = utils.find_tsc_bin(), 20 | enable_progress_notifications = true, 21 | enable_error_notifications = true, 22 | flags = { 23 | noEmit = true, 24 | project = function() 25 | return utils.find_nearest_tsconfig() 26 | end, 27 | watch = false, 28 | }, 29 | hide_progress_notifications_from_history = true, 30 | spinner = { "⣾", "⣽", "⣻", "⢿", "⡿", "⣟", "⣯", "⣷" }, 31 | pretty_errors = true, 32 | } 33 | end, 34 | } 35 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/git/gitsigns.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "lewis6991/gitsigns.nvim", 3 | event = { "BufReadPost", "BufNewFile" }, 4 | cmd = "GitSigns", 5 | config = function() 6 | local status_ok, gitsigns = pcall(require, "gitsigns") 7 | if not status_ok then 8 | return 9 | end 10 | gitsigns.setup { 11 | signs = { 12 | add = { 13 | text = icons.ui.BoldLineLeft, 14 | }, 15 | change = { 16 | text = icons.ui.BoldLineLeft, 17 | }, 18 | delete = { 19 | text = icons.ui.Triangle, 20 | }, 21 | topdelete = { 22 | text = icons.ui.Triangle, 23 | }, 24 | changedelete = { 25 | text = icons.ui.BoldLineLeft, 26 | }, 27 | }, 28 | signcolumn = true, 29 | numhl = false, 30 | linehl = false, 31 | word_diff = false, 32 | watch_gitdir = { 33 | interval = 1000, 34 | follow_files = true, 35 | }, 36 | attach_to_untracked = true, 37 | current_line_blame = false, 38 | current_line_blame_opts = { 39 | virt_text = true, 40 | virt_text_pos = "eol", 41 | delay = 1000, 42 | ignore_whitespace = false, 43 | }, 44 | current_line_blame_formatter = ", - ", 45 | sign_priority = 6, 46 | status_formatter = nil, 47 | update_debounce = 200, 48 | max_file_length = 40000, 49 | preview_config = { 50 | border = "rounded", 51 | style = "minimal", 52 | relative = "cursor", 53 | row = 0, 54 | col = 1, 55 | }, 56 | } 57 | end, 58 | } 59 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/lsp/actions-preview.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "aznhe21/actions-preview.nvim", 3 | event = { "BufRead", "BufNewFile" }, 4 | config = function() 5 | local status_ok, ap = pcall(require, "actions-preview") 6 | if not status_ok then 7 | return 8 | end 9 | 10 | local hl = require "actions-preview.highlight" 11 | 12 | ap.setup { 13 | highlight_command = { 14 | hl.delta "delta --side-by-side", 15 | }, 16 | diff = { 17 | ignore_whitespace = true, 18 | }, 19 | telescope = { 20 | sorting_strategy = "ascending", 21 | layout_strategy = "vertical", 22 | layout_config = { 23 | width = 0.8, 24 | height = 0.7, 25 | preview_cutoff = 20, 26 | }, 27 | }, 28 | } 29 | end, 30 | } 31 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/lsp/conform.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "stevearc/conform.nvim", 3 | event = { "BufWritePre", "BufWinEnter", "BufNewFile" }, 4 | 5 | cmd = "ConformInfo", 6 | config = function() 7 | local status_ok, conform = pcall(require, "conform") 8 | if not status_ok then 9 | return 10 | end 11 | 12 | -- [[ Auto formatting ]] 13 | 14 | conform.setup { 15 | notify_on_error = false, 16 | format_on_save = function(bufnr) 17 | if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then 18 | return 19 | end 20 | return { timeout_ms = 500, lsp_fallback = true } 21 | end, 22 | formatters_by_ft = { 23 | lua = { "stylua" }, 24 | javascript = { "prettierd", "prettier", stop_after_first = true }, 25 | javascriptreact = { "prettierd", "prettier", stop_after_first = true }, 26 | typescript = { "prettierd", "prettier", stop_after_first = true }, 27 | typescriptreact = { "prettierd", "prettier", stop_after_first = true }, 28 | css = { "prettierd", "prettier", stop_after_first = true }, 29 | scss = { "prettierd", "prettier", stop_after_first = true }, 30 | markdown = { "prettierd", "prettier", stop_after_first = true }, 31 | graphql = { "prettierd", "prettier", stop_after_first = true }, 32 | }, 33 | } 34 | end, 35 | } 36 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/lsp/lazydev.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "folke/lazydev.nvim", 3 | ft = "lua", 4 | opts = { 5 | library = { 6 | { path = "${3rd}/luv/library", words = { "vim%.uv" } }, 7 | }, 8 | }, 9 | } 10 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/lsp/rustaceanvim.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "mrcjkb/rustaceanvim", 3 | version = "^6", 4 | lazy = false, 5 | 6 | config = function() 7 | local status_ok, rustacean = pcall(require, "rustaceanvim") 8 | if not status_ok then 9 | return 10 | end 11 | end, 12 | } 13 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/navigation/grapple.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "cbochs/grapple.nvim", 3 | cmd = "Grapple", 4 | config = function() 5 | local status_ok, grapple = pcall(require, "grapple") 6 | if not status_ok then 7 | return 8 | end 9 | 10 | grapple.setup { 11 | scope = "git", 12 | icons = true, 13 | status = true, 14 | } 15 | end, 16 | } 17 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/navigation/markview.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "OXY2DEV/markview.nvim", 3 | -- lazy = false, -- Recommended 4 | ft = { "markdown", "Avante" }, -- If you decide to lazy-load anyway 5 | 6 | dependencies = { 7 | -- You will not need this if you installed the 8 | -- parsers manually 9 | -- Or if the parsers are in your $RUNTIMEPATH 10 | "nvim-treesitter/nvim-treesitter", 11 | 12 | "nvim-tree/nvim-web-devicons", 13 | }, 14 | config = function() 15 | vim.api.nvim_create_autocmd("BufWinLeave", { 16 | pattern = "*.md", 17 | callback = function() 18 | vim.opt.colorcolumn = "120" 19 | vim.opt.textwidth = 120 20 | end, 21 | }) 22 | 23 | vim.api.nvim_create_autocmd("BufWinEnter", { 24 | pattern = "*.md", 25 | callback = function() 26 | vim.opt.colorcolumn = "80" 27 | vim.opt.textwidth = 80 28 | end, 29 | }) 30 | end, 31 | } 32 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/navigation/oil.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "stevearc/oil.nvim", 3 | dependencies = { "nvim-tree/nvim-web-devicons" }, 4 | event = "VeryLazy", 5 | config = function() 6 | local status_ok, oil = pcall(require, "oil") 7 | if not status_ok then 8 | return 9 | end 10 | 11 | oil.setup { 12 | view_options = { 13 | show_hidden = true, 14 | }, 15 | use_default_keymaps = false, 16 | keymaps = { 17 | ["g?"] = "actions.show_help", 18 | [""] = "actions.select", 19 | [""] = { "actions.select", opts = { vertical = true }, desc = "Open the entry in a vertical split" }, 20 | [""] = { "actions.select", opts = { horizontal = true }, desc = "Open the entry in a horizontal split" }, 21 | [""] = { "actions.select", opts = { tab = true }, desc = "Open the entry in new tab" }, 22 | [""] = "actions.preview", 23 | [""] = "actions.close", 24 | [""] = "actions.refresh", 25 | ["-"] = "actions.parent", 26 | ["_"] = "actions.open_cwd", 27 | ["`"] = "actions.cd", 28 | ["~"] = { "actions.cd", opts = { scope = "tab" }, desc = ":tcd to the current oil directory", mode = "n" }, 29 | ["gs"] = "actions.change_sort", 30 | ["gx"] = "actions.open_external", 31 | ["g."] = "actions.toggle_hidden", 32 | ["g\\"] = "actions.toggle_trash", 33 | }, 34 | } 35 | 36 | vim.keymap.set("n", "-", "Oil", { desc = "Open parent directory" }) 37 | end, 38 | } 39 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/navigation/popup.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "nvim-lua/popup.nvim", 3 | event = "VeryLazy", 4 | } 5 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/navigation/telescope-undo.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "debugloop/telescope-undo.nvim", 3 | dependencies = { -- note how they're inverted to above example 4 | { 5 | "nvim-telescope/telescope.nvim", 6 | dependencies = { "nvim-lua/plenary.nvim" }, 7 | }, 8 | }, 9 | keys = { 10 | { -- lazy style key map 11 | "su", 12 | "Telescope undo", 13 | desc = "Undo history", 14 | }, 15 | }, 16 | opts = { 17 | -- don't use `defaults = { }` here, do this in the main telescope spec 18 | extensions = { 19 | undo = { 20 | -- telescope-undo.nvim config, see below 21 | side_by_side = true, 22 | layout_strategy = "vertical", 23 | layout_config = { 24 | preview_height = 0.7, 25 | }, 26 | }, 27 | -- no other extensions here, they can have their own spec too 28 | }, 29 | }, 30 | config = function(_, opts) 31 | -- Calling telescope's setup from multiple specs does not hurt, it will happily merge the 32 | -- configs for us. We won't use data, as everything is in it's own namespace (telescope 33 | -- defaults, as well as each extension). 34 | require("telescope").setup(opts) 35 | require("telescope").load_extension "undo" 36 | end, 37 | } 38 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/syntax/context.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "nvim-treesitter/nvim-treesitter-context", 3 | event = "User FileOpened", 4 | dependencies = "nvim-treesitter/nvim-treesitter", 5 | } 6 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/syntax/illuminate.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "RRethy/vim-illuminate", 3 | event = { "BufRead", "BufNewFile" }, 4 | config = function() 5 | local status_ok, illuminate = pcall(require, "illuminate") 6 | if not status_ok then 7 | return 8 | end 9 | illuminate.configure { 10 | providers = { 11 | "lsp", 12 | "treesitter", 13 | "regex", 14 | }, 15 | delay = 120, 16 | filetypes_overrides = {}, 17 | filetypes_denylist = { 18 | "dirvish", 19 | "fugitive", 20 | "alpha", 21 | "neo-tree", 22 | "lazy", 23 | "Trouble", 24 | "Outline", 25 | "spectre_panel", 26 | "toggleterm", 27 | "TelescopePrompt", 28 | }, 29 | under_cursor = true, 30 | } 31 | end, 32 | } 33 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/syntax/treesitter-context.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "nvim-treesitter/nvim-treesitter-context", 3 | event = "VeryLazy", 4 | config = function() 5 | local status_ok, tscontext = pcall(require, "treesitter-context") 6 | if not status_ok then 7 | return 8 | end 9 | 10 | tscontext.setup { 11 | enable = false, 12 | multiwindow = false, 13 | max_lines = 0, 14 | min_window_height = 0, 15 | line_numbers = true, 16 | multiline_threshold = 20, 17 | trim_scope = "outer", 18 | mode = "cursor", 19 | separator = "─", 20 | zindex = 20, 21 | on_attach = nil, 22 | } 23 | end, 24 | } 25 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/syntax/treesitter-textobjects.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "nvim-treesitter/nvim-treesitter-textobjects", 3 | after = "nvim-treesitter", 4 | event = "BufReadPost", 5 | } 6 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/ui/alpha.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "goolord/alpha-nvim", 3 | event = "VimEnter", 4 | config = function() 5 | local status_ok, alpha = pcall(require, "alpha") 6 | if not status_ok then 7 | return 8 | end 9 | 10 | local dashboard = require "alpha.themes.dashboard" 11 | 12 | local function button(sc, txt, keybind) 13 | local b = dashboard.button(sc, txt, keybind) 14 | b.opts.hl_shortcut = "Include" 15 | return b 16 | end 17 | 18 | local headers = require "core.config.dashboard.headers" 19 | 20 | dashboard.section.header.val = headers.king 21 | dashboard.section.buttons.val = { 22 | button("f", icons.ui.Files .. " Find file", ":Telescope find_files "), 23 | button("n", icons.ui.NewFile .. " New file", ":ene start insert "), 24 | button( 25 | "p", 26 | icons.git.Repo .. " Find project", 27 | ":Telescope project project theme=dropdown layout_config={width=0.3, height=0.4}" 28 | ), 29 | button("r", icons.ui.History .. " Recent files", ":Telescope oldfiles "), 30 | button("g", icons.ui.Text .. " Grep text", ":Telescope live_grep "), 31 | button("c", icons.ui.Gear .. " Config", ":cd ~/.config/nvim | e init.lua"), 32 | button("l", icons.misc.Plug .. " Plugins", ":Lazy"), 33 | button("m", icons.misc.Mason .. " Mason", ":Mason"), 34 | button("q", icons.ui.SignOut .. " Quit", ":qa"), 35 | } 36 | 37 | local function footer() 38 | return "johnenderby.com" 39 | end 40 | 41 | dashboard.section.footer.val = footer() 42 | 43 | dashboard.section.header.opts.hl = "Keyword" 44 | dashboard.section.buttons.opts.hl = "Include" 45 | dashboard.section.buttons.opts.hl = "Type" 46 | 47 | dashboard.opts.opts.noautocmd = true 48 | alpha.setup(dashboard.opts) 49 | 50 | vim.api.nvim_create_autocmd("User", { 51 | pattern = "LazyVimStarted", 52 | callback = function() 53 | local stats = require("lazy").stats() 54 | local ms = (math.floor(stats.startuptime * 100 + 0.5) / 100) 55 | dashboard.section.footer.val = "Loaded " .. stats.count .. " plugins in " .. ms .. "ms" 56 | pcall(vim.cmd.AlphaRedraw) 57 | end, 58 | }) 59 | 60 | vim.api.nvim_create_autocmd({ "User" }, { 61 | pattern = { "AlphaReady" }, 62 | callback = function() 63 | vim.cmd [[ 64 | set laststatus=0 | autocmd BufUnload set laststatus=3 65 | ]] 66 | end, 67 | }) 68 | end, 69 | } 70 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/ui/colorscheme-persist.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "propet/colorscheme-persist.nvim", 3 | lazy = false, -- load immediately to set the colorscheme on startup 4 | dependencies = { 5 | "nvim-telescope/telescope.nvim", 6 | -- Add your colorscheme plugins here, e.g.: 7 | -- "Th3Whit3Wolf/space-nvim", 8 | -- "luisiacc/gruvbox-baby", 9 | -- "folke/tokyonight.nvim", 10 | -- "rebelot/kanagawa.nvim", 11 | }, 12 | keys = { 13 | { 14 | "sc", -- Or your preferred keymap 15 | function() 16 | require("colorscheme-persist").picker() 17 | end, 18 | mode = "n", 19 | desc = "Choose colorscheme", 20 | }, 21 | }, 22 | opts = { 23 | -- Absolute path to file where colorscheme should be saved 24 | -- Default: file_path: vim.fn.stdpath("data") .. "/.nvim.colorscheme-persist.lua", 25 | -- file_path = vim.fn.stdpath("config") .. "/colorscheme.lua", 26 | 27 | -- In case there's no saved colorscheme yet 28 | -- Default: fallback: "blue", 29 | -- fallback = "quiet", 30 | 31 | -- List of ugly colorschemes to avoid in the selection window 32 | -- Default: 33 | disable = { 34 | "blue", 35 | "catppuccin-frappe", 36 | "catppuccin-mocha", 37 | "catppuccin-latte", 38 | "catppuccin-macchiato", 39 | "darkblue", 40 | "dawnfox", 41 | "dayfox", 42 | "duskfox", 43 | "delek", 44 | "desert", 45 | "elflord", 46 | "evening", 47 | "habamax", 48 | "industry", 49 | "koehler", 50 | "lunaperche", 51 | "kanagawa-dragon", 52 | "kanagawa-wave", 53 | "kanagawa-lotus", 54 | "morning", 55 | "nordfox", 56 | "pablo", 57 | "peachpuff", 58 | "quiet", 59 | "retrobox", 60 | "ron", 61 | "rose-pine-dawn", 62 | "rose-pine-moon", 63 | "rose-pine-main", 64 | "shine", 65 | "slate", 66 | "sorbet", 67 | "torte", 68 | "tokyonight", 69 | "tokyonight-day", 70 | "tokyonight-moon", 71 | "tokyonight-storm", 72 | "unokai", 73 | "vim", 74 | "wildcharm", 75 | "zellner", 76 | "zaibatsu", 77 | }, 78 | -- disable = { "darkblue" }, 79 | 80 | -- Options for the telescope picker 81 | -- Default: picker_opts = require("telescope.themes").get_dropdown() 82 | -- picker_opts = require("telescope.themes").get_ivy(), 83 | }, 84 | } 85 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/ui/colorschemes/catppuccin.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "catppuccin/nvim", 3 | lazy = false, 4 | priority = 1000, 5 | name = "catppuccin", 6 | config = function() 7 | local status_ok, catppuccin = pcall(require, "catppuccin") 8 | if not status_ok then 9 | return 10 | end 11 | 12 | for _, group in ipairs(vim.fn.getcompletion("@lsp", "highlight")) do 13 | vim.api.nvim_set_hl(0, group, {}) 14 | end 15 | 16 | catppuccin.setup { 17 | flavour = "mocha", 18 | styles = { -- Handles the styles of general hi groups (see: :h highlight-args): 19 | }, 20 | } 21 | end, 22 | } 23 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/ui/colorschemes/kanagawa.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "rebelot/kanagawa.nvim", 3 | lazy = false, 4 | priority = 1000, 5 | name = "kanagawa", 6 | config = function() 7 | local status_ok, kanagawa = pcall(require, "kanagawa") 8 | if not status_ok then 9 | return 10 | end 11 | 12 | for _, group in ipairs(vim.fn.getcompletion("@lsp", "highlight")) do 13 | vim.api.nvim_set_hl(0, group, {}) 14 | end 15 | 16 | kanagawa.setup { 17 | compile = false, -- enable compiling the colorscheme 18 | undercurl = true, -- enable undercurls 19 | commentStyle = { italic = true }, 20 | functionStyle = {}, 21 | keywordStyle = { italic = true }, 22 | statementStyle = { bold = true }, 23 | typeStyle = {}, 24 | transparent = false, -- do not set background color 25 | dimInactive = false, -- dim inactive window `:h hl-NormalNC` 26 | terminalColors = true, -- define vim.g.terminal_color_{0,17} 27 | colors = { -- add/modify theme and palette colors 28 | palette = {}, 29 | theme = { wave = {}, lotus = {}, dragon = {}, all = { 30 | ui = { bg_gutter = "none" }, 31 | } }, 32 | }, 33 | overrides = function(colors) -- add/modify highlights 34 | return {} 35 | end, 36 | theme = "wave", -- Load "wave" theme 37 | background = { -- map the value of 'background' option to a theme 38 | dark = "wave", -- try "dragon" ! 39 | light = "lotus", 40 | }, 41 | } 42 | end, 43 | } 44 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/ui/colorschemes/neomodern.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "cdmill/neomodern.nvim", 3 | lazy = false, 4 | priority = 1000, 5 | name = "neomodern", 6 | config = function() 7 | local status_ok, neomodern = pcall(require, "neomodern") 8 | if not status_ok then 9 | return 10 | end 11 | 12 | for _, group in ipairs(vim.fn.getcompletion("@lsp", "highlight")) do 13 | vim.api.nvim_set_hl(0, group, {}) 14 | end 15 | 16 | neomodern.setup { 17 | plain_float = true, 18 | code_style = { 19 | comments = "italic", 20 | keywords = "italic", 21 | }, 22 | } 23 | end, 24 | } 25 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/ui/colorschemes/nightfox.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "EdenEast/nightfox.nvim", 3 | lazy = false, 4 | priority = 1000, 5 | name = "nightfox", 6 | config = function() 7 | local status_ok, nightfox = pcall(require, "nightfox") 8 | if not status_ok then 9 | return 10 | end 11 | 12 | for _, group in ipairs(vim.fn.getcompletion("@lsp", "highlight")) do 13 | vim.api.nvim_set_hl(0, group, {}) 14 | end 15 | end, 16 | } 17 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/ui/colorschemes/rose-pine.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "rose-pine/neovim", 3 | lazy = false, 4 | priority = 1000, 5 | name = "rose-pine", 6 | config = function() 7 | local status_ok, rose_pine = pcall(require, "rose-pine") 8 | if not status_ok then 9 | return 10 | end 11 | 12 | for _, group in ipairs(vim.fn.getcompletion("@lsp", "highlight")) do 13 | vim.api.nvim_set_hl(0, group, {}) 14 | end 15 | 16 | rose_pine.setup { 17 | variant = "main", 18 | } 19 | end, 20 | } 21 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/ui/colorschemes/tokyonight.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "folke/tokyonight.nvim", 3 | lazy = false, 4 | priority = 1000, 5 | opts = {}, 6 | } 7 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/ui/colorschemes/zenbones.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "zenbones-theme/zenbones.nvim", 3 | -- Optionally install Lush. Allows for more configuration or extending the colorscheme 4 | -- If you don't want to install lush, make sure to set g:zenbones_compat = 1 5 | -- In Vim, compat mode is turned on as Lush only works in Neovim. 6 | dependencies = "rktjmp/lush.nvim", 7 | lazy = false, 8 | priority = 1000, 9 | -- you can set set configuration options here 10 | -- config = function() 11 | -- vim.g.zenbones_darken_comments = 45 12 | -- vim.cmd.colorscheme('zenbones') 13 | -- end 14 | } 15 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/ui/deadcolumn.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "Bekaboo/deadcolumn.nvim", 3 | event = { "BufRead", "BufNewFile" }, 4 | config = function() 5 | local status_ok, deadcolumn = pcall(require, "deadcolumn") 6 | if not status_ok then 7 | return 8 | end 9 | deadcolumn.setup { 10 | blending = { 11 | threshold = 0.5, 12 | colorcode = colors.crust, 13 | }, 14 | warning = { 15 | alpha = 0.2, 16 | colorcode = colors.red, 17 | }, 18 | } 19 | end, 20 | } 21 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/ui/dropbar.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "Bekaboo/dropbar.nvim", 3 | dependencies = { 4 | "nvim-telescope/telescope-fzf-native.nvim", 5 | build = "make", 6 | }, 7 | 8 | config = function() 9 | local status_ok, dropbar = pcall(require, "dropbar") 10 | if not status_ok then 11 | return 12 | end 13 | 14 | dropbar.setup { 15 | bar = { 16 | enable = function(buf, win, _) 17 | if not vim.g.dropbar_enabled then 18 | return false 19 | end 20 | 21 | if 22 | not vim.api.nvim_buf_is_valid(buf) 23 | or not vim.api.nvim_win_is_valid(win) 24 | or vim.fn.win_gettype(win) ~= "" 25 | or vim.wo[win].winbar ~= "" 26 | or vim.bo[buf].ft == "help" 27 | or vim.bo[buf].ft == "Alpha" 28 | then 29 | return false 30 | end 31 | 32 | local stat = vim.uv.fs_stat(vim.api.nvim_buf_get_name(buf)) 33 | if stat and stat.size > 1024 * 1024 then 34 | return false 35 | end 36 | 37 | return vim.bo[buf].ft == "markdown" 38 | or pcall(vim.treesitter.get_parser, buf) 39 | or not vim.tbl_isempty(vim.lsp.get_clients { 40 | bufnr = buf, 41 | method = "textDocument/documentSymbol", 42 | }) 43 | end, 44 | }, 45 | } 46 | vim.g.dropbar_enabled = false 47 | end, 48 | } 49 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/ui/lightbulb.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "kosayoda/nvim-lightbulb", 3 | event = "BufRead", 4 | config = function() 5 | local status_ok, lightbulb = pcall(require, "nvim-lightbulb") 6 | if not status_ok then 7 | return 8 | end 9 | 10 | lightbulb.setup { 11 | autocmd = { enabled = true }, 12 | sign = { 13 | enabled = false, 14 | }, 15 | virtual_text = { 16 | enabled = true, 17 | text = icons.ui.Lightbulb, 18 | }, 19 | status_text = { 20 | enabled = true, 21 | }, 22 | filter = function(client_name, action) 23 | local title = (action.title or ""):lower() 24 | if title == "move to a new file" then 25 | return false 26 | end 27 | return true 28 | end, 29 | } 30 | end, 31 | } 32 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/ui/lualine.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "nvim-lualine/lualine.nvim", 3 | event = { "BufReadPre", "BufNewFile" }, 4 | config = function() 5 | local status_ok, lualine = pcall(require, "lualine") 6 | if not status_ok then 7 | return 8 | end 9 | 10 | local function macro_recording() 11 | local recording_register = vim.fn.reg_recording() 12 | if recording_register == "" then 13 | return "" 14 | else 15 | return "Recording @" .. recording_register 16 | end 17 | end 18 | 19 | local components = require "core.config.lualine.components" 20 | local ts_context = require "treesitter-context" 21 | 22 | lualine.setup { 23 | options = { 24 | theme = "auto", 25 | -- rounded section separators one one side only 26 | section_separators = { left = "", right = "" }, 27 | component_separators = { left = "", right = "" }, 28 | -- enable icons 29 | icons_enabled = true, 30 | -- disabled filetypes 31 | disabled_filetypes = { 32 | statusline = { "alpha" }, -- disable in dashboard 33 | winbar = {}, 34 | }, 35 | ignore_focus = {}, 36 | always_divide_middle = true, 37 | -- don't render multiple status lines (only show active buffer's) 38 | globalstatus = true, 39 | refresh = { 40 | statusline = 300, 41 | tabline = 1000, 42 | winbar = 1000, 43 | }, 44 | }, 45 | sections = { 46 | lualine_a = { components.mode, macro_recording }, 47 | lualine_b = { components.branch }, 48 | lualine_c = { components.diff, components.searchcount }, 49 | lualine_x = { 50 | components.diagnostics, 51 | components.lsp, 52 | { 53 | "filename", 54 | path = 4, 55 | separator = { left = "" }, 56 | symbols = { modified = icons.git.LineModified, readonly = icons.ui.Lock }, 57 | }, 58 | { "filetype", icon_only = true, separator = { right = "" } }, 59 | components.spaces, 60 | }, 61 | lualine_y = { components.location }, 62 | lualine_z = { components.progress }, 63 | }, 64 | inactive_sections = { 65 | lualine_a = {}, 66 | lualine_b = {}, 67 | lualine_c = {}, 68 | lualine_x = { components.diagnostics, components.spaces, components.filename, components.filetype }, 69 | lualine_y = { components.location }, 70 | lualine_z = { components.progress }, 71 | }, 72 | tabline = {}, 73 | winbar = {}, 74 | inactive_winbar = {}, 75 | extensions = {}, 76 | } 77 | end, 78 | } 79 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/ui/nvim-colorizer.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "NvChad/nvim-colorizer.lua", 3 | event = "BufEnter", 4 | config = function() 5 | local status_ok, colorizer = pcall(require, "colorizer") 6 | if not status_ok then 7 | return 8 | end 9 | colorizer.setup { 10 | filetypes = { "*" }, 11 | user_default_options = { 12 | RGB = true, 13 | RRGGBB = true, 14 | RRGGBBAA = true, 15 | AARRGGBB = true, 16 | mode = "background", 17 | virtualtext = "■", 18 | always_update = true, 19 | }, 20 | -- customise these filetypes 21 | css = { css = true }, 22 | html = { css = true }, 23 | javascript = { css = true }, 24 | } 25 | 26 | -- disallow these filetypes 27 | vim.api.nvim_create_autocmd("FileType", { 28 | pattern = { "neo-tree", "TelescopePrompt", "oil", "alpha", "lazy", "mason" }, 29 | callback = function() 30 | require("colorizer").detach_from_buffer() 31 | end, 32 | }) 33 | end, 34 | } 35 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/ui/rainbow-delimiters.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "HiPhish/rainbow-delimiters.nvim", 3 | event = { "BufReadPre", "BufNewFile" }, 4 | submodules = false, 5 | config = function() 6 | local status_ok, rainbow = pcall(require, "rainbow-delimiters.setup") 7 | if not status_ok then 8 | return 9 | end 10 | rainbow.setup {} 11 | end, 12 | } 13 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/utilities/autopairs.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "windwp/nvim-autopairs", 3 | event = "InsertEnter", 4 | config = function() 5 | local status_ok, autopairs = pcall(require, "nvim-autopairs") 6 | if not status_ok then 7 | return 8 | end 9 | autopairs.setup { 10 | check_ts = true, 11 | ts_config = { 12 | lua = { "string", "source" }, 13 | javascript = { "string", "template_string" }, 14 | }, 15 | disable_filetype = { "TelescopePrompt", "spectre_panel" }, 16 | fast_wrap = { 17 | map = "", 18 | chars = { "{", "[", "(", '"', "'" }, 19 | pattern = string.gsub([[ [%'%"%)%>%]%)%}%,] ]], "%s+", ""), 20 | offset = 0, 21 | end_key = "$", 22 | keys = "qwertyuiopasdfghjklzxcvbnm", 23 | check_comma = true, 24 | highlight = "PmenuSel", 25 | highlight_grey = "LineNr", 26 | }, 27 | } 28 | end, 29 | } 30 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/utilities/autosave.lua: -------------------------------------------------------------------------------- 1 | -- lua/config/autosave.lua 2 | 3 | vim.g.autosave_enabled = true 4 | 5 | local group = vim.api.nvim_create_augroup("autosave", { clear = true }) 6 | 7 | vim.api.nvim_create_autocmd({ "BufLeave", "FocusLost", "VimLeavePre" }, { 8 | group = group, 9 | callback = function(event) 10 | if not vim.g.autosave_enabled then 11 | return 12 | end 13 | 14 | local bufnr = event.buf 15 | 16 | -- guard against trying to save unlisted buffers 17 | if not vim.bo[bufnr].buflisted then 18 | return 19 | end 20 | 21 | -- Skip special, scratch, or unnamed buffers 22 | if vim.bo[bufnr].buftype ~= "" or vim.api.nvim_buf_get_name(bufnr) == "" then 23 | return 24 | end 25 | 26 | -- Optional: skip specific filetypes 27 | local excluded_filetypes = { "alpha", "neo-tree", "help", "oil", "water" } 28 | if vim.tbl_contains(excluded_filetypes, vim.bo[bufnr].filetype) then 29 | return 30 | end 31 | 32 | if not vim.bo[bufnr].modified then 33 | return 34 | end 35 | 36 | -- Format before write (via conform.nvim) 37 | local ok, conform = pcall(require, "conform") 38 | if ok then 39 | conform.format { bufnr = bufnr, lsp_fallback = true, timeout_ms = 500 } 40 | end 41 | 42 | -- Silent write inside buffer context 43 | vim.schedule(function() 44 | if vim.api.nvim_buf_is_loaded(bufnr) and vim.bo[bufnr].modifiable then 45 | vim.api.nvim_buf_call(bufnr, function() 46 | vim.cmd "silent! write" 47 | end) 48 | end 49 | end) 50 | end, 51 | }) 52 | 53 | return {} 54 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/utilities/comment.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "numToStr/Comment.nvim", 3 | event = { "BufRead", "BufNewFile" }, 4 | dependencies = { "JoosepAlviste/nvim-ts-context-commentstring" }, 5 | config = function() 6 | local status_ok, Comment = pcall(require, "Comment") 7 | if not status_ok then 8 | return 9 | end 10 | 11 | Comment.setup { 12 | pre_hook = require("ts_context_commentstring.integrations.comment_nvim").create_pre_hook(), 13 | } 14 | end, 15 | } 16 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/utilities/parinfer.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "gpanders/nvim-parinfer", 3 | event = { "BufRead", "BufNewFile" }, 4 | } 5 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/utilities/vim-sleuth.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "tpope/vim-sleuth", 3 | event = { "BufRead", "BufNewFile" }, 4 | } 5 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/core/plugins/utilities/vim-surround.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "tpope/vim-surround", 3 | event = { "BufRead", "BufNewFile" }, 4 | } 5 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/water/config.lua: -------------------------------------------------------------------------------- 1 | ---@alias WaterBufferSort "id" | "alphabetical" | "last_modified" 2 | ---@alias WaterDateFormat "dd/mm" | "mm/dd" 3 | ---@alias WaterTimeFormat "24h" | "12h" 4 | ---@alias WaterPathDisplay "full_path" | "short_path" | "file_name" | fun(path: string): string 5 | ---@alias WaterDeleteFallback "q" | "enew" | fun():any 6 | ---@alias WaterGitIcons { added: string, changed: string, removed: string, untracked: string } 7 | ---@alias WaterDiagnosticIcons { err: string, warn: string } 8 | ---@alias WaterIcons { git: WaterGitIcons, diagnostics: WaterDiagnosticIcons } 9 | ---@alias WaterKeymaps { toggle: string, open_buffer: string, delete: string, split: string, vsplit: string, refresh: string, help: string } 10 | 11 | ---@class WaterOptions 12 | ---@field show_modified boolean Show if the buffer has been modified 13 | ---@field show_readonly boolean Show if a buffer is readonly 14 | ---@field show_diagnostics boolean Show buffer diagnostics in Water (defaults to true) 15 | ---@field highlight_cursorline boolean Highlight the current line 16 | ---@field sort_buffers WaterBufferSort Determine how to sort buffers in Water 17 | ---@field use_nerd_icons boolean Use Nerd Font icons for Git and diagnostics 18 | ---@field path_display WaterPathDisplay How much of the buffer path to display 19 | ---@field date_format WaterDateFormat Date display format 20 | ---@field time_format WaterTimeFormat Time display format 21 | ---@field delete_last_buf_fallback WaterDeleteFallback Fallback action when deleting the last buffer 22 | ---@field icons WaterIcons Customize the symbols shown in the Git and Diagnostics columns 23 | ---@field keymaps WaterKeymaps Custom key mappings for Water actions 24 | 25 | local M = {} 26 | 27 | ---@type WaterOptions 28 | M.defaults = { 29 | show_modified = true, 30 | show_readonly = true, 31 | show_diagnostics = true, 32 | highlight_cursorline = true, 33 | sort_buffers = "last_modified", 34 | use_nerd_icons = true, 35 | path_display = "short_path", 36 | date_format = "dd/mm", 37 | time_format = "24h", 38 | delete_last_buf_fallback = "q", 39 | icons = { 40 | git = { added = "", changed = "", removed = "", untracked = "" }, 41 | diagnostics = { err = "", warn = "" }, 42 | }, 43 | keymaps = { 44 | toggle = "_", 45 | open_buffer = "", 46 | delete = "dd", 47 | split = "s", 48 | vsplit = "v", 49 | refresh = "r", 50 | help = "?", 51 | }, 52 | } 53 | 54 | function M.merge(user_opts) 55 | return vim.tbl_deep_extend("force", M.defaults, user_opts or {}) 56 | end 57 | 58 | return M 59 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/water/highlights.lua: -------------------------------------------------------------------------------- 1 | -- lua/water/highlights.lua 2 | ---@class water.highlights 3 | 4 | local M = {} 5 | 6 | ---Define custom highlight groups for the Water UI. 7 | ---Links groups to existing highlight definitions, applied by default. 8 | function M.define() 9 | ---Alias for setting highlight groups 10 | ---@type fun(namespace: number, name: string, opts: table) 11 | local highlight = vim.api.nvim_set_hl 12 | 13 | -- Buffer ID number styling 14 | highlight(0, "WaterBufferID", { link = "@comment", default = true }) 15 | -- Buffer name styling 16 | highlight(0, "WaterBufferName", { link = "@text", default = true }) 17 | -- Diagnostic error icon styling 18 | highlight(0, "WaterDiagnosticError", { link = "DiagnosticError", default = true }) 19 | -- Diagnostic warning icon styling 20 | highlight(0, "WaterDiagnosticWarn", { link = "DiagnosticWarn", default = true }) 21 | -- Timestamp text styling 22 | highlight(0, "WaterTimestamp", { link = "@comment", default = true }) 23 | end 24 | 25 | return M 26 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/water/init.lua: -------------------------------------------------------------------------------- 1 | -- lua/water/init.lua 2 | ---@class water 3 | 4 | -- 1) Wire up all Water autocmds 5 | require("water.autocmds").setup() 6 | 7 | -- 2) Plugin modules 8 | local config = require "water.config" 9 | local ui = require "water.ui.water" 10 | local highlights = require "water.highlights" 11 | local help = require "water.ui.help" 12 | local state = require "water.state" 13 | 14 | local M = {} 15 | ---@type boolean 16 | local has_setup_run = false 17 | 18 | ---Setup Water plugin: merge options, define highlights, commands, and keymaps. 19 | ---@param opts table? User-provided configuration options. 20 | function M.setup(opts) 21 | if has_setup_run then 22 | return 23 | end 24 | has_setup_run = true 25 | 26 | -- Merge user opts with defaults and save to state 27 | M.options = config.merge(opts or {}) 28 | state.options = M.options 29 | 30 | -- Define highlight groups and setup help docs 31 | highlights.define() 32 | help.setup(M.options) 33 | 34 | -- Create user commands for toggling and refreshing the UI 35 | vim.api.nvim_create_user_command("Water", function() 36 | ui.toggle(M.options) 37 | end, { desc = "Toggle Water UI" }) 38 | 39 | vim.api.nvim_create_user_command("WaterRefresh", function() 40 | ui.refresh() 41 | end, { desc = "Refresh Water UI" }) 42 | 43 | -- Define keymap for toggling UI 44 | vim.keymap.set("n", M.options.keymaps.toggle, function() 45 | ui.toggle(M.options) 46 | end, { 47 | desc = "Toggle Water UI", 48 | nowait = true, 49 | noremap = true, 50 | silent = true, 51 | }) 52 | end 53 | 54 | -- 4) Run setup immediately with default options 55 | M.setup {} 56 | 57 | -- 5) Expose public API for programmatic use 58 | return { 59 | open = ui.open, 60 | render = ui.render, 61 | refresh = ui.refresh, 62 | toggle = ui.toggle, 63 | setup = M.setup, 64 | } 65 | -------------------------------------------------------------------------------- /common/.config/nvim/lua/water/state.lua: -------------------------------------------------------------------------------- 1 | -- lua/water/state.lua 2 | ---@class water.state 3 | ---Global state for the Water UI, tracking buffer, window, and rendering options. 4 | ---@field water_bufnr number? Buffer number of the active Water UI buffer, or nil if closed. 5 | ---@field last_buf number? Buffer number of the buffer active before opening Water UI. 6 | ---@field water_winid number? Window ID displaying the Water UI, or nil if none. 7 | ---@field options table? The rendering options in use for the Water UI, or nil if not set. 8 | local M = { 9 | water_bufnr = nil, 10 | last_buf = nil, 11 | water_winid = nil, 12 | options = nil, 13 | preview_on_cursor = false, 14 | } 15 | 16 | return M 17 | -------------------------------------------------------------------------------- /common/.config/tmux-sessionizer/tmux-sessionizer.conf: -------------------------------------------------------------------------------- 1 | TS_SEARCH_PATHS=(~/ ~/.config ~/Developer ~/Developer/raccoons ~/Developer/personal ~/Developer/hackathon) 2 | -------------------------------------------------------------------------------- /common/.config/tmuxinator/adminweb.yml: -------------------------------------------------------------------------------- 1 | # /Users/john.enderby/.config/tmuxinator/adminweb.yml 2 | 3 | name: adminweb 4 | root: /Users/john.enderby/Developer/raccoons/adminweb/ 5 | 6 | # Optional tmux socket 7 | # socket_name: foo 8 | 9 | # Note that the pre and post options have been deprecated and will be replaced by 10 | # project hooks. 11 | 12 | # Project hooks 13 | 14 | # Runs on project start, always 15 | # on_project_start: command 16 | 17 | # Run on project start, the first time 18 | # on_project_first_start: command 19 | 20 | # Run on project start, after the first time 21 | # on_project_restart: command 22 | 23 | # Run on project exit ( detaching from tmux session ) 24 | # on_project_exit: command 25 | 26 | # Run on project stop 27 | # on_project_stop: command 28 | 29 | # Runs in each window and pane before window/pane specific commands. Useful for setting up interpreter versions. 30 | # pre_window: rbenv shell 2.0.0-p247 31 | 32 | # Pass command line options to tmux. Useful for specifying a different tmux.conf. 33 | # tmux_options: -f ~/.tmux.mac.conf 34 | 35 | # Change the command to call tmux. This can be used by derivatives/wrappers like byobu. 36 | # tmux_command: byobu 37 | 38 | # Specifies (by name or index) which window will be selected on project startup. If not set, the first window is used. 39 | # startup_window: editor 40 | 41 | # Specifies (by index) which pane of the specified window will be selected on project startup. If not set, the first pane is used. 42 | # startup_pane: 1 43 | 44 | # Controls whether the tmux session should be attached to automatically. Defaults to true. 45 | # attach: false 46 | 47 | windows: 48 | - front: 49 | root: /Users/john.enderby/Developer/fdweb/contentx-marketing-frontend/ 50 | layout: f96e,282x76,0,0{169x76,0,0,1,112x76,170,0[112x38,170,0,2,112x37,170,39,3]} 51 | # Synchronize all panes of this window, can be enabled before or after the pane commands run. 52 | # 'before' represents legacy functionality and will be deprecated in a future release, in favour of 'after' 53 | # synchronize: after 54 | panes: 55 | - editor: 56 | - tmux resize-pane -x 60% 57 | - nvim 58 | - dev: 59 | - 60 | - fastfetch 61 | -------------------------------------------------------------------------------- /common/.config/tmuxinator/dotfiles.yml: -------------------------------------------------------------------------------- 1 | # /Users/john.enderby/.config/tmuxinator/dotfiles.yml 2 | 3 | name: dotfiles 4 | root: ~/Developer/personal/dots/ 5 | 6 | # Optional tmux socket 7 | # socket_name: foo 8 | 9 | # Note that the pre and post options have been deprecated and will be replaced by 10 | # project hooks. 11 | 12 | # Project hooks 13 | 14 | # Runs on project start, always 15 | # on_project_start: command 16 | 17 | # Run on project start, the first time 18 | # on_project_first_start: command 19 | 20 | # Run on project start, after the first time 21 | # on_project_restart: command 22 | 23 | # Run on project exit ( detaching from tmux session ) 24 | # on_project_exit: command 25 | 26 | # Run on project stop 27 | # on_project_stop: command 28 | 29 | # Runs in each window and pane before window/pane specific commands. Useful for setting up interpreter versions. 30 | # pre_window: rbenv shell 2.0.0-p247 31 | 32 | # Pass command line options to tmux. Useful for specifying a different tmux.conf. 33 | # tmux_options: -f ~/.tmux.mac.conf 34 | 35 | # Change the command to call tmux. This can be used by derivatives/wrappers like byobu. 36 | # tmux_command: byobu 37 | 38 | # Specifies (by name or index) which window will be selected on project startup. If not set, the first window is used. 39 | # startup_window: editor 40 | 41 | # Specifies (by index) which pane of the specified window will be selected on project startup. If not set, the first pane is used. 42 | # startup_pane: 1 43 | 44 | # Controls whether the tmux session should be attached to automatically. Defaults to true. 45 | # attach: false 46 | 47 | windows: 48 | - dots: 49 | layout: f96e,282x76,0,0{169x76,0,0,1,112x76,170,0[112x38,170,0,2,112x37,170,39,3]} 50 | # Synchronize all panes of this window, can be enabled before or after the pane commands run. 51 | # 'before' represents legacy functionality and will be deprecated in a future release, in favour of 'after' 52 | # synchronize: after 53 | panes: 54 | - editor: 55 | - tmux resize-pane -x 60% 56 | - nvim 57 | - la 58 | - fastfetch 59 | - home: 60 | root: ~/ 61 | layout: main-vertical 62 | # Synchronize all panes of this window, can be enabled before or after the pane commands run. 63 | # 'before' represents legacy functionality and will be deprecated in a future release, in favour of 'after' 64 | # synchronize: after 65 | panes: 66 | - editor: 67 | - tmux resize-pane -x 60% 68 | - nvim 69 | - la 70 | -------------------------------------------------------------------------------- /common/.config/tmuxinator/portfolio.yml: -------------------------------------------------------------------------------- 1 | # /Users/john.enderby/.config/tmuxinator/portfolio.yml 2 | 3 | name: portfolio 4 | root: ~/Developer/websites/portfolio/ 5 | 6 | # Optional tmux socket 7 | # socket_name: foo 8 | 9 | # Note that the pre and post options have been deprecated and will be replaced by 10 | # project hooks. 11 | 12 | # Project hooks 13 | 14 | # Runs on project start, always 15 | # on_project_start: command 16 | 17 | # Run on project start, the first time 18 | # on_project_first_start: command 19 | 20 | # Run on project start, after the first time 21 | # on_project_restart: command 22 | 23 | # Run on project exit ( detaching from tmux session ) 24 | # on_project_exit: command 25 | 26 | # Run on project stop 27 | # on_project_stop: command 28 | 29 | # Runs in each window and pane before window/pane specific commands. Useful for setting up interpreter versions. 30 | # pre_window: rbenv shell 2.0.0-p247 31 | 32 | # Pass command line options to tmux. Useful for specifying a different tmux.conf. 33 | # tmux_options: -f ~/.tmux.mac.conf 34 | 35 | # Change the command to call tmux. This can be used by derivatives/wrappers like byobu. 36 | # tmux_command: byobu 37 | 38 | # Specifies (by name or index) which window will be selected on project startup. If not set, the first window is used. 39 | # startup_window: editor 40 | 41 | # Specifies (by index) which pane of the specified window will be selected on project startup. If not set, the first pane is used. 42 | # startup_pane: 1 43 | 44 | # Controls whether the tmux session should be attached to automatically. Defaults to true. 45 | # attach: false 46 | 47 | windows: 48 | - dots: 49 | layout: f96e,282x76,0,0{169x76,0,0,1,112x76,170,0[112x38,170,0,2,112x37,170,39,3]} 50 | # Synchronize all panes of this window, can be enabled before or after the pane commands run. 51 | # 'before' represents legacy functionality and will be deprecated in a future release, in favour of 'after' 52 | # synchronize: after 53 | panes: 54 | - editor: 55 | - tmux resize-pane -x 60% 56 | - nvim 57 | - npm run dev 58 | - fastfetch 59 | - home: 60 | root: ~/ 61 | layout: main-vertical 62 | # Synchronize all panes of this window, can be enabled before or after the pane commands run. 63 | # 'before' represents legacy functionality and will be deprecated in a future release, in favour of 'after' 64 | # synchronize: after 65 | panes: 66 | - editor: 67 | - tmux resize-pane -x 60% 68 | - nvim 69 | - la 70 | -------------------------------------------------------------------------------- /common/.config/tmuxinator/quantum-panel.yml: -------------------------------------------------------------------------------- 1 | # /Users/john.enderby/.config/tmuxinator/quantum-panel.yml 2 | 3 | name: quantum-panel 4 | root: ~/Developer/projects/quantumPanel/ 5 | 6 | # Optional tmux socket 7 | # socket_name: foo 8 | 9 | # Note that the pre and post options have been deprecated and will be replaced by 10 | # project hooks. 11 | 12 | # Project hooks 13 | 14 | # Runs on project start, always 15 | # on_project_start: command 16 | 17 | # Run on project start, the first time 18 | # on_project_first_start: command 19 | 20 | # Run on project start, after the first time 21 | # on_project_restart: command 22 | 23 | # Run on project exit ( detaching from tmux session ) 24 | # on_project_exit: command 25 | 26 | # Run on project stop 27 | # on_project_stop: command 28 | 29 | # Runs in each window and pane before window/pane specific commands. Useful for setting up interpreter versions. 30 | # pre_window: rbenv shell 2.0.0-p247 31 | 32 | # Pass command line options to tmux. Useful for specifying a different tmux.conf. 33 | # tmux_options: -f ~/.tmux.mac.conf 34 | 35 | # Change the command to call tmux. This can be used by derivatives/wrappers like byobu. 36 | # tmux_command: byobu 37 | 38 | # Specifies (by name or index) which window will be selected on project startup. If not set, the first window is used. 39 | # startup_window: editor 40 | 41 | # Specifies (by index) which pane of the specified window will be selected on project startup. If not set, the first pane is used. 42 | # startup_pane: 1 43 | 44 | # Controls whether the tmux session should be attached to automatically. Defaults to true. 45 | # attach: false 46 | 47 | windows: 48 | - dots: 49 | layout: f96e,282x76,0,0{169x76,0,0,1,112x76,170,0[112x38,170,0,2,112x37,170,39,3]} 50 | # Synchronize all panes of this window, can be enabled before or after the pane commands run. 51 | # 'before' represents legacy functionality and will be deprecated in a future release, in favour of 'after' 52 | # synchronize: after 53 | panes: 54 | - editor: 55 | - tmux resize-pane -x 60% 56 | - nvim 57 | - la 58 | - fastfetch 59 | - home: 60 | root: ~/.dots 61 | layout: main-vertical 62 | # Synchronize all panes of this window, can be enabled before or after the pane commands run. 63 | # 'before' represents legacy functionality and will be deprecated in a future release, in favour of 'after' 64 | # synchronize: after 65 | panes: 66 | - editor: 67 | - tmux resize-pane -x 60% 68 | - nvim 69 | - la 70 | -------------------------------------------------------------------------------- /common/.config/tmuxinator/raf-app.yml: -------------------------------------------------------------------------------- 1 | # /Users/john.enderby/.config/tmuxinator/raf-app.yml 2 | 3 | name: raf-app 4 | root: /Users/john.enderby/Developer/raccoons/raf-app/ 5 | 6 | # Optional tmux socket 7 | # socket_name: foo 8 | 9 | # Note that the pre and post options have been deprecated and will be replaced by 10 | # project hooks. 11 | 12 | # Project hooks 13 | 14 | # Runs on project start, always 15 | # on_project_start: command 16 | 17 | # Run on project start, the first time 18 | # on_project_first_start: command 19 | 20 | # Run on project start, after the first time 21 | # on_project_restart: command 22 | 23 | # Run on project exit ( detaching from tmux session ) 24 | # on_project_exit: command 25 | 26 | # Run on project stop 27 | # on_project_stop: command 28 | 29 | # Runs in each window and pane before window/pane specific commands. Useful for setting up interpreter versions. 30 | # pre_window: rbenv shell 2.0.0-p247 31 | 32 | # Pass command line options to tmux. Useful for specifying a different tmux.conf. 33 | # tmux_options: -f ~/.tmux.mac.conf 34 | 35 | # Change the command to call tmux. This can be used by derivatives/wrappers like byobu. 36 | # tmux_command: byobu 37 | 38 | # Specifies (by name or index) which window will be selected on project startup. If not set, the first window is used. 39 | # startup_window: editor 40 | 41 | # Specifies (by index) which pane of the specified window will be selected on project startup. If not set, the first pane is used. 42 | # startup_pane: 1 43 | 44 | # Controls whether the tmux session should be attached to automatically. Defaults to true. 45 | # attach: false 46 | 47 | windows: 48 | - front: 49 | root: /Users/john.enderby/Developer/raccoons/raf-app/ 50 | layout: f96e,282x76,0,0{169x76,0,0,1,112x76,170,0[112x38,170,0,2,112x37,170,39,3]} 51 | # Synchronize all panes of this window, can be enabled before or after the pane commands run. 52 | # 'before' represents legacy functionality and will be deprecated in a future release, in favour of 'after' 53 | # synchronize: after 54 | panes: 55 | - editor: 56 | - tmux resize-pane -x 60% 57 | - nvim 58 | - dev: 59 | - ls 60 | - fastfetch 61 | - dots: 62 | root: /Users/john.enderby/Developer/personal/dots/ 63 | layout: main-vertical 64 | # Synchronize all panes of this window, can be enabled before or after the pane commands run. 65 | # 'before' represents legacy functionality and will be deprecated in a future release, in favour of 'after' 66 | # synchronize: after 67 | panes: 68 | - editor: 69 | - tmux resize-pane -x 60% 70 | - nvim 71 | - 72 | - 73 | -------------------------------------------------------------------------------- /common/.config/tmuxinator/raf-service.yml: -------------------------------------------------------------------------------- 1 | # /Users/john.enderby/.config/tmuxinator/raf-service.yml 2 | 3 | name: refer-a-friend-service 4 | root: /Users/john.enderby/Developer/raccoons/refer-a-friend-service/ 5 | 6 | # Optional tmux socket 7 | # socket_name: foo 8 | 9 | # Note that the pre and post options have been deprecated and will be replaced by 10 | # project hooks. 11 | 12 | # Project hooks 13 | 14 | # Runs on project start, always 15 | # on_project_start: command 16 | 17 | # Run on project start, the first time 18 | # on_project_first_start: command 19 | 20 | # Run on project start, after the first time 21 | # on_project_restart: command 22 | 23 | # Run on project exit ( detaching from tmux session ) 24 | # on_project_exit: command 25 | 26 | # Run on project stop 27 | # on_project_stop: command 28 | 29 | # Runs in each window and pane before window/pane specific commands. Useful for setting up interpreter versions. 30 | # pre_window: rbenv shell 2.0.0-p247 31 | 32 | # Pass command line options to tmux. Useful for specifying a different tmux.conf. 33 | # tmux_options: -f ~/.tmux.mac.conf 34 | 35 | # Change the command to call tmux. This can be used by derivatives/wrappers like byobu. 36 | # tmux_command: byobu 37 | 38 | # Specifies (by name or index) which window will be selected on project startup. If not set, the first window is used. 39 | # startup_window: editor 40 | 41 | # Specifies (by index) which pane of the specified window will be selected on project startup. If not set, the first pane is used. 42 | # startup_pane: 1 43 | 44 | # Controls whether the tmux session should be attached to automatically. Defaults to true. 45 | # attach: false 46 | 47 | windows: 48 | - front: 49 | root: /Users/john.enderby/Developer/fdweb/contentx-marketing-frontend/ 50 | layout: f96e,282x76,0,0{169x76,0,0,1,112x76,170,0[112x38,170,0,2,112x37,170,39,3]} 51 | # Synchronize all panes of this window, can be enabled before or after the pane commands run. 52 | # 'before' represents legacy functionality and will be deprecated in a future release, in favour of 'after' 53 | # synchronize: after 54 | panes: 55 | - editor: 56 | - tmux resize-pane -x 60% 57 | - nvim 58 | - dev: 59 | - 60 | - fastfetch 61 | -------------------------------------------------------------------------------- /common/.config/wezterm/config/_sample.lua: -------------------------------------------------------------------------------- 1 | local wezterm = require"wezterm" 2 | 3 | local module = {} 4 | 5 | function module.apply_to_config (config) 6 | -- set config options here 7 | -- config.config_option = config_option_value 8 | end 9 | 10 | return module 11 | -------------------------------------------------------------------------------- /common/.config/wezterm/config/behaviour.lua: -------------------------------------------------------------------------------- 1 | local wezterm = require "wezterm" 2 | 3 | local behaviour = {} 4 | 5 | function behaviour.apply_to_config(config) 6 | -- set config options here 7 | -- config.config_option = config_option_value 8 | config.window_close_confirmation = "NeverPrompt" 9 | 10 | config.skip_close_confirmation_for_processes_named = { 11 | "bash", 12 | "sh", 13 | "zsh", 14 | "fish", 15 | "tmux", 16 | "nu", 17 | "cmd.exe", 18 | "pwsh.exe", 19 | "powershell.exe", 20 | } 21 | 22 | config.adjust_window_size_when_changing_font_size = false 23 | config.tab_max_width = 25 24 | config.switch_to_last_active_tab_when_closing_tab = true 25 | config.scrollback_lines = 5000 26 | 27 | config.initial_rows = 48 28 | config.initial_cols = 140 29 | 30 | config.front_end = "OpenGL" 31 | 32 | config.enable_wayland = false 33 | end 34 | 35 | return behaviour 36 | -------------------------------------------------------------------------------- /common/.config/wezterm/config/theme.lua: -------------------------------------------------------------------------------- 1 | local wezterm = require "wezterm" 2 | -- example comment 3 | local theme = {} 4 | 5 | function theme.apply_to_config(config) 6 | config.color_scheme = "Catppuccin Mocha" 7 | 8 | config.colors = { 9 | background = "#11111B", 10 | cursor_bg = "#D20F39", 11 | selection_bg = "#cba6f7", 12 | selection_fg = "#11111b", 13 | split = "#cba6f7", 14 | ansi = { 15 | "#11111b", -- black 16 | "#f38ba8", -- red 17 | "#a6e3a1", -- green 18 | "#f9e2af", -- yellow 19 | "#89b4fa", -- blue 20 | "#cba6f7", -- magenta 21 | "#94e2d5", -- cyan 22 | "#bac2de", -- white 23 | }, 24 | brights = { 25 | "#585b70", -- black 26 | "#f38ba8", -- red 27 | "#a6e3a1", -- green 28 | "#f9e2af", -- yellow 29 | "#89b4fa", -- blue 30 | "#cba6f7", -- magenta 31 | "#94e2d5", -- cyan 32 | "#a6adc8", -- white 33 | }, 34 | } 35 | 36 | config.font = 37 | wezterm.font_with_fallback { { family = "Recursive Mono Linear Static", stretch = "Normal", weight = "Medium" } } 38 | 39 | config.line_height = 1.1 40 | 41 | config.harfbuzz_features = 42 | { "calt", "liga", "dlig", "ss01", "ss02", "ss03", "ss04", "ss05", "ss06", "ss07", "ss08", "ss09" } 43 | 44 | config.font_size = 14 45 | 46 | config.font_rules = { 47 | { 48 | intensity = "Bold", 49 | italic = true, 50 | font = wezterm.font { 51 | family = "Recursive Mono Casual Static", 52 | style = "Italic", 53 | }, 54 | }, 55 | { 56 | italic = true, 57 | intensity = "Half", 58 | font = wezterm.font { 59 | family = "Recursive Mono Casual Static", 60 | style = "Italic", 61 | }, 62 | }, 63 | { 64 | italic = true, 65 | intensity = "Normal", 66 | font = wezterm.font { 67 | family = "Recursive Mono Casual Static", 68 | style = "Italic", 69 | }, 70 | }, 71 | } 72 | 73 | config.command_palette_bg_color = "#181825" 74 | config.command_palette_fg_color = "#cdd6f4" 75 | config.command_palette_rows = 16 76 | 77 | config.cursor_blink_ease_in = "Constant" 78 | config.cursor_blink_ease_out = "Constant" 79 | config.cursor_blink_rate = 550 80 | 81 | config.inactive_pane_hsb = { 82 | -- saturation = 0.66, 83 | brightness = 0.5, 84 | } 85 | 86 | config.window_padding = { 87 | left = 8, 88 | right = 8, 89 | top = 0, 90 | bottom = 0, 91 | } 92 | end 93 | 94 | return theme 95 | -------------------------------------------------------------------------------- /common/.config/wezterm/config/window.lua: -------------------------------------------------------------------------------- 1 | local wezterm = require "wezterm" 2 | 3 | local window = {} 4 | 5 | function window.apply_to_config(config) 6 | -- toggle this to enable/disable tabs 7 | config.enable_tab_bar = false 8 | -- tab bar 9 | config.use_fancy_tab_bar = false 10 | config.tab_bar_at_bottom = true 11 | 12 | -- window decorations 13 | config.window_decorations = "RESIZE" 14 | 15 | -- window padding 16 | config.window_padding = { 17 | top = 8, 18 | } 19 | end 20 | 21 | return window 22 | -------------------------------------------------------------------------------- /common/.config/wezterm/stylua.toml: -------------------------------------------------------------------------------- 1 | column_width = 120 2 | line_endings = "Unix" 3 | indent_type = "Spaces" 4 | indent_width = 2 5 | quote_style = "AutoPreferDouble" 6 | call_parentheses = "None" 7 | -------------------------------------------------------------------------------- /common/.config/wezterm/wezterm.lua: -------------------------------------------------------------------------------- 1 | local wezterm = require "wezterm" 2 | local theme = require "config.theme" 3 | local window = require "config.window" 4 | local behaviour = require "config.behaviour" 5 | local layouts = require "config.layouts" 6 | local keys = require "config.keys" 7 | 8 | local M = wezterm.config_builder() 9 | 10 | theme.apply_to_config(M) 11 | window.apply_to_config(M) 12 | behaviour.apply_to_config(M) 13 | keys.apply_to_config(M) 14 | 15 | M.colors.compose_cursor = "orange" 16 | 17 | wezterm.on("update-right-status", function(window, pane) 18 | local leader = "" 19 | if window:leader_is_active() then 20 | leader = "LEADER" 21 | end 22 | window:set_right_status(leader) 23 | end) 24 | 25 | wezterm.on("work_layout", function(window, pane, name, value) 26 | layouts.work_layout() 27 | end) 28 | 29 | wezterm.on("personal_layout", function(window, pane, name, value) 30 | layouts.personal_layout() 31 | end) 32 | 33 | return M 34 | -------------------------------------------------------------------------------- /common/.config/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 | -------------------------------------------------------------------------------- /common/.config/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 | -------------------------------------------------------------------------------- /common/.config/yazi/flavors/catppuccin-mocha.yazi/README.md: -------------------------------------------------------------------------------- 1 |
2 | Yazi logo 3 |
4 | 5 |

6 | Catppuccin Mocha Flavor for Yazi 7 |

8 | 9 | ## 👀 Preview 10 | 11 | 12 | 13 | ## 🎨 Installation 14 | 15 | ```sh 16 | ya pack -a yazi-rs/flavors:catppuccin-mocha 17 | ``` 18 | 19 | ## ⚙️ Usage 20 | 21 | Add these lines to your `theme.toml` configuration file to use it: 22 | 23 | ```toml 24 | [flavor] 25 | use = "catppuccin-mocha" 26 | ``` 27 | 28 | ## 📜 License 29 | 30 | The flavor is MIT-licensed, and the included tmTheme is also MIT-licensed. 31 | 32 | Check the [LICENSE](LICENSE) and [LICENSE-tmtheme](LICENSE-tmtheme) file for more details. 33 | -------------------------------------------------------------------------------- /common/.config/yazi/flavors/catppuccin-mocha.yazi/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnend/dots/2288dd56068f194e64d08db38247f5b5ded00406/common/.config/yazi/flavors/catppuccin-mocha.yazi/preview.png -------------------------------------------------------------------------------- /common/.config/yazi/keymap.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnend/dots/2288dd56068f194e64d08db38247f5b5ded00406/common/.config/yazi/keymap.toml -------------------------------------------------------------------------------- /common/.config/yazi/theme.toml: -------------------------------------------------------------------------------- 1 | [flavor] 2 | dark = "rose-pine" 3 | -------------------------------------------------------------------------------- /common/.config/yazi/yazi.toml: -------------------------------------------------------------------------------- 1 | # yazi.toml 2 | [manager] 3 | show_hidden = true 4 | -------------------------------------------------------------------------------- /common/.gitconfig: -------------------------------------------------------------------------------- 1 | [include] 2 | path = "~/.gitsettings/catppuccin/.gitconfig" 3 | 4 | [core] 5 | pager = delta 6 | editor = nvim 7 | [interactive] 8 | diffFilter = delta --color-only 9 | [delta] 10 | side-by-side = true 11 | navigate = true 12 | keep-plus-minus-markers = true 13 | features = catppuccin-mocha 14 | [merge] 15 | conflictstyle = diff3 16 | [diff] 17 | colorMoved = default 18 | [commit] 19 | template = ~/.gitsettings/.gitmessage.txt 20 | [init] 21 | defaultBranch = main 22 | [alias] 23 | fix = "!f() { git commit -m \"fix: $1\" ; }; f" 24 | feat = "!f() { git commit -m \"feat: $1\" ; }; f" 25 | build = "!f() { git commit -m \"build: $1\" ; }; f" 26 | chore = "!f() { git commit -m \"chore: $1\" ; }; f" 27 | ci = "!f() { git commit -m \"ci: $1\" ; }; f" 28 | docs = "!f() { git commit -m \"docs: $1\" ; }; f" 29 | style = "!f() { git commit -m \"style: $1\" ; }; f" 30 | refactor = "!f() { git commit -m \"refactor: $1\" ; }; f" 31 | test = "!f() { git commit -m \"test: $1\" ; }; f" 32 | force = "!f() { git add . && git commit --amend --no-edit --no-verify && git push --force-with-lease ; }; f" 33 | untrack = "!f() { git ls-files --ignored --exclude-standard | xargs -0 git rm -r ; }; f" 34 | [user] 35 | name = John Enderby 36 | email = john.enderby.1987@gmail.com 37 | [filter "lfs"] 38 | clean = git-lfs clean -- %f 39 | smudge = git-lfs smudge -- %f 40 | process = git-lfs filter-process 41 | required = true 42 | [includeIf "gitdir:/Users/"] 43 | path = ~/.gitsettings/credentials.conf 44 | [includeIf "gitdir:/home/"] 45 | path = ~/.gitsettings/credentials.conf 46 | [pull] 47 | rebase = false 48 | -------------------------------------------------------------------------------- /common/.gitsettings/.gitmessage.txt: -------------------------------------------------------------------------------- 1 | ### Commit messages should follow the following format: 2 | ######################################################################## 3 | ### Subject line 4 | ######################################################################## 5 | # [optional scope]: 6 | ############################### 50 chars is here # 7 | 8 | ### Message body 9 | # [optional body] 10 | ################################################### 70 chars is here # 11 | ######################################################################## 12 | 13 | ### Message footer, uncomment line 16 to include 14 | # BREAKING CHANGE: 15 | ######################################################################## 16 | # 17 | # Subject: Follow the format on line 24, no longer than 50 characters, 18 | # don't end with a period. 19 | # 20 | # Two main types are fix, and feat. Fix correlates with PATCH version 21 | # changes in SemVer, and feat correlates with MINOR version changes. 22 | # Other allowed types are: build, chore, ci, docs, style, refactor, test 23 | # 24 | # Body: Explain _what_ and _why_ (not _how_). Include task ID 25 | # (Jira issue) - optional but preferred 26 | # 27 | # Footer: the footer is reserved for breaking changes. Alternatively 28 | # breaking changes can be highlighted with an ! after the type. 29 | # 30 | # Examples of commit messages and more information can be found here: 31 | # https://www.conventionalcommits.org/en/v1.0.0/ -------------------------------------------------------------------------------- /common/.zsh_aliases: -------------------------------------------------------------------------------- 1 | # Settings files open in NeoVim 2 | alias zshrc="nvim ~/.zshrc" 3 | alias npmrc="nvim ~/.npmrc" 4 | alias sshconfig="nvim ~/.ssh" 5 | alias ohmyzsh="nvim ~/.oh-my-zsh" 6 | alias alacrittysettings="nvim ~/.config/alacritty" 7 | 8 | # git aliases 9 | alias gitforce='git add . && git commit --amend --no-edit --no-verify && git push -f' 10 | alias gitconfig='nvim ~/.gitconfig' 11 | 12 | # tmux 13 | alias muxi='project=$(tmuxinator list | grep -v -e "projects:" -e "tmuxinator" | tr -s " " "\n" | fzf --header="Select a tmuxinator project:"); if [ -n "$project" ]; then tmuxinator start "$project"; fi' 14 | alias sf="tmux-sessionizer" 15 | 16 | # QoL 17 | alias ":q"="exit" 18 | 19 | # Lazygit 20 | alias "gg"="lazygit" 21 | 22 | # eza - much better ls 23 | alias "ls"="eza --icons" 24 | alias "la"="ls -la --show-symlinks" 25 | alias "ld"="ls -D" 26 | alias "lad"="ls -lDa --show-symlinks" 27 | alias "lt"="ls -T --level=4 --ignore-glob='.git'" 28 | alias "ltg"="ls -T --level=2 --ignore-glob='.git'" 29 | alias "lat"="ls -Ta --ignore-glob='.git'" # use with caution! 30 | 31 | # neovim 32 | alias "v"="nvim" 33 | 34 | #gh cli 35 | gh-create() { 36 | gh repo create "${1:-$(basename "$PWD")}" --public --source=. --remote=origin 37 | } 38 | 39 | # Linux specific aliases 40 | 41 | if [[ "$OSTYPE" == "linux-gnu" ]]; then 42 | alias "a"="aerc" 43 | alias pavucontrol="GTK_THEME=Adwaita-dark pavucontrol" 44 | alias nmtui="NEWT_COLORS='root=black,black;window=black,black;border=white,black;listbox=white,black;label=blue,black;checkbox=red,black;title=green,black;button=black,red;actsellistbox=black,red;actlistbox=white,gray;compactbutton=white,gray;actcheckbox=white,blue;entry=lightgray,black;textbox=blue,black' nmtui" 45 | fi 46 | 47 | 48 | -------------------------------------------------------------------------------- /common/.zsh_env: -------------------------------------------------------------------------------- 1 | # ███████╗███╗ ██╗██╗ ██╗ ██╗ ██╗ █████╗ ██████╗ ███████╗ 2 | # ██╔════╝████╗ ██║██║ ██║ ██║ ██║██╔══██╗██╔══██╗██╔════╝ 3 | # █████╗ ██╔██╗ ██║██║ ██║ ██║ ██║███████║██████╔╝███████╗ 4 | # ██╔══╝ ██║╚██╗██║╚██╗ ██╔╝ ╚██╗ ██╔╝██╔══██║██╔══██╗╚════██║ 5 | # ███████╗██║ ╚████║ ╚████╔╝ ╚████╔╝ ██║ ██║██║ ██║███████║ 6 | # ╚══════╝╚═╝ ╚═══╝ ╚═══╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ 7 | 8 | # XDG base directory 9 | export XDG_CONFIG_HOME="$HOME/.config" 10 | export XDG_CACHE_HOME="$HOME/.cache" 11 | 12 | # Theme customisation for autosuggestion 13 | export ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#ca9ee6" 14 | 15 | # Firefox developer edition profile (look into this on mac) 16 | # export FFD_USER_DIR="$HOME/.mozilla/firefox/6dh274r9.dev-edition-default" 17 | 18 | # Dotfiles location 19 | if [[ "$OSTYPE" == "linux-gnu" ]]; then 20 | export DOTS="$HOME/Developer/dots/" 21 | export PACMAN_CACHE="/var/cache/pacman/" 22 | elif [[ "$OSTYPE" == "darwin"* ]]; then 23 | export DOTS="$HOME/Developer/personal/dots/" 24 | fi 25 | 26 | # Custom location for OMZ custom plugins/themes 27 | export ZSH_CUSTOM="$HOME/.oh-my-zsh/custom/" 28 | 29 | # Node.js (using n) global install prefix 30 | export N_PREFIX="$HOME/.n" 31 | 32 | # Cargo (Rust) - activate only if installed 33 | [[ -f "$HOME/.cargo/env" ]] && source "$HOME/.cargo/env" 34 | 35 | # Editor 36 | if [[ -n $SSH_CONNECTION ]]; then 37 | export EDITOR="vim" 38 | else 39 | export EDITOR="nvim" 40 | fi 41 | 42 | # if [ -z "$OP_SESSION_personal" ]; then 43 | # export OP_SESSION_personal=$(op signin --raw) 44 | # fi 45 | # # Keys 46 | # export ANTHROPIC_API_KEY=$(op item get "Anthropic" --field credential --reveal --session="$OP_SESSION_personal") 47 | # export OPENAI_API_KEY=$(op item get "OpenAPI" --field credential --reveal --session="$OP_SESSION_personal") 48 | -------------------------------------------------------------------------------- /common/.zsh_fzf: -------------------------------------------------------------------------------- 1 | # fzf 2 | if [[ ! "$PATH" == */opt/homebrew/opt/fzf/bin* ]]; then 3 | PATH="${PATH:+${PATH}:}/opt/homebrew/opt/fzf/bin" 4 | fi 5 | 6 | source <(fzf --zsh) 7 | 8 | export FZF_DEFAULT_COMMAND='fd --type f --hidden --exclude .git' 9 | export FZF_DEFAULT_OPTS=$FZF_DEFAULT_OPTS$'\n'"\ 10 | --color=fg:#a6adc8,fg+:#cdd6f4,bg:-1,bg+:#313244 \ 11 | --color=hl:#cba6f7,hl+:#94e2d5,info:#cba6f7,marker:#a6e3a1 \ 12 | --color=prompt:#d7005f,spinner:#cba6f7,pointer:#cba6f7,header:#b4befe \ 13 | --color=border:#313244,preview-fg:#cdd6f4,preview-label:#bac2de,label:#bac2de \ 14 | --color=query:#cdd6f4,disabled:#a6adc8 \ 15 | --border='rounded' --preview-window='border-rounded' --prompt='> ' \ 16 | --marker='>' --pointer='◆' --separator='─' --scrollbar='│' \ 17 | --layout='reverse' --info='right'" 18 | export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND" 19 | export FZF_CTRL_T_OPTS="--preview 'bat --color=always --line-range :50 {}'" 20 | export FZF_CTRL_R_OPTS=" 21 | --bind 'ctrl-y:execute-silent(echo -n {2..} | wl-copy)+abort' 22 | --color header:italic 23 | --header ' to copy command'" 24 | 25 | # Yarn fzf settings (not currently used) 26 | # export FZF_COMPLETION_TRIGGER="." 27 | 28 | # Other fzf options 29 | export FZF_ALT_C_COMMAND="fd --type d . --hidden" 30 | export FZF_ALT_C_OPTS="--preview 'eza -T {} | head -50'" 31 | 32 | zstyle ':fzf-tab:*' fzf-command fzf 33 | zstyle ':fzf-tab:*' fzf-flags \ 34 | --color=fg:#a6adc8,fg+:#cdd6f4,bg:-1,bg+:#313244 \ 35 | --color=hl:#cba6f7,hl+:#94e2d5,info:#cba6f7,marker:#a6e3a1 \ 36 | --color=prompt:#d7005f,spinner:#cba6f7,pointer:#cba6f7,header:#b4befe \ 37 | --color=border:#313244,preview-fg:#cdd6f4,preview-label:#bac2de,label:#bac2de \ 38 | --color=query:#cdd6f4,disabled:#a6adc8 \ 39 | --border=rounded --border-label='' --preview-window=border-rounded --prompt='> ' \ 40 | --marker='>' --pointer='◆' --separator='─' --scrollbar='│' \ 41 | --layout=reverse --info=right 42 | # fzf keybindings 43 | 44 | 45 | if [[ "$OSTYPE" == "linux-gnu"* ]]; then 46 | source /usr/share/fzf/key-bindings.zsh 47 | source /usr/share/fzf/completion.zsh 48 | elif [[ "$OSTYPE" == "darwin" ]]; then 49 | source "$(brew --prefix)/opt/fzf/shell/keybindings.zsh" 50 | source "$(brew --prefix)/opt/fzf/shell/completion.zsh" 51 | fi 52 | -------------------------------------------------------------------------------- /common/.zsh_path: -------------------------------------------------------------------------------- 1 | # ———————————————————————————————————————————————— 2 | # Core paths (in this order of priority) 3 | # ———————————————————————————————————————————————— 4 | 5 | # 1) Your personal ~/bin 6 | # 2) `n`’s shims 7 | export PATH="$HOME/bin:$N_PREFIX/bin:$PATH" 8 | 9 | # 3) System dirs 10 | export PATH="$PATH:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" 11 | 12 | # 4) Your local installs 13 | export PATH="$PATH:$HOME/.local/bin" 14 | export PATH="$PATH:$HOME/.npm-global/bin" 15 | export PATH="$PATH:$HOME/.fig/bin" 16 | 17 | # ———————————————————————————————————————————————— 18 | # macOS-only 19 | # ———————————————————————————————————————————————— 20 | if [[ "$OSTYPE" == "darwin"* ]]; then 21 | export PATH="$PATH:/opt/homebrew/bin:/opt/homebrew/sbin" 22 | export PATH="$PATH:$HOME/Library/Application Support/JetBrains/Toolbox/scripts" 23 | export PATH="$PATH:$HOME/Library/Python/3.9/bin" 24 | export PATH="$PATH:$HOME/.rd/bin" # Rancher Desktop 25 | export PATH="$HOME/.codeium/windsurf/bin:$PATH" 26 | fi 27 | 28 | # ———————————————————————————————————————————————— 29 | # Linux-only 30 | # ———————————————————————————————————————————————— 31 | if [[ "$OSTYPE" == "linux-gnu"* ]]; then 32 | export PATH="$PATH:$HOME/.local/share/gem/ruby/3.0.0/bin" 33 | fi 34 | 35 | # ———————————————————————————————————————————————— 36 | # Language/toolchain-specific 37 | # ———————————————————————————————————————————————— 38 | export PATH="$PATH:/usr/local/go/bin" 39 | export PATH="$PATH:$HOME/.bun/bin" 40 | 41 | # Homebrew-or-Linuxbrew Python (put this right at the front if it exists) 42 | if command -v brew &>/dev/null; then 43 | PYTHON_BIN="$(brew --prefix)/opt/python/libexec/bin" 44 | export PATH="$PYTHON_BIN:$PATH" 45 | fi 46 | 47 | -------------------------------------------------------------------------------- /common/.zshrc: -------------------------------------------------------------------------------- 1 | # Load env vars and system config 2 | source "$HOME/.zsh_env" 3 | source "$HOME/.zsh_path" 4 | source "$HOME/.zsh_functions" 5 | 6 | # Enable powerlevel10k instant prompt 7 | if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then 8 | source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" 9 | fi 10 | 11 | # oh-my-zsh core 12 | export ZSH="$HOME/.oh-my-zsh" 13 | export ZSH_CUSTOM="$ZSH/custom" 14 | ZSH_THEME="powerlevel10k/powerlevel10k" 15 | plugins=(zsh-vi-mode fzf-tab gh git zsh-autosuggestions command-not-found colored-man-pages) 16 | 17 | source "$ZSH/oh-my-zsh.sh" 18 | 19 | # History settings 20 | HISTFILE=$HOME/.zsh_history 21 | HISTSIZE=1000000 22 | SAVEHIST=1000000 23 | setopt extended_history share_history hist_expire_dups_first hist_ignore_dups hist_verify 24 | 25 | # Aliases 26 | source "$HOME/.zsh_aliases" 27 | 28 | # FZF 29 | source "$HOME/.zsh_fzf" 30 | 31 | # Powerlevel10k prompt 32 | [[ -f "$HOME/.p10k.zsh" ]] && source "$HOME/.p10k.zsh" 33 | 34 | # Envman 35 | [[ -s "$HOME/.config/envman/load.sh" ]] && source "$HOME/.config/envman/load.sh" 36 | 37 | # zoxide 38 | command -v zoxide &> /dev/null && eval "$(zoxide init zsh)" 39 | 40 | # thefuck 41 | command -v thefuck &> /dev/null && eval "$(thefuck --alias)" 42 | 43 | # jenv 44 | command -v jenv &> /dev/null && eval "$(jenv init -)" 45 | 46 | # Netskope certs (mac-specific) 47 | if [[ "$OSTYPE" == darwin* && -f "$HOME/netskope/certs/nscacert_combined.pem" ]]; then 48 | export SSL_CERT_DIR="$HOME/netskope/certs" 49 | export REQUESTS_CA_BUNDLE="$SSL_CERT_DIR/nscacert_combined.pem" 50 | export CURL_CA_BUNDLE="$REQUESTS_CA_BUNDLE" 51 | export SSL_CERT_FILE="$REQUESTS_CA_BUNDLE" 52 | export NODE_EXTRA_CA_CERTS="$REQUESTS_CA_BUNDLE" 53 | export GIT_SSL_CAPATH="$REQUESTS_CA_BUNDLE" 54 | export PIP_CERT="$REQUESTS_CA_BUNDLE" 55 | export DENO_TLS_CA_STORE=system 56 | fi 57 | 58 | # 🤫 59 | [[ -f "$HOME/.zsh_secrets" ]] && source "$HOME/.zsh_secrets" 60 | 61 | # bun completions 62 | [ -s "$HOME/.bun/_bun" ] && source "$HOME/.bun/_bun" 63 | -------------------------------------------------------------------------------- /common/images/samurai-skull-flowers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnend/dots/2288dd56068f194e64d08db38247f5b5ded00406/common/images/samurai-skull-flowers.png -------------------------------------------------------------------------------- /common/install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Check for dependencies 4 | command -v git >/dev/null 2>&1 || { echo >&2 "Git is not installed. Please install Git and rerun the script."; exit 1; } 5 | command -v zsh >/dev/null 2>&1 || { echo >&2 "Zsh is not installed. Please install Zsh and rerun the script."; exit 1; } 6 | 7 | # Install Oh My Zsh 8 | echo "Installing Oh My Zsh..." 9 | sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 10 | 11 | # Install Powerlevel10k theme 12 | echo "Installing Powerlevel10k theme..." 13 | git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/.oh-my-zsh/custom/themes/powerlevel10k 14 | 15 | # Install fzf-tab plugin 16 | echo "Installing fzf-tab plugin..." 17 | git clone https://github.com/Aloxaf/fzf-tab ~/.oh-my-zsh/custom/plugins/fzf-tab 18 | 19 | # Install zsh-vi-mode plugin 20 | echo "Installing zsh-vi-mode plugin..." 21 | git clone https://github.com/jeffreytse/zsh-vi-mode ~/.oh-my-zsh/custom/plugins/zsh-vi-mode 22 | 23 | # Install fzf-yarn plugin 24 | echo "Installing fzf-yarn plugin..." 25 | git clone https://github.com/pierpo/fzf-yarn ~/.oh-my-zsh/plugins/fzf-yarn 26 | 27 | # Install zsh-autosuggestions plugin 28 | echo "Installing zsh-autosuggestions plugin..." 29 | git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions 30 | 31 | # Set Zsh theme to Powerlevel10k in .zshrc 32 | echo "Configuring Powerlevel10k in .zshrc..." 33 | sed -i '' 's/^ZSH_THEME=".*"/ZSH_THEME="powerlevel10k\/powerlevel10k"/' ~/.zshrc 34 | 35 | # Add plugins to .zshrc 36 | echo "Adding plugins to .zshrc..." 37 | sed -i '' 's/plugins=(.*/plugins=(git fzf-tab zsh-vi-mode fzf-yarn zsh-autosuggestions)/' ~/.zshrc 38 | 39 | # Reload Zsh configuration 40 | echo "Reloading .zshrc..." 41 | source "$XDG_CONFIG_HOME"/.zshrc 42 | 43 | 44 | # Install TPM for tmux 45 | echo "Installing TPM for tmux..." 46 | git clone https://github.com/tmux-plugins/tpm ~/.config/tmux/plugins/tpm 47 | 48 | # Installation complete 49 | echo "Installation complete! Please restart your terminal or run 'source ~/.zshrc' if changes do not take effect." 50 | 51 | # Update the bat binary cache 52 | if command -v bat &>/dev/null; then 53 | echo "bat is installed, rebuilding cache" 54 | bat cache --build 55 | else 56 | echo "bat is not installed" 57 | echo "Install bat and then run:" 58 | echo " bat cache --build" 59 | exit 1 60 | fi 61 | -------------------------------------------------------------------------------- /common/shell_text.sh: -------------------------------------------------------------------------------- 1 | # colors.sh 2 | 3 | # Text Treatments 4 | export RESET="\033[0m" # Reset all attributes 5 | export BOLD="\033[1m" # Bold text 6 | export DIM="\033[2m" # Dim (faint) text 7 | export UNDERLINE="\033[4m" # Underlined text 8 | export BLINK="\033[5m" # Blinking text (may not be supported) 9 | export REVERSE="\033[7m" # Reversed (invert foreground/background) 10 | export HIDDEN="\033[8m" # Hidden text 11 | 12 | # Standard Terminal Colors 13 | export BLACK="\033[30m" # Black 14 | export RED="\033[31m" # Red 15 | export GREEN="\033[32m" # Green 16 | export YELLOW="\033[33m" # Yellow 17 | export BLUE="\033[34m" # Blue 18 | export MAGENTA="\033[35m" # Magenta 19 | export CYAN="\033[36m" # Cyan 20 | export WHITE="\033[37m" # White 21 | export GREY="\033[38;5;250m" # White 22 | 23 | # Extended ANSI Colors (256 Colors) 24 | # Foreground colors (0-255) 25 | for i in {0..255}; do 26 | export COLOR_$i="\033[38;5;${i}m" 27 | done 28 | -------------------------------------------------------------------------------- /lib/sway/packages-repository.txt: -------------------------------------------------------------------------------- 1 | 1password 2 | cbonsai 3 | kanata 4 | mbpfan-git 5 | rose-pine-cursor 6 | rose-pine-gtk-theme 7 | ruby-xdg 8 | spicetify-cli 9 | spotify 10 | swayosd-git 11 | tmuxinator 12 | vesktop 13 | adobe-source-code-pro-fonts 14 | aerc 15 | alacritty 16 | alsa-utils 17 | autotiling 18 | bat 19 | blueman 20 | bluez 21 | brightnessctl 22 | btop 23 | cantarell-fonts 24 | egl-wayland 25 | engrampa 26 | eza 27 | fastfetch 28 | fd 29 | firefox-developer-edition 30 | fzf 31 | gc 32 | gcc 33 | geeqie 34 | ghostty 35 | github-cli 36 | gnome-font-viewer 37 | gnome-themes-extra 38 | go 39 | greetd 40 | greetd-agreety 41 | grim 42 | gtk-lock 43 | gvfs 44 | gvfs-afc 45 | gvfs-gphoto2 46 | gvfs-mtp 47 | gvfs-nfs 48 | gvfs-smb 49 | imagemagick 50 | impala 51 | iwd 52 | jq 53 | json-c 54 | json-glib 55 | jsoncpp 56 | julia 57 | kicad 58 | kicad-library 59 | kicad-library-3d 60 | lazygit 61 | lua 62 | luajit 63 | luarocks 64 | nemo 65 | neovim 66 | networkmanager 67 | nodejs 68 | noto-fonts 69 | noto-fonts-emoji 70 | noto-fonts-extra 71 | nwg-displays 72 | nwg-hello 73 | nwg-look 74 | pavucontrol 75 | perl 76 | php 77 | pipewire 78 | pipewire-pulse 79 | playerctl 80 | polkit 81 | polkit-gnome 82 | python 83 | python-pip 84 | python-pynvim 85 | qalculate-gtk 86 | ripgrep 87 | rofi-emoji 88 | rofi-wayland 89 | ruby 90 | rubygems 91 | slurp 92 | spicetify-cli 93 | stow 94 | sway 95 | swayidle 96 | swaync 97 | swww 98 | sysstat 99 | thefuck 100 | thunderbird 101 | tldr 102 | tmux 103 | treesitter 104 | ttf-nerd-fonts-symbols 105 | ttf-nerd-fonts-symbols-common 106 | ttf-opensans 107 | ttf-recursive-nerd 108 | wayabr 109 | wayland-protocols 110 | wl-clipboard 111 | xclip 112 | xdg-desktop-portal-wlr 113 | xorg-wayland 114 | yazi 115 | zathura 116 | zathura-pdf-mupdf 117 | zoxida 118 | zsh 119 | -------------------------------------------------------------------------------- /lib/sway/sway-install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | username="$(logname)" 4 | 5 | # check for sudo 6 | if [ "$EUID" -ne 0 ]; then 7 | echo "This script must be run with sudo" 8 | exit 1 9 | fi 10 | 11 | # install the package list 12 | echo "Installing needed packages..." 13 | yay -S --noconfirm --noprogressbar --needed --disable-download-timeout $(< packages-repository.txt) 14 | 15 | # enable greetd service 16 | echo "Enabling Greetd service..." 17 | systemctl -f enable greetd.service 18 | 19 | echo "Installation complete" 20 | -------------------------------------------------------------------------------- /linux/.config/aerc/stylesets/catppuccin-mocha: -------------------------------------------------------------------------------- 1 | *.default=true 2 | *.normal=true 3 | 4 | default.fg=#cdd6f4 5 | 6 | error.fg=#f38ba8 7 | warning.fg=#fab387 8 | success.fg=#a6e3a1 9 | 10 | tab.fg=#6c7086 11 | tab.bg=#11111b 12 | tab.selected.fg=#cdd6f4 13 | tab.selected.bg=#313244 14 | tab.selected.bold=true 15 | 16 | border.fg=#301e48 17 | 18 | border.bold=true 19 | 20 | msglist_unread.bold=true 21 | msglist_unread.fg=#a6e3a1 22 | msglist_unread.bg=#1e1e2e 23 | msglist_flagged.fg=#f2cdcd 24 | msglist_flagged.bold=true 25 | msglist_result.fg=#89b4fa 26 | msglist_result.bold=true 27 | msglist_*.selected.bold=true 28 | msglist_*.selected.bg=#cba6f7 29 | msglist_*.selected.fg=#11111b 30 | 31 | dirlist_*.selected.bold=true 32 | dirlist_*.selected.bg=#cba6f7 33 | 34 | statusline_default.fg=#a6adc8 35 | statusline_default.bg=#1e1e2e 36 | statusline_error.bold=true 37 | statusline_success.bold=true 38 | 39 | completion_default.selected.bg=#313244 40 | completion_pill.reverse=false 41 | selector_focused.bold=true 42 | selector_focused.bg=#cba6f7 43 | selector_focused.fg=#11111b 44 | selector_chooser.bold=true 45 | selector_chooser.bg=#cba6f7 46 | selector_chooser.fg=#11111b 47 | default.selected.bold=true 48 | default.selected.bg=#cba6f7 49 | default.selected.fg=#11111b 50 | 51 | [viewer] 52 | url.fg=#89b4fa 53 | url.underline=true 54 | header.bold=true 55 | signature.dim=true 56 | diff_meta.bold=true 57 | diff_chunk.fg=#89b4fa 58 | diff_chunk_func.fg=#89b4fa 59 | diff_chunk_func.bold=true 60 | diff_add.fg=#a6e3a1 61 | diff_del.fg=#f38ba8 62 | quote_*.fg=#6c7086 63 | quote_1.fg=#9399b2 64 | -------------------------------------------------------------------------------- /linux/.config/ags.bak/README.md: -------------------------------------------------------------------------------- 1 | # My Catppuccin Rice 2 | 3 | I like Catppuccin, and I also like Hyprland. 4 | 5 | This collection of bars and widgets and stuff is just my personal taste, and 6 | hasn't really been implemented for consumption by other folks. However, if you 7 | want to replicate any of this please feel free to take a look. 8 | 9 | Things left to do: 10 | 11 | 1. Figure out how to manage custom icons and state within widgets 12 | 13 | - Swapping custom icons for workspace indicators 14 | - Swapping icons on click 15 | - Updating icon colours when "active" (might need to be done with the state of 16 | child widgets most likely) 17 | 18 | 2. Figure out how to make the floating/revealing panels 19 | 20 | - Launcher 21 | - Settings 22 | - Notifications 23 | 24 | 3. Ability to change to light mode? OR change colour palettes entirely? 25 | 4. Easier customisation of fonts? 26 | -------------------------------------------------------------------------------- /linux/.config/ags.bak/assets/circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /linux/.config/ags.bak/assets/lightbulb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /linux/.config/ags.bak/assets/notifications-message.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /linux/.config/ags.bak/assets/rocket.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /linux/.config/ags.bak/assets/settings.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /linux/.config/ags.bak/assets/sticker-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /linux/.config/ags.bak/assets/watch-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /linux/.config/ags.bak/config.js: -------------------------------------------------------------------------------- 1 | import { Utilities } from "./widgets/utilities.js"; 2 | import { DateTime } from "./widgets/dateTime.js"; 3 | import { Workspaces } from "./widgets/workspaces.js"; 4 | 5 | const Bar = (/** @type {number} */ monitor) => 6 | Widget.Window({ 7 | monitor, 8 | name: `bar${monitor}`, 9 | className: "window", 10 | anchor: ["top", "left", "right"], 11 | exclusivity: "exclusive", 12 | child: Widget.CenterBox({ 13 | start_widget: Workspaces(), 14 | centerWidget: DateTime(), 15 | // Should contain interactive items 16 | end_widget: Utilities(), 17 | }), 18 | }); 19 | 20 | App.addIcons(`${App.configDir}/assets`); 21 | 22 | const scssDir = `${App.configDir}/styles`; 23 | const scss = `${App.configDir}/styles/main.scss`; 24 | const css = `/tmp/ags/main.css`; 25 | Utils.exec(`sass ${scss} ${css}`); 26 | 27 | Utils.monitorFile(scssDir, function () { 28 | Utils.exec(`sass ${scss} ${css}`); 29 | App.resetCss(); 30 | App.applyCss(css); 31 | }); 32 | 33 | App.config({ 34 | style: css, 35 | windows: [Bar(2)], 36 | }); 37 | -------------------------------------------------------------------------------- /linux/.config/ags.bak/lib/dateTime.js: -------------------------------------------------------------------------------- 1 | export const weekdayLabel = Variable("", { 2 | poll: [ 3 | 1000, 4 | function () { 5 | const date = new Date(); 6 | const shortDayName = ( 7 | /** @type {Date} */ date, 8 | /** @type {undefined} */ locale, 9 | ) => { 10 | return date.toLocaleString(locale, { weekday: "short" }); 11 | }; 12 | // return formatter.format(new Date()); 13 | return `${shortDayName(date)}, `; 14 | }, 15 | ], 16 | }); 17 | 18 | export const dateLabel = Variable("", { 19 | poll: [ 20 | 100000, 21 | function () { 22 | const date = new Date(); 23 | const shortDate = ( 24 | /** @type {Date} */ date, 25 | /** @type {undefined} */ locale, 26 | ) => { 27 | return date.toLocaleString(locale, { day: "numeric", month: "short" }); 28 | }; 29 | // return formatter.format(new Date()); 30 | return `${shortDate(date)}`; 31 | }, 32 | ], 33 | }); 34 | 35 | export const hoursLabel = Variable("", { 36 | poll: [ 37 | 1000, 38 | function () { 39 | const date = new Date(); 40 | const hour = ( 41 | /** @type {Date} */ date, 42 | /** @type {undefined} */ locale, 43 | ) => { 44 | return date.toLocaleString(locale, { hour: "2-digit" }); 45 | }; 46 | // return formatter.format(new Date()); 47 | return `${hour(date)}`; 48 | }, 49 | ], 50 | }); 51 | 52 | export const minutesLabel = Variable("", { 53 | poll: [ 54 | 1000, 55 | function () { 56 | const date = new Date(); 57 | const minute = ( 58 | /** @type {Date} */ date, 59 | /** @type {undefined} */ locale, 60 | ) => { 61 | return date.toLocaleString(locale, { minute: "2-digit" }); 62 | }; 63 | // return formatter.format(new Date()); 64 | return `${minute(date)}`; 65 | }, 66 | ], 67 | }); 68 | -------------------------------------------------------------------------------- /linux/.config/ags.bak/styles/_colors.scss: -------------------------------------------------------------------------------- 1 | $rosewater: #f5e0dc; 2 | $flamingo: #f2cdcd; 3 | $pink: #f5c2e7; 4 | $mauve: #cba6f7; 5 | $red: #f38ba8; 6 | $maroon: #eba0ac; 7 | $peach: #fab387; 8 | $yellow: #f9e2af; 9 | $green: #a6e3a1; 10 | $teal: #94e2d5; 11 | $sky: #89dceb; 12 | $sapphire: #74c7ec; 13 | $blue: #89b4fa; 14 | $lavender: #b4befe; 15 | $text: #cdd6f4; 16 | $subtext-1: #bac2de; 17 | $subtext-0: #a6adc8; 18 | $overlay-2: #9399b2; 19 | $overlay-1: #7f849c; 20 | $overlay-0: #6c7086; 21 | $surface-2: #585b70; 22 | $surface-1: #45475a; 23 | $surface-0: #313244; 24 | $base: #1e1e2e; 25 | $mantle: #181825; 26 | $crust: #11111b; 27 | -------------------------------------------------------------------------------- /linux/.config/ags.bak/styles/_fonts.scss: -------------------------------------------------------------------------------- 1 | @use "./colors" as c; 2 | $font-famiy-main: "Recursive Sans Linear Static"; 3 | $font-famiy-personality: "Recursive Sans Casual Static"; 4 | 5 | @mixin content-font-main-heading { 6 | font-family: $font-famiy-main; 7 | font-weight: 600; 8 | font-size: 45px; 9 | margin: 52px; 10 | color: c.$text; 11 | } 12 | 13 | @mixin content-font-section-title { 14 | font-family: $font-famiy-main; 15 | font-weight: 400; 16 | font-size: 30px; 17 | margin: 39px 0 13px 0; 18 | color: c.$text; 19 | } 20 | 21 | @mixin content-font-sub-heading-1 { 22 | font-family: $font-famiy-main; 23 | font-weight: 400; 24 | font-size: 23px; 25 | text-transform: uppercase; 26 | margin: 39px 0 13px 0; 27 | color: c.$text; 28 | } 29 | 30 | @mixin content-font-sub-heading-2 { 31 | font-family: $font-famiy-main; 32 | font-weight: 600; 33 | font-size: 19px; 34 | margin: 39px 0 13px 0; 35 | color: c.$text; 36 | } 37 | 38 | @mixin content-font-sub-heading-3 { 39 | font-family: $font-famiy-main; 40 | font-weight: 400; 41 | font-size: 18px; 42 | text-transform: uppercase; 43 | margin: 39px 0 13px 0; 44 | color: c.$text; 45 | } 46 | 47 | @mixin content-font-sub-heading-4 { 48 | font-family: $font-famiy-main; 49 | font-weight: 400; 50 | font-size: 14px; 51 | font-style: italic; 52 | margin: 39px 0 13px 0; 53 | color: c.$text; 54 | } 55 | 56 | @mixin content-font-blockquote { 57 | font-family: $font-famiy-main; 58 | font-weight: 400; 59 | font-style: italic; 60 | margin: 39px; 61 | color: c.$subtext-0; 62 | } 63 | 64 | @mixin content-font-body { 65 | font-family: $font-famiy-main; 66 | font-weight: 400; 67 | font-size: 16px; 68 | color: c.$text; 69 | } 70 | 71 | @mixin content-font-caption { 72 | font-family: $font-famiy-main; 73 | font-weight: 400; 74 | font-size: 14px; 75 | color: c.$text; 76 | } 77 | 78 | @mixin content-font-endnote { 79 | font-family: $font-famiy-main; 80 | font-weight: 400; 81 | font-size: 14px; 82 | color: c.$text; 83 | } 84 | 85 | @mixin content-font-endnote { 86 | font-family: $font-famiy-main; 87 | font-weight: 400; 88 | font-size: 14px; 89 | color: c.$text; 90 | } 91 | -------------------------------------------------------------------------------- /linux/.config/ags.bak/styles/_spacing.scss: -------------------------------------------------------------------------------- 1 | $spacing-025: 2px; 2 | $spacing-050: 4px; 3 | $spacing-075: 6px; 4 | $spacing-100: 8px; 5 | $spacing-150: 12px; 6 | $spacing-200: 16px; 7 | $spacing-250: 20px; 8 | $spacing-300: 24px; 9 | $spacing-400: 32px; 10 | $spacing-500: 40px; 11 | $spacing-600: 48px; 12 | $spacing-800: 64px; 13 | $spacing-1000: 80px; 14 | -------------------------------------------------------------------------------- /linux/.config/ags.bak/styles/_variables.scss: -------------------------------------------------------------------------------- 1 | @forward "./colors"; 2 | @forward "./fonts"; 3 | @forward "./spacing"; 4 | -------------------------------------------------------------------------------- /linux/.config/ags.bak/styles/main.scss: -------------------------------------------------------------------------------- 1 | @use "./variables" as *; 2 | 3 | .window { 4 | @include content-font-body(); 5 | background-color: transparent; 6 | } 7 | 8 | /* 9 | * Containers 10 | */ 11 | .date-time, 12 | .workspaces, 13 | .utilities { 14 | background-color: $base; 15 | padding: $spacing-100 $spacing-300 $spacing-100 $spacing-300; 16 | border-bottom: $spacing-025 solid $crust; 17 | margin-top: $spacing-100; 18 | } 19 | .date-time { 20 | border-radius: $spacing-400; 21 | } 22 | 23 | .workspaces { 24 | border-radius: 0 $spacing-400 $spacing-400 0; 25 | } 26 | 27 | .utilities { 28 | border-radius: $spacing-400 0 0 $spacing-400; 29 | } 30 | 31 | /* 32 | * Date time 33 | */ 34 | 35 | .watch-circle { 36 | margin-right: $spacing-100; 37 | margin-top: $spacing-025; 38 | } 39 | 40 | .hours, 41 | .minutes, 42 | .time-separator { 43 | font-weight: bold; 44 | } 45 | 46 | .time-separator { 47 | color: $mauve; 48 | margin-bottom: 3px; 49 | } 50 | 51 | /* 52 | * Workspaces 53 | */ 54 | 55 | .workspace-button { 56 | border: none; 57 | padding: 0; 58 | background: transparent; 59 | border-radius: 0; 60 | margin: 0; 61 | } 62 | 63 | /* 64 | * Utilities 65 | */ 66 | .utilities > svg { 67 | color: $mauve; 68 | } 69 | -------------------------------------------------------------------------------- /linux/.config/ags.bak/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2022", 4 | "module": "ES2022", 5 | "lib": [ 6 | "ES2022" 7 | ], 8 | "allowJs": true, 9 | "checkJs": true, 10 | "strict": true, 11 | "noImplicitAny": false, 12 | "baseUrl": ".", 13 | "typeRoots": [ 14 | "./types" 15 | ], 16 | "skipLibCheck": true 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /linux/.config/ags.bak/types: -------------------------------------------------------------------------------- 1 | /usr/share/com.github.Aylur.ags/types -------------------------------------------------------------------------------- /linux/.config/ags.bak/widgets/dateTime.js: -------------------------------------------------------------------------------- 1 | import { 2 | weekdayLabel, 3 | dateLabel, 4 | hoursLabel, 5 | minutesLabel, 6 | } from "../lib/dateTime.js"; 7 | 8 | export const DateTime = () => 9 | Widget.Box({ 10 | className: "date-time", 11 | children: [ 12 | Widget.Icon({ 13 | className: "watch-circle", 14 | icon: "watch-circle", 15 | }), 16 | Widget.Label({ 17 | className: "weekday", 18 | label: weekdayLabel.bind().as((weekday) => `${weekday}`), 19 | }), 20 | Widget.Label({ 21 | className: "date", 22 | label: dateLabel.bind().as((date) => `${date} `), 23 | }), 24 | Widget.Label({ 25 | className: "hours", 26 | label: hoursLabel.bind().as((hours) => `${hours}`), 27 | }), 28 | Widget.Label({ 29 | className: "time-separator", 30 | label: ":", 31 | }), 32 | Widget.Label({ 33 | className: "minutes", 34 | label: minutesLabel.bind().as((minutes) => `${minutes}`), 35 | }), 36 | ], 37 | }); 38 | -------------------------------------------------------------------------------- /linux/.config/ags.bak/widgets/utilities.js: -------------------------------------------------------------------------------- 1 | export const Utilities = () => 2 | Widget.Box({ 3 | hpack: "end", 4 | spacing: 8, 5 | className: "utilities", 6 | children: [ 7 | Widget.Icon({ 8 | icon: "rocket", 9 | }), 10 | Widget.Icon({ 11 | icon: "settings", 12 | }), 13 | Widget.Icon({ 14 | icon: "notifications-message", 15 | }), 16 | Widget.Icon({ 17 | icon: "lightbulb", 18 | }), 19 | ], 20 | }); 21 | -------------------------------------------------------------------------------- /linux/.config/ags.bak/widgets/workspaces.js: -------------------------------------------------------------------------------- 1 | const hyprland = await Service.import("hyprland"); 2 | 3 | export function Workspaces() { 4 | const activeId = hyprland.active.workspace.bind("id"); 5 | const workspaces = hyprland.bind("workspaces").as((ws) => 6 | ws 7 | // remove random negative workspace 8 | .filter(({ id }) => id > 0) 9 | // sort remaining workspaces (not done by default in AGS) 10 | .sort(({ id: a }, { id: b }) => a - b) 11 | .map(({ id }) => 12 | Widget.Button({ 13 | className: "workspace-button", 14 | onClicked: () => hyprland.messageAsync(`dispatch workspace ${id}`), 15 | child: Widget.Icon({ 16 | icon: activeId.as( 17 | (i) => `${i === id ? "sticker-circle" : "circle"}`, 18 | ), 19 | }), 20 | }), 21 | ), 22 | ); 23 | return Widget.Box({ 24 | hpack: "start", 25 | spacing: 8, 26 | className: "workspaces", 27 | children: workspaces, 28 | }); 29 | } 30 | -------------------------------------------------------------------------------- /linux/.config/alacritty/alacritty.toml: -------------------------------------------------------------------------------- 1 | [general] 2 | import = [ 3 | "./alacritty_base.toml" 4 | ] 5 | 6 | [font] 7 | size = 11 8 | glyph_offset = {x = 0, y = 0} 9 | -------------------------------------------------------------------------------- /linux/.config/geeqie/history: -------------------------------------------------------------------------------- 1 | #History lists 2 | 3 | [image_list] 4 | "/home/johne/Pictures/Wallpapers/wallpaper.png" 5 | 6 | [shortcuts] 7 | "Home[path]/home/johne" 8 | "Desktop[path]/home/johne/Desktop" 9 | "Collections[path]/home/johne/.local/share/geeqie/collections" 10 | 11 | [path_list] 12 | "/home/johne" 13 | "/home/johne/Pictures/Wallpapers" 14 | "/home/johne/Pictures/Wallpapers/walls3" 15 | 16 | #end 17 | -------------------------------------------------------------------------------- /linux/.config/geeqie/marks: -------------------------------------------------------------------------------- 1 | #Marks lists 2 | #end 3 | -------------------------------------------------------------------------------- /linux/.config/ghostty/config: -------------------------------------------------------------------------------- 1 | config-file = ./config_base 2 | 3 | window-decoration = false 4 | font-size = 10 5 | 6 | font-family = RecMonoLinear Nerd Font 7 | font-family-italic = RecMonoCasual Nerd Font 8 | font-family = Symbols Nerd Font 9 | 10 | -------------------------------------------------------------------------------- /linux/.config/gtk-3.0/bookmarks: -------------------------------------------------------------------------------- 1 | file:///home/johne/Documents Documents 2 | file:///home/johne/Downloads Downloads 3 | file:///home/johne/Developer Developer 4 | file:///home/johne/Pictures Pictures 5 | file:///home/johne/Pictures/Screenshots Screenshots 6 | -------------------------------------------------------------------------------- /linux/.config/gtk-3.0/settings.ini: -------------------------------------------------------------------------------- 1 | [Settings] 2 | gtk-theme-name=rose-pine-gtk 3 | gtk-icon-theme-name=Rose-Pine 4 | gtk-font-name=Ubuntu Nerd Font 11 5 | gtk-cursor-theme-name=BreezeX-RosePine-Linux 6 | gtk-cursor-theme-size=24 7 | gtk-toolbar-style=GTK_TOOLBAR_ICONS 8 | gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR 9 | gtk-button-images=0 10 | gtk-menu-images=0 11 | gtk-enable-event-sounds=1 12 | gtk-enable-input-feedback-sounds=0 13 | gtk-xft-antialias=1 14 | gtk-xft-hinting=1 15 | gtk-xft-hintstyle=hintslight 16 | gtk-xft-rgba=rgb 17 | gtk-application-prefer-dark-theme=0 18 | -------------------------------------------------------------------------------- /linux/.config/gtklock/config.ini: -------------------------------------------------------------------------------- 1 | [main] 2 | modules=userinfo-module 3 | time-format= %A, %b %d - 󰅐 %I:%M %p 4 | 5 | [userinfo] 6 | under-clock=true 7 | image-size=128 8 | -------------------------------------------------------------------------------- /linux/.config/gtklock/style.css: -------------------------------------------------------------------------------- 1 | @define-color base #191724; 2 | @define-color surface #1f1d2e; 3 | @define-color overlay #26233a; 4 | 5 | @define-color muted #6e6a86; 6 | @define-color subtle #908caa; 7 | @define-color text #e0def4; 8 | 9 | @define-color love #eb6f92; 10 | @define-color gold #f6c177; 11 | @define-color rose #ebbcba; 12 | @define-color pine #31748f; 13 | @define-color foam #9ccfd8; 14 | @define-color iris #c4a7e7; 15 | 16 | @define-color highlightLow #21202e; 17 | @define-color highlightMed #403d52; 18 | @define-color highlightHigh #524f67; 19 | 20 | * { 21 | all: unset; 22 | } 23 | 24 | window { 25 | background-color: @base; 26 | background-image: url("./wallpaper.png"); 27 | background-size: cover; 28 | background-repeat: no-repeat; 29 | background-position: center; 30 | } 31 | 32 | #window-box { 33 | background-color: alpha(@base, 0.96); 34 | border: 1px solid @overlay; 35 | padding: 0 32px; 36 | box-shadow: 37 | 0 60px 80px rgba(0, 0, 0, 0.6), 38 | 0 45px 26px rgba(0, 0, 0, 0.14); 39 | border-radius: 8px; 40 | } 41 | 42 | #time-box { 43 | font-size: 0; 44 | } 45 | 46 | #clock-label { 47 | min-width: 320px; 48 | background-color: alpha(@pine, 0.1); 49 | color: @pine; 50 | font-weight: 500; 51 | font-size: 14px; 52 | padding: 10px 30px; 53 | margin-bottom: 10px; 54 | border-radius: 0 0 10px 10px; 55 | border: 1px solid alpha(@pine, 0.5); 56 | border-top: 0; 57 | } 58 | 59 | /* hide "Password:" label */ 60 | #input-label { 61 | font-size: 0; 62 | } 63 | 64 | #user-icon { 65 | margin: 8px 0 0 0; 66 | } 67 | 68 | #user-name { 69 | font-size: 32px; 70 | margin: 8px 0 8px 0; 71 | } 72 | 73 | #input-field { 74 | border-radius: 20px; 75 | padding: 10px 15px; 76 | border: 1px solid @overlay; 77 | } 78 | 79 | #input-field:focus { 80 | border: 1px solid @muted; 81 | } 82 | 83 | #warning-label, 84 | #error-label, 85 | #unlock-button { 86 | margin-top: 12px; 87 | padding: 10px 2rem; 88 | margin-bottom: 20px; 89 | } 90 | 91 | #unlock-button { 92 | border-radius: 20px; 93 | background-color: alpha(@rose, 0.1); 94 | color: @rose; 95 | border-radius: 24px; 96 | border: 1px solid alpha(@rose, 0.5); 97 | } 98 | -------------------------------------------------------------------------------- /linux/.config/gtklock/wallpaper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnend/dots/2288dd56068f194e64d08db38247f5b5ded00406/linux/.config/gtklock/wallpaper.png -------------------------------------------------------------------------------- /linux/.config/hypr/hypridle.conf: -------------------------------------------------------------------------------- 1 | # TODO: settings for idling and suspend etc. 2 | # Worth looking at the wiki and github.com/end-4/dots-hyprland 3 | 4 | general { 5 | lock_cmd = pidof hyprlock || hyprlock 6 | before_sleep_cmd = hyprlock # lock before suspend 7 | } 8 | 9 | # # Screen lock 10 | listener { 11 | timeout = 300 #5 minutes 12 | on-timeout = loginctl lock-session 13 | } 14 | 15 | # # dpms 16 | # listener { 17 | # timeout = 240 #4 minutes 18 | # on-timeout = hyprctl dispatch dpms off 19 | # on-resume = hyprctl dispatch dpms on 20 | # } 21 | 22 | # # Suspend 23 | listener { 24 | timeout = 600 #10 minutes 25 | on-timeout = systemctl suspend 26 | } 27 | -------------------------------------------------------------------------------- /linux/.config/hypr/hyprland.conf: -------------------------------------------------------------------------------- 1 | # ██╗ ██╗██╗ ██╗██████╗ ██████╗ ██╗ █████╗ ███╗ ██╗██████╗ 2 | # ██║ ██║╚██╗ ██╔╝██╔══██╗██╔══██╗██║ ██╔══██╗████╗ ██║██╔══██╗ 3 | # ███████║ ╚████╔╝ ██████╔╝██████╔╝██║ ███████║██╔██╗ ██║██║ ██║ 4 | # ██╔══██║ ╚██╔╝ ██╔═══╝ ██╔══██╗██║ ██╔══██║██║╚██╗██║██║ ██║ 5 | # ██║ ██║ ██║ ██║ ██║ ██║███████╗██║ ██║██║ ╚████║██████╔╝ 6 | # ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═════╝ 7 | # 8 | # ####################################################################################### 9 | # WIP Hyprland config 10 | # This should likely not be copied yet, as I've only just started using this 11 | # Fair warning 12 | # ####################################################################################### 13 | 14 | # autogenerated = 1 # remove this line to remove the warning 15 | 16 | # Defaults 17 | source=~/.config/hypr/hyprland/env.conf 18 | source=~/.config/hypr/hyprland/execs.conf 19 | source=~/.config/hypr/hyprland/general.conf 20 | source=~/.config/hypr/hyprland/rules.conf 21 | source=~/.config/hypr/hyprland/colors.conf 22 | source=~/.config/hypr/hyprland/keybinds.conf 23 | source=~/.config/hypr/hyprland/decorators.conf 24 | 25 | 26 | ################ 27 | ### MONITORS ### 28 | ################ 29 | 30 | # See https://wiki.hyprland.org/Configuring/Monitors/ 31 | monitor=Unknown-1, 2880x1800, 0x0, 1.5 32 | monitor=DP-3, 2560x1440, 1920x0, 1 33 | monitor=HDMI-A-1, 1920x1080, 4480x0, 0.83333333333 34 | 35 | ############################## 36 | ### WINDOWS AND WORKSPACES ### 37 | ############################## 38 | 39 | # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more 40 | # See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules 41 | 42 | # Example windowrule v1 43 | # windowrule = float, ^(kitty)$ 44 | 45 | # Example windowrule v2 46 | # windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ 47 | 48 | windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. 49 | 50 | workspace = 1, monitor:Unknown-1, default:true, persistent:true 51 | workspace = 2, monitor:Unknown-1, persistent:true 52 | workspace = 3, monitor:DP-3, default:true, persistent:true 53 | workspace = 4, monitor:DP-3, persistent:true 54 | workspace = 5, monitor:HDMI-A-1, default:true, persistent:true 55 | workspace = 6, monitor:HDMI-A-1, persistent:true 56 | 57 | -------------------------------------------------------------------------------- /linux/.config/hypr/hyprland/colors.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnend/dots/2288dd56068f194e64d08db38247f5b5ded00406/linux/.config/hypr/hyprland/colors.conf -------------------------------------------------------------------------------- /linux/.config/hypr/hyprland/decorators.conf: -------------------------------------------------------------------------------- 1 | # https://wiki.hyprland.org/Configuring/Variables/#decoration 2 | decoration { 3 | rounding = 8 4 | 5 | # Change transparency of focused and unfocused windows 6 | active_opacity = 1 7 | inactive_opacity = 0.9 8 | 9 | dim_inactive = false 10 | dim_special = 0.7 11 | 12 | # https://wiki.hyprland.org/Configuring/Variables/#blur 13 | blur { 14 | enabled = true 15 | xray = true 16 | special = false 17 | new_optimizations = true 18 | size = 16 19 | passes = 1 20 | vibrancy = 0.1696 21 | } 22 | shadow { 23 | enabled = true 24 | range = 8 25 | render_power = 1 26 | color = rgba(17, 17, 27, 0.3) 27 | color_inactive = rgba(17, 17, 27, 0) 28 | offset = 0, 4 29 | ignore_window = true 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /linux/.config/hypr/hyprland/env.conf: -------------------------------------------------------------------------------- 1 | ############################# 2 | ### ENVIRONMENT VARIABLES ### 3 | ############################# 4 | 5 | # See https://wiki.hyprland.org/Configuring/Environment-variables/ 6 | 7 | # Cursor 8 | env = HYPRCURSOR_SIZE,24 9 | env = HYPRCURSOR_THEME,rose-pine-hyprcursor 10 | env = XCURSOR_SIZE,24 11 | env = XCURSOR_THEME,rose-pine-hyprcursor 12 | 13 | # Nvidia 14 | env = LIBVA_DRIVER_NAME,nvidia 15 | env = XDG_SESSION_TYPE,wayland 16 | env = GBM_BACKEND,nvidia-drm 17 | env = __GLX_VENDOR_LIBRARY_NAME,nvidia 18 | 19 | # Electron 20 | 21 | # Firefox 22 | env = MOZ_DISABLE_RDD_SANDBOX,1 23 | env = EGL_PLATFORM,wayland 24 | env = MOZ_ENABLE_WAYLAND,1 25 | 26 | # QT apps 27 | env = QT_QPA_PLATFORM,wayland 28 | env = QT_QPA_PLATFORMTHEME,kde 29 | env = XDG_MENU_PREFIX,plasma- 30 | 31 | cursor { 32 | no_hardware_cursors = true 33 | } 34 | -------------------------------------------------------------------------------- /linux/.config/hypr/hyprland/execs.conf: -------------------------------------------------------------------------------- 1 | ################# 2 | ### AUTOSTART ### 3 | ################# 4 | 5 | # Autostart necessary processes (like notifications daemons, status bars, etc.) 6 | # Or execute your favorite apps at launch like this: 7 | 8 | # exec-once = hypridle 9 | exec-once = ../swww/walls.sh & swww-daemon & agsv1 10 | exec-once = hyprctl setcursor rose-pine-hyprcursor 24 11 | exec-once = gsettings set org.gnome.desktop.interface cursor-theme BreezeX-RosePine-Linux 12 | exec-once = input-remapper-control --command autoload 13 | -------------------------------------------------------------------------------- /linux/.config/hypr/hyprland/rules.conf: -------------------------------------------------------------------------------- 1 | windowrulev2 = pseudo, class:(spotify) 2 | windowrulev2 = size 1200 800, class:(spotify) 3 | windowrulev2 = workspace special:magic, class:(spotify) 4 | 5 | 6 | windowrulev2 = workspace 1, class:(Beeper) 7 | windowrulev2 = workspace 4, class:(obsidian) 8 | 9 | -------------------------------------------------------------------------------- /linux/.config/hypr/hyprlock.conf: -------------------------------------------------------------------------------- 1 | $background_image = $HOME/Pictures/Wallpapers/catppuccin/arch-4K.png 2 | $text_color = rgba(cdd6f4ff) 3 | $entry_background_color = rgba(11111bff) 4 | $entry_border_color = rgba(cba6f7ff) 5 | $entry_color = rgba(cdd6f4ff) 6 | $font_family = Recursive Sans Linear Static 7 | $font_family_clock = Recursive Mono Casual Static Bold 8 | $symbolsnf = Symbols Nerd Font Mono 9 | $monitor = Unknown-1 10 | 11 | background { 12 | # color = rgba(11111bFF) 13 | path = $background_image 14 | 15 | } 16 | input-field { 17 | monitor = $monitor 18 | size = 250, 50 19 | outline_thickness = 2 20 | dots_size = 0.1 21 | dots_spacing = 0.3 22 | outer_color = $entry_border_color 23 | inner_color = $entry_background_color 24 | font_color = $entry_color 25 | fade_on_empty = true 26 | fade_timeout = 3000 # Milliseconds before fade_on_empty is triggered. 27 | placeholder_text = Input Password... # Text rendered in the input box when it's empty. 28 | hide_input = false 29 | rounding = -1 # -1 means complete rounding (circle/oval) 30 | check_color = rgba(fab387ff) 31 | fail_color = rgba(f38ba8ff) # if authentication failed, changes outer_color and fail message color 32 | capslock_color = -1 33 | numlock_color = -1 34 | bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above) 35 | 36 | position = 0, -500 37 | halign = center 38 | valign = center 39 | } 40 | 41 | image { 42 | monitor = $monitor 43 | path = $HOME/Pictures/profile.jpg 44 | size = 120 45 | rounding = -1 #negative means circle 46 | border_size = 2 47 | border_color = $entry_border_color 48 | 49 | position = 0, -324 50 | halign = center 51 | valign = center 52 | } 53 | 54 | label { # Clock 55 | monitor = $monitor 56 | text = $TIME 57 | color = $text_color 58 | font_size = 60 59 | font_family = $font_family_clock 60 | 61 | position = 0, 400 62 | halign = center 63 | valign = center 64 | } 65 | label { # Greeting 66 | monitor = $monitor 67 | text = Hello, $USER 68 | color = $text_color 69 | font_size = 16 70 | font_family = $font_family 71 | 72 | position = 0, -420 73 | halign = center 74 | valign = center 75 | } 76 | label { # lock icon 77 | monitor = $monitor 78 | text =  79 | shadow_passes = 1 80 | shadow_boost = 0.5 81 | color = $text_color 82 | font_size = 16 83 | font_family = $symbolsnf 84 | 85 | position = 0, 65 86 | halign = center 87 | valign = bottom 88 | } 89 | 90 | label { # "locked" text 91 | monitor = $monitor 92 | text = Locked 93 | color = $text_color 94 | font_size = 16 95 | font_family = $font_family 96 | 97 | position = 0, 100 98 | halign = center 99 | valign = bottom 100 | } 101 | -------------------------------------------------------------------------------- /linux/.config/kxkbrc: -------------------------------------------------------------------------------- 1 | [Layout] 2 | LayoutList=us 3 | Model=applealu_iso 4 | ResetOldOptions=true 5 | Use=true 6 | VariantList=mac 7 | -------------------------------------------------------------------------------- /linux/.config/menus/applications-merged/xdg-desktop-menu-dummy.menu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnend/dots/2288dd56068f194e64d08db38247f5b5ded00406/linux/.config/menus/applications-merged/xdg-desktop-menu-dummy.menu -------------------------------------------------------------------------------- /linux/.config/neovide/config.toml: -------------------------------------------------------------------------------- 1 | backtraces_path = "/path/to/neovide_backtraces.log" # see below for the default platform specific location 2 | fork = false 3 | frame = "none" 4 | idle = true 5 | maximized = false 6 | mouse-cursor-icon = "arrow" 7 | no-multigrid = false 8 | srgb = false 9 | tabs = true 10 | theme = "auto" 11 | title-hidden = true 12 | vsync = true 13 | wsl = false 14 | scale_factor = 0.5 15 | refresh_rate = 144 16 | scroll_animation_length = 0.3 17 | no_idle = true 18 | 19 | # cursor VFX 20 | # cursor_vfx_mode = "torpedo" 21 | # cursor_vfx_particle_lifetime_ms = 200.0 22 | # cursor_vfx_particle_density = 15.0 23 | cursor_animate_command_line = false 24 | 25 | # zero padding (so Telescope floats align perfectly) 26 | padding_top = 0 27 | padding_bottom = 0 28 | padding_left = 0 29 | padding_right = 0 30 | 31 | [font] 32 | normal = [ 33 | "RecMonoLinear Nerd Font", 34 | ] # Will use the bundled Fira Code Nerd Font by default 35 | italic = ["RecMonoCasual Nerd Font"] 36 | size = 14 37 | 38 | [box-drawing] 39 | # "font-glyph", "native" or "selected-native" 40 | mode = "font-glyph" 41 | 42 | [box-drawing.sizes] 43 | default = [2, 4] # Thin and thick values respectively, for all sizes 44 | -------------------------------------------------------------------------------- /linux/.config/nwg-displays/config: -------------------------------------------------------------------------------- 1 | { 2 | "view-scale": 0.15, 3 | "snap-threshold": 10, 4 | "indicator-timeout": 500, 5 | "custom-mode": [], 6 | "use-desc": false, 7 | "confirm-timeout": 10 8 | } -------------------------------------------------------------------------------- /linux/.config/nwg-dock-hyprland/style.css: -------------------------------------------------------------------------------- 1 | window { 2 | background: rgba(17, 17, 27, 0.6); 3 | border-radius: 32px; 4 | } 5 | 6 | #box { 7 | /* Define attributes of the box surrounding icons here */ 8 | padding: 4px; 9 | } 10 | #active { 11 | /* This is to underline the button representing the currently active window */ 12 | /* border-bottom: 1px solid; */ 13 | /* border-color: #cba6f7; */ 14 | } 15 | 16 | button, 17 | image { 18 | background: none; 19 | border-style: none; 20 | box-shadow: none; 21 | } 22 | 23 | button { 24 | padding: 8px; 25 | margin: 0 2px; 26 | color: #eee; 27 | font-size: 12px; 28 | } 29 | 30 | button:hover { 31 | background-color: #11111b; 32 | border-radius: 32px; 33 | } 34 | 35 | button:focus { 36 | box-shadow: none; 37 | } 38 | -------------------------------------------------------------------------------- /linux/.config/nwg-look/config: -------------------------------------------------------------------------------- 1 | { 2 | "export-settings-ini": true, 3 | "export-gtkrc-20": true, 4 | "export-index-theme": true, 5 | "export-xsettingsd": true, 6 | "export-gtk4-symlinks": true 7 | } -------------------------------------------------------------------------------- /linux/.config/papirus-folders/keep: -------------------------------------------------------------------------------- 1 | theme=Papirus-Dark 2 | color=cat-mocha-mauve 3 | -------------------------------------------------------------------------------- /linux/.config/rofi/config.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | modes: "drun,window,filebrowser,run,emoji"; 3 | show-icons: true; 4 | icon-theme: "oomox-Rose-Pine-Main"; 5 | fallback-icon: "fire"; 6 | font: "Noto Sans Medium 11"; 7 | terminal: "ghostty"; 8 | sidebar-mode: true; 9 | /* location: 0;*/ 10 | /* yoffset: 0;*/ 11 | /* xoffset: 0;*/ 12 | /* window-format: "{w} {c} {t}";*/ 13 | kb-mode-next: ""; 14 | kb-mode-previous: ""; 15 | kb-mode-previous: "ISO_Left_Tab"; 16 | kb-mode-next: "Tab"; 17 | kb-element-next: ""; 18 | kb-element-prev: ""; 19 | 20 | disable-history: true; // disables recency sorting 21 | 22 | display-drun: "󰣆"; 23 | display-run: "󱃷"; 24 | display-window: "󱂬"; 25 | display-filebrowser: ""; 26 | display-emoji: "󰝴"; 27 | timeout { 28 | action: "kb-cancel"; 29 | delay: 0; 30 | } 31 | drun { 32 | fallback-icon: "applications-other"; 33 | } 34 | run { 35 | fallback-icon: "applications-other"; 36 | } 37 | filebrowser { 38 | directories-first: true; 39 | sorting-method: "name"; 40 | show-hidden: true; 41 | } 42 | } 43 | 44 | element { 45 | children: [element-icon, element-text]; 46 | } 47 | 48 | @theme "./themes/rose-pine.rasi" 49 | -------------------------------------------------------------------------------- /linux/.config/rofi/themes/rose-pine-power.rasi: -------------------------------------------------------------------------------- 1 | * { 2 | base: #191724; 3 | surface: #1f1d2e; 4 | overlay: #26233a; 5 | muted: #6e6a86; 6 | text: #e0def4; 7 | subtle: #908caa; 8 | 9 | love: #eb6f92; 10 | gold: #f6c177; 11 | rose: #ebbcba; 12 | pine: #31748f; 13 | foam: #9ccfd8; 14 | iris: #c4a7e7; 15 | 16 | highlightLow: #21202e; 17 | highlightMed: #403d52; 18 | highlightHigh: #524f67; 19 | width: 300; 20 | } 21 | 22 | element-text, element-icon , mode-switcher { 23 | background-color: inherit; 24 | text-color: inherit; 25 | } 26 | 27 | window { 28 | border: 1px; 29 | border-color: @rose; 30 | background-color: @base; 31 | border-radius: 8px; 32 | } 33 | 34 | mainbox { 35 | background-color: @base; 36 | } 37 | 38 | inputbar { 39 | children: [prompt,entry]; 40 | background-color: @base; 41 | border: 0 0 1px 0; 42 | border-color: @overlay; 43 | padding: 8px; 44 | } 45 | 46 | prompt { 47 | background-color: @base; 48 | text-color: @foam; 49 | border-radius: 2px; 50 | padding: 8px 20px 8px 8px; 51 | vertical-align: 0.5; 52 | horizontal-align: 0.5; 53 | border: 0 1px 0 0; 54 | border-color: @overlay; 55 | } 56 | 57 | textbox-prompt-colon { 58 | expand: false; 59 | str: ":"; 60 | } 61 | 62 | entry { 63 | text-color: @text; 64 | margin: 8px 0 0 16px; 65 | background-color: @base; 66 | cursor-color: @iris; 67 | } 68 | 69 | listview { 70 | background-color: @base; 71 | columns: 1; 72 | lines: 6; 73 | padding: 8px; 74 | } 75 | 76 | element { 77 | background-color: @base; 78 | text-color: @muted; 79 | margin: 0 8px; 80 | padding: 4px 0; 81 | border-radius: 4px; 82 | } 83 | 84 | element-text { 85 | padding: 4px; 86 | } 87 | 88 | element-icon { 89 | size: 4px; 90 | } 91 | 92 | element selected { 93 | background-color: @pine; 94 | text-color: @text; 95 | border: 1px; 96 | border-color: @foam; 97 | } 98 | 99 | mode-switcher { 100 | spacing: 0; 101 | } 102 | 103 | button { 104 | background-color: @base; 105 | text-color: @text; 106 | vertical-align: 0.5; 107 | horizontal-align: 0.5; 108 | padding: 5px 0 3px 0; 109 | border: 1px 0 0 0; 110 | } 111 | 112 | button selected { 113 | background-color: @rose; 114 | text-color: @overlay; 115 | } 116 | 117 | message { 118 | padding: 8px 0; 119 | background-color: @base; 120 | } 121 | 122 | textbox { 123 | padding: 0 20px; 124 | text-color: @foam; 125 | background-color: @base; 126 | } 127 | -------------------------------------------------------------------------------- /linux/.config/rofi/themes/rose-pine.rasi: -------------------------------------------------------------------------------- 1 | * { 2 | base: #191724; 3 | surface: #1f1d2e; 4 | overlay: #26233a; 5 | muted: #6e6a86; 6 | text: #e0def4; 7 | subtle: #908caa; 8 | 9 | love: #eb6f92; 10 | gold: #f6c177; 11 | rose: #ebbcba; 12 | pine: #31748f; 13 | foam: #9ccfd8; 14 | iris: #c4a7e7; 15 | 16 | highlightLow: #21202e; 17 | highlightMed: #403d52; 18 | highlightHigh: #524f67; 19 | width: 1000; 20 | } 21 | 22 | element-text, element-icon , mode-switcher { 23 | background-color: inherit; 24 | text-color: inherit; 25 | } 26 | 27 | window { 28 | border: 1px; 29 | border-color: @rose; 30 | background-color: @base; 31 | border-radius: 8px; 32 | } 33 | 34 | mainbox { 35 | background-color: @base; 36 | } 37 | 38 | inputbar { 39 | children: [prompt,entry]; 40 | background-color: @base; 41 | border: 0 0 1px 0; 42 | border-color: @overlay; 43 | padding: 8px; 44 | } 45 | 46 | prompt { 47 | background-color: @base; 48 | text-color: @foam; 49 | border-radius: 2px; 50 | padding: 8px 20px 8px 8px; 51 | vertical-align: 0.5; 52 | horizontal-align: 0.5; 53 | border: 0 1px 0 0; 54 | border-color: @overlay; 55 | } 56 | 57 | textbox-prompt-colon { 58 | expand: false; 59 | str: ":"; 60 | } 61 | 62 | entry { 63 | text-color: @text; 64 | margin: 8px 0 0 16px; 65 | background-color: @base; 66 | cursor-color: @iris; 67 | } 68 | 69 | listview { 70 | background-color: @base; 71 | columns: 3; 72 | lines: 8; 73 | padding: 8px; 74 | } 75 | 76 | element { 77 | background-color: @base; 78 | text-color: @muted; 79 | margin: 0 8px; 80 | padding: 4px 8px; 81 | border-radius: 4px; 82 | } 83 | 84 | element-text { 85 | padding: 8px; 86 | } 87 | 88 | element-icon { 89 | size: 24px; 90 | } 91 | 92 | element selected { 93 | background-color: @pine; 94 | text-color: @text; 95 | border: 1px; 96 | border-color: @foam; 97 | } 98 | 99 | mode-switcher { 100 | spacing: 0; 101 | } 102 | 103 | button { 104 | background-color: @base; 105 | text-color: @text; 106 | vertical-align: 0.5; 107 | horizontal-align: 0.5; 108 | padding: 5px 0 3px 0; 109 | border: 1px 0 0 0; 110 | border-color: @overlay; 111 | } 112 | 113 | button selected { 114 | background-color: @rose; 115 | text-color: @base; 116 | } 117 | 118 | message { 119 | padding: 8px 0; 120 | background-color: @base; 121 | } 122 | 123 | textbox { 124 | padding: 0 20px; 125 | text-color: @foam; 126 | background-color: @base; 127 | } 128 | -------------------------------------------------------------------------------- /linux/.config/sway/config: -------------------------------------------------------------------------------- 1 | # Config for sway 2 | # Read `man 5 sway` for complete reference 3 | 4 | # user config directory 5 | include $HOME/.config/sway/config.d/* 6 | -------------------------------------------------------------------------------- /linux/.config/sway/config.d/application_defaults.conf: -------------------------------------------------------------------------------- 1 | # Custom windowing rules 2 | for_window [class="Yad" instance="yad"] floating enable 3 | for_window [app_id="yad"] floating enable 4 | for_window [app_id="nemo"] floating enable 5 | for_window [app_id="blueman-manager"] floating enable, resize set width 40 ppt height 30 ppt 6 | for_window [app_id="pavucontrol" ] floating enable, resize set width 40 ppt height 30 ppt 7 | for_window [app_id="nwg-look" ] floating enable, resize set width 40 ppt height 30 ppt 8 | for_window [app_id="nm-connection-editor" ] floating enable, resize set width 40 ppt height 30 ppt 9 | for_window [window_role="pop-up"] floating enable 10 | for_window [window_role="bubble"] floating enable 11 | for_window [window_role="task_dialog"] floating enable 12 | for_window [window_role="Preferences"] floating enable 13 | for_window [window_type="dialog"] floating enable 14 | for_window [window_type="menu"] floating enable 15 | for_window [window_role="About"] floating enable 16 | for_window [title="File Operation Progress"] floating enable, border pixel 1, sticky enable, resize set width 40 ppt height 30 ppt 17 | for_window [app_id="floating_shell_portrait"] floating enable, border pixel 1, sticky enable, resize set width 30 ppt height 40 ppt 18 | for_window [title="Picture in picture"] floating enable, sticky enable 19 | for_window [title="waybar_htop"] floating enable, resize set width 70 ppt height 70 ppt 20 | for_window [title="waybar_nmtui"] floating enable 21 | for_window [title="Save File"] floating enable 22 | for_window [app_id="firefox-developer-edition" title="Firefox — Sharing Indicator"] kill 23 | 24 | # Inhibit idle 25 | for_window [app_id="firefox-developer-edition"] inhibit_idle fullscreen 26 | for_window [app_id="Chromium"] inhibit_idle fullscreen 27 | -------------------------------------------------------------------------------- /linux/.config/sway/config.d/autostart_applications.conf: -------------------------------------------------------------------------------- 1 | # Auth with polkit-gnome: 2 | exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 3 | 4 | 5 | # Import env vars for user systemd service manager 6 | exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK 7 | 8 | # Update dbus environments with display variables 9 | exec hash dbus-update-activation-environment 2>/dev/null && \ 10 | dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK 11 | 12 | # Autotiling 13 | exec autotiling 14 | 15 | # Notifications 16 | exec swaync 17 | 18 | # OSD 19 | exec swayosd-server 20 | 21 | # Start idle service 22 | exec systemctl --user start swayidle.service 23 | 24 | # 1Password 25 | exec /usr/bin/1password --silent 26 | -------------------------------------------------------------------------------- /linux/.config/sway/config.d/input.conf: -------------------------------------------------------------------------------- 1 | ### Input configuration 2 | # 3 | # Read `man 5 sway-input` for more information about this section. 4 | 5 | # Touchpad configuration 6 | input type:touchpad { 7 | dwt enabled 8 | tap enabled 9 | natural_scroll disabled 10 | } 11 | 12 | # Enable numlock by default 13 | input type:keyboard xkb_numlock enabled 14 | 15 | # Set keyboard layout and variant based on current system settings 16 | exec_always { 17 | 'swaymsg input type:keyboard xkb_layout "$(localectl status | grep "X11 Layout" | sed -e "s/^.*X11 Layout://")"' 18 | 'swaymsg input type:keyboard xkb_variant "$(localectl status | grep "X11 Variant" | sed -e "s/^.*X11 Variant://")"' 19 | } 20 | 21 | # # Toggle between keyboard layouts. This example has the "us" and "gb" 22 | # # keyboard layouts, and uses Alt+Shift to toggle between them. 23 | # input "type:keyboard" { 24 | # xkb_layout "us,gb" 25 | # xkb_options "grp:alt_shift_toggle" 26 | # } 27 | # # Assign the same binding to "pkill -RTMIN+1 waybar" to send signal to 28 | # # the Waybar keyboard module (so the module shows the updated layout). 29 | # # This example uses Alt + left Shift. 30 | # bindsym Alt+Shift_L exec "pkill -RTMIN+1 waybar" 31 | -------------------------------------------------------------------------------- /linux/.config/sway/config.d/output.conf: -------------------------------------------------------------------------------- 1 | ### Output configuration 2 | # 3 | # Example configuration: 4 | # 5 | output eDP-1 resolution 2880x1800 position 2880,0 scale 1.5 6 | # 7 | # You can get the names of your outputs by running: swaymsg -t get_outputs 8 | # 9 | # You can also bind workspaces 1,2,3 to specific outputs 10 | # 11 | # workspace 1 output eDP-2 12 | # workspace 2 output HDMI-A-1 13 | # workspace 3 output DP-1 14 | # 15 | # Wacom Tablet - Example 16 | # input "1386:884:Wacom_Intuos_S_Pad" map_to_output HDMI-A-1 17 | # input "1386:884:Wacom_Intuos_S_Pen" map_to_output HDMI-A-1 18 | -------------------------------------------------------------------------------- /linux/.config/sway/config.d/theme.conf: -------------------------------------------------------------------------------- 1 | # Apply gtk theming 2 | # exec_always ~/.config/sway/scripts/import-gsettings 3 | 4 | set $my_cursor BreezeX-RosePine-Linux 5 | set $my_cursor_size 24 6 | 7 | seat * xcursor_theme $my_cursor $my_cursor_size 8 | exec_always { 9 | gsettings set org.gnome.desktop.interface cursor-theme $my_cursor 10 | gsettings set org.gnome.desktop.interface cursor-size $my_cursor_size 11 | } 12 | 13 | # Set inner/outer gaps 14 | gaps inner 8 15 | gaps outer 0 16 | 17 | # Hide titlebar on windows: 18 | default_border pixel 1 19 | 20 | # Default Font 21 | font pango:Ubuntu Nerd Font Regular 10 22 | 23 | # Thin borders: 24 | smart_borders on 25 | 26 | # Set wallpaper: 27 | exec_always swww-daemon 28 | # exec "swww restore --resize crop" 29 | 30 | # Title format for windows 31 | for_window [shell="xdg_shell"] title_format "%title (%app_id)" 32 | for_window [shell="x_wayland"] title_format "%class - %title" 33 | 34 | # class border bground text indicator child_border 35 | client.focused #ebbcba #ebbcba #11111b #ebbcba #ebbcba 36 | client.focused_inactive #44475A #44475A #F8F8F2 #44475A #44475A 37 | client.unfocused #282A36 #282A36 #BFBFBF #282A36 #282A36 38 | client.urgent #44475A #FF5555 #F8F8F2 #FF5555 #FF5555 39 | client.placeholder #282A36 #282A36 #F8F8F2 #282A36 #282A36 40 | client.background #F8F8F2 41 | 42 | # 43 | # Status Bar: 44 | # 45 | # Read `man 5 sway-bar` for more information about this section. 46 | bar { 47 | swaybar_command waybar 48 | } 49 | -------------------------------------------------------------------------------- /linux/.config/sway/scripts/screenshots.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Determine screenshot type based on argument 4 | case "$1" in 5 | fullscreen) 6 | file="$HOME/Pictures/Screenshots/fullscreen-$(date +'%d-%m-%Y_%H-%M-%S').png" 7 | grim "$file" # Fullscreen screenshot 8 | ;; 9 | window) 10 | file="$HOME/Pictures/Screenshots/window-$(date +'%d-%m-%Y_%H-%M-%S').png" 11 | swaymsg -t get_tree | jq -r '.. | (.nodes? // empty)[] | select(.pid and .visible) | .rect | "\(.x),\(.y) \(.width)x\(.height)"' | \ 12 | slurp | grim -g - "$file" # Window screenshot 13 | ;; 14 | area) 15 | file="$HOME/Pictures/Screenshots/screenshot-$(date +'%d-%m-%Y_%H-%M-%S').png" 16 | grim -g "$(slurp)" "$file" # Area screenshot 17 | ;; 18 | clipboard) 19 | temp_file=$(mktemp /tmp/screenshot-preview-XXXXX.png) 20 | grim -g "$(slurp)" "$temp_file" 21 | wl-copy < "$temp_file" 22 | notify-send "Screenshot copied to clipboard" "Go forth and paste" -i "$temp_file" 23 | rm "$temp_file" 24 | exit 0 25 | ;; 26 | *) 27 | notify-send "Error" "Unknown screenshot type" # If invalid argument is passed 28 | exit 1 29 | ;; 30 | esac 31 | 32 | # Show notification with options 33 | notify-send "Screenshot Taken" "$file" -i "$file" 34 | # --action="delete=delete" \ 35 | # --action="open=open" 36 | 37 | # # Store the filename in /tmp for reference 38 | # echo "$file" > /tmp/last_screenshot 39 | 40 | # action_index=$(swaync-client -a) 41 | # echo "Action index output: $action_index" >> ~/swaync_debug.log 42 | # case "$action_index" in 43 | # "0") 44 | # action="open" 45 | # ;; 46 | # "1") 47 | # action="delete" 48 | # ;; 49 | # "*") 50 | # action="unknown" 51 | # ;; 52 | # esac 53 | # echo "Action being processed: $action" 54 | # 55 | # case "$action" in 56 | # "open") 57 | # nemo "$file" 58 | # ;; 59 | # "delete") 60 | # rm "$file" && notify-send "Screenshot deleted" "$file" 61 | # ;; 62 | # *) 63 | # notify-send "Action error" "Unknown action: $action" 64 | # ;; 65 | # esac 66 | -------------------------------------------------------------------------------- /linux/.config/sway/scripts/spotify-play-toggle.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Check if Spotify is running 4 | if pgrep -x "spotify" > /dev/null; then 5 | # Spotify is running, send Play/Pause command 6 | playerctl play-pause 7 | else 8 | # Spotify is not running, launch it 9 | spotify & 10 | fi 11 | -------------------------------------------------------------------------------- /linux/.config/sway/scripts/toggle_scratchpad_center.sh: -------------------------------------------------------------------------------- 1 | !#/bin/bash 2 | 3 | # Show scratchpad 4 | swaymsg 'scratchpad show' 5 | 6 | # Wait 7 | sleep 0.1 8 | 9 | # Float, resize and center focused window 10 | swaymsg '[con_id=__focused__] floating enable, resize set 1800 1000, move position center' 11 | -------------------------------------------------------------------------------- /linux/.config/swaync/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "/etc/xdg/swaync/configSchema.json", 3 | "positionX": "right", 4 | "positionY": "top", 5 | "cssPriority": "user", 6 | "layer": "overlay", 7 | "layer-shell": true, 8 | "control-center-layer": "top", 9 | "control-center-width": 400, 10 | "control-center-height": 800, 11 | "notification-2fa-action": true, 12 | "notification-inline-replies": false, 13 | "notification-window-width": 400, 14 | "notification-icon-size": 40, 15 | "notification-body-image-height": 100, 16 | "notification-body-image-width": 200, 17 | "timeout": 8, 18 | "timeout-low": 4, 19 | "timeout-critical": 12, 20 | "fit-to-screen": false, 21 | "keyboard-shortcuts": true, 22 | "image-visibility": "when-available", 23 | "transition-time": 200, 24 | "hide-on-clear": false, 25 | "hide-on-action": true, 26 | "script-fail-notify": true, 27 | "widgets": [ 28 | "title", 29 | "dnd", 30 | "label", 31 | "mpris", 32 | "notifications", 33 | "buttons-grid" 34 | ], 35 | "widget-config": { 36 | "title": { 37 | "text": "Notifications", 38 | "clear-all-button": true, 39 | "button-text": "󰍜" 40 | }, 41 | "dnd": { 42 | "text": "Do not disturb" 43 | }, 44 | "label": { 45 | "max-lines": 1, 46 | "text": " " 47 | }, 48 | "mpris": { 49 | "image-size": 96, 50 | "image-radius": 0 51 | }, 52 | "buttons-grid": { 53 | "actions": [ 54 | { 55 | "label": "󰋋", 56 | "command": "env GTK_THEME=Adwaita-dark pavucontrol" 57 | }, 58 | { 59 | "label": "󰍬", 60 | "command": "env GTK_THEME=Adwaita-dark pavucontrol" 61 | }, 62 | { 63 | "label": "󰖩", 64 | "command": "nm-connection-editor" 65 | }, 66 | { 67 | "label": "󰂯", 68 | "command": "blueman-manager" 69 | }, 70 | { 71 | "label": "", 72 | "command": "nwg-look" 73 | } 74 | ] 75 | } 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /linux/.config/swaync/theme/rose-pine.css: -------------------------------------------------------------------------------- 1 | @define-color base #191724; 2 | @define-color surface #1f1d2e; 3 | @define-color overlay #26233a; 4 | 5 | @define-color muted #6e6a86; 6 | @define-color subtle #908caa; 7 | @define-color text #e0def4; 8 | 9 | @define-color love #eb6f92; 10 | @define-color gold #f6c177; 11 | @define-color rose #ebbcba; 12 | @define-color pine #31748f; 13 | @define-color foam #9ccfd8; 14 | @define-color iris #c4a7e7; 15 | 16 | @define-color highlightLow #21202e; 17 | @define-color highlightMed #403d52; 18 | @define-color highlightHigh #524f67; 19 | -------------------------------------------------------------------------------- /linux/.config/swaync/todo.css: -------------------------------------------------------------------------------- 1 | /* /* Music player */ */ 2 | /* .widget-mpris { */ 3 | /* background: @background-alt; */ 4 | /* border-radius: 16px; */ 5 | /* color: @text; */ 6 | /* margin: 20px 6px; */ 7 | /* } */ 8 | /**/ 9 | /* /* NOTE: Background need *opacity 1* otherwise will turn into the album art blurred */ */ 10 | /* .widget-mpris-player { */ 11 | /* background-color: @background-sec; */ 12 | /* border-radius: 22px; */ 13 | /* padding: 6px 14px; */ 14 | /* margin: 6px; */ 15 | /* } */ 16 | /**/ 17 | /* .widget-mpris > box > button { */ 18 | /* color: @text; */ 19 | /* border-radius: 20px; */ 20 | /* } */ 21 | /* */ 22 | /* .widget-mpris button { */ 23 | /* color: alpha(@text, .6); */ 24 | /* } */ 25 | /**/ 26 | /* .widget-mpris button:hover { */ 27 | /* color: @text; */ 28 | /* } */ 29 | /**/ 30 | /* .widget-mpris-album-art { */ 31 | /* border-radius: 16px; */ 32 | /* } */ 33 | /* */ 34 | /* .widget-mpris-title { */ 35 | /* font-weight: 700; */ 36 | /* font-size: 1rem; */ 37 | /* } */ 38 | /* */ 39 | /* .widget-mpris-subtitle { */ 40 | /* font-weight: 500; */ 41 | /* font-size: 0.8rem; */ 42 | /* } */ 43 | /**/ 44 | /* /* Volume */ */ 45 | /* .widget-volume { */ 46 | /* background: @background-sec; */ 47 | /* color: @background; */ 48 | /* padding: 4px; */ 49 | /* margin: 6px; */ 50 | /* border-radius: 6px; */ 51 | /* } */ 52 | -------------------------------------------------------------------------------- /linux/.config/swayosd/style.css: -------------------------------------------------------------------------------- 1 | @define-color base #191724; 2 | @define-color surface #1f1d2e; 3 | @define-color overlay #26233a; 4 | 5 | @define-color muted #6e6a86; 6 | @define-color subtle #908caa; 7 | @define-color text #e0def4; 8 | 9 | @define-color love #eb6f92; 10 | @define-color gold #f6c177; 11 | @define-color rose #ebbcba; 12 | @define-color pine #31748f; 13 | @define-color foam #9ccfd8; 14 | @define-color iris #c4a7e7; 15 | 16 | @define-color highlightLow #21202e; 17 | @define-color highlightMed #403d52; 18 | @define-color highlightHigh #524f67; 19 | 20 | window#osd { 21 | padding: 12px 20px; 22 | border-radius: 999px; 23 | border: none; 24 | background: rgba(31, 29, 46, 0.75); 25 | } 26 | 27 | #container { 28 | margin: 8px; 29 | } 30 | 31 | image, 32 | label { 33 | color: @text; 34 | } 35 | 36 | progressbar:disabled, 37 | image:disabled { 38 | opacity: 0.5; 39 | } 40 | 41 | progressbar { 42 | min-height: 8px; 43 | border-radius: 999px; 44 | background: @rose; 45 | border: none; 46 | } 47 | trough { 48 | min-height: inherit; 49 | border-radius: inherit; 50 | border: none; 51 | background: @base; 52 | } 53 | progress { 54 | min-height: inherit; 55 | border-radius: inherit; 56 | border: none; 57 | background: @rose; 58 | } 59 | -------------------------------------------------------------------------------- /linux/.config/swww/walls.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DIR=$HOME/Pictures/Wallpapers/walls1 4 | 5 | WALLS=($(ls "${DIR}")) 6 | 7 | RANDOMWALL=${WALLS[ $RANDOM % ${#WALLS[@]} ]} 8 | 9 | if [[ $(pidof swaybg) ]]; then 10 | pkill swaybg 11 | fi 12 | 13 | swww query || swww-daemon 14 | 15 | # Change to random wallpaper in the Pictures directory 16 | swww img "${DIR}"/"${RANDOMWALL}" --transition-fps 60 --transition-type any --transition-duration 3 --resize crop 17 | -------------------------------------------------------------------------------- /linux/.config/systemd/user/graphical-session.target.wants/swayidle.service: -------------------------------------------------------------------------------- 1 | /home/johne/.config/systemd/user/swayidle.service -------------------------------------------------------------------------------- /linux/.config/systemd/user/sway-session.target.wants/swayidle.service: -------------------------------------------------------------------------------- 1 | /home/johne/.config/systemd/user/swayidle.service -------------------------------------------------------------------------------- /linux/.config/systemd/user/swayidle.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Idle manager for Wayland with gtklock 3 | Documentation=man:swayidle(1) 4 | PartOf=graphical-session.target 5 | 6 | [Service] 7 | Type=simple 8 | ExecStart=/usr/bin/swayidle -w \ 9 | timeout 300 'brightnessctl set 50%' \ 10 | resume 'sleep 2; brightnessctl set 100%' \ 11 | timeout 600 'gtklock -d' \ 12 | timeout 900 'swaymsg "output * dpms off"' \ 13 | resume 'sleep2; swaymsg "output * dpms on"' \ 14 | before-sleep 'gtklock -d' 15 | Restart=always 16 | 17 | [Install] 18 | WantedBy=graphical-session.target 19 | 20 | -------------------------------------------------------------------------------- /linux/.config/thefuck/settings.py: -------------------------------------------------------------------------------- 1 | # The Fuck settings file 2 | # 3 | # The rules are defined as in the example bellow: 4 | # 5 | # rules = ['cd_parent', 'git_push', 'python_command', 'sudo'] 6 | # 7 | # The default values are as follows. Uncomment and change to fit your needs. 8 | # See https://github.com/nvbn/thefuck#settings for more information. 9 | # 10 | 11 | # rules = [] 12 | # exclude_rules = [] 13 | # wait_command = 3 14 | # require_confirmation = True 15 | # no_colors = False 16 | # debug = False 17 | # priority = {} 18 | # history_limit = None 19 | # alter_history = True 20 | # wait_slow_command = 15 21 | # slow_commands = ['lein', 'react-native', 'gradle', './gradlew', 'vagrant'] 22 | # repeat = False 23 | # instant_mode = False 24 | # num_close_matches = 3 25 | # env = {'LC_ALL': 'C', 'LANG': 'C', 'GIT_TRACE': '1'} 26 | # excluded_search_path_prefixes = [] 27 | -------------------------------------------------------------------------------- /linux/.config/waybar/rose-pine.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Variant: Rosé Pine 3 | * Maintainer: DankChoir 4 | */ 5 | 6 | @define-color base #191724; 7 | @define-color surface #1f1d2e; 8 | @define-color overlay #26233a; 9 | 10 | @define-color muted #6e6a86; 11 | @define-color subtle #908caa; 12 | @define-color text #e0def4; 13 | 14 | @define-color love #eb6f92; 15 | @define-color gold #f6c177; 16 | @define-color rose #ebbcba; 17 | @define-color pine #31748f; 18 | @define-color foam #9ccfd8; 19 | @define-color iris #c4a7e7; 20 | 21 | @define-color highlightLow #21202e; 22 | @define-color highlightMed #403d52; 23 | @define-color highlightHigh #524f67; 24 | -------------------------------------------------------------------------------- /linux/.config/waybar/scripts/power_menu.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | SELECTION="$(printf "󰌾 Lock\n󰤄 Suspend\n󰍃 Log out\n Reboot\n Reboot to UEFI\n󰐥 Shutdown" | fuzzel --dmenu -a top-right -l 6 -w 18 -p "Select an option: ")" 4 | 5 | confirm_action() { 6 | local action="$1" 7 | CONFIRMATION="$(printf "No\nYes" | fuzzel --dmenu -a top-right -l 2 -w 18 -p "$action?")" 8 | [[ "$CONFIRMATION" == *"Yes"* ]] 9 | } 10 | 11 | case $SELECTION in 12 | *"󰌾 Lock"*) 13 | gtklock;; 14 | *"󰤄 Suspend"*) 15 | if confirm_action "Suspend"; then 16 | systemctl suspend 17 | fi;; 18 | *"󰍃 Log out"*) 19 | if confirm_action "Log out"; then 20 | swaymsg exit 21 | fi;; 22 | *" Reboot"*) 23 | if confirm_action "Reboot"; then 24 | systemctl reboot 25 | fi;; 26 | *" Reboot to UEFI"*) 27 | if confirm_action "Reboot to UEFI"; then 28 | systemctl reboot --firmware-setup 29 | fi;; 30 | *"󰐥 Shutdown"*) 31 | if confirm_action "Shutdown"; then 32 | systemctl poweroff 33 | fi;; 34 | esac 35 | -------------------------------------------------------------------------------- /linux/.config/xsettingsd/xsettingsd.conf: -------------------------------------------------------------------------------- 1 | Net/ThemeName "rose-pine-gtk" 2 | Net/IconThemeName "Rose-Pine" 3 | Gtk/CursorThemeName "BreezeX-RosePine-Linux" 4 | Net/EnableEventSounds 1 5 | EnableInputFeedbackSounds 0 6 | Xft/Antialias 1 7 | Xft/Hinting 1 8 | Xft/HintStyle "hintslight" 9 | Xft/RGBA "rgb" 10 | -------------------------------------------------------------------------------- /linux/.gitsettings/credentials.conf: -------------------------------------------------------------------------------- 1 | [credential "https://github.com"] 2 | helper = 3 | helper = !/usr/bin/gh auth git-credential 4 | [credential "https://gist.github.com"] 5 | helper = 6 | helper = !/usr/bin/gh auth git-credential 7 | -------------------------------------------------------------------------------- /linux/hyprpanel_layout.json: -------------------------------------------------------------------------------- 1 | { 2 | "0": { 3 | "left": ["dashboard", "workspaces", "media", "systray"], 4 | "middle": ["windowtitle"], 5 | "right": [ 6 | "volume", 7 | "network", 8 | "battery", 9 | "bluetooth", 10 | "clock", 11 | "notifications" 12 | ] 13 | }, 14 | "1": { 15 | "left": ["dashboard", "workspaces", "media", "systray"], 16 | "middle": ["windowtitle"], 17 | "right": [ 18 | "volume", 19 | "network", 20 | "battery", 21 | "bluetooth", 22 | "clock", 23 | "notifications" 24 | ] 25 | }, 26 | "2": { 27 | "left": ["dashboard", "workspaces", "media", "systray"], 28 | "middle": ["windowtitle"], 29 | "right": [ 30 | "volume", 31 | "network", 32 | "battery", 33 | "bluetooth", 34 | "clock", 35 | "notifications" 36 | ] 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /linux/kwinrulesrc: -------------------------------------------------------------------------------- 1 | [0a5e1a08-2307-4688-802d-4ae86f09a915] 2 | Description=Kitty active opacity 3 | opacityactive=95 4 | opacityactiverule=2 5 | wmclass=kitty 6 | wmclassmatch=1 7 | 8 | [1] 9 | Description=Remove kitty decorations 10 | noborder=true 11 | noborderrule=3 12 | wmclass=kitty 13 | wmclassmatch=1 14 | 15 | [162a6ff4-3bf2-4635-aa3d-d7f0957e66ac] 16 | Description=Remove Spotify decorations 17 | noborder=true 18 | noborderrule=3 19 | wmclass=Spotify 20 | wmclassmatch=1 21 | 22 | [2] 23 | Description=Remove Spotify decorations 24 | noborderrule=3 25 | wmclass=Spotify 26 | wmclassmatch=1 27 | 28 | [3] 29 | Description=Apps open on primary screen 30 | screen=1 31 | screenrule=3 32 | types=1 33 | 34 | [364efedc-9e30-420c-a6a4-fe4041ffba46] 35 | Description=Alacritty active opacity 36 | opacityactive=95 37 | opacityactiverule=2 38 | wmclass=alacritty 39 | wmclassmatch=1 40 | 41 | [4] 42 | Description=Kitty active opacity 43 | opacityactiverule=2 44 | wmclass=kitty 45 | wmclassmatch=1 46 | 47 | [5] 48 | Description=Alacritty active opacity 49 | opacityactive=95 50 | opacityactiverule=2 51 | wmclass=alacritty 52 | wmclassmatch=1 53 | 54 | [659517a4-5865-418e-ad5a-c4ca583b8da7] 55 | Description=Hide Discord title bar 56 | noborder=true 57 | noborderrule=3 58 | wmclass=discord 59 | wmclassmatch=1 60 | 61 | [90bb12fb-94ee-47c3-a65f-fc155dd155f2] 62 | Description=Wezterm 63 | desktops=d265a439-821e-4425-aac3-c018b440e7b0 64 | desktopsrule=3 65 | wmclass=org.wezfurlong.wezterm 66 | wmclassmatch=1 67 | 68 | [General] 69 | count=6 70 | rules=1,2,3,4,5,90bb12fb-94ee-47c3-a65f-fc155dd155f2 71 | 72 | [a45eb683-05cd-4205-9247-804de1115fec] 73 | Description=Firefox left side 74 | position=0,0 75 | positionrule=3 76 | size=1440,1754 77 | sizerule=3 78 | wmclass=firefoxdeveloperedition 79 | wmclassmatch=1 80 | 81 | [ae94bdc3-375a-4933-b2cd-39f96b966118] 82 | Description=Remove kitty decorations 83 | noborder=true 84 | noborderrule=3 85 | wmclass=kitty 86 | wmclassmatch=1 87 | 88 | [efff0786-4aec-4868-8e60-bc8e44979161] 89 | Description=Apps open on primary screen 90 | screen=1 91 | screenrule=3 92 | types=1 93 | 94 | [fa5b1167-c48f-4ebb-ae32-a7adfb49c80e] 95 | Description=Firefox size and position 96 | position=0,0 97 | positionrule=2 98 | size=1440,1754 99 | sizerule=2 100 | types=1 101 | wmclass=firefoxdeveloperedition 102 | wmclassmatch=1 103 | -------------------------------------------------------------------------------- /linux/pacman.packages: -------------------------------------------------------------------------------- 1 | wezterm 2 | zsh 3 | neovim 4 | btop 5 | lsd 6 | 1password 7 | bat 8 | fzf 9 | github-cli 10 | stow 11 | ttf-nerd-fonts-symbols-mono 12 | lazygit 13 | luarocks 14 | go 15 | nodejs 16 | npm 17 | ruby 18 | rubygems 19 | python-pynvim 20 | python-pip 21 | xclip 22 | composer 23 | julia 24 | php 25 | fastfetch 26 | rose-pine-cursor 27 | lazygit 28 | spotify-launcher 29 | hyprland 30 | swww 31 | nwg-look 32 | rose-pine-hyprcursor 33 | alacritty 34 | firefox-developer-edition 35 | input-remapper-git 36 | dart-sass 37 | vesktop 38 | rofi-wayland 39 | nwg-dock-hyprland 40 | playerctl 41 | beeper-latest-bin 42 | rofi-emoji-git 43 | thefuck 44 | aerc 45 | lynx 46 | inotify-tools 47 | ghostty-git --devel 48 | 49 | ################################################# 50 | # Hyprpanel 51 | ################################################# 52 | Intstall hyprpanel manually from github 53 | 54 | # dependencies 55 | libgtop 56 | grimblast 57 | gpu-screen-recorder 58 | hyprpicker 59 | mutagen 60 | wl-clipboard 61 | brightnessctl 62 | gnome-bluetooth-3.0 63 | gvfs 64 | -------------------------------------------------------------------------------- /linux/scripts/toggle-internal-kb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/zsh 2 | 3 | INTERNAL_KB_ID="1452:610:Apple_Inc._Apple_Internal_Keyboard_/_Trackpad" 4 | 5 | CURRENT_STATE=$(swaymsg -t get_inputs | jq -r ".[] | select(.identifier == \"$INTERNAL_KB_ID\") | .libinput.send_events") 6 | 7 | # Set a constant ID for replacement 8 | NOTIF_ID=1337 9 | 10 | if [[ "$CURRENT_STATE" == "enabled" ]]; then 11 | swaymsg input "$INTERNAL_KB_ID" events disabled 12 | notify-send -r $NOTIF_ID -i system-run "Internal Keyboard" "Disabled" 13 | else 14 | swaymsg input "$INTERNAL_KB_ID" events enabled 15 | notify-send -r $NOTIF_ID -i system-run "Internal Keyboard" "Enabled" 16 | fi 17 | -------------------------------------------------------------------------------- /macos/.config/alacritty/alacritty.toml: -------------------------------------------------------------------------------- 1 | [general] 2 | import = [ 3 | "./alacritty_base.toml" 4 | ] 5 | 6 | [font] 7 | size = 14 8 | glyph_offset = {x = 0, y = 0} 9 | -------------------------------------------------------------------------------- /macos/.config/borders/bordersrc: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | options=( 4 | style=round 5 | width=4.0 6 | hidpi=off 7 | active_color=0xffcba6f7 8 | # inactive_color=0xff414550 9 | ) 10 | 11 | borders "${options[@]}" 12 | -------------------------------------------------------------------------------- /macos/.config/ghostty/config: -------------------------------------------------------------------------------- 1 | config-file = ./config_base 2 | 3 | font-size = 14 4 | font-family = Recursive Mono Linear Static 5 | font-family-italic = Recursive Mono Casual Static 6 | font-family = Symbols Nerd Font 7 | 8 | macos-titlebar-style = hidden 9 | macos-option-as-alt = true 10 | -------------------------------------------------------------------------------- /macos/.config/neovide/config.toml: -------------------------------------------------------------------------------- 1 | backtraces_path = "/path/to/neovide_backtraces.log" # see below for the default platform specific location 2 | fork = false 3 | frame = "transparent" 4 | idle = true 5 | maximized = false 6 | mouse-cursor-icon = "arrow" 7 | no-multigrid = false 8 | srgb = false 9 | tabs = true 10 | theme = "auto" 11 | title-hidden = true 12 | vsync = true 13 | wsl = false 14 | scale_factor = 0.5 15 | refresh_rate = 144 16 | scroll_animation_length = 0.3 17 | no_idle = true 18 | 19 | # cursor VFX 20 | # cursor_vfx_mode = "torpedo" 21 | # cursor_vfx_particle_lifetime_ms = 200.0 22 | # cursor_vfx_particle_density = 15.0 23 | cursor_animate_command_line = false 24 | 25 | # zero padding (so Telescope floats align perfectly) 26 | padding_top = 0 27 | padding_bottom = 0 28 | padding_left = 0 29 | padding_right = 0 30 | 31 | [font] 32 | normal = ["RecMonoLinear Nerd Font"] 33 | italic = ["RecMonoCasual Nerd Font"] 34 | size = 14 35 | 36 | [box-drawing] 37 | # "font-glyph", "native" or "selected-native" 38 | mode = "font-glyph" 39 | 40 | [box-drawing.sizes] 41 | default = [2, 4] # Thin and thick values respectively, for all sizes 42 | 43 | -------------------------------------------------------------------------------- /macos/.gitsettings/credentials.conf: -------------------------------------------------------------------------------- 1 | [credential "https://github.com"] 2 | helper = 3 | helper = !/opt/homebrew/bin/gh auth git-credential 4 | [credential "https://gist.github.com"] 5 | helper = 6 | helper = !/opt/homebrew/bin/gh auth git-credential 7 | --------------------------------------------------------------------------------