From e42c989d6def401dd893a73cef5d5deac8b42778 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 16 Nov 2018 01:34:16 -0500 Subject: prefer xdg basedir specification directories --- config/git/config | 73 +++++ config/git/ignore | 9 + config/i3/browser-workspace.json | 16 + config/i3/config | 77 +++++ config/i3/signal-workspace.json | 16 + config/i3/terminal-workspace.json | 109 +++++++ config/i3status/config | 44 +++ config/mpd/mpd.conf | 5 + config/msmtp/config | 11 + config/ncmpcpp/bindings | 591 ++++++++++++++++++++++++++++++++++ config/notmuch/config | 18 ++ config/offlineimap/config | 34 ++ config/offlineimap/pass.py | 5 + config/sh/aliases | 42 +++ config/sh/cdhist.sh | 174 ++++++++++ config/sh/env | 25 ++ config/sh/functions | 20 ++ config/sh/fzf | 1 + config/tex/jesse.sty | 14 + config/tex/jesse_essay.sty | 14 + config/tex/jesse_letter.sty | 3 + config/tex/jesse_macros.sty | 104 ++++++ config/tex/jesse_resume.sty | 111 +++++++ config/tex/sarah_resume.sty | 120 +++++++ config/tig/config | 4 + config/zsh/local-completions/hush/_sv | 10 + config/zsh/zsh-autosuggestions | 1 + config/zsh/zsh-completions | 1 + config/zsh/zsh-syntax-highlighting | 1 + 29 files changed, 1653 insertions(+) create mode 100644 config/git/config create mode 100644 config/git/ignore create mode 100644 config/i3/browser-workspace.json create mode 100644 config/i3/config create mode 100644 config/i3/signal-workspace.json create mode 100644 config/i3/terminal-workspace.json create mode 100644 config/i3status/config create mode 100644 config/mpd/mpd.conf create mode 100644 config/msmtp/config create mode 100644 config/ncmpcpp/bindings create mode 100644 config/notmuch/config create mode 100644 config/offlineimap/config create mode 100644 config/offlineimap/pass.py create mode 100644 config/sh/aliases create mode 100644 config/sh/cdhist.sh create mode 100644 config/sh/env create mode 100644 config/sh/functions create mode 160000 config/sh/fzf create mode 100644 config/tex/jesse.sty create mode 100644 config/tex/jesse_essay.sty create mode 100644 config/tex/jesse_letter.sty create mode 100644 config/tex/jesse_macros.sty create mode 100644 config/tex/jesse_resume.sty create mode 100644 config/tex/sarah_resume.sty create mode 100644 config/tig/config create mode 100644 config/zsh/local-completions/hush/_sv create mode 160000 config/zsh/zsh-autosuggestions create mode 160000 config/zsh/zsh-completions create mode 160000 config/zsh/zsh-syntax-highlighting (limited to 'config') diff --git a/config/git/config b/config/git/config new file mode 100644 index 0000000..3a67355 --- /dev/null +++ b/config/git/config @@ -0,0 +1,73 @@ +[user] + email = doy@tozt.net + name = Jesse Luehrs +[alias] + a = !git amend + aliases = !git config --get-regexp 'alias.*' | perl -nle'/^alias\\.([^ ]*) (.*)/ && printf \"%-15s = %s\\n\", $1, $2' + alias = "!f() { local name=$1; shift; git config --global alias.$name \"$*\"; }; f" + amend = !git add -p && git commit --amend + bd = "!f() { git choose-branch | head -n1 | xargs --no-run-if-empty git branch -D; }; f" + bda = "!f() { git branch --merged master --format='%(refname:short)' | grep -v '^master$' | xargs -r git branch -d; }; f" + blame-stats = !~/.bin/git/git-blame-stats + br = for-each-ref --sort=committerdate refs/heads/ --format='%(align:30,left)%(HEAD) %(refname:short)%(end) %(color:magenta)(%(committerdate:relative))' + choose-branch = "!f() { git for-each-ref --sort=-committerdate refs/heads/ --format='%(refname:short)' | fzf --height 40% --no-sort --preview='git show {} -q --format=medium'; }; f" + c = "!f() { git choose-branch | head -n1 | xargs --no-run-if-empty git co; }; f" + cc = cherry-pick + co = checkout + diff-branch = "!f() { local branch=${1:-HEAD}; git diff $(git merge-base master $branch) $branch; }; f" + ff = merge --ff-only + file-size = !~/.bin/git/git-file-size + fixup = "!f() { git record --fixup \"$@\"; }; f" + gc-aggressive = "!f() { git repack -Abd --window=250 --depth=250 --window-memory=1g && git prune --expire \"1 day ago\" && rm -f .git/gc.log && git gc; }; f" + imerge = !~/.bin/git/git-imerge + info = remote show -n origin + lg = log --graph --pretty=format:'%Cred%h%Creset%C(yellow)%d%Creset %C(bold blue)%aN%Creset %C(magenta)(%ar)%Creset%n%s%n' --abbrev-commit --date=relative --stat=72 + m = "!f() { git co master && git pull && EDITOR=true git merge --no-ff \"$@\" && git bda; }; f" + prune-all = !git remote | xargs -n 1 git remote prune + pushall = "!f() { for repo in origin github; do git push $repo \"$@\"; done; }; f" + record = !git add -p && git commit --verbose + refix = "!f() { env EDITOR=true git rebase -i \"$@\"; }; f" + re = rebase -i @{u} + r = !git record + ri = rebase -i + rv = checkout -p + stashed = stash list --pretty=format:'%<(10)%gd: %Cred%h%Creset %Cgreen(%ar)%Creset%n %s' + st = status -sb + track = "!f() { local name=$(git name-rev --name-only @); git branch --set-upstream-to=origin/$name $name; }; f" +[github] + user = doy +[color] + ui = auto +[core] + excludesfile = ~/.config/git/ignore +[push] + default = current +[branch] + autosetuprebase = always +[merge] + conflictstyle = diff3 +[rebase] + autosquash = true + autostash = true +[help] + autocorrect = 5 +[diff] + mnemonicprefix = true +[advice] + pushUpdateRejected = false + statusHints = false + commitBeforeMerge = false + resolveConflict = false + detachedHead = false +[rerere] + enabled = true +[pager] + log = diff-highlight | less + show = diff-highlight | less + diff = diff-highlight | less +[fetch] + prune = true +[include] + path = config.private + +; vim:ft=gitconfig: diff --git a/config/git/ignore b/config/git/ignore new file mode 100644 index 0000000..4491917 --- /dev/null +++ b/config/git/ignore @@ -0,0 +1,9 @@ +# ignore vim swap files +.*.sw? +# openoffice lock files +.~lock.* +# prove state files +.prove +# ctags files +tags +tags-ja diff --git a/config/i3/browser-workspace.json b/config/i3/browser-workspace.json new file mode 100644 index 0000000..eea123a --- /dev/null +++ b/config/i3/browser-workspace.json @@ -0,0 +1,16 @@ +{ + "border": "pixel", + "floating": "auto_off", + "geometry": { + "x": 0, + "y": 0 + }, + "name": "Firefox", + "percent": 1, + "swallows": [ + { + "class": "^Firefox$" + } + ], + "type": "con" +} diff --git a/config/i3/config b/config/i3/config new file mode 100644 index 0000000..312df8e --- /dev/null +++ b/config/i3/config @@ -0,0 +1,77 @@ +set $mod Mod4 + +default_border pixel 1 +hide_edge_borders smart +client.focused #aaaaaa #aaaaaa #ffffff #ffffff +client.focused_inactive #000000 #000000 #ffffff #888888 +client.unfocused #000000 #000000 #ffffff #888888 +client.urgent #ff0000 #ff0000 #ffffff #ff0000 + +floating_modifier $mod +floating_minimum_size 1 x 1 +floating_maximum_size -1 x -1 + +focus_wrapping no + +for_window [instance="urxvt-kuake"] floating enable +for_window [instance="urxvt-kuake"] sticky enable +for_window [instance="urxvt-kuake"] move absolute position 0 px 0 px + +for_window [class="Steam"] floating enable + +bindsym $mod+q kill + +bindsym $mod+h focus left +bindsym $mod+j focus down +bindsym $mod+k focus up +bindsym $mod+l focus right + +bindsym $mod+Shift+h move left +bindsym $mod+Shift+j move down +bindsym $mod+Shift+k move up +bindsym $mod+Shift+l move right + +bindsym $mod+Mod1+h split h +bindsym $mod+Mod1+v split v + +bindsym $mod+f fullscreen + +bindsym $mod+Shift+space floating toggle +bindsym $mod+space focus mode_toggle + +bindsym $mod+bracketleft exec i3-switch-workspace prev +bindsym $mod+bracketright exec i3-switch-workspace next + +bindsym $mod+1 workspace 1 +bindsym $mod+2 workspace 2 +bindsym $mod+3 workspace 3 +bindsym $mod+4 workspace 4 +bindsym $mod+5 workspace 5 +bindsym $mod+6 workspace 6 +bindsym $mod+7 workspace 7 +bindsym $mod+8 workspace 8 +bindsym $mod+9 workspace 9 + +bindsym $mod+Shift+1 move container to workspace 1 +bindsym $mod+Shift+2 move container to workspace 2 +bindsym $mod+Shift+3 move container to workspace 3 +bindsym $mod+Shift+4 move container to workspace 4 +bindsym $mod+Shift+5 move container to workspace 5 +bindsym $mod+Shift+6 move container to workspace 6 +bindsym $mod+Shift+7 move container to workspace 7 +bindsym $mod+Shift+8 move container to workspace 8 +bindsym $mod+Shift+9 move container to workspace 9 + +bindsym $mod+c reload +bindsym $mod+Shift+c restart +bindsym $mod+Shift+q 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'" + +bar { + tray_output primary + status_command status + font xft:DejaVuSansMono 10 +} + +exec --no-startup-id "i3-msg 'workspace 6; append_layout .config/i3/browser-workspace.json; exec firefox'" +exec --no-startup-id "i3-msg 'workspace 7; append_layout .config/i3/signal-workspace.json; exec signal-desktop'" +exec --no-startup-id "i3-msg 'workspace 5; append_layout .config/i3/terminal-workspace.json; exec alacritty; exec alacritty; exec alacritty; exec alacritty; exec alacritty'" diff --git a/config/i3/signal-workspace.json b/config/i3/signal-workspace.json new file mode 100644 index 0000000..acac998 --- /dev/null +++ b/config/i3/signal-workspace.json @@ -0,0 +1,16 @@ +{ + "border": "pixel", + "floating": "auto_off", + "geometry": { + "x": 0, + "y": 0 + }, + "name": "Signal", + "percent": 1, + "swallows": [ + { + "class": "^Signal$" + } + ], + "type": "con" +} diff --git a/config/i3/terminal-workspace.json b/config/i3/terminal-workspace.json new file mode 100644 index 0000000..8275b18 --- /dev/null +++ b/config/i3/terminal-workspace.json @@ -0,0 +1,109 @@ +{ + "border": "pixel", + "floating": "auto_off", + "layout": "splitv", + "percent": 0.295, + "type": "con", + "nodes": [ + { + "border": "pixel", + "floating": "auto_off", + "geometry": { + "height": 340, + "width": 564, + "x": 0, + "y": 0 + }, + "name": "main:0:zsh - \"doy@lance:~\"", + "percent": 0.333333333333333, + "swallows": [ + { + "instance": "^Alacritty$" + } + ], + "type": "con" + }, + { + "border": "pixel", + "floating": "auto_off", + "geometry": { + "height": 340, + "width": 564, + "x": 0, + "y": 0 + }, + "name": "work:0:zsh - \"doy@lance:~/work\"", + "percent": 0.333333333333333, + "swallows": [ + { + "instance": "^Alacritty$" + } + ], + "type": "con" + }, + { + "border": "pixel", + "floating": "auto_off", + "geometry": { + "height": 340, + "width": 564, + "x": 0, + "y": 0 + }, + "name": "misc:0:zsh - \"doy@lance:~\"", + "percent": 0.333333333333333, + "swallows": [ + { + "instance": "^Alacritty$" + } + ], + "type": "con" + } + ] +} + +{ + "border": "pixel", + "floating": "auto_off", + "layout": "splitv", + "percent": 0.705, + "type": "con", + "nodes": [ + { + "border": "pixel", + "floating": "auto_off", + "geometry": { + "height": 340, + "width": 564, + "x": 0, + "y": 0 + }, + "name": "chat:0:WeeChat 0.4.3 - \"WeeChat 0.4.3\"", + "percent": 0.5, + "swallows": [ + { + "instance": "^Alacritty$" + } + ], + "type": "con" + }, + { + "border": "pixel", + "floating": "auto_off", + "geometry": { + "height": 340, + "width": 564, + "x": 0, + "y": 0 + }, + "name": "docs:0:zsh - \"doy@lance:~\"", + "percent": 0.5, + "swallows": [ + { + "instance": "^Alacritty$" + } + ], + "type": "con" + } + ] +} diff --git a/config/i3status/config b/config/i3status/config new file mode 100644 index 0000000..4c2bcdd --- /dev/null +++ b/config/i3status/config @@ -0,0 +1,44 @@ +general { + output_format = i3bar + interval = 1 +} + +order += "cpu_usage" +order += "wireless wlp3s0" +order += "ethernet enp0s25" +order += "battery 0" +order += "battery 1" +order += "time" +order += "load" + +cpu_usage { + format = "CPU: %usage" +} + +wireless wlp3s0 { + format_up = "wlp3s0: (%essid: %quality)" + format_down = "wlp3s0" +} + +ethernet enp0s25 { + format_up = "enp0s25: (%speed)" + format_down = "enp0s25" +} + +battery 0 { + last_full_capacity = true + format = "%status %percentage (%remaining %consumption)" +} + +battery 1 { + last_full_capacity = true + format = "%status %percentage (%remaining %consumption)" +} + +time { + format = "%a %b %d %H:%M:%S" +} + +load { + format = "%1min" +} diff --git a/config/mpd/mpd.conf b/config/mpd/mpd.conf new file mode 100644 index 0000000..e30c2fc --- /dev/null +++ b/config/mpd/mpd.conf @@ -0,0 +1,5 @@ +db_file "~/.cache/mpd/mpd.db" +state_file "~/.cache/mpd/mpd.state" +playlist_directory "~/.config/mpd/playlists" +music_directory "~/media/audio/copy" +bind_to_address "localhost" diff --git a/config/msmtp/config b/config/msmtp/config new file mode 100644 index 0000000..541aa90 --- /dev/null +++ b/config/msmtp/config @@ -0,0 +1,11 @@ +defaults +auth on +tls on +tls_starttls off + +account default +host mail.tozt.net +from doy@tozt.net +user doy +passwordeval pass "mail/mail.tozt.net/doy" +tls_trust_file /etc/ssl/certs/ca-certificates.crt diff --git a/config/ncmpcpp/bindings b/config/ncmpcpp/bindings new file mode 100644 index 0000000..20a0259 --- /dev/null +++ b/config/ncmpcpp/bindings @@ -0,0 +1,591 @@ +############################################################## +## This is the example bindings file. Copy it to ## +## ~/.ncmpcpp/bindings or $XDG_CONFIG_HOME/ncmpcpp/bindings ## +## and set up your preferences ## +############################################################## +## +##### General rules ##### +## +## 1) Because each action has runtime checks whether it's +## ok to run it, a few actions can be bound to one key. +## Actions will be bound in order given in configuration +## file. When a key is pressed, first action in order +## will test itself whether it's possible to run it. If +## test succeeds, action is executed and other actions +## bound to this key are ignored. If it doesn't, next +## action in order tests itself etc. +## +## 2) It's possible to bind more that one action at once +## to a key. It can be done using the following syntax: +## +## def_key "key" +## action1 +## action2 +## ... +## +## This creates a chain of actions. When such chain is +## executed, each action in chain is run until the end of +## chain is reached or one of its actions fails to execute +## due to its requirements not being met. If multiple actions +## and/or chains are bound to the same key, they will be +## consecutively run until one of them gets fully executed. +## +## 3) When ncmpcpp starts, bindings configuration file is +## parsed and then ncmpcpp provides "missing pieces" +## of default keybindings. If you want to disable some +## bindings, there is a special action called 'dummy' +## for that purpose. Eg. if you want to disable ability +## to crop playlists, you need to put the following +## into configuration file: +## +## def_key "C" +## dummy +## +## After that ncmpcpp will not bind any default action +## to this key. +## +## 4) To let you write simple macros, the following special +## actions are provided: +## +## - push_character "character" - pushes given special +## character into input queue, so it will be immediately +## picked by ncmpcpp upon next call to readKey function. +## Accepted values: mouse, up, down, page_up, page_down, +## home, end, space, enter, insert, delete, left, right, +## tab, ctrl-a, ctrl-b, ..., ctrl-z, ctrl-[, ctrl-\\, +## ctrl-], ctrl-^, ctrl-_, f1, f2, ..., f12, backspace. +## In addition, most of these names can be prefixed with +## alt-/ctrl-/shift- to be recognized with the appropriate +## modifier key(s). +## +## - push_characters "string" - pushes given string into +## input queue. +## +## - require_runnable "action" - checks whether given action +## is runnable and fails if it isn't. This is especially +## useful when mixed with previous two functions. Consider +## the following macro definition: +## +## def_key "key" +## push_characters "custom_filter" +## apply_filter +## +## If apply_filter can't be currently run, we end up with +## sequence of characters in input queue which will be +## treated just as we typed them. This may lead to unexpected +## results (in this case 'c' will most likely clear current +## playlist, 'u' will trigger database update, 's' will stop +## playback etc.). To prevent such thing from happening, we +## need to change above definition to this one: +## +## def_key "key" +## require_runnable "apply_filter" +## push_characters "custom_filter" +## apply_filter +## +## Here, first we test whether apply_filter can be actually run +## before we stuff characters into input queue, so if condition +## is not met, whole chain is aborted and we're fine. +## +## - require_screen "screen" - checks whether given screen is +## currently active. accepted values: browser, clock, help, +## media_library, outputs, playlist, playlist_editor, +## search_engine, tag_editor, visualizer, last_fm, lyrics, +## selected_items_adder, server_info, song_info, +## sort_playlist_dialog, tiny_tag_editor. +## +## - run_external_command "command" - runs given command using +## system() function. +## +## 5) In addition to binding to a key, you can also bind actions +## or chains of actions to a command. If it comes to commands, +## syntax is very similar to defining keys. Here goes example +## definition of a command: +## +## def_command "quit" [deferred] +## stop +## quit +## +## If you execute the above command (which can be done by +## invoking action execute_command, typing 'quit' and pressing +## enter), ncmpcpp will stop the player and then quit. Note the +## presence of word 'deferred' enclosed in square brackets. It +## tells ncmpcpp to wait for confirmation (ie. pressing enter) +## after you typed quit. Instead of 'deferred', 'immediate' +## could be used. Then ncmpcpp will not wait for confirmation +## (enter) and will execute the command the moment it sees it. +## +## Note: while command chains are executed, internal environment +## update (which includes current window refresh and mpd status +## update) is not performed for performance reasons. However, it +## may be desirable to do so in some situration. Therefore it's +## possible to invoke by hand by performing 'update enviroment' +## action. +## +## Note: There is a difference between: +## +## def_key "key" +## action1 +## +## def_key "key" +## action2 +## +## and +## +## def_key "key" +## action1 +## action2 +## +## First one binds two single actions to the same key whilst +## second one defines a chain of actions. The behavior of +## these two is different and is described in (1) and (2). +## +## Note: Function def_key accepts non-ascii characters. +## +##### List of unbound actions ##### +## +## The following actions are not bound to any key/command: +## +## - set_volume +## + +def_key "j" + scroll_down + +def_key "k" + scroll_up + +def_key "J" + move_sort_order_down + +def_key "K" + move_sort_order_up + +def_key ">" + next + +def_key "<" + previous + +def_key "up" + volume_up + +def_key "down" + volume_down + +def_key "backspace" + stop + +def_key "space" + pause + +def_key "left" + seek_backward + +def_key "right" + seek_forward + +def_key "p" + previous_found_item + +def_key "n" + next_found_item + +def_key "a" + add_item_to_playlist + +def_key "d" + delete_playlist_items + +def_key "g" + move_home + +def_key "G" + move_end + +#def_key "shift-up" +# select_item +# scroll_up +# +#def_key "down" +# scroll_down +# +#def_key "shift-down" +# select_item +# scroll_down +# +#def_key "[" +# scroll_up_album +# +#def_key "]" +# scroll_down_album +# +#def_key "{" +# scroll_up_artist +# +#def_key "}" +# scroll_down_artist +# +#def_key "page_up" +# page_up +# +#def_key "page_down" +# page_down +# +#def_key "home" +# move_home +# +#def_key "end" +# move_end +# +#def_key "insert" +# select_item +# +#def_key "enter" +# enter_directory +# +#def_key "enter" +# toggle_output +# +#def_key "enter" +# run_action +# +#def_key "enter" +# play_item +# +#def_key "space" +# add_item_to_playlist +# +#def_key "space" +# toggle_lyrics_update_on_song_change +# +#def_key "space" +# toggle_visualization_type +# +#def_key "delete" +# delete_playlist_items +# +#def_key "delete" +# delete_browser_items +# +#def_key "delete" +# delete_stored_playlist +# +#def_key "right" +# next_column +# +#def_key "right" +# slave_screen +# +#def_key "right" +# volume_up +# +#def_key "+" +# volume_up +# +#def_key "left" +# previous_column +# +#def_key "left" +# master_screen +# +#def_key "left" +# volume_down +# +#def_key "-" +# volume_down +# +#def_key ":" +# execute_command +# +#def_key "tab" +# next_screen +# +#def_key "shift-tab" +# previous_screen +# +#def_key "f1" +# show_help +# +#def_key "1" +# show_playlist +# +#def_key "2" +# show_browser +# +#def_key "2" +# change_browse_mode +# +#def_key "3" +# show_search_engine +# +#def_key "3" +# reset_search_engine +# +#def_key "4" +# show_media_library +# +#def_key "4" +# toggle_media_library_columns_mode +# +#def_key "5" +# show_playlist_editor +# +#def_key "6" +# show_tag_editor +# +#def_key "7" +# show_outputs +# +#def_key "8" +# show_visualizer +# +#def_key "=" +# show_clock +# +#def_key "@" +# show_server_info +# +#def_key "s" +# stop +# +#def_key "p" +# pause +# +#def_key ">" +# next +# +#def_key "<" +# previous +# +#def_key "ctrl-h" +# jump_to_parent_directory +# +#def_key "ctrl-h" +# replay_song +# +#def_key "backspace" +# jump_to_parent_directory +# +#def_key "backspace" +# replay_song +# +#def_key "f" +# seek_forward +# +#def_key "b" +# seek_backward +# +#def_key "r" +# toggle_repeat +# +#def_key "z" +# toggle_random +# +#def_key "y" +# save_tag_changes +# +#def_key "y" +# start_searching +# +#def_key "y" +# toggle_single +# +#def_key "R" +# toggle_consume +# +#def_key "Y" +# toggle_replay_gain_mode +# +#def_key "T" +# toggle_add_mode +# +#def_key "|" +# toggle_mouse +# +#def_key "#" +# toggle_bitrate_visibility +# +#def_key "Z" +# shuffle +# +#def_key "x" +# toggle_crossfade +# +#def_key "X" +# set_crossfade +# +#def_key "u" +# update_database +# +#def_key "ctrl-s" +# sort_playlist +# +#def_key "ctrl-s" +# toggle_browser_sort_mode +# +#def_key "ctrl-s" +# toggle_media_library_sort_mode +# +#def_key "ctrl-r" +# reverse_playlist +# +#def_key "ctrl-f" +# apply_filter +# +#def_key "ctrl-_" +# select_found_items +# +#def_key "/" +# find +# +#def_key "/" +# find_item_forward +# +#def_key "?" +# find +# +#def_key "?" +# find_item_backward +# +#def_key "." +# next_found_item +# +#def_key "," +# previous_found_item +# +#def_key "w" +# toggle_find_mode +# +#def_key "e" +# edit_song +# +#def_key "e" +# edit_library_tag +# +#def_key "e" +# edit_library_album +# +#def_key "e" +# edit_directory_name +# +#def_key "e" +# edit_playlist_name +# +#def_key "e" +# edit_lyrics +# +#def_key "i" +# show_song_info +# +#def_key "I" +# show_artist_info +# +#def_key "g" +# jump_to_position_in_song +# +#def_key "l" +# show_lyrics +# +#def_key "ctrl-v" +# select_range +# +#def_key "v" +# reverse_selection +# +#def_key "V" +# remove_selection +# +#def_key "B" +# select_album +# +#def_key "a" +# add_selected_items +# +#def_key "c" +# clear_playlist +# +#def_key "c" +# clear_main_playlist +# +#def_key "C" +# crop_playlist +# +#def_key "C" +# crop_main_playlist +# +#def_key "m" +# move_sort_order_up +# +#def_key "m" +# move_selected_items_up +# +#def_key "n" +# move_sort_order_down +# +#def_key "n" +# move_selected_items_down +# +#def_key "M" +# move_selected_items_to +# +#def_key "A" +# add +# +#def_key "S" +# save_playlist +# +#def_key "o" +# jump_to_playing_song +# +#def_key "G" +# jump_to_browser +# +#def_key "G" +# jump_to_playlist_editor +# +#def_key "~" +# jump_to_media_library +# +#def_key "E" +# jump_to_tag_editor +# +#def_key "U" +# toggle_playing_song_centering +# +#def_key "P" +# toggle_display_mode +# +#def_key "\\" +# toggle_interface +# +#def_key "!" +# toggle_separators_between_albums +# +#def_key "L" +# toggle_lyrics_fetcher +# +#def_key "F" +# fetch_lyrics_in_background +# +#def_key "alt-l" +# toggle_fetching_lyrics_in_background +# +#def_key "ctrl-l" +# toggle_screen_lock +# +#def_key "`" +# toggle_library_tag_type +# +#def_key "`" +# refetch_lyrics +# +#def_key "`" +# add_random_items +# +#def_key "ctrl-p" +# set_selected_items_priority +# +#def_key "q" +# quit +# diff --git a/config/notmuch/config b/config/notmuch/config new file mode 100644 index 0000000..c194010 --- /dev/null +++ b/config/notmuch/config @@ -0,0 +1,18 @@ +[database] +path=/home/doy/Maildir + +[user] +name=Jesse Luehrs +primary_email=doy@tozt.net +other_email=doy@stripe.com;jesse.luehrs@iinteractive.com;doy@cpan.org; + +[new] +tags=unread;new; + +ignore= + +[maildir] +synchronize_flags=true + +[search] +exclude_tags=spam; diff --git a/config/offlineimap/config b/config/offlineimap/config new file mode 100644 index 0000000..fc8e496 --- /dev/null +++ b/config/offlineimap/config @@ -0,0 +1,34 @@ +[general] +accounts = main +maxsyncaccounts = 3 +status_backend = sqlite +pythonfile = ~/.config/offlineimap/pass.py +ui = basic +socktimeout = 120 + +[Account main] +localrepository = main-local +remoterepository = main-remote +autorefresh = 5 +quick = 10 +postsynchook = notmuch new + +[Repository main-local] +type = Maildir +localfolders = ~/Maildir + +[Repository main-remote] +type = IMAP +ssl = yes +sslcacertfile = /etc/ssl/certs/ca-certificates.crt +remotehost = mail.tozt.net +remoteuser = doy +remotepasseval = get_password("mail/mail.tozt.net/doy") +maxconnections = 5 +keepalive = 60 +holdconnectionopen = yes +idlefolders = ['INBOX'] +folderfilter = lambda foldername: foldername not in ['notmuch'] and not re.search('^old(\.|$)', foldername) +subscribedonly = no + +# vim:ft=dosini: diff --git a/config/offlineimap/pass.py b/config/offlineimap/pass.py new file mode 100644 index 0000000..20ca510 --- /dev/null +++ b/config/offlineimap/pass.py @@ -0,0 +1,5 @@ +from subprocess import Popen, PIPE + +def get_password(key): + (out, err) = Popen(["pass", key], stdout=PIPE).communicate() + return out.strip() diff --git a/config/sh/aliases b/config/sh/aliases new file mode 100644 index 0000000..c764f38 --- /dev/null +++ b/config/sh/aliases @@ -0,0 +1,42 @@ +# improvements to common commands {{{ +alias ls="exa --group-directories-first --time-style=long-iso --git --color-scale" +alias ll="ls -l" +alias grep="grep --color=auto" +alias rm="rm -i" +alias cp="cp -i" +alias mv="mv -i" +alias bc="bc -lq" +alias ag="ag --pager=less --smart-case" +type forkprove > /dev/null 2>&1 && alias prove="forkprove" +type tput > /dev/null 2>&1 && alias reset="tput reset" +type sudo-askpass > /dev/null 2>&1 && alias sudo="sudo -A" +# }}} +# games {{{ +alias nao="env TERM=rxvt telnet nethack.alt.org" +alias cao="env TERM=rxvt /usr/bin/ssh -C -i $HOME/.ssh/cao_key joshua@crawl.akrasiac.org" +alias cdo="ssh -C -i $HOME/.ssh/cao_key crawl@crawl.develz.org" +# }}} +# termcast {{{ +alias tc="telnet termcast.org" +# }}} +# shells {{{ +alias bishamon='ssh doy@bishamon' +alias tozt="ssh doy@tozt.net" +# }}} +# tmux sessions {{{ +alias main='tmux new -As main' +alias chat='tmux new -As chat' +alias work='tmux new -As work' +alias docs='tmux new -As docs' +alias misc='tmux new -As misc' +# }}} +# other {{{ +alias pm="find lib -type f" +alias v="vim --cmd 'let g:startify_disable_at_vimenter = 1' -c 'call feedkeys(\"t\")'" +alias g="vim --cmd 'let g:startify_disable_at_vimenter = 1' -c 'call feedkeys(\"ff\")'" +alias utc="env TZ=UTC date" +alias pd="perldoc" +alias pc="p -c" +# }}} + +# vim:ft=sh:fdm=marker diff --git a/config/sh/cdhist.sh b/config/sh/cdhist.sh new file mode 100644 index 0000000..d67d2e9 --- /dev/null +++ b/config/sh/cdhist.sh @@ -0,0 +1,174 @@ +### cdhist.sh +### +### Copyright (c) 2001 Yusuke Shinyama +### +### Permission to use, copy, modify, distribute this software and +### its documentation for any purpose is hereby granted, provided +### that existing copyright notices are retained in all copies and +### that this notice is included verbatim in any distributions. +### This software is provided ``AS IS'' without any express or implied +### warranty. +### + +### WARNING: THIS SCRIPT IS FOR GNU BASH ONLY! + +### What is this? +### +### Cdhist adds 'web-browser like history' to your bash shell. +### Every time you change the current directory it records the directory +### you can go back by simply typing a short command such as '-' or '+', +### just like clicking web-browsers's 'back' button. +### It's more convenient than using directory stacks when +### you walk around two or three directories. +### + +### Usage +### +### Just call this file from your .bashrc script. +### The following commands are added. +### +### cd [pathname] +### Go to the given directory, or your home directory if +### pathname is omitted. This overrides the original command. +### You can use it by typing '\cd'. +### +### + [n] +### 'Forward' button. Go to the n'th posterior directory in the history. +### Go to the next directory if the number is omitted. +### +### - [n] +### 'Back' button. Go to the n'th prior directory in the history. +### Go to the previous directory if the number is omitted. +### +### = [n] +### Show histories with directory numbers. +### +### A directory number shows the index to the current directory +### in the history. The current directory always has directory number 0. +### For prior directories, a negative number is given. +### For posterior directories, a positive number is given. +### +### cdhist_reset +### Clear the cd history. +### + +### Example +### +### /home/yusuke:$ . cdhist.sh +### /home/yusuke:$ cd /tmp +### /tmp:$ cd /usr/bin +### /usr/bin:$ cd /etc +### /etc:$ - +### /usr/bin:$ - +### /tmp:$ + +### /usr/bin:$ = +### -2 ~ +### -1 /tmp +### 0:/usr/bin +### 1 /etc +### /usr/bin:$ - 2 +### /home/yusuke:$ +### + + +CDHIST_CDQMAX=10 +declare -a CDHIST_CDQ + +function cdhist_reset { + CDHIST_CDQ=("$PWD") +} + +function cdhist_disp { + echo "$*" | sed "s $HOME ~ g" +} + +function cdhist_add { + CDHIST_CDQ=("$1" "${CDHIST_CDQ[@]}") +} + +function cdhist_del { + [[ -n $ZSH_VERSION ]] && setopt localoptions && setopt ksharrays + local i=${1-0} + if [ ${#CDHIST_CDQ[@]} -le 1 ]; then return; fi + for ((; i<${#CDHIST_CDQ[@]}-1; i++)); do + CDHIST_CDQ[$i]="${CDHIST_CDQ[$((i+1))]}" + done + unset CDHIST_CDQ[$i] +} + +function cdhist_rot { + [[ -n $ZSH_VERSION ]] && setopt localoptions && setopt ksharrays + local i q + declare -a q + for ((i=0; i<$1; i++)); do + q[$i]="${CDHIST_CDQ[$(((i+$1+$2)%$1))]}" + done + for ((i=0; i<$1; i++)); do + CDHIST_CDQ[$i]="${q[$i]}" + done +} + +function cdhist_cd { + [[ -n $ZSH_VERSION ]] && setopt localoptions && setopt ksharrays + local i f=0 + builtin cd "$@" || return 1 + for ((i=0; i<${#CDHIST_CDQ[@]}; i++)); do + if [ "${CDHIST_CDQ[$i]}" = "$PWD" ]; then f=1; break; fi + done + if [ $f -eq 1 ]; then + cdhist_rot $((i+1)) -1 + elif [ ${#CDHIST_CDQ[@]} -lt $CDHIST_CDQMAX ]; then + cdhist_add "$PWD" + else + cdhist_rot ${#CDHIST_CDQ[@]} -1 + CDHIST_CDQ[0]="$PWD" + fi +} + +function cdhist_history { + [[ -n $ZSH_VERSION ]] && setopt localoptions && setopt ksharrays + local i d + if [ $# -eq 0 ]; then + for ((i=${#CDHIST_CDQ[@]}-1; 0<=i; i--)); do + cdhist_disp " $i ${CDHIST_CDQ[$i]}" + done + elif [ "$1" -lt ${#CDHIST_CDQ[@]} ]; then + d=${CDHIST_CDQ[$1]} + if builtin cd "$d"; then + cdhist_rot $(($1+1)) -1 + else + cdhist_del $1 + fi + cdhist_disp "${CDHIST_CDQ[@]}" + fi +} + +function cdhist_forward { + [[ -n $ZSH_VERSION ]] && setopt localoptions && setopt ksharrays + cdhist_rot ${#CDHIST_CDQ[@]} -${1-1} + if ! builtin cd "${CDHIST_CDQ[0]}"; then + cdhist_del 0 + fi + cdhist_disp "${CDHIST_CDQ[@]}" +} + +function cdhist_back { + [[ -n $ZSH_VERSION ]] && setopt localoptions && setopt ksharrays + cdhist_rot ${#CDHIST_CDQ[@]} ${1-1} + if ! builtin cd "${CDHIST_CDQ[0]}"; then + cdhist_del 0 + fi + cdhist_disp "${CDHIST_CDQ[@]}" +} + + +if [ ${#CDHIST_CDQ[@]} = 0 ]; then cdhist_reset; fi + + +### Aliases +### + +function cd { cdhist_cd "$@"; } +function + { cdhist_forward "$@"; } +function - { cdhist_back "$@"; } +function = { cdhist_history "$@"; } diff --git a/config/sh/env b/config/sh/env new file mode 100644 index 0000000..218ddde --- /dev/null +++ b/config/sh/env @@ -0,0 +1,25 @@ +export GPG_TTY=$(tty) +export MANPAGER="$HOME/.bin/vimmanpager" +export PERLDOC_PAGER="$HOME/.bin/vimmanpager" +export EDITOR=$(/usr/bin/which vim) +ssh="${HOME}/.bin/$(hostname)/ssh" +if [ -x "$ssh" ]; then + export GIT_SSH="$ssh" + export RSYNC_RSH="$ssh" +fi +if type sudo-askpass > /dev/null 2>&1; then + SUDO_ASKPASS=$(command -v sudo-askpass) + export SUDO_ASKPASS +fi +export TEXINPUTS=".:$HOME/.config/tex:" +export LESS='-QR' +export PERL_CPANM_OPT="-q --mirror http://mirrors.kernel.org/cpan/ --mirror http://cpan.metacpan.org/ --prompt" +export FZF_DEFAULT_OPTS="--reverse --inline-info --bind=tab:down,shift-tab:up,change:top" +export FZF_DEFAULT_COMMAND="ag --hidden -l ." +export FANCY_PROMPT_COLORS="user_doy=bright_blue,host_st-doy1=bright_white,host_bishamon=blue,host_tozt=bright_yellow,host_hush=bright_black,host_partofme=magenta" +export PASSWORD_STORE_X_SELECTION=primary +type brew > /dev/null 2>&1 && export PATH="/usr/local/opt/coreutils/libexec/gnubin:/usr/local/opt/findutils/libexec/gnubin:/usr/local/sbin:$PATH" +type brew > /dev/null 2>&1 && export MANPATH="/usr/local/opt/coreutils/libexec/gnuman:/usr/local/opt/findutils/libexec/gnuman:$MANPATH" +export NOTMUCH_CONFIG="${XDG_CONFIG_HOME:-${HOME}/.config}/notmuch/config" + +# vim:ft=sh: diff --git a/config/sh/functions b/config/sh/functions new file mode 100644 index 0000000..d6068e0 --- /dev/null +++ b/config/sh/functions @@ -0,0 +1,20 @@ +function perldoc { + # XXX bash specific + if type cpandoc > /dev/null 2>&1; then + cpandoc "$@" + else + command perldoc "$@" + fi +} + +function cdu { + local root + root="$(git rev-parse --show-superproject-working-tree 2>/dev/null)" + if [ -n "$root" ]; then + cd "$root" + else + cd "$(git rev-parse --show-toplevel)" + fi +} + +# vim:ft=sh: diff --git a/config/sh/fzf b/config/sh/fzf new file mode 160000 index 0000000..d4ed955 --- /dev/null +++ b/config/sh/fzf @@ -0,0 +1 @@ +Subproject commit d4ed955aee08a1c2ceb64e562ab4a88bdc9af8f0 diff --git a/config/tex/jesse.sty b/config/tex/jesse.sty new file mode 100644 index 0000000..189938e --- /dev/null +++ b/config/tex/jesse.sty @@ -0,0 +1,14 @@ +% vim:foldmarker=<<<,>>> +% <<< packages +\RequirePackage{latexsym,amsmath,amssymb,fancyhdr,charter,jesse_macros} +\usepackage[left=1in, right=1in]{geometry} +% >>> + +% <<< headers/footers/margins +\pagestyle{fancy} +\fancyhead{} + +\setlength{\headheight}{1in} +\setlength{\textheight}{8in} +\setlength{\parindent}{0pt} +% >>> diff --git a/config/tex/jesse_essay.sty b/config/tex/jesse_essay.sty new file mode 100644 index 0000000..3fb34f2 --- /dev/null +++ b/config/tex/jesse_essay.sty @@ -0,0 +1,14 @@ +\RequirePackage{fancyhdr,newcent,setspace} +\usepackage[left=1.25in, right=1.25in]{geometry} + +% headers/footers/margins +\pagestyle{fancy} +\fancyhead{} + +\setlength{\headheight}{0.5in} +\setlength{\textheight}{8.5in} +\setlength{\parindent}{5em} + +\def\headers#1#2#3{\lhead{#1}\chead{#2}\rhead{#3}} + +\doublespacing diff --git a/config/tex/jesse_letter.sty b/config/tex/jesse_letter.sty new file mode 100644 index 0000000..734021f --- /dev/null +++ b/config/tex/jesse_letter.sty @@ -0,0 +1,3 @@ +\usepackage{newcent} +\signature{Jesse Luehrs} +\address{506 E. White St. \\ Champaign, IL, 61820} diff --git a/config/tex/jesse_macros.sty b/config/tex/jesse_macros.sty new file mode 100644 index 0000000..e27fa25 --- /dev/null +++ b/config/tex/jesse_macros.sty @@ -0,0 +1,104 @@ +% vim:foldmarker=<<<,>>> +% <<< headers +\def\headers#1#2#3{\lhead{#1}\chead{#2}\rhead{#3}} +% >>> + +% <<< Blackboard bold +\DeclareSymbolFont{AMSb}{U}{msb}{m}{n} +\DeclareMathSymbol{\N}{\mathbin}{AMSb}{"4E} +\DeclareMathSymbol{\Z}{\mathbin}{AMSb}{"5A} +\DeclareMathSymbol{\R}{\mathbin}{AMSb}{"52} +\DeclareMathSymbol{\Q}{\mathbin}{AMSb}{"51} +\DeclareMathSymbol{\I}{\mathbin}{AMSb}{"49} +\DeclareMathSymbol{\C}{\mathbin}{AMSb}{"43} +% >>> + +% <<< jeff's algorithm/code stuff +% <<< algorithm environment +\def\begin@lgo{\begin{minipage}{1in}\begin{tabbing} + \quad\=\qquad\=\qquad\=\qquad\=\qquad\=\qquad\=\qquad\=\kill} +\def\end@lgo{\end{tabbing}\end{minipage}} + +\newenvironment{algorithm} + {\begin{tabular}{|l|}\hline\begin@lgo} + {\end@lgo\\\hline\end{tabular}} + +\def\beginc@de{\noindent\begin{center}\begin{minipage}{1in}\tt + \begin{tabbing}~~~~\=~~~~\=~~~~\=~~~~\=~~~~\=~~~~\=~~~~\=\kill} +\def\endc@de{\end{tabbing}\end{minipage}\end{center}} + +\newenvironment{code}{\beginc@de}{\endc@de} +% >>> + +% <<< algorithm definitions that handle highlighting and indentation +\def\algoname#1{\textbf{\textsc{#1}}} +\def\algotitle#1{\+\underline{\algoname{#1}}} +\def\cif{\+\textbf{if} } +\def\cthen{\textbf{then} } +\def\celse{\+\textbf{else} } +\def\creturn{\-\textbf{return} } +\def\cwhile{\+\textbf{while} } +\def\cdo{\textbf{do} } +\def\cfor{\+\textbf{for} } +\def\cbreak{\-\textbf{break} } +% >>> +% >>> + +% <<< more jeff's stuff for easier grouping symbols +% <<< small grouping symbols +\def\floor#1{\lfloor #1 \rfloor} +\def\ceil#1{\lceil #1 \rceil} +\def\seq#1{\langle #1 \rangle} +\def\set#1{\{ #1 \}} +\def\abs#1{\mathopen| #1 \mathclose|} % use instead of $|x|$ +\def\norm#1{\mathopen\| #1 \mathclose\|} % use instead of $\|x\|$ +\def\indic#1{\big[#1\big]} % indicator variable; Iverson notation + % e.g., Kronecker delta = [x=0] +% >>> + +% <<< large grouping symbols +\def\Floor#1{\left\lfloor #1 \right\rfloor} +\def\Ceil#1{\left\lceil #1 \right\rceil} +\def\Seq#1{\left\langle #1 \right\rangle} +\def\Set#1{\left\{ #1 \right\}} +\def\Abs#1{\left| #1 \right|} +\def\Norm#1{\left\| #1 \right\|} +\def\Paren#1{\left( #1 \right)} % need better macro name! +\def\Brack#1{\left[ #1 \right]} % need better macro name! +\def\Indic#1{\left[ #1 \right]} % indicator variable; Iverson notation +% >>> +% >>> + +% <<< displaystyle operators (also from jeff) +\def\Frac#1#2{{\displaystyle\frac{#1}{#2}}} +\def\Sum{\sum\limits} +\def\Prod{\prod\limits} +\def\Union{\bigcup\limits} +\def\Inter{\bigcap\limits} +\def\Lor{\bigvee\limits} +\def\Land{\bigwedge\limits} +\def\Lim{\lim\limits} +\def\Max{\max\limits} +\def\Min{\min\limits} +% >>> + +% <<< cs421 stuff +% <<< conversion symbols +\def\alphaconv{\hspace{0.7em}\alpha\hspace{-1.4em}\longrightarrow} +\def\betared{\hspace{0.7em}\beta\hspace{-1.4em}\longrightarrow} +\def\etared{\hspace{0.7em}\eta\hspace{-1.4em}\longrightarrow} +\def\l#1#2{\lambda #1.#2} +% >>> + +% <<< prof gunter's macros for type inference +\def\type#1#2#3{#1\vdash #2:#3} +% >>> +% >>> + +% <<< proof macros +\def\iff#1#2{\begin{itemize}\item[\em If:]#1\item[\em Only if:]#2\end{itemize}} +% >>> + +% <<< other symbols +\def\nsubset{\hspace{0.4em}/\hspace{-0.9em}\subset} +% >>> diff --git a/config/tex/jesse_resume.sty b/config/tex/jesse_resume.sty new file mode 100644 index 0000000..05580d9 --- /dev/null +++ b/config/tex/jesse_resume.sty @@ -0,0 +1,111 @@ +% vim:foldmarker=<<<,>>> +% This work is licensed under the Creative Commons +% Attribution-NonCommercial-ShareAlike License. To view a copy of this license, +% visit http://creativecommons.org/licenses/by-nc-sa/1.0/ or send a letter to +% Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. +% This file is adapted from Todd Courtesan's resume, at +% http://www.courtesan.com/todd/resume.html + +% <<< packages +\RequirePackage{latexsym,amsmath,amssymb,charter,color,calc,hyperref,jesse_macros} +\RequirePackage[empty]{fullpage} +% >>> +% <<< dimensions/margins +\raggedbottom +\raggedright +\setlength{\tabcolsep}{0in} +\addtolength{\oddsidemargin}{-0.25in} +\addtolength{\evensidemargin}{-0.25in} +\addtolength{\textwidth}{0.5in} +\addtolength{\topmargin}{-0.5in} +\addtolength{\textheight}{1in} +% >>> +% <<< other definitions +\definecolor{mygrey}{gray}{0.90} +% >>> +% <<< Custom commands +% <<< \resheader +\newcommand{\resheader}[6]{ + \begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}cr} + #3 & \textbf{\LARGE #1} & #5\\ + #4 & \url{#2} & #6\\ + \end{tabular*} + \\ + \vspace{0.1in} +} +% >>> +% <<< \resitem +\newcommand{\resitem}[1]{\item {\small #1} \vspace{-2pt}} +% >>> +% <<< \resheading +\newcommand{\resheading}[1]{ + {\large \colorbox{mygrey}{ + \begin{minipage} + {\textwidth-0.175in} + {\textbf{#1 \vphantom{p\^{E}}}} + \end{minipage} + }} +} +% >>> +% \ressubheading <<< +\newcommand{\ressubheading}[4]{ + \begin{tabular*}{\textwidth-0.5in}{l@{\extracolsep{\fill}}r} + \textbf{#1} & #2 \\ + \textit{#3} & \textit{#4} \\ + \end{tabular*} + \vspace{-6pt} +} +% >>> +% \resshortsubheading <<< +\newcommand{\resshortsubheading}[2]{ + \begin{tabular*}{\textwidth-0.5in}{l@{\extracolsep{\fill}}r} + \textbf{\small #1} & {\small #2} \\ + \end{tabular*} + \vspace{-6pt} +} +% >>> +% \resclasses <<< +\newlength{\res@classcolwidth} +\newlength{\resclassgradesep} +\newlength{\resclasscolsep} +\setlength{\resclassgradesep}{0.1in} +\setlength{\resclasscolsep}{0.25in} +\newcommand{\resclasses}[2]{ +\setlength{\res@classcolwidth}{\textwidth/2-0.5in} +\begin{minipage}[t]{\textwidth} +\begin{center} +\vspace{0.01in} +\begin{minipage}[t]{\res@classcolwidth} +\begin{tabular*}{\res@classcolwidth}[t] + {l@{\hspace{\resclassgradesep}}l@{\extracolsep{\fill}}r} +#1 +\end{tabular*} +\end{minipage} +\hspace{\resclasscolsep} +\begin{minipage}[t]{\res@classcolwidth} +\begin{tabular*}{\res@classcolwidth}[t] + {l@{\hspace{\resclassgradesep}}l@{\extracolsep{\fill}}r} +#2 +\end{tabular*} +\end{minipage} +\vspace{0.01in} +\end{center} +\end{minipage} +} +% >>> +% \resclass <<< +\newcommand{\resclass}[3]{ + \parbox[b]{\res@classcolwidth-0.5in}{\textbf{#1}:} & #2 & \textit{#3}\\ +} +% >>> +% \restext <<< +\newcommand{\restext}[1]{ + % XXX: this 0in here seems like a hack, what do i really want? + \vspace{0in} + \\ + #1 + \\ + \vspace{0.1in} +} +% >>> +% >>> diff --git a/config/tex/sarah_resume.sty b/config/tex/sarah_resume.sty new file mode 100644 index 0000000..8ed2a20 --- /dev/null +++ b/config/tex/sarah_resume.sty @@ -0,0 +1,120 @@ +% vim:foldmarker=<<<,>>> +% This work is licensed under the Creative Commons +% Attribution-NonCommercial-ShareAlike License. To view a copy of this license, +% visit http://creativecommons.org/licenses/by-nc-sa/1.0/ or send a letter to +% Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. +% This file is adapted from Todd Courtesan's resume, at +% http://www.courtesan.com/todd/resume.html + +% <<< packages +\RequirePackage{latexsym,amsmath,amssymb,charter,color,calc,jesse_macros} +\RequirePackage[empty]{fullpage} +% >>> +% <<< dimensions/margins +\setlength{\tabcolsep}{0in} +\addtolength{\oddsidemargin}{-0.25in} +\addtolength{\evensidemargin}{-0.25in} +\addtolength{\textwidth}{0.5in} +\addtolength{\topmargin}{-0.5in} +\addtolength{\textheight}{1in} +% >>> +% <<< other definitions +\definecolor{mygrey}{gray}{0.90} +% >>> +% <<< Custom commands +% <<< \resheader +\newcommand{\resheader}[5]{ + \raggedleft + \begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}cr} + #2 & \textbf{\LARGE #1} & #4\\ + #3 & & #5\\ + \end{tabular*} + \\ + \vspace{0.1in} +} +% >>> +% <<< \begin{reslist} +\newenvironment{reslist}{ + \begin{list}{-}{ + \setlength{\rightmargin}{0.25in} + \setlength{\leftmargin}{0.125in} + \setlength{\itemsep}{-2pt} + } +}{ + \end{list} +} +% >>> +% <<< \resitem +\newcommand{\resitem}[1]{\item {\small #1}} +% >>> +% <<< \resheading +\newcommand{\resheading}[1]{ + {\large \colorbox{mygrey}{ + \begin{minipage} + {\textwidth-0.175in} + {\textbf{#1 \vphantom{p\^{E}}}} + \end{minipage} + }} +} +% >>> +% \ressubheading <<< +\newcommand{\ressubheading}[4]{ + \begin{tabular*}{\textwidth-0.5in}{l@{\extracolsep{\fill}}r} + \textbf{#1} & #2 \\ + \textit{#3} & \textit{#4} \\ + \end{tabular*} + \\ + \vspace{-0.8pt} +} +% >>> +% \resshortsubheading <<< +\newcommand{\resshortsubheading}[2]{ + \begin{tabular*}{\textwidth-0.5in}{l@{\extracolsep{\fill}}r} + \textbf{\small #1} & {\small #2} \\ + \end{tabular*} + \vspace{-6pt} +} +% >>> +% \resclasses <<< +\newlength{\res@classcolwidth} +\newlength{\resclasscolsep} +\setlength{\resclasscolsep}{0.25in} +\newcommand{\resclasses}[2]{ +\setlength{\res@classcolwidth}{\textwidth/2-0.5in} +\begin{minipage}[t]{\textwidth} +\begin{center} +\vspace{0.01in} +\begin{minipage}[t]{\res@classcolwidth} +\begin{tabular*}{\res@classcolwidth}[t] + {l@{\extracolsep{\fill}}l} +#1 +\end{tabular*} +\end{minipage} +\hspace{\resclasscolsep} +\begin{minipage}[t]{\res@classcolwidth} +\begin{tabular*}{\res@classcolwidth}[t] + {l@{\extracolsep{\fill}}l} +#2 +\end{tabular*} +\end{minipage} +\vspace{0.01in} +\end{center} +\end{minipage} +} +% >>> +% \resclass <<< +\newcommand{\resclass}[2]{ + \parbox[b]{\res@classcolwidth-0.5in}{\small \textbf{#1}:} & {\small #2}\\ +} +% >>> +% \restext <<< +\newcommand{\restext}[1]{ + % XXX: this 0in here seems like a hack, what do i really want? + \vspace{0in} + \\ + #1 + \\ + \vspace{0.1in} +} +% >>> +% >>> diff --git a/config/tig/config b/config/tig/config new file mode 100644 index 0000000..8eb4aa5 --- /dev/null +++ b/config/tig/config @@ -0,0 +1,4 @@ +bind generic i view-close +bind main i none +bind generic g move-first-line +bind generic G move-last-line diff --git a/config/zsh/local-completions/hush/_sv b/config/zsh/local-completions/hush/_sv new file mode 100644 index 0000000..8887bd6 --- /dev/null +++ b/config/zsh/local-completions/hush/_sv @@ -0,0 +1,10 @@ +#compdef svdn svget svkill svlog svnuke svre svst svstop svup + +local -a service_list +local services=$(ls ~/.services/enabled/) +service_list=(${(s: +:)services}) + +_describe 'commands' service_list + +# vim:ft=zsh diff --git a/config/zsh/zsh-autosuggestions b/config/zsh/zsh-autosuggestions new file mode 160000 index 0000000..affe7c6 --- /dev/null +++ b/config/zsh/zsh-autosuggestions @@ -0,0 +1 @@ +Subproject commit affe7c687e329f881ae92e95670979b0f728e613 diff --git a/config/zsh/zsh-completions b/config/zsh/zsh-completions new file mode 160000 index 0000000..5fdcec1 --- /dev/null +++ b/config/zsh/zsh-completions @@ -0,0 +1 @@ +Subproject commit 5fdcec1bef68b8fb1ad528111f7892b6e7d5586b diff --git a/config/zsh/zsh-syntax-highlighting b/config/zsh/zsh-syntax-highlighting new file mode 160000 index 0000000..e900ad8 --- /dev/null +++ b/config/zsh/zsh-syntax-highlighting @@ -0,0 +1 @@ +Subproject commit e900ad8bad53501689afcb050456400d7a8466e5 -- cgit v1.2.3-54-g00ecf