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
main
Steffen Rademacker 7 months ago
parent b65c726cc4
commit 4565a06df6

@ -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

@ -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)

@ -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

@ -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

@ -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

@ -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

@ -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 <cmd>call system("nc localhost 8377", @0)<cr>')
map('v', 'y', 'y <cmd>call system("nc localhost 8377", @0)<cr>')
map('v', 'Y', 'y <cmd>call system("nc localhost 8377", @0)<cr>')
-- Swap v and CTRL-V, because Block mode is more useful
map('n', 'v', '<C-V>')
@ -42,14 +39,14 @@ map('i', '!', '!<c-g>u')
map('i', '?', '?<c-g>u')
-- bubbling of lines/selections with alt + hjkl
map('n', '˚', ':move .-2<cr>', { noremap = false })
map('n', '', ':move .+1<cr>', { noremap = false })
map('n', '˙', '<<', { noremap = false })
map('n', '¬', '>>', { noremap = false })
map('v', '˚', ":move '<-2<cr>gv", { noremap = false })
map('v', '', ":move '>+1<cr>gv", { noremap = false })
map('v', '˙', '<gv', { noremap = false })
map('v', '¬', '>gv', { noremap = false })
map('n', '<M-k>', ':move .-2<cr>', { noremap = false })
map('n', '<M-j>', ':move .+1<cr>', { noremap = false })
map('n', '<M-h>', '<<', { noremap = false })
map('n', '<M-l>', '>>', { noremap = false })
map('v', '<M-k>', ":move '<-2<cr>gv", { noremap = false })
map('v', '<M-j>', ":move '>+1<cr>gv", { noremap = false })
map('v', '<M-h>', '<gv', { noremap = false })
map('v', '<M-l>', '>gv', { noremap = false })
-- use the arrowkeys for usefull stuff in normal mode -- switching buffers
map('n', '<up>', '<cmd>bfirst<cr>')
@ -101,3 +98,12 @@ map('n', '<F5>', '<cmd>checktime<cr><cmd>redraw!<cr>');
map('n', '<leader>ve', '<cmd>e $MYVIMRC<cr>')
map('n', '<leader>vr', '<cmd>source $MYVIMRC<cr>')
map('n', '<leader>w', '<cmd>set wrap! wrap?<cr>')
-- Navigator.nvim
map('n', '<C-h>', '<cmd>NavigatorLeft<cr>')
map('n', '<C-j>', '<cmd>NavigatorDown<cr>')
map('n', '<C-k>', '<cmd>NavigatorUp<cr>')
map('n', '<C-l>', '<cmd>NavigatorRight<cr>')
-- FTerm.nvim
-- map('n', '-', '<cmd>lua require("FTerm").run("nnn")<cr>')

@ -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'

@ -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",

@ -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

@ -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

@ -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,

@ -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) "

@ -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'

@ -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

@ -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

@ -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"

@ -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

Loading…
Cancel
Save