From 984dc044924b9ad8807952e7719f45a40373d84d Mon Sep 17 00:00:00 2001 From: Steve Date: Thu, 30 Mar 2023 21:15:46 -0400 Subject: [PATCH] updates --- .config/nvim/init.lua | 2 +- .config/zellij/config.kdl | 276 ++++++++++++++++++++++++++ alacritty/alacritty.yml | 38 ++++ alacritty/bindings.yml | 2 + alacritty/themes/dracula.yml | 61 ++++++ nvim/init.lua | 159 +++++++++++++++ nvim/lua/config/_template.lua | 12 ++ nvim/lua/config/aerial.lua.bak | 261 +++++++++++++++++++++++++ nvim/lua/config/aerial.lua.old | 20 ++ nvim/lua/config/colors.lua | 23 +++ nvim/lua/config/dashboard.lua | 33 ++++ nvim/lua/config/dracula-vim.lua | 80 ++++++++ nvim/lua/config/lualine.lua | 17 ++ nvim/lua/config/nvim-tree.lua | 46 +++++ nvim/lua/config/nvim-treesitter.lua | 61 ++++++ nvim/lua/config/whichkey.lua | 63 ++++++ nvim/lua/config/winshift.lua | 20 ++ nvim/lua/diag.lua | 153 +++++++++++++++ nvim/lua/key_bindings.lua | 22 +++ nvim/lua/plugins.lua | 148 ++++++++++++++ nvim/plugin/packer_compiled.lua | 290 ++++++++++++++++++++++++++++ nvim/static/apple.cat | 26 +++ nvim/static/htp2.cat | 31 +++ nvim/static/invaders.cat | 10 + nvim/static/quake.cat | 26 +++ nvim/static/tux.cat | 19 ++ nvim/static/y2k.cat | 22 +++ sxhkd.service | 11 ++ sxhkd/sxhkdrc | 6 + zellij/config.kdl | 276 ++++++++++++++++++++++++++ 30 files changed, 2213 insertions(+), 1 deletion(-) create mode 100644 .config/zellij/config.kdl create mode 100644 alacritty/alacritty.yml create mode 100644 alacritty/bindings.yml create mode 100644 alacritty/themes/dracula.yml create mode 100644 nvim/init.lua create mode 100644 nvim/lua/config/_template.lua create mode 100644 nvim/lua/config/aerial.lua.bak create mode 100644 nvim/lua/config/aerial.lua.old create mode 100644 nvim/lua/config/colors.lua create mode 100644 nvim/lua/config/dashboard.lua create mode 100644 nvim/lua/config/dracula-vim.lua create mode 100644 nvim/lua/config/lualine.lua create mode 100644 nvim/lua/config/nvim-tree.lua create mode 100644 nvim/lua/config/nvim-treesitter.lua create mode 100644 nvim/lua/config/whichkey.lua create mode 100644 nvim/lua/config/winshift.lua create mode 100644 nvim/lua/diag.lua create mode 100644 nvim/lua/key_bindings.lua create mode 100644 nvim/lua/plugins.lua create mode 100644 nvim/plugin/packer_compiled.lua create mode 100644 nvim/static/apple.cat create mode 100644 nvim/static/htp2.cat create mode 100644 nvim/static/invaders.cat create mode 100644 nvim/static/quake.cat create mode 100644 nvim/static/tux.cat create mode 100644 nvim/static/y2k.cat create mode 100644 sxhkd.service create mode 100644 sxhkd/sxhkdrc create mode 100644 zellij/config.kdl diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index 27ee2e6..be06d16 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -135,7 +135,7 @@ require('aerial').setup({ attach_mode = "global", close_automatic_events = {"switch_buffer"}, float = { - relative = "editor", + relative = "win", override = function(conf) local padding = 1 conf.anchor = 'NE' diff --git a/.config/zellij/config.kdl b/.config/zellij/config.kdl new file mode 100644 index 0000000..44c4cda --- /dev/null +++ b/.config/zellij/config.kdl @@ -0,0 +1,276 @@ +// If you'd like to override the default keybindings completely, be sure to change "keybinds" to "keybinds clear-defaults=true" +keybinds { + normal { + // uncomment this and adjust key if using copy_on_select=false + // bind "Alt c" { Copy; } + } + locked { + bind "Ctrl g" { SwitchToMode "Normal"; } + } + resize { + bind "Ctrl n" { SwitchToMode "Normal"; } + bind "h" "Left" { Resize "Left"; } + bind "j" "Down" { Resize "Down"; } + bind "k" "Up" { Resize "Up"; } + bind "l" "Right" { Resize "Right"; } + bind "=" "+" { Resize "Increase"; } + bind "-" { Resize "Decrease"; } + } + pane { + bind "Ctrl p" { SwitchToMode "Normal"; } + bind "h" "Left" { MoveFocus "Left"; } + bind "l" "Right" { MoveFocus "Right"; } + bind "j" "Down" { MoveFocus "Down"; } + bind "k" "Up" { MoveFocus "Up"; } + bind "p" { SwitchFocus; } + bind "n" { NewPane; SwitchToMode "Normal"; } + bind "d" { NewPane "Down"; SwitchToMode "Normal"; } + bind "r" { NewPane "Right"; SwitchToMode "Normal"; } + bind "x" { CloseFocus; SwitchToMode "Normal"; } + bind "f" { ToggleFocusFullscreen; SwitchToMode "Normal"; } + bind "z" { TogglePaneFrames; SwitchToMode "Normal"; } + bind "w" { ToggleFloatingPanes; SwitchToMode "Normal"; } + bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "Normal"; } + bind "c" { SwitchToMode "RenamePane"; PaneNameInput 0;} + } + move { + bind "Ctrl h" { SwitchToMode "Normal"; } + bind "n" "Tab" { MovePane; } + bind "h" "Left" { MovePane "Left"; } + bind "j" "Down" { MovePane "Down"; } + bind "k" "Up" { MovePane "Up"; } + bind "l" "Right" { MovePane "Right"; } + } + tab { + bind "Ctrl t" { SwitchToMode "Normal"; } + bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; } + bind "h" "Left" "Up" "k" { GoToPreviousTab; } + bind "l" "Right" "Down" "j" { GoToNextTab; } + bind "n" { NewTab; SwitchToMode "Normal"; } + bind "x" { CloseTab; SwitchToMode "Normal"; } + bind "s" { ToggleActiveSyncTab; SwitchToMode "Normal"; } + bind "1" { GoToTab 1; SwitchToMode "Normal"; } + bind "2" { GoToTab 2; SwitchToMode "Normal"; } + bind "3" { GoToTab 3; SwitchToMode "Normal"; } + bind "4" { GoToTab 4; SwitchToMode "Normal"; } + bind "5" { GoToTab 5; SwitchToMode "Normal"; } + bind "6" { GoToTab 6; SwitchToMode "Normal"; } + bind "7" { GoToTab 7; SwitchToMode "Normal"; } + bind "8" { GoToTab 8; SwitchToMode "Normal"; } + bind "9" { GoToTab 9; SwitchToMode "Normal"; } + bind "Tab" { ToggleTab; } + } + scroll { + bind "Ctrl s" { SwitchToMode "Normal"; } + bind "e" { EditScrollback; SwitchToMode "Normal"; } + bind "s" { SwitchToMode "EnterSearch"; SearchInput 0; } + bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; } + bind "j" "Down" { ScrollDown; } + bind "k" "Up" { ScrollUp; } + bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; } + bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; } + bind "d" { HalfPageScrollDown; } + bind "u" { HalfPageScrollUp; } + // uncomment this and adjust key if using copy_on_select=false + // bind "Alt c" { Copy; } + } + search { + bind "Ctrl s" { SwitchToMode "Normal"; } + bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; } + bind "j" "Down" { ScrollDown; } + bind "k" "Up" { ScrollUp; } + bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; } + bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; } + bind "d" { HalfPageScrollDown; } + bind "u" { HalfPageScrollUp; } + bind "n" { Search "down"; } + bind "p" { Search "up"; } + bind "c" { SearchToggleOption "CaseSensitivity"; } + bind "w" { SearchToggleOption "Wrap"; } + bind "o" { SearchToggleOption "WholeWord"; } + } + entersearch { + bind "Ctrl c" "Esc" { SwitchToMode "Scroll"; } + bind "Enter" { SwitchToMode "Search"; } + } + renametab { + bind "Ctrl c" { SwitchToMode "Normal"; } + bind "Esc" { UndoRenameTab; SwitchToMode "Tab"; } + } + renamepane { + bind "Ctrl c" { SwitchToMode "Normal"; } + bind "Esc" { UndoRenamePane; SwitchToMode "Pane"; } + } + session { + bind "Ctrl o" { SwitchToMode "Normal"; } + bind "Ctrl s" { SwitchToMode "Scroll"; } + bind "d" { Detach; } + } + tmux { + bind "[" { SwitchToMode "Scroll"; } + bind "Ctrl b" { Write 2; SwitchToMode "Normal"; } + bind "\"" { NewPane "Down"; SwitchToMode "Normal"; } + bind "%" { NewPane "Right"; SwitchToMode "Normal"; } + bind "z" { ToggleFocusFullscreen; SwitchToMode "Normal"; } + bind "c" { NewTab; SwitchToMode "Normal"; } + bind "," { SwitchToMode "RenameTab"; } + bind "p" { GoToPreviousTab; SwitchToMode "Normal"; } + bind "n" { GoToNextTab; SwitchToMode "Normal"; } + bind "Left" { MoveFocus "Left"; SwitchToMode "Normal"; } + bind "Right" { MoveFocus "Right"; SwitchToMode "Normal"; } + bind "Down" { MoveFocus "Down"; SwitchToMode "Normal"; } + bind "Up" { MoveFocus "Up"; SwitchToMode "Normal"; } + bind "h" { MoveFocus "Left"; SwitchToMode "Normal"; } + bind "l" { MoveFocus "Right"; SwitchToMode "Normal"; } + bind "j" { MoveFocus "Down"; SwitchToMode "Normal"; } + bind "k" { MoveFocus "Up"; SwitchToMode "Normal"; } + bind "o" { FocusNextPane; } + bind "d" { Detach; } + } + shared_except "locked" { + bind "Ctrl g" { SwitchToMode "Locked"; } + bind "Ctrl q" { Quit; } + bind "Alt n" { NewPane; } + bind "Alt h" "Alt Left" { MoveFocusOrTab "Left"; } + bind "Alt l" "Alt Right" { MoveFocusOrTab "Right"; } + bind "Alt j" "Alt Down" { MoveFocus "Down"; } + bind "Alt k" "Alt Up" { MoveFocus "Up"; } + bind "Alt =" "Alt +" { Resize "Increase"; } + bind "Alt -" { Resize "Decrease"; } + } + shared_except "normal" "locked" { + bind "Enter" "Esc" { SwitchToMode "Normal"; } + } + shared_except "pane" "locked" { + bind "Ctrl p" { SwitchToMode "Pane"; } + } + shared_except "resize" "locked" { + bind "Ctrl n" { SwitchToMode "Resize"; } + } + shared_except "scroll" "locked" { + bind "Ctrl s" { SwitchToMode "Scroll"; } + } + shared_except "session" "locked" { + bind "Ctrl o" { SwitchToMode "Session"; } + } + shared_except "tab" "locked" { + bind "Ctrl t" { SwitchToMode "Tab"; } + } + shared_except "move" "locked" { + bind "Ctrl h" { SwitchToMode "Move"; } + } + shared_except "tmux" "locked" { + bind "Ctrl b" { SwitchToMode "Tmux"; } + } +} + +plugins { + tab-bar { path "tab-bar"; } + status-bar { path "status-bar"; } + strider { path "strider"; } + compact-bar { path "compact-bar"; } +} + +// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP +// eg. when terminal window with an active zellij session is closed +// Options: +// - detach (Default) +// - quit +// +// on_force_close "quit" + +// Send a request for a simplified ui (without arrow fonts) to plugins +// Options: +// - true +// - false (Default) +// +// simplified_ui true + +// Choose the path to the default shell that zellij will use for opening new panes +// Default: $SHELL +// +// default_shell "fish" + +// Toggle between having pane frames around the panes +// Options: +// - true (default) +// - false +// +// pane_frames true + +// Define color themes for Zellij +// For more examples, see: https://github.com/zellij-org/zellij/tree/main/example/themes +// Once these themes are defined, one of them should to be selected in the "theme" section of this file +// +themes { + dracula { + fg 248 248 242 + bg 40 42 54 + red 255 85 85 + green 80 250 123 + yellow 241 250 140 + blue 98 114 164 + magenta 255 121 198 + orange 255 184 108 + cyan 139 233 253 + black 0 0 0 + white 255 255 255 + } + } + +// Choose the theme that is specified in the themes section. +// Default: default +// +theme "dracula" + +// The name of the default layout to load on startup +// Default: "default" +// +// default_layout "compact" + +// Choose the mode that zellij uses when starting up. +// Default: normal +// +// default_mode "locked" + +// Toggle enabling the mouse mode. +// On certain configurations, or terminals this could +// potentially interfere with copying text. +mouse_mode true +scroll_buffer_size 20000 + +copy_command "xclip -selection clipboard" // x11 +// copy_command "wl-copy" // wayland +// copy_command "pbcopy" // osx + +// Choose the destination for copied text +// Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard. +// Does not apply when using copy_command. +// Options: +// - system (default) +// - primary +// +// copy_clipboard "primary" + +// Enable or disable automatic copy (and clear) of selection when releasing mouse +// Default: true +// +// copy_on_select false +copy_on_select true +// Path to the default editor to use to edit pane scrollbuffer +// Default: $EDITOR or $VISUAL +// +// scrollback_editor "/usr/bin/vim" + +// When attaching to an existing session with other users, +// should the session be mirrored (true) +// or should each user have their own cursor (false) +// Default: false +// +// mirror_session true + +// The folder in which Zellij will look for layouts +// +// layout_dir "/path/to/my/layout_dir" + +theme_dir "/home/mr0xb/.config/zellij_cfg/themes" diff --git a/alacritty/alacritty.yml b/alacritty/alacritty.yml new file mode 100644 index 0000000..6f9c6b0 --- /dev/null +++ b/alacritty/alacritty.yml @@ -0,0 +1,38 @@ +shell: + program: /usr/bin/zsh + +import: + - ~/.config/alacritty/themes/dracula.yml + - ~/.config/alacritty/bindings.yml + +cursor: + style: Block + +hints: + enabled: + - regex: "(mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)[^\u0000-\u001F\u007F-\u009F<>\" {-}\\^⟨⟩`]+" + command: xdg-open + post_processing: true + mouse: + mods: Control|Shift + +window: + opacity: 0.9 + padding: + x: 5 + y: 5 + +scrolling: + history: 100000 + multiplier: 3 + +font: + normal: + family: "FuraMono Nerd Font Mono" + style: Regular + bold: + family: "FuraMono Nerd Font Mono" + style: Bold + italic: + family: "FuraMono Nerd Font Mono" + style: Bold diff --git a/alacritty/bindings.yml b/alacritty/bindings.yml new file mode 100644 index 0000000..ad27656 --- /dev/null +++ b/alacritty/bindings.yml @@ -0,0 +1,2 @@ +mouse_bindings: + - { mouse: Right, action: CopySelection } diff --git a/alacritty/themes/dracula.yml b/alacritty/themes/dracula.yml new file mode 100644 index 0000000..529782f --- /dev/null +++ b/alacritty/themes/dracula.yml @@ -0,0 +1,61 @@ +# Dracula theme for Alacritty +# https://draculatheme.com/alacritty +# +# Color palette +# https://spec.draculatheme.com +# +# Template +# https://github.com/alacritty/alacritty/blob/master/alacritty.yml + +colors: + primary: + background: '#282a36' + foreground: '#f8f8f2' + bright_foreground: '#ffffff' + cursor: + text: CellBackground + cursor: CellForeground + vi_mode_cursor: + text: CellBackground + cursor: CellForeground + search: + matches: + foreground: '#44475a' + background: '#50fa7b' + focused_match: + foreground: '#44475a' + background: '#ffb86c' + footer_bar: + background: '#282a36' + foreground: '#f8f8f2' + hints: + start: + foreground: '#282a36' + background: '#f1fa8c' + end: + foreground: '#f1fa8c' + background: '#282a36' + line_indicator: + foreground: None + background: None + selection: + text: CellForeground + background: '#44475a' + normal: + black: '#21222c' + red: '#ff5555' + green: '#50fa7b' + yellow: '#f1fa8c' + blue: '#bd93f9' + magenta: '#ff79c6' + cyan: '#8be9fd' + white: '#f8f8f2' + bright: + black: '#6272a4' + red: '#ff6e6e' + green: '#69ff94' + yellow: '#ffffa5' + blue: '#d6acff' + magenta: '#ff92df' + cyan: '#a4ffff' + white: '#ffffff' diff --git a/nvim/init.lua b/nvim/init.lua new file mode 100644 index 0000000..be06d16 --- /dev/null +++ b/nvim/init.lua @@ -0,0 +1,159 @@ +local api = vim.api +local g = vim.g +local opt = vim.opt +local BUFFER = vim.bo +local GLOBAL = vim.o +local WINDOW = vim.wo + +local function set_all(option, scope, value) + scope[option] = value +end + +api.nvim_set_keymap("", "", "", { noremap = true, silent = true }) + +require('plugins') +require('config.colors') +require('key_bindings') +diagnostics = require('diag') +vim.cmd[[ + autocmd CursorMoved * :lua diagnostics.echo_diagnostic() +]] + + +local options = { + {option='loaded', scope=g, value=1}, + {option='mapleader', scope=g, value=" "}, + {option='maplocalleader', scope=g, value = " "}, + {option='loaded_netrwPlugin', scope=g, value=1}, + {option='indentLine_fileTypeExclude', scope=g, value = {'dashboard'}}, + --tabs,spacing & formatting + {option='tabstop', scope=GLOBAL, value=2}, + {option='shiftwidth', scope=GLOBAL, value=2}, + {option='expandtab', scope=GLOBAL, value=true}, + {option='smartcase', scope=GLOBAL, value=true}, + {option='shiftround', scope=GLOBAL, value=true}, + {option='ignorecase', scope=GLOBAL, value=true}, + -- display options + {option='number', scope=GLOBAL, value=true}, + {option='hlsearch', scope=GLOBAL, value=true}, + {option='timeoutlen', scope=GLOBAL, value=300}, -- Time in milliseconds to wait for mapped seq to complete. + {option='updatetime', scope=GLOBAL, value=250}, -- Decrease update time + {option='cursorline', scope=GLOBAL, value=true}, + {option='signcolumn', scope=GLOBAL, value='yes'}, + {option='breakindent', scope=GLOBAL, value=true}, + {option='termguicolors', scope=GLOBAL, value=true}, + {option='relativenumber', scope=GLOBAL, value=true}, + {option='guicursor', scope=GLOBAL, value="n-v:block,i-c-ci-ve:ver25,r-cr:hor20,o:hor50,i:blinkwait700-blinkoff400-blinkon250-Cursor/lCursor,sm:block-blinkwait175-blinkoff150-blinkon175"}, + + -- undo, history, etc + {option='mouse', scope=GLOBAL, value='a'}, + {option='undofile', scope=GLOBAL, value=true}, + {option='undodir', scope=GLOBAL, value=vim.fn.stdpath('config') .. '/undodir'}, + + -- misc + {option='clipboard', scope=GLOBAL, value='unnamedplus'}, +} +for _, args in pairs(options) do + set_all(args.option, args.scope, args.value) +end + +-- highlight selection on yank +vim.cmd [[ + augroup YankHighlight + autocmd! + autocmd TextYankPost * silent! lua vim.highlight.on_yank() + augroup end +]] + +vim.cmd[[colorscheme dracula]] +require('aerial').setup({ + backends = { "lsp", "treesitter", "markdown" }, + show_guides = true, + border = "double", + filter_kind = { + "Array", + "Boolean", + "Class", + "Constant", + "Constructor", + "Enum", + "EnumMember", + "Event", + "Field", + "File", + "Function", + "Interface", + "Key", + "Method", + "Module", + "Namespace", + "Null", + "Number", + "Object", + "Operator", + "Package", + "Property", + "String", + "Struct", + "TypeParameter", + "Variable", + }, + icons = { + Array = "", + Boolean = "⊨", + Class = "", + Constant = "", + Constructor = "", + Key = "", + Function = "", + Method = "ƒ", + Namespace = "", + Null = "NULL", + Number = "#", + Object = "⦿", + Property = "", + TypeParameter = "𝙏", + Variable = "", + Enum = "ℰ", + Package = "", + EnumMember = "", + File = "", + Module = "", + Field = "", + Interface = "ﰮ", + String = "𝓐", + Struct = "𝓢", + Event = "", + Operator = "+", + }, + guides = { + mid_item = "├ ", + last_item = "└ ", + nested_top = "│ ", + whitespace = " ", + }, + attach_mode = "global", + close_automatic_events = {"switch_buffer"}, + float = { + relative = "win", + override = function(conf) + local padding = 1 + conf.anchor = 'NE' + conf.row = padding + conf.col = vim.api.nvim_win_get_width(0) - padding + return conf + end, + }, + on_attach = function(bufnr) + -- Jump forwards/backwards with '{' and '}' + vim.keymap.set("n", "{", "AerialPrev", { buffer = bufnr, desc = "Jump backwards in Aerial" }) + vim.keymap.set("n", "}", "AerialNext", { buffer = bufnr, desc = "Jump forwards in Aerial" }) + -- Jump up the tree with '[[' or ']]' + vim.keymap.set("n", "[[", "AerialPrevUp", { buffer = bufnr, desc = "Jump up and backwards in Aerial" }) + vim.keymap.set("n", "]]", "AerialNextUp", { buffer = bufnr, desc = "Jump up and forwards in Aerial" }) + end, + }) +vim.api.nvim_exec( +[[ + au! WinLeave *.rs AerialCloseAll +]], false) diff --git a/nvim/lua/config/_template.lua b/nvim/lua/config/_template.lua new file mode 100644 index 0000000..bcbe5fb --- /dev/null +++ b/nvim/lua/config/_template.lua @@ -0,0 +1,12 @@ +local M = {} + +function M.setup() + local {PLUGIN} = require({PLUGIN}) + local conf = { + conf = { + + } + } + {PLUGIN}.setup(conf) +end +return M diff --git a/nvim/lua/config/aerial.lua.bak b/nvim/lua/config/aerial.lua.bak new file mode 100644 index 0000000..fef4fee --- /dev/null +++ b/nvim/lua/config/aerial.lua.bak @@ -0,0 +1,261 @@ +local M = {} + +function M.setup() + local aerial = require("aerial") + local conf = { + backends = { "treesitter", "lsp", "markdown", "man" }, + float = { + relative = "editor", + override = function(conf) + local padding = 4 + conf.anchor = 'NE' + conf.row = padding + conf.col = vim.o.columns - padding + return conf + end, + }, + layout = { + -- These control the width of the aerial window. + -- They can be integers or a float between 0 and 1 (e.g. 0.4 for 40%) + -- min_width and max_width can be a list of mixed types. + -- max_width = {40, 0.2} means "the lesser of 40 columns or 20% of total" + max_width = { 80, 0.2 }, + width = nil, + min_width = 40, + + -- key-value pairs of window-local options for aerial window (e.g. winhl) + win_opts = {}, + + -- Determines the default direction to open the aerial window. The 'prefer' + -- options will open the window in the other direction *if* there is a + -- different buffer in the way of the preferred direction + -- Enum: prefer_right, prefer_left, right, left, float + default_direction = "right", + + -- Determines where the aerial window will be opened + -- edge - open aerial at the far right/left of the editor + -- window - open aerial to the right/left of the current window + placement = "edge", + }, + + -- Determines how the aerial window decides which buffer to display symbols for + -- window - aerial window will display symbols for the buffer in the window from which it was opened + -- global - aerial window will display symbols for the current window + attach_mode = "global", + + -- List of enum values that configure when to auto-close the aerial window + -- unfocus - close aerial when you leave the original source window + -- switch_buffer - close aerial when you change buffers in the source window + -- unsupported - close aerial when attaching to a buffer that has no symbol source + close_automatic_events = {}, + + -- Keymaps in aerial window. Can be any value that `vim.keymap.set` accepts OR a table of keymap + -- options with a `callback` (e.g. { callback = function() ... end, desc = "", nowait = true }) + -- Additionally, if it is a string that matches "aerial.", + -- it will use the mapping at require("aerial.action"). + -- Set to `false` to remove a keymap + keymaps = { + ["?"] = "actions.show_help", + ["g?"] = "actions.show_help", + [""] = "actions.jump", + ["<2-LeftMouse>"] = "actions.jump", + [""] = "actions.jump_vsplit", + [""] = "actions.jump_split", + ["p"] = "actions.scroll", + [""] = "actions.down_and_scroll", + [""] = "actions.up_and_scroll", + ["{"] = "actions.prev", + ["}"] = "actions.next", + ["[["] = "actions.prev_up", + ["]]"] = "actions.next_up", + ["q"] = "actions.close", + ["o"] = "actions.tree_toggle", + ["za"] = "actions.tree_toggle", + ["O"] = "actions.tree_toggle_recursive", + ["zA"] = "actions.tree_toggle_recursive", + ["l"] = "actions.tree_open", + ["zo"] = "actions.tree_open", + ["L"] = "actions.tree_open_recursive", + ["zO"] = "actions.tree_open_recursive", + ["h"] = "actions.tree_close", + ["zc"] = "actions.tree_close", + ["H"] = "actions.tree_close_recursive", + ["zC"] = "actions.tree_close_recursive", + ["zr"] = "actions.tree_increase_fold_level", + ["zR"] = "actions.tree_open_all", + ["zm"] = "actions.tree_decrease_fold_level", + ["zM"] = "actions.tree_close_all", + ["zx"] = "actions.tree_sync_folds", + ["zX"] = "actions.tree_sync_folds", + }, + + -- When true, don't load aerial until a command or function is called + -- Defaults to true, unless `on_attach` is provided, then it defaults to false + lazy_load = true, + + -- Disable aerial on files with this many lines + disable_max_lines = 10000, + + -- Disable aerial on files this size or larger (in bytes) + disable_max_size = 2000000, -- Default 2MB + + -- A list of all symbols to display. Set to false to display all symbols. + -- This can be a filetype map (see :help aerial-filetype-map) + -- To see all available values, see :help SymbolKind + filter_kind = { + "Class", + "Constructor", + "Enum", + "Function", + "Interface", + "Module", + "Method", + "Struct", + }, + + -- Determines line highlighting mode when multiple splits are visible. + -- split_width Each open window will have its cursor location marked in the + -- aerial buffer. Each line will only be partially highlighted + -- to indicate which window is at that location. + -- full_width Each open window will have its cursor location marked as a + -- full-width highlight in the aerial buffer. + -- last Only the most-recently focused window will have its location + -- marked in the aerial buffer. + -- none Do not show the cursor locations in the aerial window. + highlight_mode = "split_width", + + -- Highlight the closest symbol if the cursor is not exactly on one. + highlight_closest = true, + + -- Highlight the symbol in the source buffer when cursor is in the aerial win + highlight_on_hover = false, + + -- When jumping to a symbol, highlight the line for this many ms. + -- Set to false to disable + highlight_on_jump = 300, + + -- Define symbol icons. You can also specify "Collapsed" to change the + -- icon when the tree is collapsed at that symbol, or "Collapsed" to specify a + -- default collapsed icon. The default icon set is determined by the + -- "nerd_font" option below. + -- If you have lspkind-nvim installed, it will be the default icon set. + -- This can be a filetype map (see :help aerial-filetype-map) + icons = {}, + + -- Control which windows and buffers aerial should ignore. + -- If attach_mode is "global", focusing an ignored window/buffer will + -- not cause the aerial window to update. + -- If open_automatic is true, focusing an ignored window/buffer will not + -- cause an aerial window to open. + -- If open_automatic is a function, ignore rules have no effect on aerial + -- window opening behavior; it's entirely handled by the open_automatic + -- function. + ignore = { + -- Ignore unlisted buffers. See :help buflisted + unlisted_buffers = true, + + -- List of filetypes to ignore. + filetypes = {}, + + -- Ignored buftypes. + -- Can be one of the following: + -- false or nil - No buftypes are ignored. + -- "special" - All buffers other than normal buffers are ignored. + -- table - A list of buftypes to ignore. See :help buftype for the + -- possible values. + -- function - A function that returns true if the buffer should be + -- ignored or false if it should not be ignored. + -- Takes two arguments, `bufnr` and `buftype`. + buftypes = "special", + + -- Ignored wintypes. + -- Can be one of the following: + -- false or nil - No wintypes are ignored. + -- "special" - All windows other than normal windows are ignored. + -- table - A list of wintypes to ignore. See :help win_gettype() for the + -- possible values. + -- function - A function that returns true if the window should be + -- ignored or false if it should not be ignored. + -- Takes two arguments, `winid` and `wintype`. + wintypes = "special", + }, + + -- Use symbol tree for folding. Set to true or false to enable/disable + -- Set to "auto" to manage folds if your previous foldmethod was 'manual' + -- This can be a filetype map (see :help aerial-filetype-map) + manage_folds = true, + + -- When you fold code with za, zo, or zc, update the aerial tree as well. + -- Only works when manage_folds = true + -- Fold code when you open/collapse symbols in the tree. + -- Only works when manage_folds = true + link_tree_to_folds = true, + + -- Set default symbol icons to use patched font icons (see https://www.nerdfonts.com/) + -- "auto" will set it to true if nvim-web-devicons or lspkind-nvim is installed. + nerd_font = "auto", + + -- Call this function when aerial attaches to a buffer. + on_attach = function(bufnr) end, + + -- Call this function when aerial first sets symbols on a buffer. + on_first_symbols = function(bufnr) end, + + -- Automatically open aerial when entering supported buffers. + -- This can be a function (see :help aerial-open-automatic) + open_automatic = false, + + -- Run this command after jumping to a symbol (false will disable) + post_jump_cmd = "normal! zz", + + -- When true, aerial will automatically close after jumping to a symbol + close_on_select = false, + + -- The autocmds that trigger symbols update (not used for LSP backend) + update_events = "TextChanged,InsertLeave", + + -- Show box drawing characters for the tree hierarchy + show_guides = true, + + guides = { + -- When the child item has a sibling below it + mid_item = "├─", + -- When the child item is the last in the list + last_item = "└─", + -- When there are nested child guides to the right + nested_top = "│ ", + -- Raw indentation + whitespace = " ", + }, + + lsp = { + -- Fetch document symbols when LSP diagnostics update. + -- If false, will update on buffer changes. + diagnostics_trigger_update = true, + + -- Set to false to not update the symbols when there are LSP errors + update_when_errors = true, + + -- How long to wait (in ms) after a buffer change before updating + -- Only used when diagnostics_trigger_update = false + update_delay = 300, + }, + + treesitter = { + -- How long to wait (in ms) after a buffer change before updating + update_delay = 300, + }, + + markdown = { + -- How long to wait (in ms) after a buffer change before updating + update_delay = 300, + }, + + man = { + -- How long to wait (in ms) after a buffer change before updating + update_delay = 300, + }, + } + aerial.setup(conf) +end +return M diff --git a/nvim/lua/config/aerial.lua.old b/nvim/lua/config/aerial.lua.old new file mode 100644 index 0000000..9c02756 --- /dev/null +++ b/nvim/lua/config/aerial.lua.old @@ -0,0 +1,20 @@ +local M = {} + +function M.setup() + local aerial = require("aerial") + local conf = { + backends = { "treesitter", "lsp", "markdown", "man" }, + float = { + relative = "win", + override = function(conf) + local padding = 1 + conf.anchor = 'NE' + conf.row = padding + conf.col = vim.api.nvim_win_get_width(0) - padding + return conf + end, + }, + } + aerial.setup(conf) +end +return M diff --git a/nvim/lua/config/colors.lua b/nvim/lua/config/colors.lua new file mode 100644 index 0000000..429e9d3 --- /dev/null +++ b/nvim/lua/config/colors.lua @@ -0,0 +1,23 @@ +local g = vim.g +local colors = require('dracula').colors() + +vim.cmd[[colorscheme dracula]] + +g.rainbow_guifgs = { + colors.red, + colors.orange, + colors.yellow, + colors.green, + colors.purple, + colors.cyan, + colors.pink, + colors.bright_red, + colors.bright_green, + colors.bright_yellow, + colors.bright_blue, + colors.bright_magenta, + colors.bright_cyan +} +g.rainbow_active = 1 +--vim.highlight.create('Beacon', {guibg=colors.green, guifg=colors.bg}, false) +vim.api.nvim_set_hl(0, 'Beacon', {bg=colors.green, fg=colors.bg}) diff --git a/nvim/lua/config/dashboard.lua b/nvim/lua/config/dashboard.lua new file mode 100644 index 0000000..7ffa08a --- /dev/null +++ b/nvim/lua/config/dashboard.lua @@ -0,0 +1,33 @@ +local M = {} +local home = os.getenv('HOME') + +function scandir(directory) + local i, t, popen = 0, {}, io.popen + local pfile = popen('ls "'..directory..'"') + for filename in pfile:lines() do + i = i + 1 + t[i] = filename + end + pfile:close() + return t +end + + +function M() + catTable = scandir(vim.fn.stdpath('config') .. '/static/') + math.random() + math.randomseed(os.time()+math.random()) + math.random(); math.random(); math.random(); + file = vim.fn.stdpath('config') .. '/static/' .. catTable[math.random(#catTable)] + local fheight = io.popen('cat '..file..' | wc -l') + local fwidth = io.popen('awk "{print length}" '..file..' | sort -nr | head -1') + local db = require 'dashboard' + db.preview_command = 'cat | lolcat -F 0.3 -p 15' + db.preview_file_path = file + db.preview_file_height = tonumber(fheight:read("*a")) + db.preview_file_width = tonumber(fwidth:read("*a")) + db.header_pad = 0 + + +end +return M() \ No newline at end of file diff --git a/nvim/lua/config/dracula-vim.lua b/nvim/lua/config/dracula-vim.lua new file mode 100644 index 0000000..94e49e6 --- /dev/null +++ b/nvim/lua/config/dracula-vim.lua @@ -0,0 +1,80 @@ +local M = {} + +function M.setup() + local dracula = require("dracula") + --dracula.setup({ + -- customize dracula color palette + local conf = { + -- Default dracula colors + -- colors = { + -- bg = "#282A36", + -- fg = "#F8F8F2", + -- selection = "#44475A", + -- comment = "#6272A4", + -- red = "#FF5555", + -- orange = "#FFB86C", + -- yellow = "#F1FA8C", + -- green = "#50fa7b", + -- purple = "#BD93F9", + -- cyan = "#8BE9FD", + -- pink = "#FF79C6", + -- bright_red = "#FF6E6E", + -- bright_green = "#69FF94", + -- bright_yellow = "#FFFFA5", + -- bright_blue = "#D6ACFF", + -- bright_magenta = "#FF92DF", + -- bright_cyan = "#A4FFFF", + -- bright_white = "#FFFFFF", + -- menu = "#21222C", + -- visual = "#3E4452", + -- gutter_fg = "#4B5263", + -- nontext = "#3B4048", + -- }, + -- Dracula PRO + colors = { + bg = "#393649", + fg = "#F8F8F2", + selection = "#454158", --prof = #454158 + comment = "#6272A4", --pro = #7970A9 + red = "#FF9580", + orange = "#FFCA80", + yellow = "#FFFF80", + green = "#8AFF80", + purple = "#9580FF", + cyan = "#80FFEA", + pink = "#FF80BF", + bright_red = "#FF6E6E", + bright_green = "#69FF94", + bright_yellow = "#FFFFA5", + bright_blue = "#D6ACFF", + bright_magenta = "#FF92DF", + bright_cyan = "#A4FFFF", + bright_white = "#FFFFFF", + menu = "#21222C", + visual = "#3E4452", + gutter_fg = "#4B5263", + nontext = "#3B4048", + }, + -- show the '~' characters after the end of buffers + show_end_of_buffer = true, -- default false + -- use transparent background + transparent_bg = true, -- default false + -- set custom lualine background color + lualine_bg_color = "#44475a", -- default nil + -- set italic comment + italic_comment = true, -- default false + -- overrides the default highlights see `:h synIDattr` + overrides = { + -- Examples + -- NonText = { fg = dracula.colors().white }, -- set NonText fg to white + -- NvimTreeIndentMarker = { link = "NonText" }, -- link to NonText highlight + -- Nothing = {} -- clear highlight of Nothing + }, + } + + dracula.setup(conf) + +end +-- to use colors in other places +-- local colors = require('dracula').colors() +return M \ No newline at end of file diff --git a/nvim/lua/config/lualine.lua b/nvim/lua/config/lualine.lua new file mode 100644 index 0000000..8ee0fac --- /dev/null +++ b/nvim/lua/config/lualine.lua @@ -0,0 +1,17 @@ +local M = {} + +function M.setup() + local lualine = require 'lualine' + + local conf = { + options = { + icons_enabled = true, + theme = 'dracula-nvim', + }, + sections = { + lualine_x = {"aerial"}, + } + } + lualine.setup(conf) +end +return M diff --git a/nvim/lua/config/nvim-tree.lua b/nvim/lua/config/nvim-tree.lua new file mode 100644 index 0000000..c439fe1 --- /dev/null +++ b/nvim/lua/config/nvim-tree.lua @@ -0,0 +1,46 @@ +-- require("nvim-tree").setup({ +-- disable_netrw = true, +-- hijack_netrw = true, +-- sort_by = "case_sensitive", +-- view = { +-- adaptive_size = true, +-- mappings = { +-- list = { +-- { key = "u", action = "dir_up" }, +-- }, +-- }, +-- }, +-- renderer = { +-- group_empty = true, +-- }, +-- filters = { +-- dotfiles = false, +-- }, +-- }) +local M = {} + +function M.setup() + local ntree = require 'nvim-tree' + + local conf = { + disable_netrw = true, + hijack_netrw = true, + sort_by = "case_sensitive", + view = { + adaptive_size = true, + mappings = { + list = { + { key = "u", action = "dir_up" }, + }, + }, + }, + renderer = { + group_empty = true, + }, + filters = { + dotfiles = false, + }, + } + ntree.setup(conf) +end +return M \ No newline at end of file diff --git a/nvim/lua/config/nvim-treesitter.lua b/nvim/lua/config/nvim-treesitter.lua new file mode 100644 index 0000000..d428a5f --- /dev/null +++ b/nvim/lua/config/nvim-treesitter.lua @@ -0,0 +1,61 @@ +local M = {} + +function M.setup() + local colors = require('dracula').colors() + local sitter = require("nvim-treesitter.configs") + local conf = { + ensure_installed = "all", + sync_install = false, + ignore_install = {""}, + matchup = { + enable = true, + disable_virtual_text = true, + }, + highlight = { + enable = true, + disable = {}, + additional_vim_regex_highlighting = true, + }, + autopairs = { + enable = true, + }, + indent = { + enable = true, + --disable = { + --"python", + --"css" + --} + -- + }, + audotag = { + enable = true, + disable = { + "xml", + "markdown", + }, + }, + rainbow = { + enable = true, + extended_mode = false, + colors = { + colors.red, + colors.orange, + colors.yellow, + colors.green, + colors.purple, + colors.cyan, + colors.pink, + colors.bright_red, + colors.bright_green, + colors.bright_yellow, + colors.bright_blue, + colors.bright_magenta, + colors.bright_cyan + }, + }, + } + sitter.setup(conf) +end + +return M + diff --git a/nvim/lua/config/whichkey.lua b/nvim/lua/config/whichkey.lua new file mode 100644 index 0000000..f59ba56 --- /dev/null +++ b/nvim/lua/config/whichkey.lua @@ -0,0 +1,63 @@ +local M = {} + + +function M.setup() + local whichkey = require "which-key" + + local conf = { + window = { + border = "single", -- none, single, double, shadow + position = "bottom", -- bottom, top + }, + } + + local opts = { + mode = "n", -- Normal mode + prefix = "", + buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings + silent = true, -- use `silent` when creating keymaps + noremap = true, -- use `noremap` when creating keymaps + nowait = false, -- use `nowait` when creating keymaps + } + + local mappings = { + ["w"] = { "update!", "Save" }, + ["q"] = { "q!", "Quit" }, + ["e"] = { "NvimTreeToggle", "Nvim Tree"}, + ["a"] = { "AerialToggle! float","Aerial Toggle"}, + + o = { + name = "+open", + }, + + b = { + name = "Buffer", + c = { "bd!", "Close current buffer" }, + D = { "%bd|e#|bd#", "Delete all buffers" }, + }, + + z = { + name = "Packer", + c = { "PackerCompile", "Compile" }, + i = { "PackerInstall", "Install" }, + s = { "PackerSync", "Sync" }, + S = { "PackerStatus", "Status" }, + u = { "PackerUpdate", "Update" }, + }, + + g = { + name = "Git", + s = { "Neogit", "Status" }, + }, + + v = { + name = "Visual", + r = { "RainbowToggle", "Rainbow Brackets Toggle"}, + }, + } + + whichkey.setup(conf) + whichkey.register(mappings, opts) +end + +return M diff --git a/nvim/lua/config/winshift.lua b/nvim/lua/config/winshift.lua new file mode 100644 index 0000000..65383e9 --- /dev/null +++ b/nvim/lua/config/winshift.lua @@ -0,0 +1,20 @@ +local M = {} + +function M.setup() + local winshift = require("winshift") + local conf = { + conf = { + highlight_moving_win = true, --hl window when being moved + focused_hl_group = "Visual", -- hl group for moving window + moving_win_options = { + wrap = false, + cursorline = false, + cusorcolumn = false, + colorcolumn = "", + } + + } + } + winshift.setup(conf) +end +return M diff --git a/nvim/lua/diag.lua b/nvim/lua/diag.lua new file mode 100644 index 0000000..4fcaaec --- /dev/null +++ b/nvim/lua/diag.lua @@ -0,0 +1,153 @@ +-- Echoing of LSP diagnostics in the commandline. + +local M = {} + +-- Location information about the last message printed. The format is + +-- `(did print, buffer number, line number)`. + +local last_echo = { false, -1, -1 } + +-- The timer used for displaying a diagnostic in the commandline. + +local echo_timer = nil + +-- The timer after which to display a diagnostic in the commandline. + +local echo_timeout = 250 + +-- The highlight group to use for warning messages. + +local warning_hlgroup = 'WarningMsg' + +-- The highlight group to use for error messages. + +local error_hlgroup = 'ErrorMsg' + +-- If the first diagnostic line has fewer than this many characters, also add + +-- the second line to it. + +local short_line_limit = 20 + +-- Shows the current line's diagnostics in a floating window. + +function M.show_line_diagnostics() + + vim + + .lsp + + .diagnostic + + .show_line_diagnostics({ severity_limit = 'Warning' }, vim.fn.bufnr('')) + +end + +-- Prints the first diagnostic for the current line. + +function M.echo_diagnostic() + + if echo_timer then + + echo_timer:stop() + + end + + echo_timer = vim.defer_fn( + + function() + + local line = vim.fn.line('.') - 1 + + local bufnr = vim.api.nvim_win_get_buf(0) + + if last_echo[1] and last_echo[2] == bufnr and last_echo[3] == line then + + return + + end + + local diags = vim + + .lsp + + .diagnostic + + .get_line_diagnostics(bufnf, line, { severity_limit = 'Warning' }) + + if #diags == 0 then + + -- If we previously echo'd a message, clear it out by echoing an empty + + -- message. + + if last_echo[1] then + + last_echo = { false, -1, -1 } + + vim.api.nvim_command('echo ""') + + end + + return + + end + + last_echo = { true, bufnr, line } + + local diag = diags[1] + + local width = vim.api.nvim_get_option('columns') - 15 + + local lines = vim.split(diag.message, "\n") + + local message = lines[1] + + local trimmed = false + + if #lines > 1 and #message <= short_line_limit then + + message = message .. ' ' .. lines[2] + + end + + if width > 0 and #message >= width then + + message = message:sub(1, width) .. '...' + + end + + local kind = 'warning' + + local hlgroup = warning_hlgroup + + if diag.severity == vim.lsp.protocol.DiagnosticSeverity.Error then + + kind = 'error' + + hlgroup = error_hlgroup + + end + + local chunks = { + + { kind .. ': ', hlgroup }, + + { message } + + } + + vim.api.nvim_echo(chunks, false, {}) + + end, + + echo_timeout + + ) + +end + +return M + + diff --git a/nvim/lua/key_bindings.lua b/nvim/lua/key_bindings.lua new file mode 100644 index 0000000..9d1cac4 --- /dev/null +++ b/nvim/lua/key_bindings.lua @@ -0,0 +1,22 @@ +local keymap = vim.api.nvim_set_keymap +local default_opts = { noremap = true, silent = true } +local expr_opts = { noremap = true, expr = true, silent = true } + +-- Better escape using jk in insert and terminal mode +keymap("i", "jk", "", default_opts) +keymap("t", "jk", "", default_opts) +-- Center search results +keymap("n", "n", "nzz", default_opts) +keymap("n", "N", "Nzz", default_opts) +-- Paste over currently selected text without yanking it +keymap("v", "p", '"_dP', default_opts) +-- Cancel search highlighting with ESC +keymap("n", "", ":nohlsearch:echo", default_opts) +-- Move selected line / block of text in visual mode +keymap("x", "K", ":move '<-2gv-gv", default_opts) +keymap("x", "J", ":move '>+1gv-gv", default_opts) +-- Resizing panes +keymap("n", "", ":vertical resize +1", default_opts) +keymap("n", "", ":vertical resize -1", default_opts) +keymap("n", "", ":resize -1", default_opts) +keymap("n", "", ":resize +1", default_opts) diff --git a/nvim/lua/plugins.lua b/nvim/lua/plugins.lua new file mode 100644 index 0000000..7b32fef --- /dev/null +++ b/nvim/lua/plugins.lua @@ -0,0 +1,148 @@ +local M = {} + +function M.setup() + -- Indicate first time installation + local packer_bootstrap = false + -- packer.nvim configuration + -- + local conf = { + display = { + open_fn = function() + return require("packer.util").float { border = "rounded" } + end, + }, + } + + -- Check if packer.nvim is installed + -- Run PackerCompile if there are changes in this file + local function packer_init() + local fn = vim.fn + local install_path = fn.stdpath "data" .. "/site/pack/packer/start/packer.nvim" + if fn.empty(fn.glob(install_path)) > 0 then + packer_bootstrap = fn.system { + "git", + "clone", + "--depth", + "1", + "https://github.com/wbthomason/packer.nvim", + install_path, + } + vim.cmd [[packadd packer.nvim]] + end + vim.cmd "autocmd BufWritePost plugins.lua source | PackerCompile" + end + -- Plugins + local function plugins(use) + use { "wbthomason/packer.nvim" } + -- rainbow brackets + use { 'frazrepo/vim-rainbow' } + use { "p00f/nvim-ts-rainbow" } + use { "tpope/vim-surround" } + use { "danilamihailov/beacon.nvim" } + use { + 'VonHeikemen/lsp-zero.nvim', + requires = { + -- LSP Support + {'neovim/nvim-lspconfig'}, + {'williamboman/mason.nvim'}, + {'williamboman/mason-lspconfig.nvim'}, + + -- Autocompletion + {'hrsh7th/nvim-cmp'}, + {'hrsh7th/cmp-buffer'}, + {'hrsh7th/cmp-path'}, + {'saadparwaiz1/cmp_luasnip'}, + {'hrsh7th/cmp-nvim-lsp'}, + {'hrsh7th/cmp-nvim-lua'}, + + -- Snippets + {'L3MON4D3/LuaSnip'}, + {'rafamadriz/friendly-snippets'}, + } + } + + use { + 'nvim-treesitter/nvim-treesitter', + run = function() + require('nvim-treesitter.install').update({ with_sync = true }) + end, + config = function() + require('config.nvim-treesitter').setup() + end, + } + use { + 'stevearc/aerial.nvim', + } + use { + 'sindrets/winshift.nvim', + config = function() + require('config.winshift').setup() + end, + } + -- Better icons + use { + "kyazdani42/nvim-web-devicons", + module = "nvim-web-devicons", + config = function() + require("nvim-web-devicons").setup { default = true } + end, + } + -- dracula-vim + use { + 'Mofiqul/dracula.nvim', + config = function() + require('config.dracula-vim').setup() + end, + } + -- nvim-tree + use { + 'kyazdani42/nvim-tree.lua', + config = function() + require('config.nvim-tree').setup() + end, + } + + -- lua-line + use { + 'nvim-lualine/lualine.nvim', + config = function() + require("config.lualine").setup() + end, + } + + -- WhichKey + use { + "folke/which-key.nvim", + config = function() + require("config.whichkey").setup() + end, + } + + --dashboard-nvim + use { + 'glepnir/dashboard-nvim', + config = function() + require("config.dashboard") + end, + } + -- Bootstrap Neovim + if packer_bootstrap then + print "Restart Neovim required after installation!" + require("packer").sync() + end + end + + packer_init() + + local packer = require "packer" + packer.init(conf) + packer.startup(plugins) + local lsp = require('lsp-zero') + lsp.preset('recommended') + lsp.nvim_workspace() + lsp.setup{ + on_attach = require("aerial").on_attach, + } +end + +return M.setup() diff --git a/nvim/plugin/packer_compiled.lua b/nvim/plugin/packer_compiled.lua new file mode 100644 index 0000000..81fe0dd --- /dev/null +++ b/nvim/plugin/packer_compiled.lua @@ -0,0 +1,290 @@ +-- Automatically generated packer.nvim plugin loader code + +if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then + vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"') + return +end + +vim.api.nvim_command('packadd packer.nvim') + +local no_errors, error_msg = pcall(function() + +_G._packer = _G._packer or {} +_G._packer.inside_compile = true + +local time +local profile_info +local should_profile = false +if should_profile then + local hrtime = vim.loop.hrtime + profile_info = {} + time = function(chunk, start) + if start then + profile_info[chunk] = hrtime() + else + profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6 + end + end +else + time = function(chunk, start) end +end + +local function save_profiles(threshold) + local sorted_times = {} + for chunk_name, time_taken in pairs(profile_info) do + sorted_times[#sorted_times + 1] = {chunk_name, time_taken} + end + table.sort(sorted_times, function(a, b) return a[2] > b[2] end) + local results = {} + for i, elem in ipairs(sorted_times) do + if not threshold or threshold and elem[2] > threshold then + results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms' + end + end + if threshold then + table.insert(results, '(Only showing plugins that took longer than ' .. threshold .. ' ms ' .. 'to load)') + end + + _G._packer.profile_output = results +end + +time([[Luarocks path setup]], true) +local package_path_str = "/home/mr0xb/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?.lua;/home/mr0xb/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?/init.lua;/home/mr0xb/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?.lua;/home/mr0xb/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?/init.lua" +local install_cpath_pattern = "/home/mr0xb/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/lua/5.1/?.so" +if not string.find(package.path, package_path_str, 1, true) then + package.path = package.path .. ';' .. package_path_str +end + +if not string.find(package.cpath, install_cpath_pattern, 1, true) then + package.cpath = package.cpath .. ';' .. install_cpath_pattern +end + +time([[Luarocks path setup]], false) +time([[try_loadstring definition]], true) +local function try_loadstring(s, component, name) + local success, result = pcall(loadstring(s), name, _G.packer_plugins[name]) + if not success then + vim.schedule(function() + vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {}) + end) + end + return result +end + +time([[try_loadstring definition]], false) +time([[Defining packer_plugins]], true) +_G.packer_plugins = { + LuaSnip = { + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/LuaSnip", + url = "https://github.com/L3MON4D3/LuaSnip" + }, + ["aerial.nvim"] = { + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/aerial.nvim", + url = "https://github.com/stevearc/aerial.nvim" + }, + ["beacon.nvim"] = { + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/beacon.nvim", + url = "https://github.com/danilamihailov/beacon.nvim" + }, + ["cmp-buffer"] = { + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/cmp-buffer", + url = "https://github.com/hrsh7th/cmp-buffer" + }, + ["cmp-nvim-lsp"] = { + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp", + url = "https://github.com/hrsh7th/cmp-nvim-lsp" + }, + ["cmp-nvim-lua"] = { + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/cmp-nvim-lua", + url = "https://github.com/hrsh7th/cmp-nvim-lua" + }, + ["cmp-path"] = { + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/cmp-path", + url = "https://github.com/hrsh7th/cmp-path" + }, + cmp_luasnip = { + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/cmp_luasnip", + url = "https://github.com/saadparwaiz1/cmp_luasnip" + }, + ["dashboard-nvim"] = { + config = { "\27LJ\2\n0\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\21config.dashboard\frequire\0" }, + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/dashboard-nvim", + url = "https://github.com/glepnir/dashboard-nvim" + }, + ["dracula.nvim"] = { + config = { "\27LJ\2\n@\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\23config.dracula-vim\frequire\0" }, + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/dracula.nvim", + url = "https://github.com/Mofiqul/dracula.nvim" + }, + ["friendly-snippets"] = { + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/friendly-snippets", + url = "https://github.com/rafamadriz/friendly-snippets" + }, + ["lsp-zero.nvim"] = { + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/lsp-zero.nvim", + url = "https://github.com/VonHeikemen/lsp-zero.nvim" + }, + ["lualine.nvim"] = { + config = { "\27LJ\2\n<\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\19config.lualine\frequire\0" }, + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/lualine.nvim", + url = "https://github.com/nvim-lualine/lualine.nvim" + }, + ["mason-lspconfig.nvim"] = { + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/mason-lspconfig.nvim", + url = "https://github.com/williamboman/mason-lspconfig.nvim" + }, + ["mason.nvim"] = { + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/mason.nvim", + url = "https://github.com/williamboman/mason.nvim" + }, + ["nvim-cmp"] = { + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/nvim-cmp", + url = "https://github.com/hrsh7th/nvim-cmp" + }, + ["nvim-lspconfig"] = { + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/nvim-lspconfig", + url = "https://github.com/neovim/nvim-lspconfig" + }, + ["nvim-tree.lua"] = { + config = { "\27LJ\2\n>\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\21config.nvim-tree\frequire\0" }, + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/nvim-tree.lua", + url = "https://github.com/kyazdani42/nvim-tree.lua" + }, + ["nvim-treesitter"] = { + config = { "\27LJ\2\nD\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\27config.nvim-treesitter\frequire\0" }, + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/nvim-treesitter", + url = "https://github.com/nvim-treesitter/nvim-treesitter" + }, + ["nvim-ts-rainbow"] = { + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/nvim-ts-rainbow", + url = "https://github.com/p00f/nvim-ts-rainbow" + }, + ["nvim-web-devicons"] = { + config = { "\27LJ\2\nO\0\0\3\0\4\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\3\0B\0\2\1K\0\1\0\1\0\1\fdefault\2\nsetup\22nvim-web-devicons\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/opt/nvim-web-devicons", + url = "https://github.com/kyazdani42/nvim-web-devicons" + }, + ["packer.nvim"] = { + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/packer.nvim", + url = "https://github.com/wbthomason/packer.nvim" + }, + ["vim-rainbow"] = { + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/vim-rainbow", + url = "https://github.com/frazrepo/vim-rainbow" + }, + ["vim-surround"] = { + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/vim-surround", + url = "https://github.com/tpope/vim-surround" + }, + ["which-key.nvim"] = { + config = { "\27LJ\2\n=\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\20config.whichkey\frequire\0" }, + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/which-key.nvim", + url = "https://github.com/folke/which-key.nvim" + }, + ["winshift.nvim"] = { + config = { "\27LJ\2\n=\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\20config.winshift\frequire\0" }, + loaded = true, + path = "/home/mr0xb/.local/share/nvim/site/pack/packer/start/winshift.nvim", + url = "https://github.com/sindrets/winshift.nvim" + } +} + +time([[Defining packer_plugins]], false) +local module_lazy_loads = { + ["^nvim%-web%-devicons"] = "nvim-web-devicons" +} +local lazy_load_called = {['packer.load'] = true} +local function lazy_load_module(module_name) + local to_load = {} + if lazy_load_called[module_name] then return nil end + lazy_load_called[module_name] = true + for module_pat, plugin_name in pairs(module_lazy_loads) do + if not _G.packer_plugins[plugin_name].loaded and string.match(module_name, module_pat) then + to_load[#to_load + 1] = plugin_name + end + end + + if #to_load > 0 then + require('packer.load')(to_load, {module = module_name}, _G.packer_plugins) + local loaded_mod = package.loaded[module_name] + if loaded_mod then + return function(modname) return loaded_mod end + end + end +end + +if not vim.g.packer_custom_loader_enabled then + table.insert(package.loaders, 1, lazy_load_module) + vim.g.packer_custom_loader_enabled = true +end + +-- Config for: winshift.nvim +time([[Config for winshift.nvim]], true) +try_loadstring("\27LJ\2\n=\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\20config.winshift\frequire\0", "config", "winshift.nvim") +time([[Config for winshift.nvim]], false) +-- Config for: lualine.nvim +time([[Config for lualine.nvim]], true) +try_loadstring("\27LJ\2\n<\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\19config.lualine\frequire\0", "config", "lualine.nvim") +time([[Config for lualine.nvim]], false) +-- Config for: dashboard-nvim +time([[Config for dashboard-nvim]], true) +try_loadstring("\27LJ\2\n0\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\21config.dashboard\frequire\0", "config", "dashboard-nvim") +time([[Config for dashboard-nvim]], false) +-- Config for: which-key.nvim +time([[Config for which-key.nvim]], true) +try_loadstring("\27LJ\2\n=\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\20config.whichkey\frequire\0", "config", "which-key.nvim") +time([[Config for which-key.nvim]], false) +-- Config for: nvim-treesitter +time([[Config for nvim-treesitter]], true) +try_loadstring("\27LJ\2\nD\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\27config.nvim-treesitter\frequire\0", "config", "nvim-treesitter") +time([[Config for nvim-treesitter]], false) +-- Config for: nvim-tree.lua +time([[Config for nvim-tree.lua]], true) +try_loadstring("\27LJ\2\n>\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\21config.nvim-tree\frequire\0", "config", "nvim-tree.lua") +time([[Config for nvim-tree.lua]], false) +-- Config for: dracula.nvim +time([[Config for dracula.nvim]], true) +try_loadstring("\27LJ\2\n@\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\23config.dracula-vim\frequire\0", "config", "dracula.nvim") +time([[Config for dracula.nvim]], false) + +_G._packer.inside_compile = false +if _G._packer.needs_bufread == true then + vim.cmd("doautocmd BufRead") +end +_G._packer.needs_bufread = false + +if should_profile then save_profiles() end + +end) + +if not no_errors then + error_msg = error_msg:gsub('"', '\\"') + vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None') +end diff --git a/nvim/static/apple.cat b/nvim/static/apple.cat new file mode 100644 index 0000000..9746203 --- /dev/null +++ b/nvim/static/apple.cat @@ -0,0 +1,26 @@ + .8 + .888 + .8888' + .8888' + 888' + 8' + .88888888888. .88888888888. + .8888888888888888888888888888888. + .8888888888888888888888888888888888. +.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&' +&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&' +&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&' +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@: +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@: +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@: +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%. +`%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%. + `00000000000000000000000000000000000' + `000000000000000000000000000000000' + `0000000000000000000000000000000' + `###########################' +jgs `#######################' + `#########''########' + `""""""' `"""""' + diff --git a/nvim/static/htp2.cat b/nvim/static/htp2.cat new file mode 100644 index 0000000..9d897e9 --- /dev/null +++ b/nvim/static/htp2.cat @@ -0,0 +1,31 @@ + + _ood>H&H&Z?#M#b-\. + .\HMMMMMR?`\M6b."`' ''``v. + .. .MMMMMMMMMMHMMM#&. ``~o. + . ,HMMMMMMMMMM`' ' ?MP?. + . |MMMMMMMMMMM' `"$b&\ + - |MMMMHH##M' HMMH? + - TTM| >.. \HMMMMH + : |MM\,#-""$~b\. `MMMMMM+ + . ``"H&# - &MMMMMM| + : *\v,#MHddc. `9MMMMMb + . MMMMMMMM##\ `"":HM + - . .HMMMMMMMMMMRo_. |M + : |MMMMMMMMMMMMMMMM#\ :M + - `HMMMMMMMMMMMMMM' |T + : `*HMMMMMMMMMMM' H' + : MMMMMMMMMMM| |T + ; MMMMMMMM?' ./ + ` MMMMMMH' ./' + - |MMMH#' . + ` `MM* . ` + _ #M: . . .-' + . ., .-' + '-.-~ooHH__,,v~--`' + + __ __ __ __ __ ____ __ __ + / / / /___ ______/ /__ / /_/ /_ ___ / __ \/ /___ _____ ___ / /_ + / /_/ / __ `/ ___/ //_/ / __/ __ \/ _ \ / /_/ / / __ `/ __ \/ _ \/ __/ + / __ / /_/ / /__/ ,< / /_/ / / / __/ / ____/ / /_/ / / / / __/ /_ +/_/ /_/\__,_/\___/_/|_| \__/_/ /_/\___/ /_/ /_/\__,_/_/ /_/\___/\__/ + diff --git a/nvim/static/invaders.cat b/nvim/static/invaders.cat new file mode 100644 index 0000000..ce53487 --- /dev/null +++ b/nvim/static/invaders.cat @@ -0,0 +1,10 @@ + ____ + /___/\_ __ + _\ \/_/\__ _| |_ + __\ \/_/\ _| |_ + \ __ __ \ \ | _ _ | + __\ \_\ \_\ \ \ __ | |_| |_| | +/_/\\ __ __ \ \_/_/\ _ | _ _ | _ +\_\/_\__\/\__\/\__\/_\_\/ |_|_|_| |__| |_|_|_| + \_\/_/\ /_\_\/ |_|_ _|_| + \_\/ \_\/ |_| |_| diff --git a/nvim/static/quake.cat b/nvim/static/quake.cat new file mode 100644 index 0000000..e8f159f --- /dev/null +++ b/nvim/static/quake.cat @@ -0,0 +1,26 @@ + _______________________________________ +|\ ___________________________________ /| +| | _ _ | | +| |(+) _ _ (+)| | +| | ~ _--/ \--_ ~ | | +| | / / \ \ | | +| | / | | \ | | +| | / | | \ | | +| | | | _______ | | | | +| | | | \ / | | | | +| | \ \_ | | _/ / | | +| | \ -__| |__- / | | +| | \_ _/ | | +| | --__ __-- | | +| | --| |-- | | +| | | | | | +| | | | | | +| | | | | +| | | | +| | I S G O O D F O R Y O U | | +| | _ _ | | +| |(+) (+)| | +| | ~ ~ | | +|/ ----------------------------------- \| + --------------------------------------- + diff --git a/nvim/static/tux.cat b/nvim/static/tux.cat new file mode 100644 index 0000000..65127c7 --- /dev/null +++ b/nvim/static/tux.cat @@ -0,0 +1,19 @@ + .-"""-. + ' \ + |,. ,-. | + |()L( ()| | + |,' `".| | + |.___.',| ` + .j `--"' ` `. + / ' ' \ + / / ` `. + / / ` . + / / l | + . , | | + ,"`. .| | + _.' ``. | `..-'l +| `.`, | `. +| `. __.j ) +|__ |--""___| ,-' + `"--...,+"""" `._,.-' mh + diff --git a/nvim/static/y2k.cat b/nvim/static/y2k.cat new file mode 100644 index 0000000..79a08a3 --- /dev/null +++ b/nvim/static/y2k.cat @@ -0,0 +1,22 @@ + /'. /| .'\ + ,._ |+i\ /++\ / +| ,, + |*+'._/+++\/+ ++\/+++<_.-'+| + :-. \ ++++?++ +++++*++++++ +++ / .-: + |*+\_/++++ +++*++ ++++++ ++?++++\_/ +| + , \*+++++ ++++ +++*+++ ++++ +++ +++++/ , + \'-._> +__+*++__*+++_+__*++ ++__++++__*<_.-'/ + `>*+++| \++/ |+*/ `\ +| |++/ |++++<' +_,-'+ * +*\ \/ /++|__.-. |+ | |+/ /+ +*+'-._ +'-.*+++++++\ /+ ++++++/ / *| |/ /+ ++++++.-' + > *+++++\ /*++++ +/` /`+++| < *++ +++< +_,-'* +++ ++| |++ +*/` /` +* +| |\ \+ ++++++'-._ +`-._+ +*++?+| |+++*| '-----.+| |+\ \+* ++ +_.-' + _`\++++++|__|+ *+|________|+|__|++\__|++++/`_ + /*++_+* + +++++ ++ + ++++ +++++ ++ ++++ ++_+*+\ + '--' `>*+++ +++++ +++++*++++ +++ ++++ ?<' '--' + /++_++ ++ ++++++ ++?+ +++++*+++ ++++ \ + |_/ `\++ ++ +++*++++++++++ ++++*./`\_| + /+*.-.*+ +_ ++*+ _+++ .-.* +\ + jgs | / | +/ `\?+/` \*+| \ | + ' \.' |/ './ ' + diff --git a/sxhkd.service b/sxhkd.service new file mode 100644 index 0000000..c8f8acc --- /dev/null +++ b/sxhkd.service @@ -0,0 +1,11 @@ +[Unit] +Description=Simple X Hotkey Daemon +Documentation=man:sxhkd(1) + +[Service] +ExecStartPre=/usr/bin/sleep 2 +ExecStart=/usr/bin/sxhkd -m 1 +ExecReload=/usr/bin/kill -SIGUSR1 $MAINPID + +[Install] +WantedBy=default.target diff --git a/sxhkd/sxhkdrc b/sxhkd/sxhkdrc new file mode 100644 index 0000000..196120a --- /dev/null +++ b/sxhkd/sxhkdrc @@ -0,0 +1,6 @@ +#alacritty +alt + z + tdrop -n top --width 100% --height 65% --post-map-hook 'wmctrl -r "Alacritty - Drop Down - Top" -b add,above,sticky' alacritty --title 'Alacritty - Drop Down - Top' + +super + shift + Return + tdrop -n top --width 100% --height 65% --post-map-hook 'wmctrl -r "Alacritty - Drop Down - Top" -b add,above,sticky' alacritty --title 'Alacritty - Drop Down - Top' diff --git a/zellij/config.kdl b/zellij/config.kdl new file mode 100644 index 0000000..44c4cda --- /dev/null +++ b/zellij/config.kdl @@ -0,0 +1,276 @@ +// If you'd like to override the default keybindings completely, be sure to change "keybinds" to "keybinds clear-defaults=true" +keybinds { + normal { + // uncomment this and adjust key if using copy_on_select=false + // bind "Alt c" { Copy; } + } + locked { + bind "Ctrl g" { SwitchToMode "Normal"; } + } + resize { + bind "Ctrl n" { SwitchToMode "Normal"; } + bind "h" "Left" { Resize "Left"; } + bind "j" "Down" { Resize "Down"; } + bind "k" "Up" { Resize "Up"; } + bind "l" "Right" { Resize "Right"; } + bind "=" "+" { Resize "Increase"; } + bind "-" { Resize "Decrease"; } + } + pane { + bind "Ctrl p" { SwitchToMode "Normal"; } + bind "h" "Left" { MoveFocus "Left"; } + bind "l" "Right" { MoveFocus "Right"; } + bind "j" "Down" { MoveFocus "Down"; } + bind "k" "Up" { MoveFocus "Up"; } + bind "p" { SwitchFocus; } + bind "n" { NewPane; SwitchToMode "Normal"; } + bind "d" { NewPane "Down"; SwitchToMode "Normal"; } + bind "r" { NewPane "Right"; SwitchToMode "Normal"; } + bind "x" { CloseFocus; SwitchToMode "Normal"; } + bind "f" { ToggleFocusFullscreen; SwitchToMode "Normal"; } + bind "z" { TogglePaneFrames; SwitchToMode "Normal"; } + bind "w" { ToggleFloatingPanes; SwitchToMode "Normal"; } + bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "Normal"; } + bind "c" { SwitchToMode "RenamePane"; PaneNameInput 0;} + } + move { + bind "Ctrl h" { SwitchToMode "Normal"; } + bind "n" "Tab" { MovePane; } + bind "h" "Left" { MovePane "Left"; } + bind "j" "Down" { MovePane "Down"; } + bind "k" "Up" { MovePane "Up"; } + bind "l" "Right" { MovePane "Right"; } + } + tab { + bind "Ctrl t" { SwitchToMode "Normal"; } + bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; } + bind "h" "Left" "Up" "k" { GoToPreviousTab; } + bind "l" "Right" "Down" "j" { GoToNextTab; } + bind "n" { NewTab; SwitchToMode "Normal"; } + bind "x" { CloseTab; SwitchToMode "Normal"; } + bind "s" { ToggleActiveSyncTab; SwitchToMode "Normal"; } + bind "1" { GoToTab 1; SwitchToMode "Normal"; } + bind "2" { GoToTab 2; SwitchToMode "Normal"; } + bind "3" { GoToTab 3; SwitchToMode "Normal"; } + bind "4" { GoToTab 4; SwitchToMode "Normal"; } + bind "5" { GoToTab 5; SwitchToMode "Normal"; } + bind "6" { GoToTab 6; SwitchToMode "Normal"; } + bind "7" { GoToTab 7; SwitchToMode "Normal"; } + bind "8" { GoToTab 8; SwitchToMode "Normal"; } + bind "9" { GoToTab 9; SwitchToMode "Normal"; } + bind "Tab" { ToggleTab; } + } + scroll { + bind "Ctrl s" { SwitchToMode "Normal"; } + bind "e" { EditScrollback; SwitchToMode "Normal"; } + bind "s" { SwitchToMode "EnterSearch"; SearchInput 0; } + bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; } + bind "j" "Down" { ScrollDown; } + bind "k" "Up" { ScrollUp; } + bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; } + bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; } + bind "d" { HalfPageScrollDown; } + bind "u" { HalfPageScrollUp; } + // uncomment this and adjust key if using copy_on_select=false + // bind "Alt c" { Copy; } + } + search { + bind "Ctrl s" { SwitchToMode "Normal"; } + bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; } + bind "j" "Down" { ScrollDown; } + bind "k" "Up" { ScrollUp; } + bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; } + bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; } + bind "d" { HalfPageScrollDown; } + bind "u" { HalfPageScrollUp; } + bind "n" { Search "down"; } + bind "p" { Search "up"; } + bind "c" { SearchToggleOption "CaseSensitivity"; } + bind "w" { SearchToggleOption "Wrap"; } + bind "o" { SearchToggleOption "WholeWord"; } + } + entersearch { + bind "Ctrl c" "Esc" { SwitchToMode "Scroll"; } + bind "Enter" { SwitchToMode "Search"; } + } + renametab { + bind "Ctrl c" { SwitchToMode "Normal"; } + bind "Esc" { UndoRenameTab; SwitchToMode "Tab"; } + } + renamepane { + bind "Ctrl c" { SwitchToMode "Normal"; } + bind "Esc" { UndoRenamePane; SwitchToMode "Pane"; } + } + session { + bind "Ctrl o" { SwitchToMode "Normal"; } + bind "Ctrl s" { SwitchToMode "Scroll"; } + bind "d" { Detach; } + } + tmux { + bind "[" { SwitchToMode "Scroll"; } + bind "Ctrl b" { Write 2; SwitchToMode "Normal"; } + bind "\"" { NewPane "Down"; SwitchToMode "Normal"; } + bind "%" { NewPane "Right"; SwitchToMode "Normal"; } + bind "z" { ToggleFocusFullscreen; SwitchToMode "Normal"; } + bind "c" { NewTab; SwitchToMode "Normal"; } + bind "," { SwitchToMode "RenameTab"; } + bind "p" { GoToPreviousTab; SwitchToMode "Normal"; } + bind "n" { GoToNextTab; SwitchToMode "Normal"; } + bind "Left" { MoveFocus "Left"; SwitchToMode "Normal"; } + bind "Right" { MoveFocus "Right"; SwitchToMode "Normal"; } + bind "Down" { MoveFocus "Down"; SwitchToMode "Normal"; } + bind "Up" { MoveFocus "Up"; SwitchToMode "Normal"; } + bind "h" { MoveFocus "Left"; SwitchToMode "Normal"; } + bind "l" { MoveFocus "Right"; SwitchToMode "Normal"; } + bind "j" { MoveFocus "Down"; SwitchToMode "Normal"; } + bind "k" { MoveFocus "Up"; SwitchToMode "Normal"; } + bind "o" { FocusNextPane; } + bind "d" { Detach; } + } + shared_except "locked" { + bind "Ctrl g" { SwitchToMode "Locked"; } + bind "Ctrl q" { Quit; } + bind "Alt n" { NewPane; } + bind "Alt h" "Alt Left" { MoveFocusOrTab "Left"; } + bind "Alt l" "Alt Right" { MoveFocusOrTab "Right"; } + bind "Alt j" "Alt Down" { MoveFocus "Down"; } + bind "Alt k" "Alt Up" { MoveFocus "Up"; } + bind "Alt =" "Alt +" { Resize "Increase"; } + bind "Alt -" { Resize "Decrease"; } + } + shared_except "normal" "locked" { + bind "Enter" "Esc" { SwitchToMode "Normal"; } + } + shared_except "pane" "locked" { + bind "Ctrl p" { SwitchToMode "Pane"; } + } + shared_except "resize" "locked" { + bind "Ctrl n" { SwitchToMode "Resize"; } + } + shared_except "scroll" "locked" { + bind "Ctrl s" { SwitchToMode "Scroll"; } + } + shared_except "session" "locked" { + bind "Ctrl o" { SwitchToMode "Session"; } + } + shared_except "tab" "locked" { + bind "Ctrl t" { SwitchToMode "Tab"; } + } + shared_except "move" "locked" { + bind "Ctrl h" { SwitchToMode "Move"; } + } + shared_except "tmux" "locked" { + bind "Ctrl b" { SwitchToMode "Tmux"; } + } +} + +plugins { + tab-bar { path "tab-bar"; } + status-bar { path "status-bar"; } + strider { path "strider"; } + compact-bar { path "compact-bar"; } +} + +// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP +// eg. when terminal window with an active zellij session is closed +// Options: +// - detach (Default) +// - quit +// +// on_force_close "quit" + +// Send a request for a simplified ui (without arrow fonts) to plugins +// Options: +// - true +// - false (Default) +// +// simplified_ui true + +// Choose the path to the default shell that zellij will use for opening new panes +// Default: $SHELL +// +// default_shell "fish" + +// Toggle between having pane frames around the panes +// Options: +// - true (default) +// - false +// +// pane_frames true + +// Define color themes for Zellij +// For more examples, see: https://github.com/zellij-org/zellij/tree/main/example/themes +// Once these themes are defined, one of them should to be selected in the "theme" section of this file +// +themes { + dracula { + fg 248 248 242 + bg 40 42 54 + red 255 85 85 + green 80 250 123 + yellow 241 250 140 + blue 98 114 164 + magenta 255 121 198 + orange 255 184 108 + cyan 139 233 253 + black 0 0 0 + white 255 255 255 + } + } + +// Choose the theme that is specified in the themes section. +// Default: default +// +theme "dracula" + +// The name of the default layout to load on startup +// Default: "default" +// +// default_layout "compact" + +// Choose the mode that zellij uses when starting up. +// Default: normal +// +// default_mode "locked" + +// Toggle enabling the mouse mode. +// On certain configurations, or terminals this could +// potentially interfere with copying text. +mouse_mode true +scroll_buffer_size 20000 + +copy_command "xclip -selection clipboard" // x11 +// copy_command "wl-copy" // wayland +// copy_command "pbcopy" // osx + +// Choose the destination for copied text +// Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard. +// Does not apply when using copy_command. +// Options: +// - system (default) +// - primary +// +// copy_clipboard "primary" + +// Enable or disable automatic copy (and clear) of selection when releasing mouse +// Default: true +// +// copy_on_select false +copy_on_select true +// Path to the default editor to use to edit pane scrollbuffer +// Default: $EDITOR or $VISUAL +// +// scrollback_editor "/usr/bin/vim" + +// When attaching to an existing session with other users, +// should the session be mirrored (true) +// or should each user have their own cursor (false) +// Default: false +// +// mirror_session true + +// The folder in which Zellij will look for layouts +// +// layout_dir "/path/to/my/layout_dir" + +theme_dir "/home/mr0xb/.config/zellij_cfg/themes"