init of new dotfiles repository with no secrets
This commit is contained in:
commit
92feacde4b
32 changed files with 4025 additions and 0 deletions
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
.AppleDouble
|
||||
.netrwhist
|
||||
vim/.vim/plugged
|
||||
zsh/.zsh/cache
|
31
README.md
Normal file
31
README.md
Normal file
|
@ -0,0 +1,31 @@
|
|||
# Dotfiles
|
||||
|
||||
These are generic dotfiles intended for use across any platform.
|
||||
|
||||
## Supported Configurations
|
||||
* bash
|
||||
* conky
|
||||
* emacs
|
||||
* git
|
||||
* i3
|
||||
* mutt
|
||||
* offlineimap
|
||||
* khard
|
||||
* tmux
|
||||
* vim
|
||||
* zsh
|
||||
|
||||
## Installation
|
||||
|
||||
Following the best practices of the local platform install `git` and `stow`.
|
||||
|
||||
```
|
||||
$ git clone ssh://git@gitlab.com/amdavidson/dotfiles.git $HOME/.dotfiles
|
||||
$ cd $HOME/.dotfiles
|
||||
$ ./update.sh
|
||||
$ stow {bash,git,tmux,vim}
|
||||
```
|
||||
|
||||
|
||||
## Local Configuration
|
||||
Locally specific `bash` or `zsh` configurations can be put into `$HOME/.$SHELL_local` and they will be applied as a superset of the main `.$SHELLrc` file.
|
4
bash/.bash_profile
Normal file
4
bash/.bash_profile
Normal file
|
@ -0,0 +1,4 @@
|
|||
if [ -f $HOME/.bash_profile_local ]; then
|
||||
source $HOME/.bash_profile_local
|
||||
fi
|
||||
source ~/.bashrc
|
214
bash/.bashrc
Normal file
214
bash/.bashrc
Normal file
|
@ -0,0 +1,214 @@
|
|||
### @amdavidson's bashrc
|
||||
|
||||
# define useful aliases for color codes
|
||||
sh_norm="\[\033[0m\]"
|
||||
sh_black="\[\033[0;30m\]"
|
||||
sh_dark_gray="\[\033[1;30m\]"
|
||||
sh_blue="\[\033[0;34m\]"
|
||||
sh_light_blue="\[\033[1;34m\]"
|
||||
sh_green="\[\033[0;32m\]"
|
||||
sh_light_green="\[\033[1;32m\]"
|
||||
sh_cyan="\[\033[0;36m\]"
|
||||
sh_light_cyan="\[\033[1;36m\]"
|
||||
sh_red="\[\033[0;31m\]"
|
||||
sh_light_red="\[\033[1;31m\]"
|
||||
sh_purple="\[\033[0;35m\]"
|
||||
sh_light_purple="\[\033[1;35m\]"
|
||||
sh_brown="\[\033[0;33m\]"
|
||||
sh_yellow="\[\033[1;33m\]"
|
||||
sh_light_gray="\[\033[0;37m\]"
|
||||
sh_white="\[\033[1;37m\]"
|
||||
|
||||
# Set some defaults.
|
||||
export GOPATH="$HOME/go"
|
||||
export EDITOR="vim"
|
||||
export PATH=".:$GOPATH/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:~/bin"
|
||||
export LSCOLORS="ExGxBxDxCxEgEdxbxgxcxd"
|
||||
export DOTFILES_DIR=$HOME'/.dotfiles'
|
||||
|
||||
# Make a pretty prompt.
|
||||
export PROMPT_COMMAND='history -a; if [ $? -ne 0 ];then ERROR_FLAG=1;else ERROR_FLAG=;fi;$DOTFILES_DIR/check_update.sh'
|
||||
export PS1=${HOSTCOLOUR}${sh_light_gray}'\t | \h'${sh_green}':\w'${sh_light_gray}' '${sh_light_gray}'${ERROR_FLAG:+'${sh_light_red}'}\$ '${sh_norm}
|
||||
|
||||
# New files and folders should not be world readable
|
||||
umask 0027
|
||||
|
||||
# Borrow features from sensible.bash
|
||||
|
||||
# Trim long paths in prompt
|
||||
PROMPT_DIRTRIM=2
|
||||
|
||||
# Update window size after every command
|
||||
shopt -s checkwinsize
|
||||
|
||||
# Append history don't overwrite
|
||||
shopt -s histappend
|
||||
|
||||
# Save multi-line commands as one line
|
||||
shopt -s cmdhist
|
||||
|
||||
# Avoid duplicate entries
|
||||
export HISTCONTROL="erasedups:ignoreboth"
|
||||
|
||||
# Use ISO8601 time format for history file.
|
||||
export HISTTIMEFORMAT='%F %T '
|
||||
|
||||
# Big history file
|
||||
HISTSIZE=500000
|
||||
HISTFILESIZE=100000
|
||||
|
||||
|
||||
# Aliases!
|
||||
|
||||
# jump down the tree.
|
||||
alias ..="cd .."
|
||||
alias ...="cd ../.."
|
||||
alias ....="cd ../../.."
|
||||
|
||||
# empty the screen (or use C-l)
|
||||
alias c="clear"
|
||||
|
||||
# why wouldn't you want human readable sizes?
|
||||
alias df="df -h"
|
||||
|
||||
# get outta here!
|
||||
alias e="exit"
|
||||
|
||||
# grep shortie
|
||||
alias g="grep --color=auto -i "
|
||||
|
||||
# get shortcuts.
|
||||
alias ga="git add"
|
||||
alias gc="git commit"
|
||||
alias gd="git diff"
|
||||
alias gp="git push"
|
||||
alias gs="git status"
|
||||
|
||||
# shorter ls
|
||||
alias l="ls -G"
|
||||
|
||||
# list files with details
|
||||
alias ll="ls -lh"
|
||||
|
||||
# list all files.
|
||||
alias la="ls -alh"
|
||||
|
||||
# List directories.
|
||||
alias ld="ls -Gd */"
|
||||
|
||||
# Find out what connections are happening.
|
||||
alias lsconn="sudo lsof -i -P"
|
||||
|
||||
# add some color to grep.
|
||||
alias grep="grep --color=auto"
|
||||
|
||||
# make the whole directory tree if required and let us know about it.
|
||||
alias mkdir="mkdir -p -v "
|
||||
|
||||
# don't ping forever.
|
||||
#alias ping="ping -c5"
|
||||
|
||||
# refresh the shell customizations without opening a new one.
|
||||
alias refresh="source ~/.bashrc"
|
||||
|
||||
# A python calculator
|
||||
alias pc='python -ic "from __future__ import division; from math import *"'
|
||||
|
||||
# Start nano with line numbering no wrapping and autoindenting
|
||||
alias nano='nano -ciw '
|
||||
|
||||
if [[ $(uname) = 'Darwin' ]]; then
|
||||
# Open man file in Preview.app.
|
||||
pman () {
|
||||
man -t "${1}" | open -f -a /Applications/Preview.app
|
||||
}
|
||||
fi
|
||||
|
||||
# General purpose extract command.
|
||||
extract () {
|
||||
if [ -f $1 ] ; then
|
||||
case $1 in
|
||||
*.tar.bz2) tar xjf $1 ;;
|
||||
*.tar.gz) tar xzf $1 ;;
|
||||
*.tar.xz) tar xJf $1 ;;
|
||||
*.bz2) bunzip2 $1 ;;
|
||||
*.rar) rar x $1 ;;
|
||||
*.gz) gunzip $1 ;;
|
||||
*.tar) tar xf $1 ;;
|
||||
*.tbz2) tar xjf $1 ;;
|
||||
*.tgz) tar xzf $1 ;;
|
||||
*.zip) unzip $1 ;;
|
||||
*.Z) uncompress $1 ;;
|
||||
*.7z) 7za e $1 ;;
|
||||
*.xz) xz -dv $1 ;;
|
||||
*) echo "'$1' cannot be extracted via extract()" ;;
|
||||
esac
|
||||
else
|
||||
echo "'$1' is not a valid file"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# General purpose backup command.
|
||||
bu () { tar czf ~/.backup/`basename $1`-`date +%Y%m%d%H%M`.tgz $1; }
|
||||
|
||||
# History Search
|
||||
h () { grep "$1" ~/.history/*; }
|
||||
|
||||
|
||||
# Search for a process:
|
||||
p () {
|
||||
if [ ! -z $1 ] ; then
|
||||
ps aux | grep $1 | grep -v grep
|
||||
else
|
||||
echo "must provide search string"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Find a file in the current tree.
|
||||
f () {
|
||||
if [ ! -z $1 ] ; then
|
||||
find . | grep $1
|
||||
#find . -name $1 -print;
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
# Repeat function, do something until you ^C out of it.
|
||||
# Syntax: r sleep_time_in_seconds command_to_run
|
||||
r () {
|
||||
if [ ! -z $1 ]
|
||||
then
|
||||
if [ ! -z $2 ]
|
||||
then
|
||||
while [ yes ]
|
||||
do
|
||||
$2
|
||||
echo ""
|
||||
sleep $1
|
||||
done
|
||||
else
|
||||
echo "Must have a command for second argument"
|
||||
fi
|
||||
else
|
||||
echo "Simple function to loop a command."
|
||||
echo "Example, to print the date every 5 seconds:"
|
||||
echo "$ r 5 date"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to count IP address found in file(s)
|
||||
count-IPs () {
|
||||
grep -E -o -h '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' |\
|
||||
sed -E 's/([0-9]*\.[0-9]*)\.[0-9]*\.[0-9]*/\1/' | \
|
||||
uniq -c | \
|
||||
sort -r
|
||||
}
|
||||
|
||||
# Import local extensions if needed.
|
||||
if [ -f $HOME/.bashrc_local ]; then
|
||||
source $HOME/.bashrc_local
|
||||
fi
|
||||
|
81
conky/.conkyrc
Normal file
81
conky/.conkyrc
Normal file
|
@ -0,0 +1,81 @@
|
|||
background no
|
||||
font Sans:size=8
|
||||
#xftfont Sans:size=10
|
||||
use_xft yes
|
||||
xftalpha 0.8
|
||||
update_interval 2.0
|
||||
total_run_times 0
|
||||
own_window yes
|
||||
own_window_type normal
|
||||
own_window_argb_visual true
|
||||
own_window_transparent yes
|
||||
#own_windiw_class conky
|
||||
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
|
||||
double_buffer yes
|
||||
minimum_size 200 5
|
||||
maximum_width 400
|
||||
draw_shades yes
|
||||
draw_outline no
|
||||
draw_borders no
|
||||
draw_graph_borders yes
|
||||
default_color CDE0E7
|
||||
default_shade_color black
|
||||
default_outline_color green
|
||||
alignment top_right
|
||||
gap_y 35
|
||||
no_buffers yes
|
||||
uppercase no
|
||||
cpu_avg_samples 2
|
||||
override_utf8_locale no
|
||||
uppercase yes # set to yes if you want all text to be in uppercase
|
||||
|
||||
TEXT
|
||||
${color CDE0E7}${font OxygenSans:pixelsize=70}${time %l:%M %P}${font}
|
||||
${hr 1}
|
||||
${font OxygenSans:pixelsize=20}${time %A} $alignr${color white}${time %Y}-${color white}${time %m}-${color white}${time %d}${font}
|
||||
|
||||
${color white}SYSTEM ${hr 3}${color}
|
||||
|
||||
Hostname: $alignr$nodename
|
||||
|
||||
Uptime: $alignr$uptime
|
||||
Kernel: $alignr$kernel
|
||||
Load: $alignr$loadavg
|
||||
|
||||
CPU1 ${alignr}${cpu cpu1}%
|
||||
${cpubar 4 cpu1}
|
||||
CPU2 ${alignr}${cpu cpu2}%
|
||||
${cpubar 4 cpu2}
|
||||
Ram ${alignr}$mem / $memmax ($memperc%)
|
||||
${membar 4}
|
||||
Swap ${alignr} $swap / $swapmax ($swapperc%)
|
||||
${swapbar 4}
|
||||
|
||||
Highest CPU $alignr CPU% MEM%
|
||||
${color aaaaaa}${top name 1}$alignr${top cpu 1}${top mem 1}
|
||||
${top name 2}$alignr${top cpu 2}${top mem 2}
|
||||
${top name 3}$alignr${top cpu 3}${top mem 3}${color}
|
||||
|
||||
Highest MEM $alignr CPU% MEM%
|
||||
${color aaaaaa}${top_mem name 1}$alignr${top_mem cpu 1}${top_mem mem 1}
|
||||
${top_mem name 2}$alignr${top_mem cpu 2}${top_mem mem 2}
|
||||
${top_mem name 3}$alignr${top_mem cpu 3}${top_mem mem 3}${color}
|
||||
|
||||
${color white}Filesystem ${hr 3}${color}
|
||||
|
||||
Root (/): ${alignr}${fs_used /} / ${fs_size /}
|
||||
${fs_bar 4 /}
|
||||
|
||||
${color white}NETWORK ${hr 3}${color}
|
||||
${if_existing /proc/sys/net/ipv4/conf/eth0}
|
||||
eth0: ${addr eth0}${color aaaaaa}
|
||||
Down ${downspeed eth0}/s ${alignr}Up ${upspeed eth0}/s
|
||||
${downspeedgraph eth0 25,107} ${alignr}${upspeedgraph eth0 25,107}
|
||||
Total ${totaldown eth0} ${alignr}Total ${totalup eth0}${color}
|
||||
${endif}
|
||||
${if_existing /proc/sys/net/ipv4/conf/eth1}
|
||||
eth0: ${addr eth1}${color aaaaaa}
|
||||
Down ${downspeed eth1} k/s ${alignr}Up ${upspeed eth1} k/s
|
||||
${downspeedgraph eth1 25,107} ${alignr}${upspeedgraph eth1 25,107}
|
||||
Total ${totaldown eth1} ${alignr}Total ${totalup eth1}${color}
|
||||
${endif}
|
33
git/.gitconfig
Normal file
33
git/.gitconfig
Normal file
|
@ -0,0 +1,33 @@
|
|||
[user]
|
||||
name = Andrew Davidson
|
||||
email = andrew@amdavidson.com
|
||||
|
||||
[color]
|
||||
ui = auto
|
||||
[color "branch"]
|
||||
current = yellow reverse
|
||||
local = yellow
|
||||
remote = green
|
||||
[color "diff"]
|
||||
meta = yellow bold
|
||||
frag = magenta bold
|
||||
old = red bold
|
||||
new = green bold
|
||||
[color "status"]
|
||||
added = yellow
|
||||
changed = green
|
||||
untracked = cyan
|
||||
|
||||
[color]
|
||||
ui = true
|
||||
diff = auto
|
||||
status = auto
|
||||
branch = auto
|
||||
[color "diff"]
|
||||
whitespace = red reverse
|
||||
[core]
|
||||
whitespace=fix,-indent-with-non-tab,trailing-space,cr-at-eol
|
||||
[alias]
|
||||
lg = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative"
|
||||
[push]
|
||||
default = simple
|
134
i3/.i3/config
Normal file
134
i3/.i3/config
Normal file
|
@ -0,0 +1,134 @@
|
|||
# i3 config file (v4)
|
||||
|
||||
#font pango:DejaVu Sans Mono 8
|
||||
font pango:Droid Sans 8
|
||||
|
||||
# use these keys for focus, movement, and resize directions when reaching for
|
||||
# the arrows is not convenient
|
||||
set $up k
|
||||
set $down j
|
||||
set $left h
|
||||
set $right l
|
||||
|
||||
# use Mouse+Mod4 to drag floating windows to their wanted position
|
||||
floating_modifier Mod4
|
||||
|
||||
# start a terminal
|
||||
bindsym Mod4+Return exec i3-sensible-terminal
|
||||
|
||||
# kill focused window
|
||||
bindsym Mod4+Shift+q kill
|
||||
|
||||
# start dmenu (a program launcher)
|
||||
bindsym Mod4+d exec dmenu_run
|
||||
# There also is the (new) i3-dmenu-desktop which only displays applications
|
||||
# shipping a .desktop file. It is a wrapper around dmenu, so you need that
|
||||
# installed.
|
||||
# bindsym Mod4+d exec --no-startup-id i3-dmenu-desktop
|
||||
|
||||
# change focus
|
||||
bindsym Mod4+$left focus left
|
||||
bindsym Mod4+$down focus down
|
||||
bindsym Mod4+$up focus up
|
||||
bindsym Mod4+$right focus right
|
||||
|
||||
# move focused window
|
||||
bindsym Mod4+Shift+$left move left
|
||||
bindsym Mod4+Shift+$down move down
|
||||
bindsym Mod4+Shift+$up move up
|
||||
bindsym Mod4+Shift+$right move right
|
||||
|
||||
# split in horizontal orientation
|
||||
bindsym Mod4+Shift+v split h
|
||||
|
||||
# split in vertical orientation
|
||||
bindsym Mod4+v split v
|
||||
|
||||
# enter fullscreen mode for the focused container
|
||||
bindsym Mod4+f fullscreen toggle
|
||||
|
||||
# change container layout (stacked, tabbed, toggle split)
|
||||
bindsym Mod4+s layout stacking
|
||||
bindsym Mod4+w layout tabbed
|
||||
bindsym Mod4+e layout toggle split
|
||||
|
||||
# toggle tiling / floating
|
||||
bindsym Mod4+Shift+space floating toggle
|
||||
|
||||
# change focus between tiling / floating windows
|
||||
bindsym Mod4+space focus mode_toggle
|
||||
|
||||
# focus the parent container
|
||||
bindsym Mod4+a focus parent
|
||||
|
||||
# move the currently focused window to the scratchpad
|
||||
bindsym Mod4+Shift+minus move scratchpad
|
||||
|
||||
# Show the next scratchpad window or hide the focused scratchpad window.
|
||||
# If there are multiple scratchpad windows, this command cycles through them.
|
||||
bindsym Mod4+minus scratchpad show
|
||||
|
||||
# switch to workspace
|
||||
bindsym Mod4+1 workspace 1
|
||||
bindsym Mod4+2 workspace 2
|
||||
bindsym Mod4+3 workspace 3
|
||||
bindsym Mod4+4 workspace 4
|
||||
bindsym Mod4+5 workspace 5
|
||||
bindsym Mod4+6 workspace 6
|
||||
bindsym Mod4+7 workspace 7
|
||||
bindsym Mod4+8 workspace 8
|
||||
bindsym Mod4+9 workspace 9
|
||||
bindsym Mod4+0 workspace 10
|
||||
|
||||
# move focused container to workspace
|
||||
bindsym Mod4+Shift+1 move container to workspace 1
|
||||
bindsym Mod4+Shift+2 move container to workspace 2
|
||||
bindsym Mod4+Shift+3 move container to workspace 3
|
||||
bindsym Mod4+Shift+4 move container to workspace 4
|
||||
bindsym Mod4+Shift+5 move container to workspace 5
|
||||
bindsym Mod4+Shift+6 move container to workspace 6
|
||||
bindsym Mod4+Shift+7 move container to workspace 7
|
||||
bindsym Mod4+Shift+8 move container to workspace 8
|
||||
bindsym Mod4+Shift+9 move container to workspace 9
|
||||
bindsym Mod4+Shift+0 move container to workspace 10
|
||||
|
||||
# kill focused window
|
||||
#bindsym Mod4+Shift+q kill
|
||||
|
||||
# reload the configuration file
|
||||
bindsym Mod4+Shift+c reload
|
||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
||||
bindsym Mod4+Shift+r restart
|
||||
# exit i3 (logs you out of your X session)
|
||||
bindsym Mod4+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
|
||||
|
||||
# resize window (you can also use the mouse for that)
|
||||
mode "resize" {
|
||||
# These bindings trigger as soon as you enter the resize mode
|
||||
bindsym $left resize shrink width 1 px or 1 ppt
|
||||
bindsym $down resize grow height 1 px or 1 ppt
|
||||
bindsym $up resize shrink height 1 px or 1 ppt
|
||||
bindsym $right resize grow width 1 px or 1 ppt
|
||||
|
||||
# back to normal: Enter or Escape
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
|
||||
bindsym Mod4+r mode "resize"
|
||||
|
||||
# Set window gaps
|
||||
smart_borders on
|
||||
smart_gaps on
|
||||
gaps inner 10
|
||||
gaps outer 0
|
||||
|
||||
focus_follows_mouse no
|
||||
|
||||
# Start i3bar to display a workspace bar (plus the system information i3status
|
||||
# finds out, if available)
|
||||
bar {
|
||||
position top
|
||||
status_command i3status
|
||||
}
|
||||
|
40
i3/.i3status.conf
Normal file
40
i3/.i3status.conf
Normal file
|
@ -0,0 +1,40 @@
|
|||
# i3status configuration file.
|
||||
# see "man i3status" for documentation.
|
||||
|
||||
# It is important that this file is edited as UTF-8.
|
||||
# The following line should contain a sharp s:
|
||||
# ß
|
||||
# If the above line is not correctly displayed, fix your editor first!
|
||||
|
||||
general {
|
||||
colors = false
|
||||
interval = 5
|
||||
}
|
||||
|
||||
order += "disk /"
|
||||
order += "ethernet _first_"
|
||||
order += "battery 0"
|
||||
order += "load"
|
||||
order += "tztime local"
|
||||
|
||||
ethernet _first_ {
|
||||
# if you use %speed, i3status requires root privileges
|
||||
format_up = "Ethernet: %ip (%speed)"
|
||||
format_down = "Ethernet: down"
|
||||
}
|
||||
|
||||
battery 0 {
|
||||
format = "%status %percentage %remaining"
|
||||
}
|
||||
|
||||
tztime local {
|
||||
format = "%Y-%m-%d %H:%M:%S"
|
||||
}
|
||||
|
||||
load {
|
||||
format = "%1min"
|
||||
}
|
||||
|
||||
disk "/" {
|
||||
format = "HD: %avail"
|
||||
}
|
32
khard/.config/khard/khard.conf
Normal file
32
khard/.config/khard/khard.conf
Normal file
|
@ -0,0 +1,32 @@
|
|||
[addressbooks]
|
||||
[[Default]]
|
||||
path = ~/.contacts/Default
|
||||
|
||||
[general]
|
||||
debug = no
|
||||
default_action = list
|
||||
editor = vim
|
||||
merge_editor = vimdiff
|
||||
|
||||
[contact table]
|
||||
# display names by first or last name: first_name / last_name
|
||||
display = first_name
|
||||
# group by address book: yes / no
|
||||
group_by_addressbook = no
|
||||
# reverse table ordering: yes / no
|
||||
reverse = no
|
||||
# append nicknames to name column: yes / no
|
||||
show_nicknames = no
|
||||
# show uid table column: yes / no
|
||||
show_uids = no
|
||||
# sort by first or last name: first_name / last_name
|
||||
sort = last_name
|
||||
# localize dates: yes / no
|
||||
localize_dates = yes
|
||||
|
||||
[vcard]
|
||||
# Look into source vcf files to speed up search queries: yes / no
|
||||
search_in_source_files = no
|
||||
# skip unparsable vcard files: yes / no
|
||||
skip_unparsable = no
|
||||
|
20
khard/.config/vdirsyncer/config
Normal file
20
khard/.config/vdirsyncer/config
Normal file
|
@ -0,0 +1,20 @@
|
|||
[general]
|
||||
status_path = "~/.vdirsyncer/status/"
|
||||
|
||||
[pair my_contacts]
|
||||
a = "my_contacts_local"
|
||||
b = "my_contacts_remote"
|
||||
collections = ["from a", "from b"]
|
||||
|
||||
[storage my_contacts_local]
|
||||
type = "filesystem"
|
||||
path = "~/.contacts/"
|
||||
fileext = ".vcf"
|
||||
|
||||
[storage my_contacts_remote]
|
||||
type = "carddav"
|
||||
|
||||
url = "https://carddav.fastmail.com"
|
||||
username.fetch = ["command", "~/bin/pw.sh", "CARDDAV_USERNAME"]
|
||||
password.fetch = ["command", "~/bin/pw.sh", "CARDDAV_PASSWORD"]
|
||||
|
94
konsole/.local/share/konsole/Dracula.colorscheme
Normal file
94
konsole/.local/share/konsole/Dracula.colorscheme
Normal file
|
@ -0,0 +1,94 @@
|
|||
[Background]
|
||||
Color=40,42,54
|
||||
|
||||
[BackgroundFaint]
|
||||
Color=40,42,54
|
||||
|
||||
[BackgroundIntense]
|
||||
Color=40,42,54
|
||||
|
||||
[Color0]
|
||||
Color=189,147,249
|
||||
|
||||
[Color0Faint]
|
||||
Color=189,147,249
|
||||
|
||||
[Color0Intense]
|
||||
Color=189,147,249
|
||||
|
||||
[Color1]
|
||||
Color=255,85,85
|
||||
|
||||
[Color1Faint]
|
||||
Color=255,85,85
|
||||
|
||||
[Color1Intense]
|
||||
Color=255,85,85
|
||||
|
||||
[Color2]
|
||||
Color=80,250,123
|
||||
|
||||
[Color2Faint]
|
||||
Color=80,250,123
|
||||
|
||||
[Color2Intense]
|
||||
Color=80,250,123
|
||||
|
||||
[Color3]
|
||||
Color=255,121,198
|
||||
|
||||
[Color3Faint]
|
||||
Color=255,121,198
|
||||
|
||||
[Color3Intense]
|
||||
Color=255,121,198
|
||||
|
||||
[Color4]
|
||||
Color=139,233,253
|
||||
|
||||
[Color4Faint]
|
||||
Color=139,233,253
|
||||
|
||||
[Color4Intense]
|
||||
Color=139,233,253
|
||||
|
||||
[Color5]
|
||||
Color=241,250,140
|
||||
|
||||
[Color5Faint]
|
||||
Color=241,250,140
|
||||
|
||||
[Color5Intense]
|
||||
Color=241,250,140
|
||||
|
||||
[Color6]
|
||||
Color=98,114,164
|
||||
|
||||
[Color6Faint]
|
||||
Color=98,114,164
|
||||
|
||||
[Color6Intense]
|
||||
Color=98,114,164
|
||||
|
||||
[Color7]
|
||||
Color=68,71,90
|
||||
|
||||
[Color7Faint]
|
||||
Color=68,71,90
|
||||
|
||||
[Color7Intense]
|
||||
Color=68,71,90
|
||||
|
||||
[Foreground]
|
||||
Color=248,248,242
|
||||
|
||||
[ForegroundFaint]
|
||||
Color=248,248,242
|
||||
|
||||
[ForegroundIntense]
|
||||
Color=248,248,242
|
||||
|
||||
[General]
|
||||
Description=Dracula
|
||||
Opacity=1
|
||||
Wallpaper=
|
6
mutt/.mailcap
Normal file
6
mutt/.mailcap
Normal file
|
@ -0,0 +1,6 @@
|
|||
text/html; firefox %s && sleep 5; test=test -n "$DISPLAY";
|
||||
text/html; links -html-numbered-links 1 -dump %s; nametemplate=%s.html; copiousoutput
|
||||
#text/html; w3m -I %{charset} -T text/html; copiousoutput;
|
||||
text/plain; vim %s;
|
||||
|
||||
|
169
mutt/.muttrc
Normal file
169
mutt/.muttrc
Normal file
|
@ -0,0 +1,169 @@
|
|||
# Paths ---------------------
|
||||
set folder = ~/.maildir
|
||||
set alias_file = ~/.mutt/alias
|
||||
set header_cache = ~/.mutt/cache/headers
|
||||
set message_cachedir = ~/.mutt/cache/bodies
|
||||
set certificate_file = ~/.mutt/certificates
|
||||
set mailcap_path = ~/.mailcap
|
||||
set tmpdir = ~/.mutt/temp
|
||||
set signature = ~/.sig
|
||||
|
||||
# Options -------------------
|
||||
set wait_key = no
|
||||
set mbox_type = Maildir
|
||||
set timeout = 3
|
||||
set mail_check = 0
|
||||
unset move
|
||||
set delete
|
||||
unset confirmappend
|
||||
set quit
|
||||
unset mark_old
|
||||
set pipe_decode
|
||||
set thorough_search
|
||||
|
||||
# Sidebar -------------------
|
||||
set sidebar_visible = yes
|
||||
set sidebar_width = 20
|
||||
set sidebar_short_path = yes
|
||||
set sidebar_format = "%B%?F? [%F]?%* %?N?%N/?%S"
|
||||
color sidebar_new color221 color233
|
||||
|
||||
# Header Options ------------
|
||||
ignore *
|
||||
unignore from: reply-to: to: cc: bcc: date: subject: x-Spam-score: list-id:
|
||||
unhdr_order *
|
||||
hdr_order from: reply-to: to: cc: bcc: date: subject: x-Spam-score: list-id:
|
||||
|
||||
# Setup IMAP -------------------
|
||||
set my_pass=`~/bin/pw.sh IMAP_PASSWORD`
|
||||
set my_user=`~/bin/pw.sh IMAP_USERNAME`
|
||||
set folder = "imaps://$my_user:$my_pass@imap.fastmail.com:993"
|
||||
set spoolfile= "+INBOX"
|
||||
set record = +Sent
|
||||
set postponed = +Drafts
|
||||
set trash = +Trash
|
||||
set imap_check_subscribed = yes
|
||||
|
||||
# Setup SMTP -------------------
|
||||
set smtp_url=smtp://$my_user:$my_pass@smtp.fastmail.com:587
|
||||
set ssl_force_tls=yes
|
||||
#set ssl_starttls=yes
|
||||
|
||||
|
||||
# Mailboxes -----------------
|
||||
# source ~/.mutt/mailboxes
|
||||
|
||||
# Index ---------------------
|
||||
set date_format = "%m/%d"
|
||||
set index_format = "[%Z] %D %-20.20F %s"
|
||||
set sort = threads
|
||||
set sort_aux = reverse-last-date-received
|
||||
set uncollapse_jump
|
||||
set sort_re
|
||||
set reply_regexp = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*"
|
||||
|
||||
bind index R group-reply
|
||||
bind index <tab> sync-mailbox
|
||||
bind index <space> collapse-thread
|
||||
|
||||
macro index / "<enter-command>unset wait_key<enter><shell-escape>mutt-notmuch-py<enter><change-folder-readonly>~/.cache/mutt_results<enter>" \
|
||||
"search mail (using notmuch)"
|
||||
|
||||
macro index \Cr "T~U<enter><tag-prefix><clear-flag>N<untag-pattern>.<enter>" "mark all messages as read"
|
||||
|
||||
macro index,pager o "<shell-escape>$HOME/bin/fastmail.sh<enter>" "run offlineimap to sync fastmail"
|
||||
|
||||
macro index,pager C "<copy-message>?<toggle-mailboxes>" "copy a message to a mailbox"
|
||||
macro index,pager s "<save-message>?<toggle-mailboxes>" "move a message to a mailbox"
|
||||
|
||||
bind index D purge-message
|
||||
|
||||
bind index,pager <down> sidebar-next
|
||||
bind index,pager <up> sidebar-prev
|
||||
bind index,pager <right> sidebar-open
|
||||
|
||||
|
||||
# Pager View -----------------
|
||||
set pager_index_lines = 10 # number of index lines to show
|
||||
set pager_context = 3 # number of context lines to show
|
||||
set pager_stop # don't go to next message automatically
|
||||
set menu_scroll # scroll in menus
|
||||
set tilde # show tildes like in vim
|
||||
unset markers # no ugly plus signs
|
||||
|
||||
set quote_regexp = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+"
|
||||
alternative_order text/plain text/enriched text/html
|
||||
|
||||
|
||||
# Pager Bindings -------------
|
||||
bind pager k previous-line
|
||||
bind pager j next-line
|
||||
bind pager R group-reply
|
||||
|
||||
# View attachments properly.
|
||||
bind attach <return> view-mailcap
|
||||
auto_view text/html
|
||||
|
||||
macro pager \Cu "|urlview<enter>" "call urlview to open links"
|
||||
|
||||
# Setup Identity
|
||||
set realname="Andrew Davidson"
|
||||
set from="andrew@amdavidson.com"
|
||||
|
||||
|
||||
|
||||
# Setup VIM for editing headers
|
||||
set edit_headers
|
||||
set editor="vim +':set textwidth=0' +':set wrapmargin=0' +':set wrap' +':set linebreak' +':set nolist' +/^$ ++1"
|
||||
|
||||
# Contacts shortcuts
|
||||
set query_command = "khard email --parsable --search-in-source-files '%s'"
|
||||
bind editor <Tab> complete-query
|
||||
bind editor ^T complete
|
||||
macro index,pager A "<pipe-message>khard add-email<return>" "add the sender email address to khard"
|
||||
|
||||
# Some neat stuff.
|
||||
set fcc_attach=yes # Forward attachments.
|
||||
unset reply_self # Don't include myself when replying to all
|
||||
set smart_wrap # wrap text smartly and don't clip words.
|
||||
set forward_format='Fwd: %s' # make the forwarding subject line look more like other clients.
|
||||
set forward_decode
|
||||
set reply_to
|
||||
set reverse_name
|
||||
set include
|
||||
set forward_quote
|
||||
|
||||
# Crypto stuff
|
||||
set pgp_decode_command="gpg %?p?--passphrase-fd 0? --no-verbose --batch --output - %f"
|
||||
set pgp_verify_command="gpg --no-verbose --batch --output - --verify %s %f"
|
||||
set pgp_decrypt_command="gpg --passphrase-fd 0 --no-verbose --batch --output - %f"
|
||||
set pgp_sign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --detach-sign --textmode %?a?-u %a? %f"
|
||||
set pgp_clearsign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --textmode --clearsign %?a?-u %a? %f"
|
||||
set pgp_encrypt_only_command="pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust --encrypt-to 0x49CF25C6 -- -r %r -- %f"
|
||||
set pgp_encrypt_sign_command="pgpewrap gpg --passphrase-fd 0 --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust --encrypt-to 0x49CF25C6 -- -r %r -- %f"
|
||||
set pgp_import_command="gpg --no-verbose --import -v %f"
|
||||
set pgp_export_command="gpg --no-verbose --export --armor %r"
|
||||
set pgp_verify_key_command="gpg --no-verbose --batch --fingerprint --check-sigs %r"
|
||||
set pgp_list_pubring_command="gpg --no-verbose --batch --with-colons --list-keys %r"
|
||||
set pgp_list_secring_command="gpg --no-verbose --batch --with-colons --list-secret-keys %r"
|
||||
|
||||
# Sign emails as me.
|
||||
set pgp_sign_as=0x49CF25C6
|
||||
|
||||
# Automatically sign emails.
|
||||
#set crypt_autosign
|
||||
|
||||
# Reply to signed emails with a signed email.
|
||||
set crypt_replysign
|
||||
|
||||
# Encrypt and sign replies to signed emails.
|
||||
# set crypt_replyencrypt=yes
|
||||
|
||||
# Encrypt and sign replies to encrypted emails.
|
||||
set crypt_replysignencrypted=yes
|
||||
|
||||
# Time out of GPG after xx seconds.
|
||||
set pgp_timeout=28800
|
||||
|
||||
# Automatically verify signatures.
|
||||
set crypt_verify_sig=yes
|
5
offlineimap/.offlineimap.py
Normal file
5
offlineimap/.offlineimap.py
Normal file
|
@ -0,0 +1,5 @@
|
|||
#! /usr/bin/env python2
|
||||
from subprocess import check_output
|
||||
|
||||
def get_pass():
|
||||
return check_output("~/bin/pw.sh IMAP_PASSWORD", shell=True).strip("\n")
|
37
offlineimap/.offlineimaprc_fastmail
Normal file
37
offlineimap/.offlineimaprc_fastmail
Normal file
|
@ -0,0 +1,37 @@
|
|||
[general]
|
||||
accounts = Personal
|
||||
ui = basic
|
||||
#ui = blinkenlights
|
||||
maxsynaccounts = 1
|
||||
pythonfile = ~/.offlineimap.py
|
||||
|
||||
[mbnames]
|
||||
enabled = yes
|
||||
filename = ~/.mutt/mailboxes
|
||||
header = "mailboxes "
|
||||
peritem = "+%(foldername)s"
|
||||
sep = " "
|
||||
footer = "\n"
|
||||
|
||||
[Account Personal]
|
||||
localrepository = Local
|
||||
remoterepository = Remote
|
||||
postsynchook = notmuch new
|
||||
# autorefresh = 1
|
||||
# quick = 10
|
||||
|
||||
[Repository Local]
|
||||
|
||||
type = Maildir
|
||||
localfolders = ~/.maildir
|
||||
sep = .
|
||||
restoreatime = no
|
||||
|
||||
[Repository Remote]
|
||||
type = IMAP
|
||||
remotehost = imap.fastmail.com
|
||||
remoteuser = andrew@amdavidson.com
|
||||
remotepasseval = get_pass()
|
||||
maxconnections = 5
|
||||
keepalive = 60
|
||||
# holdconnectionopen = yes
|
9
offlineimap/bin/fastmail.sh
Executable file
9
offlineimap/bin/fastmail.sh
Executable file
|
@ -0,0 +1,9 @@
|
|||
#!/bin/bash
|
||||
|
||||
if [[ "$OSTYPE" == "linux-gnu" ]]; then
|
||||
/usr/bin/offlineimap -k Repository_Remote:sslcacertfile=/etc/ssl/certs/ca-certificates.crt -c $HOME/.offlineimaprc_fastmail
|
||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
/usr/local/bin/offlineimap -k Repository_Remote:sslcacertfile=/usr/local/etc/openssl/cert.pem -c $HOME/.offlineimaprc_fastmail
|
||||
else
|
||||
echo "Offlineimap not configured to access Fastmail on $OSTYPE"
|
||||
fi
|
44
tmux/.tmux.conf
Normal file
44
tmux/.tmux.conf
Normal file
|
@ -0,0 +1,44 @@
|
|||
# Support 256 colors rather than 16.
|
||||
#set -g default-terminal "screen-256color"
|
||||
|
||||
# True color support in tmux
|
||||
set -g default-terminal "xterm-256color"
|
||||
set-option -ga terminal-overrides ",xterm-256color:Tc"
|
||||
|
||||
# Big history.
|
||||
set -g history-limit 10000
|
||||
|
||||
# Make the status bar pretty.
|
||||
set -g status-bg colour16
|
||||
set -g status-fg colour61
|
||||
set-window-option -g window-status-current-bg colour236
|
||||
set-window-option -g window-status-current-fg colour141
|
||||
|
||||
# Add some info to the status bar
|
||||
set -g status-right "#H | up #(uptime | awk '{print $3}' | sed 's/,//') days | #(~/bin/tmux-free-memory.sh) free"
|
||||
|
||||
# Auto-set window title
|
||||
setw -g automatic-rename
|
||||
|
||||
# Make mouse useful
|
||||
set -g mouse on
|
||||
|
||||
# Add vim keys to navigate
|
||||
set-window-option -g mode-keys vi
|
||||
|
||||
# Add key to reload ~/.tmux.conf
|
||||
bind r source-file ~/.tmux.conf
|
||||
|
||||
# More logical (to me) split keys.
|
||||
bind - split-window -p 38 -v
|
||||
bind | split-window -p 38 -h
|
||||
|
||||
# Keybindings for resizing panes that don't collide with OSX bindings
|
||||
bind -r C-h resize-pane -L
|
||||
bind -r C-j resize-pane -D
|
||||
bind -r C-k resize-pane -U
|
||||
bind -r C-l resize-pane -R
|
||||
|
||||
# Start a new session if one doesn't exist.
|
||||
new-session
|
||||
|
10
tmux/bin/tmux-free-memory.sh
Executable file
10
tmux/bin/tmux-free-memory.sh
Executable file
|
@ -0,0 +1,10 @@
|
|||
#!/bin/bash
|
||||
|
||||
|
||||
if [[ "$OSTYPE" == "linux-gnu" ]]; then
|
||||
free -m | head -n 2 | tail -n 1 | awk '{print $7}'
|
||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
vm_stat | awk 'BEGIN{FS="[:]+"}{if(NR<7&&NR>1)sum+=$2; if(NR==2||NR==4||NR==5)free+=$2} END{printf "%3d%%\n",100*((sum - free)/sum)}'
|
||||
else
|
||||
echo "?"
|
||||
fi
|
3
vim/.vim/.netrwhist~
Normal file
3
vim/.vim/.netrwhist~
Normal file
|
@ -0,0 +1,3 @@
|
|||
let g:netrw_dirhistmax =10
|
||||
let g:netrw_dirhist_cnt =1
|
||||
let g:netrw_dirhist_1='/home/amdavidson/.dotfiles'
|
2504
vim/.vim/autoload/plug.vim
Normal file
2504
vim/.vim/autoload/plug.vim
Normal file
File diff suppressed because it is too large
Load diff
164
vim/.vimrc
Normal file
164
vim/.vimrc
Normal file
|
@ -0,0 +1,164 @@
|
|||
" ==================== Plugins ====================
|
||||
call plug#begin()
|
||||
|
||||
" Airline
|
||||
Plug 'bling/vim-airline'
|
||||
|
||||
" Git integration
|
||||
Plug 'tpope/vim-fugitive'
|
||||
Plug 'airblade/vim-gitgutter'
|
||||
|
||||
" Dracula theme
|
||||
Plug 'dracula/vim'
|
||||
|
||||
" Sayonara
|
||||
Plug 'mhinz/vim-sayonara', { 'on': 'Sayonara' }
|
||||
|
||||
" Go support for Vim
|
||||
Plug 'fatih/vim-go', { 'do': ':GoInstallBinaries' }
|
||||
|
||||
call plug#end()
|
||||
|
||||
" ==================== Vim Settings ====================
|
||||
set number " show line numbers
|
||||
set backspace=indent,eol,start " backspace all the things
|
||||
set showcmd " show the command while typing it
|
||||
set noswapfile " no swap files needed
|
||||
set nobackup " backup files are clutter
|
||||
set nowritebackup
|
||||
set splitright " configure default splits
|
||||
set splitbelow
|
||||
set encoding=utf-8 " default to utf-8 encoding
|
||||
set autowrite " save before :next etc.
|
||||
set autoread " automatically pull in changes
|
||||
set hidden " allow buffers to be hidden with changes
|
||||
au FocusLost * :wa " save when focus is lost
|
||||
set incsearch " show matches while typing search string
|
||||
set hlsearch " highlight all search matches
|
||||
set ignorecase " search case insensitively
|
||||
set smartcase " use case when the search string has uppercase
|
||||
set ttyfast " assume we can handle faster refreshing
|
||||
set lazyredraw " do not redraw when running functions
|
||||
set scrolloff=5 " start scrolling 3 lines before bottom
|
||||
set showmatch " quickly show the matching bracket
|
||||
set autoindent " self explanatory
|
||||
set smarttab " setup tabs to be four spaces
|
||||
set tabstop=4 " setup tabs to be four spaces
|
||||
set shiftwidth=4 " setup tabs to be four spaces
|
||||
set expandtab " setup tabs to be four spaces
|
||||
set shiftround " use rounding when shifting tabs and spacing is uneven
|
||||
set clipboard=unnamed " use system clipboard
|
||||
|
||||
" Scroll by row rather than line so wrapped lines get included.
|
||||
nnoremap j gj
|
||||
nnoremap k gk
|
||||
|
||||
" never do this again --> :set paste <ctrl-v> :set no paste
|
||||
let &t_SI .= "\<Esc>[?2004h"
|
||||
let &t_EI .= "\<Esc>[?2004l"
|
||||
|
||||
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()
|
||||
|
||||
function! XTermPasteBegin()
|
||||
set pastetoggle=<Esc>[201~
|
||||
set paste
|
||||
return ""
|
||||
endfunction
|
||||
|
||||
" Only do this part when compiled with support for autocommands.
|
||||
if has("autocmd")
|
||||
|
||||
" Enable file type detection.
|
||||
" Use the default filetype settings, so that mail gets 'tw' set to 72,
|
||||
" 'cindent' is on in C files, etc.
|
||||
" Also load indent files, to automatically do language-dependent indenting.
|
||||
filetype plugin indent on
|
||||
|
||||
" Put these in an autocmd group, so that we can delete them easily.
|
||||
augroup vimrcEx
|
||||
au!
|
||||
|
||||
" For all text files set 'textwidth' to 78 characters.
|
||||
autocmd FileType text setlocal textwidth=78
|
||||
|
||||
" When editing a file, always jump to the last known cursor position.
|
||||
" Don't do it when the position is invalid or when inside an event handler
|
||||
" (happens when dropping a file on gvim).
|
||||
" Also don't do it when the mark is in the first line, that is the default
|
||||
" position when opening a file.
|
||||
autocmd BufReadPost *
|
||||
\ if line("'\"") > 1 && line("'\"") <= line("$") |
|
||||
\ exe "normal! g`\"" |
|
||||
\ endif
|
||||
|
||||
augroup END
|
||||
|
||||
"==================== golang ====================
|
||||
autocmd FileType go nnoremap <buffer> <F9> :! go run *.go<cr>
|
||||
|
||||
else
|
||||
endif " has("autocmd")
|
||||
|
||||
|
||||
"==================== colorscheme ====================
|
||||
let g:dracula_colorterm = 0
|
||||
colorscheme dracula
|
||||
|
||||
|
||||
" ==================== Code Folding ====================
|
||||
set nofoldenable
|
||||
set foldlevel=2
|
||||
set foldmethod=indent
|
||||
|
||||
" ==================== Functions ====================
|
||||
command! CLEAN retab | %s/\s\+$//
|
||||
|
||||
|
||||
" ==================== Keyboard Shortcuts ====================
|
||||
" set our leader key to space
|
||||
let mapleader = " "
|
||||
let g:mapleader = " "
|
||||
|
||||
" quit smartly
|
||||
nnoremap <leader>q :Sayonara<cr>
|
||||
|
||||
" Remove search highlight
|
||||
nnoremap <leader>h :noh<CR>
|
||||
|
||||
" Buffer prev/next
|
||||
nnoremap <leader>n :bnext<CR>
|
||||
nnoremap <leader>p :bprev<CR>
|
||||
|
||||
" Fast saving
|
||||
nnoremap <leader>w :w!<cr>
|
||||
|
||||
" list buffers
|
||||
nnoremap <leader>v :ls<cr>
|
||||
|
||||
" Better split switching
|
||||
map <C-j> <C-W>j
|
||||
map <C-k> <C-W>k
|
||||
map <C-h> <C-W>h
|
||||
map <C-l> <C-W>l
|
||||
|
||||
" Just go out in insert mode
|
||||
imap jk <ESC>l
|
||||
|
||||
" Do not show stupid q: window
|
||||
map q: :q
|
||||
|
||||
" Allow saving of files as sudo when I forgot to start vim using sudo.
|
||||
cmap w!! w !sudo tee > /dev/null %
|
||||
|
||||
" Go shortcuts just for .go files
|
||||
autocmd FileType go nmap <leader>b <Plug>(go-build)
|
||||
autocmd FileType go nmap <leader>r <Plug>(go-run)
|
||||
autocmd FileType go nmap <leader>t <Plug>(go-test)
|
||||
|
||||
|
||||
" ==================== Fugitive ====================
|
||||
nnoremap <leader>ga :Git add %:p<CR><CR>
|
||||
nnoremap <leader>gs :Gstatus<CR>
|
||||
nnoremap <leader>gp :Gpush<CR>
|
||||
vnoremap <leader>gb :Gblame<CR>
|
||||
|
14
zsh/.zsh/aliases.zsh
Normal file
14
zsh/.zsh/aliases.zsh
Normal file
|
@ -0,0 +1,14 @@
|
|||
# Lazy
|
||||
alias ..='cd ..'
|
||||
alias lh='ls -d .*' # show hidden files/directories only
|
||||
alias lsd='ls -aFhlG'
|
||||
alias l='ls -al'
|
||||
alias ls='ls -GFh' # Colorize output, add file type indicator, and put sizes in human readable format
|
||||
alias ll='ls -GFhl' # Same as above, but in long listing format
|
||||
|
||||
# List directories sorted by size
|
||||
alias dus='du -sckx * | sort -nr'
|
||||
|
||||
# Refresh when settings have been updated
|
||||
alias refresh='source ~/.zshrc'
|
||||
|
15
zsh/.zsh/bindkeys.zsh
Normal file
15
zsh/.zsh/bindkeys.zsh
Normal file
|
@ -0,0 +1,15 @@
|
|||
# To see the key combo you want to use just do:
|
||||
# cat > /dev/null
|
||||
# And press it
|
||||
|
||||
bindkey "^K" kill-whole-line # ctrl-k
|
||||
bindkey "^R" history-incremental-search-backward # ctrl-r
|
||||
bindkey "^A" beginning-of-line # ctrl-a
|
||||
bindkey "^E" end-of-line # ctrl-e
|
||||
bindkey "^[[B" history-search-forward # down arrow
|
||||
bindkey "^[[A" history-search-backward # up arrow
|
||||
bindkey "^D" delete-char # ctrl-d
|
||||
bindkey "^F" forward-char # ctrl-f
|
||||
bindkey "^B" backward-char # ctrl-b
|
||||
#bindkey -v # Default to standard vi bindings, regardless of editor string
|
||||
|
20
zsh/.zsh/checks.zsh
Normal file
20
zsh/.zsh/checks.zsh
Normal file
|
@ -0,0 +1,20 @@
|
|||
# checks (stolen from zshuery)
|
||||
if [[ $(uname) = 'Linux' ]]; then
|
||||
IS_LINUX=1
|
||||
fi
|
||||
|
||||
if [[ $(uname) = 'Darwin' ]]; then
|
||||
IS_MAC=1
|
||||
fi
|
||||
|
||||
if [[ -x `which brew` ]]; then
|
||||
HAS_BREW=1
|
||||
fi
|
||||
|
||||
if [[ -x `which apt-get` ]]; then
|
||||
HAS_APT=1
|
||||
fi
|
||||
|
||||
if [[ -x `which yum` ]]; then
|
||||
HAS_YUM=1
|
||||
fi
|
22
zsh/.zsh/colors.zsh
Normal file
22
zsh/.zsh/colors.zsh
Normal file
|
@ -0,0 +1,22 @@
|
|||
autoload colors; colors
|
||||
|
||||
# The variables are wrapped in \%\{\%\}. This should be the case for every
|
||||
# variable that does not contain space.
|
||||
for COLOR in RED GREEN YELLOW BLUE MAGENTA CYAN BLACK WHITE; do
|
||||
eval PR_$COLOR='%{$fg_no_bold[${(L)COLOR}]%}'
|
||||
eval PR_BOLD_$COLOR='%{$fg_bold[${(L)COLOR}]%}'
|
||||
done
|
||||
|
||||
eval RESET='$reset_color'
|
||||
export PR_RED PR_GREEN PR_YELLOW PR_BLUE PR_WHITE PR_BLACK
|
||||
export PR_BOLD_RED PR_BOLD_GREEN PR_BOLD_YELLOW PR_BOLD_BLUE
|
||||
export PR_BOLD_WHITE PR_BOLD_BLACK
|
||||
|
||||
# Clear LSCOLORS
|
||||
unset LSCOLORS
|
||||
|
||||
# Main change, you can see directories on a dark background
|
||||
#expor tLSCOLORS=gxfxcxdxbxegedabagacad
|
||||
|
||||
export CLICOLOR=1
|
||||
export LS_COLORS=exfxcxdxbxegedabagacad
|
55
zsh/.zsh/completion.zsh
Normal file
55
zsh/.zsh/completion.zsh
Normal file
|
@ -0,0 +1,55 @@
|
|||
autoload -U compinit && compinit
|
||||
zmodload -i zsh/complist
|
||||
|
||||
# man zshcontrib
|
||||
zstyle ':vcs_info:*' actionformats '%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f '
|
||||
zstyle ':vcs_info:*' formats '%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{5}]%f '
|
||||
zstyle ':vcs_info:*' enable git
|
||||
|
||||
# Enable completion caching, use rehash to clear
|
||||
zstyle ':completion::complete:*' use-cache on
|
||||
zstyle ':completion::complete:*' cache-path ~/.zsh/cache/$HOST
|
||||
|
||||
# Fallback to built in ls colors
|
||||
zstyle ':completion:*' list-colors ''
|
||||
|
||||
# Make the list prompt friendly
|
||||
zstyle ':completion:*' list-prompt '%SAt %p: Hit TAB for more, or the character to insert%s'
|
||||
|
||||
# Make the selection prompt friendly when there are a lot of choices
|
||||
zstyle ':completion:*' select-prompt '%SScrolling active: current selection at %p%s'
|
||||
|
||||
# Add simple colors to kill
|
||||
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01'
|
||||
|
||||
# list of completers to use
|
||||
#zstyle ':completion:*::::' completer _expand _complete _ignored _approximate
|
||||
zstyle ':completion:*::::' completer _complete _ignored _approximate
|
||||
|
||||
zstyle ':completion:*' menu select=1 _complete _ignored _approximate
|
||||
|
||||
# insert all expansions for expand completer
|
||||
# zstyle ':completion:*:expand:*' tag-order all-expansions
|
||||
|
||||
# match uppercase from lowercase
|
||||
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
|
||||
|
||||
# offer indexes before parameters in subscripts
|
||||
zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters
|
||||
|
||||
# formatting and messages
|
||||
zstyle ':completion:*' verbose yes
|
||||
zstyle ':completion:*:descriptions' format '%B%d%b'
|
||||
zstyle ':completion:*:messages' format '%d'
|
||||
zstyle ':completion:*:warnings' format 'No matches for: %d'
|
||||
zstyle ':completion:*:corrections' format '%B%d (errors: %e)%b'
|
||||
zstyle ':completion:*' group-name ''
|
||||
|
||||
# ignore completion functions (until the _ignored completer)
|
||||
zstyle ':completion:*:functions' ignored-patterns '_*'
|
||||
zstyle ':completion:*:scp:*' tag-order files users 'hosts:-host hosts:-domain:domain hosts:-ipaddr"IP\ Address *'
|
||||
zstyle ':completion:*:scp:*' group-order files all-files users hosts-domain hosts-host hosts-ipaddr
|
||||
zstyle ':completion:*:ssh:*' tag-order users 'hosts:-host hosts:-domain:domain hosts:-ipaddr"IP\ Address *'
|
||||
zstyle ':completion:*:ssh:*' group-order hosts-domain hosts-host users hosts-ipaddr
|
||||
zstyle '*' single-ignored show
|
||||
|
17
zsh/.zsh/exports.zsh
Normal file
17
zsh/.zsh/exports.zsh
Normal file
|
@ -0,0 +1,17 @@
|
|||
|
||||
# Set PATH
|
||||
export PATH=~/bin:~/.local/bin:/usr/local/bin:/usr/local/sbin:$PATH
|
||||
|
||||
# Setup terminal environment
|
||||
export TERM=xterm-256color
|
||||
export CLICOLOR=1
|
||||
export LSCOLORS=Gxfxcxdxbxegedabagacad
|
||||
|
||||
# Enable grep colors
|
||||
export GREP_COLOR='3;33'
|
||||
|
||||
# VIM everything
|
||||
export EDITOR='vim'
|
||||
|
||||
# Fix gnupg
|
||||
export GPG_TTY=$(tty)
|
56
zsh/.zsh/functions.zsh
Normal file
56
zsh/.zsh/functions.zsh
Normal file
|
@ -0,0 +1,56 @@
|
|||
# Truncate working directory
|
||||
function truncated_pwd() {
|
||||
n=$1
|
||||
path=`collapse_pwd`
|
||||
|
||||
dirs=("${(s:/:)path}")
|
||||
dirs_length=$#dirs
|
||||
|
||||
if [[ $dirs_length -ge $n ]]; then
|
||||
((max=dirs_length - n))
|
||||
for (( i = 1; i <= $max; i++ )); do
|
||||
step="$dirs[$i]"
|
||||
if [[ -z $step ]]; then
|
||||
continue
|
||||
fi
|
||||
if [[ $stem =~ "^\." ]]; then
|
||||
dirs[$i]=$step[0,2]
|
||||
else
|
||||
dirs[$i]=$step[0,1]
|
||||
fi
|
||||
done
|
||||
fi
|
||||
echo ${(j:/:)dirs}
|
||||
}
|
||||
|
||||
function collapse_pwd {
|
||||
echo $(pwd | sed -e "s,^$HOME,~,")
|
||||
}
|
||||
|
||||
# Extract anything
|
||||
extract() {
|
||||
if [[ -f $1 ]]; then
|
||||
case $1 in
|
||||
*.tar.bz2) tar xvjf $1;;
|
||||
*.tar.gz) tar xvzf $1;;
|
||||
*.tar.xz) tar xvJf $1;;
|
||||
*.tar.lzma) tar --lzma xvf $1;;
|
||||
*.bz2) bunzip $1;;
|
||||
*.rar) unrar $1;;
|
||||
*.gz) gunzip $1;;
|
||||
*.tar) tar xvf $1;;
|
||||
*.tbz2) tar xvjf $1;;
|
||||
*.tgz) tar xvzf $1;;
|
||||
*.zip) unzip $1;;
|
||||
*.Z) uncompress $1;;
|
||||
*.7z) 7z x $1;;
|
||||
*.dmg) hdiutul mount $1;; # mount OS X disk images
|
||||
*) echo "'$1' cannot be extracted via >ex<";;
|
||||
esac
|
||||
else
|
||||
echo "'$1' is not a valid file"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
20
zsh/.zsh/hooks.zsh
Normal file
20
zsh/.zsh/hooks.zsh
Normal file
|
@ -0,0 +1,20 @@
|
|||
function precmd {
|
||||
# vcs_info
|
||||
# Put the string "hostname::/full/directory/path" in the title bar:
|
||||
echo -ne "\e]2;$PWD\a"
|
||||
|
||||
# Put the parentdir/currentdir in the tab
|
||||
echo -ne "\e]1;$PWD:h:t/$PWD:t\a"
|
||||
}
|
||||
|
||||
function set_running_app {
|
||||
printf "\e]1; $PWD:t:$(history $HISTCMD | cut -b7- ) \a"
|
||||
}
|
||||
|
||||
function preexec {
|
||||
set_running_app
|
||||
}
|
||||
|
||||
function postexec {
|
||||
set_running_app
|
||||
}
|
114
zsh/.zsh/options.zsh
Normal file
114
zsh/.zsh/options.zsh
Normal file
|
@ -0,0 +1,114 @@
|
|||
|
||||
### Basics
|
||||
|
||||
# Do not beep on errors
|
||||
setopt no_beep
|
||||
|
||||
# allow comments in interactive shells
|
||||
setopt interactive_comments
|
||||
|
||||
|
||||
|
||||
### History
|
||||
HISTSIZE=10000
|
||||
SAVEHIST=9000
|
||||
HISTFILE=~/.zsh_history
|
||||
|
||||
|
||||
|
||||
### Directories
|
||||
|
||||
# auto change directories if you type a directory with no cd
|
||||
setopt auto_cd
|
||||
|
||||
# do not push multiple copies of the same directory onto the directory stack
|
||||
setopt pushd_ignore_dups
|
||||
|
||||
|
||||
|
||||
### Expansion and Globbing
|
||||
|
||||
# treat #, ~, and ^ as part of patterns for file name generation
|
||||
setopt extended_glob
|
||||
|
||||
|
||||
|
||||
### History
|
||||
|
||||
# allow multiple terminal sessions but append to a unified history
|
||||
# setopt append_history
|
||||
|
||||
# save timestamp and duration to history
|
||||
setopt extended_history
|
||||
|
||||
# save commands as they are typed, don't wait for shell exit
|
||||
# setopt inc_append_history
|
||||
|
||||
# Delete oldest dupes first
|
||||
setopt hist_expire_dups_first
|
||||
|
||||
# Do not add dupes to history
|
||||
# setopt hist_ignore_dups
|
||||
|
||||
# Ignore commands that begin with a space
|
||||
setopt hist_ignore_space
|
||||
|
||||
# Do not show dupes twice in history search
|
||||
setopt hist_find_no_dups
|
||||
|
||||
# Remove extra blanks from commands being added to history
|
||||
setopt hist_reduce_blanks
|
||||
|
||||
# Dont execute just expand history
|
||||
setopt hist_verify
|
||||
|
||||
# imports new commands and appends typed commands to history
|
||||
setopt share_history
|
||||
|
||||
|
||||
|
||||
### Completion
|
||||
|
||||
# When completing from the middle of the word, move cursor to end of word
|
||||
setopt always_to_end
|
||||
|
||||
# Show cmopletion menu on multiple tab presses
|
||||
setopt auto_menu
|
||||
|
||||
# any parameter that is set to the absolute name of a directory immediately
|
||||
# becomes a name for that directory
|
||||
# setopt auto_name_dirs
|
||||
|
||||
# Allow completion from within a word/phrase
|
||||
setopt complete_in_word
|
||||
|
||||
# Do not autoselect the first completion entry
|
||||
unsetopt menu_complete
|
||||
|
||||
|
||||
|
||||
### Correction
|
||||
|
||||
# Enable spelling correction for commands
|
||||
setopt correct
|
||||
|
||||
# Enable spelling correciton for arguments
|
||||
setopt correctall
|
||||
|
||||
|
||||
|
||||
### Prompt
|
||||
|
||||
# Enable parameter expansion, command substitution, and arithmetic expansion
|
||||
setopt prompt_subst
|
||||
|
||||
# Only show rprompt on current prompt
|
||||
setopt transient_rprompt
|
||||
|
||||
|
||||
|
||||
### Scripts and Functions
|
||||
|
||||
# Perform implicit tees or cats when multiple redirections are attempted
|
||||
setopt multios
|
||||
|
36
zsh/.zsh/prompt.zsh
Normal file
36
zsh/.zsh/prompt.zsh
Normal file
|
@ -0,0 +1,36 @@
|
|||
#setopt promptsubst
|
||||
autoload -U colors && colors # Enable colors in prompt
|
||||
|
||||
# Show Git branch/tag, or name-rev if on detached head
|
||||
function git_branch {
|
||||
local FULL_BRANCH="$(git symbolic-ref -q HEAD 2>/dev/null || git name-rev --name-only --no-undefined --always HEAD 2>/dev/null)"
|
||||
local SHORT_BRANCH="$(echo $FULL_BRANCH | sed 's/refs\/heads\///')"
|
||||
echo " %F{blue}$SHORT_BRANCH%f"
|
||||
}
|
||||
|
||||
function git_is_ahead {
|
||||
local NUM_AHEAD="$(git log --oneline @{u}.. 2>/dev/null | wc -l | tr -d ' ')"
|
||||
if [ "$NUM_AHEAD" -gt 0 ]; then
|
||||
echo " %F{red}↑%f"
|
||||
fi
|
||||
}
|
||||
|
||||
function git_is_behind {
|
||||
local NUM_BEHIND="$(git log --oneline ..@{u} 2>/dev/null | wc -l | tr -d ' ' )"
|
||||
if [ "$NUM_BEHIND" -gt 0 ]; then
|
||||
echo " %F{blue}↓%f"
|
||||
fi
|
||||
}
|
||||
|
||||
function git_unstaged {
|
||||
local CHANGED=$(git status --porcelain --ignore-submodule -unormal 2>/dev/null | wc -l)
|
||||
if [ $CHANGED -gt 0 ]; then
|
||||
echo -e "%F{yellow}~%f\c"
|
||||
fi
|
||||
}
|
||||
|
||||
function current_pwd {
|
||||
echo $(pwd | sed -e "s,^$HOME,~,")
|
||||
}
|
||||
|
||||
PROMPT='${PR_BOLD_YELLOW}$(truncated_pwd 3)$(git_branch)%{$reset_color%}$(git_unstaged)$(git_is_ahead)$(git_is_behind) %(?.%F{magenta}.%F{red})❯%f '
|
18
zsh/.zshrc
Normal file
18
zsh/.zshrc
Normal file
|
@ -0,0 +1,18 @@
|
|||
if [[ $TERM = 'dumb' ]]; then
|
||||
export PS1='dumbterm> '
|
||||
else
|
||||
source ~/.zsh/checks.zsh
|
||||
source ~/.zsh/colors.zsh
|
||||
source ~/.zsh/options.zsh
|
||||
source ~/.zsh/exports.zsh
|
||||
source ~/.zsh/prompt.zsh
|
||||
source ~/.zsh/completion.zsh
|
||||
source ~/.zsh/aliases.zsh
|
||||
source ~/.zsh/bindkeys.zsh
|
||||
source ~/.zsh/functions.zsh
|
||||
source ~/.zsh/hooks.zsh
|
||||
fi
|
||||
|
||||
if [ -e ~/.zshrc_local ]; then
|
||||
source ~/.zshrc_local
|
||||
fi
|
Loading…
Reference in a new issue