From 4565a06df6b85d7df201db42d58967dda22aec82 Mon Sep 17 00:00:00 2001 From: Steffen Rademacker Date: Thu, 28 Sep 2023 12:45:45 +0200 Subject: [PATCH] MAJOR: move to wezterm remove tmux, git-flow, time-tracker and iterm and other unused stuff, fully move to wezterm without tmux lots of fixes for zsh/history/fzf etc as well --- gitconfig | 4 - hammerspoon/init.lua | 8 +- install/0_basics.sh | 7 +- install/2_cli-tools.sh | 8 -- install/3_vimux.sh | 5 - install/6_software.sh | 6 +- nvim/lua/mappings.lua | 30 +++-- nvim/lua/options.lua | 5 +- nvim/lua/plugins.lua | 72 ++++++------ office/mbsyncrc | 1 + other/tt-time-tracker.status.zsh | 11 -- other/xterm-256color.terminfo | 186 ------------------------------- starship.toml | 7 -- tmux.conf | 57 ---------- wezterm.lua | 149 +++++++++++++++++++++++++ zsh/aliases.zsh | 3 - zsh/exports.zsh | 5 +- zsh/zshrc | 24 ++-- 18 files changed, 228 insertions(+), 360 deletions(-) delete mode 100755 other/tt-time-tracker.status.zsh delete mode 100644 other/xterm-256color.terminfo delete mode 100644 tmux.conf create mode 100644 wezterm.lua diff --git a/gitconfig b/gitconfig index 690e02cd..a0c3979b 100644 --- a/gitconfig +++ b/gitconfig @@ -45,10 +45,6 @@ ps = push pl = pull mg = merge - ffs = flow feature start - fff = flow feature finish - ffp = flow feature publish - fi = flow init rs = reset HEAD --hard fame = shortlog -sn --all --no-merges l = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit diff --git a/hammerspoon/init.lua b/hammerspoon/init.lua index 959040e3..d6a71293 100644 --- a/hammerspoon/init.lua +++ b/hammerspoon/init.lua @@ -46,7 +46,7 @@ local layoutDouble = { { "Signal", nil, mainMonitor, screenPositions.rightBottom, nil, nil }, { "Strongbox", nil, laptopMonitor, screenPositions.full, nil, nil }, { "Telegram", nil, mainMonitor, screenPositions.rightTop, nil, nil }, - { "iTerm2", nil, mainMonitor, screenPositions.right, nil, nil }, + { "WezTerm", nil, mainMonitor, screenPositions.right, nil, nil }, } local layoutSingle = { @@ -60,7 +60,7 @@ local layoutSingle = { { "Signal", nil, laptopMonitor, screenPositions.full, nil, nil }, { "Strongbox", nil, laptopMonitor, screenPositions.full, nil, nil }, { "Telegram", nil, laptopMonitor, screenPositions.full, nil, nil }, - { "iTerm2", nil, laptopMonitor, screenPositions.full, nil, nil }, + { "WezTerm", nil, laptopMonitor, screenPositions.full, nil, nil }, } local appNames = { @@ -74,7 +74,7 @@ local appNames = { "Signal", "Strongbox", "Telegram", - "iTerm", + "WezTerm", } -- Local helper functions @@ -157,7 +157,7 @@ hotkey.bind(hyper, 'w', function() end) -- Direct app navigation -hotkey.bind(hyper, 'a', function() app.launchOrFocus('iTerm') end) +hotkey.bind(hyper, 'a', function() app.launchOrFocus('WezTerm') end) hotkey.bind(hyper, 's', function() app.launchOrFocus('Firefox') end) hotkey.bind(hyper, 'd', function() app.launchOrFocus('ForkLift') end) hotkey.bind(hyper, 'g', function() launchApps() end) diff --git a/install/0_basics.sh b/install/0_basics.sh index cfed3f58..4ad6e776 100755 --- a/install/0_basics.sh +++ b/install/0_basics.sh @@ -25,22 +25,19 @@ export PATH=/usr/local/bin:/usr/local/sbin:$PATH # basics brew install curl brew install git -brew install git-flow brew install openssl brew install zsh # basic config symlinks mkdir ~/.config cd ~/dotfiles +ln -s ~/dotfiles/wezterm.lua ~/.wezterm.lua ln -s ~/dotfiles/gitconfig ~/.gitconfig ln -s ~/dotfiles/gitignore ~/.gitignore ln -s ~/dotfiles/zsh ~/.zsh ln -s ~/dotfiles/zsh/zshrc ~/.zshrc -# set xterm/screen terminals to enable italic fonts in terminal -tic ~/dotfiles/other/xterm-256color.terminfo - -# zsh as default +# homebrew zsh as default sudo vim /etc/shells chsh -s /opt/homebrew/bin/zsh /usr/bin/env zsh diff --git a/install/2_cli-tools.sh b/install/2_cli-tools.sh index 4936cd50..dc7fb942 100755 --- a/install/2_cli-tools.sh +++ b/install/2_cli-tools.sh @@ -5,7 +5,6 @@ brew tap homebrew/services # install additional brew packages -- see _install.sh too brew install bat -brew install clipper brew install fd brew install ffmpeg brew install fzf @@ -13,9 +12,7 @@ brew install jump brew install lazygit brew install nnn brew install ripgrep -brew install speedread brew install spotifyd -brew install starship brew install switchaudio-osx brew install topgrade brew install tree @@ -34,15 +31,10 @@ ln -s ~/dotfiles/spotifyd.toml ~/.config/spotifyd/spotifyd.conf npm install -g fkill-cli npm install -g trash-cli pip install tiptop -pip install tt-time-tracker # install fzf /opt/homebrew/opt/fzf/install -# clipper -mkdir -p ~/Library/LaunchAgents -brew services start clipper - # switchaudio + custom node-script cd ~/dotfiles/other/out npm install diff --git a/install/3_vimux.sh b/install/3_vimux.sh index 6d3efc57..1a65e28c 100755 --- a/install/3_vimux.sh +++ b/install/3_vimux.sh @@ -1,16 +1,11 @@ #!/usr/bin/env zsh brew install neovim -brew install tmux gem install neovim pip install neovim # link config files ln -s ~/dotfiles/nvim ~/.config/nvim -ln -s ~/dotfiles/tmux.conf ~/.tmux.conf - -# vim and tmux plugin managers -git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm # additional language-servers for nvim-lspconfig npm install -g eslint_d diff --git a/install/6_software.sh b/install/6_software.sh index b9c22736..31ad144c 100755 --- a/install/6_software.sh +++ b/install/6_software.sh @@ -11,7 +11,6 @@ brew install --cask firefox brew install --cask forklift brew install --cask google-chrome brew install --cask hammerspoon -brew install --cask iterm2 brew install --cask kap brew install --cask karabiner-elements brew install --cask microsoft-teams @@ -20,13 +19,13 @@ brew install --cask signal brew install --cask syntax-highlight brew install --cask telegram brew install --cask vlc +brew install --cask wezterm # seldomly used software #brew install --cask paw #brew install --cask sequel-pro #brew install --cask sketch #brew install --cask transmission -#brew install --cask vmware-fusion # Quicklook-reset xattr -cr ~/Library/QuickLook @@ -49,5 +48,4 @@ brew install --cask font-fira-code-nerd-font # bill: https://billtheapp.com/ # citrix: https://www.citrix.com/downloads/workspace-app/mac/workspace-app-for-mac-latest.html -# app-store: -# strongbox, hazeover, xcode +# app-store: strongbox, xcode diff --git a/nvim/lua/mappings.lua b/nvim/lua/mappings.lua index 1678c39a..a8047433 100644 --- a/nvim/lua/mappings.lua +++ b/nvim/lua/mappings.lua @@ -23,11 +23,8 @@ map('n', 'N', 'Nzzzv') map('n', 'j', 'gj') map('n', 'k', 'gk') --- sane yanking and copying to clipboard/alfred-history +-- large yank in normal mode map('n', 'Y', 'y$') -map('n', 'yy', 'yy call system("nc localhost 8377", @0)') -map('v', 'y', 'y call system("nc localhost 8377", @0)') -map('v', 'Y', 'y call system("nc localhost 8377", @0)') -- Swap v and CTRL-V, because Block mode is more useful map('n', 'v', '') @@ -42,14 +39,14 @@ map('i', '!', '!u') map('i', '?', '?u') -- bubbling of lines/selections with alt + hjkl -map('n', '˚', ':move .-2', { noremap = false }) -map('n', '∆', ':move .+1', { noremap = false }) -map('n', '˙', '<<', { noremap = false }) -map('n', '¬', '>>', { noremap = false }) -map('v', '˚', ":move '<-2gv", { noremap = false }) -map('v', '∆', ":move '>+1gv", { noremap = false }) -map('v', '˙', 'gv', { noremap = false }) +map('n', '', ':move .-2', { noremap = false }) +map('n', '', ':move .+1', { noremap = false }) +map('n', '', '<<', { noremap = false }) +map('n', '', '>>', { noremap = false }) +map('v', '', ":move '<-2gv", { noremap = false }) +map('v', '', ":move '>+1gv", { noremap = false }) +map('v', '', '', '>gv', { noremap = false }) -- use the arrowkeys for usefull stuff in normal mode -- switching buffers map('n', '', 'bfirst') @@ -101,3 +98,12 @@ map('n', '', 'checktimeredraw!'); map('n', 've', 'e $MYVIMRC') map('n', 'vr', 'source $MYVIMRC') map('n', 'w', 'set wrap! wrap?') + +-- Navigator.nvim +map('n', '', 'NavigatorLeft') +map('n', '', 'NavigatorDown') +map('n', '', 'NavigatorUp') +map('n', '', 'NavigatorRight') + +-- FTerm.nvim +-- map('n', '-', 'lua require("FTerm").run("nnn")') diff --git a/nvim/lua/options.lua b/nvim/lua/options.lua index 9c3edbd6..1d9f37ee 100644 --- a/nvim/lua/options.lua +++ b/nvim/lua/options.lua @@ -8,7 +8,8 @@ g.loaded_perl_provider = 0 -- general options set.breakindent = true -set.cmdheight = 2 +set.clipboard = 'unnamedplus' +set.cmdheight = 1 set.completeopt= { 'menu', 'menuone', 'noselect' } set.cpoptions:append('$') set.cursorline = true @@ -49,8 +50,6 @@ set.wildmode = { 'list:longest', 'list:full' } -- colorscheme and default language set.background = 'dark' set.termguicolors = true - --- g.gruvbox_baby_background_color = 'dark' g.gruvbox_baby_telescope_theme = 1 cmd 'colorscheme gruvbox-baby' cmd 'language en_US.UTF-8' diff --git a/nvim/lua/plugins.lua b/nvim/lua/plugins.lua index 48fb3760..dd00601b 100644 --- a/nvim/lua/plugins.lua +++ b/nvim/lua/plugins.lua @@ -6,10 +6,7 @@ end -- ensure folke/lazy.nvim is being loaded local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim' if not vim.loop.fs_stat(lazypath) then - vim.fn.system({ - 'git', 'clone', '--filter=blob:none', - 'https://github.com/folke/lazy.nvim.git', '--branch=stable', lazypath, - }) + vim.fn.system({ 'git', 'clone', '--filter=blob:none', 'https://github.com/folke/lazy.nvim.git', '--branch=stable', lazypath }) end vim.opt.rtp:prepend(lazypath) @@ -22,19 +19,22 @@ require('lazy').setup({ -- The colorscheme of choice { 'luisiacc/gruvbox-baby', priority = 1000 }, - -- core pieces: telescope & fzf/terminal/tmux integration, - -- completion-engine + snippets + -- modern neovim with treesitter, lsp, floaterm-integration (nnn, lazygit...) + -- telescope and cmp as completion engine, vsnip-support + -- TODO replace null-ls with nvim-lint { 'voldikss/vim-floaterm', init = get_config('floaterm') }, - { 'wincent/terminus' }, - { 'christoomey/vim-tmux-navigator'}, + { 'nvim-treesitter/nvim-treesitter', init = get_config('treesitter'), build = ':TSUpdate' }, + { 'neovim/nvim-lspconfig', init = get_config('lspconfig') }, + { 'jose-elias-alvarez/null-ls.nvim', init = get_config('null-ls'), dependencies = { 'nvim-lua/plenary.nvim' } }, { 'nvim-telescope/telescope.nvim', - tag = '0.1.2', + tag = '0.1.3', init = get_config('telescope'), dependencies = { 'nvim-lua/plenary.nvim' } }, { 'nvim-telescope/telescope-fzf-native.nvim', build = 'make' }, { 'hrsh7th/vim-vsnip', init = get_config('vsnip') }, + { 'rafamadriz/friendly-snippets', dependencies = { 'hrsh7th/vim-vsnip' } }, { 'hrsh7th/nvim-cmp', init = get_config('cmp'), @@ -48,29 +48,39 @@ require('lazy').setup({ 'hrsh7th/cmp-vsnip', }, }, - { 'rafamadriz/friendly-snippets', dependencies = { 'hrsh7th/vim-vsnip' } }, - -- more modern neovim with treesitter, lsp, auto-setup and - -- null-ls integration; see ../../install/3_vimux.sh - -- and null-ls-config for installed and supported tools (Eslint, TSC etc.) - { 'nvim-treesitter/nvim-treesitter', init = get_config('treesitter'), build = ':TSUpdate' }, - { 'neovim/nvim-lspconfig', init = get_config('lspconfig') }, - { 'jose-elias-alvarez/null-ls.nvim', init = get_config('null-ls'), dependencies = { 'nvim-lua/plenary.nvim' } }, - { 'editorconfig/editorconfig-vim' }, - - -- editing enhancements + -- editing / moving enhancements { 'AndrewRadev/splitjoin.vim' }, { 'numToStr/Comment.nvim', config = true }, + { 'numToStr/Navigator.nvim', config = true }, { 'tpope/vim-ragtag' }, { 'tpope/vim-repeat' }, { 'tpope/vim-surround' }, { 'windwp/nvim-autopairs', config = true }, + { + 'folke/flash.nvim', + event = 'VeryLazy', + -- TODO use whichkey for key mappings everywhere, one single init.lua ?! + keys = { + { 's', mode = { "n", "o", "x" }, function() require("flash").jump() end, desc = "Flash" }, + { 'S', mode = { "n", "o", "x" }, function() require("flash").treesitter() end, desc = "Flash Treesitter" }, + }, + }, -- interface/code-navigation enhancements, git and others { 'lewis6991/gitsigns.nvim', config = true }, { 'nvim-lualine/lualine.nvim', dependencies = { 'nvim-tree/nvim-web-devicons' }, - opts = { options = { theme = 'gruvbox' } }, + opts = { + sections = { + lualine_b = { 'branch' }, + lualine_x = {}, + lualine_y = { 'diff', 'diagnostics' }, + }, + options = { + theme = 'gruvbox' + } + }, }, { 'norcalli/nvim-colorizer.lua', event = 'BufReadPre', @@ -112,22 +122,17 @@ require('lazy').setup({ "MunifTanjim/nui.nvim", }, event = "VeryLazy", - opts = {}, keys = { { "gw", mode = { "n" }, - function() - require("wtf").ai() - end, + function() require("wtf").ai() end, desc = "Debug diagnostic with AI", }, { mode = { "n" }, "gW", - function() - require("wtf").search() - end, + function() require("wtf").search() end, desc = "Search diagnostic with Google", }, }, @@ -135,9 +140,7 @@ require('lazy').setup({ { 'jackMort/ChatGPT.nvim', event = "VeryLazy", - config = function() - require("chatgpt").setup() - end, + config = true, dependencies = { "MunifTanjim/nui.nvim", "nvim-lua/plenary.nvim", @@ -158,15 +161,6 @@ require('lazy').setup({ }, }, }, - { - 'folke/flash.nvim', - event = 'VeryLazy', - keys = { - { 's', mode = { "n", "o", "x" }, function() require("flash").jump() end, desc = "Flash" }, - { 'S', mode = { "n", "o", "x" }, function() require("flash").treesitter() end, desc = "Flash Treesitter" }, - { 'Q', mode = { "n", "o", "x" }, function() require("flash").treesitter_search() end, desc = "Treesitter Search" }, - }, - }, { "folke/which-key.nvim", event = "VeryLazy", diff --git a/office/mbsyncrc b/office/mbsyncrc index 48b5d351..02ec36f7 100644 --- a/office/mbsyncrc +++ b/office/mbsyncrc @@ -9,6 +9,7 @@ PassCmd "security find-internet-password -s 'imap.mailbox.org' -a 's.rademacker@ SSLType IMAPS SSLVersions TLSv1.2 CertificateFile ~/dotfiles/office/certificates.crt +AuthMechs LOGIN # Remote storage IMAPStore mailbox-remote diff --git a/other/tt-time-tracker.status.zsh b/other/tt-time-tracker.status.zsh deleted file mode 100755 index 7d198fd1..00000000 --- a/other/tt-time-tracker.status.zsh +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env zsh -TMPFILE=$(mktemp) - -tt --no-color status &> $TMPFILE -local current=$(cat $TMPFILE) - -if [[ $current = 'You have been working on '* ]]; then - local currTemp=${current:s/You have been working on //} - local project=$(echo $currTemp | head -n1 | cut -d " " -f1) - echo " $project" -fi diff --git a/other/xterm-256color.terminfo b/other/xterm-256color.terminfo deleted file mode 100644 index 3e3a10ea..00000000 --- a/other/xterm-256color.terminfo +++ /dev/null @@ -1,186 +0,0 @@ -# Reconstructed via infocmp from file: /usr/share/terminfo/78/xterm-256color -xterm-256color|xterm with 256 colors, - am, - bce, - ccc, - km, - mc5i, - mir, - msgr, - npc, - xenl, - colors#256, - cols#80, - it#8, - lines#24, - pairs#32767, - acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, - blink=\E[5m, - bold=\E[1m, - cbt=\E[Z, - civis=\E[?25l, - clear=\E[H\E[2J, - cnorm=\E[?12l\E[?25h, - cr=^M, - csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, - cub1=^H, - cud=\E[%p1%dB, - cud1=^J, - cuf=\E[%p1%dC, - cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, - cuu1=\E[A, - cvvis=\E[?12;25h, - dch=\E[%p1%dP, - dch1=\E[P, - dl=\E[%p1%dM, - dl1=\E[M, - ech=\E[%p1%dX, - ed=\E[J, - el=\E[K, - el1=\E[1K, - flash=\E[?5h$<100/>\E[?5l, - home=\E[H, - hpa=\E[%i%p1%dG, - ht=^I, - hts=\EH, - ich=\E[%p1%d@, - il=\E[%p1%dL, - il1=\E[L, - ind=^J, - indn=\E[%p1%dS, - initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\, - invis=\E[8m, - is2=\E[!p\E[?3;4l\E[4l\E>, - kDC=\E[3;2~, - kEND=\E[1;2F, - kHOM=\E[1;2H, - kIC=\E[2;2~, - kLFT=\E[1;2D, - kNXT=\E[6;2~, - kPRV=\E[5;2~, - kRIT=\E[1;2C, - kb2=\EOE, - kbs=^H, - kcbt=\E[Z, - kcub1=\EOD, - kcud1=\EOB, - kcuf1=\EOC, - kcuu1=\EOA, - kdch1=\E[3~, - kend=\EOF, - kent=\EOM, - kf1=\EOP, - kf10=\E[21~, - kf11=\E[23~, - kf12=\E[24~, - kf13=\E[1;2P, - kf14=\E[1;2Q, - kf15=\E[1;2R, - kf16=\E[1;2S, - kf17=\E[15;2~, - kf18=\E[17;2~, - kf19=\E[18;2~, - kf2=\EOQ, - kf20=\E[19;2~, - kf21=\E[20;2~, - kf22=\E[21;2~, - kf23=\E[23;2~, - kf24=\E[24;2~, - kf25=\E[1;5P, - kf26=\E[1;5Q, - kf27=\E[1;5R, - kf28=\E[1;5S, - kf29=\E[15;5~, - kf3=\EOR, - kf30=\E[17;5~, - kf31=\E[18;5~, - kf32=\E[19;5~, - kf33=\E[20;5~, - kf34=\E[21;5~, - kf35=\E[23;5~, - kf36=\E[24;5~, - kf37=\E[1;6P, - kf38=\E[1;6Q, - kf39=\E[1;6R, - kf4=\EOS, - kf40=\E[1;6S, - kf41=\E[15;6~, - kf42=\E[17;6~, - kf43=\E[18;6~, - kf44=\E[19;6~, - kf45=\E[20;6~, - kf46=\E[21;6~, - kf47=\E[23;6~, - kf48=\E[24;6~, - kf49=\E[1;3P, - kf5=\E[15~, - kf50=\E[1;3Q, - kf51=\E[1;3R, - kf52=\E[1;3S, - kf53=\E[15;3~, - kf54=\E[17;3~, - kf55=\E[18;3~, - kf56=\E[19;3~, - kf57=\E[20;3~, - kf58=\E[21;3~, - kf59=\E[23;3~, - kf6=\E[17~, - kf60=\E[24;3~, - kf61=\E[1;4P, - kf62=\E[1;4Q, - kf63=\E[1;4R, - kf7=\E[18~, - kf8=\E[19~, - kf9=\E[20~, - khome=\EOH, - kich1=\E[2~, - kind=\E[1;2B, - kmous=\E[M, - knp=\E[6~, - kpp=\E[5~, - kri=\E[1;2A, - mc0=\E[i, - mc4=\E[4i, - mc5=\E[5i, - meml=\El, - memu=\Em, - op=\E[39;49m, - rc=\E8, - rev=\E[7m, - ri=\EM, - rin=\E[%p1%dT, - rmacs=\E(B, - rmam=\E[?7l, - rmcup=\E[?1049l, - rmir=\E[4l, - rmkx=\E[?1l\E>, - rmm=\E[?1034l, - rmso=\E[27m, - rmul=\E[24m, - rs1=\Ec, - rs2=\E[!p\E[?3;4l\E[4l\E>, - sc=\E7, - setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m, - setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m, - sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m, - sgr0=\E(B\E[m, - smacs=\E(0, - smam=\E[?7h, - smcup=\E[?1049h, - smir=\E[4h, - smkx=\E[?1h\E=, - smm=\E[?1034h, - smso=\E[7m, - smul=\E[4m, - tbc=\E[3g, - u6=\E[%i%d;%dR, - u7=\E[6n, - u8=\E[?1;2c, - u9=\E[c, - vpa=\E[%i%p1%dd, - sitm=\E[3m, - ritm=\E[23m, diff --git a/starship.toml b/starship.toml index 8f747c98..8a442ab5 100644 --- a/starship.toml +++ b/starship.toml @@ -6,10 +6,3 @@ min_time = 5_000 [directory] truncation_length = 6 - -[custom.tttimetracker] -command = "~/Dotfiles/other/tt-time-tracker.status.zsh" # shows output of command -when = "" -symbol = "" -style = "bold blue" -format = "[$symbol($output)]($style) " diff --git a/tmux.conf b/tmux.conf deleted file mode 100644 index 2a637748..00000000 --- a/tmux.conf +++ /dev/null @@ -1,57 +0,0 @@ -# Defaults, rest will be set with tmux-sensible -set -g default-terminal "tmux" -set -g default-shell $SHELL -set -g prefix C-a -set -g base-index 1 -setw -g pane-base-index 1 -setw -g xterm-keys on -setw -g mode-keys vi -set-option -as terminal-overrides ",xterm*:RGB" - -# Copy & Paste with clipper -- see https://github.com/wincent/clipper -# starting copy & paste with Ctrl+a [ -bind-key -T copy-mode-vi 'v' send-keys -X begin-selection -bind-key -T copy-mode-vi 'y' send-keys -X copy-pipe-and-cancel "nc localhost 8377" -bind-key -T copy-mode-vi Escape send -X cancel - -# Saner window splitting / new windows -bind-key '\' split-window -h -c "#{pane_current_path}" -bind-key - split-window -v -c "#{pane_current_path}" -bind-key c new-window -c "#{pane_current_path}" - -# Mouse support -set -g mouse on -bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'" -bind -n WheelDownPane select-pane -t= \; send-keys -M -bind -n C-WheelUpPane select-pane -t= \; copy-mode -e \; send-keys -M - -source-file /Users/webgefrickel/.local/share/nvim/lazy/gruvbox-baby/extras/tmux/MEDIUM.tmux - -# Custom statusbar, gruvbox style -set -g status-style bg=black,fg=yellow,default -set -g pane-border-style 'fg=#504945' -set -g pane-active-border-style 'fg=#504945' -set -g message-style bg=black,fg=brightred -set -g display-panes-active-colour blue -set -g display-panes-colour brightred -set -g status-left-length 100 -set -g status-right-length 100 -set -g status-left '#[fg=black,bg=white] ⧉ #S #[fg=white,bg=default,nobold] ' -set -g status-right '#[fg=white,bg=default,nobold]#(whoami)@#h #[fg=black,bg=white,nobold] %d.%m.%Y ¦ %H:%M ' -set -g window-status-format '#[fg=white,bg=default] #I #W ' -set -g window-status-current-format '#[fg=blue,bg=black]#[fg=black,bg=blue] #I #W #[fg=blue,bg=black]#[fg=blue,bg=black,nobold]' - -# Plugin configuration -set -g @resurrect-processes 'nnn v nvim m neomutt spt git gs' -set -g @continuum-restore 'on' -set -g @continuum-boot 'off' - -# Plugins loading and tmux plugin manager initialization -set -g @plugin 'christoomey/vim-tmux-navigator' -set -g @plugin 'schasse/tmux-jump' -set -g @plugin 'tmux-plugins/tmux-continuum' -set -g @plugin 'tmux-plugins/tmux-resurrect' -set -g @plugin 'tmux-plugins/tmux-sensible' -set -g @plugin 'tmux-plugins/tmux-sessionist' -set -g @plugin 'tmux-plugins/tpm' -run '~/.tmux/plugins/tpm/tpm' diff --git a/wezterm.lua b/wezterm.lua new file mode 100644 index 00000000..869710a1 --- /dev/null +++ b/wezterm.lua @@ -0,0 +1,149 @@ +local wezterm = require('wezterm') +local mux = wezterm.mux +local act = wezterm.action +local config = wezterm.config_builder() + +-- helper functions +local function get_current_working_dir(tab) + local current_dir = tab.active_pane.current_working_dir + local HOME_DIR = string.format('file://%s', os.getenv('HOME')) + return current_dir == HOME_DIR and '~' or string.gsub(current_dir, '(.*[/\\])(.*)', '%2') +end + +local function isNvim(pane) + return pane:get_foreground_process_name():find('n?vim') ~= nil +end + +local function conditionalActivatePane(window, pane, pane_direction, vim_direction) + if isNvim(pane) then + window:perform_action(act.SendKey({ key = vim_direction, mods = 'CTRL' }), pane) + else + window:perform_action(act.ActivatePaneDirection(pane_direction), pane) + end +end + +-- base config +config.color_scheme = 'GruvboxDark' +config.font = wezterm.font('FiraCode Nerd Font') +config.font_size = 14.0 +config.inactive_pane_hsb = { saturation = 0.5, brightness = 0.9 } +config.leader = { key = 'a', mods = 'CTRL', timeout_milliseconds = 1000 } +config.scrollback_lines = 5000 +config.show_new_tab_button_in_tab_bar = false +config.tab_bar_at_bottom = true +config.use_dead_keys = false +config.use_fancy_tab_bar = false +config.window_close_confirmation = 'NeverPrompt' +config.window_decorations = 'RESIZE' + +-- key mappings +config.keys = { + { key = '\\', + mods = 'LEADER', + action = act.SplitHorizontal, + }, + { + key = '-', + mods = 'LEADER', + action = act.SplitVertical, + }, + { + key = ']', + mods = 'LEADER', + action = act.ActivateCopyMode, + }, + { + key = ',', + mods = 'LEADER', + action = act.PromptInputLine { + description = 'Enter new name for tab', + action = wezterm.action_callback(function(window, pane, line) + if line then + window:active_tab():set_title(line) + end + end), + }, + }, + { + key = 'c', + mods = 'LEADER', + action = act.PromptInputLine { + description = 'Enter name for new workspace', + action = wezterm.action_callback(function(window, pane, line) + if line then + window:perform_action( + act.SwitchToWorkspace { + name = line, + }, + pane + ) + end + end), + }, + }, + { + key = '$', + mods = 'LEADER', + action = act.PromptInputLine { + description = 'Rename current workspace', + action = wezterm.action_callback(function(window, pane, line) + if line then + wezterm.mux.rename_workspace(wezterm.mux.get_active_workspace(), line) + end + end), + }, + }, + { -- switching workspaces with CTRL-a g + key = 'g', + mods = 'LEADER', + action = act.ShowLauncherArgs { + flags = 'FUZZY|WORKSPACES', + }, + }, + -- Navigator.nvim keys + { key = 'h', mods = 'CTRL', action = act.EmitEvent('ActivatePaneDirection-left') }, + { key = 'j', mods = 'CTRL', action = act.EmitEvent('ActivatePaneDirection-down') }, + { key = 'k', mods = 'CTRL', action = act.EmitEvent('ActivatePaneDirection-up') }, + { key = 'l', mods = 'CTRL', action = act.EmitEvent('ActivatePaneDirection-right') }, +} + +-- Navigator.nvim events +wezterm.on('ActivatePaneDirection-right', function(window, pane) + conditionalActivatePane(window, pane, 'Right', 'l') +end) +wezterm.on('ActivatePaneDirection-left', function(window, pane) + conditionalActivatePane(window, pane, 'Left', 'h') +end) +wezterm.on('ActivatePaneDirection-up', function(window, pane) + conditionalActivatePane(window, pane, 'Up', 'k') +end) +wezterm.on('ActivatePaneDirection-down', function(window, pane) + conditionalActivatePane(window, pane, 'Down', 'j') +end) + +-- set tab-title to current dir if not set explicitly +wezterm.on('format-tab-title', function(tab) + local cwd = get_current_working_dir(tab) + local title = tab.tab_title + local num = tab.tab_index + 1 + + if title and #title > 0 then + return string.format(' %s %s ', num, title) + end + + return string.format(' %s %s ', num, cwd) +end) + +-- show workspace on the left side of tabbar +wezterm.on('update-status', function(window) + local workspace = mux.get_active_workspace() + window:set_left_status(string.format(' %s ', workspace)) +end) + +-- always maximise and start default session with mutt, neorg and dotfiles +wezterm.on('gui-startup', function() + local tab, pane, window = mux.spawn_window({}) + window:gui_window():maximize() +end) + +return config diff --git a/zsh/aliases.zsh b/zsh/aliases.zsh index 9a8b12bd..08b21568 100644 --- a/zsh/aliases.zsh +++ b/zsh/aliases.zsh @@ -4,7 +4,6 @@ alias ..='cd ..' alias O="cd ~ && mbsync -a && mu index" alias g="git" alias gd="git diff" -alias gf="git-flow" alias ggpl='git pull origin $(current_branch)' alias ggpnp='git pull origin $(current_branch) && git push origin $(current_branch)' alias ggps='git push origin $(current_branch)' @@ -20,8 +19,6 @@ alias ns="npm start" alias out="node ~/Dotfiles/other/out/main.js" alias q='exit' alias sudo='sudo ' -alias t='tmux -u -2' -alias ta='tmux -u attach' alias to='tiptop --net en0' alias upall='n lts && topgrade && npm-check -gu && vimup && brew cleanup && brew autoremove' alias v=$EDITOR diff --git a/zsh/exports.zsh b/zsh/exports.zsh index c9dedb58..8080b9cd 100644 --- a/zsh/exports.zsh +++ b/zsh/exports.zsh @@ -6,6 +6,7 @@ export EDITOR="/opt/homebrew/bin/nvim" export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 export LC_CTYPE=$LANG +export LC_COLLATE=C export LESS="-F -i -J -M -R -W -x2 -X -z-4" export MANPATH=/opt/homebrew/share/man:$MANPATH export PAGER="less -F -i -J -M -R -W -x2 -X -z-4" @@ -40,12 +41,10 @@ export PATH="$PYENV_ROOT/bin:$PATH" # fzf colors export FZF_DEFAULT_COMMAND="rg --files --hidden --follow --glob '!.git'" +export FZF_DEFAULT_OPTS="${FZF_DEFAULT_OPTS} ${FZF_THEME}" # n node version management export N_PREFIX="$HOME/n"; [[ :$PATH: == *":$N_PREFIX/bin:"* ]] || PATH+=":$N_PREFIX/bin" # Added by n-install (see http://git.io/n-install-repo). -# tt-time-tracker -export SHEET_FILE='/Users/webgefrickel/Documents/tt-time-tracker.json' - # lazygit export LG_CONFIG_FILE="/Users/webgefrickel/.config/lazygit/config.yml" diff --git a/zsh/zshrc b/zsh/zshrc index f7d1619f..c6d942a5 100644 --- a/zsh/zshrc +++ b/zsh/zshrc @@ -11,12 +11,19 @@ autoload -Uz _zinit (( ${+_comps} )) && _comps[zinit]=_zinit # plugins -zinit wait lucid for \ - light-mode zsh-users/zsh-autosuggestions \ - light-mode zsh-users/zsh-completions \ - light-mode zdharma-continuum/fast-syntax-highlighting \ - light-mode PZT::modules/history/init.zsh \ - light-mode PZT::modules/completion/init.zsh +zi load zsh-users/zsh-autosuggestions +zi load zsh-users/zsh-completions +zi load zdharma-continuum/fast-syntax-highlighting +zi load starship/starship +zi snippet PZTM::history +zi snippet PZTM::completion + +# Fixes for unicode +setopt COMBINING_CHARS + +# additional gruvbox colors +source ~/.local/share/nvim/lazy/gruvbox-baby/extras/bash/MEDIUM.bash +source ~/.local/share/nvim/lazy/gruvbox-baby/extras/fzf/fzf.theme # exports, functions and aliases source ~/dotfiles/zsh/exports.zsh @@ -34,7 +41,6 @@ eval "$(jump shell)" eval "$(rbenv init - --no-rehash)" eval "$(pyenv init --path --no-rehash)" -# colors -source ~/.local/share/nvim/lazy/gruvbox-baby/extras/bash/MEDIUM.bash -source ~/.local/share/nvim/lazy/gruvbox-baby/extras/fzf/fzf.theme +# chat-gpt, hooray source ~/OPENAI_API_KEY.sh +