From c6a6c7dfab1e67012670ff4a5b1bc70c40d016c3 Mon Sep 17 00:00:00 2001 From: Felix Delattre Date: Sat, 4 Mar 2023 13:04:46 +0100 Subject: [PATCH] Add .gitconfig Add .skhdrc Add .vimrc Add .yabairc --- dot_gitconfig | 59 ++++++ dot_skhdrc | 149 +++++++++++++++ dot_vimrc | 423 +++++++++++++++++++++++++++++++++++++++++ executable_dot_yabairc | 74 +++++++ 4 files changed, 705 insertions(+) create mode 100644 dot_gitconfig create mode 100644 dot_skhdrc create mode 100644 dot_vimrc create mode 100644 executable_dot_yabairc diff --git a/dot_gitconfig b/dot_gitconfig new file mode 100644 index 0000000..85bb5e7 --- /dev/null +++ b/dot_gitconfig @@ -0,0 +1,59 @@ +[include] + path = .gituser # Store personal data in external file +[alias] + b = branch + c = checkout + d = diff + co = commit + l = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(auto)%d%C(reset)' + ll = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset) %C(bold cyan)(committed: %cD)%C(reset) %C(auto)%d%C(reset)%n'' %C(white)%s%C(reset)%n'' %C(dim white)- %an <%ae> %C(reset) %C(dim white)(committer: %cn <%ce>)%C(reset)' + ls = ls-files + pl = pull + ps = push + r = rebase + s = status + sa = stash apply + sc = stash clear + st = stash + w = whatchanged -p + wo = whatchanged -p origin.. + ign = ls-files -o -i --exclude-standard + track = branch --set-upstream + undo = reset --soft HEAD^ + unstage = reset HEAD -- +[color] + branch = auto + diff = auto + status = auto + ui = auto +[color "branch"] + current = yellow reverse + local = yellow + remote = green +[color "diff"] + meta = yellow bold + frag = magenta bold + old = red bold + new = green bold +[color "status"] + added = yellow + changed = green + untracked = cyan +[push] + default = simple + autoSetupRemote = true +[pull] + rebase = true +[core] + editor = nvim + excludesfile = /Users/felix.delattre/.gitignore_global + +[user] + name = Felix Delattre + email = felix.delattre@up42.com +[difftool "sourcetree"] + cmd = opendiff \"$LOCAL\" \"$REMOTE\" + path = +[mergetool "sourcetree"] + cmd = /Applications/Sourcetree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\" + trustExitCode = true diff --git a/dot_skhdrc b/dot_skhdrc new file mode 100644 index 0000000..e80f8a1 --- /dev/null +++ b/dot_skhdrc @@ -0,0 +1,149 @@ +####### Shortcut Hotkeys ############# +# open terminal +alt - return : open -a iTerm + +# restart Yabi, SpaceBar, and SKHD +alt + shift - r : \ + launchctl kickstart -k "gui/${UID}/homebrew.mxcl.yabai"; \ + skhd --reload + + +####### Window Management Hotkeys ############# +# change focus +alt - h : yabai -m window --focus west +alt - j : yabai -m window --focus south +alt - k : yabai -m window --focus north +alt - l : yabai -m window --focus east +# (alt) change focus (using arrow keys) +alt - left : yabai -m window --focus west +alt - down : yabai -m window --focus south +alt - up : yabai -m window --focus north +alt - right : yabai -m window --focus east + +# shift window in current workspace +alt + shift - h : yabai -m window --swap west || $(yabai -m window --display west; yabai -m display --focus west) +alt + shift - j : yabai -m window --swap south || $(yabai -m window --display south; yabai -m display --focus south) +alt + shift - k : yabai -m window --swap north || $(yabai -m window --display north; yabai -m display --focus north) +alt + shift - l : yabai -m window --swap east || $(yabai -m window --display east; yabai -m display --focus east) +# alternatively, use the arrow keys +alt + shift - left : yabai -m window --swap west || $(yabai -m window --display west; yabai -m display --focus west) +alt + shift - down : yabai -m window --swap south || $(yabai -m window --display south; yabai -m display --focus south) +alt + shift - up : yabai -m window --swap north || $(yabai -m window --display north; yabai -m display --focus north) +alt + shift - right : yabai -m window --swap east || $(yabai -m window --display east; yabai -m display --focus east) + +# set insertion point in focused container +alt + ctrl - h : yabai -m window --insert west +alt + ctrl - j : yabai -m window --insert south +alt + ctrl - k : yabai -m window --insert north +alt + ctrl - l : yabai -m window --insert east +# (alt) set insertion point in focused container using arrows +alt + ctrl - left : yabai -m window --insert west +alt + ctrl - down : yabai -m window --insert south +alt + ctrl - up : yabai -m window --insert north +alt + ctrl - right : yabai -m window --insert east + +# go back to previous workspace (kind of like back_and_forth in i3) +alt - b : yabai -m space --focus recent + +# move focused window to previous workspace +alt + shift - b : yabai -m window --space recent; \ + yabai -m space --focus recent + +# navigate workspaces next / previous using arrow keys +# cmd - left : yabai -m space --focus prev +# cmd - right : yabai -m space --focus next + +# move focused window to next/prev workspace +alt + shift - 1 : yabai -m window --space 1 +alt + shift - 2 : yabai -m window --space 2 +alt + shift - 3 : yabai -m window --space 3 +alt + shift - 4 : yabai -m window --space 4 +alt + shift - 5 : yabai -m window --space 5 +alt + shift - 6 : yabai -m window --space 6 +alt + shift - 7 : yabai -m window --space 7 +alt + shift - 8 : yabai -m window --space 8 +alt + shift - 9 : yabai -m window --space 9 +alt + shift - 0 : yabai -m window --space 10 + +# # mirror tree y-axis +alt + shift - y : yabai -m space --mirror y-axis + +# # mirror tree x-axis +alt + shift - x : yabai -m space --mirror x-axis + +# balance size of windows +alt + shift - 0 : yabai -m space --balance + +# increase window size +#alt + shift - a : yabai -m window --resize left:-20:0 +#alt + shift - s : yabai -m window --resize bottom:0:20 +#alt + shift - w : yabai -m window --resize top:0:-20 +#alt + shift - d : yabai -m window --resize right:20:0 + +# decrease window size +#cmd + shift - a : yabai -m window --resize left:20:0 +#cmd + shift - s : yabai -m window --resize bottom:0:-20 +#cmd + shift - w : yabai -m window --resize top:0:20 +#cmd + shift - d : yabai -m window --resize right:-20:0 + +# change layout of desktop +alt - e : yabai -m space --layout bsp +alt - s : yabai -m space --layout float + +# float / unfloat window and center on screen +#alt - t : yabai -m window --toggle float;\ +# yabai -m window --grid 4:4:1:1:2:2 +# float / unfloat window and leave in its current location +alt + shift - space : yabai -m window --toggle float +#alt + ctrl - space : yabai -m window --toggle float + +# make floating window fill screen +alt + cmd - up : yabai -m window --grid 1:1:0:0:1:1 + +# make floating window fill left-half of screen +alt + cmd - left : yabai -m window --grid 1:2:0:0:1:1 + +# make floating window fill right-half of screen +alt + cmd - right : yabai -m window --grid 1:2:1:0:1:1 + +# create desktop, move window and follow focus +alt + shift + cmd - n : yabai -m space --create;\ + index="$(yabai -m query --spaces --display | jq 'map(select(."native-fullscreen" == 0))[-1].index')"; \ + yabai -m window --space "${index}";\ + yabai -m space --focus "${index}" + +# create desktop, move window and stay in current workspace +alt + shift - n : yabai -m space --create;\ + index="$(yabai -m query --spaces --display | jq 'map(select(."native-fullscreen" == 0))[-1].index')"; \ + yabai -m window --space "${index}" + +# create desktop and follow focus +# Note: script fails when workspace is empty due to Yabai not reporting the workspace (bug?) +# best to use the create + move window command instead of creating a blank window +alt - n : yabai -m space --create;\ + index="$(yabai -m query --spaces --display | jq 'map(select(."native-fullscreen" == 0))[-1].index')"; \ + yabai -m space --focus "${index}" + +# destroy desktop +alt + cmd - w : yabai -m space --destroy + +# close focused window +alt - w : yabai -m window --close + +# toggle sticky +alt + ctrl - s : yabai -m window --toggle sticky + +# enter fullscreen mode for the focused container +alt - f : yabai -m window --toggle zoom-fullscreen + +# toggle window native fullscreen +alt + shift - f : yabai -m window --toggle native-fullscreen + +# focus monitor +alt + ctrl - x : yabai -m display --focus recent +alt + ctrl - z : yabai -m display --focus prev +alt + ctrl - c : yabai -m display --focus next +alt + ctrl - 1 : yabai -m display --focus 1 +alt + ctrl - 2 : yabai -m display --focus 2 +alt + ctrl - 3 : yabai -m display --focus 3 + diff --git a/dot_vimrc b/dot_vimrc new file mode 100644 index 0000000..691d3dd --- /dev/null +++ b/dot_vimrc @@ -0,0 +1,423 @@ +" ================================== GENERAL ================================= + +set wildmenu " Better command-line completion +set lazyredraw " Redraw only when we need to + +set relativenumber " Enable relative line numbers +set number " Display current line number + +set tabstop=2 " Number of visual spaces per TAB +set softtabstop=2 " Number of spaces in tab when editing +set shiftwidth=2 " Number of spaces inserted on TAB press +set expandtab " Insert spaces instead of tabs + +set incsearch " Show search matches as you type +set hlsearch " Highlight all search matches +set ignorecase " Use case insensitive search +set smartcase " Except when using capital letters + +set encoding=utf-8 " Default encoding is UTF-8 +scriptencoding utf-8 + +autocmd bufenter set colorcolumn=0 " Don't show colorcolumn by default +autocmd FileType python set colorcolumn=89 " Highlight 89th column for python files + +set cursorline " Highlight current line +set fillchars=vert:🭰,fold:-,eob:\ , + +set splitbelow " Vertical split splits below the current buffer +set splitright " Horizontalsplit splits at the right of the current buffer + +set nowrap " Disable line wrap +set noswapfile " Disavle swap file + +set confirm " Always ask for saving changes + +set background=dark " Use dark UI + +set diffopt+=vertical " Use vertical split for diffs + +set list " Show unprintable chars +set listchars=tab:>-,trail:•,extends:#,nbsp:• " List of chars to show + +set history=100 " Remember 100 last commands +set undolevels=100 " Use more levels of undo + +set nofoldenable " Don't fold by default +set foldmethod=indent " Fold based on indentation +set foldnestmax=5 " Maximum fold level + +set scrolloff=4 " Keep 4 lines above and below while scrolling + +highlight NonText ctermfg=0 + +" ============================== ABBREVIATIONS =============================== +cnoreabbrev Qa qa +cnoreabbrev QA qa +cnoreabbrev Wq wq +cnoreabbrev WQ wq +cnoreabbrev Wqa wqa +cnoreabbrev WQa wqa +cnoreabbrev WQA wqa + +" =================================== KEYS =================================== + +" Split navigations +nnoremap +nnoremap +nnoremap +nnoremap + +" Change buffer width +nnoremap > :vertical res +1 +nnoremap < :vertical res -1 + +" Change buffer height +nnoremap + :res +1 +nnoremap - :res -1 + +" Use H and L to move at the beggining and at the end of the line +nnoremap L $ +nnoremap H ^ + +" Set Space as leader key +let mapleader = ' ' + +" Open this file on F12 +nnoremap :vsplit ~/.vimrc + +" Search mappings: These will make it so that going to the next one in a +" search will center on the line it's found in. +nnoremap n nzzzv +nnoremap N Nzzzv + +" Insert python breakpoint +map obreakpoint() + +" Copy to clipboard +vnoremap y "+y +nnoremap Y "+yg_ +nnoremap y "+y +nnoremap yy "+yy + +" Paste from clipboard +nnoremap p "+p +nnoremap P "+P +vnoremap p "+p +vnoremap P "+P + +" Use kj or jk for exit Insert mode, also move cursor rigth +inoremap jk +inoremap kj + +" Use double space for save +nnoremap :w + +" This is important for COC and ALE work together +let g:ale_disable_lsp = 1 + +" Toggle folding by TAB +map za + +" ================================== PLUGINS ================================= +call plug#begin('~/.vim/plugged') + + " Commnet/uncomment the code + Plug 'tpope/vim-commentary' + + " Quoting/parenthesizing made simple + Plug'tpope/vim-surround' + + " Enable repeating supported plugin maps with '.' + Plug 'tpope/vim-repeat' + + " Camelcase, undersore, acronym words motions + Plug 'chaoren/vim-wordmotion' + + " Fuzzy funder + Plug 'junegunn/fzf.vim' + + " Asynchronous linting/fixing + Plug 'dense-analysis/ale' + + " Working with CSV files + Plug 'chrisbra/csv.vim' + + " Copy link to line in repo + Plug 'biggerfisch/vim-gurl' + + " A tree file system explorer + Plug 'scrooloose/nerdtree' + + " Displays tags in a window, ordered by scope + Plug 'majutsushi/tagbar' + + " === Git === + + " A Git wrapper + Plug 'tpope/vim-fugitive' + + " Shows a git diff in the gutter (sign column) and stages/undoes hunks + Plug 'airblade/vim-gitgutter' + + " A plugin of NERDTree showing git status + Plug 'Xuyuanp/nerdtree-git-plugin' + + " Autocompletion + Plug 'neoclide/coc.nvim', {'branch': 'release'} + + " === Python === + + " Python docstring generator + Plug 'heavenshell/vim-pydocstring' + + " Enhanced syntax highlightitng + Plug 'sheerun/vim-polyglot' + + " No-BS Python code folding + Plug 'tmhedberg/SimpylFold' + + " Syntax highlight for requerements.txt + Plug 'raimon49/requirements.txt.vim', {'for': 'requirements'} + + " === UI === + + " Retro groove color scheme + Plug 'morhetz/gruvbox' + + " Rainbow delimiters + Plug 'luochen1990/rainbow' + + " Lean & mean status/tabline + Plug 'bling/vim-airline' + + " Visually displaying indent levels + Plug 'Yggdroot/indentLine' + +call plug#end() + +" =============================== PLUGINS SETUP ============================== + + +" === Rainbow === +let g:rainbow_active = 1 + + +" === Tagbar === +map :TagbarToggle +let g:tagbar_autofocus = 0 + + +" === Indent lines === +let g:indentLine_char = '🭰' + + +" === Theme === +colorscheme gruvbox +let g:gruvbox_italic = 1 +set background=dark + + +" === Airline === +let g:airline_powerline_fonts = 1 +let g:airline#extensions#tagbar#enabled = 1 +let g:airline#extensions#ale#enabled = 1 +let g:airline_skip_empty_sections = 1 +let g:airline#parts#ffenc#skip_expected_string='utf-8[unix]' +let g:airline#extensions#virtualenv#enabled = 1 + +function! AirlineInit() + let g:airline_section_a = airline#section#create_left(['branch']) + let g:airline_section_b = airline#section#create_left(['file']) + let g:airline_section_c = airline#section#create_left(['tagbar']) + let g:airline_section_x = airline#section#create_left(['readonly']) + let g:airline_section_z = airline#section#create_right(['%l:%c/%L']) +endfunction + +autocmd VimEnter * call AirlineInit() + + +" === Colorizer === +let g:colorizer_auto_color = 1 + + +" === Ale === +map :ALEFix +let g:ale_list_window_size = 5 +let g:ale_sign_error = '•' +let g:ale_sign_warning = '•' +let g:ale_echo_msg_error_str = 'E' +let g:ale_echo_msg_warning_str = 'W' +let g:ale_echo_msg_format = '[%linter%] %s [%severity%]' +let g:ale_lint_on_text_changed = 'never' +let g:ale_linters = { +\ 'python': ['flake8', 'black', 'mypy'], +\ 'md': ['mdl'], +\ 'yaml': ['yamllint'], +\ 'yml': ['yamllint'], +\} +let g:ale_fixers = { +\ '*': ['remove_trailing_lines', 'trim_whitespace'], +\ 'python': ['black', 'isort'], +\ 'yaml': ['yamlfix'], +\ 'yml': ['yamlfix'], +\ 'json': ['jq'] +\} + +nnoremap :ALENext +nnoremap :ALEPrevious + + +" === GitGutter === +nnoremap :GitGutterPrevHunk +nnoremap :GitGutterNextHunk +nnoremap U :GitGutterUndoHunk +highlight SignColumn ctermbg=bg +highlight GitGutterAdd ctermfg=2 ctermbg=bg +highlight GitGutterChange ctermfg=3 ctermbg=bg +highlight GitGutterDelete ctermfg=1 ctermbg=bg +highlight GitGutterChangeDelete ctermfg=166 ctermbg=bg +let g:gitgutter_highlight_linenrs = 0 +let g:gitgutter_sign_modified_removed = '~͟' +let g:gitgutter_sign_removed_above_and_below = '_͞' + + +" === FZF === +map :Ag +map :GFiles +nnoremap :Ag + +" Save search results to quickfix list +function! s:build_quickfix_list(lines) + call setqflist(map(copy(a:lines), '{ "filename": v:val }')) + copen + cc +endfunction + +let g:fzf_action = { +\ 'ctrl-q': function('s:build_quickfix_list'), +\ 'ctrl-t': 'tab split', +\ 'ctrl-x': 'split', +\ 'ctrl-v': 'vsplit', +\ 'ctrl-a': 'select-all' +\} + +command! -bang -nargs=? -complete=dir GFiles + \ call fzf#vim#gitfiles(, fzf#vim#with_preview(), 0) + +command! -bang -nargs=* Ag call fzf#vim#ag(, ' --ignore-dir={node_modules,fme,venv,jest_cache,logs} --ignore=package-lock.json', fzf#vim#with_preview({'options': '--delimiter : --nth 4..'}), 0) + +autocmd! FileType fzf set laststatus=0 noshowmode noruler + \| autocmd BufLeave set laststatus=2 showmode ruler + + +" === NERDTree === +map :NERDTreeToggle +nmap F :NERDTreeFind + +let NERDTreeMapJumpParent='h' +let NERDTreeMapOpenSplit='' +let NERDTreeMapOpenVSplit='' +let NERDTreeShowHidden=1 + +augroup vimrc + " Close vim when only NERDTree is open + autocmd bufenter * if ( + \winnr("$") == 1 && + \exists("b:NERDTree") && + \b:NERDTree.isTabTree() + \) | q | endif +augroup END + +" Files to hide in NERDTree +let NERDTreeIgnore = ['\~$', '\.pyc$', '\.pyo$', '\.class$', 'pip-log\.txt$', + \'\.o$', '__pycache__', '.git', 'venv', '.cache'] + +let NERDTreeHighlightCursorline = 0 +let g:NERDTreeFileExtensionHighlightFullName = 1 +let g:NERDTreeExactMatchHighlightFullName = 1 +let g:NERDTreePatternMatchHighlightFullName = 1 + +" Higlight NERDTree's filetypes with given color +function! NERDTreeHighlightFile(ext, color) + exec 'autocmd filetype nerdtree highlight ' . a:ext.' ctermfg='. a:color + exec 'autocmd filetype nerdtree syn match ' . a:ext.' #^\s\+.*'. a:ext.'$#' +endfunction + +" Apply above function to all file types +call NERDTreeHighlightFile('css', 5) +call NERDTreeHighlightFile('csv', 8) +call NERDTreeHighlightFile('geojson', 10) +call NERDTreeHighlightFile('html', 166) +call NERDTreeHighlightFile('ipynb', 12) +call NERDTreeHighlightFile('js', 3) +call NERDTreeHighlightFile('json', 2) +call NERDTreeHighlightFile('less', 13) +call NERDTreeHighlightFile('log', 7) +call NERDTreeHighlightFile('md', 6) +call NERDTreeHighlightFile('MD', 6) +call NERDTreeHighlightFile('rst', 14) +call NERDTreeHighlightFile('mjml', 208) +call NERDTreeHighlightFile('mjs', 11) +call NERDTreeHighlightFile('py', 4) +call NERDTreeHighlightFile('scss', 13) +call NERDTreeHighlightFile('sh', 1) +call NERDTreeHighlightFile('sql', 9) +call NERDTreeHighlightFile('ts', 11) +call NERDTreeHighlightFile('spec.ts', 8) +call NERDTreeHighlightFile('xml', 15) +call NERDTreeHighlightFile('yaml', 'magenta') +call NERDTreeHighlightFile('yml', 'magenta') + +" === NERDTree Git Plugin === +" Prefixes for files with different git status +let g:NERDTreeGitStatusIndicatorMapCustom = { + \ 'Modified' : '*', + \ 'Staged' : '+', + \ 'Untracked' : '_', + \ 'Renamed' : '%', + \ 'Unmerged' : '═', + \ 'Deleted' : 'x', + \ 'Dirty' : '@', + \ 'Clean' : 'C', + \ 'Ignored' : '•', + \ 'Unknown' : '?'} + +" === CSV.vim === +augroup filetypedetect + au! BufRead,BufNewFile *.csv,*.dat,*.CSV setfiletype csv +augroup END + +let g:vim_json_syntax_conceal = 0 + +" === PyDocstring === +nmap (pydocstring) + + +" === COC === +let g:coc_global_extensions = ['coc-tsserver', 'coc-jedi'] + +" Remap keys for applying codeAction to the current line. +nmap a (coc-codeaction) + +" Apply AutoFix to problem on the current line. +nmap f (coc-fix-current) + +" Completion +nmap gd (coc-definition) +nmap gt (coc-type-definition) +nmap gi (coc-implementation) +nmap gr (coc-references) + +" Prettify selected code. +xmap p (coc-format-selected) +nmap p (coc-format-selected) + +let g:python_highlight_all = 1 + +" Use (Shift-)TAB to iterate through autocomplete list +inoremap coc#pum#visible() ? coc#pum#next(1) : "\" +inoremap coc#pum#visible() ? coc#pum#prev(1) : "\" + +" ======== Vim Gurl ====================== +let g:vimgurl_yank_register = '+' " copy to system buffer diff --git a/executable_dot_yabairc b/executable_dot_yabairc new file mode 100644 index 0000000..acb4611 --- /dev/null +++ b/executable_dot_yabairc @@ -0,0 +1,74 @@ +#!/usr/bin/env sh + +# the scripting-addition must be loaded manually if +# you are running yabai on macOS Big Sur. Uncomment +# the following line to have the injection performed +# when the config is executed during startup. +# +# for this to work you must configure sudo such that +# it will be able to run the command without password +# +# see this wiki page for information: +# - https://github.com/koekeishiya/yabai/wiki/Installing-yabai-(latest-release) +# +# sudo yabai --load-sa +# yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa" + +#!/usr/bin/env sh + +# global settings +yabai -m config mouse_follows_focus off +yabai -m config focus_follows_mouse autofocus + +yabai -m config window_placement second_child +yabai -m config window_topmost off + +yabai -m config window_opacity off +yabai -m config window_opacity_duration 0.0 +yabai -m config window_shadow on + +yabai -m config active_window_opacity 1.0 +yabai -m config normal_window_opacity 0.90 +yabai -m config split_ratio 0.50 +yabai -m config auto_balance off + +yabai -m config active_window_border_color 0xff775759 +yabai -m config normal_window_border_color 0xff555555 + +# Mouse support +yabai -m config mouse_modifier alt +yabai -m config mouse_action1 move +yabai -m config mouse_action2 resize + +# general space settings +yabai -m config layout bsp +yabai -m config bottom_padding 0 +yabai -m config left_padding 0 +yabai -m config right_padding 0 +yabai -m config window_gap 0 + +# float system preferences +yabai -m rule --add app='^System Information$' manage=off +yabai -m rule --add app='^System Preferences$' manage=off +yabai -m rule --add title='Preferences$' manage=off + +# float Better Touch Tool Preference window +# yabai -m rule --add title='^BetterTouchTool' manage=off + +# float settings windows +yabai -m rule --add title='Settings$' manage=off + +# float Cisco AnyConnect +yabai -m rule --add app='^Cisco AnyConnect Secure Mobility Client$' manage=off + +# float IntelliJ Preference panes +yabai -m rule --add app='IntelliJ IDEA' title='^$' manage=off +yabai -m rule --add app='IntelliJ IDEA' title='Project Structure' manage=off +yabai -m rule --add app='IntelliJ IDEA' title='Preferences' manage=off +yabai -m rule --add app='IntelliJ IDEA' title='Edit configuration' manage=off + +# spacebar padding on top screen +SPACEBAR_HEIGHT=$(spacebar -m config height) +yabai -m config external_bar all:$SPACEBAR_HEIGHT:0 + +echo "yabai configuration loaded.."