├── zsh ├── .zsh │ ├── aliases │ │ ├── work │ │ │ └── .gitkeep │ │ └── node │ │ │ └── aliases.zsh │ ├── scripts │ │ ├── work │ │ │ └── .gitkeep │ │ ├── virtualbox │ │ │ ├── vm-up │ │ │ ├── vm-off │ │ │ └── vm-down │ │ └── node │ │ │ └── npm-versions │ └── aliases.zsh └── .zshrc ├── .gitignore ├── git ├── .gitignore_global └── .gitconfig ├── uninstall.sh ├── README.md ├── install.sh ├── tmux ├── .tmux │ ├── scripts │ │ └── status-right.sh │ └── theme.conf └── .tmux.conf ├── themes ├── dogrun │ ├── dogrun-gnome-terminal.sh │ └── dogrun.itermcolors └── onehalf │ ├── onehalfdark.sh │ └── onehalflight.sh └── config └── .config ├── nvim └── init.vim └── alacritty └── alacritty.yml /zsh/.zsh/aliases/work/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zsh/.zsh/scripts/work/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /zsh/.zsh/aliases/node/aliases.zsh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env zsh 2 | 3 | alias runscript="npm run-script" 4 | 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | zsh/.zsh/aliases/work/*.zsh 2 | zsh/.zsh/scripts/work/* 3 | */work/* 4 | zsh/.zsh/zplug 5 | zsh/.zsh/.zplug 6 | *.netrwhist 7 | vim/.vim/bundle 8 | vim/.vim/tmp 9 | tmux/.tmux/plugins 10 | config/.config/i3 11 | -------------------------------------------------------------------------------- /git/.gitignore_global: -------------------------------------------------------------------------------- 1 | # Compiled Python files 2 | *.pyc 3 | 4 | # Mac stuff 5 | .DS_Store 6 | Desktop.ini 7 | ._* 8 | Thumbs.db 9 | .Spotlight-V100 10 | .Trashes 11 | .idea 12 | .vscode 13 | newrelic_agent.log 14 | .env 15 | -------------------------------------------------------------------------------- /zsh/.zsh/scripts/virtualbox/vm-up: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env zsh 2 | 3 | PACKAGE=${@: -1} 4 | 5 | if [ -z "$PACKAGE" ]; then 6 | echo "I need the name of a VM to start up!" 7 | exit 1 8 | fi 9 | 10 | VBoxManage startvm $1 --type headless 11 | -------------------------------------------------------------------------------- /zsh/.zsh/scripts/virtualbox/vm-off: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env zsh 2 | 3 | PACKAGE=${@: -1} 4 | 5 | if [ -z "$PACKAGE" ]; then 6 | echo "I need the name of a VM to power off!" 7 | exit 1 8 | fi 9 | 10 | VBoxManage controlvm $1 poweroff 11 | 12 | -------------------------------------------------------------------------------- /zsh/.zsh/scripts/virtualbox/vm-down: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env zsh 2 | 3 | PACKAGE=${@: -1} 4 | 5 | if [ -z "$PACKAGE" ]; then 6 | echo "I need the name of a VM to save state for!" 7 | exit 1 8 | fi 9 | 10 | 11 | VBoxManage controlvm $1 savestate 12 | 13 | -------------------------------------------------------------------------------- /uninstall.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # un-stow config directories 4 | stow -D zsh 5 | stow -D vim 6 | stow -D git 7 | stow -D tmux 8 | stow -D config 9 | 10 | # remove various package managers 11 | rm -rf ~/.vim/bundle/Vundle.vim 12 | rm -rf ~/.zsh/antigen/ 13 | rm -rf ~/.tmux/plugins/tpm 14 | 15 | -------------------------------------------------------------------------------- /zsh/.zsh/scripts/node/npm-versions: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env zsh 2 | 3 | # Get the available versions of an npm package 4 | 5 | JQ=$(which jq) 6 | 7 | if [ -z "$JQ" ]; then 8 | echo "Install jq plz" 9 | exit 1 10 | fi 11 | 12 | PACKAGE=${@: -1} 13 | 14 | if [ -z "$PACKAGE" ]; then 15 | echo "I need a package to look up..." 16 | exit 1 17 | fi 18 | 19 | npm view "$PACKAGE" --json | \ 20 | jq -r '{versions} | .[] | .[]' 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | dotfiles 2 | -------- 3 | 4 | Jack's dotfiles 5 | 6 | To use them: 7 | ``` 8 | $ git clone https://github.com/rhinoceraptor/dotfiles.git ~/ 9 | $ cd dotfiles 10 | $ ./install.sh 11 | ``` 12 | 13 | I am using GNU stow to symlink the configuration files to my home directory. 14 | The stow commands are in ```install.sh```, as well as some other things. 15 | 16 | There is also an ```uninstall.sh``` to clean up if you like. 17 | 18 | -------------------------------------------------------------------------------- /zsh/.zsh/aliases.zsh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env zsh 2 | 3 | UNAME=$(uname) 4 | if [[ "$UNAME" == "Darwin" ]]; then 5 | alias copy="pbcopy" 6 | alias ls="gls --color=auto --group-directories-first -lAh" 7 | elif [[ "$UNAME" == "Linux" ]]; then 8 | alias copy="xclip -selection c" 9 | alias ls="ls --color=auto --group-directories-first -lAh" 10 | alias open="xdg-open >/dev/null 2>&1" 11 | fi 12 | 13 | # Typos 14 | alias vim="nvim" 15 | alias ivm="nvim" 16 | alias sl="ls" 17 | 18 | # Network related convience aliases 19 | alias my-ip="curl ifconfig.me -s" 20 | alias copy-my-ip="my-ip | copy" 21 | alias netscan="arp-scan --interface=en0 --localnet" 22 | 23 | # Quickly generate UUIDs 24 | alias getuuid='uuidgen | tr "[:upper:]" "[:lower:]" | tr -d "\n"' 25 | alias copyuuid="getuuid | copy" 26 | 27 | # Strip EXIF data from photos easily, requires imagemagick 28 | alias exifstrip="mogrify -strip" 29 | -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Check if zsh/git/tmux/stow/nvim/curl already installed 4 | if ! type "zsh" &> /dev/null; then echo "Install zsh!"; exit 1 5 | elif ! type "git" &> /dev/null; then echo "Install git!"; exit 1 6 | elif ! type "tmux" &> /dev/null; then echo "Install tmux!"; exit 1 7 | elif ! type "nvim" &> /dev/null; then echo "Install nvim!"; exit 1 8 | elif ! type "curl" &> /dev/null; then echo "Install curl!"; exit 1 9 | fi 10 | 11 | # Stow config directories 12 | stow zsh 13 | stow git 14 | stow tmux 15 | stow config 16 | 17 | # Create .vim directories 18 | mkdir -p ~/.vim/bundle/ 19 | mkdir -p ~/.vim/tmp/swp 20 | mkdir -p ~/.vim/tmp/undo 21 | 22 | # Clone various package managers from git 23 | curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \ 24 | https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim 25 | git clone https://github.com/zplug/zplug ~/.zsh/zplug 26 | git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm 27 | 28 | # Install vim packages 29 | nvim +PlugInstall 30 | 31 | -------------------------------------------------------------------------------- /tmux/.tmux/scripts/status-right.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | 4 | function battery() { 5 | BATTERY="🔋️" 6 | CHARGER="🔌️" 7 | UNAME=$(uname -a) 8 | 9 | if [[ "$UNAME" =~ .*"Linux".* ]]; then 10 | UPOWER=$(upower -i `upower -e | grep 'BAT'`) 11 | 12 | function getfield() { 13 | echo "$UPOWER" | awk -v field="$1" 'match($0, field) { print $2 };' 14 | } 15 | 16 | PERCENTAGE=$(getfield "percentage") 17 | STATE=$([[ `getfield "state"` =~ .*"discharging".* ]] \ 18 | && echo "$BATTERY" \ 19 | || echo "$CHARGER") 20 | 21 | elif [[ "$UNAME" =~ .*"Darwin".* ]]; then 22 | POWER=$(pmset -g batt) 23 | PERCENTAGE=$(echo "$POWER" | grep -oE "[0-9]{2,3}%") 24 | STATE=$(pmset -g batt | grep -q "Battery Power" && echo "$BATTERY" || echo "$CHARGER") 25 | fi 26 | 27 | if [ -n "$PERCENTAGE" ] && [ -n "$STATE" ]; then 28 | BATTERY_LOW="#[bg=#e06c75]#[fg=#2a2f39]" 29 | BATTERY_MED="#[bg=#e5c07b]#[fg=#2a2f39]" 30 | BATTERY_HIGH="#[bg=#98c379]#[fg=#2a2f39]" 31 | PLUGGED_IN="#[bg=#fafafa]#[fg=#383a42]" 32 | 33 | case $PERCENTAGE in 34 | 100%|9[0-9]%|8[0-9]%|7[0-9]%) COLOR="$BATTERY_HIGH" 35 | ;; 36 | 37 | 6[0-9]%|5[0-9]%|4[0-9]%|3[0-9]%) COLOR="$BATTERY_MED" 38 | ;; 39 | 40 | 2[0-9]%|1[0-9]%|[0-9]%) COLOR="$BATTERY_LOW" 41 | ;; 42 | esac 43 | 44 | printf "%s " "$COLOR $PERCENTAGE $STATE #[default]" 45 | fi 46 | } 47 | 48 | function warp_status() { 49 | if ! type "warp-cli" &> /dev/null; then return; fi 50 | if [[ "$(warp-cli status)" =~ .*"Connected".* ]]; then 51 | printf "%s" "Warp: ✅️" 52 | else 53 | printf "%s" "Warp: ❌️" 54 | fi 55 | } 56 | 57 | function date_time() { 58 | printf "%s" "$(date +'%a %b %d %I:%M %p') " 59 | } 60 | 61 | function main() { 62 | test 63 | battery 64 | 65 | if type "warp-cli" &> /dev/null; then 66 | warp_status 67 | fi 68 | 69 | date_time 70 | } 71 | 72 | main 73 | -------------------------------------------------------------------------------- /tmux/.tmux/theme.conf: -------------------------------------------------------------------------------- 1 | # vi: ft=tmux 2 | 3 | # 4 | # Copied from https://github.com/andersondanilo/tmux-onehalf-theme/blob/master/tmux-onehalf-dark.conf 5 | # 6 | 7 | # 8 | # Window separators 9 | # 10 | set-option -wg window-status-separator "|" 11 | 12 | # 13 | # monitor window changes 14 | # 15 | set-option -wg monitor-activity on 16 | set-option -wg monitor-bell on 17 | 18 | # 19 | # set statusbar update interval 20 | # 21 | set-option -g status-interval 1 22 | 23 | # 24 | ### colorscheme ### 25 | # 26 | 27 | # 28 | # change window screen colors 29 | # 30 | set-option -wg mode-style bg="#98c379",fg="#2a2f39" 31 | 32 | # 33 | # default statusbar colors (terminal bg should be) 34 | # 35 | set-option -g status-style bg="#2a2f39",fg="#868d9b" 36 | 37 | # 38 | # default window title colors 39 | # 40 | set-option -wg window-status-style bg="#2a2f39",fg="#868d9b" 41 | 42 | # 43 | # colors for windows with activity 44 | # 45 | set-option -wg window-status-activity-style bg="#2a2f39",fg="#5da5e1" 46 | 47 | # 48 | # colors for windows with bells 49 | # 50 | set-option -wg window-status-bell-style bg="#e06c75",fg="#2a2f39" 51 | 52 | # 53 | # active window title colors 54 | # 55 | set-option -wg window-status-current-style bg="#98c379",fg="#2a2f39" 56 | 57 | # 58 | # pane border 59 | # 60 | set-option -g pane-active-border-style fg="#98c379" 61 | set-option -g pane-border-style fg="#3f4452" 62 | 63 | # 64 | # message info 65 | # 66 | set-option -g message-style bg="#5da5e1",fg="#2a2f39" 67 | 68 | # 69 | # writing commands inactive 70 | # 71 | set-option -g message-command-style bg="#5d677a",fg="#2a2f39" 72 | 73 | # 74 | # pane number display 75 | # 76 | set-option -g display-panes-active-colour "#98c379" 77 | set-option -g display-panes-colour "#2a2f39" 78 | 79 | # 80 | # clock 81 | # 82 | set-option -wg clock-mode-colour "#98c379" 83 | 84 | # 85 | # copy mode highlighting 86 | # 87 | %if #{>=:#{version},3.2} 88 | set-option -wg copy-mode-match-style "bg=#5d677a,fg=#2a2f39" 89 | set-option -wg copy-mode-current-match-style "bg=#5da5e1,fg=#2a2f39" 90 | %endif 91 | -------------------------------------------------------------------------------- /zsh/.zshrc: -------------------------------------------------------------------------------- 1 | zmodload zsh/zprof 2 | 3 | unsetopt BG_NICE 4 | export TERM='xterm-256color' 5 | 6 | export EDITOR=nvim 7 | 8 | setopt correctall 9 | 10 | HISTFILE="$HOME/.zsh_history" 11 | HISTSIZE=200000 12 | HISTSAVE=200000 13 | SAVEHIST=HISTSIZE 14 | DISABLE_CORRECTION="true" 15 | 16 | setopt BANG_HIST 17 | setopt EXTENDED_HISTORY 18 | setopt INC_APPEND_HISTORY 19 | setopt SHARE_HISTORY 20 | setopt HIST_EXPIRE_DUPS_FIRST 21 | setopt HIST_IGNORE_DUPS 22 | setopt HIST_IGNORE_ALL_DUPS 23 | setopt HIST_FIND_NO_DUPS 24 | setopt HIST_IGNORE_SPACE 25 | setopt HIST_REDUCE_BLANKS 26 | setopt HIST_VERIFY 27 | setopt noflowcontrol 28 | 29 | bindkey -v 30 | export KEYTIMEOUT=1 31 | bindkey '^w' backward-kill-word 32 | bindkey '^p' up-history 33 | bindkey '^n' down-history 34 | 35 | KEYTIMEOUT=1 36 | 37 | clear-screen() clear 38 | bindkey '^o' clear-screen 39 | bindkey -M viins '^?' backward-delete-char 40 | bindkey -M viins '^H' backward-delete-char 41 | zle -N history-substring-search-up 42 | zle -N history-substring-search-down 43 | bindkey '^P' history-substring-search-up 44 | bindkey '^N' history-substring-search-down 45 | zle -N history-substring-search-up 46 | zle -N history-substring-search-down 47 | 48 | PATH="$HOME/.zsh/scripts/node:$PATH" 49 | PATH="$HOME/.zsh/scripts/virtualbox:$PATH" 50 | PATH="$HOME/bin:$PATH" 51 | PATH="$HOME/.npm-packages/bin:$PATH" 52 | 53 | if [[ $(uname -a) =~ .*"Darwin".* ]]; then 54 | alias python="python3" 55 | PATH="$HOME/Library/Python/3.9/bin:$PATH" 56 | fi 57 | 58 | export PAGER=less 59 | export DISPLAY=:0 60 | 61 | export FZF_DEFAULT_COMMAND='rg --files --no-ignore-vcs --hidden' 62 | 63 | autoload -U promptinit; promptinit 64 | 65 | source $HOME/.zsh/aliases.zsh 66 | source $HOME/.zsh/zplug/init.zsh 67 | 68 | source_directory () { 69 | for alias in $1/*.zsh(N); do source $alias; done 70 | } 71 | 72 | source_directory $HOME/.zsh/aliases/node 73 | source_directory $HOME/.zsh/aliases/work 74 | 75 | PATH="$HOME/.pyenv/bin:$PATH" 76 | 77 | zplug "junegunn/fzf-bin", \ 78 | from:gh-r, \ 79 | as:command, \ 80 | rename-to:fzf 81 | 82 | zplug "mafredri/zsh-async", from:github 83 | zplug "sindresorhus/pure", from:github 84 | zplug "zsh-users/zsh-syntax-highlighting", from:github 85 | zplug "zsh-users/zsh-history-substring-search", from:github 86 | zplug "zsh-users/zsh-completions", from:github 87 | 88 | zplug load 89 | 90 | [ -f $HOME/.fzf.zsh ] && source $HOME/.fzf.zsh 91 | 92 | [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh 93 | 94 | -------------------------------------------------------------------------------- /git/.gitconfig: -------------------------------------------------------------------------------- 1 | [user] 2 | name = Jack Lewis 3 | email = jack@jacklew.is 4 | 5 | [alias] 6 | # Add 7 | a = add 8 | aa = add -A 9 | 10 | # Branch 11 | b = branch 12 | bd = branch -D 13 | 14 | # Commit 15 | c = commit 16 | cm = commit -m 17 | ca = commit --amend -m 18 | 19 | # Checkout 20 | co = checkout 21 | com = checkout master 22 | cb = checkout -b 23 | 24 | # Clone 25 | cl = clone 26 | 27 | # Cherry-pick 28 | cp = cherry-pick 29 | 30 | # Diff 31 | di = diff 32 | dc = diff --cached 33 | d = diff HEAD --ignore-space-at-eol -b -w # get all diffs, staged or not 34 | 35 | # Merge 36 | mm = merge master 37 | 38 | # Status 39 | s = status -s 40 | 41 | # Stash 42 | st = stash 43 | sd = stash show -p # stash diff 44 | sp = stash pop 45 | stls = stash list 46 | 47 | # Pull 48 | pl = pull 49 | plo = pull origin 50 | plom = pull origin master 51 | 52 | # Push 53 | ps = push 54 | pso = push origin 55 | psom = push origin master 56 | psog = push origin gh-pages 57 | 58 | # Remote 59 | ra = remote add 60 | rao = remote add origin 61 | rem = remote remove 62 | remo = remote remove origin 63 | 64 | # Reset 65 | r = reset 66 | trash = reset --hard HEAD 67 | 68 | # Logs 69 | l = log --pretty=oneline --decorate --abbrev-commit --max-count=15 70 | ll = log --graph --pretty=format:'%Cred%h%Creset %an: %s %Creset%Cgreen(%cr)%Creset' --abbrev-commit --date=relative 71 | ls = log --oneline --graph 72 | 73 | [color] 74 | diff = auto 75 | status = auto 76 | 77 | [color "diff"] 78 | meta = yellow bold 79 | frag = magenta bold 80 | old = red bold 81 | new = green bold 82 | 83 | [color "status"] 84 | added = cyan bold 85 | branch = cyan bold 86 | changed = magenta bold 87 | deleted = red bold 88 | untracked = yellow bold 89 | 90 | [push] 91 | default = current 92 | 93 | [core] 94 | preloadindex = true 95 | editor = nvim 96 | excludesfile = ~/.gitignore_global 97 | 98 | [mergetool] 99 | path = nvim 100 | 101 | [difftool] 102 | path = nvim 103 | 104 | [mergetool "vimdiff"] 105 | path = nvim 106 | [difftool "vimdiff"] 107 | path = nvim 108 | [url "git@github.com:"] 109 | insteadof = https://github.com/ 110 | [filter "lfs"] 111 | clean = git-lfs clean -- %f 112 | smudge = git-lfs smudge -- %f 113 | process = git-lfs filter-process 114 | required = true 115 | -------------------------------------------------------------------------------- /themes/dogrun/dogrun-gnome-terminal.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Base16 - Gnome Terminal color scheme install script 3 | 4 | [[ -z "$PROFILE_NAME" ]] && PROFILE_NAME="dogrun" 5 | [[ -z "$PROFILE_SLUG" ]] && PROFILE_SLUG="dogrun" 6 | [[ -z "$DCONF" ]] && DCONF=dconf 7 | [[ -z "$UUIDGEN" ]] && UUIDGEN=uuidgen 8 | 9 | dset() { 10 | local key="$1"; shift 11 | local val="$1"; shift 12 | 13 | if [[ "$type" == "string" ]]; then 14 | val="'$val'" 15 | fi 16 | 17 | "$DCONF" write "$PROFILE_KEY/$key" "$val" 18 | } 19 | 20 | # because dconf still doesn't have "append" 21 | dlist_append() { 22 | local key="$1"; shift 23 | local val="$1"; shift 24 | 25 | local entries="$( 26 | { 27 | "$DCONF" read "$key" | tr -d '[]' | tr , "\n" | fgrep -v "$val" 28 | echo "'$val'" 29 | } | head -c-1 | tr "\n" , 30 | )" 31 | 32 | "$DCONF" write "$key" "[$entries]" 33 | } 34 | 35 | # Newest versions of gnome-terminal use dconf 36 | if which "$DCONF" > /dev/null 2>&1; then 37 | [[ -z "$BASE_KEY_NEW" ]] && BASE_KEY_NEW=/org/gnome/terminal/legacy/profiles: 38 | 39 | if [[ -n "`$DCONF list $BASE_KEY_NEW/`" ]]; then 40 | if which "$UUIDGEN" > /dev/null 2>&1; then 41 | PROFILE_SLUG=`uuidgen` 42 | fi 43 | 44 | if [[ -n "`$DCONF read $BASE_KEY_NEW/default`" ]]; then 45 | DEFAULT_SLUG=`$DCONF read $BASE_KEY_NEW/default | tr -d \'` 46 | else 47 | DEFAULT_SLUG=`$DCONF list $BASE_KEY_NEW/ | grep '^:' | head -n1 | tr -d :/` 48 | fi 49 | 50 | DEFAULT_KEY="$BASE_KEY_NEW/:$DEFAULT_SLUG" 51 | PROFILE_KEY="$BASE_KEY_NEW/:$PROFILE_SLUG" 52 | 53 | # copy existing settings from default profile 54 | $DCONF dump "$DEFAULT_KEY/" | $DCONF load "$PROFILE_KEY/" 55 | 56 | # add new copy to list of profiles 57 | dlist_append $BASE_KEY_NEW/list "$PROFILE_SLUG" 58 | 59 | # update profile values with theme options 60 | dset visible-name "'$PROFILE_NAME'" 61 | dset palette "['#000000', '#ff6e67', '#7cbe8c', '#f4f99d', '#929be5', '#ff92d0', '#2aacbd', '#c7c7c7', '#5d6872', '#d5635e', '#6ca97a', '#b3c580', '#838cd6', '#ff92d0', '#2aacbd', '#ffffff']" 62 | dset background-color "'#222433'" 63 | dset foreground-color "'#9ea3c0'" 64 | dset bold-color "'#9ea3c0'" 65 | dset bold-color-same-as-fg "true" 66 | dset use-theme-colors "false" 67 | dset use-theme-background "false" 68 | 69 | unset PROFILE_NAME 70 | unset PROFILE_SLUG 71 | unset DCONF 72 | unset UUIDGEN 73 | exit 0 74 | fi 75 | fi 76 | 77 | # Fallback for Gnome 2 and early Gnome 3 78 | [[ -z "$GCONFTOOL" ]] && GCONFTOOL=gconftool 79 | [[ -z "$BASE_KEY" ]] && BASE_KEY=/apps/gnome-terminal/profiles 80 | 81 | PROFILE_KEY="$BASE_KEY/$PROFILE_SLUG" 82 | 83 | gset() { 84 | local type="$1"; shift 85 | local key="$1"; shift 86 | local val="$1"; shift 87 | 88 | "$GCONFTOOL" --set --type "$type" "$PROFILE_KEY/$key" -- "$val" 89 | } 90 | 91 | # Because gconftool doesn't have "append" 92 | glist_append() { 93 | local type="$1"; shift 94 | local key="$1"; shift 95 | local val="$1"; shift 96 | 97 | local entries="$( 98 | { 99 | "$GCONFTOOL" --get "$key" | tr -d '[]' | tr , "\n" | fgrep -v "$val" 100 | echo "$val" 101 | } | head -c-1 | tr "\n" , 102 | )" 103 | 104 | "$GCONFTOOL" --set --type list --list-type $type "$key" "[$entries]" 105 | } 106 | 107 | # Append the Base16 profile to the profile list 108 | glist_append string /apps/gnome-terminal/global/profile_list "$PROFILE_SLUG" 109 | 110 | gset string visible_name "$PROFILE_NAME" 111 | gset string palette "#000000:#ff6e67:#7cbe8c:#f4f99d:#929be5:#ff92d0:#2aacbd:#c7c7c7:#5d6872:#d5635e:#6ca97a:#b3c580:#838cd6:#ff92d0:#2aacbd:#ffffff" 112 | gset string background_color "#222433" 113 | gset string foreground_color "#9ea3c0" 114 | gset string bold_color "#9ea3c0" 115 | gset bool bold_color_same_as_fg "true" 116 | gset bool use_theme_colors "false" 117 | gset bool use_theme_background "false" 118 | 119 | unset PROFILE_NAME 120 | unset PROFILE_SLUG 121 | unset DCONF 122 | unset UUIDGEN 123 | -------------------------------------------------------------------------------- /themes/onehalf/onehalfdark.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # One Half - Gnome Terminal color scheme install script 3 | # Based on https://github.com/chriskempson/base16-gnome-terminal 4 | 5 | [[ -z "$PROFILE_NAME" ]] && PROFILE_NAME="One Half Dark" 6 | [[ -z "$PROFILE_SLUG" ]] && PROFILE_SLUG="one-half-dark" 7 | [[ -z "$DCONF" ]] && DCONF=dconf 8 | [[ -z "$UUIDGEN" ]] && UUIDGEN=uuidgen 9 | 10 | dset() { 11 | local key="$1"; shift 12 | local val="$1"; shift 13 | 14 | if [[ "$type" == "string" ]]; then 15 | val="'$val'" 16 | fi 17 | 18 | "$DCONF" write "$PROFILE_KEY/$key" "$val" 19 | } 20 | 21 | # because dconf still doesn't have "append" 22 | dlist_append() { 23 | local key="$1"; shift 24 | local val="$1"; shift 25 | 26 | local entries="$( 27 | { 28 | "$DCONF" read "$key" | tr -d '[]' | tr , "\n" | fgrep -v "$val" 29 | echo "'$val'" 30 | } | head -c-1 | tr "\n" , 31 | )" 32 | 33 | "$DCONF" write "$key" "[$entries]" 34 | } 35 | 36 | # Newest versions of gnome-terminal use dconf 37 | if which "$DCONF" > /dev/null 2>&1; then 38 | [[ -z "$BASE_KEY_NEW" ]] && BASE_KEY_NEW=/org/gnome/terminal/legacy/profiles: 39 | if which "$UUIDGEN" > /dev/null 2>&1; then 40 | PROFILE_SLUG=`uuidgen` 41 | elif [ -f /proc/sys/kernel/random/uuid ]; then 42 | PROFILE_SLUG=`cat /proc/sys/kernel/random/uuid` 43 | fi 44 | 45 | if [[ -n "`$DCONF read $BASE_KEY_NEW/default`" ]]; then 46 | DEFAULT_SLUG=`$DCONF read $BASE_KEY_NEW/default | tr -d \'` 47 | else 48 | DEFAULT_SLUG=`$DCONF list $BASE_KEY_NEW/ | grep '^:' | head -n1 | tr -d :/` 49 | fi 50 | 51 | DEFAULT_KEY="$BASE_KEY_NEW/:$DEFAULT_SLUG" 52 | PROFILE_KEY="$BASE_KEY_NEW/:$PROFILE_SLUG" 53 | 54 | # copy existing settings from default profile 55 | $DCONF dump "$DEFAULT_KEY/" | $DCONF load "$PROFILE_KEY/" 56 | 57 | # add new copy to list of profiles 58 | dlist_append $BASE_KEY_NEW/list "$PROFILE_SLUG" 59 | 60 | # update profile values with theme options 61 | dset visible-name "'$PROFILE_NAME'" 62 | dset palette "['#282c34', '#e06c75', '#98c379', '#e5c07b', '#61afef', '#c678dd', '#56b6c2', '#dcdfe4', '#282c34', '#e06c75', '#98c379', '#e5c07b', '#61afef', '#c678dd', '#56b6c2', '#dcdfe4']" 63 | 64 | dset background-color "'#282c34'" 65 | dset foreground-color "'#dcdfe4'" 66 | dset bold-color "'#dcdfe4'" 67 | dset bold-color-same-as-fg "true" 68 | dset use-theme-colors "false" 69 | dset use-theme-background "false" 70 | 71 | unset PROFILE_NAME 72 | unset PROFILE_SLUG 73 | unset DCONF 74 | unset UUIDGEN 75 | exit 0 76 | fi 77 | 78 | # Fallback for Gnome 2 and early Gnome 3 79 | [[ -z "$GCONFTOOL" ]] && GCONFTOOL=gconftool 80 | [[ -z "$BASE_KEY" ]] && BASE_KEY=/apps/gnome-terminal/profiles 81 | 82 | PROFILE_KEY="$BASE_KEY/$PROFILE_SLUG" 83 | 84 | gset() { 85 | local type="$1"; shift 86 | local key="$1"; shift 87 | local val="$1"; shift 88 | 89 | "$GCONFTOOL" --set --type "$type" "$PROFILE_KEY/$key" -- "$val" 90 | } 91 | 92 | # Because gconftool doesn't have "append" 93 | glist_append() { 94 | local type="$1"; shift 95 | local key="$1"; shift 96 | local val="$1"; shift 97 | 98 | local entries="$( 99 | { 100 | "$GCONFTOOL" --get "$key" | tr -d '[]' | tr , "\n" | fgrep -v "$val" 101 | echo "$val" 102 | } | head -c-1 | tr "\n" , 103 | )" 104 | 105 | "$GCONFTOOL" --set --type list --list-type $type "$key" "[$entries]" 106 | } 107 | 108 | # Append the Base16 profile to the profile list 109 | glist_append string /apps/gnome-terminal/global/profile_list "$PROFILE_SLUG" 110 | 111 | gset string visible_name "$PROFILE_NAME" 112 | gset string palette "#282c34:#e06c75:#98c379:#e5c07b:#61afef:#c678dd:#56b6c2:#dcdfe4:#282c34:#e06c75:#98c379:#e5c07b:#61afef:#c678dd:#56b6c2:#dcdfe4" 113 | gset string background_color "#282c34" 114 | gset string foreground_color "#dcdfe4" 115 | gset string bold_color "#dcdfe4" 116 | gset bool bold_color_same_as_fg "true" 117 | gset bool use_theme_colors "false" 118 | gset bool use_theme_background "false" 119 | 120 | unset PROFILE_NAME 121 | unset PROFILE_SLUG 122 | unset DCONF 123 | unset UUIDGEN 124 | -------------------------------------------------------------------------------- /themes/onehalf/onehalflight.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # One Half - Gnome Terminal color scheme install script 3 | # Based on https://github.com/chriskempson/base16-gnome-terminal 4 | 5 | [[ -z "$PROFILE_NAME" ]] && PROFILE_NAME="One Half Light" 6 | [[ -z "$PROFILE_SLUG" ]] && PROFILE_SLUG="one-half-light" 7 | [[ -z "$DCONF" ]] && DCONF=dconf 8 | [[ -z "$UUIDGEN" ]] && UUIDGEN=uuidgen 9 | 10 | dset() { 11 | local key="$1"; shift 12 | local val="$1"; shift 13 | 14 | if [[ "$type" == "string" ]]; then 15 | val="'$val'" 16 | fi 17 | 18 | "$DCONF" write "$PROFILE_KEY/$key" "$val" 19 | } 20 | 21 | # because dconf still doesn't have "append" 22 | dlist_append() { 23 | local key="$1"; shift 24 | local val="$1"; shift 25 | 26 | local entries="$( 27 | { 28 | "$DCONF" read "$key" | tr -d '[]' | tr , "\n" | fgrep -v "$val" 29 | echo "'$val'" 30 | } | head -c-1 | tr "\n" , 31 | )" 32 | 33 | "$DCONF" write "$key" "[$entries]" 34 | } 35 | 36 | # Newest versions of gnome-terminal use dconf 37 | if which "$DCONF" > /dev/null 2>&1; then 38 | [[ -z "$BASE_KEY_NEW" ]] && BASE_KEY_NEW=/org/gnome/terminal/legacy/profiles: 39 | if which "$UUIDGEN" > /dev/null 2>&1; then 40 | PROFILE_SLUG=`uuidgen` 41 | elif [ -f /proc/sys/kernel/random/uuid ]; then 42 | PROFILE_SLUG=`cat /proc/sys/kernel/random/uuid` 43 | fi 44 | 45 | if [[ -n "`$DCONF read $BASE_KEY_NEW/default`" ]]; then 46 | DEFAULT_SLUG=`$DCONF read $BASE_KEY_NEW/default | tr -d \'` 47 | else 48 | DEFAULT_SLUG=`$DCONF list $BASE_KEY_NEW/ | grep '^:' | head -n1 | tr -d :/` 49 | fi 50 | 51 | DEFAULT_KEY="$BASE_KEY_NEW/:$DEFAULT_SLUG" 52 | PROFILE_KEY="$BASE_KEY_NEW/:$PROFILE_SLUG" 53 | 54 | # copy existing settings from default profile 55 | $DCONF dump "$DEFAULT_KEY/" | $DCONF load "$PROFILE_KEY/" 56 | 57 | # add new copy to list of profiles 58 | dlist_append $BASE_KEY_NEW/list "$PROFILE_SLUG" 59 | 60 | # update profile values with theme options 61 | dset visible-name "'$PROFILE_NAME'" 62 | dset palette "['#383a42', '#e45649', '#50a14f', '#c18401', '#0184bc', '#a626a4', '#0997b3', '#fafafa', '#4f525e', '#e06c75', '#98c379', '#e5c07b', '#61afef', '#c678dd', '#56b6c2', '#ffffff']" 63 | 64 | dset background-color "'#fafafa'" 65 | dset foreground-color "'#383a42'" 66 | dset bold-color "'#383a42'" 67 | dset bold-color-same-as-fg "true" 68 | dset use-theme-colors "false" 69 | dset use-theme-background "false" 70 | 71 | unset PROFILE_NAME 72 | unset PROFILE_SLUG 73 | unset DCONF 74 | unset UUIDGEN 75 | exit 0 76 | fi 77 | 78 | # Fallback for Gnome 2 and early Gnome 3 79 | [[ -z "$GCONFTOOL" ]] && GCONFTOOL=gconftool 80 | [[ -z "$BASE_KEY" ]] && BASE_KEY=/apps/gnome-terminal/profiles 81 | 82 | PROFILE_KEY="$BASE_KEY/$PROFILE_SLUG" 83 | 84 | gset() { 85 | local type="$1"; shift 86 | local key="$1"; shift 87 | local val="$1"; shift 88 | 89 | "$GCONFTOOL" --set --type "$type" "$PROFILE_KEY/$key" -- "$val" 90 | } 91 | 92 | # Because gconftool doesn't have "append" 93 | glist_append() { 94 | local type="$1"; shift 95 | local key="$1"; shift 96 | local val="$1"; shift 97 | 98 | local entries="$( 99 | { 100 | "$GCONFTOOL" --get "$key" | tr -d '[]' | tr , "\n" | fgrep -v "$val" 101 | echo "$val" 102 | } | head -c-1 | tr "\n" , 103 | )" 104 | 105 | "$GCONFTOOL" --set --type list --list-type $type "$key" "[$entries]" 106 | } 107 | 108 | # Append the Base16 profile to the profile list 109 | glist_append string /apps/gnome-terminal/global/profile_list "$PROFILE_SLUG" 110 | 111 | gset string visible_name "$PROFILE_NAME" 112 | gset string palette "#383a42:#e45649:#50a14f:#c18401:#0184bc:#a626a4:#0997b3:#fafafa:#4f525e:#e06c75:#98c379:#e5c07b:#61afef:#c678dd:#56b6c2:#ffffff" 113 | gset string background_color "#fafafa" 114 | gset string foreground_color "#383a42" 115 | gset string bold_color "#383a42" 116 | gset bool bold_color_same_as_fg "true" 117 | gset bool use_theme_colors "false" 118 | gset bool use_theme_background "false" 119 | 120 | unset PROFILE_NAME 121 | unset PROFILE_SLUG 122 | unset DCONF 123 | unset UUIDGEN 124 | -------------------------------------------------------------------------------- /tmux/.tmux.conf: -------------------------------------------------------------------------------- 1 | # Main/general configuration 2 | set-option -g history-limit 4000 3 | 4 | # Change Ctrl-b to Ctrl-a 5 | unbind C-b 6 | set -g prefix C-a 7 | 8 | # Copy CLIPBOARD to tmux paste buffer and paste tmux paste buffer 9 | bind C-S-c run "tmux save-buffer - | xclip -i -selection clipboard" 10 | bind C-S-v run "tmux set-buffer -- \"$(xclip -o -selection clipboard)\"; tmux paste-buffer" 11 | 12 | # Speed up the escape time 13 | set -sg escape-time 0 14 | 15 | # Use vim keybindings in copy mode 16 | set -g mode-keys vi 17 | 18 | # Remap the copy & paste keys to work as in vim 19 | unbind [ 20 | bind Escape copy-mode 21 | unbind p 22 | bind p paste-buffer 23 | 24 | # For nested tmux, C-a twice to send prefix to nested session 25 | bind-key C-a send-prefix 26 | 27 | # Fix the ctrl left/right keys for word traversal 28 | set-window-option -g xterm-keys on 29 | set -g default-terminal "screen-256color" 30 | 31 | # Fix tmux scrolling 32 | set -g terminal-overrides 'xterm*:smcup@:rmcup@' 33 | 34 | # [ PREFIX + r ] Reload tmux config 35 | bind r source-file ~/.tmux.conf \; display 'tmux configs reloaded' 36 | 37 | # Mouse mode configuration 38 | 39 | set -g mouse on 40 | # Toggle mouse on with ^B m 41 | bind m \ 42 | set -g mouse on \;\ 43 | display 'Mouse: ON' 44 | 45 | # Toggle mouse off with ^B M 46 | bind M \ 47 | set -g mouse off \;\ 48 | display 'Mouse: OFF' 49 | 50 | # Pane configuration 51 | 52 | # Change traversal to hjkl 53 | bind h select-pane -L 54 | bind j select-pane -D 55 | bind k select-pane -U 56 | bind l select-pane -R 57 | 58 | # Split pane in current directory, but not new windows 59 | bind v split-window -h -c "#{pane_current_path}" 60 | bind % split-window -h -c "#{pane_current_path}" 61 | bind s split-window -c "#{pane_current_path}" 62 | bind '"' split-window -c "#{pane_current_path}" 63 | bind c new-window -c "$PWD" 64 | 65 | # Resize panes easily, but not so that you do it accidentally when switching 66 | bind -r H resize-pane -L 5 67 | bind -r J resize-pane -D 5 68 | bind -r K resize-pane -U 5 69 | bind -r L resize-pane -R 5 70 | 71 | # Smart pane switching with awareness of vim splits 72 | is_vim='echo "#{pane_current_command}" | grep -iqE "(^|\/)g?(view|n?vim?x?)(diff)?$"' 73 | bind -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L" 74 | bind -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D" 75 | bind -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U" 76 | bind -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R" 77 | 78 | # Window configuration 79 | 80 | # Alt + # window switching 81 | # Most linux terminal emulators need to be told not to steal alt 82 | bind-key -n M-1 select-window -t 1 83 | bind-key -n M-2 select-window -t 2 84 | bind-key -n M-3 select-window -t 3 85 | bind-key -n M-4 select-window -t 4 86 | bind-key -n M-5 select-window -t 5 87 | bind-key -n M-6 select-window -t 6 88 | bind-key -n M-7 select-window -t 7 89 | bind-key -n M-8 select-window -t 8 90 | bind-key -n M-9 select-window -t 9 91 | 92 | # Automatically renumber windows 93 | bind R move-window -r; 94 | 95 | # Bind X to kill window, x to kill pane 96 | bind x confirm kill-pane 97 | bind X confirm kill-window 98 | 99 | # Start numbering at 1 100 | set -g base-index 1 101 | 102 | # Window swapping 103 | bind-key < swap-window -t - 104 | bind-key > swap-window -t + 105 | 106 | # Automatically renumber windows 107 | set-option -g renumber-windows on 108 | 109 | # Command Aliases 110 | bind-key n command-prompt "rename-window %%" 111 | 112 | # Source the color scheme conf 113 | source-file ~/.tmux/theme.conf 114 | 115 | # Status Bar configuration 116 | 117 | set -g status-justify left 118 | set -g status-left-length 50 119 | set -g status-right-length 200 120 | set -g status-right "#( ~/.tmux/scripts/status-right.sh )" 121 | set -g status-interval 1 122 | 123 | # Plugin configuration 124 | 125 | # TPM configuration 126 | set -g @continuum-restore 'on' 127 | set -g @resurrect-strategy-vim 'session' 128 | 129 | # Copy yanked text to system clipboard from tmux copy mode 130 | set -g @plugin 'tmux-plugins/tmux-copycat' 131 | set -g @plugin 'tmux-plugins/tmux-yank' 132 | set -g @plugin 'tmux-plugins/tmux-open' 133 | set -g @plugin 'tmux-plugins/tpm' 134 | set -g @plugin 'tmux-plugins/tmux-continuum' 135 | set -g @plugin 'nhdaly/tmux-scroll-copy-mode' 136 | 137 | bind-key -T root PPage if-shell -F "#{alternate_on}" "send-keys PPage" "copy-mode -e; send-keys PPage" 138 | 139 | # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) 140 | run '~/.tmux/plugins/tpm/tpm' 141 | 142 | -------------------------------------------------------------------------------- /config/.config/nvim/init.vim: -------------------------------------------------------------------------------- 1 | "----------------------" 2 | " Jack's neovim config " 3 | "----------------------" 4 | 5 | set lisp 6 | set list 7 | set listchars=tab:>\ ,eol:¬ 8 | set mouse=a 9 | set expandtab 10 | set incsearch 11 | set hlsearch 12 | set laststatus=2 13 | set matchtime=1 14 | set nocompatible 15 | set number 16 | set tabstop=4 17 | set softtabstop=4 18 | set shiftwidth=4 19 | set shiftround 20 | set smartindent 21 | set smarttab 22 | set omnifunc=syntaxcomplete#Complete 23 | set scrolloff=10 24 | set showmatch 25 | set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P 26 | set ttyfast 27 | set lazyredraw 28 | set backspace=2 29 | set pastetoggle= 30 | setlocal shiftwidth=2 31 | set cursorline 32 | set shell=zsh 33 | set linebreak 34 | set breakindent 35 | let break_prefix='>> ' 36 | let &showbreak=break_prefix 37 | set wildmenu 38 | set splitbelow 39 | set splitright 40 | set wildignore+=*.pyc,*.o,*.obj,*.svn,*.swp,*.class,*.hg,*.DS_Store,*.min.*,*node_modules* 41 | set colorcolumn=80 42 | set wrap 43 | set redrawtime=10000 44 | 45 | filetype indent on 46 | 47 | " Save the file scroll location 48 | au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal g'\"" | endif 49 | 50 | " Don't get rid of selection when indenting 51 | xnoremap < >gv 53 | 54 | "-------------------" 55 | " NERDTree settings " 56 | "-------------------" 57 | " Show NERDTree automatically in the pwd if vim called with no arguments 58 | function! StartUp() 59 | if 0 == argc() 60 | NERDTree 61 | end 62 | endfunction 63 | autocmd VimEnter * call StartUp() 64 | " let NERDTreeShowHidden=1 65 | let NERDTreeIgnore=["^\.git$"] 66 | " let NERDTreeMinimalUI = 1 67 | nmap :NERDTreeToggle 68 | " let NERDTreeRespectWildIgnore=1 69 | let NERDTreeHighlightCursorline = 0 70 | let NERDTreeShowHidden=1 71 | 72 | " Turn off search highlight - backslash space 73 | nnoremap :nohlsearch 74 | 75 | " Resize splits 76 | nnoremap k 5- 77 | nnoremap j 5+ 78 | nnoremap h 5< 79 | nnoremap l 5> 80 | 81 | " Automatically strip trailing whitespace on write 82 | autocmd BufWritePre * :%s/\s\+$//e 83 | 84 | let g:NERDTreeChDirMode = 2 85 | 86 | let g:NERDTreeIndicatorMapCustom = { 87 | \ "Modified" : "✹", 88 | \ "Staged" : "+", 89 | \ "Untracked" : "*", 90 | \ "Renamed" : "➡", 91 | \ "Unmerged" : "═", 92 | \ "Deleted" : "✖", 93 | \ "Dirty" : "✗", 94 | \ "Clean" : "✔︎", 95 | \ "Unknown" : "?" 96 | \ } 97 | 98 | " Save undo and swp in a convenient location 99 | set undofile 100 | set undodir=~/.vim/tmp/undo// 101 | set dir=~/.vim/tmp/swp// 102 | 103 | "-----" 104 | " FZF " 105 | "-----" 106 | " set rtp+=~/.fzf 107 | nnoremap :GFiles 108 | 109 | nnoremap j v:count ? 'j' : 'gj' 110 | nnoremap k v:count ? 'k' : 'gk' 111 | 112 | 113 | "-----------------" 114 | " Command aliases " 115 | "-----------------" 116 | cnoreabbrev W w 117 | cnoreabbrev Q q 118 | cnoreabbrev Wq wq 119 | cnoreabbrev Wa wa 120 | cnoreabbrev wQ wq 121 | cnoreabbrev WQ wq 122 | cnoreabbrev WQa wqa 123 | cnoreabbrev Wqa wqa 124 | cnoreabbrev Qa qa 125 | cnoreabbrev QA qa 126 | cnoreabbrev Sp sp 127 | cnoreabbrev Vsp vsp 128 | 129 | "------" 130 | " Tmux " 131 | "------" 132 | if exists('$TMUX') 133 | function! TmuxOrSplitSwitch(wincmd, tmuxdir) 134 | let previous_winnr = winnr() 135 | silent! execute "wincmd " . a:wincmd 136 | if previous_winnr == winnr() 137 | call system("tmux select-pane -" . a:tmuxdir) 138 | redraw! 139 | endif 140 | endfunction 141 | 142 | let previous_title = substitute(system("tmux display-message -p '#{pane_title}'"), '\n', '', '') 143 | let &t_ti = "\]2;vim\\\" . &t_ti 144 | let &t_te = "\]2;". previous_title . "\\\" . &t_te 145 | 146 | nnoremap :call TmuxOrSplitSwitch('h', 'L') 147 | nnoremap :call TmuxOrSplitSwitch('j', 'D') 148 | nnoremap :call TmuxOrSplitSwitch('k', 'U') 149 | nnoremap :call TmuxOrSplitSwitch('l', 'R') 150 | else 151 | map h 152 | map j 153 | map k 154 | map l 155 | endif 156 | 157 | if executable('ag') 158 | let g:ackprg = 'ag --vimgrep' 159 | endif 160 | 161 | call plug#begin('~/.local/nvim/plugged') 162 | 163 | " Theme plugins 164 | Plug 'sonph/onehalf', { 'rtp': 'vim' } 165 | Plug 'itchyny/lightline.vim' 166 | 167 | " Editing plugins 168 | Plug 'airblade/vim-gitgutter' 169 | Plug 'preservim/nerdtree', { 'on': 'NERDTreeToggle' } 170 | Plug 'Xuyuanp/nerdtree-git-plugin' 171 | Plug 'ntpeters/vim-better-whitespace' 172 | Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } 173 | Plug 'junegunn/fzf.vim' 174 | Plug 'mileszs/ack.vim' 175 | Plug 'christoomey/vim-tmux-navigator' 176 | Plug 'tpope/vim-surround' 177 | 178 | " Language support plugins 179 | Plug 'editorconfig/editorconfig-vim' 180 | Plug 'tpope/vim-markdown' 181 | Plug 'junegunn/vim-emoji' 182 | Plug 'ekalinin/Dockerfile.vim' 183 | Plug 'tmux-plugins/vim-tmux' 184 | Plug 'junegunn/goyo.vim' 185 | Plug 'davidoc/taskpaper.vim' 186 | Plug 'hashivim/vim-terraform' 187 | Plug 'vinnymeller/swagger-preview.nvim' 188 | Plug 'pangloss/vim-javascript' 189 | Plug 'leafgarland/typescript-vim' 190 | Plug 'peitalin/vim-jsx-typescript' 191 | Plug 'styled-components/vim-styled-components', { 'branch': 'main' } 192 | Plug 'jparise/vim-graphql' 193 | 194 | call plug#end() 195 | 196 | syntax enable 197 | 198 | " Theme configuration 199 | set termguicolors 200 | colorscheme onehalflight 201 | let g:lightline = { 202 | \ 'colorscheme': 'onehalfdark', 203 | \ 'active': { 204 | \ 'left': [ [ 'mode', 'paste' ], [ 'readonly', 'relativepath', 'modified' ] ], 205 | \ } 206 | \ } 207 | 208 | let g:airline#extensions#tabline#enabled = 1 209 | -------------------------------------------------------------------------------- /themes/dogrun/dogrun.itermcolors: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Ansi 0 Color 6 | 7 | Alpha Component 8 | 1 9 | Blue Component 10 | 0.0 11 | Color Space 12 | sRGB 13 | Green Component 14 | 0.0 15 | Red Component 16 | 0.0 17 | 18 | Ansi 1 Color 19 | 20 | Alpha Component 21 | 1 22 | Blue Component 23 | 0.40569943189620972 24 | Color Space 25 | sRGB 26 | Green Component 27 | 0.43035173416137695 28 | Red Component 29 | 1 30 | 31 | Ansi 10 Color 32 | 33 | Alpha Component 34 | 1 35 | Blue Component 36 | 0.48032909631729126 37 | Color Space 38 | sRGB 39 | Green Component 40 | 0.661346435546875 41 | Red Component 42 | 0.42240354418754578 43 | 44 | Ansi 11 Color 45 | 46 | Alpha Component 47 | 1 48 | Blue Component 49 | 0.50381571054458618 50 | Color Space 51 | sRGB 52 | Green Component 53 | 0.77410888671875 54 | Red Component 55 | 0.70246076583862305 56 | 57 | Ansi 12 Color 58 | 59 | Alpha Component 60 | 1 61 | Blue Component 62 | 0.837493896484375 63 | Color Space 64 | sRGB 65 | Green Component 66 | 0.54962694644927979 67 | Red Component 68 | 0.51461607217788696 69 | 70 | Ansi 13 Color 71 | 72 | Alpha Component 73 | 1 74 | Blue Component 75 | 0.81760531663894653 76 | Color Space 77 | sRGB 78 | Green Component 79 | 0.57293039560317993 80 | Red Component 81 | 1 82 | 83 | Ansi 14 Color 84 | 85 | Alpha Component 86 | 1 87 | Blue Component 88 | 0.74117648601531982 89 | Color Space 90 | sRGB 91 | Green Component 92 | 0.67450982332229614 93 | Red Component 94 | 0.16470588743686676 95 | 96 | Ansi 15 Color 97 | 98 | Alpha Component 99 | 1 100 | Blue Component 101 | 1 102 | Color Space 103 | sRGB 104 | Green Component 105 | 1 106 | Red Component 107 | 0.99999600648880005 108 | 109 | Ansi 2 Color 110 | 111 | Alpha Component 112 | 1 113 | Blue Component 114 | 0.54901963472366333 115 | Color Space 116 | sRGB 117 | Green Component 118 | 0.7450980544090271 119 | Red Component 120 | 0.48627451062202454 121 | 122 | Ansi 3 Color 123 | 124 | Alpha Component 125 | 1 126 | Blue Component 127 | 0.61633026599884033 128 | Color Space 129 | sRGB 130 | Green Component 131 | 0.9747205376625061 132 | Red Component 133 | 0.95514363050460815 134 | 135 | Ansi 4 Color 136 | 137 | Alpha Component 138 | 1 139 | Blue Component 140 | 0.89803922176361084 141 | Color Space 142 | sRGB 143 | Green Component 144 | 0.60784316062927246 145 | Red Component 146 | 0.57254904508590698 147 | 148 | Ansi 5 Color 149 | 150 | Alpha Component 151 | 1 152 | Blue Component 153 | 0.81760531663894653 154 | Color Space 155 | sRGB 156 | Green Component 157 | 0.57293039560317993 158 | Red Component 159 | 1 160 | 161 | Ansi 6 Color 162 | 163 | Alpha Component 164 | 1 165 | Blue Component 166 | 0.74117648601531982 167 | Color Space 168 | sRGB 169 | Green Component 170 | 0.67450982332229614 171 | Red Component 172 | 0.16470588743686676 173 | 174 | Ansi 7 Color 175 | 176 | Alpha Component 177 | 1 178 | Blue Component 179 | 0.78104829788208008 180 | Color Space 181 | sRGB 182 | Green Component 183 | 0.78105825185775757 184 | Red Component 185 | 0.7810397744178772 186 | 187 | Ansi 8 Color 188 | 189 | Alpha Component 190 | 1 191 | Blue Component 192 | 0.447479248046875 193 | Color Space 194 | sRGB 195 | Green Component 196 | 0.40782788395881653 197 | Red Component 198 | 0.3659210205078125 199 | 200 | Ansi 9 Color 201 | 202 | Alpha Component 203 | 1 204 | Blue Component 205 | 0.36971014738082886 206 | Color Space 207 | sRGB 208 | Green Component 209 | 0.38899919390678406 210 | Red Component 211 | 0.834716796875 212 | 213 | Background Color 214 | 215 | Alpha Component 216 | 1 217 | Blue Component 218 | 0.20000000298023224 219 | Color Space 220 | sRGB 221 | Green Component 222 | 0.14117647707462311 223 | Red Component 224 | 0.13333334028720856 225 | 226 | Badge Color 227 | 228 | Alpha Component 229 | 0.5 230 | Blue Component 231 | 0.0 232 | Color Space 233 | sRGB 234 | Green Component 235 | 0.1491314172744751 236 | Red Component 237 | 1 238 | 239 | Bold Color 240 | 241 | Alpha Component 242 | 1 243 | Blue Component 244 | 0.75294119119644165 245 | Color Space 246 | sRGB 247 | Green Component 248 | 0.63921570777893066 249 | Red Component 250 | 0.61960786581039429 251 | 252 | Cursor Color 253 | 254 | Alpha Component 255 | 1 256 | Blue Component 257 | 0.78104829788208008 258 | Color Space 259 | sRGB 260 | Green Component 261 | 0.78105825185775757 262 | Red Component 263 | 0.7810397744178772 264 | 265 | Cursor Guide Color 266 | 267 | Alpha Component 268 | 0.25 269 | Blue Component 270 | 1 271 | Color Space 272 | sRGB 273 | Green Component 274 | 0.9268307089805603 275 | Red Component 276 | 0.70213186740875244 277 | 278 | Cursor Text Color 279 | 280 | Alpha Component 281 | 1 282 | Blue Component 283 | 1 284 | Color Space 285 | sRGB 286 | Green Component 287 | 1 288 | Red Component 289 | 0.99999600648880005 290 | 291 | Foreground Color 292 | 293 | Alpha Component 294 | 1 295 | Blue Component 296 | 0.75294119119644165 297 | Color Space 298 | sRGB 299 | Green Component 300 | 0.63921570777893066 301 | Red Component 302 | 0.61960786581039429 303 | 304 | Link Color 305 | 306 | Alpha Component 307 | 1 308 | Blue Component 309 | 0.74117648601531982 310 | Color Space 311 | sRGB 312 | Green Component 313 | 0.67450982332229614 314 | Red Component 315 | 0.16470588743686676 316 | 317 | Selected Text Color 318 | 319 | Alpha Component 320 | 1 321 | Blue Component 322 | 1 323 | Color Space 324 | sRGB 325 | Green Component 326 | 1 327 | Red Component 328 | 0.99999600648880005 329 | 330 | Selection Color 331 | 332 | Alpha Component 333 | 1 334 | Blue Component 335 | 0.42833542823791504 336 | Color Space 337 | sRGB 338 | Green Component 339 | 0.35205566883087158 340 | Red Component 341 | 0.3362850546836853 342 | 343 | 344 | 345 | -------------------------------------------------------------------------------- /config/.config/alacritty/alacritty.yml: -------------------------------------------------------------------------------- 1 | # Configuration for Alacritty, the GPU enhanced terminal emulator. 2 | 3 | # Import additional configuration files 4 | # 5 | # Imports are loaded in order, skipping all missing files, with the importing 6 | # file being loaded last. If a field is already present in a previous import, it 7 | # will be replaced. 8 | # 9 | # All imports must either be absolute paths starting with `/`, or paths relative 10 | # to the user's home directory starting with `~/`. 11 | #import: 12 | # - /path/to/alacritty.yml 13 | 14 | # Any items in the `env` entry below will be added as 15 | # environment variables. Some entries may override variables 16 | # set by alacritty itself. 17 | #env: 18 | # TERM variable 19 | # 20 | # This value is used to set the `$TERM` environment variable for 21 | # each instance of Alacritty. If it is not present, alacritty will 22 | # check the local terminfo database and use `alacritty` if it is 23 | # available, otherwise `xterm-256color` is used. 24 | #TERM: alacritty 25 | 26 | window: 27 | # Window dimensions (changes require restart) 28 | # 29 | # Number of lines/columns (not pixels) in the terminal. Both lines and columns 30 | # must be non-zero for this to take effect. The number of columns must be at 31 | # least `2`, while using a value of `0` for columns and lines will fall back 32 | # to the window manager's recommended size 33 | #dimensions: 34 | # columns: 0 35 | # lines: 0 36 | 37 | # Window position (changes require restart) 38 | # 39 | # Specified in number of pixels. 40 | # If the position is not set, the window manager will handle the placement. 41 | #position: 42 | # x: 0 43 | # y: 0 44 | 45 | # Window padding (changes require restart) 46 | # 47 | # Blank space added around the window in pixels. This padding is scaled 48 | # by DPI and the specified value is always added at both opposing sides. 49 | #padding: 50 | # x: 0 51 | # y: 0 52 | 53 | # Spread additional padding evenly around the terminal content. 54 | #dynamic_padding: false 55 | 56 | # Window decorations 57 | # 58 | # Values for `decorations`: 59 | # - full: Borders and title bar 60 | # - none: Neither borders nor title bar 61 | # 62 | # Values for `decorations` (macOS only): 63 | # - transparent: Title bar, transparent background and title bar buttons 64 | # - buttonless: Title bar, transparent background and no title bar buttons 65 | decorations: full 66 | 67 | # Background opacity 68 | # 69 | # Window opacity as a floating point number from `0.0` to `1.0`. 70 | # The value `0.0` is completely transparent and `1.0` is opaque. 71 | #opacity: 1.0 72 | 73 | # Startup Mode (changes require restart) 74 | # 75 | # Values for `startup_mode`: 76 | # - Windowed 77 | # - Maximized 78 | # - Fullscreen 79 | # 80 | # Values for `startup_mode` (macOS only): 81 | # - SimpleFullscreen 82 | #startup_mode: Windowed 83 | 84 | # Window title 85 | #title: Alacritty 86 | 87 | # Allow terminal applications to change Alacritty's window title. 88 | # dynamic_title: true 89 | 90 | # Window class (Linux/BSD only): 91 | #class: 92 | # Application instance name 93 | #instance: Alacritty 94 | # General application class 95 | #general: Alacritty 96 | 97 | # Decorations theme variant (Linux/BSD only) 98 | # 99 | # Override the variant of the GTK theme/Wayland client side decorations. 100 | # Commonly supported values are `dark` and `light`. Set this to `None` to use 101 | # the default theme variant. 102 | #decorations_theme_variant: None 103 | 104 | #scrolling: 105 | # Maximum number of lines in the scrollback buffer. 106 | # Specifying '0' will disable scrolling. 107 | #history: 10000 108 | 109 | # Scrolling distance multiplier. 110 | #multiplier: 3 111 | 112 | # Font configuration 113 | font: 114 | # Normal (roman) font face 115 | normal: 116 | # Font family 117 | # 118 | # Default: 119 | # - (macOS) Menlo 120 | # - (Linux/BSD) monospace 121 | # - (Windows) Consolas 122 | family: Source Code Pro 123 | 124 | # The `style` can be specified to pick a specific face. 125 | #style: Regular 126 | 127 | # Bold font face 128 | bold: 129 | # Font family 130 | # 131 | # If the bold family is not specified, it will fall back to the 132 | # value specified for the normal font. 133 | family: Source Code Pro 134 | 135 | # The `style` can be specified to pick a specific face. 136 | style: Bold 137 | 138 | # Italic font face 139 | italic: 140 | # Font family 141 | # 142 | # If the italic family is not specified, it will fall back to the 143 | # value specified for the normal font. 144 | family: Source Code Pro 145 | 146 | # The `style` can be specified to pick a specific face. 147 | style: Italic 148 | 149 | # Bold italic font face 150 | #bold_italic: 151 | # Font family 152 | # 153 | # If the bold italic family is not specified, it will fall back to the 154 | # value specified for the normal font. 155 | #family: monospace 156 | 157 | # The `style` can be specified to pick a specific face. 158 | #style: Bold Italic 159 | 160 | # Point size 161 | size: 18.0 162 | 163 | # Offset is the extra space around each character. `offset.y` can be thought 164 | # of as modifying the line spacing, and `offset.x` as modifying the letter 165 | # spacing. 166 | #offset: 167 | # x: 0 168 | # y: 0 169 | 170 | # Glyph offset determines the locations of the glyphs within their cells with 171 | # the default being at the bottom. Increasing `x` moves the glyph to the 172 | # right, increasing `y` moves the glyph upward. 173 | #glyph_offset: 174 | # x: 0 175 | # y: 0 176 | 177 | # Use built-in font for box drawing characters. 178 | # 179 | # If `true`, Alacritty will use a custom built-in font for box drawing 180 | # characters (Unicode points 2500 - 259f). 181 | # 182 | #builtin_box_drawing: true 183 | 184 | # If `true`, bold text is drawn using the bright color variants. 185 | #draw_bold_text_with_bright_colors: false 186 | 187 | # Colors (Tomorrow Night) 188 | #colors: 189 | # Default colors 190 | #primary: 191 | # background: '#1d1f21' 192 | # foreground: '#c5c8c6' 193 | 194 | # Bright and dim foreground colors 195 | # 196 | # The dimmed foreground color is calculated automatically if it is not 197 | # present. If the bright foreground color is not set, or 198 | # `draw_bold_text_with_bright_colors` is `false`, the normal foreground 199 | # color will be used. 200 | #dim_foreground: '#828482' 201 | #bright_foreground: '#eaeaea' 202 | 203 | # Cursor colors 204 | # 205 | # Colors which should be used to draw the terminal cursor. 206 | # 207 | # Allowed values are CellForeground/CellBackground, which reference the 208 | # affected cell, or hexadecimal colors like #ff00ff. 209 | #cursor: 210 | # text: CellBackground 211 | # cursor: CellForeground 212 | 213 | # Vi mode cursor colors 214 | # 215 | # Colors for the cursor when the vi mode is active. 216 | # 217 | # Allowed values are CellForeground/CellBackground, which reference the 218 | # affected cell, or hexadecimal colors like #ff00ff. 219 | #vi_mode_cursor: 220 | # text: CellBackground 221 | # cursor: CellForeground 222 | 223 | # Search colors 224 | # 225 | # Colors used for the search bar and match highlighting. 226 | #search: 227 | # Allowed values are CellForeground/CellBackground, which reference the 228 | # affected cell, or hexadecimal colors like #ff00ff. 229 | #matches: 230 | # foreground: '#000000' 231 | # background: '#ffffff' 232 | #focused_match: 233 | # foreground: '#ffffff' 234 | # background: '#000000' 235 | 236 | # Keyboard hints 237 | #hints: 238 | # First character in the hint label 239 | # 240 | # Allowed values are CellForeground/CellBackground, which reference the 241 | # affected cell, or hexadecimal colors like #ff00ff. 242 | #start: 243 | # foreground: '#1d1f21' 244 | # background: '#e9ff5e' 245 | 246 | # All characters after the first one in the hint label 247 | # 248 | # Allowed values are CellForeground/CellBackground, which reference the 249 | # affected cell, or hexadecimal colors like #ff00ff. 250 | #end: 251 | # foreground: '#e9ff5e' 252 | # background: '#1d1f21' 253 | 254 | # Line indicator 255 | # 256 | # Color used for the indicator displaying the position in history during 257 | # search and vi mode. 258 | # 259 | # By default, these will use the opposing primary color. 260 | #line_indicator: 261 | # foreground: None 262 | # background: None 263 | 264 | # Footer bar 265 | # 266 | # Color used for the footer bar on the bottom, used by search regex input, 267 | # hyperlink URI preview, etc. 268 | # 269 | #footer_bar: 270 | # background: '#c5c8c6' 271 | # foreground: '#1d1f21' 272 | 273 | # Selection colors 274 | # 275 | # Colors which should be used to draw the selection area. 276 | # 277 | # Allowed values are CellForeground/CellBackground, which reference the 278 | # affected cell, or hexadecimal colors like #ff00ff. 279 | #selection: 280 | # text: CellBackground 281 | # background: CellForeground 282 | 283 | # Normal colors 284 | #normal: 285 | # black: '#1d1f21' 286 | # red: '#cc6666' 287 | # green: '#b5bd68' 288 | # yellow: '#f0c674' 289 | # blue: '#81a2be' 290 | # magenta: '#b294bb' 291 | # cyan: '#8abeb7' 292 | # white: '#c5c8c6' 293 | 294 | # Bright colors 295 | #bright: 296 | # black: '#666666' 297 | # red: '#d54e53' 298 | # green: '#b9ca4a' 299 | # yellow: '#e7c547' 300 | # blue: '#7aa6da' 301 | # magenta: '#c397d8' 302 | # cyan: '#70c0b1' 303 | # white: '#eaeaea' 304 | 305 | # Dim colors 306 | # 307 | # If the dim colors are not set, they will be calculated automatically based 308 | # on the `normal` colors. 309 | #dim: 310 | # black: '#131415' 311 | # red: '#864343' 312 | # green: '#777c44' 313 | # yellow: '#9e824c' 314 | # blue: '#556a7d' 315 | # magenta: '#75617b' 316 | # cyan: '#5b7d78' 317 | # white: '#828482' 318 | 319 | # Indexed Colors 320 | # 321 | # The indexed colors include all colors from 16 to 256. 322 | # When these are not set, they're filled with sensible defaults. 323 | # 324 | # Example: 325 | # `- { index: 16, color: '#ff00ff' }` 326 | # 327 | #indexed_colors: [] 328 | 329 | # Transparent cell backgrounds 330 | # 331 | # Whether or not `window.opacity` applies to all cell backgrounds or only to 332 | # the default background. When set to `true` all cells will be transparent 333 | # regardless of their background color. 334 | #transparent_background_colors: false 335 | 336 | # Bell 337 | # 338 | # The bell is rung every time the BEL control character is received. 339 | #bell: 340 | # Visual Bell Animation 341 | # 342 | # Animation effect for flashing the screen when the visual bell is rung. 343 | # 344 | # Values for `animation`: 345 | # - Ease 346 | # - EaseOut 347 | # - EaseOutSine 348 | # - EaseOutQuad 349 | # - EaseOutCubic 350 | # - EaseOutQuart 351 | # - EaseOutQuint 352 | # - EaseOutExpo 353 | # - EaseOutCirc 354 | # - Linear 355 | #animation: EaseOutExpo 356 | 357 | # Duration of the visual bell flash in milliseconds. A `duration` of `0` will 358 | # disable the visual bell animation. 359 | #duration: 0 360 | 361 | # Visual bell animation color. 362 | #color: '#ffffff' 363 | 364 | # Bell Command 365 | # 366 | # This program is executed whenever the bell is rung. 367 | # 368 | # When set to `command: None`, no command will be executed. 369 | # 370 | # Example: 371 | # command: 372 | # program: notify-send 373 | # args: ["Hello, World!"] 374 | # 375 | #command: None 376 | 377 | #selection: 378 | # This string contains all characters that are used as separators for 379 | # "semantic words" in Alacritty. 380 | #semantic_escape_chars: ",│`|:\"' ()[]{}<>\t" 381 | 382 | # When set to `true`, selected text will be copied to the primary clipboard. 383 | #save_to_clipboard: false 384 | 385 | #cursor: 386 | # Cursor style 387 | #style: 388 | # Cursor shape 389 | # 390 | # Values for `shape`: 391 | # - ▇ Block 392 | # - _ Underline 393 | # - | Beam 394 | #shape: Block 395 | 396 | # Cursor blinking state 397 | # 398 | # Values for `blinking`: 399 | # - Never: Prevent the cursor from ever blinking 400 | # - Off: Disable blinking by default 401 | # - On: Enable blinking by default 402 | # - Always: Force the cursor to always blink 403 | #blinking: Off 404 | 405 | # Vi mode cursor style 406 | # 407 | # If the vi mode cursor style is `None` or not specified, it will fall back to 408 | # the style of the active value of the normal cursor. 409 | # 410 | # See `cursor.style` for available options. 411 | #vi_mode_style: None 412 | 413 | # Cursor blinking interval in milliseconds. 414 | #blink_interval: 750 415 | 416 | # Time after which cursor stops blinking, in seconds. 417 | # 418 | # Specifying '0' will disable timeout for blinking. 419 | #blink_timeout: 5 420 | 421 | # If this is `true`, the cursor will be rendered as a hollow box when the 422 | # window is not focused. 423 | #unfocused_hollow: true 424 | 425 | # Thickness of the cursor relative to the cell width as floating point number 426 | # from `0.0` to `1.0`. 427 | #thickness: 0.15 428 | 429 | # Live config reload (changes require restart) 430 | #live_config_reload: true 431 | 432 | # Shell 433 | # 434 | # You can set `shell.program` to the path of your favorite shell, e.g. 435 | # `/bin/fish`. Entries in `shell.args` are passed unmodified as arguments to the 436 | # shell. 437 | # 438 | # Default: 439 | # - (Linux/BSD/macOS) `$SHELL` or the user's login shell, if `$SHELL` is unset 440 | # - (Windows) powershell 441 | #shell: 442 | # program: /bin/bash 443 | # args: 444 | # - --login 445 | 446 | # Startup directory 447 | # 448 | # Directory the shell is started in. If this is unset, or `None`, the working 449 | # directory of the parent process will be used. 450 | #working_directory: None 451 | 452 | # Send ESC (\x1b) before characters when alt is pressed. 453 | #alt_send_esc: true 454 | 455 | # Offer IPC using `alacritty msg` (unix only) 456 | #ipc_socket: true 457 | 458 | #mouse: 459 | # Click settings 460 | # 461 | # The `double_click` and `triple_click` settings control the time 462 | # alacritty should wait for accepting multiple clicks as one double 463 | # or triple click. 464 | #double_click: { threshold: 300 } 465 | #triple_click: { threshold: 300 } 466 | 467 | # If this is `true`, the cursor is temporarily hidden when typing. 468 | #hide_when_typing: false 469 | 470 | # Hints 471 | # 472 | # Terminal hints can be used to find text or hyperlink in the visible part of 473 | # the terminal and pipe it to other applications. 474 | #hints: 475 | # Keys used for the hint labels. 476 | #alphabet: "jfkdls;ahgurieowpq" 477 | 478 | # List with all available hints 479 | # 480 | # Each hint must have any of `regex` or `hyperlinks` field and either an 481 | # `action` or a `command` field. The fields `mouse`, `binding` and 482 | # `post_processing` are optional. 483 | # 484 | # The `hyperlinks` option will cause OSC 8 escape sequence hyperlinks to be 485 | # highlighted. 486 | # 487 | # The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and 488 | # `mouse.mods` accept the same values as they do in the `key_bindings` section. 489 | # 490 | # The `mouse.enabled` field controls if the hint should be underlined while 491 | # the mouse with all `mouse.mods` keys held or the vi mode cursor is above it. 492 | # 493 | # If the `post_processing` field is set to `true`, heuristics will be used to 494 | # shorten the match if there are characters likely not to be part of the hint 495 | # (e.g. a trailing `.`). This is most useful for URIs and applies only to 496 | # `regex` matches. 497 | # 498 | # Values for `action`: 499 | # - Copy 500 | # Copy the hint's text to the clipboard. 501 | # - Paste 502 | # Paste the hint's text to the terminal or search. 503 | # - Select 504 | # Select the hint's text. 505 | # - MoveViModeCursor 506 | # Move the vi mode cursor to the beginning of the hint. 507 | #enabled: 508 | # - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\ 509 | # [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+" 510 | # hyperlinks: true 511 | # command: xdg-open 512 | # post_processing: true 513 | # mouse: 514 | # enabled: true 515 | # mods: None 516 | # binding: 517 | # key: U 518 | # mods: Control|Shift 519 | 520 | # Mouse bindings 521 | # 522 | # Mouse bindings are specified as a list of objects, much like the key 523 | # bindings further below. 524 | # 525 | # To trigger mouse bindings when an application running within Alacritty 526 | # captures the mouse, the `Shift` modifier is automatically added as a 527 | # requirement. 528 | # 529 | # Each mouse binding will specify a: 530 | # 531 | # - `mouse`: 532 | # 533 | # - Middle 534 | # - Left 535 | # - Right 536 | # - Numeric identifier such as `5` 537 | # 538 | # - `action` (see key bindings for actions not exclusive to mouse mode) 539 | # 540 | # - Mouse exclusive actions: 541 | # 542 | # - ExpandSelection 543 | # Expand the selection to the current mouse cursor location. 544 | # 545 | # And optionally: 546 | # 547 | # - `mods` (see key bindings) 548 | #mouse_bindings: 549 | # - { mouse: Right, action: ExpandSelection } 550 | # - { mouse: Right, mods: Control, action: ExpandSelection } 551 | # - { mouse: Middle, mode: ~Vi, action: PasteSelection } 552 | 553 | # Key bindings 554 | # 555 | # Key bindings are specified as a list of objects. For example, this is the 556 | # default paste binding: 557 | # 558 | # `- { key: V, mods: Control|Shift, action: Paste }` 559 | # 560 | # Each key binding will specify a: 561 | # 562 | # - `key`: Identifier of the key pressed 563 | # 564 | # - A-Z 565 | # - F1-F24 566 | # - Key0-Key9 567 | # 568 | # A full list with available key codes can be found here: 569 | # https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants 570 | # 571 | # Instead of using the name of the keys, the `key` field also supports using 572 | # the scancode of the desired key. Scancodes have to be specified as a 573 | # decimal number. This command will allow you to display the hex scancodes 574 | # for certain keys: 575 | # 576 | # `showkey --scancodes`. 577 | # 578 | # Then exactly one of: 579 | # 580 | # - `chars`: Send a byte sequence to the running application 581 | # 582 | # The `chars` field writes the specified string to the terminal. This makes 583 | # it possible to pass escape sequences. To find escape codes for bindings 584 | # like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside 585 | # of tmux. Note that applications use terminfo to map escape sequences back 586 | # to keys. It is therefore required to update the terminfo when changing an 587 | # escape sequence. 588 | # 589 | # - `action`: Execute a predefined action 590 | # 591 | # - ToggleViMode 592 | # - SearchForward 593 | # Start searching toward the right of the search origin. 594 | # - SearchBackward 595 | # Start searching toward the left of the search origin. 596 | # - Copy 597 | # - Paste 598 | # - IncreaseFontSize 599 | # - DecreaseFontSize 600 | # - ResetFontSize 601 | # - ScrollPageUp 602 | # - ScrollPageDown 603 | # - ScrollHalfPageUp 604 | # - ScrollHalfPageDown 605 | # - ScrollLineUp 606 | # - ScrollLineDown 607 | # - ScrollToTop 608 | # - ScrollToBottom 609 | # - ClearHistory 610 | # Remove the terminal's scrollback history. 611 | # - Hide 612 | # Hide the Alacritty window. 613 | # - Minimize 614 | # Minimize the Alacritty window. 615 | # - Quit 616 | # Quit Alacritty. 617 | # - ToggleFullscreen 618 | # - SpawnNewInstance 619 | # Spawn a new instance of Alacritty. 620 | # - CreateNewWindow 621 | # Create a new Alacritty window from the current process. 622 | # - ClearLogNotice 623 | # Clear Alacritty's UI warning and error notice. 624 | # - ClearSelection 625 | # Remove the active selection. 626 | # - ReceiveChar 627 | # - None 628 | # 629 | # - Vi mode exclusive actions: 630 | # 631 | # - Open 632 | # Perform the action of the first matching hint under the vi mode cursor 633 | # with `mouse.enabled` set to `true`. 634 | # - ToggleNormalSelection 635 | # - ToggleLineSelection 636 | # - ToggleBlockSelection 637 | # - ToggleSemanticSelection 638 | # Toggle semantic selection based on `selection.semantic_escape_chars`. 639 | # - CenterAroundViCursor 640 | # Center view around vi mode cursor 641 | # 642 | # - Vi mode exclusive cursor motion actions: 643 | # 644 | # - Up 645 | # One line up. 646 | # - Down 647 | # One line down. 648 | # - Left 649 | # One character left. 650 | # - Right 651 | # One character right. 652 | # - First 653 | # First column, or beginning of the line when already at the first column. 654 | # - Last 655 | # Last column, or beginning of the line when already at the last column. 656 | # - FirstOccupied 657 | # First non-empty cell in this terminal row, or first non-empty cell of 658 | # the line when already at the first cell of the row. 659 | # - High 660 | # Top of the screen. 661 | # - Middle 662 | # Center of the screen. 663 | # - Low 664 | # Bottom of the screen. 665 | # - SemanticLeft 666 | # Start of the previous semantically separated word. 667 | # - SemanticRight 668 | # Start of the next semantically separated word. 669 | # - SemanticLeftEnd 670 | # End of the previous semantically separated word. 671 | # - SemanticRightEnd 672 | # End of the next semantically separated word. 673 | # - WordLeft 674 | # Start of the previous whitespace separated word. 675 | # - WordRight 676 | # Start of the next whitespace separated word. 677 | # - WordLeftEnd 678 | # End of the previous whitespace separated word. 679 | # - WordRightEnd 680 | # End of the next whitespace separated word. 681 | # - Bracket 682 | # Character matching the bracket at the cursor's location. 683 | # - SearchNext 684 | # Beginning of the next match. 685 | # - SearchPrevious 686 | # Beginning of the previous match. 687 | # - SearchStart 688 | # Start of the match to the left of the vi mode cursor. 689 | # - SearchEnd 690 | # End of the match to the right of the vi mode cursor. 691 | # 692 | # - Search mode exclusive actions: 693 | # - SearchFocusNext 694 | # Move the focus to the next search match. 695 | # - SearchFocusPrevious 696 | # Move the focus to the previous search match. 697 | # - SearchConfirm 698 | # - SearchCancel 699 | # - SearchClear 700 | # Reset the search regex. 701 | # - SearchDeleteWord 702 | # Delete the last word in the search regex. 703 | # - SearchHistoryPrevious 704 | # Go to the previous regex in the search history. 705 | # - SearchHistoryNext 706 | # Go to the next regex in the search history. 707 | # 708 | # - macOS exclusive actions: 709 | # - ToggleSimpleFullscreen 710 | # Enter fullscreen without occupying another space. 711 | # 712 | # - Linux/BSD exclusive actions: 713 | # 714 | # - CopySelection 715 | # Copy from the selection buffer. 716 | # - PasteSelection 717 | # Paste from the selection buffer. 718 | # 719 | # - `command`: Fork and execute a specified command plus arguments 720 | # 721 | # The `command` field must be a map containing a `program` string and an 722 | # `args` array of command line parameter strings. For example: 723 | # `{ program: "alacritty", args: ["-e", "vttest"] }` 724 | # 725 | # And optionally: 726 | # 727 | # - `mods`: Key modifiers to filter binding actions 728 | # 729 | # - Command 730 | # - Control 731 | # - Option 732 | # - Super 733 | # - Shift 734 | # - Alt 735 | # 736 | # Multiple `mods` can be combined using `|` like this: 737 | # `mods: Control|Shift`. 738 | # Whitespace and capitalization are relevant and must match the example. 739 | # 740 | # - `mode`: Indicate a binding for only specific terminal reported modes 741 | # 742 | # This is mainly used to send applications the correct escape sequences 743 | # when in different modes. 744 | # 745 | # - AppCursor 746 | # - AppKeypad 747 | # - Search 748 | # - Alt 749 | # - Vi 750 | # 751 | # A `~` operator can be used before a mode to apply the binding whenever 752 | # the mode is *not* active, e.g. `~Alt`. 753 | # 754 | # Bindings are always filled by default, but will be replaced when a new 755 | # binding with the same triggers is defined. To unset a default binding, it can 756 | # be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for 757 | # a no-op if you do not wish to receive input characters for that binding. 758 | # 759 | # If the same trigger is assigned to multiple actions, all of them are executed 760 | # in the order they were defined in. 761 | #key_bindings: 762 | #- { key: Paste, action: Paste } 763 | #- { key: Copy, action: Copy } 764 | #- { key: L, mods: Control, action: ClearLogNotice } 765 | #- { key: L, mods: Control, mode: ~Vi|~Search, chars: "\x0c" } 766 | #- { key: PageUp, mods: Shift, mode: ~Alt, action: ScrollPageUp } 767 | #- { key: PageDown, mods: Shift, mode: ~Alt, action: ScrollPageDown } 768 | #- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop } 769 | #- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom } 770 | 771 | # Vi Mode 772 | #- { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode } 773 | #- { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom } 774 | #- { key: Escape, mode: Vi|~Search, action: ClearSelection } 775 | #- { key: I, mode: Vi|~Search, action: ToggleViMode } 776 | #- { key: I, mode: Vi|~Search, action: ScrollToBottom } 777 | #- { key: C, mods: Control, mode: Vi|~Search, action: ToggleViMode } 778 | #- { key: Y, mods: Control, mode: Vi|~Search, action: ScrollLineUp } 779 | #- { key: E, mods: Control, mode: Vi|~Search, action: ScrollLineDown } 780 | #- { key: G, mode: Vi|~Search, action: ScrollToTop } 781 | #- { key: G, mods: Shift, mode: Vi|~Search, action: ScrollToBottom } 782 | #- { key: B, mods: Control, mode: Vi|~Search, action: ScrollPageUp } 783 | #- { key: F, mods: Control, mode: Vi|~Search, action: ScrollPageDown } 784 | #- { key: U, mods: Control, mode: Vi|~Search, action: ScrollHalfPageUp } 785 | #- { key: D, mods: Control, mode: Vi|~Search, action: ScrollHalfPageDown } 786 | #- { key: Y, mode: Vi|~Search, action: Copy } 787 | #- { key: Y, mode: Vi|~Search, action: ClearSelection } 788 | #- { key: Copy, mode: Vi|~Search, action: ClearSelection } 789 | #- { key: V, mode: Vi|~Search, action: ToggleNormalSelection } 790 | #- { key: V, mods: Shift, mode: Vi|~Search, action: ToggleLineSelection } 791 | #- { key: V, mods: Control, mode: Vi|~Search, action: ToggleBlockSelection } 792 | #- { key: V, mods: Alt, mode: Vi|~Search, action: ToggleSemanticSelection } 793 | #- { key: Return, mode: Vi|~Search, action: Open } 794 | #- { key: Z, mode: Vi|~Search, action: CenterAroundViCursor } 795 | #- { key: K, mode: Vi|~Search, action: Up } 796 | #- { key: J, mode: Vi|~Search, action: Down } 797 | #- { key: H, mode: Vi|~Search, action: Left } 798 | #- { key: L, mode: Vi|~Search, action: Right } 799 | #- { key: Up, mode: Vi|~Search, action: Up } 800 | #- { key: Down, mode: Vi|~Search, action: Down } 801 | #- { key: Left, mode: Vi|~Search, action: Left } 802 | #- { key: Right, mode: Vi|~Search, action: Right } 803 | #- { key: Key0, mode: Vi|~Search, action: First } 804 | #- { key: Key4, mods: Shift, mode: Vi|~Search, action: Last } 805 | #- { key: Key6, mods: Shift, mode: Vi|~Search, action: FirstOccupied } 806 | #- { key: H, mods: Shift, mode: Vi|~Search, action: High } 807 | #- { key: M, mods: Shift, mode: Vi|~Search, action: Middle } 808 | #- { key: L, mods: Shift, mode: Vi|~Search, action: Low } 809 | #- { key: B, mode: Vi|~Search, action: SemanticLeft } 810 | #- { key: W, mode: Vi|~Search, action: SemanticRight } 811 | #- { key: E, mode: Vi|~Search, action: SemanticRightEnd } 812 | #- { key: B, mods: Shift, mode: Vi|~Search, action: WordLeft } 813 | #- { key: W, mods: Shift, mode: Vi|~Search, action: WordRight } 814 | #- { key: E, mods: Shift, mode: Vi|~Search, action: WordRightEnd } 815 | #- { key: Key5, mods: Shift, mode: Vi|~Search, action: Bracket } 816 | #- { key: Slash, mode: Vi|~Search, action: SearchForward } 817 | #- { key: Slash, mods: Shift, mode: Vi|~Search, action: SearchBackward } 818 | #- { key: N, mode: Vi|~Search, action: SearchNext } 819 | #- { key: N, mods: Shift, mode: Vi|~Search, action: SearchPrevious } 820 | 821 | # Search Mode 822 | #- { key: Return, mode: Search|Vi, action: SearchConfirm } 823 | #- { key: Escape, mode: Search, action: SearchCancel } 824 | #- { key: C, mods: Control, mode: Search, action: SearchCancel } 825 | #- { key: U, mods: Control, mode: Search, action: SearchClear } 826 | #- { key: W, mods: Control, mode: Search, action: SearchDeleteWord } 827 | #- { key: P, mods: Control, mode: Search, action: SearchHistoryPrevious } 828 | #- { key: N, mods: Control, mode: Search, action: SearchHistoryNext } 829 | #- { key: Up, mode: Search, action: SearchHistoryPrevious } 830 | #- { key: Down, mode: Search, action: SearchHistoryNext } 831 | #- { key: Return, mode: Search|~Vi, action: SearchFocusNext } 832 | #- { key: Return, mods: Shift, mode: Search|~Vi, action: SearchFocusPrevious } 833 | 834 | # (Windows, Linux, and BSD only) 835 | #- { key: V, mods: Control|Shift, mode: ~Vi, action: Paste } 836 | #- { key: C, mods: Control|Shift, action: Copy } 837 | #- { key: F, mods: Control|Shift, mode: ~Search, action: SearchForward } 838 | #- { key: B, mods: Control|Shift, mode: ~Search, action: SearchBackward } 839 | #- { key: C, mods: Control|Shift, mode: Vi|~Search, action: ClearSelection } 840 | #- { key: Insert, mods: Shift, action: PasteSelection } 841 | #- { key: Key0, mods: Control, action: ResetFontSize } 842 | #- { key: Equals, mods: Control, action: IncreaseFontSize } 843 | #- { key: Plus, mods: Control, action: IncreaseFontSize } 844 | #- { key: NumpadAdd, mods: Control, action: IncreaseFontSize } 845 | #- { key: Minus, mods: Control, action: DecreaseFontSize } 846 | #- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize } 847 | 848 | # (Windows only) 849 | #- { key: Return, mods: Alt, action: ToggleFullscreen } 850 | 851 | # (macOS only) 852 | #- { key: K, mods: Command, mode: ~Vi|~Search, chars: "\x0c" } 853 | #- { key: K, mods: Command, mode: ~Vi|~Search, action: ClearHistory } 854 | #- { key: Key0, mods: Command, action: ResetFontSize } 855 | #- { key: Equals, mods: Command, action: IncreaseFontSize } 856 | #- { key: Plus, mods: Command, action: IncreaseFontSize } 857 | #- { key: NumpadAdd, mods: Command, action: IncreaseFontSize } 858 | #- { key: Minus, mods: Command, action: DecreaseFontSize } 859 | #- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize } 860 | #- { key: V, mods: Command, action: Paste } 861 | #- { key: C, mods: Command, action: Copy } 862 | #- { key: C, mods: Command, mode: Vi|~Search, action: ClearSelection } 863 | #- { key: H, mods: Command, action: Hide } 864 | #- { key: H, mods: Command|Alt, action: HideOtherApplications } 865 | #- { key: M, mods: Command, action: Minimize } 866 | #- { key: Q, mods: Command, action: Quit } 867 | #- { key: W, mods: Command, action: Quit } 868 | #- { key: N, mods: Command, action: SpawnNewInstance } 869 | #- { key: F, mods: Command|Control, action: ToggleFullscreen } 870 | #- { key: F, mods: Command, mode: ~Search, action: SearchForward } 871 | #- { key: B, mods: Command, mode: ~Search, action: SearchBackward } 872 | 873 | debug: 874 | # Display the time it takes to redraw each frame. 875 | render_timer: false 876 | 877 | # Keep the log file after quitting Alacritty. 878 | #persistent_logging: false 879 | 880 | # Log level 881 | # 882 | # Values for `log_level`: 883 | # - Off 884 | # - Error 885 | # - Warn 886 | # - Info 887 | # - Debug 888 | # - Trace 889 | #log_level: Warn 890 | 891 | # Print all received window events. 892 | #print_events: false 893 | 894 | # Highlight window damage information. 895 | #highlight_damage: false 896 | 897 | --------------------------------------------------------------------------------