From 11f21ffaab52de3fc6ee70d04371373c1479d1f9 Mon Sep 17 00:00:00 2001 From: Andrew Haynes Date: Thu, 1 Oct 2026 13:46:29 -0400 Subject: [PATCH] Tmux sessionizer --- .DS_Store | Bin 10244 -> 10244 bytes nvim/.DS_Store | Bin 0 -> 6148 bytes .../nvim/lua/DarthMooMancer/colors.lua | 27 ++------ .../nvim/lua/DarthMooMancer/keymaps.lua | 1 + nvim/.config/nvim/lua/DarthMooMancer/opts.lua | 5 +- .../nvim/lua/DarthMooMancer/plugins.lua | 2 + .../.config/nvim/lua/DarthMooMancer/tools.lua | 5 +- nvim/.config/nvim/lua/DarthMooMancer/ui.lua | 38 ----------- nvim/.config/nvim/nvim-pack-lock.json | 8 +++ tmux/.DS_Store | Bin 0 -> 6148 bytes tmux/.config/tmux/tmux.conf | 28 +++++++- tmux/.local/bin/tmux-sessionizer | 62 ++++++++++++++++++ 12 files changed, 109 insertions(+), 67 deletions(-) create mode 100644 nvim/.DS_Store create mode 100644 tmux/.DS_Store create mode 100755 tmux/.local/bin/tmux-sessionizer diff --git a/.DS_Store b/.DS_Store index e66b3cd6ed00b76bc84667f00dd6fd044456be27..eeb7f84f7682562264a4973b8d857bd4101bf672 100644 GIT binary patch delta 283 zcmZn(XbIS$DiHTXdl>@*0}F#5LpnnyLrHGFi%U{YeiBfOqr4^1V6pKDM^yO~yz&JZ zhQZ1CxdlKy47x8AHa81wXJguWV6u(41e=U8hs+M6$x-4`FlLpw45Py4>EhOmv2~lk z)|4>hGL$k@AUh)=0Hh7-47fbP8QA2Jox#9+V6wiX9Am;}Kgl<|1ROJYx_B-CvfW7i delta 283 zcmZn(XbIS$DiHU$g@b{CfrUYjA)O(Up(Hoo#U&{xKM5$t5f%I1%~JD(BdUA~UipFy z!{Frn+ybB;2HhtQHa81wXJcCOX0naA1e=?&r^|W1$x-4`FlLpw3?swl>EhOmv8gk_ z)|4>hGL$k@AUoq>z;T(gd{Ae=J5S@WYtb~M8Qc$?1LCOtGw45LpKuJVEO0sF__af9>f*u;~#Cx7WVigxO zL4al?`;9#xd!MwnM?`e`xSWWLMWjI^DwT?Gx@tOd=Mhj#jyrjf)p|9VExJmg-#Ep+ zpU9Ogq?4_D+5cu|+kJZ3_tDyj{IX+j$Sj;M Q;lOwZ6hfj427Z8n5BgXwG5`Po literal 0 HcmV?d00001 diff --git a/nvim/.config/nvim/lua/DarthMooMancer/colors.lua b/nvim/.config/nvim/lua/DarthMooMancer/colors.lua index cf57f32..8bcb81d 100644 --- a/nvim/.config/nvim/lua/DarthMooMancer/colors.lua +++ b/nvim/.config/nvim/lua/DarthMooMancer/colors.lua @@ -1,10 +1,12 @@ require('kanso').setup({ - foreground = { - dark = "saturated", -- Use default colors in dark mode - }, + transparent = true, + -- foreground = { + -- dark = "saturated", -- Use default colors in dark mode + -- }, overrides = function(colors) local theme = colors.theme return { + Normal = { bg = "none" }, NormalFloat = { bg = "none" }, FloatBorder = { bg = "none" }, FloatTitle = { bg = "none" }, @@ -19,22 +21,5 @@ require('kanso').setup({ } end, }) --- -vim.cmd.colorscheme('kanso-zen') -vim.api.nvim_set_hl(0, 'Normal', { bg = 'none' }) --- vim.api.nvim_set_hl(0, 'NormalFloat', { link = 'Normal' }) --- vim.api.nvim_set_hl(0, "FloatBorder", { bg = "none" }) -vim.api.nvim_set_hl(0, 'StatusLine', { link = 'Normal' }) -vim.api.nvim_set_hl(0, 'StatusLineTerm', { link = 'Normal' }) -vim.api.nvim_set_hl(0, 'StatusLineNC', { link = 'Normal' }) -vim.api.nvim_set_hl(0, 'SignColumn', { link = 'Normal' }) -vim.api.nvim_set_hl(0, 'LineNrAbove', { link = 'NonText', bold = true }) -vim.api.nvim_set_hl(0, 'LineNrBelow', { link = 'NonText', bold = true }) -vim.api.nvim_set_hl(0, 'LineNr', { link = 'Normal' }) -vim.api.nvim_set_hl(0, 'FoldColumn', { link = 'Normal' }) -vim.api.nvim_set_hl( - 0, - 'CursorLineNr', - { bg = 'none', link = 'MatchParen', bold = true } -) +vim.cmd.colorscheme('kanso-zen') diff --git a/nvim/.config/nvim/lua/DarthMooMancer/keymaps.lua b/nvim/.config/nvim/lua/DarthMooMancer/keymaps.lua index d91f2f8..0791888 100644 --- a/nvim/.config/nvim/lua/DarthMooMancer/keymaps.lua +++ b/nvim/.config/nvim/lua/DarthMooMancer/keymaps.lua @@ -61,6 +61,7 @@ vim.keymap.set('n', '', ':NvimTmuxNavigateDown', { silent = true }) vim.keymap.set('n', '', ':NvimTmuxNavigateUp', { silent = true }) vim.keymap.set('n', '', ':NvimTmuxNavigateRight', { silent = true }) vim.keymap.set('n', 'xx', ':Trouble diagnostics toggle') +vim.keymap.set('n', 'zz', ':ZenMode') local dropbar_api = require("dropbar.api") vim.keymap.set("n", ";", dropbar_api.pick, { desc = "Pick symbols in winbar" }) vim.keymap.set("n", "[;", dropbar_api.goto_context_start, { desc = "Go to start of current context" }) diff --git a/nvim/.config/nvim/lua/DarthMooMancer/opts.lua b/nvim/.config/nvim/lua/DarthMooMancer/opts.lua index bb0b8e2..cd463dc 100644 --- a/nvim/.config/nvim/lua/DarthMooMancer/opts.lua +++ b/nvim/.config/nvim/lua/DarthMooMancer/opts.lua @@ -9,9 +9,6 @@ vim.opt.expandtab = true -- Use spaces instead of tabs vim.api.nvim_create_autocmd('FileType', { callback = function(ev) local map = { - -- c = { ts = 8, sw = 8, sts = 8, et = false }, - -- cpp = { ts = 8, sw = 8, sts = 8, et = false }, - -- go = { ts = 8, sw = 8, sts = 8, et = false }, rust = { ts = 4, sw = 4, sts = 4 }, lua = { ts = 4, sw = 4, sts = 4 }, python = { ts = 4, sw = 4, sts = 4 }, @@ -49,7 +46,7 @@ vim.opt.foldmethod = 'indent' vim.opt.foldcolumn = '1' vim.opt.foldenable = false vim.opt.shortmess = 'aF' -- abbreviates messages and prevents file name being echoed when opened -vim.opt.ignorecase = true -- ignore cases when searching +vim.opt.ignorecase = false -- ignore cases when searching vim.opt.smartcase = true -- However if we use a capital in search string we then consider case-sensitivity, ignorecase is disabled vim.opt.smartindent = false -- smarter indentation vim.opt.smarttab = true -- make tab behaviour smarter diff --git a/nvim/.config/nvim/lua/DarthMooMancer/plugins.lua b/nvim/.config/nvim/lua/DarthMooMancer/plugins.lua index f30af30..b7dc843 100644 --- a/nvim/.config/nvim/lua/DarthMooMancer/plugins.lua +++ b/nvim/.config/nvim/lua/DarthMooMancer/plugins.lua @@ -37,5 +37,7 @@ vim.pack.add({ { src = 'https://github.com/rcarriga/nvim-notify' }, { src = 'https://github.com/folke/trouble.nvim' }, { src = 'https://github.com/brianhuster/live-preview.nvim' }, + { src = 'https://github.com/m4xshen/hardtime.nvim' }, { src = 'https://github.com/Bekaboo/dropbar.nvim' }, + { src = 'https://github.com/folke/zen-mode.nvim' }, }) diff --git a/nvim/.config/nvim/lua/DarthMooMancer/tools.lua b/nvim/.config/nvim/lua/DarthMooMancer/tools.lua index d6f5268..a2f73a5 100644 --- a/nvim/.config/nvim/lua/DarthMooMancer/tools.lua +++ b/nvim/.config/nvim/lua/DarthMooMancer/tools.lua @@ -28,6 +28,9 @@ require('nvim-tmux-navigation').setup({ disable_when_zoomed = true, -- defaults to false }) +-- require("zen-mode").toggle({ +-- }) + require('blink.cmp').setup({ completion = { documentation = { @@ -62,7 +65,6 @@ require('nvim-ts-autotag').setup({ }) require('trouble').setup({}) --- require('dropbar').setup({}) require("telescope").setup({ defaults = { prompt_prefix = "  ", -- Changes the search icon/prompt prefix @@ -82,3 +84,4 @@ require("telescope").setup({ }, }, }) +require("hardtime").setup() diff --git a/nvim/.config/nvim/lua/DarthMooMancer/ui.lua b/nvim/.config/nvim/lua/DarthMooMancer/ui.lua index ac6e735..1cd59df 100644 --- a/nvim/.config/nvim/lua/DarthMooMancer/ui.lua +++ b/nvim/.config/nvim/lua/DarthMooMancer/ui.lua @@ -307,47 +307,9 @@ require('incline').setup({ local icon, color = require("nvim-web-devicons").get_icon_color(filename) return { { icon, guifg = color }, { " " }, { filename } } end, - -- window = { - -- padding = 0, - -- margin = { horizontal = 0 }, - -- options = { - -- -- Reset winhl so it doesn't force total transparency - -- winhl = 'Normal:InclineNormal', - -- }, - -- }, - -- render = function(props) - -- local filename = - -- vim.fn.fnamemodify(vim.api.nvim_buf_get_name(props.buf), ':t') - -- if filename == '' then - -- filename = '[No Name]' - -- end - -- local ft_icon, ft_color = - -- require('nvim-web-devicons').get_icon_color(filename) - -- local modified = vim.bo[props.buf].modified - -- - -- return { - -- ft_icon and { - -- ' ', - -- ft_icon, - -- ' ', - -- guibg = ft_color, - -- guifg = require('incline.helpers').contrast_color(ft_color), - -- -- guibg = ft_color, - -- -- guifg = require('incline.helpers').contrast_color(ft_color), - -- } or '', - -- -- Wrap the text and padding inside a structural block linked to 'CursorLine' - -- { - -- ' ', - -- { filename, gui = modified and 'bold,italic' or 'bold' }, - -- ' ', - -- group = 'CursorLine', - -- }, - -- } - -- end, }) require('noice').setup({ lsp = { - -- override markdown rendering so that **cmp** and other plugins use **Treesitter** override = { ['vim.lsp.util.convert_input_to_markdown_lines'] = true, ['vim.lsp.util.stylize_markdown'] = true, diff --git a/nvim/.config/nvim/nvim-pack-lock.json b/nvim/.config/nvim/nvim-pack-lock.json index bbb6d51..d0c9338 100644 --- a/nvim/.config/nvim/nvim-pack-lock.json +++ b/nvim/.config/nvim/nvim-pack-lock.json @@ -13,6 +13,10 @@ "rev": "808ba31cde89aec8833e9789f5e04557cd31c9e1", "src": "https://github.com/Bekaboo/dropbar.nvim" }, + "hardtime.nvim": { + "rev": "5165840fe680eab46de1fc6dbff48f148fdcf018", + "src": "https://github.com/m4xshen/hardtime.nvim" + }, "incline.nvim": { "rev": "debd628e9395f7a9da57bdc31ce75ca6b40a880b", "src": "https://github.com/b0o/incline.nvim" @@ -94,6 +98,10 @@ "undotree": { "rev": "6fa6b57cda8459e1e4b2ca34df702f55242f4e4d", "src": "https://github.com/mbbill/undotree" + }, + "zen-mode.nvim": { + "rev": "8564ce6d29ec7554eb9df578efa882d33b3c23a7", + "src": "https://github.com/folke/zen-mode.nvim" } } } diff --git a/tmux/.DS_Store b/tmux/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8916a6144fd7c002786bba7c7a98d232d4bfa3be GIT binary patch literal 6148 zcmeHKO-e&C5T4P34@BwGg^Qd(=nZ0d9zc2lX-lin`nqxdj^YWthHgBJH}Ly1qxfhR zZWNIjNWMwtCwU*dBqJg^eOOLJ#v;<75tT|sI9)Xzxbq08CC5tcWW8BWW{a+p=r2xj z??-YW3+d!uzU+UyE8A^WPx~I*u5IU=ZVpTHcKv+*diru%^ICqxYj;bwe6^EDqzMTI zf`MQl7zhS_lmXn?l;+ql`d}a!2nIeG;Q5fyh}p3>EJp{rQUU<^j4lG5wFG05V|MHf zVS%WH0xeX%#83;zd~(0+*c)27s23mVD}NL(T2@E?RNO_gVf4X3Ffe4`(1v5)|5x~B zszv@VBu2qNF!0Y9&`~>Ur}!wpTlYSXcWpwuL8H*GrviaKcm!a;bL6ZT&7P>kFFW>z U%)/dev/null) + +# 2. Get directories from key work paths +dirs=$(find ~ ~/.config ~/Projects ~/dotfiles ~/personal \ + -mindepth 1 -maxdepth 4 \ + \( -name ".git" -o -name "node_modules" -o -name ".cache" -o -name "Library" \) -prune \ + -o -type d -print 2>/dev/null) + +# 3. Dynamic Previewer (Tree view for folders, Window list for sessions) +preview_cmd=' +if [ -d {} ]; then + if command -v eza &>/dev/null; then + eza --tree --level=2 --icons --color=always {} + elif command -v tree &>/dev/null; then + tree -C -L 2 {} + else + ls -la --color=always {} + fi +else + tmux list-windows -t {} 2>/dev/null +fi' + +# 4. Kanagawa Wave Themed FZF Selector +selected=$(printf "%s\n%s" "$sessions" "$dirs" | grep -v '^$' | fzf \ + --layout=reverse \ + --border=rounded \ + --margin=1 \ + --padding=1 \ + --height=100% \ + --prompt="󱇗 " \ + --color="bg:#1F1F28,bg+:#223249,fg:#DCD7BA,fg+:#DCD7BA" \ + --color="hl:#2D4F67,hl+:#7E9CD8,prompt:#957FB8,pointer:#7E9CD8" \ + --color="info:#98BB6C,spinner:#957FB8,header:#7AA89F,border:#54546D" \ + --color="marker:#98BB6C" \ + --preview="$preview_cmd" \ + --preview-window="right:55%:border-left") + +# Exit if fzf was cancelled +[[ -z "$selected" ]] && exit 0 + +# 5. Handle Session Creation / Switching +if [[ -d "$selected" ]]; then + # Selection is a DIRECTORY -> Create session named after folder + session_name=$(basename "$selected" | tr '.: ' '_') + + if ! tmux has-session -t "=$session_name" 2>/dev/null; then + tmux new-session -d -s "$session_name" -c "$selected" + fi +else + # Selection is an EXISTING SESSION -> Connect directly + session_name="$selected" +fi + +# 6. Attach or Switch +if [[ -z "$TMUX" ]]; then + exec tmux attach-session -t "$session_name" +else + tmux switch-client -t "$session_name" +fi