├── .gitignore ├── curl └── .config │ └── curlrc ├── stow ├── .stow-global-ignore ├── .config │ └── cx.darryl.modules │ │ └── rc.d │ │ └── 10-stow.tcl └── .local │ └── share │ └── cx.darryl.modules │ └── modulefiles │ └── stow ├── .stowrc ├── bash ├── .hushlogin ├── .bash_profile ├── .local │ └── share │ │ └── cx.darryl.modules │ │ └── modulefiles │ │ ├── bash │ │ ├── env │ │ ├── aliases │ │ ├── color │ │ ├── prompt │ │ └── history │ │ └── shell │ │ ├── path │ │ └── aliases ├── .bashrc └── .config │ ├── cx.darryl.bash │ ├── profile │ └── profile.d │ │ └── 10-bash.bash │ └── cx.darryl.modules │ └── rc.d │ ├── 98-bash.tcl │ └── 10-bash.tcl ├── gh ├── .config │ ├── cx.darryl.modules │ │ └── rc.d │ │ │ └── 10-gh.tcl │ └── gh │ │ └── config.yml └── .local │ └── share │ └── cx.darryl.modules │ └── modulefiles │ └── gh ├── kiro ├── .config │ └── cx.darryl.modules │ │ └── rc.d │ │ └── 10-kiro.tcl └── .local │ └── share │ └── cx.darryl.modules │ └── modulefiles │ └── kiro ├── macos ├── .stow-local-ignore ├── .lldbinit ├── duti │ ├── openemu.txt │ ├── iina.txt │ ├── sourcecode.txt │ └── set.sh ├── Library │ └── Application Support │ │ └── xbar │ │ └── plugins │ │ └── caffeinate-toggle.5s.sh └── defaults.sh ├── skhd ├── .config │ ├── cx.darryl.modules │ │ └── rc.d │ │ │ └── 10-skhd.tcl │ └── skhd │ │ └── skhdrc └── .local │ └── share │ └── cx.darryl.modules │ └── modulefiles │ └── skhd ├── vim ├── .config │ ├── cx.darryl.modules │ │ └── rc.d │ │ │ └── 10-vim.tcl │ └── vim │ │ └── vimrc └── .local │ └── share │ └── cx.darryl.modules │ └── modulefiles │ └── vim ├── yabai ├── .config │ ├── cx.darryl.modules │ │ └── rc.d │ │ │ └── 10-yabai.tcl │ └── yabai │ │ └── yabairc └── .local │ └── share │ └── cx.darryl.modules │ └── modulefiles │ └── yabai ├── iterm2 ├── .config │ ├── cx.darryl.modules │ │ └── rc.d │ │ │ └── 10-iterm2.tcl │ └── cx.darryl.bash │ │ └── profile.d │ │ └── 10-iterm2.bash ├── .local │ └── share │ │ ├── cx.darryl.modules │ │ └── modulefiles │ │ │ └── iterm2 │ │ └── cx.darryl.iterm2 │ │ ├── aws.itermcolors │ │ └── glacier-black.itermcolors └── Library │ └── Application Support │ └── iTerm2 │ └── Scripts │ └── AutoLaunch │ └── git_committer.py ├── autoconf ├── .config │ └── cx.darryl.modules │ │ └── rc.d │ │ └── 10-autoconf.tcl └── .local │ └── share │ ├── autoconf │ └── config.site │ └── cx.darryl.modules │ └── modulefiles │ └── autoconf ├── coreutils ├── .config │ └── cx.darryl.modules │ │ └── rc.d │ │ └── 10-coreutils.tcl └── .local │ └── share │ └── cx.darryl.modules │ └── modulefiles │ └── coreutils ├── gpg └── .config │ ├── gnupg │ ├── gpg-agent.conf │ └── gpg.conf │ └── cx.darryl.bash │ └── profile.d │ └── 01-gpg.bash ├── spack └── .config │ ├── spack │ └── config.yaml │ └── cx.darryl.bash │ └── profile.d │ └── 01-spack.bash ├── git ├── .config │ ├── cx.darryl.modules │ │ └── rc.d │ │ │ └── 10-git.tcl │ └── git │ │ ├── ignore │ │ └── config └── .local │ └── share │ └── cx.darryl.modules │ └── modulefiles │ └── git ├── homebrew ├── .config │ └── cx.darryl.modules │ │ └── rc.d │ │ └── 01-homebrew.tcl └── .local │ └── share │ ├── cx.darryl.modules │ └── modulefiles │ │ └── brew │ │ ├── completions │ │ └── shellenv │ └── homebrew │ └── Brewfile ├── less └── .config │ └── cx.darryl.bash │ └── profile.d │ └── 10-less.bash ├── readline └── .config │ ├── cx.darryl.bash │ └── profile.d │ │ └── 00-readline.bash │ └── readline │ └── inputrc ├── modules ├── .config │ ├── cx.darryl.bash │ │ └── profile.d │ │ │ └── 01-modules.bash │ └── cx.darryl.modules │ │ ├── modulerc │ │ └── siteconfig.tcl └── .local │ └── share │ └── cx.darryl.modules │ ├── modulefiles │ └── ctl │ │ └── env │ └── init │ └── bash ├── ctags └── .config │ └── ctags │ └── default.ctags ├── linux └── .Brewfile ├── aoc └── .local │ └── share │ └── cx.darryl.modules │ └── modulefiles │ └── aoc ├── aws ├── .local │ └── share │ │ └── cx.darryl.modules │ │ └── modulefiles │ │ └── aws └── .aws │ └── cli │ └── alias ├── Makefile ├── README.md ├── LICENSE └── kitty └── .config └── kitty └── kitty.conf /.gitignore: -------------------------------------------------------------------------------- 1 | .netrwhist 2 | .proxy 3 | -------------------------------------------------------------------------------- /curl/.config/curlrc: -------------------------------------------------------------------------------- 1 | progress-bar 2 | -------------------------------------------------------------------------------- /stow/.stow-global-ignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /.stowrc: -------------------------------------------------------------------------------- 1 | --target=~ 2 | --ignore='\.DS_Store' 3 | -------------------------------------------------------------------------------- /bash/.hushlogin: -------------------------------------------------------------------------------- 1 | # Shh no login only dreams now 2 | -------------------------------------------------------------------------------- /gh/.config/cx.darryl.modules/rc.d/10-gh.tcl: -------------------------------------------------------------------------------- 1 | module load gh 2 | -------------------------------------------------------------------------------- /kiro/.config/cx.darryl.modules/rc.d/10-kiro.tcl: -------------------------------------------------------------------------------- 1 | module load kiro 2 | -------------------------------------------------------------------------------- /macos/.stow-local-ignore: -------------------------------------------------------------------------------- 1 | /duti 2 | README.md 3 | defaults.sh 4 | -------------------------------------------------------------------------------- /skhd/.config/cx.darryl.modules/rc.d/10-skhd.tcl: -------------------------------------------------------------------------------- 1 | module load skhd 2 | -------------------------------------------------------------------------------- /stow/.config/cx.darryl.modules/rc.d/10-stow.tcl: -------------------------------------------------------------------------------- 1 | module load stow 2 | -------------------------------------------------------------------------------- /vim/.config/cx.darryl.modules/rc.d/10-vim.tcl: -------------------------------------------------------------------------------- 1 | module load vim 2 | -------------------------------------------------------------------------------- /yabai/.config/cx.darryl.modules/rc.d/10-yabai.tcl: -------------------------------------------------------------------------------- 1 | module load yabai 2 | -------------------------------------------------------------------------------- /iterm2/.config/cx.darryl.modules/rc.d/10-iterm2.tcl: -------------------------------------------------------------------------------- 1 | module load iterm2 2 | -------------------------------------------------------------------------------- /macos/.lldbinit: -------------------------------------------------------------------------------- 1 | command script import ~/resources/lldbinit/lldbinit.py 2 | -------------------------------------------------------------------------------- /autoconf/.config/cx.darryl.modules/rc.d/10-autoconf.tcl: -------------------------------------------------------------------------------- 1 | module load autoconf 2 | -------------------------------------------------------------------------------- /coreutils/.config/cx.darryl.modules/rc.d/10-coreutils.tcl: -------------------------------------------------------------------------------- 1 | module load coreutils 2 | -------------------------------------------------------------------------------- /bash/.bash_profile: -------------------------------------------------------------------------------- 1 | source ${XDG_CONFIG_HOME:-$HOME/.config}/cx.darryl.bash/profile 2 | -------------------------------------------------------------------------------- /gpg/.config/gnupg/gpg-agent.conf: -------------------------------------------------------------------------------- 1 | default-cache-ttl 2592000 2 | max-cache-ttl 2592000 3 | -------------------------------------------------------------------------------- /autoconf/.local/share/autoconf/config.site: -------------------------------------------------------------------------------- 1 | test "$prefix" = NONE && prefix=$HOME/.local 2 | -------------------------------------------------------------------------------- /gh/.config/gh/config.yml: -------------------------------------------------------------------------------- 1 | version: "1" 2 | git_protocol: ssh 3 | color_labels: enabled 4 | -------------------------------------------------------------------------------- /spack/.config/spack/config.yaml: -------------------------------------------------------------------------------- 1 | config: 2 | build_stage: 3 | - $user_cache_home/stage 4 | -------------------------------------------------------------------------------- /git/.config/cx.darryl.modules/rc.d/10-git.tcl: -------------------------------------------------------------------------------- 1 | module switch git profile=personal 2 | module load gh 3 | -------------------------------------------------------------------------------- /kiro/.local/share/cx.darryl.modules/modulefiles/kiro: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | set-alias kc kiro-cli-chat 4 | -------------------------------------------------------------------------------- /homebrew/.config/cx.darryl.modules/rc.d/01-homebrew.tcl: -------------------------------------------------------------------------------- 1 | module load brew/shellenv 2 | module load brew/completions 3 | -------------------------------------------------------------------------------- /bash/.local/share/cx.darryl.modules/modulefiles/bash/env: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | setenv BASH_SILENCE_DEPRECATION_WARNING 1 4 | -------------------------------------------------------------------------------- /bash/.bashrc: -------------------------------------------------------------------------------- 1 | # Source ~/.bash_profile in the event of a shell 2 | # looking for a .bashrc 3 | 4 | source ~/.bash_profile 5 | -------------------------------------------------------------------------------- /bash/.local/share/cx.darryl.modules/modulefiles/bash/aliases: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | set-alias rebash {source ~/.bash_profile} 4 | -------------------------------------------------------------------------------- /gh/.local/share/cx.darryl.modules/modulefiles/gh: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | source-sh bash-eval [exec which gh] completion -s bash 4 | -------------------------------------------------------------------------------- /less/.config/cx.darryl.bash/profile.d/10-less.bash: -------------------------------------------------------------------------------- 1 | export LESSHISTFILE=${XDG_STATE_HOME:=$HOME/.local/state}/less/history 2 | -------------------------------------------------------------------------------- /readline/.config/cx.darryl.bash/profile.d/00-readline.bash: -------------------------------------------------------------------------------- 1 | export INPUTRC=${XDG_CONFIG_HOME:-$HOME/.config}/readline/inputrc 2 | -------------------------------------------------------------------------------- /gpg/.config/gnupg/gpg.conf: -------------------------------------------------------------------------------- 1 | no-greeting 2 | use-agent 3 | default-key A03538CDABBA7E00 4 | keyid-format long 5 | with-fingerprint 6 | -------------------------------------------------------------------------------- /modules/.config/cx.darryl.bash/profile.d/01-modules.bash: -------------------------------------------------------------------------------- 1 | source ${XDG_DATA_HOME:-$HOME/.local/share}/cx.darryl.modules/init/bash 2 | -------------------------------------------------------------------------------- /gpg/.config/cx.darryl.bash/profile.d/01-gpg.bash: -------------------------------------------------------------------------------- 1 | export GNUPGHOME=${XDG_CONFIG_HOME:-$HOME/.config}/gnupg 2 | 3 | export GPG_TTY=$(tty) 4 | -------------------------------------------------------------------------------- /stow/.local/share/cx.darryl.modules/modulefiles/stow: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | set-alias restow {stow --restow} 4 | set-alias unstow {stow --delete} 5 | -------------------------------------------------------------------------------- /ctags/.config/ctags/default.ctags: -------------------------------------------------------------------------------- 1 | --recurse=yes 2 | --tag-relative=yes 3 | 4 | --exclude=.build 5 | --exclude=.DS_Store 6 | --exclude=.git 7 | --exclude=build 8 | -------------------------------------------------------------------------------- /autoconf/.local/share/cx.darryl.modules/modulefiles/autoconf: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | prepend-path --delim " " CONFIG_SITE [file join $XDG_DATA_HOME autoconf config.site] 4 | -------------------------------------------------------------------------------- /bash/.config/cx.darryl.bash/profile: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | for f in ${XDG_CONFIG_HOME:-$HOME/.config}/cx.darryl.bash/profile.d/*.bash; do 4 | source $f 5 | done 6 | -------------------------------------------------------------------------------- /linux/.Brewfile: -------------------------------------------------------------------------------- 1 | brew "curl" 2 | brew "git" 3 | brew "hub" 4 | brew "make" 5 | brew "nginx" 6 | brew "pandoc" 7 | brew "sass/sass/sass" 8 | brew "stow" 9 | brew "tree" 10 | -------------------------------------------------------------------------------- /macos/duti/openemu.txt: -------------------------------------------------------------------------------- 1 | .agb 2 | .g64 3 | .gb 4 | .gba 5 | .gbc 6 | .gen 7 | .n64 8 | .nds 9 | .nes 10 | .sgb 11 | .smc 12 | .smd 13 | .snes 14 | .srm 15 | .v64 16 | .z64 17 | -------------------------------------------------------------------------------- /bash/.config/cx.darryl.bash/profile.d/10-bash.bash: -------------------------------------------------------------------------------- 1 | file=${HOMEBREW_PREFIX:-/opt/homebrew}/etc/profile.d/bash_completion.sh 2 | 3 | [[ -r $file ]] && source $file 4 | 5 | unset file 6 | -------------------------------------------------------------------------------- /iterm2/.config/cx.darryl.bash/profile.d/10-iterm2.bash: -------------------------------------------------------------------------------- 1 | file=${XDG_DATA_HOME:-$HOME/.local/share}/iterm2/shell_integration.bash 2 | 3 | [[ -e $file ]] && source $file 4 | 5 | unset file 6 | -------------------------------------------------------------------------------- /macos/duti/iina.txt: -------------------------------------------------------------------------------- 1 | .3gp 2 | .aac 3 | .avi 4 | .flac 5 | .flv 6 | .m4a 7 | .m4v 8 | .mkv 9 | .mov 10 | .mp3 11 | .mp4 12 | .mpeg 13 | .mpg 14 | .wav 15 | .webm 16 | .wma 17 | .wmv 18 | -------------------------------------------------------------------------------- /homebrew/.local/share/cx.darryl.modules/modulefiles/brew/completions: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | depends-on brew/shellenv 4 | 5 | source-sh bash [file join [getenv HOMEBREW_PREFIX] completions bash brew] 6 | -------------------------------------------------------------------------------- /bash/.config/cx.darryl.modules/rc.d/98-bash.tcl: -------------------------------------------------------------------------------- 1 | # Disable CWD in prompt if we're in iTerm2; assume status bar has CWD 2 | if {[is-loaded iterm2]} { 3 | module switch bash/prompt pwd=none 4 | } 5 | -------------------------------------------------------------------------------- /skhd/.local/share/cx.darryl.modules/modulefiles/skhd: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | module-whatis "skhd helper aliases" 4 | 5 | # Restart the skhd service quickly 6 | set-alias rekey {skhd --restart-service} 7 | 8 | -------------------------------------------------------------------------------- /iterm2/.local/share/cx.darryl.modules/modulefiles/iterm2: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | set-function iterm2_print_user_vars { 4 | iterm2_set_user_var gitCommitter $(git var GIT_COMMITTER_IDENT | sed 's/.*<\([^>]*\)>.*/\1/') 5 | } 6 | -------------------------------------------------------------------------------- /bash/.config/cx.darryl.modules/rc.d/10-bash.tcl: -------------------------------------------------------------------------------- 1 | module load shell/path 2 | module load shell/aliases 3 | 4 | module load bash/aliases 5 | module load bash/color 6 | module load bash/env 7 | module load bash/prompt 8 | module load bash/history 9 | -------------------------------------------------------------------------------- /git/.config/git/ignore: -------------------------------------------------------------------------------- 1 | *~ 2 | .DS_Store 3 | .DocumentRevisions-V100 4 | .fseventsd 5 | .Spotlight-V100 6 | .TemporaryItems 7 | .Trashes 8 | .VolumeIcon.icns 9 | .com.apple.timemachine.donotpresent 10 | cscope.* 11 | secring.* 12 | tags 13 | -------------------------------------------------------------------------------- /bash/.local/share/cx.darryl.modules/modulefiles/bash/color: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | set-alias egrep "egrep --color=auto" 4 | set-alias grep "grep --color=auto" 5 | set-alias tree "tree -C" 6 | 7 | setenv CLICOLOR 1 8 | setenv LSCOLORS exgxbxbxCxfxfxCaCaeaea 9 | -------------------------------------------------------------------------------- /bash/.local/share/cx.darryl.modules/modulefiles/shell/path: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | prepend-path PATH [file join [file home] .local bin] 4 | append-path MANPATH : 5 | prepend-path PKG_CONFIG_PATH [file join [file home] .local lib pkgconfig] 6 | -------------------------------------------------------------------------------- /vim/.local/share/cx.darryl.modules/modulefiles/vim: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | module-whatis Vim-related configurations 4 | 5 | set-alias v vim 6 | 7 | set-function vt { 8 | local tag="$1" 9 | shift 10 | vim -t "$tag" -c 'normal! zz' "$@" 11 | } 12 | 13 | setenv EDITOR vim 14 | -------------------------------------------------------------------------------- /yabai/.local/share/cx.darryl.modules/modulefiles/yabai: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | module-whatis "yabai helper aliases" 4 | 5 | set-alias ffmon {yabai -m config focus_follows_mouse autofocus} 6 | set-alias ffmoff {yabai -m config focus_follows_mouse off} 7 | set-alias reyabai {yabai --restart-service} 8 | 9 | -------------------------------------------------------------------------------- /macos/duti/sourcecode.txt: -------------------------------------------------------------------------------- 1 | .bash 2 | .c 3 | .cabal 4 | .conf 5 | .cpp 6 | .css 7 | .erb 8 | .go 9 | .h 10 | .hs 11 | .js 12 | .json 13 | .map 14 | .md 15 | .nginxconf 16 | .pl 17 | .plist 18 | .py 19 | .rb 20 | .sass 21 | .scss 22 | .sh 23 | .slim 24 | .swift 25 | .toml 26 | .txt 27 | .xml 28 | .yaml 29 | .yml 30 | -------------------------------------------------------------------------------- /modules/.local/share/cx.darryl.modules/modulefiles/ctl/env: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | module-help {User environment configuration} 4 | 5 | set modules_prefix [file join /opt homebrew opt modules] 6 | set completion_file [file join $modules_prefix init bash_completion] 7 | 8 | source-sh bash $completion_file 9 | 10 | set-alias m ml 11 | -------------------------------------------------------------------------------- /readline/.config/readline/inputrc: -------------------------------------------------------------------------------- 1 | # Use vi/vim keybindings in the terminal 2 | set editing-mode vi 3 | 4 | # Show all matching filenames for tab-completion 5 | set show-all-if-ambiguous on 6 | 7 | # Ignore case for tab auto-completion 8 | set completion-ignore-case on 9 | 10 | # Exit normal/command mode by typing 'jk' or 'kj' 11 | "jk":"\e" 12 | "kj":"\e" 13 | -------------------------------------------------------------------------------- /git/.local/share/cx.darryl.modules/modulefiles/git: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | variant --default personal profile personal work 4 | 5 | switch -- [getvariant --return-value profile] { 6 | work { set email drl@amazon.com } 7 | personal - 8 | default { set email darrylabbate@gmail.com } 9 | } 10 | 11 | setenv GIT_AUTHOR_EMAIL $email 12 | setenv GIT_COMMITTER_EMAIL $email 13 | 14 | set-alias g git 15 | -------------------------------------------------------------------------------- /aoc/.local/share/cx.darryl.modules/modulefiles/aoc: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | module-whatis Advent of Code utilities 4 | module-help TODO outline manual AoC cookie retrieval process and file path 5 | 6 | set-function aocinput { 7 | local YEAR=$(pwd | awk -F/ '{printf "%s\n", $(NF-1)}') 8 | local DAY=$(pwd | awk -F/ '{printf "%d\n", $(NF)}') 9 | curl --cookie session=$AOC_COOKIE https://adventofcode.com/20$YEAR/day/$DAY/input > input 10 | } 11 | -------------------------------------------------------------------------------- /modules/.config/cx.darryl.modules/modulerc: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | # TODO detect or otherwise abstract namespace 4 | module use [file join $XDG_DATA_HOME cx.darryl.modules modulefiles] 5 | 6 | # TODO load from $XDG_CONFIG_HOME/*.modules/rc.d/*? 7 | set rc_dir [file join $XDG_CONFIG_HOME cx.darryl.modules rc.d] 8 | if {[file exists $rc_dir]} { 9 | foreach init_script [lsort [glob -nocomplain $rc_dir/*.tcl]] { 10 | source $init_script 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /bash/.local/share/cx.darryl.modules/modulefiles/bash/prompt: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | module-whatis "Bash prompt configuration" 4 | 5 | variant --default basename pwd basename full none 6 | 7 | switch -- [getvariant --return-value pwd] { 8 | basename { set pwd {\W } } 9 | full { set pwd {\w } } 10 | none { set pwd "" } 11 | } 12 | 13 | append pwd {\[$(tput -T xterm-256color bold)\]\$\[$(tput -T xterm-256color sgr0)\] } 14 | 15 | setenv PS1 $pwd 16 | -------------------------------------------------------------------------------- /bash/.local/share/cx.darryl.modules/modulefiles/shell/aliases: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | set-alias .. "cd .." 4 | set-alias ... "cd ../.." 5 | set-alias .... "cd ../../.." 6 | 7 | set-alias b "cd -" 8 | set-alias d "cd ~/dotfiles" 9 | set-alias h "cd ~" 10 | set-alias p "cd ~/projects" 11 | set-alias s "cd ~/src" 12 | 13 | set-alias l "ls -F" 14 | set-alias la "ls -AF" 15 | set-alias ll "ls -AFlo" 16 | 17 | set-alias t "type" 18 | set-alias ta "type -a" 19 | -------------------------------------------------------------------------------- /bash/.local/share/cx.darryl.modules/modulefiles/bash/history: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | module-whatis Bash history control 4 | 5 | variant --boolean --default on ignoredups 6 | variant --boolean --default on ignorespace 7 | 8 | foreach setting {ignoredups ignorespace} { 9 | if {[getvariant --return-value $setting]} { 10 | prepend-path HISTCONTROL $setting 11 | } 12 | } 13 | 14 | prepend-path HISTIGNORE {?} 15 | prepend-path HISTIGNORE {??} 16 | 17 | setenv HISTFILE [file join $XDG_STATE_HOME bash history] 18 | -------------------------------------------------------------------------------- /macos/duti/set.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Set default handlers/programs for file-types 4 | # Dependency: duti (brew install duti) 5 | 6 | DUTI_DIR=$HOME/dotfiles/macos/duti 7 | 8 | # IINA (media files) 9 | while read -r ext; do 10 | duti -s com.colliderli.iina "$ext" all 11 | done <"${DUTI_DIR}/iina.txt" 12 | 13 | # OpenEmu 14 | while read -r ext; do 15 | duti -s org.openemu.OpenEmu "$ext" all 16 | done <"${DUTI_DIR}/openemu.txt" 17 | 18 | # Sublime Text 19 | while read -r ext; do 20 | duti -s com.apple.TextEdit "$ext" all 21 | done <"${DUTI_DIR}/sourcecode.txt" 22 | -------------------------------------------------------------------------------- /macos/Library/Application Support/xbar/plugins/caffeinate-toggle.5s.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Check if caffeinate is running 4 | if pgrep -f "caffeinate -d" > /dev/null; then 5 | echo "􀸙 | font=SF-Pro-Display-Light" 6 | echo "---" 7 | echo "Decaffeinate | bash='$0' param1=off terminal=false refresh=true" 8 | else 9 | echo "􀸘 | font=SF-Pro-Display-Light" 10 | echo "---" 11 | echo "Caffeinate | bash='$0' param1=on terminal=false refresh=true" 12 | fi 13 | 14 | # Handle toggle actions 15 | if [ "$1" = "on" ]; then 16 | nohup caffeinate -d > /dev/null 2>&1 & 17 | elif [ "$1" = "off" ]; then 18 | pkill -f "caffeinate -d" 19 | fi 20 | -------------------------------------------------------------------------------- /coreutils/.local/share/cx.darryl.modules/modulefiles/coreutils: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | module-whatis "GNU coreutils" 4 | 5 | # Ensure Homebrew environment is loaded first 6 | depends-on brew/shellenv 7 | 8 | # Use HOMEBREW_PREFIX provided by the Homebrew module 9 | set prefix [getenv HOMEBREW_PREFIX] 10 | set libexecdir [file join $prefix opt coreutils libexec] 11 | 12 | prepend-path PATH [file join $libexecdir gnubin] 13 | prepend-path MANPATH [file join $libexecdir gnuman] 14 | 15 | # Friendly ls aliases matching your Lua module 16 | set ls_opts "--color --group-directories-first" 17 | set-alias l "ls -Fh $ls_opts" 18 | set-alias la "ls -AFh $ls_opts" 19 | set-alias ll "ls -AFhlo $ls_opts" 20 | 21 | -------------------------------------------------------------------------------- /spack/.config/cx.darryl.bash/profile.d/01-spack.bash: -------------------------------------------------------------------------------- 1 | export SPACK_USER_CONFIG_PATH=${XDG_CONFIG_HOME:-$HOME/.config}/spack 2 | export SPACK_USER_CACHE_PATH=${XDG_CACHE_HOME:-$HOME/.cache}/spack 3 | 4 | fsx_rootdir=/fsx/$USER 5 | _spack_root=${SPACK_ROOT:-$HOME/spack} 6 | 7 | [[ -d "$fsx_rootdir" ]] && { 8 | export SPACK_USER_CACHE_PATH=$fsx_rootdir/cache/spack 9 | _spack_root=$fsx_rootdir/spack 10 | } 11 | 12 | _spack_setup="$_spack_root/share/spack/setup-env.sh" 13 | 14 | # Lazy-load Spack 15 | spack() { 16 | unset -f spack 17 | [[ -r $_spack_setup ]] || { 18 | printf 'spack: setup file not found at %s\n' "$_spack_setup" >&2 19 | return 127 20 | } 21 | . "$_spack_setup" 22 | spack "$@" 23 | } 24 | -------------------------------------------------------------------------------- /aws/.local/share/cx.darryl.modules/modulefiles/aws: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | module-whatis AWS CLI configurations 4 | module-help TODO 5 | 6 | variant --default table output json table text yaml yaml-stream 7 | variant --default default profile 8 | variant --default us-west-2 region 9 | 10 | setenv AWS_DEFAULT_OUTPUT [getvariant output] 11 | setenv AWS_PROFILE [getvariant profile] 12 | setenv AWS_REGION [getvariant region] 13 | 14 | prereq --optional brew/shellenv 15 | 16 | if {[is-loaded brew/shellenv] && [file exists [file join [getenv HOMEBREW_PREFIX] bin aws]]} { 17 | set homebrew_completer [file join [getenv HOMEBREW_PREFIX] etc bash_completion.d aws_bash_completer] 18 | if {[file exists $homebrew_completer]} { 19 | source-sh bash $homebrew_completer 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /homebrew/.local/share/cx.darryl.modules/modulefiles/brew/shellenv: -------------------------------------------------------------------------------- 1 | #%Module 2 | 3 | module-whatis Homebrew environment setup 4 | module-help This encapsulates `brew shellenv` as a module and sets other environment configurations 5 | 6 | switch -- [uname sysname] { 7 | Darwin { 8 | switch -- [uname machine] { 9 | arm64 { set brew_prefix [file join /opt homebrew] } 10 | x86_64 { set brew_prefix [file join /usr local] } 11 | } 12 | } 13 | Linux { 14 | set brew_prefix [file join [file home linuxbrew] .linuxbrew] 15 | } 16 | } 17 | 18 | source-sh bash-eval [file join $brew_prefix bin brew] shellenv 19 | 20 | setenv HOMEBREW_BUNDLE_FILE [file join $XDG_DATA_HOME homebrew Brewfile] 21 | setenv HOMEBREW_CURLRC [file join $XDG_CONFIG_HOME curlrc] 22 | setenv HOMEBREW_FORCE_BREWED_CURL 1 23 | setenv HOMEBREW_NO_AUTO_UPDATE 1 24 | -------------------------------------------------------------------------------- /modules/.local/share/cx.darryl.modules/init/bash: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # TODO implement modules path discovery (non-Homebrew installations) 4 | modules_pkg_prefix=/opt/homebrew/opt/modules 5 | modulecmd=$modules_pkg_prefix/bin/modulecmd 6 | 7 | # Setting the siteconfig with the environment variable configures the siteconfig 8 | # _during_ the modules system initialization. This avoids the issue where 9 | # procedures and variables defined in the siteconfig aren't visible to modules 10 | # loaded within the user's modulerc (~/.modulerc) if the siteconfig is 11 | # configured using `module config extra_siteconfig`. 12 | export MODULES_SITECONFIG=${XDG_CONFIG_HOME:-$HOME/.config}/cx.darryl.modules/siteconfig.tcl 13 | export MODULERCFILE=${XDG_CONFIG_HOME:-$HOME/.config}/cx.darryl.modules/modulerc 14 | eval "$($modulecmd bash autoinit)" 15 | 16 | completion_script=$modules_pkg_prefix/init/bash_completion 17 | 18 | [[ -f $completion_script ]] && [[ -r $completion_script ]] && source $completion_script 19 | 20 | module config mcookie_check eval 21 | -------------------------------------------------------------------------------- /yabai/.config/yabai/yabairc: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Set default mode to float 4 | yabai -m config layout float 5 | 6 | # Set default padding/gaps between windows 7 | for param in \ 8 | {top,bottom,left,right}_padding \ 9 | window_gap ; do 10 | yabai -m config $param 5 11 | done 12 | 13 | yabai -m config split_ratio 0.5 14 | yabai -m config focus_follows_mouse off 15 | yabai -m config mouse_follows_focus off 16 | yabai -m config mouse_modifier fn 17 | yabai -m config normal_window_border_color 0xffd75f5f 18 | yabai -m config normal_window_border_width 5 19 | yabai -m config active_window_border_color 0xff8AFAFB 20 | yabai -m config active_window_border_width 5 21 | 22 | # Explicitly define which apps can be managed 23 | managed=( 24 | 'iTerm' 25 | 'Firefox' 26 | 'Safari' 27 | 'Google Chrome' 28 | ) 29 | printf -v regex "%s|" "${managed[@]}" 30 | regex="(${regex%|})" 31 | 32 | yabai -m rule --add app!=$regex manage=off 33 | 34 | # Always float iTerm hotkey window 35 | yabai -m rule --add app='^iTerm$' title='^Hotkey Window$' manage=off 36 | -------------------------------------------------------------------------------- /modules/.config/cx.darryl.modules/siteconfig.tcl: -------------------------------------------------------------------------------- 1 | set XDG_CONFIG_HOME [getenv XDG_CONFIG_HOME [file join [file home] .config]] 2 | set XDG_DATA_HOME [getenv XDG_DATA_HOME [file join [file home] .local share]] 3 | set XDG_CACHE_HOME [getenv XDG_CACHE_HOME [file join [file home] .cache]] 4 | set XDG_STATE_HOME [getenv XDG_STATE_HOME [file join [file home] .local state]] 5 | 6 | set extra_vars [list \ 7 | XDG_CONFIG_HOME $XDG_CONFIG_HOME \ 8 | XDG_DATA_HOME $XDG_DATA_HOME \ 9 | XDG_CACHE_HOME $XDG_CACHE_HOME \ 10 | XDG_STATE_HOME $XDG_STATE_HOME \ 11 | ] 12 | 13 | proc putSepLine {} { 14 | if {[module-info mode display]} { 15 | set cols [getConf term_width] 16 | if {$cols == 0} { 17 | set cols 80 18 | } 19 | set max_rep 67 20 | set rep [expr {$cols > $max_rep ? $max_rep : $cols}] 21 | puts stderr [string repeat - $rep] 22 | } 23 | } 24 | 25 | set modulefile_extra_cmds {putSepLine putSepLine} 26 | set modulefile_extra_vars $extra_vars 27 | set modulerc_extra_vars $extra_vars 28 | 29 | setConf implicit_default 0 30 | -------------------------------------------------------------------------------- /git/.config/git/config: -------------------------------------------------------------------------------- 1 | [user] 2 | name = Darryl Abbate 3 | email = darrylabbate@gmail.com 4 | signingkey = A03538CDABBA7E00 5 | [color] 6 | ui = true 7 | [commit] 8 | gpgsign = true 9 | [core] 10 | ignorecase = true 11 | pager = diff-so-fancy | less --tabs=2 -RFX 12 | [credential] 13 | helper = osxkeychain 14 | [pull] 15 | rebase = true 16 | [init] 17 | defaultBranch = master 18 | [tag] 19 | gpgSign = true 20 | [filter "lfs"] 21 | clean = git-lfs clean -- %f 22 | smudge = git-lfs smudge -- %f 23 | process = git-lfs filter-process 24 | required = true 25 | [push] 26 | autoSetupRemote = true 27 | [alias] 28 | a = add 29 | all = add --all 30 | b = branch 31 | ba = branch --all 32 | c = commit 33 | ca = commit --amend 34 | cl = clone --recursive 35 | co = checkout 36 | cob = checkout -b 37 | cp = cherry-pick 38 | cur = branch --show-current 39 | d = diff 40 | ds = diff --cached 41 | f = fetch 42 | g = grep 43 | gi = grep -i 44 | l = log --oneline -n 10 45 | p = push 46 | pl = pull 47 | rb = rebase 48 | rba = rebase --abort 49 | rbc = rebase --continue 50 | rd = !git --no-pager diff --no-ext-diff --no-prefix 51 | s = status -sb 52 | w = worktree 53 | wa = worktree add 54 | wls = worktree list 55 | [grep] 56 | patternType = perl 57 | -------------------------------------------------------------------------------- /homebrew/.local/share/homebrew/Brewfile: -------------------------------------------------------------------------------- 1 | tap "asmvik/formulae" 2 | tap "sass/sass" 3 | brew "modules", postinstall: "source ${HOMEBREW_PREFIX}/opt/modules/init/bash" 4 | brew "autoconf" 5 | brew "automake" 6 | brew "bash" 7 | brew "bash-completion@2" 8 | brew "bats-core" 9 | brew "cask" 10 | brew "cmake" 11 | brew "coreutils" 12 | brew "cscope" 13 | brew "universal-ctags" 14 | brew "curl" 15 | brew "diff-so-fancy" 16 | brew "duti" 17 | brew "emscripten", args: ["HEAD"] 18 | brew "ffmpeg" 19 | brew "fswatch" 20 | brew "gawk" 21 | brew "gettext" 22 | brew "gibo" 23 | brew "git" 24 | brew "gh" 25 | brew "gnupg" 26 | brew "hyperfine" 27 | brew "jq" 28 | brew "lighttpd" 29 | brew "llvm" 30 | brew "lua" 31 | brew "luajit" 32 | brew "mawk" 33 | brew "nmap" 34 | brew "pandoc" 35 | brew "pcre2" 36 | brew "perl" 37 | brew "pkgconf" 38 | brew "python@3" 39 | brew "rename" 40 | brew "sass" 41 | brew "shellcheck" 42 | brew "skhd" 43 | brew "speedtest-cli" 44 | brew "stow" 45 | brew "svn" 46 | brew "tldr" 47 | brew "tree" 48 | brew "unar" 49 | brew "utm" 50 | brew "wabt" 51 | brew "watch" 52 | brew "wget" 53 | brew "yabai" 54 | brew "youtube-dl" 55 | cask "basictex" 56 | cask "font-hasklig" 57 | cask "font-source-code-pro" 58 | cask "font-sf-pro" 59 | cask "google-chrome" 60 | cask "iina" 61 | cask "iterm2" 62 | cask "marked" 63 | cask "qlcolorcode" 64 | cask "qlstephen" 65 | cask "slack" 66 | cask "spotify" 67 | cask "xbar" 68 | -------------------------------------------------------------------------------- /iterm2/Library/Application Support/iTerm2/Scripts/AutoLaunch/git_committer.py: -------------------------------------------------------------------------------- 1 | 2 | import iterm2 3 | import subprocess 4 | import re 5 | import os 6 | 7 | async def main(connection): 8 | show_domain = "show_domain_only" 9 | knobs = [iterm2.CheckboxKnob("Show Domain Only", False, show_domain)] 10 | component = iterm2.StatusBarComponent( 11 | short_description="Git Committer Email", 12 | detailed_description="Shows the effective git committer email (respects env vars)", 13 | knobs=knobs, 14 | exemplar="user@example.com", 15 | update_cadence=5, # Refresh every 5 seconds 16 | identifier="com.iterm2.example.git-committer-email") 17 | 18 | @iterm2.StatusBarRPC 19 | async def coro(knobs): 20 | try: 21 | result = subprocess.run( 22 | ['git', 'var', 'GIT_COMMITTER_IDENT'], 23 | capture_output=True, 24 | text=True, 25 | timeout=5, 26 | env=os.environ.copy() # This is the key fix! 27 | ) 28 | 29 | if result.returncode == 0: 30 | ident = result.stdout.strip() 31 | if ident: 32 | email_match = re.search(r'<([^>]+)>', ident) 33 | if email_match: 34 | email = email_match.group(1) 35 | 36 | if show_domain in knobs and knobs[show_domain]: 37 | if '@' in email: 38 | domain = email.split('@')[1] 39 | return f"@{domain}" 40 | else: 41 | return email 42 | else: 43 | return email 44 | else: 45 | return "Invalid git ident" 46 | else: 47 | return "No git ident set" 48 | else: 49 | return "Not a git repo" 50 | except subprocess.TimeoutExpired: 51 | return "Git timeout" 52 | except FileNotFoundError: 53 | return "Git not found" 54 | except Exception as e: 55 | return "Git error" 56 | 57 | await component.async_register(connection, coro) 58 | 59 | iterm2.run_forever(main) 60 | 61 | 62 | -------------------------------------------------------------------------------- /skhd/.config/skhd/skhdrc: -------------------------------------------------------------------------------- 1 | # --------------------------------------- 2 | # skhdrc 3 | # --------------------------------------- 4 | 5 | # --grid guide 6 | # 7 | # X:Y:A:B:C:D 8 | # 9 | # X:Y defines the rows:columns of the virtual grid 10 | # 11 | # A:B defines the placement of the window on the grid 12 | # 1:0 places window in topmost row and 2nd leftmost column 13 | # 14 | # C:D defines the size of the window 15 | # 2:1 would resize the window to 2 times width and 1 times height 16 | # of the grid defined in X:Y 17 | 18 | 19 | # Change tiling mode of space 20 | alt + cmd - b : yabai -m space --layout bsp 21 | alt + cmd - n : yabai -m space --layout float 22 | 23 | 24 | ### BSP mode shortcuts ### 25 | 26 | # Detach focused window from bsp 27 | alt - d : yabai -m window --toggle float 28 | 29 | # Increase/decrease window size 30 | alt + cmd - h : yabai -m window --resize left:-20:0; \ 31 | yabai -m window --resize right:-20:0 32 | alt + cmd - j : yabai -m window --resize top:0:20; \ 33 | yabai -m window --resize bottom:0:20 34 | alt + cmd - k : yabai -m window --resize top:0:-20; \ 35 | yabai -m window --resize bottom:0:-20 36 | alt + cmd - l : yabai -m window --resize right:20:0; \ 37 | yabai -m window --resize left:20:0 38 | 39 | alt + cmd - p : yabai -m space --gap rel:5; \ 40 | yabai -m space --padding rel:5:5:5:5 41 | alt + cmd - o : yabai -m space --gap rel:-5; \ 42 | yabai -m space --padding rel:-5:-5:-5:-5 43 | 44 | # Warp focused container 45 | alt - h : yabai -m window --warp west 46 | alt - j : yabai -m window --warp south 47 | alt - k : yabai -m window --warp north 48 | alt - l : yabai -m window --warp east 49 | 50 | # Rotate window arrangement 90 degrees 51 | alt + cmd - r : yabai -m space --rotate 90 52 | 53 | # Rotate window arrangement 180 degrees (flip) 54 | alt + cmd - f : yabai -m space --rotate 180 55 | 56 | # Equalize size of windows 57 | alt + cmd - e : yabai -m space --balance 58 | 59 | # Toggle split 60 | alt + cmd - x : yabai -m window --toggle split 61 | 62 | 63 | ### Float mode shortcuts ### 64 | 65 | # Make focused window fill screen 66 | alt + cmd - m : yabai -m window --grid 1:1:0:0:1:1 67 | 68 | # Move focused window to center (mainly to set iTerm hotkey window) 69 | alt + cmd - g : yabai -m window --grid 7:9:2:2:5:3 70 | 71 | # Move focused window to middle (ideal readability) 72 | alt + cmd - t : yabai -m window --grid 5:5:1:0:3:5 73 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | DOTFILES_DIR := $(shell echo $(HOME)/dotfiles) 2 | SHELL := /bin/sh 3 | UNAME_M := $(shell uname -m) 4 | UNAME_S := $(shell uname -s) 5 | USER := $(shell whoami) 6 | 7 | ifeq ($(UNAME_S), Darwin) 8 | BASE := macos 9 | BREWFILE := macos/.Brewfile 10 | ifeq ($(UNAME_M), arm64) 11 | BREW_PREFIX := /opt/homebrew 12 | else ifeq ($(UNAME_M), x86_64) 13 | BREW_PREFIX := /usr/local 14 | endif 15 | 16 | else 17 | BREW_PREFIX := /home/linuxbrew/.linuxbrew 18 | 19 | # ParallelCluster 20 | ifneq ($(wildcard /etc/parallelcluster),) 21 | BASE := pcluster 22 | BREWFILE := linux/pcluster.brewfile 23 | else ifeq ($(UNAME_S), Linux) 24 | BASE := linux 25 | BREWFILE := linux/.Brewfile 26 | endif 27 | endif 28 | 29 | .PHONY: all install 30 | 31 | all: install 32 | 33 | install: $(BASE) 34 | 35 | .PHONY: help usage 36 | .SILENT: help usage 37 | 38 | help: usage 39 | 40 | usage: 41 | printf "\\n\ 42 | \\033[1mDOTFILES\\033[0m\\n\ 43 | \\n\ 44 | Custom settings and configurations for Unix-like environments.\\n\ 45 | See README.md for detailed usage information.\\n\ 46 | \\n\ 47 | \\033[1mUSAGE:\\033[0m make [target]\\n\ 48 | \\n\ 49 | make Install all configurations and applications.\\n\ 50 | \\n\ 51 | " 52 | 53 | .PHONY: linux macos pcluster 54 | 55 | linux: stow vim 56 | sudo apt install build-essential 57 | 58 | macos: brew stow vim 59 | bash $(DOTFILES_DIR)/macos/defaults.sh 60 | bash $(DOTFILES_DIR)/macos/duti/set.sh 61 | $(BREW_PREFIX)/bin/stow gpg 62 | $(BREW_PREFIX)/bin/stow macos 63 | $(BREW_PREFIX)/bin/brew services start yabai 64 | $(BREW_PREFIX)/bin/brew services start skhd 65 | echo $(BREW_PREFIX)/bin/bash | sudo tee -a /etc/shells 66 | chsh -s $(BREW_PREFIX)/bin/bash 67 | ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/local/bin/airport 68 | softwareupdate -aiR 69 | 70 | # Install iTerm shell integ first since it may write to ~/.bash_profile 71 | pcluster: iterm stow vim 72 | sudo yum install -y python3-devel 73 | 74 | .PHONY: brew stow 75 | 76 | brew: 77 | ifeq ($(shell which brew),) 78 | @printf "Homebrew not detected; running install script\\n" 79 | NONINTERACTIVE=1 /bin/bash -c "$$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 80 | else 81 | @printf "Homebrew already installed; skipping installation\\n" 82 | endif 83 | $(BREW_PREFIX)/bin/brew bundle --file=$(DOTFILES_DIR)/$(BREWFILE) 84 | $(BREW_PREFIX)/bin/brew analytics off 85 | 86 | iterm: 87 | curl -L https://iterm2.com/shell_integration/install_shell_integration.sh | bash 88 | 89 | stow: 90 | [ -f ~/.bash_profile ] && [ ! -L ~/.bash_profile ] && mv ~/.bash_profile ~/.bash_profile.bak 91 | [ -f ~/.bashrc ] && [ ! -L ~/.bashrc ] && mv ~/.bashrc ~/.bashrc.bak 92 | stow aws 93 | stow bash 94 | stow git 95 | stow vim 96 | 97 | vim: 98 | vim +PlugInstall +qall 99 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # dotfiles 2 | 3 | Files for configuring a terminal environment and other various system settings. Largely centered around macOS, as well as other Unix-like systems. See [Github does dotfiles](https://dotfiles.github.io) for more info 4 | 5 | ## Installation 6 | 7 | ### `curl` method (easiest) 8 | 9 | ```bash 10 | curl get.darryl.cx | sh && make -C dotfiles 11 | ``` 12 | 13 | Source code for the script is [here](https://github.com/darrylabbate/get-dotfiles/blob/master/src/dotfiles.sh). Checksums can be found in the [tag notes](https://github.com/darrylabbate/get-dotfiles/tags). 14 | 15 | The `curl` method will install everything automatically. This is really useful for quickly setting up a new machine. 16 | 17 | ### Manual method 18 | 19 | You can also manually clone the repository and invoke the `Makefile` 20 | 21 | ```bash 22 | git clone https://github.com/darrylabbate/dotfiles && make -C dotfiles 23 | ``` 24 | 25 | ## Makefile 26 | 27 | ### `make` 28 | 29 | * Installs [Homebrew](https://brew.sh) on macOS and installs all packages defined in the [Brewfile](macos/.Brewfile). 30 | * Sets Homebrew-installed Bash (4.4+) as the default shell 31 | * Updates macOS and configures preferred system defaults defined in [`/macos/defaults.sh`](macos/defaults.sh) 32 | * Configures [yabai](https://github.com/koekeishiya/yabai) and [skhd](https://github.com/koekeishiya/skhd) to run at system startup 33 | * Creates necessary symlinks via [GNU Stow](https://www.gnu.org/software/stow/) 34 | * Runs [`/macos/duti/set.sh`](macos/duti/set.sh), which sets defaults handlers/programs for file extensions via [duti](http://duti.org). 35 | 36 | ### `make link` 37 | 38 | * Symlinks only Bash and Vim configuration files to the home directory using `ln` commands. Useful for temporarily configuring a shared computer. Nothing new is installed to the machine, but files *may* be overwritten since the Makefile recipe passes the `-f` flag for every `ln` command. 39 | * Run `make unlink` to remove these symlinks. 40 | 41 | ## How it Works 42 | 43 | ### Symlinks 44 | 45 | All necessary symlinks ( [`.bash_profile`](bash/.bash_profile), [`.vimrc`](vim/.vimrc), among others) are managed with GNU Stow (installed with Homebrew). Files you wish to be symlinked to the home directory need to be placed in a folder within `~/dotfiles`. Using the `stow` command from the `~/dotfiles` directory will symlink the contents of the folder you choose (`/bash`, `/vim`, etc) to the grandparent directory, which is wherever the `/dotfiles` folder is contained. 46 | 47 | Assuming you clone the dotfiles repository in your home directory, executing the commands: 48 | 49 | ```bash 50 | $ cd dotfiles 51 | $ stow bash 52 | ``` 53 | will symlink the contents of [`/bash`](bash) to the home directory. 54 | 55 | You can use the `stow` command anytime you add a new file to a folder you wish to symlink directly to the home directory. This can all be done without Stow using the `ln -s` command, but I find GNU Stow with folder management to be cleaner and easier to maintain. 56 | 57 | ### Bash 58 | 59 | `.bash_profile` automatically sources configurations defined in the files contained in the [`/bash/dots`](bash/dots) folder. Any changes to any existing file, as well as any new files in `/bash/dots/` will be loaded into the shell upon opening a new Terminal window or [reloading](https://github.com/darrylabbate/dotfiles/blob/db902b9ac0c466d09672f58549bff4107ba53861/dots/aliases#L4) the `.bash_profile`. 60 | 61 | ### Vim 62 | 63 | - [Plug](https://github.com/junegunn/vim-plug) 64 | 65 | ### Window Management 66 | 67 | - [yabai](https://github.com/koekeishiya/yabai) 68 | - [skhd](https://github.com/koekeishiya/skhd) 69 | -------------------------------------------------------------------------------- /vim/.config/vim/vimrc: -------------------------------------------------------------------------------- 1 | let $XDG_CONFIG_HOME = empty($XDG_CONFIG_HOME) ? expand('~/.config') : $XDG_CONFIG_HOME 2 | execute 'set runtimepath^=' . fnameescape($XDG_CONFIG_HOME . '/vim') 3 | 4 | let s:plug_path = $XDG_CONFIG_HOME . '/vim/autoload/plug.vim' 5 | if empty(glob(s:plug_path)) 6 | silent execute "!curl -fLo $XDG_CONFIG_HOME/vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" 7 | autocmd VimEnter * PlugInstall | source $MYVIMRC 8 | endif 9 | 10 | let $XDG_DATA_HOME = empty($XDG_DATA_HOME) ? expand('~/.local/share') : $XDG_DATA_HOME 11 | let $XDG_STATE_HOME = empty($XDG_STATE_HOME) ? expand('~/.local/state') : $XDG_STATE_HOME 12 | call plug#begin($XDG_DATA_HOME . '/vim/plugged') 13 | Plug 'arcticicestudio/nord-vim' 14 | Plug 'babaybus/DoxygenToolkit.vim' 15 | Plug 'editorconfig/editorconfig-vim' 16 | Plug 'itchyny/lightline.vim' 17 | Plug 'junegunn/vim-easy-align' 18 | Plug 'niklaas/lightline-gitdiff' 19 | Plug 'riff-lang/vim-riff' 20 | Plug 'simplyzhao/cscope_maps.vim' 21 | Plug 'tpope/vim-commentary' 22 | Plug 'tpope/vim-fugitive' 23 | Plug 'tpope/vim-repeat' 24 | Plug 'tpope/vim-sleuth' 25 | Plug 'tpope/vim-surround' 26 | call plug#end() 27 | 28 | set viminfo+=n$XDG_STATE_HOME/vim/info 29 | filetype indent plugin on 30 | 31 | set noswapfile 32 | 33 | set path+=** 34 | set wildmenu 35 | 36 | set t_Co=256 37 | set bg=dark 38 | syntax on 39 | set re=0 40 | 41 | " Prevent colorschemes from changing background color of screen, line 42 | " numbers or current line 43 | autocmd ColorScheme * hi Normal ctermbg=NONE guibg=NONE 44 | autocmd ColorScheme * hi CursorLine cterm=None ctermbg=Black ctermfg=None 45 | autocmd ColorScheme * hi CursorLineNr ctermbg=Black ctermfg=None 46 | autocmd ColorScheme * hi LineNr cterm=None ctermbg=None ctermfg=DarkGray 47 | 48 | autocmd BufEnter * :syntax sync fromstart 49 | 50 | " I think nord-vim actually uses the terminal's 16 colors, which is 51 | " what I want it to do 52 | colo nord 53 | 54 | set backspace=indent,eol,start 55 | set tabstop=4 56 | set shiftwidth=4 57 | 58 | autocmd FileType html setlocal tabstop=2 shiftwidth=2 59 | autocmd FileType xml setlocal tabstop=2 shiftwidth=2 60 | 61 | set expandtab 62 | set autoindent 63 | set mouse=a 64 | set nolist 65 | set ignorecase 66 | set smartcase 67 | set hlsearch 68 | set showcmd 69 | set incsearch 70 | set showmatch 71 | set noshowmode 72 | set modelines=0 73 | set nomodeline 74 | 75 | set textwidth=80 76 | 77 | set noerrorbells visualbell t_vb= 78 | autocmd GUIEnter * set visualbell t_vb= 79 | 80 | set nu 81 | set rnu 82 | set numberwidth=1 83 | hi LineNr cterm=None ctermbg=None ctermfg=DarkGray 84 | 85 | set cursorline 86 | hi CursorLine cterm=None ctermbg=Black ctermfg=None 87 | hi CursorLineNr ctermbg=Black ctermfg=None 88 | 89 | set laststatus=2 90 | hi statusline cterm=None ctermfg=Cyan 91 | 92 | noremap : 93 | 94 | let mapleader = " " 95 | let g:mapleader = " " 96 | 97 | nmap b :b 98 | nmap e :edit 99 | nmap f :find 100 | nmap q :q 101 | nmap s :%s/ 102 | nmap v :vs 103 | nmap w :w! 104 | 105 | inoremap jk 106 | inoremap kj 107 | inoremap JK 108 | inoremap KJ 109 | 110 | " Markdown folding 111 | let g:markdown_folding = 1 112 | set foldlevelstart=99 113 | 114 | " Ctags 115 | nmap ] 116 | nmap t 117 | 118 | nmap ga (EasyAlign) 119 | 120 | let g:lightline = { 121 | \ 'colorscheme': 'powerline', 122 | \ 'active': { 123 | \ 'left': [ [ 'mode', 'paste' ], 124 | \ [ 'filename', 'modified' ], 125 | \ [ 'gitdiff' ] ], 126 | \ 'right': [ [ 'filetype' ], 127 | \ [ 'gitbranch', 'readonly' ] ] 128 | \ }, 129 | \ 'component_function': { 130 | \ 'gitbranch': 'FugitiveHead' 131 | \ }, 132 | \ 'component_expand': { 133 | \ 'gitdiff': 'lightline#gitdiff#get', 134 | \ }, 135 | \ 'component_type': { 136 | \ 'gitdiff': 'middle', 137 | \ }, 138 | \ } 139 | 140 | let g:lightline.mode_map = { 141 | \ 'n' : 'N', 142 | \ 'i' : 'I', 143 | \ 'R' : 'R', 144 | \ 'v' : 'V', 145 | \ 'V' : 'V-LINE', 146 | \ "\": 'V-BLOCK', 147 | \ 'c' : 'C', 148 | \ 's' : 'S', 149 | \ 'S' : 'S-LINE', 150 | \ "\": 'S-BLOCK', 151 | \ 't': 'T', 152 | \ } 153 | 154 | let g:lightline#gitdiff#indicator_added = '+' 155 | let g:lightline#gitdiff#indicator_deleted = '-' 156 | let g:lightline#gitdiff#indicator_modified = 'Δ' 157 | let g:lightline#gitdiff#separator = ' ' 158 | 159 | " This prevents opening brackets in compound literals from being 160 | " highlighted as errors 161 | let c_no_curly_error = 1 162 | 163 | " Spellcheck markdown files 164 | autocmd FileType markdown setlocal spell spelllang=en_us 165 | 166 | " Use C++ style comments in C files 167 | autocmd FileType c setlocal commentstring=//\ %s 168 | autocmd FileType cpp setlocal commentstring=//\ %s 169 | 170 | " Use C++ style comments in Riff files 171 | autocmd FileType riff setlocal commentstring=//\ %s 172 | 173 | " (C) Do not indent case labels past the indent of switch statements 174 | set cino=:0 175 | 176 | " Assembly 177 | autocmd FileType asm setlocal shiftwidth=8 178 | autocmd FileType asm setlocal tabstop=8 179 | 180 | autocmd BufNewFile,BufRead *[jJ]enkinsfile set ft=groovy 181 | -------------------------------------------------------------------------------- /aws/.aws/cli/alias: -------------------------------------------------------------------------------- 1 | [toplevel] 2 | 3 | cfn = cloudformation 4 | conf = configure 5 | whoami = sts get-caller-identity 6 | 7 | id = sts get-caller-identity \ 8 | --query Account \ 9 | --output text 10 | 11 | region = ec2 describe-availability-zones \ 12 | --query 'AvailabilityZones[0].[RegionName]' \ 13 | --output text 14 | 15 | regions = ec2 describe-regions \ 16 | --query 'Regions[].RegionName[]' \ 17 | --output text 18 | 19 | 20 | [command cloudformation] 21 | 22 | ls = describe-stacks \ 23 | --query 'Stacks[].[ 24 | StackName, 25 | StackStatus 26 | ]' 27 | 28 | rm = delete-stack \ 29 | --stack-name 30 | 31 | head = describe-stack-events \ 32 | --max-items 10 \ 33 | --query 'StackEvents[].[ 34 | Timestamp, 35 | ResourceType, 36 | ResourceStatus 37 | ]' \ 38 | --stack-name 39 | 40 | [command cloudformation wait] 41 | 42 | create = stack-create-complete --stack-name 43 | delete = stack-delete-complete --stack-name 44 | 45 | 46 | [command configure] 47 | 48 | ls = list-profiles 49 | 50 | 51 | [command ec2] 52 | 53 | i = describe-instances 54 | images = describe-images 55 | img = describe-images 56 | info = describe-instances --instance-ids 57 | instances = describe-instances 58 | topo = describe-instance-topology 59 | t = describe-instance-types 60 | types = describe-instance-types 61 | 62 | keys = describe-key-pairs \ 63 | --query 'KeyPairs[].[ 64 | KeyName, 65 | KeyPairId, 66 | KeyType, 67 | KeyFingerprint 68 | ]' 69 | 70 | grep = ! _() { 71 | local type=${1:?expected instance type argument} 72 | aws ec2 describe-instance-types \ 73 | --filters \ 74 | Name=instance-type,Values=*${type}* \ 75 | --query 'InstanceTypes[].[ 76 | InstanceType, 77 | VCpuInfo.DefaultVCpus 78 | ] | sort_by(@, &[1]) | map(&[0], @)' 79 | }; _ 80 | 81 | grepall = !_() { 82 | local type=${1:?expected instance type argument} 83 | echo "Locating regions with instance types matching ${type} ..." 84 | for region in $(aws regions); do 85 | echo $region: 86 | aws ec2 --region $region grep $type 87 | done 88 | }; _ 89 | 90 | ls = describe-instances \ 91 | --query 'Reservations[].Instances[].[ 92 | InstanceType, 93 | InstanceId, 94 | Tags[? Key == `Name`]|[0].Value, 95 | PublicIpAddress || `-`, 96 | PrivateIpAddress, 97 | NetworkInterfaces[? InterfaceType == `efa`]|[0].InterfaceType || `-`, 98 | Placement.AvailabilityZone, 99 | State.Name 100 | ] | sort_by(@, &[0])' 101 | 102 | [command ec2 describe-instances] 103 | 104 | pcluster = \ 105 | --filters \ 106 | Name=tag-key,Values=parallelcluster:version \ 107 | --query 'Reservations[].Instances[].[ 108 | Tags[? Key == `parallelcluster:cluster-name`]|[0].Value, 109 | InstanceType, 110 | Tags[? Key == `parallelcluster:node-type` && Value == `HeadNode`] && `-` || [ 111 | Tags[? Key == `parallelcluster:queue-name`]|[0].Value, 112 | Tags[? Key == `parallelcluster:compute-resource-name`]|[0].Value 113 | ].join(`:`,@), 114 | PublicIpAddress || PrivateIpAddress, 115 | Placement.AvailabilityZone, 116 | InstanceId, 117 | Tags[? Key == `parallelcluster:version`]|[0].Value, 118 | State.Name 119 | ] | sort_by(sort_by(@, &[1]), &[0])' 120 | 121 | [command ec2 describe-instance-types] 122 | 123 | simple = \ 124 | --query 'InstanceTypes[].[ 125 | InstanceType 126 | ] | sort_by(@, &[0])' 127 | 128 | with-efa = --filters \ 129 | Name=network-info.efa-supported,Values=true 130 | 131 | efa = \ 132 | with-efa \ 133 | --query 'InstanceTypes[].[ 134 | InstanceType, 135 | ProcessorInfo.[ 136 | SupportedArchitectures[0], 137 | Manufacturer 138 | ].join(`/`,@), 139 | VCpuInfo.[DefaultVCpus.to_string(@), `vCPUs`].join(`\u0020`,@), 140 | (FpgaInfo.Fpgas || GpuInfo.Gpus || 141 | (InferenceAcceleratorInfo || MediaAcceleratorInfo).Accelerators || 142 | NeuronInfo.NeuronDevices 143 | )[0].[Count] || `-`, 144 | (FpgaInfo || GpuInfo || InferenceAcceleratorInfo || MediaAcceleratorInfo || NeuronInfo) && [ 145 | (FpgaInfo && `FPGA` || 146 | GpuInfo && `GPU` || 147 | InferenceAcceleratorInfo && `Inf` || 148 | MediaAcceleratorInfo && `Media` || 149 | NeuronInfo && `Neuron` 150 | ), 151 | (FpgaInfo.Fpgas || GpuInfo.Gpus || 152 | (InferenceAcceleratorInfo || MediaAcceleratorInfo).Accelerators || 153 | NeuronInfo.NeuronDevices 154 | )[0].[(Manufacturer || `AWS`), Name].join(`\u0020`,@) 155 | ].join(`/`,@) || `-`, 156 | (FpgaInfo.Fpgas || GpuInfo.Gpus || 157 | (InferenceAcceleratorInfo || MediaAcceleratorInfo).Accelerators || 158 | NeuronInfo.NeuronDevices 159 | )[0].[MemoryInfo.SizeInMiB 160 | .to_string(@) 161 | .join(`\u0020`, [@, `MiB`]) 162 | ] || `-`, 163 | NetworkInfo.[ 164 | EfaInfo.MaximumEfaInterfaces 165 | .to_string(@) 166 | .join(`\u0020`, [@, `EFA`]), 167 | NetworkPerformance 168 | ] 169 | ] | map(&[], @) | sort_by(@, &[0])' 170 | 171 | whereis = !_() { 172 | local type=${1:?expected instance type} 173 | for region in $(aws regions); do 174 | local types="$(aws ec2 types --filters Name=instance-type,Values=*${type}* --query 'InstanceTypes[].[InstanceType]' --region $region --output text)" 175 | if [[ $types ]]; then 176 | printf "$region:\t$types\n" 177 | fi 178 | done 179 | }; _ 180 | 181 | 182 | [command ecr] 183 | 184 | img = describe-images 185 | images = describe-images 186 | password = get-login-password 187 | pw = get-login-password 188 | 189 | ls = describe-repositories \ 190 | --query 'repositories[].[ 191 | repositoryName, 192 | imageTagMutability, 193 | repositoryUri 194 | ]' 195 | 196 | repos = describe-repositories \ 197 | --query 'repositories[].[repositoryName]' \ 198 | --output text 199 | 200 | tags = describe-images \ 201 | --filter 'tagStatus=TAGGED' \ 202 | --query 'imageDetails[].[ 203 | [imageTags][*].sort(@).join(`\u0020`, @), 204 | imageDigest, 205 | imageSizeInBytes.to_string(@).join(`\u0020`, [@, `B`]) 206 | ] | map(&[], @)' \ 207 | --repository-name 208 | 209 | [command ecr describe-images] 210 | 211 | ls = \ 212 | --query 'imageDetails[].[ 213 | imagePushedAt, 214 | imageSizeInBytes.to_string(@).join(`\u0020`, [@, `B`]), 215 | imageDigest, 216 | imageTags && [imageTags][*].sort(@).join(`\u0020`, @) || `` 217 | ] | map(&[], @) | sort_by(@, &[0])' \ 218 | --repository-name 219 | 220 | [command ecr-public] 221 | 222 | registry = describe-registries \ 223 | --query 'registries[].[registryUri]' \ 224 | --region us-east-1 \ 225 | --output text 226 | 227 | login-docker = !_() { 228 | aws ecr-public get-login-password --region us-east-1 | 229 | docker login --username AWS --password-stdin $(aws ecr-public registry) 230 | }; _ 231 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | CC0 1.0 Universal 2 | 3 | Statement of Purpose 4 | 5 | The laws of most jurisdictions throughout the world automatically confer 6 | exclusive Copyright and Related Rights (defined below) upon the creator 7 | and subsequent owner(s) (each and all, an "owner") of an original work of 8 | authorship and/or a database (each, a "Work"). 9 | 10 | Certain owners wish to permanently relinquish those rights to a Work for 11 | the purpose of contributing to a commons of creative, cultural and 12 | scientific works ("Commons") that the public can reliably and without fear 13 | of later claims of infringement build upon, modify, incorporate in other 14 | works, reuse and redistribute as freely as possible in any form whatsoever 15 | and for any purposes, including without limitation commercial purposes. 16 | These owners may contribute to the Commons to promote the ideal of a free 17 | culture and the further production of creative, cultural and scientific 18 | works, or to gain reputation or greater distribution for their Work in 19 | part through the use and efforts of others. 20 | 21 | For these and/or other purposes and motivations, and without any 22 | expectation of additional consideration or compensation, the person 23 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 24 | is an owner of Copyright and Related Rights in the Work, voluntarily 25 | elects to apply CC0 to the Work and publicly distribute the Work under its 26 | terms, with knowledge of his or her Copyright and Related Rights in the 27 | Work and the meaning and intended legal effect of CC0 on those rights. 28 | 29 | 1. Copyright and Related Rights. A Work made available under CC0 may be 30 | protected by copyright and related or neighboring rights ("Copyright and 31 | Related Rights"). Copyright and Related Rights include, but are not 32 | limited to, the following: 33 | 34 | i. the right to reproduce, adapt, distribute, perform, display, 35 | communicate, and translate a Work; 36 | ii. moral rights retained by the original author(s) and/or performer(s); 37 | iii. publicity and privacy rights pertaining to a person's image or 38 | likeness depicted in a Work; 39 | iv. rights protecting against unfair competition in regards to a Work, 40 | subject to the limitations in paragraph 4(a), below; 41 | v. rights protecting the extraction, dissemination, use and reuse of data 42 | in a Work; 43 | vi. database rights (such as those arising under Directive 96/9/EC of the 44 | European Parliament and of the Council of 11 March 1996 on the legal 45 | protection of databases, and under any national implementation 46 | thereof, including any amended or successor version of such 47 | directive); and 48 | vii. other similar, equivalent or corresponding rights throughout the 49 | world based on applicable law or treaty, and any national 50 | implementations thereof. 51 | 52 | 2. Waiver. To the greatest extent permitted by, but not in contravention 53 | of, applicable law, Affirmer hereby overtly, fully, permanently, 54 | irrevocably and unconditionally waives, abandons, and surrenders all of 55 | Affirmer's Copyright and Related Rights and associated claims and causes 56 | of action, whether now known or unknown (including existing as well as 57 | future claims and causes of action), in the Work (i) in all territories 58 | worldwide, (ii) for the maximum duration provided by applicable law or 59 | treaty (including future time extensions), (iii) in any current or future 60 | medium and for any number of copies, and (iv) for any purpose whatsoever, 61 | including without limitation commercial, advertising or promotional 62 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 63 | member of the public at large and to the detriment of Affirmer's heirs and 64 | successors, fully intending that such Waiver shall not be subject to 65 | revocation, rescission, cancellation, termination, or any other legal or 66 | equitable action to disrupt the quiet enjoyment of the Work by the public 67 | as contemplated by Affirmer's express Statement of Purpose. 68 | 69 | 3. Public License Fallback. Should any part of the Waiver for any reason 70 | be judged legally invalid or ineffective under applicable law, then the 71 | Waiver shall be preserved to the maximum extent permitted taking into 72 | account Affirmer's express Statement of Purpose. In addition, to the 73 | extent the Waiver is so judged Affirmer hereby grants to each affected 74 | person a royalty-free, non transferable, non sublicensable, non exclusive, 75 | irrevocable and unconditional license to exercise Affirmer's Copyright and 76 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 77 | maximum duration provided by applicable law or treaty (including future 78 | time extensions), (iii) in any current or future medium and for any number 79 | of copies, and (iv) for any purpose whatsoever, including without 80 | limitation commercial, advertising or promotional purposes (the 81 | "License"). The License shall be deemed effective as of the date CC0 was 82 | applied by Affirmer to the Work. Should any part of the License for any 83 | reason be judged legally invalid or ineffective under applicable law, such 84 | partial invalidity or ineffectiveness shall not invalidate the remainder 85 | of the License, and in such case Affirmer hereby affirms that he or she 86 | will not (i) exercise any of his or her remaining Copyright and Related 87 | Rights in the Work or (ii) assert any associated claims and causes of 88 | action with respect to the Work, in either case contrary to Affirmer's 89 | express Statement of Purpose. 90 | 91 | 4. Limitations and Disclaimers. 92 | 93 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 94 | surrendered, licensed or otherwise affected by this document. 95 | b. Affirmer offers the Work as-is and makes no representations or 96 | warranties of any kind concerning the Work, express, implied, 97 | statutory or otherwise, including without limitation warranties of 98 | title, merchantability, fitness for a particular purpose, non 99 | infringement, or the absence of latent or other defects, accuracy, or 100 | the present or absence of errors, whether or not discoverable, all to 101 | the greatest extent permissible under applicable law. 102 | c. Affirmer disclaims responsibility for clearing rights of other persons 103 | that may apply to the Work or any use thereof, including without 104 | limitation any person's Copyright and Related Rights in the Work. 105 | Further, Affirmer disclaims responsibility for obtaining any necessary 106 | consents, permissions or other rights required for any use of the 107 | Work. 108 | d. Affirmer understands and acknowledges that Creative Commons is not a 109 | party to this document and has no duty or obligation with respect to 110 | this CC0 or use of the Work. 111 | 112 | For more information, please see 113 | 114 | -------------------------------------------------------------------------------- /macos/defaults.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Close System Preferences just in case 4 | osascript -e 'tell application "System Preferences" to quit' 5 | 6 | # Disable startup noise 7 | sudo nvram SystemAudioVolume=%01 8 | 9 | # Enable SSH 10 | sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist 11 | 12 | # Enable tab in modal dialogs 13 | defaults write NSGlobalDomain AppleKeyboardUIMode -int 3 14 | 15 | # Scrollbars visible when scrolling 16 | defaults write NSGlobalDomain AppleShowScrollBars -string "WhenScrolling" 17 | 18 | # Expand save panel by default 19 | defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true 20 | defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode2 -bool true 21 | 22 | # Expand print panel by default 23 | defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true 24 | defaults write NSGlobalDomain PMPrintingExpandedStateForPrint2 -bool true 25 | 26 | # Automatically quit printer app once the print jobs complete 27 | defaults write com.apple.print.PrintingPrefs "Quit When Finished" -bool true 28 | 29 | # Save to disk (not to iCloud) by default 30 | defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false 31 | 32 | # Disable the “Are you sure you want to open this application?” dialog 33 | defaults write com.apple.LaunchServices LSQuarantine -bool false 34 | 35 | # Reveal IP address, hostname, OS version, etc. when clicking the clock 36 | # in the login window 37 | sudo defaults write /Library/Preferences/com.apple.loginwindow AdminHostInfo HostName 38 | 39 | # Set dark theme 40 | sudo defaults write /Library/Preferences/.GlobalPreferences AppleInterfaceTheme Dark 41 | 42 | # Set minimal autohide/show delay for hidden dock 43 | defaults write com.apple.dock autohide-delay -float 0 44 | defaults write com.apple.dock autohide-time-modifier -float 0.5 45 | 46 | # Enable scroll gestures for Dock icons 47 | defaults write com.apple.dock scroll-to-open -bool true 48 | 49 | # Show only active apps in Dock 50 | defaults write com.apple.dock static-only -bool true 51 | 52 | # Disable smart quotes 53 | defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool false 54 | 55 | # Disable autocorrect 56 | defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool false 57 | 58 | # Disable auto-capitalization 59 | defaults write NSGlobalDomain NSAutomaticCapitalizationEnabled -bool false 60 | 61 | # Disable smart dashes 62 | defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool false 63 | 64 | # Diable automatic period substitution 65 | defaults write NSGlobalDomain NSAutomaticPeriodSubstitutionEnabled -bool false 66 | 67 | # Enable tap-to-click 68 | defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true 69 | defaults -currentHost write NSGlobalDomain com.apple.mouse.tapBehavior -int 1 70 | defaults write NSGlobalDomain com.apple.mouse.tapBehavior -int 1 71 | 72 | # Three-finger drag 73 | defaults write com.apple.AppleMultitouchTrackpad TrackpadThreeFingerDrag -bool true 74 | defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadThreeFingerDrag -bool true 75 | 76 | # Save screenshots as PNG 77 | defaults write com.apple.screencapture type -string "png" 78 | 79 | # Set plain text as default format in TextEdit 80 | defaults write com.apple.TextEdit RichText -int 0 81 | 82 | # Disable Dock magnification 83 | defaults write com.apple.dock magnification -bool false 84 | 85 | # Minimize windows into their application's icon 86 | defaults write com.apple.dock minimize-to-application -bool true 87 | 88 | # Show indicator lights for open apps in Dock 89 | defaults write com.apple.dock show-process-indicators -bool true 90 | 91 | # Disable Dashboard 92 | defaults write com.apple.dashboard mcx-disabled -bool true 93 | 94 | # Hot corners 95 | # Possible values: 96 | # 0: no-op 97 | # 2: Mission Control 98 | # 3: Show application windows 99 | # 4: Desktop 100 | # 5: Start screen saver 101 | # 6: Disable screen saver 102 | # 7: Dashboard 103 | # 10: Put display to sleep 104 | # 11: Launchpad 105 | # 12: Notification Center 106 | # Bottom left >> Put display to sleep 107 | defaults write com.apple.dock wvous-bl-corner -int 10 108 | defaults write com.apple.dock wvous-bl-modifier -int 0 109 | 110 | ### Finder ### 111 | 112 | # Don't show Finder status bar 113 | defaults write com.apple.finder ShowStatusBar -bool false 114 | 115 | # Don't show Finder path bar 116 | defaults write com.apple.finder ShowPathbar -bool false 117 | 118 | # Disable Quick Look animation 119 | defaults write -g QLPanelAnimationDuration -float 0 120 | 121 | # Disable Get Info animation (cmd + i) 122 | defaults write com.apple.finder DisableAllAnimations -bool true 123 | 124 | # Show ~/Library 125 | chflags nohidden ~/Library 126 | 127 | # Show /Volumes 128 | sudo chflags nohidden /Volumes 129 | 130 | # Use column view in Finder by default 131 | defaults write com.apple.finder FXPreferredViewStyle -string "clmv" 132 | 133 | # New Finder window opens in home directory 134 | defaults write com.apple.finder NewWindowTarget -string "PfLo" 135 | defaults write com.apple.finder NewWindowTargetPath -string "file://${HOME}/" 136 | 137 | # Keep folders on top when sorting by name 138 | defaults write com.apple.finder _FXSortFoldersFirst -bool true 139 | 140 | # Disable warning when emptying trash 141 | defaults write com.apple.finder WarnOnEmptyTrash -bool false 142 | 143 | # Remove Dropbox's green checkmarks in Finder 144 | file=/Applications/Dropbox.app/Contents/Resources/emblem-dropbox-uptodate.icns 145 | [ -e "${file}" ] && mv -f "${file}" "${file}.bak" 146 | unset file 147 | 148 | ### Safari ### 149 | 150 | # Privacy: don’t send search queries to Apple 151 | defaults write com.apple.Safari UniversalSearchEnabled -bool false 152 | defaults write com.apple.Safari SuppressSearchSuggestions -bool true 153 | 154 | # Disable delay when rendering web pages 155 | defaults write com.apple.Safari WebKitInitialTimedLayoutDelay 0.25 156 | 157 | # Prevent Safari from opening files automatically after downloading 158 | defaults write com.apple.Safari AutoOpenSafeDownloads -bool false 159 | 160 | # Hide Safari’s bookmarks bar by default 161 | defaults write com.apple.Safari ShowFavoritesBar -bool false 162 | 163 | # Enable the Develop menu and the Web Inspector in Safari 164 | defaults write com.apple.Safari IncludeInternalDebugMenu -bool true && \ 165 | defaults write com.apple.Safari IncludeDevelopMenu -bool true && \ 166 | defaults write com.apple.Safari WebKitDeveloperExtrasEnabledPreferenceKey -bool true && \ 167 | defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2DeveloperExtrasEnabled -bool true && \ 168 | defaults write -g WebKitDeveloperExtras -bool true 169 | 170 | # Add a context menu item for showing the Web Inspector in web views 171 | defaults write NSGlobalDomain WebKitDeveloperExtras -bool true 172 | 173 | # Disable autocorrect in Safari 174 | defaults write com.apple.Safari WebAutomaticSpellingCorrectionEnabled -bool false 175 | 176 | # Block pop-up windows 177 | defaults write com.apple.Safari WebKitJavaScriptCanOpenWindowsAutomatically -bool false 178 | defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2JavaScriptCanOpenWindowsAutomatically -bool false 179 | 180 | # Enable “Do Not Track” 181 | defaults write com.apple.Safari SendDoNotTrackHTTPHeader -bool true 182 | 183 | # Disable auto-playing video 184 | #defaults write com.apple.Safari WebKitMediaPlaybackAllowsInline -bool false 185 | #defaults write com.apple.SafariTechnologyPreview WebKitMediaPlaybackAllowsInline -bool false 186 | #defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2AllowsInlineMediaPlayback -bool false 187 | #defaults write com.apple.SafariTechnologyPreview com.apple.Safari.ContentPageGroupIdentifier.WebKit2AllowsInlineMediaPlayback -bool false 188 | 189 | ### iTerm ### 190 | 191 | # Don’t display prompt when quitting iTerm 192 | defaults write com.googlecode.iterm2 PromptOnQuit -bool false 193 | 194 | ### Activity Monitor ### 195 | 196 | # Show the main window when launching Activity Monitor 197 | defaults write com.apple.ActivityMonitor OpenMainWindow -bool true 198 | 199 | # Visualize CPU usage in the Activity Monitor Dock icon 200 | defaults write com.apple.ActivityMonitor IconType -int 5 201 | 202 | # Show all processes in Activity Monitor 203 | defaults write com.apple.ActivityMonitor ShowCategory -int 0 204 | 205 | # Sort Activity Monitor results by CPU usage 206 | defaults write com.apple.ActivityMonitor SortColumn -string "CPUUsage" 207 | defaults write com.apple.ActivityMonitor SortDirection -int 0 208 | 209 | ### QLColorCode ### 210 | 211 | defaults write org.n8gray.QLColorCode font Hasklig 212 | defaults write org.n8gray.QLColorCode hlTheme zenburn 213 | 214 | # Force dark/native UI in some "legacy" apps. 215 | # This only changes context menus and Finder windows when opening/saving files 216 | # Syntax: defaults write com.adobe.illustrator NSRequiresAquaSystemAppearance 0 217 | defaults write org.m0k.transmission NSRequiresAquaSystemAppearance 0 218 | 219 | killall Dock 220 | killall Finder 221 | -------------------------------------------------------------------------------- /iterm2/.local/share/cx.darryl.iterm2/aws.itermcolors: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Ansi 0 Color 6 | 7 | Alpha Component 8 | 1 9 | Blue Component 10 | 0.17647059261798859 11 | Color Space 12 | sRGB 13 | Green Component 14 | 0.11764705926179886 15 | Red Component 16 | 0.086274512112140656 17 | 18 | Ansi 1 Color 19 | 20 | Alpha Component 21 | 1 22 | Blue Component 23 | 0.1304166316986084 24 | Color Space 25 | sRGB 26 | Green Component 27 | 0.076839841902256012 28 | Red Component 29 | 0.81215125322341919 30 | 31 | Ansi 10 Color 32 | 33 | Alpha Component 34 | 1 35 | Blue Component 36 | 0.91764706373214722 37 | Color Space 38 | sRGB 39 | Green Component 40 | 0.98823529481887817 41 | Red Component 42 | 0.62352943420410156 43 | 44 | Ansi 11 Color 45 | 46 | Alpha Component 47 | 1 48 | Blue Component 49 | 0.74901962280273438 50 | Color Space 51 | sRGB 52 | Green Component 53 | 0.84705883264541626 54 | Red Component 55 | 0.9843137264251709 56 | 57 | Ansi 12 Color 58 | 59 | Alpha Component 60 | 1 61 | Blue Component 62 | 0.83529412746429443 63 | Color Space 64 | sRGB 65 | Green Component 66 | 0.45490196347236633 67 | Red Component 68 | 0.12549020349979401 69 | 70 | Ansi 13 Color 71 | 72 | Alpha Component 73 | 1 74 | Blue Component 75 | 0.92941176891326904 76 | Color Space 77 | sRGB 78 | Green Component 79 | 0.35294118523597717 80 | Red Component 81 | 0.48627451062202454 82 | 83 | Ansi 14 Color 84 | 85 | Alpha Component 86 | 1 87 | Blue Component 88 | 0.95686274766921997 89 | Color Space 90 | sRGB 91 | Green Component 92 | 0.90980392694473267 93 | Red Component 94 | 0.48627451062202454 95 | 96 | Ansi 15 Color 97 | 98 | Alpha Component 99 | 1 100 | Blue Component 101 | 0.99999994039535522 102 | Color Space 103 | sRGB 104 | Green Component 105 | 0.99999994039535522 106 | Red Component 107 | 1 108 | 109 | Ansi 2 Color 110 | 111 | Alpha Component 112 | 1 113 | Blue Component 114 | 0.49019607901573181 115 | Color Space 116 | sRGB 117 | Green Component 118 | 0.93725490570068359 119 | Red Component 120 | 0.21960784494876862 121 | 122 | Ansi 3 Color 123 | 124 | Alpha Component 125 | 1 126 | Blue Component 127 | 0.0 128 | Color Space 129 | sRGB 130 | Green Component 131 | 0.60000002384185791 132 | Red Component 133 | 1 134 | 135 | Ansi 4 Color 136 | 137 | Alpha Component 138 | 1 139 | Blue Component 140 | 0.5058823823928833 141 | Color Space 142 | sRGB 143 | Green Component 144 | 0.19215686619281769 145 | Red Component 146 | 0.0 147 | 148 | Ansi 5 Color 149 | 150 | Alpha Component 151 | 1 152 | Blue Component 153 | 0.40000000596046448 154 | Color Space 155 | sRGB 156 | Green Component 157 | 0.0 158 | Red Component 159 | 0.20000000298023224 160 | 161 | Ansi 6 Color 162 | 163 | Alpha Component 164 | 1 165 | Blue Component 166 | 0.66666668653488159 167 | Color Space 168 | sRGB 169 | Green Component 170 | 0.49803921580314636 171 | Red Component 172 | 0.0 173 | 174 | Ansi 7 Color 175 | 176 | Alpha Component 177 | 1 178 | Blue Component 179 | 0.9529411792755127 180 | Color Space 181 | sRGB 182 | Green Component 183 | 0.9529411792755127 184 | Red Component 185 | 0.94509804248809814 186 | 187 | Ansi 8 Color 188 | 189 | Alpha Component 190 | 1 191 | Blue Component 192 | 0.24437090754508972 193 | Color Space 194 | sRGB 195 | Green Component 196 | 0.18577444553375244 197 | Red Component 198 | 0.13465186953544617 199 | 200 | Ansi 9 Color 201 | 202 | Alpha Component 203 | 1 204 | Blue Component 205 | 0.46541529893875122 206 | Color Space 207 | sRGB 208 | Green Component 209 | 0.45382845401763916 210 | Red Component 211 | 1 212 | 213 | Background Color 214 | 215 | Alpha Component 216 | 1 217 | Blue Component 218 | 0.17727723717689514 219 | Color Space 220 | sRGB 221 | Green Component 222 | 0.11854291707277298 223 | Red Component 224 | 0.088052712380886078 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.14910027384757996 236 | Red Component 237 | 1 238 | 239 | Bold Color 240 | 241 | Alpha Component 242 | 1 243 | Blue Component 244 | 0.19866347312927246 245 | Color Space 246 | sRGB 247 | Green Component 248 | 0.37061417102813721 249 | Red Component 250 | 0.94185739755630493 251 | 252 | Cursor Color 253 | 254 | Alpha Component 255 | 1 256 | Blue Component 257 | 0.49887937307357788 258 | Color Space 259 | sRGB 260 | Green Component 261 | 0.49887937307357788 262 | Red Component 263 | 0.49887937307357788 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.92681378126144409 275 | Red Component 276 | 0.70214027166366577 277 | 278 | Cursor Text Color 279 | 280 | Alpha Component 281 | 1 282 | Blue Component 283 | 0.06012948602437973 284 | Color Space 285 | sRGB 286 | Green Component 287 | 0.047664321959018707 288 | Red Component 289 | 0.027743341401219368 290 | 291 | Foreground Color 292 | 293 | Alpha Component 294 | 1 295 | Blue Component 296 | 0.99999994039535522 297 | Color Space 298 | sRGB 299 | Green Component 300 | 0.99999994039535522 301 | Red Component 302 | 1 303 | 304 | Link Color 305 | 306 | Alpha Component 307 | 1 308 | Blue Component 309 | 0.73422712087631226 310 | Color Space 311 | sRGB 312 | Green Component 313 | 0.35915297269821167 314 | Red Component 315 | 0.0 316 | 317 | Selected Text Color 318 | 319 | Alpha Component 320 | 1 321 | Blue Component 322 | 0.99999994039535522 323 | Color Space 324 | sRGB 325 | Green Component 326 | 0.99999994039535522 327 | Red Component 328 | 1 329 | 330 | Selection Color 331 | 332 | Alpha Component 333 | 1 334 | Blue Component 335 | 0.19621005654335022 336 | Color Space 337 | sRGB 338 | Green Component 339 | 0.37165653705596924 340 | Red Component 341 | 0.94005531072616577 342 | 343 | Tab Color 344 | 345 | Alpha Component 346 | 1 347 | Blue Component 348 | 0.57046490907669067 349 | Color Space 350 | sRGB 351 | Green Component 352 | 0.5704723596572876 353 | Red Component 354 | 0.57045853137969971 355 | 356 | 357 | 358 | -------------------------------------------------------------------------------- /iterm2/.local/share/cx.darryl.iterm2/glacier-black.itermcolors: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Ansi 0 Color 6 | 7 | Alpha Component 8 | 1 9 | Blue Component 10 | 0.061397381126880646 11 | Color Space 12 | sRGB 13 | Green Component 14 | 0.047185309231281281 15 | Red Component 16 | 0.030243547633290291 17 | 18 | Ansi 1 Color 19 | 20 | Alpha Component 21 | 1 22 | Blue Component 23 | 0.23946309089660645 24 | Color Space 25 | sRGB 26 | Green Component 27 | 0.14576846361160278 28 | Red Component 29 | 0.79648000001907349 30 | 31 | Ansi 10 Color 32 | 33 | Alpha Component 34 | 1 35 | Blue Component 36 | 0.66058838367462158 37 | Color Space 38 | sRGB 39 | Green Component 40 | 0.91665995121002197 41 | Red Component 42 | 0.32429736852645874 43 | 44 | Ansi 11 Color 45 | 46 | Alpha Component 47 | 1 48 | Blue Component 49 | 0.50425171852111816 50 | Color Space 51 | sRGB 52 | Green Component 53 | 0.89166313409805298 54 | Red Component 55 | 0.9957006573677063 56 | 57 | Ansi 12 Color 58 | 59 | Alpha Component 60 | 1 61 | Blue Component 62 | 0.80189782381057739 63 | Color Space 64 | sRGB 65 | Green Component 66 | 0.61681145429611206 67 | Red Component 68 | 0.19569060206413269 69 | 70 | Ansi 13 Color 71 | 72 | Alpha Component 73 | 1 74 | Blue Component 75 | 0.19807377457618713 76 | Color Space 77 | sRGB 78 | Green Component 79 | 0.36973872780799866 80 | Red Component 81 | 0.94323086738586426 82 | 83 | Ansi 14 Color 84 | 85 | Alpha Component 86 | 1 87 | Blue Component 88 | 0.86068230867385864 89 | Color Space 90 | sRGB 91 | Green Component 92 | 0.7662385106086731 93 | Red Component 94 | 0.68687814474105835 95 | 96 | Ansi 15 Color 97 | 98 | Alpha Component 99 | 1 100 | Blue Component 101 | 0.99999994039535522 102 | Color Space 103 | sRGB 104 | Green Component 105 | 0.99999994039535522 106 | Red Component 107 | 1 108 | 109 | Ansi 2 Color 110 | 111 | Alpha Component 112 | 1 113 | Blue Component 114 | 0.51414585113525391 115 | Color Space 116 | sRGB 117 | Green Component 118 | 0.7021636962890625 119 | Red Component 120 | 0.24409565329551697 121 | 122 | Ansi 3 Color 123 | 124 | Alpha Component 125 | 1 126 | Blue Component 127 | 0.26498657464981079 128 | Color Space 129 | sRGB 130 | Green Component 131 | 0.64750337600708008 132 | Red Component 133 | 0.99407893419265747 134 | 135 | Ansi 4 Color 136 | 137 | Alpha Component 138 | 1 139 | Blue Component 140 | 0.52231192588806152 141 | Color Space 142 | sRGB 143 | Green Component 144 | 0.42059248685836792 145 | Red Component 146 | 0.14948835968971252 147 | 148 | Ansi 5 Color 149 | 150 | Alpha Component 151 | 1 152 | Blue Component 153 | 0.17939043045043945 154 | Color Space 155 | sRGB 156 | Green Component 157 | 0.2254403829574585 158 | Red Component 159 | 0.79607290029525757 160 | 161 | Ansi 6 Color 162 | 163 | Alpha Component 164 | 1 165 | Blue Component 166 | 0.65744233131408691 167 | Color Space 168 | sRGB 169 | Green Component 170 | 0.58688652515411377 171 | Red Component 172 | 0.53960049152374268 173 | 174 | Ansi 7 Color 175 | 176 | Alpha Component 177 | 1 178 | Blue Component 179 | 0.99999994039535522 180 | Color Space 181 | sRGB 182 | Green Component 183 | 0.99999994039535522 184 | Red Component 185 | 1 186 | 187 | Ansi 8 Color 188 | 189 | Alpha Component 190 | 1 191 | Blue Component 192 | 0.40801632404327393 193 | Color Space 194 | sRGB 195 | Green Component 196 | 0.36295801401138306 197 | Red Component 198 | 0.31799283623695374 199 | 200 | Ansi 9 Color 201 | 202 | Alpha Component 203 | 1 204 | Blue Component 205 | 0.23946309089660645 206 | Color Space 207 | sRGB 208 | Green Component 209 | 0.14576846361160278 210 | Red Component 211 | 0.79648000001907349 212 | 213 | Background Color 214 | 215 | Alpha Component 216 | 1 217 | Blue Component 218 | 0.079999998211860657 219 | Color Space 220 | sRGB 221 | Green Component 222 | 0.079999998211860657 223 | Red Component 224 | 0.079999998211860657 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.14910027384757996 236 | Red Component 237 | 1 238 | 239 | Bold Color 240 | 241 | Alpha Component 242 | 1 243 | Blue Component 244 | 0.19866347312927246 245 | Color Space 246 | sRGB 247 | Green Component 248 | 0.37061417102813721 249 | Red Component 250 | 0.94185739755630493 251 | 252 | Cursor Color 253 | 254 | Alpha Component 255 | 1 256 | Blue Component 257 | 0.49887937307357788 258 | Color Space 259 | sRGB 260 | Green Component 261 | 0.49887937307357788 262 | Red Component 263 | 0.49887937307357788 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.92681378126144409 275 | Red Component 276 | 0.70214027166366577 277 | 278 | Cursor Text Color 279 | 280 | Alpha Component 281 | 1 282 | Blue Component 283 | 0.06012948602437973 284 | Color Space 285 | sRGB 286 | Green Component 287 | 0.047664321959018707 288 | Red Component 289 | 0.027743341401219368 290 | 291 | Foreground Color 292 | 293 | Alpha Component 294 | 1 295 | Blue Component 296 | 0.99999994039535522 297 | Color Space 298 | sRGB 299 | Green Component 300 | 0.99999994039535522 301 | Red Component 302 | 1 303 | 304 | Link Color 305 | 306 | Alpha Component 307 | 1 308 | Blue Component 309 | 0.73422712087631226 310 | Color Space 311 | sRGB 312 | Green Component 313 | 0.35915297269821167 314 | Red Component 315 | 0.0 316 | 317 | Selected Text Color 318 | 319 | Alpha Component 320 | 1 321 | Blue Component 322 | 0.99999994039535522 323 | Color Space 324 | sRGB 325 | Green Component 326 | 0.99999994039535522 327 | Red Component 328 | 1 329 | 330 | Selection Color 331 | 332 | Alpha Component 333 | 1 334 | Blue Component 335 | 0.40842074155807495 336 | Color Space 337 | sRGB 338 | Green Component 339 | 0.36218035221099854 340 | Red Component 341 | 0.31688991189002991 342 | 343 | Tab Color 344 | 345 | Alpha Component 346 | 1 347 | Blue Component 348 | 0.57046490907669067 349 | Color Space 350 | sRGB 351 | Green Component 352 | 0.5704723596572876 353 | Red Component 354 | 0.57045853137969971 355 | 356 | 357 | 358 | -------------------------------------------------------------------------------- /kitty/.config/kitty/kitty.conf: -------------------------------------------------------------------------------- 1 | # vim:fileencoding=utf-8:ft=conf:foldmethod=marker 2 | 3 | 4 | # Cursor 5 | # shape = block | beam | outline 6 | # blink_interval = measured in seconds, with 0 disabling 7 | 8 | cursor_shape block 9 | cursor_blink_interval 0 10 | # cursor_stop_blinking_after 15.0 11 | 12 | 13 | # Colors 14 | # color0,8 = black 15 | # color1,9 = red 16 | # color2,10 = green 17 | # color3,11 = yellow 18 | # color4,12 = blue 19 | # color5,13 = magenta 20 | # color6,14 = cyan 21 | # color7,15 = white 22 | 23 | cursor #dddddd 24 | cursor_text_color #111111 25 | foreground #ffffff 26 | background #202020 27 | color0 #101010 28 | color1 #D96C9B 29 | color2 #5DCCB8 30 | color3 #9e9ecb 31 | color4 #5F91BF 32 | color5 #7e62b3 33 | color6 #6096bf 34 | color7 #cccccc 35 | color8 #777777 36 | color9 #bf4d80 37 | color10 #7EE4E6 38 | color11 #B2B4EE 39 | color12 #477ab3 40 | color13 #A288D6 41 | color14 #8EDDFF 42 | color15 #cccccc 43 | 44 | 45 | # Fonts 46 | # ----- 47 | 48 | font_size 14.0 49 | font_family Hasklig 50 | bold_font Hasklig Regular 51 | italic_font Hasklig Italic 52 | bold_italic_font Hasklig Italic 53 | disable_ligatures never 54 | 55 | # Use slashed zeros 56 | # Requires font's PostScript name: `kitty + list-fonts --psnames` 57 | font_features Hasklig-Regular +zero 58 | 59 | 60 | # adjust_line_height 0 61 | # adjust_column_width 0 62 | 63 | #: Change the size of each character cell kitty renders. You can use 64 | #: either numbers, which are interpreted as pixels or percentages 65 | #: (number followed by %), which are interpreted as percentages of the 66 | #: unmodified values. You can use negative pixels or percentages less 67 | #: than 100% to reduce sizes (but this might cause rendering 68 | #: artifacts). 69 | 70 | # symbol_map U+E0A0-U+E0A2,U+E0B0-U+E0B3 PowerlineSymbols 71 | 72 | #: Map the specified unicode codepoints to a particular font. Useful 73 | #: if you need special rendering for some symbols, such as for 74 | #: Powerline. Avoids the need for patched fonts. Each unicode code 75 | #: point is specified in the form U+. You 76 | #: can specify multiple code points, separated by commas and ranges 77 | #: separated by hyphens. symbol_map itself can be specified multiple 78 | #: times. Syntax is:: 79 | 80 | #: symbol_map codepoints Font Family Name 81 | 82 | 83 | #: Choose how you want to handle multi-character ligatures. The 84 | #: default is to always render them. You can tell kitty to not render 85 | #: them when the cursor is over them by using cursor to make editing 86 | #: easier, or have kitty never render them at all by using always, if 87 | #: you don't like them. The ligature strategy can be set per-window 88 | #: either using the kitty remote control facility or by defining 89 | #: shortcuts for it in kitty.conf, for example:: 90 | 91 | #: map alt+1 disable_ligatures_in active always 92 | #: map alt+2 disable_ligatures_in all never 93 | #: map alt+3 disable_ligatures_in tab cursor 94 | 95 | # box_drawing_scale 0.001, 1, 1.5, 2 96 | 97 | #: Change the sizes of the lines used for the box drawing unicode 98 | #: characters These values are in pts. They will be scaled by the 99 | #: monitor DPI to arrive at a pixel value. There must be four values 100 | #: corresponding to thin, normal, thick, and very thick lines. 101 | 102 | 103 | #: Scrollback {{{ 104 | 105 | # scrollback_lines 2000 106 | 107 | #: Number of lines of history to keep in memory for scrolling back. 108 | #: Memory is allocated on demand. Negative numbers are (effectively) 109 | #: infinite scrollback. Note that using very large scrollback is not 110 | #: recommended as it can slow down resizing of the terminal and also 111 | #: use large amounts of RAM. 112 | 113 | # scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER 114 | 115 | #: Program with which to view scrollback in a new window. The 116 | #: scrollback buffer is passed as STDIN to this program. If you change 117 | #: it, make sure the program you use can handle ANSI escape sequences 118 | #: for colors and text formatting. INPUT_LINE_NUMBER in the command 119 | #: line above will be replaced by an integer representing which line 120 | #: should be at the top of the screen. 121 | 122 | # scrollback_pager_history_size 0 123 | 124 | #: Separate scrollback history size, used only for browsing the 125 | #: scrollback buffer (in MB). This separate buffer is not available 126 | #: for interactive scrolling but will be piped to the pager program 127 | #: when viewing scrollback buffer in a separate window. The current 128 | #: implementation stores one character in 4 bytes, so approximatively 129 | #: 2500 lines per megabyte at 100 chars per line. A value of zero or 130 | #: less disables this feature. The maximum allowed size is 4GB. 131 | 132 | # wheel_scroll_multiplier 5.0 133 | 134 | #: Modify the amount scrolled by the mouse wheel. Note this is only 135 | #: used for low precision scrolling devices, not for high precision 136 | #: scrolling on platforms such as macOS and Wayland. Use negative 137 | #: numbers to change scroll direction. 138 | 139 | # touch_scroll_multiplier 1.0 140 | 141 | #: Modify the amount scrolled by a touchpad. Note this is only used 142 | #: for high precision scrolling devices on platforms such as macOS and 143 | #: Wayland. Use negative numbers to change scroll direction. 144 | 145 | 146 | #: Mouse {{{ 147 | 148 | # mouse_hide_wait 3.0 149 | 150 | #: Hide mouse cursor after the specified number of seconds of the 151 | #: mouse not being used. Set to zero to disable mouse cursor hiding. 152 | #: Set to a negative value to hide the mouse cursor immediately when 153 | #: typing text. 154 | 155 | # url_color #0087bd 156 | # url_style curly 157 | 158 | #: The color and style for highlighting URLs on mouse-over. url_style 159 | #: can be one of: none, single, double, curly 160 | 161 | # open_url_modifiers kitty_mod 162 | 163 | #: The modifier keys to press when clicking with the mouse on URLs to 164 | #: open the URL 165 | 166 | # open_url_with default 167 | 168 | #: The program with which to open URLs that are clicked on. The 169 | #: special value default means to use the operating system's default 170 | #: URL handler. 171 | 172 | # copy_on_select no 173 | 174 | #: map cmd+shift+v paste_from_buffer a1 175 | 176 | #: Note that copying to the clipboard is a security risk, as all 177 | #: programs, including websites open in your browser can read the 178 | #: contents of the system clipboard. 179 | 180 | # strip_trailing_spaces never 181 | 182 | #: Remove spaces at the end of lines when copying to clipboard. A 183 | #: value of smart will do it when using normal selections, but not 184 | #: rectangle selections. always will always do it. 185 | 186 | # rectangle_select_modifiers ctrl+alt 187 | 188 | #: The modifiers to use rectangular selection (i.e. to select text in 189 | #: a rectangular block with the mouse) 190 | 191 | # select_by_word_characters :@-./_~?&=%+# 192 | 193 | #: Characters considered part of a word when double clicking. In 194 | #: addition to these characters any character that is marked as an 195 | #: alpha-numeric character in the unicode database will be matched. 196 | 197 | # click_interval -1.0 198 | 199 | #: The interval between successive clicks to detect double/triple 200 | #: clicks (in seconds). Negative numbers will use the system default 201 | #: instead, if available, or fallback to 0.5. 202 | 203 | # focus_follows_mouse no 204 | 205 | 206 | #: Performance tuning {{{ 207 | 208 | # repaint_delay 10 209 | 210 | #: Delay (in milliseconds) between screen updates. Decreasing it, 211 | #: increases frames-per-second (FPS) at the cost of more CPU usage. 212 | #: The default value yields ~100 FPS which is more than sufficient for 213 | #: most uses. Note that to actually achieve 100 FPS you have to either 214 | #: set sync_to_monitor to no or use a monitor with a high refresh 215 | #: rate. 216 | 217 | # input_delay 3 218 | 219 | #: Delay (in milliseconds) before input from the program running in 220 | #: the terminal is processed. Note that decreasing it will increase 221 | #: responsiveness, but also increase CPU usage and might cause flicker 222 | #: in full screen programs that redraw the entire screen on each loop, 223 | #: because kitty is so fast that partial screen updates will be drawn. 224 | 225 | sync_to_monitor no 226 | 227 | #: Sync screen updates to the refresh rate of the monitor. This 228 | #: prevents tearing (https://en.wikipedia.org/wiki/Screen_tearing) 229 | #: when scrolling. However, it limits the rendering speed to the 230 | #: refresh rate of your monitor. With a very high speed mouse/high 231 | #: keyboard repeat rate, you may notice some slight input latency. If 232 | #: so, set this to no. 233 | 234 | 235 | #: Terminal bell {{{ 236 | 237 | enable_audio_bell no 238 | 239 | #: Enable/disable the audio bell. Useful in environments that require 240 | #: silence. 241 | 242 | # visual_bell_duration 0.0 243 | 244 | #: Visual bell duration. Flash the screen when a bell occurs for the 245 | #: specified number of seconds. Set to zero to disable. 246 | 247 | # window_alert_on_bell yes 248 | 249 | #: Request window attention on bell. Makes the dock icon bounce on 250 | #: macOS or the taskbar flash on linux. 251 | 252 | # bell_on_tab yes 253 | 254 | #: Show a bell symbol on the tab if a bell occurs in one of the 255 | #: windows in the tab and the window is not the currently focused 256 | #: window 257 | 258 | # command_on_bell none 259 | 260 | #: Program to run when a bell occurs. 261 | 262 | #: }}} 263 | 264 | #: Window layout {{{ 265 | 266 | remember_window_size no 267 | # initial_window_width 640 268 | # initial_window_height 400 269 | 270 | #: If enabled, the window size will be remembered so that new 271 | #: instances of kitty will have the same size as the previous 272 | #: instance. If disabled, the window will initially have size 273 | #: configured by initial_window_width/height, in pixels. You can use a 274 | #: suffix of "c" on the width/height values to have them interpreted 275 | #: as number of cells instead of pixels. 276 | 277 | # enabled_layouts 278 | 279 | #: The enabled window layouts. A comma separated list of layout names. 280 | #: The special value all means all layouts. The first listed layout 281 | #: will be used as the startup layout. For a list of available 282 | #: layouts, see the 283 | #: https://sw.kovidgoyal.net/kitty/index.html#layouts. 284 | 285 | # window_resize_step_cells 2 286 | # window_resize_step_lines 2 287 | 288 | #: The step size (in units of cell width/cell height) to use when 289 | #: resizing windows. The cells value is used for horizontal resizing 290 | #: and the lines value for vertical resizing. 291 | 292 | # window_border_width 1.0 293 | 294 | #: The width (in pts) of window borders. Will be rounded to the 295 | #: nearest number of pixels based on screen resolution. Note that 296 | #: borders are displayed only when more than one window is visible. 297 | #: They are meant to separate multiple windows. 298 | 299 | # draw_minimal_borders yes 300 | 301 | #: Draw only the minimum borders needed. This means that only the 302 | #: minimum needed borders for inactive windows are drawn. That is only 303 | #: the borders that separate the inactive window from a neighbor. Note 304 | #: that setting a non-zero window margin overrides this and causes all 305 | #: borders to be drawn. 306 | 307 | # window_margin_width 0.0 308 | 309 | #: The window margin (in pts) (blank area outside the border) 310 | 311 | # single_window_margin_width -1000.0 312 | 313 | #: The window margin (in pts) to use when only a single window is 314 | #: visible. Negative values will cause the value of 315 | #: window_margin_width to be used instead. 316 | 317 | window_padding_width 4.0 318 | 319 | #: The window padding (in pts) (blank area between the text and the 320 | #: window border) 321 | 322 | # placement_strategy center 323 | 324 | #: When the window size is not an exact multiple of the cell size, the 325 | #: cell area of the terminal window will have some extra padding on 326 | #: the sides. You can control how that padding is distributed with 327 | #: this option. Using a value of center means the cell area will be 328 | #: placed centrally. A value of top-left means the padding will be on 329 | #: only the bottom and right edges. 330 | 331 | # active_border_color #00ff00 332 | 333 | #: The color for the border of the active window. Set this to none to 334 | #: not draw borders around the active window. 335 | 336 | # inactive_border_color #cccccc 337 | 338 | #: The color for the border of inactive windows 339 | 340 | # bell_border_color #ff5a00 341 | 342 | #: The color for the border of inactive windows in which a bell has 343 | #: occurred 344 | 345 | # inactive_text_alpha 1.0 346 | 347 | #: Fade the text in inactive windows by the specified amount (a number 348 | #: between zero and one, with zero being fully faded). 349 | 350 | hide_window_decorations yes 351 | 352 | #: Hide the window decorations (title-bar and window borders). Whether 353 | #: this works and exactly what effect it has depends on the window 354 | #: manager/operating system. 355 | 356 | # resize_debounce_time 0.1 357 | 358 | #: The time (in seconds) to wait before redrawing the screen when a 359 | #: resize event is received. On platforms such as macOS, where the 360 | #: operating system sends events corresponding to the start and end of 361 | #: a resize, this number is ignored. 362 | 363 | # resize_draw_strategy static 364 | 365 | #: Choose how kitty draws a window while a resize is in progress. A 366 | #: value of static means draw the current window contents, mostly 367 | #: unchanged. A value of scale means draw the current window contents 368 | #: scaled. A value of blank means draw a blank window. A value of size 369 | #: means show the window size in cells. 370 | 371 | #: }}} 372 | 373 | #: Tab bar {{{ 374 | 375 | # tab_bar_edge bottom 376 | 377 | #: Which edge to show the tab bar on, top or bottom 378 | 379 | # tab_bar_margin_width 0.0 380 | 381 | #: The margin to the left and right of the tab bar (in pts) 382 | 383 | # tab_bar_style fade 384 | 385 | #: The tab bar style, can be one of: fade, separator or hidden. In the 386 | #: fade style, each tab's edges fade into the background color, in the 387 | #: separator style, tabs are separated by a configurable separator. 388 | 389 | # tab_bar_min_tabs 2 390 | 391 | #: The minimum number of tabs that must exist before the tab bar is 392 | #: shown 393 | 394 | # tab_switch_strategy previous 395 | 396 | #: The algorithm to use when switching to a tab when the current tab 397 | #: is closed. The default of previous will switch to the last used 398 | #: tab. A value of left will switch to the tab to the left of the 399 | #: closed tab. A value of last will switch to the right-most tab. 400 | 401 | # tab_fade 0.25 0.5 0.75 1 402 | 403 | #: Control how each tab fades into the background when using fade for 404 | #: the tab_bar_style. Each number is an alpha (between zero and one) 405 | #: that controls how much the corresponding cell fades into the 406 | #: background, with zero being no fade and one being full fade. You 407 | #: can change the number of cells used by adding/removing entries to 408 | #: this list. 409 | 410 | #: The separator between tabs in the tab bar when using separator as 411 | #: the tab_bar_style. 412 | 413 | # tab_title_template {title} 414 | 415 | #: A template to render the tab title. The default just renders the 416 | #: title. If you wish to include the tab-index as well, use something 417 | #: like: {index}: {title}. Useful if you have shortcuts mapped for 418 | #: goto_tab N. 419 | 420 | # active_tab_foreground #000 421 | # active_tab_background #eee 422 | # active_tab_font_style bold-italic 423 | # inactive_tab_foreground #444 424 | # inactive_tab_background #999 425 | # inactive_tab_font_style normal 426 | 427 | #: Tab bar colors and styles 428 | 429 | 430 | # background_opacity 1.0 431 | 432 | #: The opacity of the background. A number between 0 and 1, where 1 is 433 | #: opaque and 0 is fully transparent. This will only work if 434 | #: supported by the OS (for instance, when using a compositor under 435 | #: X11). Note that it only sets the default background color's 436 | #: opacity. This is so that things like the status bar in vim, 437 | #: powerline prompts, etc. still look good. But it means that if you 438 | #: use a color theme with a background color in your editor, it will 439 | #: not be rendered as transparent. Instead you should change the 440 | #: default background color in your kitty config and not use a 441 | #: background color in the editor color scheme. Or use the escape 442 | #: codes to set the terminals default colors in a shell script to 443 | #: launch your editor. Be aware that using a value less than 1.0 is a 444 | #: (possibly significant) performance hit. If you want to dynamically 445 | #: change transparency of windows set dynamic_background_opacity to 446 | #: yes (this is off by default as it has a performance cost) 447 | 448 | # dynamic_background_opacity no 449 | 450 | #: Allow changing of the background_opacity dynamically, using either 451 | #: keyboard shortcuts (increase_background_opacity and 452 | #: decrease_background_opacity) or the remote control facility. 453 | 454 | # dim_opacity 0.75 455 | 456 | #: How much to dim text that has the DIM/FAINT attribute set. One 457 | #: means no dimming and zero means fully dimmed (i.e. invisible). 458 | 459 | # selection_foreground #000000 460 | 461 | #: The foreground for text selected with the mouse. A value of none 462 | #: means to leave the color unchanged. 463 | 464 | # selection_background #fffacd 465 | 466 | #: The background for text selected with the mouse. 467 | 468 | 469 | #: Advanced {{{ 470 | 471 | # shell . 472 | 473 | #: The shell program to execute. The default value of . means to use 474 | #: whatever shell is set as the default shell for the current user. 475 | #: Note that on macOS if you change this, you might need to add 476 | #: --login to ensure that the shell starts in interactive mode and 477 | #: reads its startup rc files. 478 | 479 | # editor . 480 | 481 | #: The console editor to use when editing the kitty config file or 482 | #: similar tasks. A value of . means to use the environment variable 483 | #: EDITOR. Note that this environment variable has to be set not just 484 | #: in your shell startup scripts but system-wide, otherwise kitty will 485 | #: not see it. 486 | 487 | # close_on_child_death no 488 | 489 | #: Close the window when the child process (shell) exits. If no (the 490 | #: default), the terminal will remain open when the child exits as 491 | #: long as there are still processes outputting to the terminal (for 492 | #: example disowned or backgrounded processes). If yes, the window 493 | #: will close as soon as the child process exits. Note that setting it 494 | #: to yes means that any background processes still using the terminal 495 | #: can fail silently because their stdout/stderr/stdin no longer work. 496 | 497 | allow_remote_control yes 498 | 499 | #: Allow other programs to control kitty. If you turn this on other 500 | #: programs can control all aspects of kitty, including sending text 501 | #: to kitty windows, opening new windows, closing windows, reading the 502 | #: content of windows, etc. Note that this even works over ssh 503 | #: connections. 504 | 505 | # env 506 | 507 | #: Specify environment variables to set in all child processes. Note 508 | #: that environment variables are expanded recursively, so if you 509 | #: use:: 510 | 511 | #: env MYVAR1=a 512 | #: env MYVAR2=${MYVAR1}/${HOME}/b 513 | 514 | #: The value of MYVAR2 will be a//b. 515 | 516 | # update_check_interval 24 517 | 518 | #: Periodically check if an update to kitty is available. If an update 519 | #: is found a system notification is displayed informing you of the 520 | #: available update. The default is to check every 24 hrs, set to zero 521 | #: to disable. 522 | 523 | # startup_session none 524 | 525 | #: Path to a session file to use for all kitty instances. Can be 526 | #: overridden by using the kitty --session command line option for 527 | #: individual instances. See 528 | #: https://sw.kovidgoyal.net/kitty/index.html#sessions in the kitty 529 | #: documentation for details. Note that relative paths are interpreted 530 | #: with respect to the kitty config directory. Environment variables 531 | #: in the path are expanded. 532 | 533 | # clipboard_control write-clipboard write-primary 534 | 535 | #: Allow programs running in kitty to read and write from the 536 | #: clipboard. You can control exactly which actions are allowed. The 537 | #: set of possible actions is: write-clipboard read-clipboard write- 538 | #: primary read-primary. You can additionally specify no-append to 539 | #: disable kitty's protocol extension for clipboard concatenation. The 540 | #: default is to allow writing to the clipboard and primary selection 541 | #: with concatenation enabled. Note that enabling the read 542 | #: functionality is a security risk as it means that any program, even 543 | #: one running on a remote server via SSH can read your clipboard. 544 | 545 | # term xterm-kitty 546 | 547 | #: The value of the TERM environment variable to set. Changing this 548 | #: can break many terminal programs, only change it if you know what 549 | #: you are doing, not because you read some advice on Stack Overflow 550 | #: to change it. The TERM variable is used by various programs to get 551 | #: information about the capabilities and behavior of the terminal. If 552 | #: you change it, depending on what programs you run, and how 553 | #: different the terminal you are changing it to is, various things 554 | #: from key-presses, to colors, to various advanced features may not 555 | #: work. 556 | 557 | 558 | #: OS specific tweaks {{{ 559 | 560 | macos_titlebar_color background 561 | 562 | #: Change the color of the kitty window's titlebar on macOS. A value 563 | #: of system means to use the default system color, a value of 564 | #: background means to use the background color of the currently 565 | #: active window and finally you can use an arbitrary color, such as 566 | #: #12af59 or red. WARNING: This option works by using a hack, as 567 | #: there is no proper Cocoa API for it. It sets the background color 568 | #: of the entire window and makes the titlebar transparent. As such it 569 | #: is incompatible with background_opacity. If you want to use both, 570 | #: you are probably better off just hiding the titlebar with 571 | #: hide_window_decorations. 572 | 573 | # macos_option_as_alt no 574 | 575 | #: Use the option key as an alt key. With this set to no, kitty will 576 | #: use the macOS native Option+Key = unicode character behavior. This 577 | #: will break any Alt+key keyboard shortcuts in your terminal 578 | #: programs, but you can use the macOS unicode input technique. You 579 | #: can use the values: left, right, or both to use only the left, 580 | #: right or both Option keys as Alt, instead. 581 | 582 | # macos_hide_from_tasks no 583 | 584 | #: Hide the kitty window from running tasks (Option+Tab) on macOS. 585 | 586 | # macos_quit_when_last_window_closed no 587 | 588 | #: Have kitty quit when all the top-level windows are closed. By 589 | #: default, kitty will stay running, even with no open windows, as is 590 | #: the expected behavior on macOS. 591 | 592 | # macos_window_resizable yes 593 | 594 | #: Disable this if you want kitty top-level (OS) windows to not be 595 | #: resizable on macOS. 596 | 597 | # macos_thicken_font 0 598 | 599 | #: Draw an extra border around the font with the given width, to 600 | #: increase legibility at small font sizes. For example, a value of 601 | #: 0.75 will result in rendering that looks similar to sub-pixel 602 | #: antialiasing at common font sizes. 603 | 604 | # macos_traditional_fullscreen no 605 | 606 | #: Use the traditional full-screen transition, that is faster, but 607 | #: less pretty. 608 | 609 | macos_show_window_title_in_menubar no 610 | 611 | #: Show the title of the currently active window in the macOS menu- 612 | #: bar, making use of otherwise wasted space. 613 | 614 | # macos_custom_beam_cursor no 615 | 616 | #: Enable/disable custom mouse cursor for macOS that is easier to see 617 | #: on both light and dark backgrounds. WARNING: this might make your 618 | #: mouse cursor invisible on dual GPU machines. 619 | 620 | #: }}} 621 | 622 | #: Keyboard shortcuts {{{ 623 | 624 | #: For a list of key names, see: GLFW keys 625 | #: . The name to 626 | #: use is the part after the GLFW_KEY_ prefix. For a list of modifier 627 | #: names, see: GLFW mods 628 | #: 629 | 630 | #: Finally, you can use raw system key codes to map keys. To see the 631 | #: system key code for a key, start kitty with the kitty --debug- 632 | #: keyboard option. Then kitty will output some debug text for every 633 | #: key event. In that text look for ``native_code`` the value of that 634 | #: becomes the key name in the shortcut. For example: 635 | 636 | #: .. code-block:: none 637 | 638 | #: on_key_input: glfw key: 65 native_code: 0x61 action: PRESS mods: 0x0 text: 'a' 639 | 640 | #: Here, the key name for the A key is 0x61 and you can use it with:: 641 | 642 | #: map ctrl+0x61 something 643 | 644 | #: to map ctrl+a to something. 645 | 646 | #: You can use the special action no_op to unmap a keyboard shortcut 647 | #: that is assigned in the default configuration. 648 | 649 | #: You can combine multiple actions to be triggered by a single 650 | #: shortcut, using the syntax below:: 651 | 652 | #: map key combine action1 action2 action3 ... 653 | 654 | #: For example:: 655 | 656 | #: map kitty_mod+e combine : new_window : next_layout 657 | 658 | #: this will create a new window and switch to the next available 659 | #: layout 660 | 661 | #: You can use multi-key shortcuts using the syntax shown below:: 662 | 663 | #: map key1>key2>key3 action 664 | 665 | #: For example:: 666 | 667 | #: map ctrl+f>2 set_font_size 20 668 | 669 | # kitty_mod ctrl+shift 670 | 671 | #: The value of kitty_mod is used as the modifier for all default 672 | #: shortcuts, you can change it in your kitty.conf to change the 673 | #: modifiers for all the default shortcuts. 674 | 675 | # clear_all_shortcuts no 676 | 677 | #: You can have kitty remove all shortcut definition seen up to this 678 | #: point. Useful, for instance, to remove the default shortcuts. 679 | 680 | #: Clipboard {{{ 681 | 682 | # map kitty_mod+c copy_to_clipboard 683 | 684 | #: There is also a copy_or_interrupt action that can be optionally 685 | #: mapped to Ctrl+c. It will copy only if there is a selection and 686 | #: send an interrupt otherwise. 687 | 688 | # map cmd+c copy_to_clipboard 689 | # map kitty_mod+v paste_from_clipboard 690 | # map cmd+v paste_from_clipboard 691 | # map kitty_mod+s paste_from_selection 692 | # map shift+insert paste_from_selection 693 | # map kitty_mod+o pass_selection_to_program 694 | 695 | #: You can also pass the contents of the current selection to any 696 | #: program using pass_selection_to_program. By default, the system's 697 | #: open program is used, but you can specify your own, the selection 698 | #: will be passed as a command line argument to the program, for 699 | #: example:: 700 | 701 | #: map kitty_mod+o pass_selection_to_program firefox 702 | 703 | #: You can pass the current selection to a terminal program running in 704 | #: a new kitty window, by using the @selection placeholder:: 705 | 706 | #: map kitty_mod+y new_window less @selection 707 | 708 | #: }}} 709 | 710 | #: Scrolling {{{ 711 | 712 | # map kitty_mod+up scroll_line_up 713 | # map alt+cmd+page_up scroll_line_up 714 | # map cmd+up scroll_line_up 715 | # map kitty_mod+k scroll_line_up 716 | # map kitty_mod+down scroll_line_down 717 | # map kitty_mod+j scroll_line_down 718 | # map alt+cmd+page_down scroll_line_down 719 | # map cmd+down scroll_line_down 720 | # map kitty_mod+page_up scroll_page_up 721 | # map cmd+page_up scroll_page_up 722 | # map kitty_mod+page_down scroll_page_down 723 | # map cmd+page_down scroll_page_down 724 | # map kitty_mod+home scroll_home 725 | # map cmd+home scroll_home 726 | # map kitty_mod+end scroll_end 727 | # map cmd+end scroll_end 728 | # map kitty_mod+h show_scrollback 729 | 730 | #: You can pipe the contents of the current screen + history buffer as 731 | #: STDIN to an arbitrary program using the ``pipe`` function. For 732 | #: example, the following opens the scrollback buffer in less in an 733 | #: overlay window:: 734 | 735 | #: map f1 pipe @ansi overlay less +G -R 736 | 737 | #: For more details on piping screen and buffer contents to external 738 | #: programs, see pipe. 739 | 740 | #: }}} 741 | 742 | #: Window management {{{ 743 | 744 | # map kitty_mod+enter new_window 745 | 746 | #: You can open a new window running an arbitrary program, for 747 | #: example:: 748 | 749 | #: map kitty_mod+y new_window mutt 750 | 751 | #: You can open a new window with the current working directory set to 752 | #: the working directory of the current window using:: 753 | 754 | #: map ctrl+alt+enter new_window_with_cwd 755 | 756 | #: You can open a new window that is allowed to control kitty via the 757 | #: kitty remote control facility by prefixing the command line with @. 758 | #: Any programs running in that window will be allowed to control 759 | #: kitty. For example:: 760 | 761 | #: map ctrl+enter new_window @ some_program 762 | 763 | # map cmd+enter new_window 764 | # map kitty_mod+n new_os_window 765 | # map cmd+n kitty -1 766 | # map kitty_mod+w close_window 767 | # map shift+cmd+d close_window 768 | # map kitty_mod+] next_window 769 | # map kitty_mod+[ previous_window 770 | # map kitty_mod+f move_window_forward 771 | # map kitty_mod+b move_window_backward 772 | # map kitty_mod+` move_window_to_top 773 | # map kitty_mod+r start_resizing_window 774 | # map cmd+r start_resizing_window 775 | # map kitty_mod+1 first_window 776 | # map cmd+1 first_window 777 | # map kitty_mod+2 second_window 778 | # map cmd+2 second_window 779 | # map kitty_mod+3 third_window 780 | # map cmd+3 third_window 781 | # map kitty_mod+4 fourth_window 782 | # map cmd+4 fourth_window 783 | # map kitty_mod+5 fifth_window 784 | # map cmd+5 fifth_window 785 | # map kitty_mod+6 sixth_window 786 | # map cmd+6 sixth_window 787 | # map kitty_mod+7 seventh_window 788 | # map cmd+7 seventh_window 789 | # map kitty_mod+8 eighth_window 790 | # map cmd+8 eighth_window 791 | # map kitty_mod+9 ninth_window 792 | # map cmd+9 ninth_window 793 | # map kitty_mod+0 tenth_window 794 | #: }}} 795 | 796 | #: Layout management {{{ 797 | 798 | # map kitty_mod+l next_layout 799 | 800 | #: You can also create shortcuts to switch to specific layouts:: 801 | 802 | #: map ctrl+alt+t goto_layout tall 803 | #: map ctrl+alt+s goto_layout stack 804 | 805 | #: Similarly, to switch back to the previous layout:: 806 | 807 | #: map ctrl+alt+p last_used_layout 808 | #: }}} 809 | 810 | #: Font sizes {{{ 811 | 812 | #: You can change the font size for all top-level kitty OS windows at 813 | #: a time or only the current one. 814 | 815 | # map kitty_mod+equal change_font_size all +2.0 816 | # map cmd+plus change_font_size all +2.0 817 | # map kitty_mod+minus change_font_size all -2.0 818 | # map cmd+minus change_font_size all -2.0 819 | # map kitty_mod+backspace change_font_size all 0 820 | # map cmd+0 change_font_size all 0 821 | 822 | #: To setup shortcuts for specific font sizes:: 823 | 824 | #: map kitty_mod+f6 change_font_size all 10.0 825 | 826 | #: To setup shortcuts to change only the current OS window's font 827 | #: size:: 828 | 829 | #: map kitty_mod+f6 change_font_size current 10.0 830 | #: }}} 831 | 832 | #: Select and act on visible text {{{ 833 | 834 | #: Use the hints kitten to select text and either pass it to an 835 | #: external program or insert it into the terminal or copy it to the 836 | #: clipboard. 837 | 838 | # map kitty_mod+e kitten hints 839 | 840 | #: Open a currently visible URL using the keyboard. The program used 841 | #: to open the URL is specified in open_url_with. 842 | 843 | # map kitty_mod+p>f kitten hints --type path --program - 844 | 845 | #: Select a path/filename and insert it into the terminal. Useful, for 846 | #: instance to run git commands on a filename output from a previous 847 | #: git command. 848 | 849 | # map kitty_mod+p>shift+f kitten hints --type path 850 | 851 | #: Select a path/filename and open it with the default open program. 852 | 853 | # map kitty_mod+p>l kitten hints --type line --program - 854 | 855 | #: Select a line of text and insert it into the terminal. Use for the 856 | #: output of things like: ls -1 857 | 858 | # map kitty_mod+p>w kitten hints --type word --program - 859 | 860 | #: Select words and insert into terminal. 861 | 862 | # map kitty_mod+p>h kitten hints --type hash --program - 863 | 864 | #: Select something that looks like a hash and insert it into the 865 | #: terminal. Useful with git, which uses sha1 hashes to identify 866 | #: commits 867 | 868 | 869 | #: The hints kitten has many more modes of operation that you can map 870 | #: to different shortcuts. For a full description see kittens/hints. 871 | #: }}} 872 | 873 | #: Miscellaneous {{{ 874 | 875 | # map kitty_mod+f11 toggle_fullscreen 876 | # map kitty_mod+f10 toggle_maximized 877 | # map kitty_mod+u kitten unicode_input 878 | # map kitty_mod+f2 edit_config_file 879 | # map kitty_mod+escape kitty_shell window 880 | 881 | #: Open the kitty shell in a new window/tab/overlay/os_window to 882 | #: control kitty using commands. 883 | 884 | # map kitty_mod+a>m set_background_opacity +0.1 885 | # map kitty_mod+a>l set_background_opacity -0.1 886 | # map kitty_mod+a>1 set_background_opacity 1 887 | # map kitty_mod+a>d set_background_opacity default 888 | # map kitty_mod+delete clear_terminal reset active 889 | 890 | #: You can create shortcuts to clear/reset the terminal. For example:: 891 | 892 | #: # Reset the terminal 893 | #: map kitty_mod+f9 clear_terminal reset active 894 | #: # Clear the terminal screen by erasing all contents 895 | #: map kitty_mod+f10 clear_terminal clear active 896 | #: # Clear the terminal scrollback by erasing it 897 | #: map kitty_mod+f11 clear_terminal scrollback active 898 | #: # Scroll the contents of the screen into the scrollback 899 | #: map kitty_mod+f12 clear_terminal scroll active 900 | 901 | #: If you want to operate on all windows instead of just the current 902 | #: one, use all instead of :italic`active`. 903 | 904 | #: It is also possible to remap Ctrl+L to both scroll the current 905 | #: screen contents into the scrollback buffer and clear the screen, 906 | #: instead of just clearing the screen:: 907 | 908 | #: map ctrl+l combine : clear_terminal scroll active : send_text normal,application \x0c 909 | 910 | 911 | #: You can tell kitty to send arbitrary (UTF-8) encoded text to the 912 | #: client program when pressing specified shortcut keys. For example:: 913 | 914 | #: map ctrl+alt+a send_text all Special text 915 | 916 | #: This will send "Special text" when you press the ctrl+alt+a key 917 | #: combination. The text to be sent is a python string literal so you 918 | #: can use escapes like \x1b to send control codes or \u21fb to send 919 | #: unicode characters (or you can just input the unicode characters 920 | #: directly as UTF-8 text). The first argument to send_text is the 921 | #: keyboard modes in which to activate the shortcut. The possible 922 | #: values are normal or application or kitty or a comma separated 923 | #: combination of them. The special keyword all means all modes. The 924 | #: modes normal and application refer to the DECCKM cursor key mode 925 | #: for terminals, and kitty refers to the special kitty extended 926 | #: keyboard protocol. 927 | 928 | #: Another example, that outputs a word and then moves the cursor to 929 | #: the start of the line (same as pressing the Home key):: 930 | 931 | #: map ctrl+alt+a send_text normal Word\x1b[H 932 | #: map ctrl+alt+a send_text application Word\x1bOH 933 | --------------------------------------------------------------------------------