├── .chezmoiignore ├── dot_config ├── nvim │ ├── dot_luarc.json │ ├── init.lua │ ├── lazy-lock.json │ └── lua │ │ ├── config │ │ └── lazy.lua │ │ └── plugins │ │ ├── catppuccin.lua │ │ ├── completions.lua │ │ ├── lsp-config.lua │ │ ├── mason-tool-installer.lua │ │ ├── neo-tree.lua │ │ ├── none-ls.lua │ │ ├── telescope.lua │ │ ├── treesitter.lua │ │ └── which-key.lua ├── starship.toml └── zellij │ └── config.kdl └── dot_zshrc /.chezmoiignore: -------------------------------------------------------------------------------- 1 | **/.git 2 | -------------------------------------------------------------------------------- /dot_config/nvim/dot_luarc.json: -------------------------------------------------------------------------------- 1 | { 2 | "diagnostics.globals": [ 3 | "vim" 4 | ] 5 | } -------------------------------------------------------------------------------- /dot_config/nvim/init.lua: -------------------------------------------------------------------------------- 1 | require("config.lazy") 2 | 3 | local vim = vim 4 | 5 | vim.cmd("set expandtab") 6 | vim.cmd("set tabstop=2") 7 | vim.cmd("set softtabstop=2") 8 | vim.cmd("set shiftwidth=2") 9 | vim.cmd("set number") 10 | 11 | local run_test = function() 12 | local current_file = vim.fn.expand('%:p') 13 | local test_string = "silent !zellij run -d Down -n 'testing' -- bin/rails test " .. current_file 14 | vim.api.nvim_command(test_string) 15 | end 16 | 17 | local run_all_tests = function() 18 | local test_string = "silent !zellij run -d Down -n 'testing' -- bin/rails test" 19 | vim.api.nvim_command(test_string) 20 | end 21 | 22 | vim.api.nvim_create_user_command('RunTest', run_test, {}) 23 | vim.api.nvim_create_user_command('RunAllTests', run_all_tests, {}) 24 | 25 | vim.keymap.set("n", "t", ":RunTest", { desc = "run current file test" }) 26 | vim.keymap.set("n", "a", ":RunAllTests", { desc = "run all tests" }) 27 | -------------------------------------------------------------------------------- /dot_config/nvim/lazy-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "LuaSnip": { "branch": "master", "commit": "e808bee352d1a6fcf902ca1a71cee76e60e24071" }, 3 | "catppuccin": { "branch": "main", "commit": "63685e1562ef53873c9764b483d7ac5c7a608922" }, 4 | "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" }, 5 | "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, 6 | "friendly-snippets": { "branch": "main", "commit": "00ebcaa159e817150bd83bfe2d51fa3b3377d5c4" }, 7 | "lazy.nvim": { "branch": "main", "commit": "460e1cd8f24e364d54543a4b0e83f6f4ec1f65fb" }, 8 | "mason-lspconfig": { "branch": "main", "commit": "25c11854aa25558ee6c03432edfa0df0217324be" }, 9 | "mason-tool-installer": { "branch": "main", "commit": "c5e07b8ff54187716334d585db34282e46fa2932" }, 10 | "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, 11 | "neo-tree.nvim": { "branch": "main", "commit": "a77af2e764c5ed4038d27d1c463fa49cd4794e07" }, 12 | "none-ls.nvim": { "branch": "main", "commit": "9b98991e15dce8fc502993e23caac2528b8b667f" }, 13 | "nui.nvim": { "branch": "main", "commit": "b58e2bfda5cea347c9d58b7f11cf3012c7b3953f" }, 14 | "nvim-cmp": { "branch": "main", "commit": "ae644feb7b67bf1ce4260c231d1d4300b19c6f30" }, 15 | "nvim-lspconfig": { "branch": "master", "commit": "73e0002b6f211376bbf36c31a2f812aedf6bd6b0" }, 16 | "nvim-treesitter": { "branch": "master", "commit": "3c6af36794b26e1bcac3f126b43e0f646154725d" }, 17 | "nvim-web-devicons": { "branch": "master", "commit": "9154484705968658e9aab2b894d1b2a64bf9f83d" }, 18 | "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, 19 | "telescope.nvim": { "branch": "master", "commit": "0df05c9e9f791dbc542c1fb612195f4dc97209b6" }, 20 | "which-key.nvim": { "branch": "main", "commit": "bfec3d6bc0a9b0b2cb11644642f78c2c3915eef0" } 21 | } 22 | -------------------------------------------------------------------------------- /dot_config/nvim/lua/config/lazy.lua: -------------------------------------------------------------------------------- 1 | -- Bootstrap lazy.nvim 2 | local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" 3 | if not (vim.uv or vim.loop).fs_stat(lazypath) then 4 | local lazyrepo = "https://github.com/folke/lazy.nvim.git" 5 | local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) 6 | if vim.v.shell_error ~= 0 then 7 | vim.api.nvim_echo({ 8 | { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, 9 | { out, "WarningMsg" }, 10 | { "\nPress any key to exit..." }, 11 | }, true, {}) 12 | vim.fn.getchar() 13 | os.exit(1) 14 | end 15 | end 16 | vim.opt.rtp:prepend(lazypath) 17 | 18 | -- Make sure to setup `mapleader` and `maplocalleader` before 19 | -- loading lazy.nvim so that mappings are correct. 20 | -- This is also a good place to setup other settings (vim.opt) 21 | vim.g.mapleader = " " 22 | vim.g.maplocalleader = "\\" 23 | 24 | -- Setup lazy.nvim 25 | require("lazy").setup({ 26 | spec = { 27 | -- import your plugins 28 | { import = "plugins" }, 29 | }, 30 | -- Configure any other settings here. See the documentation for more details. 31 | -- colorscheme that will be used when installing plugins. 32 | install = { colorscheme = { "catppuccin-mocha" } }, 33 | -- automatically check for plugin updates 34 | checker = { enabled = false }, 35 | update = { notify = false }, 36 | }) 37 | -------------------------------------------------------------------------------- /dot_config/nvim/lua/plugins/catppuccin.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "catppuccin/nvim", 3 | name = "catppuccin", 4 | priority = 1000, 5 | config = function() 6 | vim.cmd.colorscheme "catppuccin" 7 | end 8 | } 9 | -------------------------------------------------------------------------------- /dot_config/nvim/lua/plugins/completions.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "hrsh7th/cmp-nvim-lsp", 4 | }, 5 | { 6 | "L3MON4D3/LuaSnip", 7 | dependencies = { 8 | "saadparwaiz1/cmp_luasnip", 9 | "rafamadriz/friendly-snippets", 10 | }, 11 | }, 12 | { 13 | "hrsh7th/nvim-cmp", 14 | config = function() 15 | local cmp = require("cmp") 16 | require("luasnip.loaders.from_vscode").lazy_load() 17 | 18 | cmp.setup({ 19 | snippet = { 20 | expand = function(args) 21 | require("luasnip").lsp_expand(args.body) 22 | end, 23 | }, 24 | window = { 25 | completion = cmp.config.window.bordered(), 26 | documentation = cmp.config.window.bordered(), 27 | }, 28 | mapping = cmp.mapping.preset.insert({ 29 | [""] = cmp.mapping.scroll_docs(-4), 30 | [""] = cmp.mapping.scroll_docs(4), 31 | [""] = cmp.mapping.complete(), 32 | [""] = cmp.mapping.abort(), 33 | [""] = cmp.mapping.confirm({ select = true }), 34 | }), 35 | sources = cmp.config.sources({ 36 | { name = "nvim_lsp" }, 37 | { name = "luasnip" }, -- For luasnip users. 38 | }, { 39 | { name = "buffer" }, 40 | }), 41 | }) 42 | end, 43 | }, 44 | } 45 | -------------------------------------------------------------------------------- /dot_config/nvim/lua/plugins/lsp-config.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "williamboman/mason.nvim", 4 | config = function() 5 | require("mason").setup() 6 | end 7 | }, 8 | { 9 | "williamboman/mason-lspconfig", 10 | config = function() 11 | require("mason-lspconfig").setup({ 12 | ensure_installed = { "lua_ls"}, 13 | automatic_installation = true, 14 | }) 15 | end 16 | }, 17 | { 18 | "neovim/nvim-lspconfig", 19 | config = function() 20 | local capabilities = require('cmp_nvim_lsp').default_capabilities() 21 | 22 | 23 | local lspconfig = require('lspconfig') 24 | lspconfig.lua_ls.setup({ 25 | capabilities = capabilities 26 | }) 27 | lspconfig.ruby_lsp.setup({ 28 | init_options = { 29 | formatter = 'standard', 30 | linters = { 'standard' }, 31 | }, 32 | capabilities = capabilities, 33 | cmd = { vim.fn.expand "/usr/local/bundle/bin/ruby-lsp"}, 34 | }) 35 | end, 36 | 37 | vim.keymap.set('n', 'K', vim.lsp.buf.hover, { desc = "hover documentation LSP" }), 38 | vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, { desc = "Code Action LSP" }), 39 | vim.keymap.set('n', 'gd', vim.lsp.buf.definition, { desc = "GOTO Definition LSP" }), 40 | vim.keymap.set('n', 'gr', vim.lsp.buf.references, { desc = "GOTO References LSP" }), 41 | vim.keymap.set('n', 'gf', vim.lsp.buf.format, { desc = "Format File LSP" }), 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /dot_config/nvim/lua/plugins/mason-tool-installer.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "WhoIsSethDaniel/mason-tool-installer", 3 | 4 | config = function() 5 | local mason_tool_installer = require("mason-tool-installer") 6 | mason_tool_installer.ensure_installed = { 7 | "rubocop", 8 | "stylua", 9 | } 10 | end, 11 | } 12 | -------------------------------------------------------------------------------- /dot_config/nvim/lua/plugins/neo-tree.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "nvim-neo-tree/neo-tree.nvim", 3 | dependencies = { 4 | "nvim-lua/plenary.nvim", 5 | "nvim-tree/nvim-web-devicons", 6 | "MunifTanjim/nui.nvim", 7 | }, 8 | 9 | vim.keymap.set('n', '', ':Neotree toggle left', {}) 10 | } 11 | -------------------------------------------------------------------------------- /dot_config/nvim/lua/plugins/none-ls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "nvimtools/none-ls.nvim", 3 | config = function() 4 | local null_ls = require("null-ls") 5 | null_ls.setup({ 6 | sources = { 7 | null_ls.builtins.formatting.stylua, 8 | null_ls.builtins.diagnostics.rubocop, 9 | null_ls.builtins.formatting.rubocop, 10 | }, 11 | }) 12 | end, 13 | } 14 | -------------------------------------------------------------------------------- /dot_config/nvim/lua/plugins/telescope.lua: -------------------------------------------------------------------------------- 1 | return { 2 | 'nvim-telescope/telescope.nvim', 3 | dependencies = { 'nvim-lua/plenary.nvim' }, 4 | 5 | config = function() 6 | local builtin = require('telescope.builtin') 7 | 8 | vim.keymap.set('n', 'ff', builtin.find_files, { desc = "find files TELESCOPE" }) 9 | vim.keymap.set('n', 'fg', builtin.live_grep, { desc = "grep codebase TELESCOPE" }) 10 | end, 11 | } 12 | -------------------------------------------------------------------------------- /dot_config/nvim/lua/plugins/treesitter.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "nvim-treesitter/nvim-treesitter", 3 | build = ":TSUpdate", 4 | config = function() 5 | require("nvim-treesitter.configs").setup({ 6 | auto_install = true, 7 | highlight = { enable = true}, 8 | }) 9 | end 10 | } 11 | -------------------------------------------------------------------------------- /dot_config/nvim/lua/plugins/which-key.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "folke/which-key.nvim", 3 | event = "VeryLazy", 4 | opts = { 5 | -- your configuration comes here 6 | -- or leave it empty to use the default settings 7 | -- refer to the configuration section below 8 | }, 9 | keys = { 10 | { 11 | "?", 12 | function() 13 | require("which-key").show({ global = false }) 14 | end, 15 | desc = "Buffer Local Keymaps (which-key)", 16 | }, 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /dot_config/starship.toml: -------------------------------------------------------------------------------- 1 | "$schema" = 'https://starship.rs/config-schema.json' 2 | 3 | format = """ 4 | [](surface0)\ 5 | $os\ 6 | $username\ 7 | [](bg:peach fg:surface0)\ 8 | $directory\ 9 | [](fg:peach bg:green)\ 10 | $git_branch\ 11 | $git_status\ 12 | [](fg:green bg:teal)\ 13 | $c\ 14 | $rust\ 15 | $golang\ 16 | $nodejs\ 17 | $php\ 18 | $java\ 19 | $kotlin\ 20 | $haskell\ 21 | $python\ 22 | [](fg:teal bg:blue)\ 23 | $docker_context\ 24 | [](fg:blue bg:purple)\ 25 | $time\ 26 | [ ](fg:purple)\ 27 | $line_break$character""" 28 | 29 | palette = 'catppuccin_mocha' 30 | 31 | [palettes.gruvbox_dark] 32 | color_fg0 = '#fbf1c7' 33 | color_bg1 = '#3c3836' 34 | color_bg3 = '#665c54' 35 | color_blue = '#458588' 36 | color_aqua = '#689d6a' 37 | color_green = '#98971a' 38 | color_orange = '#d65d0e' 39 | color_purple = '#b16286' 40 | color_red = '#cc241d' 41 | color_yellow = '#d79921' 42 | 43 | [palettes.catppuccin_mocha] 44 | rosewater = "#f5e0dc" 45 | flamingo = "#f2cdcd" 46 | pink = "#f5c2e7" 47 | orange = "#cba6f7" 48 | red = "#f38ba8" 49 | maroon = "#eba0ac" 50 | peach = "#fab387" 51 | yellow = "#f9e2af" 52 | green = "#a6e3a1" 53 | teal = "#94e2d5" 54 | sky = "#89dceb" 55 | sapphire = "#74c7ec" 56 | blue = "#89b4fa" 57 | lavender = "#b4befe" 58 | text = "#cdd6f4" 59 | subtext1 = "#bac2de" 60 | subtext0 = "#a6adc8" 61 | overlay2 = "#9399b2" 62 | overlay1 = "#7f849c" 63 | overlay0 = "#6c7086" 64 | surface2 = "#585b70" 65 | surface1 = "#45475a" 66 | surface0 = "#313244" 67 | base = "#1e1e2e" 68 | mantle = "#181825" 69 | crust = "#11111b" 70 | 71 | [os] 72 | disabled = false 73 | style = "bg:surface0 fg:text" 74 | 75 | [os.symbols] 76 | Windows = "󰍲" 77 | Ubuntu = "󰕈" 78 | SUSE = "" 79 | Raspbian = "󰐿" 80 | Mint = "󰣭" 81 | Macos = "" 82 | Manjaro = "" 83 | Linux = "󰌽" 84 | Gentoo = "󰣨" 85 | Fedora = "󰣛" 86 | Alpine = "" 87 | Amazon = "" 88 | Android = "" 89 | Arch = "󰣇" 90 | Artix = "󰣇" 91 | CentOS = "" 92 | Debian = "󰣚" 93 | Redhat = "󱄛" 94 | RedHatEnterprise = "󱄛" 95 | 96 | [username] 97 | show_always = true 98 | style_user = "bg:surface0 fg:text" 99 | style_root = "bg:surface0 fg:text" 100 | format = '[ $user ]($style)' 101 | 102 | [directory] 103 | style = "fg:mantle bg:peach" 104 | format = "[ $path ]($style)" 105 | truncation_length = 3 106 | truncation_symbol = "…/" 107 | 108 | [directory.substitutions] 109 | "Documents" = "󰈙 " 110 | "Downloads" = " " 111 | "Music" = "󰝚 " 112 | "Pictures" = " " 113 | "Developer" = "󰲋 " 114 | 115 | [git_branch] 116 | symbol = "" 117 | style = "bg:teal" 118 | format = '[[ $symbol $branch ](fg:base bg:green)]($style)' 119 | 120 | [git_status] 121 | style = "bg:teal" 122 | format = '[[($all_status$ahead_behind )](fg:base bg:green)]($style)' 123 | 124 | [nodejs] 125 | symbol = "" 126 | style = "bg:teal" 127 | format = '[[ $symbol( $version) ](fg:base bg:teal)]($style)' 128 | 129 | [c] 130 | symbol = " " 131 | style = "bg:teal" 132 | format = '[[ $symbol( $version) ](fg:base bg:teal)]($style)' 133 | 134 | [rust] 135 | symbol = "" 136 | style = "bg:teal" 137 | format = '[[ $symbol( $version) ](fg:base bg:teal)]($style)' 138 | 139 | [golang] 140 | symbol = "" 141 | style = "bg:teal" 142 | format = '[[ $symbol( $version) ](fg:base bg:teal)]($style)' 143 | 144 | [php] 145 | symbol = "" 146 | style = "bg:teal" 147 | format = '[[ $symbol( $version) ](fg:base bg:teal)]($style)' 148 | 149 | [java] 150 | symbol = " " 151 | style = "bg:teal" 152 | format = '[[ $symbol( $version) ](fg:base bg:teal)]($style)' 153 | 154 | [kotlin] 155 | symbol = "" 156 | style = "bg:teal" 157 | format = '[[ $symbol( $version) ](fg:base bg:teal)]($style)' 158 | 159 | [haskell] 160 | symbol = "" 161 | style = "bg:teal" 162 | format = '[[ $symbol( $version) ](fg:base bg:teal)]($style)' 163 | 164 | [python] 165 | symbol = "" 166 | style = "bg:teal" 167 | format = '[[ $symbol( $version) ](fg:base bg:teal)]($style)' 168 | 169 | [docker_context] 170 | symbol = "" 171 | style = "bg:mantle" 172 | format = '[[ $symbol( $context) ](fg:#83a598 bg:color_bg3)]($style)' 173 | 174 | [time] 175 | disabled = false 176 | time_format = "%R" 177 | style = "bg:peach" 178 | format = '[[  $time ](fg:mantle bg:purple)]($style)' 179 | 180 | [line_break] 181 | disabled = false 182 | 183 | [character] 184 | disabled = false 185 | success_symbol = '[](bold fg:green)' 186 | error_symbol = '[](bold fg:red)' 187 | vimcmd_symbol = '[](bold fg:creen)' 188 | vimcmd_replace_one_symbol = '[](bold fg:purple)' 189 | vimcmd_replace_symbol = '[](bold fg:purple)' 190 | vimcmd_visual_symbol = '[](bold fg:lavender)' 191 | -------------------------------------------------------------------------------- /dot_config/zellij/config.kdl: -------------------------------------------------------------------------------- 1 | // If you'd like to override the default keybindings completely, be sure to change "keybinds" to "keybinds clear-defaults=true" 2 | keybinds { 3 | unbind "Ctrl n" // unbind in all modes 4 | normal { 5 | // uncomment this and adjust key if using copy_on_select=false 6 | // bind "Alt c" { Copy; } 7 | } 8 | locked { 9 | bind "Ctrl g" { SwitchToMode "Normal"; } 10 | } 11 | resize { 12 | bind "h" "Left" { Resize "Increase Left"; } 13 | bind "j" "Down" { Resize "Increase Down"; } 14 | bind "k" "Up" { Resize "Increase Up"; } 15 | bind "l" "Right" { Resize "Increase Right"; } 16 | bind "H" { Resize "Decrease Left"; } 17 | bind "J" { Resize "Decrease Down"; } 18 | bind "K" { Resize "Decrease Up"; } 19 | bind "L" { Resize "Decrease Right"; } 20 | bind "=" "+" { Resize "Increase"; } 21 | bind "-" { Resize "Decrease"; } 22 | } 23 | pane { 24 | bind "Ctrl p" { SwitchToMode "Normal"; } 25 | bind "h" "Left" { MoveFocus "Left"; } 26 | bind "l" "Right" { MoveFocus "Right"; } 27 | bind "j" "Down" { MoveFocus "Down"; } 28 | bind "k" "Up" { MoveFocus "Up"; } 29 | bind "p" { SwitchFocus; } 30 | bind "n" { NewPane; SwitchToMode "Normal"; } 31 | bind "d" { NewPane "Down"; SwitchToMode "Normal"; } 32 | bind "r" { NewPane "Right"; SwitchToMode "Normal"; } 33 | bind "x" { CloseFocus; SwitchToMode "Normal"; } 34 | bind "f" { ToggleFocusFullscreen; SwitchToMode "Normal"; } 35 | bind "z" { TogglePaneFrames; SwitchToMode "Normal"; } 36 | bind "w" { ToggleFloatingPanes; SwitchToMode "Normal"; } 37 | bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "Normal"; } 38 | bind "c" { SwitchToMode "RenamePane"; PaneNameInput 0;} 39 | } 40 | move { 41 | bind "Ctrl h" { SwitchToMode "Normal"; } 42 | bind "n" "Tab" { MovePane; } 43 | bind "p" { MovePaneBackwards; } 44 | bind "h" "Left" { MovePane "Left"; } 45 | bind "j" "Down" { MovePane "Down"; } 46 | bind "k" "Up" { MovePane "Up"; } 47 | bind "l" "Right" { MovePane "Right"; } 48 | } 49 | tab { 50 | bind "Ctrl t" { SwitchToMode "Normal"; } 51 | bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; } 52 | bind "h" "Left" "Up" "k" { GoToPreviousTab; } 53 | bind "l" "Right" "Down" "j" { GoToNextTab; } 54 | bind "n" { NewTab; SwitchToMode "Normal"; } 55 | bind "x" { CloseTab; SwitchToMode "Normal"; } 56 | bind "s" { ToggleActiveSyncTab; SwitchToMode "Normal"; } 57 | bind "b" { BreakPane; SwitchToMode "Normal"; } 58 | bind "]" { BreakPaneRight; SwitchToMode "Normal"; } 59 | bind "[" { BreakPaneLeft; SwitchToMode "Normal"; } 60 | bind "1" { GoToTab 1; SwitchToMode "Normal"; } 61 | bind "2" { GoToTab 2; SwitchToMode "Normal"; } 62 | bind "3" { GoToTab 3; SwitchToMode "Normal"; } 63 | bind "4" { GoToTab 4; SwitchToMode "Normal"; } 64 | bind "5" { GoToTab 5; SwitchToMode "Normal"; } 65 | bind "6" { GoToTab 6; SwitchToMode "Normal"; } 66 | bind "7" { GoToTab 7; SwitchToMode "Normal"; } 67 | bind "8" { GoToTab 8; SwitchToMode "Normal"; } 68 | bind "9" { GoToTab 9; SwitchToMode "Normal"; } 69 | bind "Tab" { ToggleTab; } 70 | } 71 | scroll { 72 | bind "Ctrl s" { SwitchToMode "Normal"; } 73 | bind "e" { EditScrollback; SwitchToMode "Normal"; } 74 | bind "s" { SwitchToMode "EnterSearch"; SearchInput 0; } 75 | bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; } 76 | bind "j" "Down" { ScrollDown; } 77 | bind "k" "Up" { ScrollUp; } 78 | bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; } 79 | bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; } 80 | bind "d" { HalfPageScrollDown; } 81 | bind "u" { HalfPageScrollUp; } 82 | // uncomment this and adjust key if using copy_on_select=false 83 | // bind "Alt c" { Copy; } 84 | } 85 | search { 86 | bind "Ctrl s" { SwitchToMode "Normal"; } 87 | bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; } 88 | bind "j" "Down" { ScrollDown; } 89 | bind "k" "Up" { ScrollUp; } 90 | bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; } 91 | bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; } 92 | bind "d" { HalfPageScrollDown; } 93 | bind "u" { HalfPageScrollUp; } 94 | bind "n" { Search "down"; } 95 | bind "p" { Search "up"; } 96 | bind "c" { SearchToggleOption "CaseSensitivity"; } 97 | bind "w" { SearchToggleOption "Wrap"; } 98 | bind "o" { SearchToggleOption "WholeWord"; } 99 | } 100 | entersearch { 101 | bind "Ctrl c" "Esc" { SwitchToMode "Scroll"; } 102 | bind "Enter" { SwitchToMode "Search"; } 103 | } 104 | renametab { 105 | bind "Ctrl c" { SwitchToMode "Normal"; } 106 | bind "Esc" { UndoRenameTab; SwitchToMode "Tab"; } 107 | } 108 | renamepane { 109 | bind "Ctrl c" { SwitchToMode "Normal"; } 110 | bind "Esc" { UndoRenamePane; SwitchToMode "Pane"; } 111 | } 112 | session { 113 | bind "Ctrl o" { SwitchToMode "Normal"; } 114 | bind "Ctrl s" { SwitchToMode "Scroll"; } 115 | bind "d" { Detach; } 116 | bind "w" { 117 | LaunchOrFocusPlugin "zellij:session-manager" { 118 | floating true 119 | move_to_focused_tab true 120 | }; 121 | SwitchToMode "Normal" 122 | } 123 | } 124 | tmux { 125 | bind "[" { SwitchToMode "Scroll"; } 126 | bind "Ctrl b" { Write 2; SwitchToMode "Normal"; } 127 | bind "\"" { NewPane "Down"; SwitchToMode "Normal"; } 128 | bind "%" { NewPane "Right"; SwitchToMode "Normal"; } 129 | bind "z" { ToggleFocusFullscreen; SwitchToMode "Normal"; } 130 | bind "c" { NewTab; SwitchToMode "Normal"; } 131 | bind "," { SwitchToMode "RenameTab"; } 132 | bind "p" { GoToPreviousTab; SwitchToMode "Normal"; } 133 | bind "n" { GoToNextTab; SwitchToMode "Normal"; } 134 | bind "Left" { MoveFocus "Left"; SwitchToMode "Normal"; } 135 | bind "Right" { MoveFocus "Right"; SwitchToMode "Normal"; } 136 | bind "Down" { MoveFocus "Down"; SwitchToMode "Normal"; } 137 | bind "Up" { MoveFocus "Up"; SwitchToMode "Normal"; } 138 | bind "h" { MoveFocus "Left"; SwitchToMode "Normal"; } 139 | bind "l" { MoveFocus "Right"; SwitchToMode "Normal"; } 140 | bind "j" { MoveFocus "Down"; SwitchToMode "Normal"; } 141 | bind "k" { MoveFocus "Up"; SwitchToMode "Normal"; } 142 | bind "o" { FocusNextPane; } 143 | bind "d" { Detach; } 144 | bind "Space" { NextSwapLayout; } 145 | bind "x" { CloseFocus; SwitchToMode "Normal"; } 146 | } 147 | shared_except "locked" { 148 | bind "Ctrl g" { SwitchToMode "Locked"; } 149 | bind "Ctrl q" { Quit; } 150 | bind "Alt n" { NewPane; } 151 | bind "Alt h" "Alt Left" { MoveFocusOrTab "Left"; } 152 | bind "Alt l" "Alt Right" { MoveFocusOrTab "Right"; } 153 | bind "Alt j" "Alt Down" { MoveFocus "Down"; } 154 | bind "Alt k" "Alt Up" { MoveFocus "Up"; } 155 | bind "Alt =" "Alt +" { Resize "Increase"; } 156 | bind "Alt -" { Resize "Decrease"; } 157 | bind "Alt [" { PreviousSwapLayout; } 158 | bind "Alt ]" { NextSwapLayout; } 159 | } 160 | shared_except "normal" "locked" { 161 | bind "Enter" "Esc" { SwitchToMode "Normal"; } 162 | } 163 | shared_except "pane" "locked" { 164 | bind "Ctrl p" { SwitchToMode "Pane"; } 165 | } 166 | shared_except "resize" "locked" { 167 | } 168 | shared_except "scroll" "locked" { 169 | bind "Ctrl s" { SwitchToMode "Scroll"; } 170 | } 171 | shared_except "session" "locked" { 172 | bind "Ctrl o" { SwitchToMode "Session"; } 173 | } 174 | shared_except "tab" "locked" { 175 | bind "Ctrl t" { SwitchToMode "Tab"; } 176 | } 177 | shared_except "move" "locked" { 178 | bind "Ctrl h" { SwitchToMode "Move"; } 179 | } 180 | shared_except "tmux" "locked" { 181 | bind "Ctrl b" { SwitchToMode "Tmux"; } 182 | } 183 | } 184 | 185 | plugins { 186 | tab-bar { path "tab-bar"; } 187 | status-bar { path "status-bar"; } 188 | strider { path "strider"; } 189 | compact-bar { path "compact-bar"; } 190 | session-manager { path "session-manager"; } 191 | } 192 | 193 | // Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP 194 | // eg. when terminal window with an active zellij session is closed 195 | // Options: 196 | // - detach (Default) 197 | // - quit 198 | // 199 | // on_force_close "quit" 200 | 201 | // Send a request for a simplified ui (without arrow fonts) to plugins 202 | // Options: 203 | // - true 204 | // - false (Default) 205 | // 206 | // simplified_ui true 207 | 208 | // Choose the path to the default shell that zellij will use for opening new panes 209 | // Default: $SHELL 210 | // 211 | default_shell "zsh" 212 | 213 | // Choose the path to override cwd that zellij will use for opening new panes 214 | // 215 | // default_cwd "" 216 | 217 | // Toggle between having pane frames around the panes 218 | // Options: 219 | // - true (default) 220 | // - false 221 | // 222 | // pane_frames true 223 | 224 | // Toggle between having Zellij lay out panes according to a predefined set of layouts whenever possible 225 | // Options: 226 | // - true (default) 227 | // - false 228 | // 229 | // auto_layout true 230 | 231 | // Whether sessions should be serialized to the cache folder (including their tabs/panes, cwds and running commands) so that they can later be resurrected 232 | // Options: 233 | // - true (default) 234 | // - false 235 | // 236 | // session_serialization false 237 | 238 | // Whether pane viewports are serialized along with the session, default is false 239 | // Options: 240 | // - true 241 | // - false (default) 242 | // serialize_pane_viewport true 243 | 244 | // Scrollback lines to serialize along with the pane viewport when serializing sessions, 0 245 | // defaults to the scrollback size. If this number is higher than the scrollback size, it will 246 | // also default to the scrollback size. This does nothing if `serialize_pane_viewport` is not true. 247 | // 248 | // scrollback_lines_to_serialize 10000 249 | 250 | // Define color themes for Zellij 251 | // For more examples, see: https://github.com/zellij-org/zellij/tree/main/example/themes 252 | // Once these themes are defined, one of them should to be selected in the "theme" section of this file 253 | // 254 | // themes { 255 | // dracula { 256 | // fg 248 248 242 257 | // bg 40 42 54 258 | // red 255 85 85 259 | // green 80 250 123 260 | // yellow 241 250 140 261 | // blue 98 114 164 262 | // magenta 255 121 198 263 | // orange 255 184 108 264 | // cyan 139 233 253 265 | // black 0 0 0 266 | // white 255 255 255 267 | // } 268 | // } 269 | 270 | // Choose the theme that is specified in the themes section. 271 | // Default: default 272 | // 273 | // theme "default" 274 | theme "catppuccin-mocha" 275 | 276 | // The name of the default layout to load on startup 277 | // Default: "default" 278 | // 279 | // default_layout "compact" 280 | 281 | // Choose the mode that zellij uses when starting up. 282 | // Default: normal 283 | // 284 | // default_mode "locked" 285 | 286 | // Toggle enabling the mouse mode. 287 | // On certain configurations, or terminals this could 288 | // potentially interfere with copying text. 289 | // Options: 290 | // - true (default) 291 | // - false 292 | // 293 | // mouse_mode false 294 | 295 | // Configure the scroll back buffer size 296 | // This is the number of lines zellij stores for each pane in the scroll back 297 | // buffer. Excess number of lines are discarded in a FIFO fashion. 298 | // Valid values: positive integers 299 | // Default value: 10000 300 | // 301 | // scroll_buffer_size 10000 302 | 303 | // Provide a command to execute when copying text. The text will be piped to 304 | // the stdin of the program to perform the copy. This can be used with 305 | // terminal emulators which do not support the OSC 52 ANSI control sequence 306 | // that will be used by default if this option is not set. 307 | // Examples: 308 | // 309 | // copy_command "xclip -selection clipboard" // x11 310 | // copy_command "wl-copy" // wayland 311 | // copy_command "pbcopy" // osx 312 | 313 | // Choose the destination for copied text 314 | // Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard. 315 | // Does not apply when using copy_command. 316 | // Options: 317 | // - system (default) 318 | // - primary 319 | // 320 | // copy_clipboard "primary" 321 | 322 | // Enable or disable automatic copy (and clear) of selection when releasing mouse 323 | // Default: true 324 | // 325 | // copy_on_select false 326 | 327 | // Path to the default editor to use to edit pane scrollbuffer 328 | // Default: $EDITOR or $VISUAL 329 | // 330 | // scrollback_editor "/usr/bin/vim" 331 | 332 | // When attaching to an existing session with other users, 333 | // should the session be mirrored (true) 334 | // or should each user have their own cursor (false) 335 | // Default: false 336 | // 337 | // mirror_session true 338 | 339 | // The folder in which Zellij will look for layouts 340 | // 341 | // layout_dir "/path/to/my/layout_dir" 342 | 343 | // The folder in which Zellij will look for themes 344 | // 345 | // theme_dir "/path/to/my/theme_dir" 346 | 347 | // Enable or disable the rendering of styled and colored underlines (undercurl). 348 | // May need to be disabled for certain unsupported terminals 349 | // Default: true 350 | // 351 | // styled_underlines false 352 | -------------------------------------------------------------------------------- /dot_zshrc: -------------------------------------------------------------------------------- 1 | # replace me 2 | eval "$(starship init zsh)" 3 | 4 | --------------------------------------------------------------------------------