├── .vim ├── swp │ └── .gitkeep ├── backup │ └── .gitkeep └── colors │ └── jcs.vim ├── .ackrc ├── .sqliterc ├── bin ├── pastebin ├── pbcopy ├── randword ├── html_mail ├── exifstrip ├── plan ├── png2macpaint ├── localtime ├── grb ├── firefox ├── binary ├── sync_audacious ├── lock ├── mutt_filter ├── wotd ├── randpass ├── battery-cycle ├── fetchrel ├── pushover ├── anonftpd ├── imgur ├── volume ├── irc ├── progress ├── mutt_bgrun ├── upsnap ├── music ├── xsudo └── macpaint2png ├── .cvsrc ├── .gtkrc-2.0 ├── .config ├── gtk-3.0 │ ├── settings.ini │ └── gtk.css ├── qt5ct │ ├── qss │ │ └── jcs.qss │ └── qt5ct.conf ├── rofi │ └── config.rasi ├── picom │ └── picom.conf ├── cmus │ └── rc ├── kitty │ └── kitty.conf ├── sdorfehs │ └── config └── progman │ └── progman.ini ├── .gitignore ├── .mailcap ├── .irbrc ├── .xmodmap ├── .tmux.conf ├── .gitconfig ├── .i3status.conf ├── move_in.sh ├── .urxvt └── ext │ ├── ls_l │ └── warn_on_close ├── .xsession ├── .muttrc.lists ├── .Xresources ├── .fonts.conf ├── .gvimrc ├── .zshrc ├── .muttrc ├── .vimrc └── .mime.types /.vim/swp/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.ackrc: -------------------------------------------------------------------------------- 1 | --nocolor 2 | -------------------------------------------------------------------------------- /.vim/backup/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.sqliterc: -------------------------------------------------------------------------------- 1 | .header on 2 | .mode column 3 | -------------------------------------------------------------------------------- /bin/pastebin: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | curl -F 'f:1=<-' ix.io 3 | -------------------------------------------------------------------------------- /bin/pbcopy: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | xclip -in -selection primary 3 | -------------------------------------------------------------------------------- /.cvsrc: -------------------------------------------------------------------------------- 1 | diff -uNp 2 | update -P 3 | checkout -P 4 | rdiff -u 5 | -------------------------------------------------------------------------------- /.gtkrc-2.0: -------------------------------------------------------------------------------- 1 | # default font 2 | gtk-font-name = "Verdana 14" 3 | -------------------------------------------------------------------------------- /.config/gtk-3.0/settings.ini: -------------------------------------------------------------------------------- 1 | [Settings] 2 | gtk-primary-button-warps-slider = false 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .gitcookies 2 | .vim/backup 3 | .vim/gutentags 4 | .vim/swp 5 | .vim/.netrwhist 6 | -------------------------------------------------------------------------------- /bin/randword: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | DICT=/usr/share/dict/words 4 | 5 | sort -R $DICT | head -n1 6 | -------------------------------------------------------------------------------- /bin/html_mail: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | lynx -dump -localhost -force_html -width 80 $* | env LANG= sed 's/^ *//' 3 | -------------------------------------------------------------------------------- /bin/exifstrip: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | exiftool -stay_open true -overwrite_original \ 4 | -all= -tagsfromfile $1 -Orientation $1 5 | -------------------------------------------------------------------------------- /bin/plan: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | T=`mktemp` && curl -so $T https://plan.cat/~`whoami` && \ 4 | $EDITOR $T && \ 5 | curl -su `whoami` -F "plan=<$T" https://plan.cat/stdin 6 | -------------------------------------------------------------------------------- /bin/png2macpaint: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if [ "$1" = "" ]; then 4 | echo "usage: ${0} " 5 | exit 1 6 | fi 7 | 8 | convert $1 pbm:- | pbmtomacp -norle -left 0 -top 0 > $1.macp 9 | -------------------------------------------------------------------------------- /bin/localtime: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require "date" 4 | 5 | dt = DateTime.parse(ARGV[0]) 6 | puts "#{dt.to_time} (#{dt.zone}) -> " + 7 | "#{dt.new_offset(Time.now.zone).to_time} (#{Time.now.zone})" 8 | -------------------------------------------------------------------------------- /bin/grb: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # git interactive rebase of all commits since yesterday 4 | # 5 | 6 | FCOM=`git log --since=yesterday | grep "^commit" | sed 's/commit //' | tail -n1` 7 | 8 | git rebase -i ${FCOM}~1 9 | -------------------------------------------------------------------------------- /bin/firefox: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | #~/bin/xsudo -u _firefox -t /usr/local/bin/firefox $* 4 | 5 | rm -f ~/firefox.core 6 | 7 | if [ ! `pgrep sdorfehs` = "" ]; then 8 | sdorfehs -c 'vselect 1' 9 | fi 10 | 11 | /usr/local/bin/firefox $* 12 | 13 | rm -f ~/firefox.core 14 | -------------------------------------------------------------------------------- /bin/binary: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | if !ARGV[0] 4 | puts "usage: #{$0} 0x12345" 5 | exit 1 6 | end 7 | 8 | num = ARGV[0].to_s.to_i(ARGV[0].match(/^0x/) ? 16 : 10) 9 | b = sprintf("%b", num) 10 | pad = ((b.length / 8.0).ceil * 8) - b.length 11 | puts "#{"0" * pad}#{b}" 12 | -------------------------------------------------------------------------------- /.config/qt5ct/qss/jcs.qss: -------------------------------------------------------------------------------- 1 | QMainWindow { 2 | background-color: #eae5ce; 3 | } 4 | QTreeView { 5 | alternate-background-color: #dcd7c1; 6 | selection-color: black; 7 | selection-background-color: #a3ccbd; 8 | } 9 | /* 10 | QSlider::groove:horizontal { 11 | background-color: #a3ccbd; 12 | } 13 | */ -------------------------------------------------------------------------------- /.config/rofi/config.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | modi: "run"; 3 | font: "Microsoft Sans Serif 14"; 4 | lines: 10; 5 | width: 40; 6 | padding: 10; 7 | color-normal: "white,black,white,#0000a8,white"; 8 | color-window: "white,#c0c7c8,white"; 9 | bw: 8; 10 | scrollbar-width: 0; 11 | separator-style: "solid"; 12 | } 13 | -------------------------------------------------------------------------------- /.mailcap: -------------------------------------------------------------------------------- 1 | # things mutt can view inline 2 | application/msword; antiword %s; copiousoutput 3 | text/html; ~/bin/html_mail %s; copiousoutput 4 | application/x-gunzip; gzcat %s; copiousoutput 5 | 6 | # things that need external programs 7 | #application/pdf; /usr/local/bin/mupdf %s 8 | image/*; ~/bin/mutt_bgrun %t %s 9 | 10 | application/*; ~/bin/mutt_bgrun %t %s 11 | -------------------------------------------------------------------------------- /bin/sync_audacious: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | audtool playback-stop 4 | 5 | audtool playlist-clear 6 | find ~/Music -type f \ 7 | \( -name \*.m4a -o -name \*.mp3 \) -a \( -not -path \*stversion\* \) \ 8 | -print0 | sort -zn | xargs -t -0 -L1 audtool playlist-addurl 2>&1 | sed 's,.*/Music/,,' 9 | 10 | audtool playlist-shuffle-toggle 11 | audtool playlist-shuffle-toggle 12 | -------------------------------------------------------------------------------- /.irbrc: -------------------------------------------------------------------------------- 1 | def history(num=100) 2 | h = Readline::HISTORY.to_a 3 | start = [0,h.size-num-1].max 4 | h.zip((0..h.size).to_a)[start...h.size].each do |cmd,i| 5 | puts " #{(i).to_s.rjust(4)} #{cmd}" 6 | end 7 | end 8 | 9 | IRB.conf[:USE_COLORIZE] = false 10 | IRB.conf[:AUTO_INDENT] = false 11 | IRB.conf[:USE_MULTILINE] = false 12 | IRB.conf[:SAVE_HISTORY] = nil 13 | -------------------------------------------------------------------------------- /.config/gtk-3.0/gtk.css: -------------------------------------------------------------------------------- 1 | * { 2 | font-family: "sans-serif"; 3 | font-size: 13pt; 4 | } 5 | 6 | menubar { 7 | background-color: white; 8 | } 9 | 10 | menubar menuitem:hover { 11 | background-color: #0000a8; 12 | color: white; 13 | } 14 | 15 | scrollbar slider { 16 | min-width: 15px; 17 | min-height: 15px; 18 | } 19 | 20 | VteTerminal, vte-terminal { 21 | padding: 15px; 22 | } 23 | -------------------------------------------------------------------------------- /.xmodmap: -------------------------------------------------------------------------------- 1 | ! make caps lock a left control key 2 | clear lock 3 | clear control 4 | keycode 66 = Control_L 5 | add control = Control_L Control_R 6 | 7 | ! make print-screen key another windows key 8 | keycode 111 = Super_L 9 | 10 | ! swap left alt and windows keys 11 | remove Mod1 = Alt_L 12 | remove Mod4 = Super_L 13 | keycode 64 = Super_L 14 | keycode 115 = Alt_L 15 | add Mod1 = Alt_L 16 | add Mod4 = Super_L 17 | -------------------------------------------------------------------------------- /bin/lock: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | D=`date` 4 | echo "[$D] locking" 5 | 6 | # force keyboard backlight to dim 7 | pkill -USR1 xdimmer 8 | 9 | # kill any active tokens 10 | doas -L 11 | ssh-add -D 12 | 13 | # clear clipboard 14 | echo -n | pbcopy 15 | 16 | pkill -KILL -f chat@ 17 | if [ ! `pgrep sdorfehs` = "" ]; then 18 | echo nokeepalive > ~/.config/sdorfehs/bar-control 19 | fi 20 | ~/bin/music pause 21 | pkill -9 vlc 22 | slock 23 | -------------------------------------------------------------------------------- /bin/mutt_filter: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl -n 2 | # 3 | # a mutt display filter to convert an email's local Date: header into the 4 | # current local timezone 5 | # 6 | # usage: 7 | # set display_filter="~/bin/mutt_filter" 8 | # 9 | 10 | use Date::Parse; 11 | use POSIX; 12 | use strict; 13 | 14 | if (/^Date: (.*)$/) { 15 | my $datestr = $1; 16 | my $date = strftime("%a, %d %b %Y %H:%M:%S %Z", localtime(str2time($datestr))); 17 | print "Date: $date\n"; 18 | } else { 19 | print; 20 | } 21 | -------------------------------------------------------------------------------- /bin/wotd: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require "rexml/document" 4 | require "net/https" 5 | 6 | RSS_FEED = "https://www.merriam-webster.com/wotd/feed/rss2" 7 | rss = Net::HTTP.get(URI.parse(RSS_FEED)) 8 | 9 | xml = REXML::Document.new(rss) 10 | 11 | cur = if ARGV[0] == "yesterday" 12 | xml.elements["rss/channel/item[2]"] 13 | else 14 | xml.elements["rss/channel/item[1]"] 15 | end 16 | 17 | puts "#{cur.elements["title"].text}: #{cur.elements["merriam:shortdef"].text}" 18 | -------------------------------------------------------------------------------- /bin/randpass: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require "openssl" 4 | 5 | len = ARGV[0].to_i 6 | if len == 0 7 | len = 8 8 | end 9 | 10 | str = "" 11 | 12 | while str.length < len 13 | while str.length < len 14 | chr = OpenSSL::Random.random_bytes(1) 15 | ord = chr.unpack('C')[0] 16 | 17 | # 0 9 a z 18 | if (ord >= 48 && ord <= 57) || (ord >= 97 && ord <= 122) 19 | # avoid ambiguous characters 20 | next if chr == "0" || chr == "l" 21 | 22 | str << chr 23 | end 24 | end 25 | end 26 | 27 | puts str 28 | -------------------------------------------------------------------------------- /.tmux.conf: -------------------------------------------------------------------------------- 1 | # use control+a as a prefix like screen 2 | set-option -g prefix C-a 3 | unbind-key C-b 4 | bind-key a send-prefix 5 | bind-key C-a next-window 6 | 7 | bind-key space next-window 8 | bind-key C-space next-window 9 | 10 | set -g status-position top 11 | 12 | set -g history-limit 50000 13 | 14 | # colors hurt my eyes 15 | set -g status-style reverse,bright 16 | set -g status-interval 1 17 | set -g message-style reverse 18 | 19 | set -g set-titles on 20 | set-option -g set-titles-string "#W" 21 | 22 | # just the hostname 23 | set -g status-left "" 24 | set -g status-right "#T " 25 | -------------------------------------------------------------------------------- /bin/battery-cycle: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo "battery discharge started at `date`" 4 | 5 | sysctl -q \ 6 | hw.battery.chargestart=0 \ 7 | hw.battery.chargestop=100 \ 8 | hw.battery.chargemode=-1 9 | 10 | while true; do 11 | REM=`sysctl -n hw.sensors.acpibat0.watthour3 | sed 's/ .*//'` 12 | 13 | if [ "$REM" = "0.00" ]; then 14 | break 15 | fi 16 | 17 | sleep 10 18 | done 19 | 20 | echo "battery discharge finished at `date`, starting recharge" 21 | 22 | sysctl -q hw.battery.chargemode=1 \ 23 | hw.battery.chargestop=91 24 | 25 | echo "battery status: `sysctl -n hw.sensors.acpibat0.raw1`" 26 | -------------------------------------------------------------------------------- /bin/fetchrel: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | SETS="comp man game xbase xfont xshare xserv base" 6 | REL="6.4" 7 | T=~/up 8 | 9 | if [ ! -d $T ]; then 10 | mkdir $T 11 | fi 12 | 13 | RELFN=`echo ${REL} | sed 's/\.//'` 14 | 15 | cd $T 16 | 17 | fetch() { 18 | ftp `cat /etc/installurl`/${REL}/`arch -s`/$1 19 | } 20 | 21 | fetch "SHA256" 22 | fetch "SHA256.sig" 23 | 24 | for f in $SETS; do 25 | fetch "${f}${RELFN}.tgz" 26 | signify -C -x SHA256.sig ${f}${RELFN}.tgz || exit 1 27 | done 28 | 29 | for f in bsd.mp bsd.rd; do 30 | fetch $f 31 | signify -C -x SHA256.sig $f || exit 1 32 | done 33 | 34 | echo "fetched ${REL} to ${T}" 35 | -------------------------------------------------------------------------------- /.gitconfig: -------------------------------------------------------------------------------- 1 | [user] 2 | email = jcs@jcs.org 3 | name = joshua stein 4 | 5 | [alias] 6 | catchup = !git fetch upstream && git rebase upstream/master 7 | diff-remote = diff origin..master 8 | ff = pull --ff-only 9 | fixup = rebase -i HEAD~5 10 | tree = log --graph --pretty=format:'[%h] [%<(8,trunc)%al] [%cs] %<(50,trunc)%s' --abbrev-commit 11 | touch = commit --amend --reset-author --no-edit 12 | [commit] 13 | verbose = true 14 | [push] 15 | default = simple 16 | [color] 17 | ui = never 18 | [diff] 19 | compaction-heuristic = true 20 | noprefix = true 21 | [http] 22 | cookiefile = /home/jcs/.gitcookies 23 | [rebase] 24 | autostash = true 25 | -------------------------------------------------------------------------------- /.i3status.conf: -------------------------------------------------------------------------------- 1 | general { 2 | output_format = "i3bar" 3 | colors = false 4 | interval = 3 5 | } 6 | 7 | order += "wireless _first_" 8 | order += "ethernet _first_" 9 | order += "battery 0" 10 | order += "cpu_temperature cpu0" 11 | order += "volume master" 12 | 13 | cpu_temperature cpu0 { 14 | path = "cpu0" 15 | format = "%degrees" 16 | } 17 | 18 | ethernet _first_ { 19 | format_up = "up|%speed" 20 | format_down = "down" 21 | } 22 | 23 | wireless _first_ { 24 | format_up = "up|%signal|%essid" 25 | format_down = "down" 26 | } 27 | 28 | battery 0 { 29 | format = "%status|%percentage|%consumption" 30 | } 31 | 32 | volume master { 33 | format = "%volume" 34 | format_muted = "%volume mute" 35 | } 36 | -------------------------------------------------------------------------------- /bin/pushover: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # cmd && pushover "done running cmd" 3 | # requires $PUSHOVER_USER_KEY and $PUSHOVER_API_TOKEN set in ~/.zshrc.local 4 | 5 | if [ X"${PUSHOVER_USER_KEY}" = X"" ]; then 6 | echo "\$PUSHOVER_USER_KEY not set" 7 | exit 1 8 | fi 9 | 10 | if [ X"${PUSHOVER_API_TOKEN}" = X"" ]; then 11 | echo "\$PUSHOVER_API_TOKEN not set" 12 | exit 1 13 | fi 14 | 15 | curl -s \ 16 | --form-string "user=${PUSHOVER_USER_KEY}" \ 17 | --form-string "token=${PUSHOVER_API_TOKEN}" \ 18 | --form-string "message=${1}" \ 19 | --form-string "device=iphone" \ 20 | https://api.pushover.net/1/messages.json | grep -v 'status":1' 21 | 22 | # reverse exit code so that no output exits 0, any output exits 1 23 | [ $? == 1 ] && exit 0 24 | -------------------------------------------------------------------------------- /bin/anonftpd: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require "ftpd" 4 | require "socket" 5 | 6 | class Driver 7 | def initialize 8 | @temp_dir = Dir.pwd 9 | end 10 | def authenticate(user, password) 11 | true 12 | end 13 | def file_system(user) 14 | Ftpd::DiskFileSystem.new(@temp_dir) 15 | end 16 | end 17 | 18 | int = `route -n get default`.split("\n").select{|l| l.match(/interface:/) }. 19 | first.gsub(/.*: /, "") 20 | ip = `ifconfig #{int} | grep 'inet '`.split("\n")[0].gsub(/.*inet /, ""). 21 | gsub(/ .*/, "").strip 22 | 23 | server = Ftpd::FtpServer.new(Driver.new) 24 | server.log = Logger.new(STDOUT) 25 | server.interface = "0.0.0.0" 26 | 27 | if Process.uid == 0 || `uname -s`.strip == "Darwin" 28 | server.port = 21 29 | else 30 | server.port = 2121 31 | end 32 | 33 | puts "ftpd listening on #{ip}:#{server.port}" 34 | 35 | server.start 36 | while true do 37 | gets 38 | end 39 | -------------------------------------------------------------------------------- /bin/imgur: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # visit 4 | # https://api.imgur.com/oauth2/addclient 5 | # and register an application with auth type "oauth 2 without a callback" 6 | # 7 | # then visit 8 | # https://api.imgur.com/oauth2/authorize?client_id=#YOUR_CLIENT_ID#&response_type=token 9 | # 10 | # after auth, you'll be redirected to an imgur.com url, save the access_token 11 | # and `export IMGUR_ACCESS_TOKEN=(access token here)` 12 | # 13 | 14 | if [ X"${IMGUR_ACCESS_TOKEN}" = X"" ]; then 15 | echo "\$IMGUR_ACCESS_TOKEN not set" 16 | exit 1 17 | fi 18 | 19 | TMP=`mktemp /tmp/imgur.XXXXXX` 20 | 21 | curl \ 22 | -s \ 23 | -o $TMP \ 24 | -X POST \ 25 | -H "Authorization: Bearer ${IMGUR_ACCESS_TOKEN}" \ 26 | -F "image=@${1}" \ 27 | https://api.imgur.com/3/upload 28 | 29 | URL=`sed -e 's/.*"link":"//' -e 's/".*//' < $TMP` 30 | 31 | if [ X"$URL" = "" ]; then 32 | echo "failed parsing JSON output:" 33 | cat $TMP 34 | else 35 | echo $URL 36 | fi 37 | 38 | rm $TMP 39 | -------------------------------------------------------------------------------- /.config/picom/picom.conf: -------------------------------------------------------------------------------- 1 | backend = "glx"; 2 | glx-no-stencil = true; 3 | glx-no-rebind-pixmap = true; 4 | vsync = true; 5 | 6 | frame-opacity = 1; 7 | 8 | shadow = true; 9 | shadow-opacity = 1; 10 | shadow-radius = 0; 11 | shadow-offset-x = 10; 12 | shadow-offset-y = 10; 13 | shadow-exclude = [ 14 | "name *?= \"OpenSSH Authentication\"", 15 | ]; 16 | 17 | fading = false; 18 | 19 | # dim inactive windows 20 | inactive-dim = 0.10; 21 | 22 | # but let sdorfehs determine what is active to avoid unfocusing a window 23 | # when key_window gets focus (when sdorfehs's `escape` key is pressed) 24 | use-ewmh-active-win = true; 25 | 26 | # and ignore unnamed windows for the purpose of focusing 27 | focus-exclude = [ 28 | "! name~=''", 29 | ]; 30 | 31 | wintypes: 32 | { 33 | tooltip = { shadow = false; focus = true; }; 34 | dock = { shadow = true; focus = true; }; 35 | utility = { shadow = false; focus = true; }; 36 | desktop = { shadow = false; focus = true; }; 37 | }; 38 | -------------------------------------------------------------------------------- /move_in.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | # remove cruft installed by default in openbsd 6 | rm -f ~/.cshrc \ 7 | ~/.login \ 8 | ~/.mailrc \ 9 | ~/.profile \ 10 | ~/.Xdefaults \ 11 | ~/.cvsrc 12 | 13 | for f in .bash_history .sqlite_history .mysql_history; do 14 | rm -f ~/$f 15 | ln -s /dev/null ~/$f 16 | done 17 | 18 | chmod 700 ~ 19 | 20 | if [ -d ~/.dotfiles ]; then 21 | cd ~/.dotfiles 22 | git pull --ff-only 23 | else 24 | git clone https://github.com/jcs/dotfiles ~/.dotfiles 25 | fi 26 | 27 | cd ~/.dotfiles 28 | for f in .???*; do 29 | rm -f ~/$f 30 | (cd ~/; ln -s .dotfiles/$f $f) 31 | done 32 | 33 | if [ ! -d ~/.ssh ]; then 34 | mkdir ~/.ssh 35 | fi 36 | 37 | if [ ! -d ~/.vim/bundle/Vundle.vim ]; then 38 | git clone https://github.com/VundleVim/Vundle.vim.git \ 39 | ~/.vim/bundle/Vundle.vim 40 | fi 41 | 42 | # we're probably being piped to a shell (ftp -o - .. | sh -) so this 43 | # won't work running it ourselves 44 | echo "vim +PlugInstall +qall" 45 | -------------------------------------------------------------------------------- /bin/volume: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | OSD_CAT="osd_cat -p top -A center -f \"Helvetica Neue Bold 28\" \ 4 | -b percentage -o 150 -c \"#00ee00\" -s 1 -l 1 -d 1" 5 | 6 | case "$1" in 7 | up) 8 | sndioctl -q output.mute=0 output.level=+0.025 9 | VAL=`sndioctl -n output.level` 10 | PERC=`echo "${VAL} 100 * p" | dc` 11 | pgrep -q sdorfehs || \ 12 | (pkill osd_cat; sh -c "${OSD_CAT} -T Volume -P ${PERC}") 13 | ;; 14 | down) 15 | sndioctl -q output.mute=0 output.level=-0.025 16 | VAL=`sndioctl -n output.level` 17 | PERC=`echo "${VAL} 100 * p" | dc` 18 | pgrep -q sdorfehs || \ 19 | (pkill osd_cat; sh -c "${OSD_CAT} -T Volume -P ${PERC}") 20 | ;; 21 | mute) 22 | if [ `sndioctl -n output.mute` = "0" ]; then 23 | sndioctl -q output.mute=1 24 | pgrep -q sdorfehs || \ 25 | (pkill osd_cat; sh -c "${OSD_CAT} -T 'Volume - Mute' -P 0") 26 | else 27 | sndioctl -q output.mute=0 28 | VAL=`sndioctl -n output.level` 29 | PERC=`echo "${VAL} 100 * p" | dc` 30 | pgrep -q sdorfehs || \ 31 | (pkill osd_cat; sh -c "${OSD_CAT} -T Volume -P ${PERC}") 32 | fi 33 | ;; 34 | *) 35 | echo "unknown command \"${1}\"" 36 | exit 1 37 | ;; 38 | esac 39 | 40 | pkill -USR1 i3status 41 | exit 0 42 | -------------------------------------------------------------------------------- /.config/cmus/rc: -------------------------------------------------------------------------------- 1 | set color_cmdline_attr=default 2 | set color_cmdline_bg=default 3 | set color_cmdline_fg=default 4 | set color_cur_sel_attr=default 5 | set color_error=lightred 6 | set color_info=default 7 | set color_separator=default 8 | set color_statusline_attr=default 9 | set color_statusline_bg=gray 10 | set color_statusline_fg=black 11 | set color_titleline_attr=default 12 | set color_titleline_bg=black 13 | set color_titleline_fg=white 14 | set color_win_attr=default 15 | set color_win_bg=default 16 | set color_win_cur=default 17 | set color_win_cur_attr=bold 18 | set color_win_cur_sel_attr=default 19 | set color_win_cur_sel_bg=black 20 | set color_win_cur_sel_fg=white 21 | set color_win_dir=default 22 | set color_win_fg=default 23 | set color_win_inactive_cur_sel_attr=default 24 | set color_win_inactive_cur_sel_bg=gray 25 | set color_win_inactive_cur_sel_fg=default 26 | set color_win_inactive_sel_attr=bold 27 | set color_win_inactive_sel_bg=gray 28 | set color_win_inactive_sel_fg=black 29 | set color_win_sel_attr=default 30 | set color_win_sel_bg=black 31 | set color_win_sel_fg=white 32 | set color_win_title_attr=default 33 | set color_win_title_bg=black 34 | set color_win_title_fg=white 35 | -------------------------------------------------------------------------------- /bin/irc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # doas pip3 install pyobjc-framework-Quartz 4 | if [ X`uname -s` = X"Darwin" ]; then 5 | python3 -c 'import sys, Quartz, time' 6 | if [ $? -ne 0 ]; then 7 | echo "" 8 | echo "Quartz python module not installed" 9 | echo "pip3 install pyobjc-framework-Quartz" 10 | echo "" 11 | exit 1 12 | fi 13 | fi 14 | 15 | while :; do 16 | host jcs.org > /dev/null 2>&1 17 | if [ $? -eq 0 ]; then 18 | env SSH_AUTH_SOCK= ssh -t \ 19 | -o ServerAliveInterval=5 \ 20 | -o ServerAliveCountMax=3 \ 21 | -o ForwardAgent=no \ 22 | -o AddKeysToAgent=no \ 23 | -i ~/.ssh/id_chat_ed25519 \ 24 | chat@jcs.org "tmux -u new-session -A -s main" 25 | 26 | if [ X"$?" = X"0" ]; then 27 | exit 28 | fi 29 | 30 | # wait until screen is not locked 31 | sleep 1 32 | if [ X`uname -s` = X"Darwin" ]; then 33 | python3 -c 'import sys, Quartz, time 34 | while True: 35 | d = Quartz.CGSessionCopyCurrentDictionary() 36 | if d.get("CGSSessionScreenIsLocked", 0) == 0: 37 | sys.exit(0) 38 | time.sleep(0.5) 39 | ' 40 | elif [ X`uname -s` = X"OpenBSD" ]; then 41 | sleep 1 42 | while [ X`pgrep slock` != X"" ]; do 43 | sleep 1 44 | done 45 | fi 46 | fi 47 | 48 | sleep 2 49 | done 50 | -------------------------------------------------------------------------------- /.config/kitty/kitty.conf: -------------------------------------------------------------------------------- 1 | # vim:ts=8 2 | 3 | font_family Input Mono Narrow 4 | bold_font auto 5 | font_size 12 6 | adjust_line_height -2 7 | adjust_column_width -2 8 | adjust_baseline 3 9 | 10 | cursor #222222 11 | cursor_text_color #F6F2DE 12 | cursor_shape block 13 | cursor_blink_interval 0 14 | mouse_hide_wait -1 15 | copy_on_select yes 16 | mouse_map left click ungrabbed mouse_handle_click selection 17 | mouse_map cmd+left click grabbed,ungrabbed mouse_handle_click link 18 | paste_actions 19 | enable_audio_bell no 20 | window_padding_width 16 21 | background #F6F2DE 22 | foreground #222222 23 | color0 #222222 24 | color8 #111111 25 | color1 #dc322f 26 | color9 #cb4b16 27 | color2 #859900 28 | color10 #93a1a1 29 | color3 #b58900 30 | color11 #839496 31 | color4 #268bd2 32 | color12 #657b83 33 | color5 #d33682 34 | color13 #6c71c4 35 | color6 #2aa198 36 | color14 #586e75 37 | color7 #d9d7cc 38 | color15 #e5e5e5 39 | 40 | ## dark 41 | #background #2A2A2A 42 | #foreground #E9E6DE 43 | #color0 #E9E6DE 44 | 45 | shell_integration no-cursor 46 | term xterm-256color 47 | hide_window_decorations titlebar-only 48 | #inactive_text_alpha 0.7 49 | macos_titlebar_color black 50 | macos_thicken_font 0.1 51 | macos_show_window_title_in window 52 | window_alert_on_bell no 53 | -------------------------------------------------------------------------------- /.config/qt5ct/qt5ct.conf: -------------------------------------------------------------------------------- 1 | [Appearance] 2 | color_scheme_path=/usr/local/share/qt5ct/colors/simple.conf 3 | custom_palette=false 4 | icon_theme=Adwaita 5 | standard_dialogs=gtk3 6 | style=Windows 7 | 8 | [Fonts] 9 | fixed=@Variant(\0\0\0@\0\0\0\x12\0M\0o\0n\0o\0s\0p\0\x61\0\x63\0\x65@ \0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10) 10 | general=@Variant(\0\0\0@\0\0\0\x1a\0s\0\x61\0n\0s\0 \0s\0\x65\0r\0i\0\x66\0 \0\x31\0\x30@\"\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10) 11 | 12 | [Interface] 13 | activate_item_on_single_click=1 14 | buttonbox_layout=0 15 | cursor_flash_time=1000 16 | dialog_buttons_have_icons=1 17 | double_click_interval=400 18 | gui_effects=@Invalid() 19 | keyboard_scheme=2 20 | menus_have_icons=true 21 | show_shortcuts_in_context_menus=true 22 | stylesheets=/home/jcs/.config/qt5ct/qss/jcs.qss 23 | toolbutton_style=4 24 | underline_shortcut=1 25 | wheel_scroll_lines=3 26 | 27 | [QSSEditor] 28 | geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0(\0\0\0\xe1\0\0\x2\xb0\0\0\x2\xd9\0\0\0+\0\0\0\xe4\0\0\x2\xad\0\0\x2\xd6\0\0\0\0\0\0\0\0\x5\xa0\0\0\0+\0\0\0\xe4\0\0\x2\xad\0\0\x2\xd6) 29 | 30 | [SettingsWindow] 31 | geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\x12\0\0\0J\0\0\x2\xc6\0\0\x3q\0\0\0\x15\0\0\0M\0\0\x2\xc3\0\0\x3n\0\0\0\0\0\0\0\0\x5\xa0\0\0\0\x15\0\0\0M\0\0\x2\xc3\0\0\x3n) 32 | 33 | [Troubleshooting] 34 | force_raster_widgets=1 35 | ignored_applications=@Invalid() 36 | -------------------------------------------------------------------------------- /.urxvt/ext/ls_l: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | # 3 | # right-clicking on a filename in what looks like an `ls -l` listing will 4 | # paste the escaped value of that filename 5 | # 6 | # Copyright (c) 2024 joshua stein 7 | # 8 | # Permission to use, copy, modify, and distribute this software for any 9 | # purpose with or without fee is hereby granted, provided that the above 10 | # copyright notice and this permission notice appear in all copies. 11 | # 12 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 13 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 14 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 15 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 16 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 17 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 18 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 19 | # 20 | 21 | sub on_button_press { 22 | my ($self, $event) = @_; 23 | 24 | if ($event->{button} == 3) { 25 | my $line = $self->line($event->{row}); 26 | my $off = $line->offset_of($event->{row}, $event->{col}); 27 | 28 | if ($line->t =~ /^[d-]......... .+? [A-Z][a-z][a-z] [\d ]\d (\d\d:\d\d| \d\d\d\d) (.+)/) { 29 | if ($-[2] <= $off && $+[2] >= $off) { 30 | $self->{term}->tt_write(quotemeta($2)); 31 | } 32 | } 33 | 34 | return 1; 35 | } 36 | 37 | () 38 | } 39 | -------------------------------------------------------------------------------- /bin/progress: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | # 3 | # $ progress dump.sql.gz 4 | # gzip (68010): 56.13%, 27m52s left (1804580 bytes/sec) 5 | # 6 | 7 | DIFFS_COUNT = 20 8 | 9 | if !(file = ARGV[0]) 10 | puts "usage: #{$0} " 11 | exit 1 12 | end 13 | 14 | diffs = [] 15 | 16 | last_off = -1 17 | loop do 18 | fs = `fstat -o #{file}`.split("\n") 19 | if fs.count == 1 20 | if last_off > -1 21 | exit 22 | end 23 | puts "nothing has #{file} open" 24 | exit 1 25 | end 26 | fields = fs.last.split(" ") 27 | cmd = fields[1] 28 | pid = fields[2] 29 | size, off = fields[8].split(":") 30 | 31 | if off == "*" 32 | puts "no access to read status of pid #{pid}" 33 | exit 1 34 | end 35 | off = off.to_i 36 | 37 | if last_off > -1 38 | diffs.push (off - last_off) 39 | if diffs.count == DIFFS_COUNT 40 | diffs.shift 41 | end 42 | end 43 | last_off = off 44 | 45 | if diffs.any? 46 | avg = diffs.sum / diffs.count.to_f 47 | secs = ((size.to_i - off.to_i) / avg.to_f).floor 48 | rem = "" 49 | if secs > (60 * 60) 50 | h = (secs / (60 * 60).to_f).floor 51 | rem = "#{sprintf("%02d", h)}h" 52 | secs -= (h * 60 * 60) 53 | end 54 | if secs > 60 || rem.length > 0 55 | m = (secs / 60.0).floor 56 | rem += "#{sprintf("%02d", m)}m" 57 | secs -= (m * 60) 58 | end 59 | rem += "#{sprintf("%02d", secs)}s left" 60 | else 61 | avg = 0 62 | rem = "-" 63 | end 64 | 65 | perc = sprintf("%0.2f%%", (off / size.to_f) * 100.0) 66 | print "\r\e[K#{cmd} (#{pid}): #{perc}, #{rem} (#{avg.floor} bytes/sec)" 67 | 68 | sleep 1 69 | rescue Interrupt 70 | puts "" 71 | exit 72 | end 73 | -------------------------------------------------------------------------------- /bin/mutt_bgrun: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | # vim:ft=ruby 3 | # 4 | # forks and executes the requested program with the temporary file given, 5 | # allowing mutt to return to its message view while you view the attachment in 6 | # the program 7 | # 8 | # usage in ~/.mailcap: 9 | # application/*; ~/bin/mutt_bgrun %t %s 10 | # 11 | 12 | require "fileutils" 13 | require "open3" 14 | 15 | mime = ARGV[0] 16 | orig_file = ARGV[1] 17 | 18 | if !orig_file 19 | STDERR.puts "usage: #{$0} " 20 | exit 1 21 | end 22 | 23 | if mime == "application/octet-stream" 24 | if orig_file.to_s.match(/\.pdf$/i) 25 | mime = "application/pdf" 26 | end 27 | end 28 | 29 | viewer = nil 30 | if `uname`.strip == "Darwin" 31 | viewer = "open" 32 | else 33 | case mime.to_s.downcase 34 | when 35 | "application/pdf", 36 | /^image\// 37 | viewer = "firefox" 38 | end 39 | end 40 | 41 | if !viewer 42 | STDERR.puts "no viewer for type #{mime.inspect}" 43 | exit 1 44 | end 45 | 46 | tmp_dir = `mktemp -d`.chomp 47 | tmp_file = tmp_dir + "/" + File.basename(orig_file).gsub(/[^A-Za-z_\.-]/, "") 48 | launch_file = tmp_file.dup 49 | 50 | if viewer == "firefox" 51 | launch_file = "file:///#{launch_file}" 52 | end 53 | 54 | system("cp", orig_file, tmp_file) 55 | 56 | Kernel.fork do 57 | i, _, _, w = Open3.popen3(viewer, launch_file) 58 | i.close 59 | 60 | begin 61 | Process.waitpid(w[:pid]) 62 | rescue Errno::ECHILD 63 | # process ended really quickly, most likely just handed it off to another 64 | # process, so wait a bit for it to process the tmp file before removing it 65 | sleep 5 66 | end 67 | 68 | sleep 5 69 | 70 | File.unlink tmp_file 71 | Dir.unlink tmp_dir 72 | end 73 | -------------------------------------------------------------------------------- /bin/upsnap: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | #set -x 5 | 6 | SETS="bsd.mp bsd.rd comp man game xbase xshare xserv base" 7 | 8 | if [ `id -u` = "0" ]; then 9 | echo "don't run me as root" 10 | exit 1 11 | fi 12 | 13 | T=`mktemp -t -d upsnap.XXXXXXX` 14 | cd $T 15 | 16 | fetch() { 17 | ftp `cat /etc/installurl`/snapshots/`machine`/$1 18 | } 19 | 20 | fetch "SHA256" 21 | fetch "SHA256.sig" 22 | 23 | REL=`grep 'comp...tgz' ${T}/SHA256.sig | sed -e 's/.tgz.*//' -e 's/.*comp//'` 24 | 25 | if [ "${REL}" = "" ]; then 26 | echo "can't find release version in SHA256.sig" 27 | exit 1 28 | fi 29 | 30 | # upgrade firmware first or wifi might not work on new kernel 31 | doas fw_update 32 | 33 | for f in $SETS; do 34 | fn="${f}${REL}.tgz" 35 | if [ $f = "bsd.rd" ] || [ $f = "bsd.mp" ]; then 36 | fn=$f 37 | fi 38 | 39 | fetch ${fn} 40 | signify -C -x SHA256.sig ${fn} || exit 1 41 | 42 | if [ $f = "bsd.rd" ]; then 43 | doas cp -f $f / 44 | elif [ $f = "bsd.mp" ]; then 45 | doas cp -f $f /bsd.snap 46 | else 47 | doas tar -xpz -C / -f ${f}${REL}.tgz 48 | fi 49 | done 50 | 51 | # delete relink kit since we have our own objects in /usr/share/relink/kernel/ 52 | doas rm -f /usr/share/relink/kernel.tgz 53 | 54 | # rebuild/install my local changes 55 | cd /usr/src && git catchup && doas make includes 56 | cd /usr/src/sbin/sysctl && (make clean depend all && doas make install) 57 | cd /usr/src/bin/dd && (make clean depend all && doas make install) 58 | 59 | (cd /dev; doas sh MAKEDEV all) 60 | doas env USER=$USER sh /etc/X11/xenodm/GiveConsole 61 | doas sysmerge 62 | doas rm -vf /etc/fonts/conf.d/{11-lcdfilter-default.conf,30-metric-aliases.conf,31-nonmst.conf,60-generic.conf} 63 | doas pkg_add -u -Dsnap 64 | doas rm -rf /usr/local/share/vlc/skins2/ 65 | -------------------------------------------------------------------------------- /.urxvt/ext/warn_on_close: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | # 3 | # Copyright (c) 2025 joshua stein 4 | # 5 | # Permission to use, copy, modify, and distribute this software for any 6 | # purpose with or without fee is hereby granted, provided that the above 7 | # copyright notice and this permission notice appear in all copies. 8 | # 9 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 | # 17 | 18 | sub on_child_start { 19 | my ($self, $pid) = @_; 20 | $self->{shell_pid} = $pid; 21 | } 22 | 23 | sub on_wm_delete_window { 24 | my ($self, $event) = @_; 25 | 26 | # find tty of shell pid 27 | my @tty = map { my $f = "/dev/" . $_; chomp($f); $f } 28 | grep { !/^TTY/ } 29 | `ps -o tty -p $self->{shell_pid}`; 30 | 31 | # find any other pids on this tty other than the shell 32 | my @running = map { /^(\d+) (.+)/ ? $2 : () } 33 | grep { /^\d+ / && !/^$self->{shell_pid} / } 34 | `ps -t $tty[0] -o pid,command`; 35 | 36 | if ($#running > -1) { 37 | open my $fh, "-|", 38 | "Xdialog", 39 | "--center", 40 | "--title", "urxvt", 41 | "--cancel-label", "No", 42 | "--ok-label", "Yes", 43 | "--yesno", 44 | ($#running == 0 ? "Process" : "Processes") . 45 | " still running here, close anyway?\\n\\n" . 46 | join("\\n", @running), 47 | scalar (12 + ($#running * 3)), 48 | "100" 49 | or die $!; 50 | my $ret = close($fh); 51 | if ($ret == 1) { 52 | # successful close, i pressed ok, close window 53 | return 0; 54 | } 55 | return 1; 56 | } 57 | 58 | return 0; 59 | } 60 | -------------------------------------------------------------------------------- /bin/music: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | CMUS="cmus" 4 | PIANOBAR="pianobar" 5 | AUDACIOUS="audacious" 6 | 7 | PLAYER="" 8 | if [ ! X`pgrep cmus` = X"" ]; then 9 | PLAYER=$CMUS 10 | elif [ ! X`pgrep pianobar` = X"" ]; then 11 | PLAYER=$PIANOBAR 12 | elif [ ! X`pgrep audacious` = X"" ]; then 13 | PLAYER=$AUDACIOUS 14 | else 15 | echo "no music player" 16 | exit 1 17 | fi 18 | 19 | case "$1" in 20 | next) 21 | case $PLAYER in 22 | $CMUS) 23 | ;; 24 | $PIANOBAR) 25 | echo -n 'n' > ~/.config/pianobar/ctl 26 | ;; 27 | $AUDACIOUS) 28 | audtool playlist-advance 29 | ;; 30 | esac 31 | ;; 32 | nextalbum) 33 | case $PLAYER in 34 | $CMUS) 35 | ;; 36 | $PIANOBAR) 37 | echo -n 'n' > ~/.config/pianobar/ctl 38 | ;; 39 | $AUDACIOUS) 40 | audtool playlist-advance-album 41 | ;; 42 | esac 43 | ;; 44 | prev) 45 | case $PLAYER in 46 | $CMUS) 47 | ;; 48 | $PIANOBAR) 49 | # not possible 50 | ;; 51 | $AUDACIOUS) 52 | audtool playlist-reverse 53 | ;; 54 | esac 55 | ;; 56 | prevalbum) 57 | case $PLAYER in 58 | $CMUS) 59 | ;; 60 | $PIANOBAR) 61 | ;; 62 | $AUDACIOUS) 63 | audtool playlist-reverse-album 64 | ;; 65 | esac 66 | ;; 67 | pause) 68 | case $PLAYER in 69 | $CMUS) 70 | cmus-remote -u 71 | ;; 72 | $PIANOBAR) 73 | echo -n 'S' > ~/.config/pianobar/ctl 74 | ;; 75 | $AUDACIOUS) 76 | # "audtool playback-pause" should just pause, but it stupidly inverts 77 | # playing status so we need to check if it's both playing and not 78 | # paused 79 | if [ `audtool playback-status` == "playing" ]; then 80 | audtool playback-pause 81 | fi 82 | ;; 83 | esac 84 | ;; 85 | playpause) 86 | case $PLAYER in 87 | $CMUS) 88 | cmus-remote -u 89 | ;; 90 | $PIANOBAR) 91 | echo -n 'p' > ~/.config/pianobar/ctl 92 | ;; 93 | $AUDACIOUS) 94 | audtool playback-playpause 95 | ;; 96 | esac 97 | ;; 98 | *) 99 | echo "unknown command \"${1}\"" 100 | exit 1 101 | ;; 102 | esac 103 | -------------------------------------------------------------------------------- /.config/sdorfehs/config: -------------------------------------------------------------------------------- 1 | set barinpadding 0 2 | set barpadding 24 14 3 | set barbordercolor black 4 | set barborder 6 5 | set bgcolor #d3ceb9 6 | set border 6 7 | set fgcolor #444444 8 | set ignoreresizehints 1 9 | set font "comic neue:bold:embolden:size=14" 10 | set gap 20 11 | set onlyborder 1 12 | set padding 40 40 40 40 13 | 14 | bind s split 15 | bind C-s split 16 | bind S hsplit 17 | bind C-S hsplit 18 | 19 | bind c exec urxvt 20 | bind C-c exec urxvt 21 | 22 | # lock the screen 23 | bind L exec pkill -USR1 xidle 24 | 25 | # web development view, split firefox and a terminal 26 | bind W exec sdorfehs -c "hsplit" -c "resize 200 0" 27 | 28 | # prevent accidental closes 29 | unbind k 30 | 31 | # swap workspaces, but define it in 'top' to avoid having to prefix with C-a 32 | definekey top M-1 vselect 0 33 | definekey top M-2 vselect 1 34 | definekey top M-3 vselect 2 35 | definekey top M-4 vselect 3 36 | 37 | # quickly jump to music 38 | definekey root 9 exec sdorfehs -c "vselect 0" -c "fselect 2" -c "select 9" 39 | 40 | # map to matebook F keys 41 | definekey top F1 exec sdorfehs -c "echo backlight: `xbacklight -dec 5 -time 0; xbacklight | sed 's/\..*//'`" 42 | definekey top F2 exec sdorfehs -c "echo backlight: `xbacklight -inc 5 -time 0; xbacklight | sed 's/\..*//'`" 43 | definekey top F4 exec ~/bin/volume mute 44 | definekey top F5 exec ~/bin/volume down 45 | definekey top F6 exec ~/bin/volume up 46 | 47 | definekey top F10 exec ~/bin/music prev 48 | definekey top F11 exec ~/bin/music playpause 49 | definekey top F12 exec ~/bin/music next 50 | definekey top M-F12 exec ~/bin/music nextalbum 51 | 52 | # i like tab just going between the same two windows 53 | bind Tab focuslast 54 | bind grave focus 55 | 56 | # act normal but prevent firefox raising itself when links are opened from 57 | # other apps 58 | #set rudeness 12 59 | 60 | # let popups stay centered 61 | unmanage OpenSSH Authentication Passphrase Request 62 | 63 | # tell the bar when we switch vscreens 64 | addhook switchvscreen exec ~/bin/sdorfehs-vscreen 65 | 66 | # startup configuration 67 | exec ruby ~/code/sdorfehs-bar/sdorfehs-bar.rb 68 | 69 | hsplit 70 | fselect 1 71 | split 1490 72 | fselect 0 73 | 74 | execf 0 env RUN_AND_RETURN=mutt urxvt -title mutt 75 | execf 1 env RUN_AND_RETURN=irc urxvt -title irssi 76 | fselect 2 77 | execf 2 audacious 78 | exec sleep 2; sdorfehs -c "fselect 1" -c "fselect 0" 79 | -------------------------------------------------------------------------------- /.vim/colors/jcs.vim: -------------------------------------------------------------------------------- 1 | " vim:sw=8:ts=8 2 | " 3 | " act like t_Co=0 but use (256) color on just a few things 4 | " 5 | 6 | set background=light 7 | 8 | hi clear 9 | if exists("syntax_on") 10 | syntax reset 11 | endif 12 | 13 | let colors_name = "jcs" 14 | 15 | hi Comment cterm=NONE ctermfg=242 16 | hi Constant cterm=underline ctermfg=NONE 17 | hi CursorLineNr cterm=bold ctermfg=244 18 | hi DiffAdd cterm=bold ctermfg=NONE 19 | hi DiffChange cterm=bold ctermfg=NONE 20 | hi DiffDelete cterm=bold ctermfg=NONE 21 | hi DiffText cterm=reverse ctermfg=NONE 22 | hi Directory cterm=bold ctermfg=NONE 23 | hi Error cterm=NONE ctermfg=NONE ctermbg=224 24 | hi ErrorMsg cterm=NONE ctermfg=NONE ctermbg=224 25 | hi FoldColumn cterm=standout ctermfg=NONE 26 | hi Folded cterm=standout ctermfg=NONE 27 | hi Identifier cterm=underline ctermfg=NONE 28 | hi Ignore cterm=bold ctermfg=NONE 29 | hi IncSearch cterm=reverse ctermfg=NONE 30 | hi LineNr cterm=NONE ctermfg=248 31 | hi MatchParen cterm=bold ctermfg=none ctermbg=185 32 | hi ModeMsg cterm=bold ctermfg=NONE 33 | hi MoreMsg cterm=bold ctermfg=NONE 34 | hi NonText cterm=bold ctermfg=NONE 35 | hi PreProc cterm=underline ctermfg=NONE 36 | hi Pmenu cterm=NONE ctermfg=NONE ctermbg=253 37 | hi PmenuSel cterm=bold ctermfg=NONE ctermbg=253 38 | hi Question cterm=standout ctermfg=NONE 39 | hi Search cterm=reverse ctermfg=NONE 40 | hi SignColumn cterm=NONE ctermfg=NONE ctermbg=NONE 41 | hi SpellBad cterm=NONE ctermfg=NONE ctermbg=224 42 | hi SpellLocal cterm=NONE ctermfg=NONE ctermbg=223 43 | hi Special cterm=bold ctermfg=NONE 44 | hi SpecialKey cterm=bold ctermfg=NONE 45 | hi Statement cterm=bold ctermfg=NONE 46 | hi StatusLine cterm=bold,reverse ctermfg=NONE 47 | hi StatusLineNC cterm=reverse ctermfg=NONE 48 | hi TabLine cterm=reverse ctermfg=NONE ctermbg=NONE 49 | hi Title cterm=bold ctermfg=NONE 50 | hi Todo cterm=bold,standout ctermfg=185 ctermbg=0 51 | hi Type cterm=bold ctermfg=NONE 52 | hi Underlined cterm=underline ctermfg=NONE 53 | hi VertSplit cterm=reverse ctermfg=NONE 54 | hi Visual cterm=reverse ctermfg=NONE ctermbg=NONE 55 | hi VisualNOS cterm=bold,underline ctermfg=NONE 56 | hi WarningMsg cterm=standout ctermfg=NONE 57 | hi WildMenu cterm=standout ctermfg=NONE 58 | 59 | hi ColorColumn cterm=NONE ctermfg=NONE ctermbg=252 60 | 61 | " for highlighting stray spaces/tabs (requires match statements in vimrc) 62 | hi ExtraWhitespace cterm=reverse ctermfg=185 ctermbg=NONE 63 | 64 | " mostly for nerdtree 65 | hi VertSplit cterm=bold ctermfg=240 ctermbg=NONE 66 | -------------------------------------------------------------------------------- /.xsession: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | #set -x 4 | 5 | if [ -f ~/.xsession.local ]; then 6 | . ~/.xsession.local 7 | fi 8 | 9 | cleanup() { 10 | echo "cleaning up" 11 | pkill ssh-agent-card-prompt dbus-daemon redshift picom 12 | pkill -f "ruby.*sdorfehs-bar" 13 | rm -f ~/.Xauthority 14 | rm -f ~/audacious.core 15 | rm -rf ~/.local/share/Trash 16 | } 17 | trap cleanup INT TERM QUIT 18 | 19 | if [ X`uname -s` = X"Linux" ]; then 20 | MACHINE="`cat /sys/devices/virtual/dmi/id/sys_vendor` `cat /sys/devices/virtual/dmi/id/product_name`" 21 | else 22 | MACHINE="`sysctl -n hw.vendor` `sysctl -n hw.product`" 23 | fi 24 | 25 | export LANG=en_US.UTF-8 26 | 27 | # better two-finger touchpad scrolling 28 | export MOZ_USE_XINPUT2=1 29 | # opengl acceleration 30 | export MOZ_ACCELERATED=1 31 | # force webrender to enable 32 | export MOZ_WEBRENDER=1 33 | 34 | # to allow style changes with qt5ct 35 | export QT_QPA_PLATFORMTHEME="qt5ct" 36 | 37 | SCREEN_WIDTH=`xrandr 2>&1 | grep "Screen 0: minimum" | sed -e 's/.*, current //' -e 's/ x.*//'` 38 | if [ "${SCREEN_WIDTH}" -ge 1920 ]; then 39 | echo "using HIDPI" 40 | export HIDPI=1 41 | export GDK_SCALE=1.5 42 | export QT_SCALE_FACTOR=1.5 43 | fi 44 | 45 | if [ "$HIDPI" = "1" ]; then 46 | xrdb -DHIDPI=1 -DHOME=$HOME < ~/.Xresources 47 | else 48 | xrdb -DHOME=$HOME < ~/.Xresources 49 | fi 50 | 51 | xsetroot -cursor_name left_ptr 52 | 53 | xmodmap ~/.xmodmap 54 | xset b 0 0 0 55 | xset r rate 350 35 56 | 57 | # touchpad - Accel Constant Deceleration 58 | xinput set-float-prop /dev/wsmouse0 300 0.4 59 | # touchpad - Accel Velocity Scaling 60 | xinput set-float-prop /dev/wsmouse0 302 1.5 61 | 62 | # disable built-in saver, because xidle will handle it 63 | xset s off 64 | # disable dpms, because slock will handle it 65 | xset dpms 0 0 0 66 | 67 | # ~/bin/music called from lock needs DBUS_SESSION_BUS_ADDRESS 68 | eval `dbus-launch --sh-syntax` 69 | 70 | # ~/bin/lock does some protections and runs slock 71 | xidle -timeout 1800 -sw -program ~/bin/lock & 72 | 73 | xbanish & 74 | tpadnav & 75 | xdimmer -kn -t 10 -s 1 -K & 76 | 77 | xcalib ~/.icc/x1nano.icc 78 | 79 | # run after any icc profile loading 80 | redshift -l 41.90:-87.66 -t 5000:3500 -m randr & 81 | 82 | if [ "$WM" = "progman" -a -x ~/code/progman/progman ]; then 83 | (sleep 1; xbatticon) & 84 | (sleep 1.2; FMT=`printf "%%a %%b %%d\n%%H:%%M"`; xcalicon -f "$FMT") & 85 | (sleep 1.4; xweathericon -k $WEATHER_API_KEY -z $WEATHER_ZIPCODE) & 86 | 87 | # debugging setup: 88 | #tmux new-session -d ~/code/progman/progman 89 | #sleep 1 90 | #while pgrep -q progman; do 91 | # sleep 1 92 | #done 93 | ~/code/progman/progman 94 | elif [ "$WM" = "sdorfehs" -a -x ~/code/sdorfehs/sdorfehs ]; then 95 | hsetroot -solid "#a3ccbd" 96 | picom -b 97 | ~/code/sdorfehs/sdorfehs 98 | elif [ "$WM" = "xterm" ]; then 99 | /usr/X11R6/bin/xterm 100 | elif [ -x /usr/X11R6/bin/fvwm ]; then 101 | /usr/X11R6/bin/fvwm 102 | else 103 | /usr/X11R6/bin/xterm 104 | fi 105 | 106 | cleanup 107 | -------------------------------------------------------------------------------- /.muttrc.lists: -------------------------------------------------------------------------------- 1 | # vim:tw=0 2 | 3 | # whois me 4 | alternates (jcs@(superblock\.net|jcs\.org|(cvs\.)?openbsd\.org|pushover\.net)|((billing|support)@(superblock|pushover)\.net)) 5 | 6 | # default address, no signature 7 | folder-hook . set \ 8 | from="jcs@jcs.org" \ 9 | realname=\"joshua stein\" \ 10 | signature= 11 | folder-hook . my_hdr Bcc: jcs@jcs.org 12 | folder-hook . unset include_onlyfirst 13 | folder-hook . set record="=Sent" 14 | 15 | # common folders 16 | macro index P =Other%20Users/support@pushover.net 17 | macro pager P =Other%20Users/support@pushover.net 18 | macro index H =openbsd-hackers 19 | macro pager H =openbsd-hackers 20 | 21 | # by default, set format=flowed on outbound e-mail so it looks right in 22 | # variable-width mail readers, but disable it for openbsd things because 23 | # i'm often sending patches that may get mangled by that 24 | folder-hook . set text_flowed 25 | 26 | # openbsd identity 27 | send-hook '~C .*@openbsd\.org' 'unset text_flowed' 28 | reply-hook '~C .*@openbsd\.org' 'unset text_flowed' 29 | reply-hook '~f .*@openbsd\.org' 'unset text_flowed' 30 | 31 | folder-hook .*openbsd-.* set \ 32 | signature= \ 33 | sort=threads 34 | folder-hook .*openbsd-.* unset text_flowed 35 | 36 | # pushover identity 37 | folder-hook =.*pushover.* set \ 38 | from="support@pushover.net" \ 39 | realname=\"Pushover Support\" \ 40 | signature=~/.signature.pushover \ 41 | sort=threads \ 42 | strict_threads=yes \ 43 | sort_aux=last-date-received 44 | folder-hook =.*pushover.* unmy_hdr Bcc 45 | folder-hook =.*pushover.* my_hdr Bcc: support@pushover.net 46 | folder-hook =.*pushover.* set include_onlyfirst 47 | folder-hook =.*pushover.* set record="=Other%20Users/support@pushover.net/Sent" 48 | 49 | # remove all mailboxes, then auto-load imap ones 50 | unmailboxes * 51 | 52 | # fastmail's shared folders have dots in them which confuses mutt so 53 | # remove dot as a delim char 54 | set imap_delim_chars="/" 55 | 56 | # make the sidebar list all imap folders 57 | set imap_list_subscribed=yes 58 | set imap_check_subscribed=yes 59 | set sidebar_short_path=yes 60 | set sidebar_folder_indent=yes 61 | set sidebar_indent_string=" " 62 | 63 | # reconnect as needed 64 | set imap_passive=no 65 | 66 | # set these as defaults in case the folder-hook doesn't run, 67 | # such as when sending from the command line 68 | set from="jcs@jcs.org" 69 | set realname="joshua stein" 70 | set signature= 71 | my_hdr Bcc: jcs@jcs.org 72 | set record="=Sent" 73 | 74 | # put these mailboxes first before imap-subscribed ones 75 | mailboxes =INBOX 76 | mailboxes =Other%20Users/support@pushover.net 77 | mailboxes =Other%20Users/support@pushover.net/daily 78 | mailboxes =Other%20Users/support@pushover.net/Sent 79 | #mailboxes =Other%20Users/support@pushover.net/Archive 80 | 81 | # mailing lists for list-reply 82 | 83 | # chibug 84 | subscribe chibug 85 | 86 | subscribe chiclassiccomp 87 | 88 | # openbsd 89 | subscribe bugs 90 | subscribe hackers 91 | subscribe misc 92 | subscribe ports 93 | subscribe ports-changes 94 | subscribe source-changes 95 | subscribe tech 96 | 97 | subscribe mailstation 98 | 99 | subscribe openssh-unix-dev 100 | 101 | subscribe oss-security 102 | 103 | subscribe chibug 104 | -------------------------------------------------------------------------------- /.Xresources: -------------------------------------------------------------------------------- 1 | ! vim:ts=8 2 | 3 | #ifdef HIDPI 4 | ! pkg_add xcursor-dmz 5 | Xcursor.theme: dmz 6 | Xcursor.size: 64 7 | 8 | Xft.dpi: 112 9 | #endif 10 | 11 | ! a muted palette for athena things like xterm, xfontsel, etc. 12 | #define BG #eae5ce 13 | #define FG #444444 14 | *.background: BG 15 | *.foreground: FG 16 | 17 | *.scrollbar.background: BG 18 | *.scrollbar.foreground: FG 19 | *.scrollBar.minimumThumb: 50 20 | *.scrollbar.width: 10 21 | 22 | *.borderColor: BG 23 | 24 | #ifdef HIDPI 25 | .font: -*-lucida-medium-r-*-*-24-*-*-*-*-*-*-* 26 | #else 27 | *.font: -*-lucida-medium-r-*-*-12-*-*-*-*-*-*-* 28 | #endif 29 | 30 | ! solarized (light) 31 | 32 | ! black 33 | URxvt.color0: FG 34 | URxvt.color8: #333333 35 | 36 | ! red 37 | URxvt.color1: #dc322f 38 | URxvt.color9: #cb4b16 39 | 40 | ! green 41 | URxvt.color2: #859900 42 | URxvt.color10: #93a1a1 43 | 44 | ! yellow 45 | URxvt.color3: #b58900 46 | URxvt.color11: #839496 47 | 48 | ! blue 49 | URxvt.color4: #268bd2 50 | URxvt.color12: #657b83 51 | 52 | ! magenta 53 | URxvt.color5: #d33682 54 | URxvt.color13: #6c71c4 55 | 56 | ! cyan 57 | URxvt.color6: #2aa198 58 | URxvt.color14: #586e75 59 | 60 | ! white (gray) 61 | URxvt.color7: #d9d7cc 62 | URxvt.color15: #e5e5e5 63 | 64 | 65 | ! urxvt-specific settings 66 | 67 | #ifdef HIDPI 68 | URxvt.internalBorder: 24 69 | #else 70 | URxvt.internalBorder: 12 71 | #endif 72 | URxvt.utmpInhibit: true 73 | URxvt.loginShell: true 74 | URxvt.saveLines: 20000 75 | URxvt.scrollBar: false 76 | URxvt.selectToClipboard: true 77 | URxvt.termName: xterm-256color 78 | 79 | ! hide when i type 80 | URxvt.pointerBlank: true 81 | 82 | ! if i scrolled up, leave it that way when more output comes 83 | URxvt.scrollTtyOutput: false 84 | ! but not when i press a key 85 | URxvt.scrollTtyKeypress: true 86 | 87 | !URxvt.geometry: 80x40 88 | URxvt.geometry: 80x100 89 | 90 | #ifdef HIDPI 91 | URxvt.font: xft:Iosevka (jcs):size=12.5,xft:noto emoji:size=12.5 92 | URxvt.boldFont: xft:Iosevka (jcs):weight=bold:size=12.5,xft:noto emoji:weight=bold:size=12.5 93 | URxvt.letterSpace: -1 94 | #else 95 | URxvt.font: 6x13,xft:noto emoji:size=12,xft:symbola 96 | URxvt.boldFont: 6x13bold,xft:noto emoji:weight=bold:size=12 97 | URxvt.letterSpace: 0 98 | #endif 99 | 100 | ! make alt+v/command+v paste clipboard 101 | URxvt.keysym.M-v: eval:paste_clipboard 102 | URxvt.keysym.Mod4-v: eval:paste_clipboard 103 | URxvt.cutchars: "`\"'&()*,;<=>?@[]^{|}.:/-" 104 | 105 | ! support right-clicking urls to open them 106 | URxvt.perl-ext-common: default,matcher,selection-to-clipboard,-selection 107 | URxvt.url-launcher: HOME/bin/firefox 108 | URxvt.matcher.button: 3 109 | URxvt.matcher.rend.0: Uline 110 | 111 | ! disable paste warning 112 | URxvt.perl-ext: -confirm-paste,ls_l,warn_on_close 113 | 114 | SshAskpass*inputTimeout: 15 115 | 116 | #ifdef HIDPI 117 | SshAskpass*Button.font: -*-lucida-medium-r-*-*-32-*-*-*-*-*-*-* 118 | SshAskpass*Dialog.font: -*-lucida-medium-r-*-*-36-*-*-*-*-*-*-* 119 | SshAskpass*Indicator.width: 40 120 | SshAskpass*Indicator.height: 20 121 | SshAskpass*defaultXResolution: 200/in 122 | SshAskpass*defaultYResolution: 200/in 123 | #endif 124 | 125 | XClock*.update: 1 126 | XClock*.analog: False 127 | XClock*.render: True 128 | XClock*.padding: 40 129 | XClock*.face: Microsoft Sans Serif:size=20 130 | XClock*.strftime: %a %b %d %H:%M 131 | XClock*.background: #c0c7c8 132 | -------------------------------------------------------------------------------- /.fonts.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 15 | 16 | 17 | 18 | true 19 | 20 | 21 | true 22 | 23 | 24 | false 25 | 26 | 27 | hintnone 28 | 29 | 30 | rgb 31 | 32 | 33 | lcddefault 34 | 35 | 36 | 37 | 38 | 39 | emoji 40 | Twitter Color Emoji 41 | 42 | 43 | Apple Color Emoji 44 | Twitter Color Emoji 45 | sans-serif 46 | 47 | 48 | Segoe UI Emoji 49 | Twitter Color Emoji 50 | sans-serif 51 | 52 | 53 | Noto Color Emoji 54 | Twitter Color Emoji 55 | sans-serif 56 | 57 | 58 | 59 | 60 | sans-serif 61 | Helvetica Neue 62 | 63 | 64 | serif 65 | Times New Roman 66 | 67 | 68 | 72 | 73 | 74 | monospace 75 | 76 | 77 | regular 78 | 79 | 80 | Input Mono Narrow ExLight 81 | 82 | 83 | true 84 | 85 | 86 | 87 | 88 | monospace 89 | 90 | 91 | regular 92 | 93 | 94 | Input Mono Narrow 95 | 96 | 97 | 98 | 99 | 100 | 101 | /usr/X11R6/lib/X11/fonts/TTF/DejaVuSans* 102 | 103 | 104 | /usr/local/share/fonts/ghostscript/* 105 | 106 | 107 | /usr/X11R6/lib/X11/fonts/100dpi/* 108 | 109 | 110 | /usr/X11R6/lib/X11/fonts/75dpi/* 111 | 112 | 113 | 114 | -------------------------------------------------------------------------------- /.gvimrc: -------------------------------------------------------------------------------- 1 | " vim:ts=8 2 | " 3 | " macvim 7 config 4 | " mostly emulates a writeroom environment that runs in fullscreen 5 | " 6 | " joshua stein 7 | 8 | set lines=50 9 | set columns=80 10 | 11 | set guioptions-=r " remove scrollbar 12 | set formatoptions=1 " don't break after 1-letter word 13 | set fuoptions=background:#00000000 " black out space around editor in fs 14 | set lbr " break lines on words 15 | 16 | " free up command+f to be used for toggline fullscreen 17 | macmenu &Edit.Find.Find\.\.\. key= 18 | map :set invfu 19 | 20 | " create a dark color scheme based on 21 | " http://vimcolorschemetest.googlecode.com/svn/colors/matrix.vim 22 | hi clear 23 | set background=dark 24 | hi Cursor guifg=#226622 guibg=#55ff55 25 | hi lCursor guifg=#226622 guibg=#55ff55 26 | " like Cursor, but used when in IME mode |CursorIM| 27 | hi CursorIM guifg=#226622 guibg=#55ff55 28 | " directory names (and other special names in listings) 29 | hi Directory guifg=#55ff55 guibg=#000000 30 | " diff mode: Added line |diff.txt| 31 | hi DiffAdd guifg=#55ff55 guibg=#226622 gui=none 32 | " diff mode: Changed line |diff.txt| 33 | hi DiffChange guifg=#55ff55 guibg=#226622 gui=none 34 | " diff mode: Deleted line |diff.txt| 35 | hi DiffDelete guifg=#113311 guibg=#113311 gui=none 36 | " diff mode: Changed text within a changed line |diff.txt| 37 | hi DiffText guifg=#55ff55 guibg=#339933 gui=bold 38 | " error messages on the command line 39 | hi ErrorMsg guifg=#55ff55 guibg=#339933 40 | " the column separating vertically split windows 41 | hi VertSplit guifg=#339933 guibg=#339933 42 | " line used for closed folds 43 | hi Folded guifg=#44cc44 guibg=#113311 44 | " 'foldcolumn' 45 | hi FoldColumn guifg=#44cc44 guibg=#226622 46 | " 'incsearch' highlighting; also used for the text replaced with 47 | hi IncSearch guifg=#226622 guibg=#55ff55 gui=none 48 | " line number for ":number" and ":#" commands, and when 'number' 49 | hi LineNr guifg=#44cc44 guibg=#000000 50 | " 'showmode' message (e.g., "-- INSERT --") 51 | hi ModeMsg guifg=#113311 guibg=#000000 52 | " |more-prompt| 53 | hi MoreMsg guifg=#44cc44 guibg=#000000 54 | " '~' and '@' at the end of the window, characters from 55 | hi NonText guifg=#113311 guibg=#000000 56 | " normal text 57 | hi Normal guifg=#44cc44 guibg=#000000 58 | " |hit-enter| prompt and yes/no questions 59 | hi Question guifg=#44cc44 guibg=#000000 60 | " Last search pattern highlighting (see 'hlsearch'). 61 | hi Search guifg=#113311 guibg=#44cc44 gui=none 62 | " Meta and special keys listed with ":map", also for text used 63 | hi SpecialKey guifg=#44cc44 guibg=#000000 64 | " status line of current window 65 | hi StatusLine guifg=#113311 guibg=#000000 gui=none 66 | " status lines of not-current windows 67 | hi StatusLineNC guifg=#113311 guibg=#000000 gui=none 68 | " titles for output from ":set all", ":autocmd" etc. 69 | hi Title guifg=#55ff55 guibg=#113311 gui=bold 70 | " Visual mode selection 71 | hi Visual guifg=#55ff55 guibg=#226622 gui=none 72 | " Visual mode selection when vim is "Not Owning the Selection". 73 | hi VisualNOS guifg=#44cc44 guibg=#000000 74 | " warning messages 75 | hi WarningMsg guifg=#55ff55 guibg=#000000 76 | " current match in 'wildmenu' completion 77 | hi WildMenu guifg=#226622 guibg=#55ff55 78 | 79 | hi Comment guifg=#226622 guibg=#000000 80 | hi Constant guifg=#55ff55 guibg=#226622 81 | hi Special guifg=#44cc44 guibg=#226622 82 | hi Identifier guifg=#55ff55 guibg=#000000 83 | hi Statement guifg=#55ff55 guibg=#000000 gui=bold 84 | hi PreProc guifg=#339933 guibg=#000000 85 | hi Type guifg=#55ff55 guibg=#000000 gui=bold 86 | hi Underlined guifg=#55ff55 guibg=#000000 gui=underline 87 | hi Error guifg=#55ff55 guibg=#339933 88 | hi Todo guifg=#113311 guibg=#44cc44 gui=none 89 | -------------------------------------------------------------------------------- /.config/progman/progman.ini: -------------------------------------------------------------------------------- 1 | # 2 | # This is the configuration file for progman, and is optional. It should exist 3 | # at ~/.config/progman/progman.ini 4 | # 5 | # Lines starting with '#' are ignored as comments. 6 | # 7 | 8 | [progman] 9 | font = Microsoft Sans Serif:bold:size=12 10 | iconfont = Microsoft Sans Serif:size=10 11 | 12 | # Focused windows 13 | fgcolor = white 14 | bgcolor = #0000a8 15 | 16 | # Unfocused windows 17 | unfocused_fgcolor = black 18 | unfocused_bgcolor = white 19 | 20 | # Borders 21 | border_fgcolor = black 22 | border_bgcolor = #c0c7c8 23 | border_width = 6 24 | button_bgcolor = #c0c7c8 25 | title_padding = 6 26 | 27 | # For HiDPI displays, how many times to scale icons and buttons 28 | scale = 2 29 | 30 | # Launcher 31 | launcher_fgcolor = black 32 | launcher_bgcolor = #c0c7c8 33 | 34 | # When not specified, the root color is not changed 35 | #root_bgcolor = #a3ccbd 36 | root_bgcolor = #b7d3e0 37 | 38 | # Move windows by holding down this key and mouse button 39 | drag_combo = Win+Mouse1 40 | 41 | # When moving windows, how hard to resist going off-screen 42 | edgeresist = 80 43 | 44 | # Custom key bindings can be specified as "Modifier+Key = action". 45 | [keyboard] 46 | Win+Tab = cycle 47 | Shift+Win+Tab = reverse_cycle 48 | Win+1 = desk 0 49 | Win+2 = desk 1 50 | Win+3 = desk 2 51 | Win+4 = desk 3 52 | Win+5 = desk 4 53 | Win+6 = desk 5 54 | Win+7 = desk 6 55 | Win+8 = desk 7 56 | Win+9 = desk 8 57 | Win+0 = desk 9 58 | Ctrl+Win+L = exec pkill -USR1 xidle 59 | Win+Return = exec urxvt -g 80x40 60 | # x1 nano F keys 61 | F1 = exec ~/bin/volume mute 62 | F2 = exec ~/bin/volume down 63 | F3 = exec ~/bin/volume up 64 | F5 = exec xbacklight -dec 10 -steps 1 -time 0 65 | F6 = exec xbacklight -inc 10 -steps 1 -time 0 66 | F10 = exec ~/bin/music prev 67 | F11 = exec ~/bin/music playpause 68 | F12 = exec ~/bin/music next 69 | Win+F12 = exec ~/bin/music nextalbum 70 | # but let Win+F# send that F# key to the selected window 71 | Win+F1 = exec xdotool selectwindow key F1 72 | Win+F2 = exec xdotool selectwindow key F2 73 | Win+F3 = exec xdotool selectwindow key F3 74 | Win+F4 = exec xdotool selectwindow key F4 75 | Win+F5 = exec xdotool selectwindow key F5 76 | Win+F6 = exec xdotool selectwindow key F6 77 | Win+F7 = exec xdotool selectwindow key F7 78 | Win+F8 = exec xdotool selectwindow key F8 79 | Win+F9 = exec xdotool selectwindow key F9 80 | Win+F10 = exec xdotool selectwindow key F10 81 | Win+F11 = exec xdotool selectwindow key F11 82 | # creative bt-w3 keys sent via ucc(4) 83 | XF86AudioPlay = exec ~/bin/music playpause 84 | XF86AudioNext = exec ~/bin/music next 85 | XF86AudioPrev = exec ~/bin/music prev 86 | 87 | # Mouse clicks on desktop: right click reveals launcher, middle click launches 88 | # terminal, wheel navigates desktops 89 | [desktop] 90 | Mouse2 = exec urxvt -g 80x40 91 | Mouse3 = launcher 92 | Mouse4 = desk next 93 | Mouse5 = desk previous 94 | 95 | # When the launcher action is performed from a key binding or desktop click, 96 | # this list will be shown; actions are the same as keyboard bindings 97 | [launcher] 98 | Urxvt = exec urxvt -g 80x40 99 | Mutt = exec env RUN_AND_RETURN=mutt urxvt -g 100x48+20+20 -title mutt 100 | IRC = exec env RUN_AND_RETURN=irc urxvt -g 90x30-32+20 -title irssi 101 | SyncTERM = exec syncterm -iS 102 | Audacious = exec audacious 103 | Firefox = exec firefox 104 | - = 105 | Xfe = exec xfe ~/Downloads 106 | Geeqie = exec geeqie 107 | Gimp = exec gimp 108 | XCalc = exec xcalc 109 | XEyes = exec xeyes 110 | XClock = exec xclock -g -40-80 111 | Screenshot = exec ksnip 112 | Lock = exec pkill -USR1 xidle 113 | - = 114 | Volume Up = exec ~/bin/volume up 115 | Volume Down = exec ~/bin/volume down 116 | - = 117 | Restart = restart 118 | Quit = quit 119 | -------------------------------------------------------------------------------- /bin/xsudo: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | # 3 | # xsudo 4 | # Run an X11 command via sudo (most likely as an unprivileged user) with 5 | # temporary, untrusted xauth forwarding and rc-file copying 6 | # 7 | # Copyright (c) 2017 joshua stein 8 | # 9 | # Permission to use, copy, modify, and distribute this software for any 10 | # purpose with or without fee is hereby granted, provided that the above 11 | # copyright notice and this permission notice appear in all copies. 12 | # 13 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 14 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 15 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 16 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 17 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 18 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 19 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 20 | # 21 | 22 | # 23 | # Example setup: 24 | # groupadd _firefox 25 | # usermod -G _firefox $USER 26 | # useradd -g _firefox -m _firefox 27 | # chmod 770 ~_firefox 28 | # cp -r ~/.mozilla ~_firefox/ 29 | # chown -R _firefox:_firefox ~_firefox/.mozilla 30 | # 31 | # Add to sudoers: 32 | # %wheel ALL=(_firefox) NOPASSWD: /usr/local/bin/firefox 33 | # 34 | # Example usage: 35 | # xsudo -u _firefox /usr/local/bin/firefox 36 | # 37 | # By default, ~/.fonts.conf and ~/.config/gtk-3.0 are copied into the 38 | # unprivileged user's home directory before running. Additional 39 | # files/directories can be specified with multiple -f flags. 40 | # 41 | # X11 connections are untrusted by default, but some programs (like firefox) 42 | # run much slower in this mode for some reason. Passing -t will mark these 43 | # temporary connections as trusted (see Xsecurity(7)). 44 | # 45 | 46 | usage() { 47 | echo "usage: `basename $0` [-f file to copy] [-t] -u username command" 48 | exit 1 49 | } 50 | 51 | UNPRIV_USER= 52 | CMD= 53 | TRUSTED="untrusted" 54 | RC_FILES=".fonts.conf .config/gtk-3.0/" 55 | 56 | while getopts "f:tu:" o; do 57 | case "$o" in 58 | f) 59 | RC_FILES="${RC_FILES} ${OPTARG}" 60 | ;; 61 | t) 62 | TRUSTED="trusted" 63 | ;; 64 | u) 65 | UNPRIV_USER="$OPTARG" 66 | ;; 67 | *) 68 | usage 69 | ;; 70 | esac 71 | done 72 | shift $((OPTIND-1)) 73 | 74 | if [ X"${1}" = X"" ]; then 75 | usage 76 | fi 77 | 78 | CMD=$* 79 | 80 | # validate unprivileged user 81 | if [ X"$UNPRIV_USER" = X"" ]; then 82 | usage 83 | fi 84 | PLINE="getent passwd ${UNPRIV_USER}" 85 | if [ X"`${PLINE}`" = X"" ]; then 86 | echo "user \"${UNPRIV_USER}\" does not exist" > /dev/stderr 87 | usage 88 | fi 89 | UNPRIV_HOME=`${PLINE} | awk '{ FS=":" }{ print $6 }'` 90 | if [ X"${UNPRIV_HOME}" = X"" -o ! -d $UNPRIV_HOME ]; then 91 | echo "home of ${UNPRIV_USER} (${UNPRIV_HOME}) does not exist" > /dev/stderr 92 | exit 1 93 | fi 94 | 95 | # validate unprivileged user's home directory permissions, which must 96 | # allow us to write to it, but noone else to read from it 97 | UNPRIV_HOME_P=`ls -l ${UNPRIV_HOME} | awk '{ print $1 }'` 98 | if [ X"$UNPRIV_HOME_P" = X"drwxrwx---" ]; then 99 | echo "permissions on ${UNPRIV_HOME} must be 0770, are ${UNPRIV_HOME_P}" 100 | exit 1 101 | fi 102 | 103 | # generate temporary untrusted authorization 104 | if [ -f $UNPRIV_HOME/.Xauthority ]; then 105 | rm -f $UNPRIV_HOME/.Xauthority 106 | fi 107 | touch $UNPRIV_HOME/.Xauthority 108 | xauth -f $UNPRIV_HOME/.Xauthority generate $DISPLAY . $TRUSTED 109 | chmod 660 $UNPRIV_HOME/.Xauthority 110 | 111 | # copy files into the untrusted user's home 112 | (cd ~; tar -chf - $RC_FILES) | (cd $UNPRIV_HOME; tar xf -) 113 | for f in $RC_FILES; do 114 | chgrp -R $UNPRIV_USER $UNPRIV_HOME/$f 115 | chmod -R g=u $UNPRIV_HOME/$f 116 | done 117 | 118 | # run the actual command 119 | cd $UNPRIV_HOME 120 | sudo -u $UNPRIV_USER -H $CMD 121 | 122 | # remove auth 123 | rm -f $UNPRIV_HOME/.Xauthority 124 | -------------------------------------------------------------------------------- /bin/macpaint2png: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # convert a macpaint file to a 200% scaled png with transparent corners 4 | # 5 | 6 | set -e 7 | 8 | INPUT=$1 9 | 10 | if [ "$INPUT" = "" ]; then 11 | echo "usage: ${0} " 12 | exit 1 13 | fi 14 | 15 | WD=`mktemp -d` 16 | 17 | cat < 5 | # 6 | 7 | # environment variables 8 | export BLOCKSIZE=1k 9 | export CVS_RSH=/usr/bin/ssh 10 | export IRCNAME="*Unknown*" 11 | unset HISTFILE 12 | export LANG=en_US.UTF-8 13 | export LESS="-i" 14 | export LESSHISTFILE=/dev/null 15 | export MYSQL_HISTFILE=/dev/null 16 | export NO_COLOR=1 17 | export PAGER="less -R" 18 | export PATH=~/bin:~/go/bin:/usr/local/bin:/usr/local/sbin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/X11R6/bin 19 | export SSH_ASKPASS_REQUIRE=prefer 20 | 21 | # let control+w only delete one directory of a path, not the whole word 22 | export WORDCHARS='*?_[]~=&;!#$%^(){}' 23 | 24 | # on non-interactive shells, just exit here to speed things up 25 | if [[ ! -o interactive ]]; then 26 | return 27 | fi 28 | 29 | # zsh will try to use vi key bindings because of the vi $EDITOR, but i want 30 | # emacs style for control+a/e, etc. 31 | bindkey -e 32 | 33 | # i'm too lazy to type these out 34 | alias calc='perl -pe "print eval(\$_) . chr(10);"' 35 | alias cdgmp='cd /usr/src/sys/arch/`arch -s`/compile/GENERIC.MP' 36 | alias cdu="cvs -q diff -upRN" 37 | alias cp="cp -i" 38 | alias gd="git diff" 39 | alias gs="git status" 40 | alias hg="history | grep " 41 | alias jobs="jobs -p" 42 | alias k9="kill -9 %1" 43 | alias ll="ls -alF" 44 | alias ltr="ls -alFtr" 45 | alias ls="ls -aF" 46 | alias mv="mv -i" 47 | alias offline_mutt="mutt -R -F ~/.muttrc.offline" 48 | alias patchp0="patch -p0 -V none" 49 | alias ph="ps auwwx | head" 50 | alias pg="ps auwwx | grep -i -e ^USER -e " 51 | alias publicip="curl -w '\n' -s http://ifconfig.me" 52 | alias refetch="cvs -q up -PACd" 53 | alias rg="rg --color=never -N -z" 54 | alias telnet="telnet -K" 55 | alias tm="tail -f /var/log/messages" 56 | alias u="cvs -q up -PAd" 57 | # serve up the current directory 58 | alias webserver="ifconfig | grep 'inet ' | grep -v 127.0.0.1; python2 -m SimpleHTTPServer" 59 | 60 | # when i say vi i mean vim (if it's installed) 61 | if [ -x "`which vim`" ]; then 62 | alias vi="vim" 63 | alias view="vim -R" 64 | export EDITOR=`which vim` 65 | else 66 | export EDITOR=/usr/bin/vi 67 | fi 68 | 69 | # options 70 | setopt noclobber # halp me 71 | setopt nohup # don't kill things when i logout 72 | setopt print_exit_value # i want to know if something went wrong 73 | HISTSIZE=500 74 | PS1="%m:%~%(!.#.$) " # prompt 75 | TMOUT=0 # don't auto logout 76 | 77 | # i am frequently too quick to logout with control+d twice (one to exit ssh, 78 | # another to close the terminal) and will miss the 'you have suspended jobs' 79 | # message, so hitting it twice still logs me out. prevent that by not sending 80 | # eof on control+d but manually bind to it and run a function that exits. 81 | setopt ignore_eof 82 | _block_quick_bail() { 83 | _sj=`jobs -sp` 84 | if [[ $_sj == "" ]]; then 85 | exit 86 | else 87 | _sj=$'\n'${_sj} 88 | zle -M "zsh: you have suspended jobs:${_sj}" 89 | fi 90 | } 91 | zle -N _block_quick_bail 92 | bindkey '^d' _block_quick_bail 93 | 94 | # show all logins and such 95 | watch=all 96 | WATCHFMT="%B%n%b %a %l at %@" 97 | 98 | # etc 99 | limit coredumpsize 0 # don't know why you'd want anything else 100 | umask 022 # be nice 101 | 102 | # https://superuser.com/questions/458906 103 | __git_files () { 104 | _wanted files expl 'local files' _files 105 | } 106 | 107 | # envs.sh file service 108 | mirror() { 109 | curl -F "url=$1" https://envs.sh/ 110 | } 111 | upload() { 112 | if [[ -z $1 ]]; then a="file=@-"; else a="file=@$1"; fi 113 | curl -F $a https://envs.sh/ 114 | } 115 | 116 | # os-specific tweaks 117 | 118 | # mac os 119 | if [[ $OSTYPE = darwin* ]]; then 120 | export STORE_LASTDIR=1 121 | export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer" 122 | 123 | elif [[ $OSTYPE = linux* ]]; then 124 | alias ls="ls -aFv" 125 | alias ph="ps auwwx | sort -rk 3,3 | head" 126 | fi 127 | 128 | # and the reverse 129 | if [[ $OSTYPE != linux* ]]; then 130 | # siginfo 131 | stty status '^T' 132 | fi 133 | 134 | if [[ $OSTYPE != darwin* ]]; then 135 | watch= 136 | fi 137 | 138 | case $TERM in 139 | xterm*) 140 | precmd() { print -Pn "\e]0;%m:%~$\a" } 141 | preexec() { print -Pn "\e]0;%m:%~$ ${~1:gs/%/%%}\a" } 142 | ;; 143 | esac 144 | 145 | if [ -f ~/.zshrc.local ]; then 146 | source ~/.zshrc.local 147 | fi 148 | 149 | if [ "$STORE_LASTDIR" = "1" ]; then 150 | # now go to the last dir that was there 151 | chpwd() { 152 | pwd >! ~/.zsh.lastdir 153 | } 154 | 155 | if [ -f ~/.zsh.lastdir ]; then 156 | if [ -d "`cat ~/.zsh.lastdir`" ]; then 157 | cd "`cat ~/.zsh.lastdir`" 158 | else 159 | rm -f ~/.zsh.lastdir 160 | fi 161 | fi 162 | fi 163 | -------------------------------------------------------------------------------- /.muttrc: -------------------------------------------------------------------------------- 1 | # vim:ts=3:et:ft=muttrc 2 | # 3 | # mutt config 4 | # joshua stein 5 | # 6 | 7 | # things to set 8 | set ascii_chars=no 9 | set alias_file=~/.muttrc.aliases 10 | set attach_format="%u%D%I %t%2n %T%.20d %> [%.7m/%.10M, %.6e%?C?, %C?, %s] " 11 | set charset=utf-8 12 | set confirmappend=no 13 | set connect_timeout=3 14 | set date_format="!%a, %d %b %Y at %H:%M:%S %Z" 15 | set delete=yes 16 | set display_filter="~/bin/mutt_filter" 17 | set editor="vim" 18 | set fast_reply=yes 19 | set folder=~/Mail 20 | set forward_format="fwd: %s" 21 | set header_cache=~/.mutt-cache/ 22 | set hostname=localhost 23 | set include=yes 24 | set index_format="%[!%m%d] [%Z] %-52.52s %F" 25 | set ispell="aspell --mode=email --add-email-quote=%,#,:,} --check" 26 | set mail_check=60 27 | set mark_old=no 28 | set markers=no 29 | set menu_context=1 30 | set message_cache_clean=yes 31 | set message_cachedir=~/.mutt-cache/ 32 | set metoo=no 33 | set mime_forward=ask-no 34 | set move=no 35 | set narrow_tree=yes 36 | set pager_context=2 37 | set pager_stop=yes 38 | set pager_format=" %f: %s" 39 | set pipe_decode=yes 40 | set postpone=ask-no 41 | set print=ask-no 42 | set quit=ask-yes 43 | set read_inc=100 44 | set reply_to=yes 45 | set send_charset="utf-8:us-ascii" 46 | set sendmail="msmtp" 47 | set sidebar_delim_chars="/" 48 | set sidebar_divider_char="│ " 49 | set sidebar_format="%B%* %?N?(%N)?" 50 | set sidebar_visible=yes 51 | set sidebar_width=18 52 | set smart_wrap=yes 53 | set sort=threads 54 | set status_format=" %h: %f (msgs:%?M?%M/?%m %l%?n? new:%n?%?o? old:%o?%?d? del:%d?%?F? flag:%F?%?t? tag:%t?%?p? post:%p?%?b? inc:%b?%?l??) %> %_v " 55 | set status_on_top=yes 56 | set tilde=yes 57 | set timeout=15 58 | set ts_enabled=yes 59 | set ts_status_format="%v: %f %?%n? (%n new)?" 60 | set use_envelope_from=yes 61 | set use_from 62 | unset user_agent 63 | 64 | # https://github.com/jcs/fastmail-ldap 65 | set query_command="~/bin/fastmail-ldap.pl '%s'" 66 | 67 | # things to bind keys to 68 | bind attach exit 69 | bind pager next-line 70 | bind pager previous-line 71 | bind pager exit 72 | bind pager next-entry 73 | bind pager j next-line 74 | bind pager k previous-line 75 | bind pager l next-entry 76 | bind pager K previous-entry 77 | bind pager J next-entry 78 | bind pager \CF next-page 79 | bind pager \CB previous-page 80 | bind pager \CP print-message 81 | bind pager B sidebar-toggle-visible 82 | bind index next-entry 83 | bind index j next-entry 84 | bind index previous-entry 85 | bind index k previous-entry 86 | bind index delete-message 87 | bind index display-message 88 | bind index display-message 89 | bind index next-unread 90 | bind index \C next-unread 91 | bind index \CF next-page 92 | bind index \CB previous-page 93 | bind index B sidebar-toggle-visible 94 | bind compose F edit-from 95 | 96 | # always run $query_command when completing addresses instead of requiring C-t 97 | bind editor complete-query 98 | 99 | # act like normal vi keys but browse sidebar folders 100 | macro index K "push " 101 | macro index J "push " 102 | 103 | # things to automate 104 | macro index,pager i "!" "go home" 105 | macro index,pager n "" "go to box with new mail" 106 | macro index,pager p "" "go back to the previous mailbox" 107 | macro index D "~d >6m" "delete old mail" 108 | 109 | # do a one-time reply with sig on top, for e-mail chains where everyone else 110 | # is doing annoying top-replying 111 | macro index,pager R "set sig_on_top=yesset sig_on_top=no" 112 | macro index,pager G "set sig_on_top=yesset sig_on_top=no" 113 | 114 | # imitate the old search-body function, but expensive for imap 115 | macro index b "~B " "search in message bodies" 116 | 117 | # things to happen 118 | folder-hook . set sort=threads # everything else 119 | folder-hook . set strict_threads=no # compensate for stupid clients 120 | folder-hook . set sort_aux=last-date-received # bumped threads appear new 121 | folder-hook Sent set strict_threads=yes # don't group incorrectly 122 | folder-hook Sent set sort=date-sent # when did i send that? 123 | folder-hook allmail.* set sort=mailbox-order # don't sort, for fast loading 124 | folder-hook allmail.* push # don't save changes, read-only 125 | 126 | # create message-ids that don't leak private info (like the number of messages 127 | # sent in the current mutt session, or the local hostname) 128 | send-hook . 'my_hdr Message-ID: <`date +"%Y%m%d%H%M%S"`.`sh -c "dd if=/dev/urandom bs=500 count=1 2>/dev/null | md5 | dd if=/dev/stdin bs=10 count=1 2>/dev/null"`@`sh -c "dd if=/dev/urandom bs=500 count=1 2>/dev/null | md5 | dd if=/dev/stdin bs=15 count=1 2>/dev/null"`>' 129 | 130 | # things to display (or not) 131 | ignore * 132 | unignore from: resent-from: sender: reply-to: to: resent-to: cc: bcc: x-mailing-list: date: resent-date: organization: organisation: x-mailer: x-newsreader: x-agent: x-editor: user-agent: priority: importance: message-id: resent-message-id: subject: old-return-receipt-to: old-disposition-notification-to: 133 | unhdr_order * 134 | hdr_order from: resent-from: sender: reply-to: to: resent-to: cc: bcc: x-mailing-list: date: resent-date: organization: organisation: x-mailer: x-newsreader: x-agent: x-editor: user-agent: priority: importance: message-id: resent-message-id: old-return-receipt-to: old-disposition-notification-to: subject: 135 | 136 | # bold/underline-only styling, for old non-color xterm (now xterm-r6 $TERM) 137 | mono attachment bold 138 | mono body underline "(https?|t?ftp|mailto|gopher|ssh|telnet|finger)://[^ ]+" 139 | mono body underline "[-a-z_0-9.]+@[-a-z_0-9.]+[a-z]" # email addresses 140 | mono body bold "-----Original Message-----" 141 | mono body bold "[;:]-[)/(|]" 142 | mono header none . 143 | mono header bold "^From: " 144 | mono header bold "^Resent-From: " 145 | mono header bold "^To: " 146 | mono header bold "^Subject: " 147 | mono header bold "^Organi[zs]ation: " 148 | mono header bold "^Priority: Urgent" 149 | mono header bold "^Importance: high" 150 | mono index bold '~U' 151 | mono index bold '~F' 152 | mono indicator reverse 153 | mono signature bold 154 | mono sidebar_new bold 155 | mono tilde bold 156 | mono tree bold 157 | mono quoted bold 158 | 159 | # since i now have to use an xterm-color $TERM, init color versions of the 160 | # same using brightcolor16 as a bright black 161 | color normal default default # init to black-on-white 162 | color attachment brightdefault default 163 | color body brightdefault default "(http|https|ftp|mailto|gopher|telnet|finger)://[^ ]+" 164 | color body brightdefault default "[-a-z_0-9.]+@[-a-z_0-9.]+[a-z]" 165 | color body brightdefault default "-----Original Message-----" 166 | color body brightdefault default "[;:]-[)/(|]" 167 | color header default default . 168 | color header brightdefault default "^From: " 169 | color header brightdefault default "^Resent-From: " 170 | color header brightdefault default "^To: " 171 | color header brightdefault default "^Subject: " 172 | color header brightdefault default "^Organi[zs]ation: " 173 | color header brightdefault default "^Priority: Urgent" 174 | color header brightdefault default "^Importance: high" 175 | color header brightdefault default '~U' 176 | color header brightdefault default '~F' 177 | color signature brightdefault default 178 | color sidebar_new brightdefault default 179 | color tilde brightblack default 180 | color tree color242 default 181 | color quoted brightblack default 182 | 183 | # color flagged a dark red 184 | color index brightcolor160 default '~F' 185 | # color to-be-deleted as grayed out 186 | color index brightblack default '~D' 187 | # bold new email in the index 188 | color index brightdefault default '~U' 189 | # make huge messages stand out so i can avoid downloading them 190 | color index brightcolor19 default '~z 500000-' 191 | 192 | # things i can see in mutt (with external programs through ~/.mailcap) 193 | auto_view application/pgp-encrypted 194 | auto_view application/pgp-keys 195 | auto_view application/pgp-signature 196 | auto_view text/html # html with lynx 197 | auto_view application/msword # .doc with antiword 198 | auto_view application/vnd.openxmlformats-officedocument.wordprocessingml.document 199 | auto_view application/x-tar-gz 200 | auto_view application/x-zip-compressed 201 | auto_view application/zip 202 | 203 | # but that doesn't mean i don't like text/plain 204 | alternative_order text/plain text/html 205 | 206 | # things to load in 207 | source ~/.muttrc.personal # my personal stuff 208 | source ~/.muttrc.lists # mailboxes, folders 209 | source $alias_file # for tab completion 210 | -------------------------------------------------------------------------------- /.vimrc: -------------------------------------------------------------------------------- 1 | " vim:ts=8 2 | " 3 | " vim 8 config 4 | " joshua stein 5 | " 6 | 7 | " defaults for everything 8 | set backspace=indent,eol,start 9 | let c_minlines=500 10 | set encoding=utf-8 11 | " TODO: check for utf-8 term or this gives a warning 12 | set fillchars+=vert:│ 13 | set hidden 14 | set ignorecase 15 | set incsearch 16 | set laststatus=2 17 | set modelines=5 18 | set nocompatible 19 | set nofoldenable 20 | set nohlsearch 21 | set nostartofline 22 | set ruler 23 | set scrolloff=10 24 | set shiftwidth=4 25 | set showcmd 26 | set showmatch 27 | set showmode 28 | set smartcase 29 | set smarttab 30 | set spellcapcheck= 31 | set spellfile=~/.vimspell.add 32 | set spelllang=en_us 33 | set tabstop=4 34 | set timeoutlen=0 35 | set wildmode=longest,list,full 36 | 37 | " required for vundle 38 | filetype off 39 | 40 | " don't pollute directories with swap files, keep them in one place 41 | silent !mkdir -p ~/.vim/{backup,swp}/ 42 | set backupdir=~/.vim/backup// 43 | set directory=~/.vim/swp// 44 | " except crontab, which will complain that it can't see any changes 45 | au FileType crontab setlocal bkc=yes 46 | 47 | " minor color config 48 | set t_Co=256 49 | syntax on 50 | colorscheme jcs 51 | 52 | " highlight stray spaces and tabs when out of insert mode 53 | au BufWinEnter * match ExtraWhitespace /\(\s\+$\|\^\s* \+\)/ 54 | au InsertEnter * match ExtraWhitespace /\s\+\%#\@= 702 58 | au BufWinLeave * call clearmatches() 59 | endif 60 | 61 | " try to detect xterm pasting to automatically disable autoindent and such 62 | if &term =~ "xterm.*" 63 | let &t_ti = &t_ti . "\e[?2004h" 64 | let &t_te = "\e[?2004l" . &t_te 65 | 66 | function XTermPasteBegin(ret) 67 | set pastetoggle=[201~ 68 | set paste 69 | return a:ret 70 | endfunction 71 | 72 | map [200~ XTermPasteBegin("i") 73 | imap [200~ XTermPasteBegin("") 74 | cmap [200~ 75 | cmap [201~ 76 | endif 77 | 78 | " when writing new files, mkdir -p their paths 79 | augroup BWCCreateDir 80 | au! 81 | au BufWritePre * if expand("")!~#'^\w\+:/' && !isdirectory(expand("%:h")) | execute "silent! !mkdir -p ".shellescape(expand('%:h'), 1) | redraw! | endif 82 | augroup END 83 | 84 | " init vim-plug (run "vim +PlugInstall +qall" after modifying) 85 | " these require apostrophes instead of quotes 86 | call plug#begin() 87 | Plug 'VundleVim/Vundle.vim' 88 | Plug 'ap/vim-buftabline' 89 | Plug 'ludovicchabant/vim-gutentags' 90 | Plug 'cespare/vim-sbd' 91 | Plug 'scrooloose/nerdtree' 92 | Plug 'wsdjeg/vim-fetch' 93 | Plug 'markonm/traces.vim' 94 | Plug 'tpope/vim-commentary' 95 | call plug#end() 96 | 97 | " disable plugin auto-indenting 98 | filetype indent off 99 | filetype plugin indent off 100 | 101 | " make buffer windows easier to navigate 102 | map h 103 | map j 104 | map k 105 | map l 106 | " control+n and +p for next and previous buffers, but only in normal mode 107 | nmap :bn 108 | nmap :bp 109 | " sbd plugin 110 | nmap :Sbd 111 | " control+/ 112 | noremap :Commentary 113 | 114 | " prevent those from running the nerdtree 115 | autocmd FileType nerdtree noremap 116 | autocmd FileType nerdtree noremap 117 | autocmd FileType nerdtree noremap 118 | autocmd FileType nerdtree noremap 119 | autocmd FileType nerdtree noremap 120 | autocmd FileType nerdtree noremap 121 | 122 | " just highlight the line with the error, i don't need a column 123 | set signcolumn=no 124 | " disable previews of completions 125 | set completeopt-=preview 126 | 127 | " make < and > shifts retain selection 128 | vnoremap < >gv 130 | 131 | " disable annoying behavior where starting an auto-indented line with a hash 132 | " makes it unindent and refuse to >> 133 | :inoremap # X# 134 | 135 | " per-file-type settings 136 | " tell vim what kinds of files these are based on extension 137 | au BufNewFile,BufRead *.phtml setlocal ft=php 138 | au BufNewFile,BufRead *.rake,*.mab setlocal ft=ruby 139 | au BufNewFile,BufRead *.erb setlocal ft=eruby 140 | au BufNewFile,BufRead *.pjs setlocal ft=php.javascript 141 | au BufRead,BufNewFile *.go setlocal ft=go 142 | au BufNewFile,BufRead *.dsl setlocal ft= 143 | 144 | " default to no color column 145 | au FileType * setlocal colorcolumn=0 146 | 147 | " all source code gets wrapped at <80 and auto-indented 148 | au FileType arduino,asm,c,cpp,go,java,javascript,php,html,make,objc,perl setlocal tw=79 autoindent colorcolumn=81 149 | 150 | " recognize crystal 151 | au BufNewFile,BufReadPost *.cr setlocal filetype=crystal 152 | au BufNewFile,BufReadPost *.ecr setlocal filetype=ecrystal 153 | au FileType crystal,ecrystal setlocal ts=2 sw=2 tw=79 et sts=2 autoindent colorcolumn=81 154 | 155 | " ruby and lua have soft tabs 156 | au FileType ruby,eruby,lua setlocal ts=2 sw=2 tw=79 et sts=2 autoindent colorcolumn=81 157 | au FileType ruby setlocal commentstring=#\ %s 158 | au FileType yaml setlocal ts=2 sw=2 et colorcolumn=81 159 | 160 | " makefiles and c have tabstops at 8 for portability 161 | au FileType arduino,asm,make,c,cpp setlocal ts=8 sw=8 162 | au FileType c setlocal commentstring=//\ %s 163 | 164 | " email and commit messages - expand tabs, wrap at 68 for future quoting, enable spelling 165 | au FileType cvs,gitcommit,mail setlocal tw=68 et spell colorcolumn=69 166 | 167 | " markdown files get hard tabs, wrapped at 79 and spell checking 168 | au FileType markdown setlocal tw=79 spell colorcolumn=81 169 | 170 | " and make sure cvs adds a blank line for me to start typing 171 | " (openbsd's cvs does this by default) 172 | au FileType cvs s/^CVS:/ CVS:/|1 173 | 174 | " and for email, work properly with format=flowed 175 | au FileType mail setlocal formatoptions+=wq 176 | 177 | " website stuff 178 | au BufNewFile,BufRead *_posts/*.md setlocal tw=80 spell 179 | 180 | " z80 assembler syntax file is outdated 181 | au Syntax z8a syn match z8aPreProc "\.equ" 182 | au Syntax z8a syn match z8aPreProc "\.gblequ" 183 | au Syntax z8a syn match z8aPreProc "\.lclequ" 184 | 185 | augroup Binary 186 | au! 187 | au BufReadPre *.bin,*.pkt let &bin=1 188 | au BufReadPost *.bin,*.pkt if &bin | %!xxd 189 | au BufReadPost *.bin,*.pkt set ft=xxd | endif 190 | au BufWritePre *.bin,*.pkt if &bin | %!xxd -r 191 | au BufWritePre *.bin,*.pkt endif 192 | au BufWritePost *.bin,*.pkt if &bin | %!xxd 193 | au BufWritePost *.bin,*.pkt set nomod | endif 194 | augroup END 195 | 196 | " package configuration 197 | 198 | " gutentags 199 | let g:gutentags_cache_dir="~/.vim/gutentags" 200 | " use ectags 201 | if filereadable("/usr/local/bin/ectags") 202 | let g:gutentags_ctags_executable="/usr/local/bin/ectags" 203 | elseif filereadable("/opt/homebrew/bin/ctags") 204 | let g:gutentags_ctags_executable="/opt/homebrew/bin/ctags" 205 | endif 206 | let g:gutentags_ctags_executable_go="~/go/bin/gotags" 207 | let g:gutentags_project_root=[ "CVS", ".git", ".gutentags_stop" ] 208 | " i'll manually invoke :GutentagsUpdate when i need to 209 | let g:gutentags_generate_on_missing=0 210 | let g:gutentags_generate_on_new=0 211 | let g:gutentags_generate_on_write=0 212 | 213 | " only enable buftabline on multiple buffers 214 | let g:buftabline_show=1 215 | 216 | " nerdtree 217 | let g:NERDTreeDirArrowExpandable="+" " use normal ascii 218 | let g:NERDTreeDirArrowCollapsible="~" 219 | let NERDTreeMinimalUI=1 220 | " leave 80 chars for editing 221 | let NERDTreeWinSize=str2nr(system('expr $COLUMNS - 81')) 222 | let NERDTreeMapOpenRecursively="+" 223 | let NERDTreeMapCloseChildren="-" " easier to remember 224 | let NERDTreeIgnore = ['\.(o|pyc)$'] 225 | 226 | " macros 227 | 228 | " control+d - delete the current line and all remaining text of an email up to 229 | " the line of my signature (or the rest of the file) - useful for deleting lots 230 | " of useless quoted text 231 | function KillToSig() 232 | let curline = line(".") 233 | if search("^-- ") > 0 234 | exec curline 235 | normal! ^d/^-- / O 236 | exec curline 237 | else 238 | normal! dGo 239 | endif 240 | endfunction 241 | map  :let curline=line("."):exec KillToSig():exec curline 242 | 243 | " a quick function to toggle color column on or off 244 | let s:cc = "" 245 | function ToggleColorColumn() 246 | if &colorcolumn 247 | let s:cc=&colorcolumn 248 | set colorcolumn=0 249 | echo s:cc 250 | else 251 | exec "set colorcolumn=" . s:cc 252 | end 253 | endfunction 254 | command! ToggleColorColumn :call ToggleColorColumn() 255 | 256 | " i hold shift a lot, make :W work like :w and :Q like :q 257 | cabbr W w 258 | cabbr Q q 259 | cabbr E e 260 | 261 | " w! still failed? try w!! to write as root 262 | cmap w!! w !doas tee >/dev/null % 263 | 264 | " f will show the current function name 265 | fun! ShowFuncName() 266 | let lnum = line(".") 267 | let col = col(".") 268 | echohl ModeMsg 269 | echo getline(search("^[^ \t#/]\\{2}.*[^:]\s*$", 'bW')) 270 | echohl None 271 | call search("\\%" . lnum . "l" . "\\%" . col . "c") 272 | endfun 273 | map f :call ShowFuncName() 274 | 275 | 276 | " me fail english? that's unpossible! 277 | abbr seperate separate 278 | abbr furnature furniture 279 | abbr rediculous ridiculous 280 | abbr definetly definitely 281 | abbr shold should 282 | abbr appologize apologize 283 | abbr propogate propagate 284 | abbr eachother each other 285 | abbr occured occurred 286 | 287 | 288 | " when starting up, restore cursor position from viminfo 289 | au BufReadPost * 290 | \ if line("'\"") >= 1 && line("'\"") <= line("$") | 291 | \ exe "normal! g`\"" | 292 | \ endif 293 | 294 | " but git re-uses the same filename all the time, so ignore viminfo 295 | au BufNewFile,BufRead *.git/* call setpos('.', [0, 1, 1, 0]) 296 | -------------------------------------------------------------------------------- /.mime.types: -------------------------------------------------------------------------------- 1 | # This file maps Internet media types to unique file extension(s). 2 | # Although created for httpd, this file is used by many software systems 3 | # and has been placed in the public domain for unlimited redisribution. 4 | # 5 | # The table below contains both registered and (common) unregistered types. 6 | # A type that has no unique extension can be ignored -- they are listed 7 | # here to guide configurations toward known types and to make it easier to 8 | # identify "new" types. File extensions are also commonly used to indicate 9 | # content languages and encodings, so choose them carefully. 10 | # 11 | # Internet media types should be registered as described in RFC 4288. 12 | # The registry is at . 13 | # 14 | # MIME type (lowercased) Extensions 15 | # ============================================ ========== 16 | # application/1d-interleaved-parityfec 17 | # application/3gpp-ims+xml 18 | # application/activemessage 19 | application/andrew-inset ez 20 | # application/applefile 21 | application/applixware aw 22 | application/atom+xml atom 23 | application/atomcat+xml atomcat 24 | # application/atomicmail 25 | application/atomsvc+xml atomsvc 26 | # application/auth-policy+xml 27 | # application/batch-smtp 28 | # application/beep+xml 29 | # application/calendar+xml 30 | # application/cals-1840 31 | # application/ccmp+xml 32 | application/ccxml+xml ccxml 33 | application/cdmi-capability cdmia 34 | application/cdmi-container cdmic 35 | application/cdmi-domain cdmid 36 | application/cdmi-object cdmio 37 | application/cdmi-queue cdmiq 38 | # application/cea-2018+xml 39 | # application/cellml+xml 40 | # application/cfw 41 | # application/cnrp+xml 42 | # application/commonground 43 | # application/conference-info+xml 44 | # application/cpl+xml 45 | # application/csta+xml 46 | # application/cstadata+xml 47 | application/cu-seeme cu 48 | # application/cybercash 49 | application/davmount+xml davmount 50 | # application/dca-rft 51 | # application/dec-dx 52 | # application/dialog-info+xml 53 | # application/dicom 54 | # application/dns 55 | application/docbook+xml dbk 56 | # application/dskpp+xml 57 | application/dssc+der dssc 58 | application/dssc+xml xdssc 59 | # application/dvcs 60 | application/ecmascript ecma 61 | # application/edi-consent 62 | # application/edi-x12 63 | # application/edifact 64 | application/emma+xml emma 65 | # application/epp+xml 66 | application/epub+zip epub 67 | # application/eshop 68 | # application/example 69 | application/exi exi 70 | # application/fastinfoset 71 | # application/fastsoap 72 | # application/fits 73 | application/font-tdpfr pfr 74 | # application/framework-attributes+xml 75 | application/gml+xml gml 76 | application/gpx+xml gpx 77 | application/gxf gxf 78 | # application/h224 79 | # application/held+xml 80 | # application/http 81 | application/hyperstudio stk 82 | # application/ibe-key-request+xml 83 | # application/ibe-pkg-reply+xml 84 | # application/ibe-pp-data 85 | # application/iges 86 | # application/im-iscomposing+xml 87 | # application/index 88 | # application/index.cmd 89 | # application/index.obj 90 | # application/index.response 91 | # application/index.vnd 92 | application/inkml+xml ink inkml 93 | # application/iotp 94 | application/ipfix ipfix 95 | # application/ipp 96 | # application/isup 97 | application/java-archive jar 98 | application/java-serialized-object ser 99 | application/java-vm class 100 | application/javascript js 101 | application/json json 102 | application/jsonml+json jsonml 103 | # application/kpml-request+xml 104 | # application/kpml-response+xml 105 | application/lost+xml lostxml 106 | application/mac-binhex40 hqx 107 | application/mac-compactpro cpt 108 | # application/macwriteii 109 | application/mads+xml mads 110 | application/marc mrc 111 | application/marcxml+xml mrcx 112 | application/mathematica ma nb mb 113 | # application/mathml-content+xml 114 | # application/mathml-presentation+xml 115 | application/mathml+xml mathml 116 | # application/mbms-associated-procedure-description+xml 117 | # application/mbms-deregister+xml 118 | # application/mbms-envelope+xml 119 | # application/mbms-msk+xml 120 | # application/mbms-msk-response+xml 121 | # application/mbms-protection-description+xml 122 | # application/mbms-reception-report+xml 123 | # application/mbms-register+xml 124 | # application/mbms-register-response+xml 125 | # application/mbms-user-service-description+xml 126 | application/mbox mbox 127 | # application/media_control+xml 128 | application/mediaservercontrol+xml mscml 129 | application/metalink+xml metalink 130 | application/metalink4+xml meta4 131 | application/mets+xml mets 132 | # application/mikey 133 | application/mods+xml mods 134 | # application/moss-keys 135 | # application/moss-signature 136 | # application/mosskey-data 137 | # application/mosskey-request 138 | application/mp21 m21 mp21 139 | application/mp4 mp4s 140 | # application/mpeg4-generic 141 | # application/mpeg4-iod 142 | # application/mpeg4-iod-xmt 143 | # application/msc-ivr+xml 144 | # application/msc-mixer+xml 145 | application/msword doc dot 146 | application/mxf mxf 147 | # application/nasdata 148 | # application/news-checkgroups 149 | # application/news-groupinfo 150 | # application/news-transmission 151 | # application/nss 152 | # application/ocsp-request 153 | # application/ocsp-response 154 | application/octet-stream bin dms lrf mar so dist distz pkg bpk dump elc deploy 155 | application/oda oda 156 | application/oebps-package+xml opf 157 | application/ogg ogx 158 | application/omdoc+xml omdoc 159 | application/onenote onetoc onetoc2 onetmp onepkg 160 | application/oxps oxps 161 | # application/parityfec 162 | application/patch-ops-error+xml xer 163 | application/pdf pdf 164 | application/pgp-encrypted pgp 165 | # application/pgp-keys 166 | application/pgp-signature asc sig 167 | application/pics-rules prf 168 | # application/pidf+xml 169 | # application/pidf-diff+xml 170 | application/pkcs10 p10 171 | application/pkcs7-mime p7m p7c 172 | application/pkcs7-signature p7s 173 | application/pkcs8 p8 174 | application/pkix-attr-cert ac 175 | application/pkix-cert cer 176 | application/pkix-crl crl 177 | application/pkix-pkipath pkipath 178 | application/pkixcmp pki 179 | application/pls+xml pls 180 | # application/poc-settings+xml 181 | application/postscript ai eps ps 182 | # application/prs.alvestrand.titrax-sheet 183 | application/prs.cww cww 184 | # application/prs.nprend 185 | # application/prs.plucker 186 | # application/prs.rdf-xml-crypt 187 | # application/prs.xsf+xml 188 | application/pskc+xml pskcxml 189 | # application/qsig 190 | application/rdf+xml rdf 191 | application/reginfo+xml rif 192 | application/relax-ng-compact-syntax rnc 193 | # application/remote-printing 194 | application/resource-lists+xml rl 195 | application/resource-lists-diff+xml rld 196 | # application/riscos 197 | # application/rlmi+xml 198 | application/rls-services+xml rs 199 | application/rpki-ghostbusters gbr 200 | application/rpki-manifest mft 201 | application/rpki-roa roa 202 | # application/rpki-updown 203 | application/rsd+xml rsd 204 | application/rss+xml rss 205 | application/rtf rtf 206 | # application/rtx 207 | # application/samlassertion+xml 208 | # application/samlmetadata+xml 209 | application/sbml+xml sbml 210 | application/scvp-cv-request scq 211 | application/scvp-cv-response scs 212 | application/scvp-vp-request spq 213 | application/scvp-vp-response spp 214 | application/sdp sdp 215 | # application/set-payment 216 | application/set-payment-initiation setpay 217 | # application/set-registration 218 | application/set-registration-initiation setreg 219 | # application/sgml 220 | # application/sgml-open-catalog 221 | application/shf+xml shf 222 | # application/sieve 223 | # application/simple-filter+xml 224 | # application/simple-message-summary 225 | # application/simplesymbolcontainer 226 | # application/slate 227 | # application/smil 228 | application/smil+xml smi smil 229 | # application/soap+fastinfoset 230 | # application/soap+xml 231 | application/sparql-query rq 232 | application/sparql-results+xml srx 233 | # application/spirits-event+xml 234 | application/srgs gram 235 | application/srgs+xml grxml 236 | application/sru+xml sru 237 | application/ssdl+xml ssdl 238 | application/ssml+xml ssml 239 | # application/tamp-apex-update 240 | # application/tamp-apex-update-confirm 241 | # application/tamp-community-update 242 | # application/tamp-community-update-confirm 243 | # application/tamp-error 244 | # application/tamp-sequence-adjust 245 | # application/tamp-sequence-adjust-confirm 246 | # application/tamp-status-query 247 | # application/tamp-status-response 248 | # application/tamp-update 249 | # application/tamp-update-confirm 250 | application/tei+xml tei teicorpus 251 | application/thraud+xml tfi 252 | # application/timestamp-query 253 | # application/timestamp-reply 254 | application/timestamped-data tsd 255 | # application/tve-trigger 256 | # application/ulpfec 257 | # application/vcard+xml 258 | # application/vemmi 259 | # application/vividence.scriptfile 260 | # application/vnd.3gpp.bsf+xml 261 | application/vnd.3gpp.pic-bw-large plb 262 | application/vnd.3gpp.pic-bw-small psb 263 | application/vnd.3gpp.pic-bw-var pvb 264 | # application/vnd.3gpp.sms 265 | # application/vnd.3gpp2.bcmcsinfo+xml 266 | # application/vnd.3gpp2.sms 267 | application/vnd.3gpp2.tcap tcap 268 | application/vnd.3m.post-it-notes pwn 269 | application/vnd.accpac.simply.aso aso 270 | application/vnd.accpac.simply.imp imp 271 | application/vnd.acucobol acu 272 | application/vnd.acucorp atc acutc 273 | application/vnd.adobe.air-application-installer-package+zip air 274 | application/vnd.adobe.formscentral.fcdt fcdt 275 | application/vnd.adobe.fxp fxp fxpl 276 | # application/vnd.adobe.partial-upload 277 | application/vnd.adobe.xdp+xml xdp 278 | application/vnd.adobe.xfdf xfdf 279 | # application/vnd.aether.imp 280 | # application/vnd.ah-barcode 281 | application/vnd.ahead.space ahead 282 | application/vnd.airzip.filesecure.azf azf 283 | application/vnd.airzip.filesecure.azs azs 284 | application/vnd.amazon.ebook azw 285 | application/vnd.americandynamics.acc acc 286 | application/vnd.amiga.ami ami 287 | # application/vnd.amundsen.maze+xml 288 | application/vnd.android.package-archive apk 289 | application/vnd.anser-web-certificate-issue-initiation cii 290 | application/vnd.anser-web-funds-transfer-initiation fti 291 | application/vnd.antix.game-component atx 292 | application/vnd.apple.installer+xml mpkg 293 | application/vnd.apple.mpegurl m3u8 294 | # application/vnd.arastra.swi 295 | application/vnd.aristanetworks.swi swi 296 | application/vnd.astraea-software.iota iota 297 | application/vnd.audiograph aep 298 | # application/vnd.autopackage 299 | # application/vnd.avistar+xml 300 | application/vnd.blueice.multipass mpm 301 | # application/vnd.bluetooth.ep.oob 302 | application/vnd.bmi bmi 303 | application/vnd.businessobjects rep 304 | # application/vnd.cab-jscript 305 | # application/vnd.canon-cpdl 306 | # application/vnd.canon-lips 307 | # application/vnd.cendio.thinlinc.clientconf 308 | application/vnd.chemdraw+xml cdxml 309 | application/vnd.chipnuts.karaoke-mmd mmd 310 | application/vnd.cinderella cdy 311 | # application/vnd.cirpack.isdn-ext 312 | application/vnd.claymore cla 313 | application/vnd.cloanto.rp9 rp9 314 | application/vnd.clonk.c4group c4g c4d c4f c4p c4u 315 | application/vnd.cluetrust.cartomobile-config c11amc 316 | application/vnd.cluetrust.cartomobile-config-pkg c11amz 317 | # application/vnd.collection+json 318 | # application/vnd.commerce-battelle 319 | application/vnd.commonspace csp 320 | application/vnd.contact.cmsg cdbcmsg 321 | application/vnd.cosmocaller cmc 322 | application/vnd.crick.clicker clkx 323 | application/vnd.crick.clicker.keyboard clkk 324 | application/vnd.crick.clicker.palette clkp 325 | application/vnd.crick.clicker.template clkt 326 | application/vnd.crick.clicker.wordbank clkw 327 | application/vnd.criticaltools.wbs+xml wbs 328 | application/vnd.ctc-posml pml 329 | # application/vnd.ctct.ws+xml 330 | # application/vnd.cups-pdf 331 | # application/vnd.cups-postscript 332 | application/vnd.cups-ppd ppd 333 | # application/vnd.cups-raster 334 | # application/vnd.cups-raw 335 | # application/vnd.curl 336 | application/vnd.curl.car car 337 | application/vnd.curl.pcurl pcurl 338 | # application/vnd.cybank 339 | application/vnd.dart dart 340 | application/vnd.data-vision.rdz rdz 341 | application/vnd.dece.data uvf uvvf uvd uvvd 342 | application/vnd.dece.ttml+xml uvt uvvt 343 | application/vnd.dece.unspecified uvx uvvx 344 | application/vnd.dece.zip uvz uvvz 345 | application/vnd.denovo.fcselayout-link fe_launch 346 | # application/vnd.dir-bi.plate-dl-nosuffix 347 | application/vnd.dna dna 348 | application/vnd.dolby.mlp mlp 349 | # application/vnd.dolby.mobile.1 350 | # application/vnd.dolby.mobile.2 351 | application/vnd.dpgraph dpg 352 | application/vnd.dreamfactory dfac 353 | application/vnd.ds-keypoint kpxx 354 | application/vnd.dvb.ait ait 355 | # application/vnd.dvb.dvbj 356 | # application/vnd.dvb.esgcontainer 357 | # application/vnd.dvb.ipdcdftnotifaccess 358 | # application/vnd.dvb.ipdcesgaccess 359 | # application/vnd.dvb.ipdcesgaccess2 360 | # application/vnd.dvb.ipdcesgpdd 361 | # application/vnd.dvb.ipdcroaming 362 | # application/vnd.dvb.iptv.alfec-base 363 | # application/vnd.dvb.iptv.alfec-enhancement 364 | # application/vnd.dvb.notif-aggregate-root+xml 365 | # application/vnd.dvb.notif-container+xml 366 | # application/vnd.dvb.notif-generic+xml 367 | # application/vnd.dvb.notif-ia-msglist+xml 368 | # application/vnd.dvb.notif-ia-registration-request+xml 369 | # application/vnd.dvb.notif-ia-registration-response+xml 370 | # application/vnd.dvb.notif-init+xml 371 | # application/vnd.dvb.pfr 372 | application/vnd.dvb.service svc 373 | # application/vnd.dxr 374 | application/vnd.dynageo geo 375 | # application/vnd.easykaraoke.cdgdownload 376 | # application/vnd.ecdis-update 377 | application/vnd.ecowin.chart mag 378 | # application/vnd.ecowin.filerequest 379 | # application/vnd.ecowin.fileupdate 380 | # application/vnd.ecowin.series 381 | # application/vnd.ecowin.seriesrequest 382 | # application/vnd.ecowin.seriesupdate 383 | # application/vnd.emclient.accessrequest+xml 384 | application/vnd.enliven nml 385 | # application/vnd.eprints.data+xml 386 | application/vnd.epson.esf esf 387 | application/vnd.epson.msf msf 388 | application/vnd.epson.quickanime qam 389 | application/vnd.epson.salt slt 390 | application/vnd.epson.ssf ssf 391 | # application/vnd.ericsson.quickcall 392 | application/vnd.eszigno3+xml es3 et3 393 | # application/vnd.etsi.aoc+xml 394 | # application/vnd.etsi.cug+xml 395 | # application/vnd.etsi.iptvcommand+xml 396 | # application/vnd.etsi.iptvdiscovery+xml 397 | # application/vnd.etsi.iptvprofile+xml 398 | # application/vnd.etsi.iptvsad-bc+xml 399 | # application/vnd.etsi.iptvsad-cod+xml 400 | # application/vnd.etsi.iptvsad-npvr+xml 401 | # application/vnd.etsi.iptvservice+xml 402 | # application/vnd.etsi.iptvsync+xml 403 | # application/vnd.etsi.iptvueprofile+xml 404 | # application/vnd.etsi.mcid+xml 405 | # application/vnd.etsi.overload-control-policy-dataset+xml 406 | # application/vnd.etsi.sci+xml 407 | # application/vnd.etsi.simservs+xml 408 | # application/vnd.etsi.tsl+xml 409 | # application/vnd.etsi.tsl.der 410 | # application/vnd.eudora.data 411 | application/vnd.ezpix-album ez2 412 | application/vnd.ezpix-package ez3 413 | # application/vnd.f-secure.mobile 414 | application/vnd.fdf fdf 415 | application/vnd.fdsn.mseed mseed 416 | application/vnd.fdsn.seed seed dataless 417 | # application/vnd.ffsns 418 | # application/vnd.fints 419 | application/vnd.flographit gph 420 | application/vnd.fluxtime.clip ftc 421 | # application/vnd.font-fontforge-sfd 422 | application/vnd.framemaker fm frame maker book 423 | application/vnd.frogans.fnc fnc 424 | application/vnd.frogans.ltf ltf 425 | application/vnd.fsc.weblaunch fsc 426 | application/vnd.fujitsu.oasys oas 427 | application/vnd.fujitsu.oasys2 oa2 428 | application/vnd.fujitsu.oasys3 oa3 429 | application/vnd.fujitsu.oasysgp fg5 430 | application/vnd.fujitsu.oasysprs bh2 431 | # application/vnd.fujixerox.art-ex 432 | # application/vnd.fujixerox.art4 433 | # application/vnd.fujixerox.hbpl 434 | application/vnd.fujixerox.ddd ddd 435 | application/vnd.fujixerox.docuworks xdw 436 | application/vnd.fujixerox.docuworks.binder xbd 437 | # application/vnd.fut-misnet 438 | application/vnd.fuzzysheet fzs 439 | application/vnd.genomatix.tuxedo txd 440 | # application/vnd.geocube+xml 441 | application/vnd.geogebra.file ggb 442 | application/vnd.geogebra.tool ggt 443 | application/vnd.geometry-explorer gex gre 444 | application/vnd.geonext gxt 445 | application/vnd.geoplan g2w 446 | application/vnd.geospace g3w 447 | # application/vnd.globalplatform.card-content-mgt 448 | # application/vnd.globalplatform.card-content-mgt-response 449 | application/vnd.gmx gmx 450 | application/vnd.google-earth.kml+xml kml 451 | application/vnd.google-earth.kmz kmz 452 | application/vnd.grafeq gqf gqs 453 | # application/vnd.gridmp 454 | application/vnd.groove-account gac 455 | application/vnd.groove-help ghf 456 | application/vnd.groove-identity-message gim 457 | application/vnd.groove-injector grv 458 | application/vnd.groove-tool-message gtm 459 | application/vnd.groove-tool-template tpl 460 | application/vnd.groove-vcard vcg 461 | # application/vnd.hal+json 462 | application/vnd.hal+xml hal 463 | application/vnd.handheld-entertainment+xml zmm 464 | application/vnd.hbci hbci 465 | # application/vnd.hcl-bireports 466 | application/vnd.hhe.lesson-player les 467 | application/vnd.hp-hpgl hpgl 468 | application/vnd.hp-hpid hpid 469 | application/vnd.hp-hps hps 470 | application/vnd.hp-jlyt jlt 471 | application/vnd.hp-pcl pcl 472 | application/vnd.hp-pclxl pclxl 473 | # application/vnd.httphone 474 | application/vnd.hydrostatix.sof-data sfd-hdstx 475 | # application/vnd.hzn-3d-crossword 476 | # application/vnd.ibm.afplinedata 477 | # application/vnd.ibm.electronic-media 478 | application/vnd.ibm.minipay mpy 479 | application/vnd.ibm.modcap afp listafp list3820 480 | application/vnd.ibm.rights-management irm 481 | application/vnd.ibm.secure-container sc 482 | application/vnd.iccprofile icc icm 483 | application/vnd.igloader igl 484 | application/vnd.immervision-ivp ivp 485 | application/vnd.immervision-ivu ivu 486 | # application/vnd.informedcontrol.rms+xml 487 | # application/vnd.informix-visionary 488 | # application/vnd.infotech.project 489 | # application/vnd.infotech.project+xml 490 | # application/vnd.innopath.wamp.notification 491 | application/vnd.insors.igm igm 492 | application/vnd.intercon.formnet xpw xpx 493 | application/vnd.intergeo i2g 494 | # application/vnd.intertrust.digibox 495 | # application/vnd.intertrust.nncp 496 | application/vnd.intu.qbo qbo 497 | application/vnd.intu.qfx qfx 498 | # application/vnd.iptc.g2.conceptitem+xml 499 | # application/vnd.iptc.g2.knowledgeitem+xml 500 | # application/vnd.iptc.g2.newsitem+xml 501 | # application/vnd.iptc.g2.newsmessage+xml 502 | # application/vnd.iptc.g2.packageitem+xml 503 | # application/vnd.iptc.g2.planningitem+xml 504 | application/vnd.ipunplugged.rcprofile rcprofile 505 | application/vnd.irepository.package+xml irp 506 | application/vnd.is-xpr xpr 507 | application/vnd.isac.fcs fcs 508 | application/vnd.jam jam 509 | # application/vnd.japannet-directory-service 510 | # application/vnd.japannet-jpnstore-wakeup 511 | # application/vnd.japannet-payment-wakeup 512 | # application/vnd.japannet-registration 513 | # application/vnd.japannet-registration-wakeup 514 | # application/vnd.japannet-setstore-wakeup 515 | # application/vnd.japannet-verification 516 | # application/vnd.japannet-verification-wakeup 517 | application/vnd.jcp.javame.midlet-rms rms 518 | application/vnd.jisp jisp 519 | application/vnd.joost.joda-archive joda 520 | application/vnd.kahootz ktz ktr 521 | application/vnd.kde.karbon karbon 522 | application/vnd.kde.kchart chrt 523 | application/vnd.kde.kformula kfo 524 | application/vnd.kde.kivio flw 525 | application/vnd.kde.kontour kon 526 | application/vnd.kde.kpresenter kpr kpt 527 | application/vnd.kde.kspread ksp 528 | application/vnd.kde.kword kwd kwt 529 | application/vnd.kenameaapp htke 530 | application/vnd.kidspiration kia 531 | application/vnd.kinar kne knp 532 | application/vnd.koan skp skd skt skm 533 | application/vnd.kodak-descriptor sse 534 | application/vnd.las.las+xml lasxml 535 | # application/vnd.liberty-request+xml 536 | application/vnd.llamagraphics.life-balance.desktop lbd 537 | application/vnd.llamagraphics.life-balance.exchange+xml lbe 538 | application/vnd.lotus-1-2-3 123 539 | application/vnd.lotus-approach apr 540 | application/vnd.lotus-freelance pre 541 | application/vnd.lotus-notes nsf 542 | application/vnd.lotus-organizer org 543 | application/vnd.lotus-screencam scm 544 | application/vnd.lotus-wordpro lwp 545 | application/vnd.macports.portpkg portpkg 546 | # application/vnd.marlin.drm.actiontoken+xml 547 | # application/vnd.marlin.drm.conftoken+xml 548 | # application/vnd.marlin.drm.license+xml 549 | # application/vnd.marlin.drm.mdcf 550 | application/vnd.mcd mcd 551 | application/vnd.medcalcdata mc1 552 | application/vnd.mediastation.cdkey cdkey 553 | # application/vnd.meridian-slingshot 554 | application/vnd.mfer mwf 555 | application/vnd.mfmp mfm 556 | application/vnd.micrografx.flo flo 557 | application/vnd.micrografx.igx igx 558 | application/vnd.mif mif 559 | # application/vnd.minisoft-hp3000-save 560 | # application/vnd.mitsubishi.misty-guard.trustweb 561 | application/vnd.mobius.daf daf 562 | application/vnd.mobius.dis dis 563 | application/vnd.mobius.mbk mbk 564 | application/vnd.mobius.mqy mqy 565 | application/vnd.mobius.msl msl 566 | application/vnd.mobius.plc plc 567 | application/vnd.mobius.txf txf 568 | application/vnd.mophun.application mpn 569 | application/vnd.mophun.certificate mpc 570 | # application/vnd.motorola.flexsuite 571 | # application/vnd.motorola.flexsuite.adsi 572 | # application/vnd.motorola.flexsuite.fis 573 | # application/vnd.motorola.flexsuite.gotap 574 | # application/vnd.motorola.flexsuite.kmr 575 | # application/vnd.motorola.flexsuite.ttc 576 | # application/vnd.motorola.flexsuite.wem 577 | # application/vnd.motorola.iprm 578 | application/vnd.mozilla.xul+xml xul 579 | application/vnd.ms-artgalry cil 580 | # application/vnd.ms-asf 581 | application/vnd.ms-cab-compressed cab 582 | # application/vnd.ms-color.iccprofile 583 | application/vnd.ms-excel xls xlm xla xlc xlt xlw 584 | application/vnd.ms-excel.addin.macroenabled.12 xlam 585 | application/vnd.ms-excel.sheet.binary.macroenabled.12 xlsb 586 | application/vnd.ms-excel.sheet.macroenabled.12 xlsm 587 | application/vnd.ms-excel.template.macroenabled.12 xltm 588 | application/vnd.ms-fontobject eot 589 | application/vnd.ms-htmlhelp chm 590 | application/vnd.ms-ims ims 591 | application/vnd.ms-lrm lrm 592 | # application/vnd.ms-office.activex+xml 593 | application/vnd.ms-officetheme thmx 594 | # application/vnd.ms-opentype 595 | # application/vnd.ms-package.obfuscated-opentype 596 | application/vnd.ms-pki.seccat cat 597 | application/vnd.ms-pki.stl stl 598 | # application/vnd.ms-playready.initiator+xml 599 | application/vnd.ms-powerpoint ppt pps pot 600 | application/vnd.ms-powerpoint.addin.macroenabled.12 ppam 601 | application/vnd.ms-powerpoint.presentation.macroenabled.12 pptm 602 | application/vnd.ms-powerpoint.slide.macroenabled.12 sldm 603 | application/vnd.ms-powerpoint.slideshow.macroenabled.12 ppsm 604 | application/vnd.ms-powerpoint.template.macroenabled.12 potm 605 | # application/vnd.ms-printing.printticket+xml 606 | application/vnd.ms-project mpp mpt 607 | # application/vnd.ms-tnef 608 | # application/vnd.ms-wmdrm.lic-chlg-req 609 | # application/vnd.ms-wmdrm.lic-resp 610 | # application/vnd.ms-wmdrm.meter-chlg-req 611 | # application/vnd.ms-wmdrm.meter-resp 612 | application/vnd.ms-word.document.macroenabled.12 docm 613 | application/vnd.ms-word.template.macroenabled.12 dotm 614 | application/vnd.ms-works wps wks wcm wdb 615 | application/vnd.ms-wpl wpl 616 | application/vnd.ms-xpsdocument xps 617 | application/vnd.mseq mseq 618 | # application/vnd.msign 619 | # application/vnd.multiad.creator 620 | # application/vnd.multiad.creator.cif 621 | # application/vnd.music-niff 622 | application/vnd.musician mus 623 | application/vnd.muvee.style msty 624 | application/vnd.mynfc taglet 625 | # application/vnd.ncd.control 626 | # application/vnd.ncd.reference 627 | # application/vnd.nervana 628 | # application/vnd.netfpx 629 | application/vnd.neurolanguage.nlu nlu 630 | application/vnd.nitf ntf nitf 631 | application/vnd.noblenet-directory nnd 632 | application/vnd.noblenet-sealer nns 633 | application/vnd.noblenet-web nnw 634 | # application/vnd.nokia.catalogs 635 | # application/vnd.nokia.conml+wbxml 636 | # application/vnd.nokia.conml+xml 637 | # application/vnd.nokia.isds-radio-presets 638 | # application/vnd.nokia.iptv.config+xml 639 | # application/vnd.nokia.landmark+wbxml 640 | # application/vnd.nokia.landmark+xml 641 | # application/vnd.nokia.landmarkcollection+xml 642 | # application/vnd.nokia.n-gage.ac+xml 643 | application/vnd.nokia.n-gage.data ngdat 644 | application/vnd.nokia.n-gage.symbian.install n-gage 645 | # application/vnd.nokia.ncd 646 | # application/vnd.nokia.pcd+wbxml 647 | # application/vnd.nokia.pcd+xml 648 | application/vnd.nokia.radio-preset rpst 649 | application/vnd.nokia.radio-presets rpss 650 | application/vnd.novadigm.edm edm 651 | application/vnd.novadigm.edx edx 652 | application/vnd.novadigm.ext ext 653 | # application/vnd.ntt-local.file-transfer 654 | # application/vnd.ntt-local.sip-ta_remote 655 | # application/vnd.ntt-local.sip-ta_tcp_stream 656 | application/vnd.oasis.opendocument.chart odc 657 | application/vnd.oasis.opendocument.chart-template otc 658 | application/vnd.oasis.opendocument.database odb 659 | application/vnd.oasis.opendocument.formula odf 660 | application/vnd.oasis.opendocument.formula-template odft 661 | application/vnd.oasis.opendocument.graphics odg 662 | application/vnd.oasis.opendocument.graphics-template otg 663 | application/vnd.oasis.opendocument.image odi 664 | application/vnd.oasis.opendocument.image-template oti 665 | application/vnd.oasis.opendocument.presentation odp 666 | application/vnd.oasis.opendocument.presentation-template otp 667 | application/vnd.oasis.opendocument.spreadsheet ods 668 | application/vnd.oasis.opendocument.spreadsheet-template ots 669 | application/vnd.oasis.opendocument.text odt 670 | application/vnd.oasis.opendocument.text-master odm 671 | application/vnd.oasis.opendocument.text-template ott 672 | application/vnd.oasis.opendocument.text-web oth 673 | # application/vnd.obn 674 | # application/vnd.oftn.l10n+json 675 | # application/vnd.oipf.contentaccessdownload+xml 676 | # application/vnd.oipf.contentaccessstreaming+xml 677 | # application/vnd.oipf.cspg-hexbinary 678 | # application/vnd.oipf.dae.svg+xml 679 | # application/vnd.oipf.dae.xhtml+xml 680 | # application/vnd.oipf.mippvcontrolmessage+xml 681 | # application/vnd.oipf.pae.gem 682 | # application/vnd.oipf.spdiscovery+xml 683 | # application/vnd.oipf.spdlist+xml 684 | # application/vnd.oipf.ueprofile+xml 685 | # application/vnd.oipf.userprofile+xml 686 | application/vnd.olpc-sugar xo 687 | # application/vnd.oma-scws-config 688 | # application/vnd.oma-scws-http-request 689 | # application/vnd.oma-scws-http-response 690 | # application/vnd.oma.bcast.associated-procedure-parameter+xml 691 | # application/vnd.oma.bcast.drm-trigger+xml 692 | # application/vnd.oma.bcast.imd+xml 693 | # application/vnd.oma.bcast.ltkm 694 | # application/vnd.oma.bcast.notification+xml 695 | # application/vnd.oma.bcast.provisioningtrigger 696 | # application/vnd.oma.bcast.sgboot 697 | # application/vnd.oma.bcast.sgdd+xml 698 | # application/vnd.oma.bcast.sgdu 699 | # application/vnd.oma.bcast.simple-symbol-container 700 | # application/vnd.oma.bcast.smartcard-trigger+xml 701 | # application/vnd.oma.bcast.sprov+xml 702 | # application/vnd.oma.bcast.stkm 703 | # application/vnd.oma.cab-address-book+xml 704 | # application/vnd.oma.cab-feature-handler+xml 705 | # application/vnd.oma.cab-pcc+xml 706 | # application/vnd.oma.cab-user-prefs+xml 707 | # application/vnd.oma.dcd 708 | # application/vnd.oma.dcdc 709 | application/vnd.oma.dd2+xml dd2 710 | # application/vnd.oma.drm.risd+xml 711 | # application/vnd.oma.group-usage-list+xml 712 | # application/vnd.oma.pal+xml 713 | # application/vnd.oma.poc.detailed-progress-report+xml 714 | # application/vnd.oma.poc.final-report+xml 715 | # application/vnd.oma.poc.groups+xml 716 | # application/vnd.oma.poc.invocation-descriptor+xml 717 | # application/vnd.oma.poc.optimized-progress-report+xml 718 | # application/vnd.oma.push 719 | # application/vnd.oma.scidm.messages+xml 720 | # application/vnd.oma.xcap-directory+xml 721 | # application/vnd.omads-email+xml 722 | # application/vnd.omads-file+xml 723 | # application/vnd.omads-folder+xml 724 | # application/vnd.omaloc-supl-init 725 | application/vnd.openofficeorg.extension oxt 726 | # application/vnd.openxmlformats-officedocument.custom-properties+xml 727 | # application/vnd.openxmlformats-officedocument.customxmlproperties+xml 728 | # application/vnd.openxmlformats-officedocument.drawing+xml 729 | # application/vnd.openxmlformats-officedocument.drawingml.chart+xml 730 | # application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml 731 | # application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml 732 | # application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml 733 | # application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml 734 | # application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml 735 | # application/vnd.openxmlformats-officedocument.extended-properties+xml 736 | # application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml 737 | # application/vnd.openxmlformats-officedocument.presentationml.comments+xml 738 | # application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml 739 | # application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml 740 | # application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml 741 | application/vnd.openxmlformats-officedocument.presentationml.presentation pptx 742 | # application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml 743 | # application/vnd.openxmlformats-officedocument.presentationml.presprops+xml 744 | application/vnd.openxmlformats-officedocument.presentationml.slide sldx 745 | # application/vnd.openxmlformats-officedocument.presentationml.slide+xml 746 | # application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml 747 | # application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml 748 | application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx 749 | # application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml 750 | # application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml 751 | # application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml 752 | # application/vnd.openxmlformats-officedocument.presentationml.tags+xml 753 | application/vnd.openxmlformats-officedocument.presentationml.template potx 754 | # application/vnd.openxmlformats-officedocument.presentationml.template.main+xml 755 | # application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml 756 | # application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml 757 | # application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml 758 | # application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml 759 | # application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml 760 | # application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml 761 | # application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml 762 | # application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml 763 | # application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml 764 | # application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml 765 | # application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml 766 | # application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml 767 | # application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml 768 | # application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml 769 | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx 770 | # application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml 771 | # application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml 772 | # application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml 773 | # application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml 774 | # application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml 775 | application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx 776 | # application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml 777 | # application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml 778 | # application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml 779 | # application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml 780 | # application/vnd.openxmlformats-officedocument.theme+xml 781 | # application/vnd.openxmlformats-officedocument.themeoverride+xml 782 | # application/vnd.openxmlformats-officedocument.vmldrawing 783 | # application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml 784 | application/vnd.openxmlformats-officedocument.wordprocessingml.document docx 785 | # application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml 786 | # application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml 787 | # application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml 788 | # application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml 789 | # application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml 790 | # application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml 791 | # application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml 792 | # application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml 793 | # application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml 794 | application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx 795 | # application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml 796 | # application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml 797 | # application/vnd.openxmlformats-package.core-properties+xml 798 | # application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml 799 | # application/vnd.openxmlformats-package.relationships+xml 800 | # application/vnd.quobject-quoxdocument 801 | # application/vnd.osa.netdeploy 802 | application/vnd.osgeo.mapguide.package mgp 803 | # application/vnd.osgi.bundle 804 | application/vnd.osgi.dp dp 805 | application/vnd.osgi.subsystem esa 806 | # application/vnd.otps.ct-kip+xml 807 | application/vnd.palm pdb pqa oprc 808 | # application/vnd.paos.xml 809 | application/vnd.pawaafile paw 810 | application/vnd.pg.format str 811 | application/vnd.pg.osasli ei6 812 | # application/vnd.piaccess.application-licence 813 | application/vnd.picsel efif 814 | application/vnd.pmi.widget wg 815 | # application/vnd.poc.group-advertisement+xml 816 | application/vnd.pocketlearn plf 817 | application/vnd.powerbuilder6 pbd 818 | # application/vnd.powerbuilder6-s 819 | # application/vnd.powerbuilder7 820 | # application/vnd.powerbuilder7-s 821 | # application/vnd.powerbuilder75 822 | # application/vnd.powerbuilder75-s 823 | # application/vnd.preminet 824 | application/vnd.previewsystems.box box 825 | application/vnd.proteus.magazine mgz 826 | application/vnd.publishare-delta-tree qps 827 | application/vnd.pvi.ptid1 ptid 828 | # application/vnd.pwg-multiplexed 829 | # application/vnd.pwg-xhtml-print+xml 830 | # application/vnd.qualcomm.brew-app-res 831 | application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb 832 | # application/vnd.radisys.moml+xml 833 | # application/vnd.radisys.msml+xml 834 | # application/vnd.radisys.msml-audit+xml 835 | # application/vnd.radisys.msml-audit-conf+xml 836 | # application/vnd.radisys.msml-audit-conn+xml 837 | # application/vnd.radisys.msml-audit-dialog+xml 838 | # application/vnd.radisys.msml-audit-stream+xml 839 | # application/vnd.radisys.msml-conf+xml 840 | # application/vnd.radisys.msml-dialog+xml 841 | # application/vnd.radisys.msml-dialog-base+xml 842 | # application/vnd.radisys.msml-dialog-fax-detect+xml 843 | # application/vnd.radisys.msml-dialog-fax-sendrecv+xml 844 | # application/vnd.radisys.msml-dialog-group+xml 845 | # application/vnd.radisys.msml-dialog-speech+xml 846 | # application/vnd.radisys.msml-dialog-transform+xml 847 | # application/vnd.rainstor.data 848 | # application/vnd.rapid 849 | application/vnd.realvnc.bed bed 850 | application/vnd.recordare.musicxml mxl 851 | application/vnd.recordare.musicxml+xml musicxml 852 | # application/vnd.renlearn.rlprint 853 | application/vnd.rig.cryptonote cryptonote 854 | application/vnd.rim.cod cod 855 | application/vnd.rn-realmedia rm 856 | application/vnd.rn-realmedia-vbr rmvb 857 | application/vnd.route66.link66+xml link66 858 | # application/vnd.rs-274x 859 | # application/vnd.ruckus.download 860 | # application/vnd.s3sms 861 | application/vnd.sailingtracker.track st 862 | # application/vnd.sbm.cid 863 | # application/vnd.sbm.mid2 864 | # application/vnd.scribus 865 | # application/vnd.sealed.3df 866 | # application/vnd.sealed.csf 867 | # application/vnd.sealed.doc 868 | # application/vnd.sealed.eml 869 | # application/vnd.sealed.mht 870 | # application/vnd.sealed.net 871 | # application/vnd.sealed.ppt 872 | # application/vnd.sealed.tiff 873 | # application/vnd.sealed.xls 874 | # application/vnd.sealedmedia.softseal.html 875 | # application/vnd.sealedmedia.softseal.pdf 876 | application/vnd.seemail see 877 | application/vnd.sema sema 878 | application/vnd.semd semd 879 | application/vnd.semf semf 880 | application/vnd.shana.informed.formdata ifm 881 | application/vnd.shana.informed.formtemplate itp 882 | application/vnd.shana.informed.interchange iif 883 | application/vnd.shana.informed.package ipk 884 | application/vnd.simtech-mindmapper twd twds 885 | application/vnd.smaf mmf 886 | # application/vnd.smart.notebook 887 | application/vnd.smart.teacher teacher 888 | # application/vnd.software602.filler.form+xml 889 | # application/vnd.software602.filler.form-xml-zip 890 | application/vnd.solent.sdkm+xml sdkm sdkd 891 | application/vnd.spotfire.dxp dxp 892 | application/vnd.spotfire.sfs sfs 893 | # application/vnd.sss-cod 894 | # application/vnd.sss-dtf 895 | # application/vnd.sss-ntf 896 | application/vnd.stardivision.calc sdc 897 | application/vnd.stardivision.draw sda 898 | application/vnd.stardivision.impress sdd 899 | application/vnd.stardivision.math smf 900 | application/vnd.stardivision.writer sdw vor 901 | application/vnd.stardivision.writer-global sgl 902 | application/vnd.stepmania.package smzip 903 | application/vnd.stepmania.stepchart sm 904 | # application/vnd.street-stream 905 | application/vnd.sun.xml.calc sxc 906 | application/vnd.sun.xml.calc.template stc 907 | application/vnd.sun.xml.draw sxd 908 | application/vnd.sun.xml.draw.template std 909 | application/vnd.sun.xml.impress sxi 910 | application/vnd.sun.xml.impress.template sti 911 | application/vnd.sun.xml.math sxm 912 | application/vnd.sun.xml.writer sxw 913 | application/vnd.sun.xml.writer.global sxg 914 | application/vnd.sun.xml.writer.template stw 915 | # application/vnd.sun.wadl+xml 916 | application/vnd.sus-calendar sus susp 917 | application/vnd.svd svd 918 | # application/vnd.swiftview-ics 919 | application/vnd.symbian.install sis sisx 920 | application/vnd.syncml+xml xsm 921 | application/vnd.syncml.dm+wbxml bdm 922 | application/vnd.syncml.dm+xml xdm 923 | # application/vnd.syncml.dm.notification 924 | # application/vnd.syncml.ds.notification 925 | application/vnd.tao.intent-module-archive tao 926 | application/vnd.tcpdump.pcap pcap cap dmp 927 | application/vnd.tmobile-livetv tmo 928 | application/vnd.trid.tpt tpt 929 | application/vnd.triscape.mxs mxs 930 | application/vnd.trueapp tra 931 | # application/vnd.truedoc 932 | # application/vnd.ubisoft.webplayer 933 | application/vnd.ufdl ufd ufdl 934 | application/vnd.uiq.theme utz 935 | application/vnd.umajin umj 936 | application/vnd.unity unityweb 937 | application/vnd.uoml+xml uoml 938 | # application/vnd.uplanet.alert 939 | # application/vnd.uplanet.alert-wbxml 940 | # application/vnd.uplanet.bearer-choice 941 | # application/vnd.uplanet.bearer-choice-wbxml 942 | # application/vnd.uplanet.cacheop 943 | # application/vnd.uplanet.cacheop-wbxml 944 | # application/vnd.uplanet.channel 945 | # application/vnd.uplanet.channel-wbxml 946 | # application/vnd.uplanet.list 947 | # application/vnd.uplanet.list-wbxml 948 | # application/vnd.uplanet.listcmd 949 | # application/vnd.uplanet.listcmd-wbxml 950 | # application/vnd.uplanet.signal 951 | application/vnd.vcx vcx 952 | # application/vnd.vd-study 953 | # application/vnd.vectorworks 954 | # application/vnd.verimatrix.vcas 955 | # application/vnd.vidsoft.vidconference 956 | application/vnd.visio vsd vst vss vsw 957 | application/vnd.visionary vis 958 | # application/vnd.vividence.scriptfile 959 | application/vnd.vsf vsf 960 | # application/vnd.wap.sic 961 | # application/vnd.wap.slc 962 | application/vnd.wap.wbxml wbxml 963 | application/vnd.wap.wmlc wmlc 964 | application/vnd.wap.wmlscriptc wmlsc 965 | application/vnd.webturbo wtb 966 | # application/vnd.wfa.wsc 967 | # application/vnd.wmc 968 | # application/vnd.wmf.bootstrap 969 | # application/vnd.wolfram.mathematica 970 | # application/vnd.wolfram.mathematica.package 971 | application/vnd.wolfram.player nbp 972 | application/vnd.wordperfect wpd 973 | application/vnd.wqd wqd 974 | # application/vnd.wrq-hp3000-labelled 975 | application/vnd.wt.stf stf 976 | # application/vnd.wv.csp+wbxml 977 | # application/vnd.wv.csp+xml 978 | # application/vnd.wv.ssp+xml 979 | application/vnd.xara xar 980 | application/vnd.xfdl xfdl 981 | # application/vnd.xfdl.webform 982 | # application/vnd.xmi+xml 983 | # application/vnd.xmpie.cpkg 984 | # application/vnd.xmpie.dpkg 985 | # application/vnd.xmpie.plan 986 | # application/vnd.xmpie.ppkg 987 | # application/vnd.xmpie.xlim 988 | application/vnd.yamaha.hv-dic hvd 989 | application/vnd.yamaha.hv-script hvs 990 | application/vnd.yamaha.hv-voice hvp 991 | application/vnd.yamaha.openscoreformat osf 992 | application/vnd.yamaha.openscoreformat.osfpvg+xml osfpvg 993 | # application/vnd.yamaha.remote-setup 994 | application/vnd.yamaha.smaf-audio saf 995 | application/vnd.yamaha.smaf-phrase spf 996 | # application/vnd.yamaha.through-ngn 997 | # application/vnd.yamaha.tunnel-udpencap 998 | application/vnd.yellowriver-custom-menu cmp 999 | application/vnd.zul zir zirz 1000 | application/vnd.zzazz.deck+xml zaz 1001 | application/voicexml+xml vxml 1002 | # application/vq-rtcpxr 1003 | # application/watcherinfo+xml 1004 | # application/whoispp-query 1005 | # application/whoispp-response 1006 | application/widget wgt 1007 | application/winhlp hlp 1008 | # application/wita 1009 | # application/wordperfect5.1 1010 | application/wsdl+xml wsdl 1011 | application/wspolicy+xml wspolicy 1012 | application/x-7z-compressed 7z 1013 | application/x-abiword abw 1014 | application/x-ace-compressed ace 1015 | # application/x-amf 1016 | application/x-apple-diskimage dmg 1017 | application/x-authorware-bin aab x32 u32 vox 1018 | application/x-authorware-map aam 1019 | application/x-authorware-seg aas 1020 | application/x-bcpio bcpio 1021 | application/x-bittorrent torrent 1022 | application/x-blorb blb blorb 1023 | application/x-bzip bz 1024 | application/x-bzip2 bz2 boz 1025 | application/x-cbr cbr cba cbt cbz cb7 1026 | application/x-cdlink vcd 1027 | application/x-cfs-compressed cfs 1028 | application/x-chat chat 1029 | application/x-chess-pgn pgn 1030 | application/x-conference nsc 1031 | # application/x-compress 1032 | application/x-cpio cpio 1033 | application/x-csh csh 1034 | application/x-debian-package deb udeb 1035 | application/x-dgc-compressed dgc 1036 | application/x-director dir dcr dxr cst cct cxt w3d fgd swa 1037 | application/x-doom wad 1038 | application/x-dtbncx+xml ncx 1039 | application/x-dtbook+xml dtb 1040 | application/x-dtbresource+xml res 1041 | application/x-dvi dvi 1042 | application/x-envoy evy 1043 | application/x-eva eva 1044 | application/x-font-bdf bdf 1045 | # application/x-font-dos 1046 | # application/x-font-framemaker 1047 | application/x-font-ghostscript gsf 1048 | # application/x-font-libgrx 1049 | application/x-font-linux-psf psf 1050 | application/x-font-otf otf 1051 | application/x-font-pcf pcf 1052 | application/x-font-snf snf 1053 | # application/x-font-speedo 1054 | # application/x-font-sunos-news 1055 | application/x-font-ttf ttf ttc 1056 | application/x-font-type1 pfa pfb pfm afm 1057 | application/x-font-woff woff 1058 | # application/x-font-vfont 1059 | application/x-freearc arc 1060 | application/x-futuresplash spl 1061 | application/x-gca-compressed gca 1062 | application/x-glulx ulx 1063 | application/x-gnumeric gnumeric 1064 | application/x-gramps-xml gramps 1065 | application/x-gtar gtar 1066 | # application/x-gzip 1067 | application/x-hdf hdf 1068 | application/x-install-instructions install 1069 | application/x-iso9660-image iso 1070 | application/x-java-jnlp-file jnlp 1071 | application/x-latex latex 1072 | application/x-lzh-compressed lzh lha 1073 | application/x-mie mie 1074 | application/x-mobipocket-ebook prc mobi 1075 | application/x-ms-application application 1076 | application/x-ms-shortcut lnk 1077 | application/x-ms-wmd wmd 1078 | application/x-ms-wmz wmz 1079 | application/x-ms-xbap xbap 1080 | application/x-msaccess mdb 1081 | application/x-msbinder obd 1082 | application/x-mscardfile crd 1083 | application/x-msclip clp 1084 | application/x-msdownload exe dll com bat msi 1085 | application/x-msmediaview mvb m13 m14 1086 | application/x-msmetafile wmf wmz emf emz 1087 | application/x-msmoney mny 1088 | application/x-mspublisher pub 1089 | application/x-msschedule scd 1090 | application/x-msterminal trm 1091 | application/x-mswrite wri 1092 | application/x-netcdf nc cdf 1093 | application/x-nzb nzb 1094 | application/x-pkcs12 p12 pfx 1095 | application/x-pkcs7-certificates p7b spc 1096 | application/x-pkcs7-certreqresp p7r 1097 | application/x-rar-compressed rar 1098 | application/x-research-info-systems ris 1099 | application/x-sh sh 1100 | application/x-shar shar 1101 | application/x-shockwave-flash swf 1102 | application/x-silverlight-app xap 1103 | application/x-sql sql 1104 | application/x-stuffit sit 1105 | application/x-stuffitx sitx 1106 | application/x-subrip srt 1107 | application/x-sv4cpio sv4cpio 1108 | application/x-sv4crc sv4crc 1109 | application/x-t3vm-image t3 1110 | application/x-tads gam 1111 | application/x-tar tar 1112 | application/x-tcl tcl 1113 | application/x-tex tex 1114 | application/x-tex-tfm tfm 1115 | application/x-texinfo texinfo texi 1116 | application/x-tgif obj 1117 | application/x-ustar ustar 1118 | application/x-wais-source src 1119 | application/x-x509-ca-cert der crt 1120 | application/x-xfig fig 1121 | application/x-xliff+xml xlf 1122 | application/x-xpinstall xpi 1123 | application/x-xz xz 1124 | application/x-zmachine z1 z2 z3 z4 z5 z6 z7 z8 1125 | # application/x400-bp 1126 | application/xaml+xml xaml 1127 | # application/xcap-att+xml 1128 | # application/xcap-caps+xml 1129 | application/xcap-diff+xml xdf 1130 | # application/xcap-el+xml 1131 | # application/xcap-error+xml 1132 | # application/xcap-ns+xml 1133 | # application/xcon-conference-info-diff+xml 1134 | # application/xcon-conference-info+xml 1135 | application/xenc+xml xenc 1136 | application/xhtml+xml xhtml xht 1137 | # application/xhtml-voice+xml 1138 | application/xml xml xsl 1139 | application/xml-dtd dtd 1140 | # application/xml-external-parsed-entity 1141 | # application/xmpp+xml 1142 | application/xop+xml xop 1143 | application/xproc+xml xpl 1144 | application/xslt+xml xslt 1145 | application/xspf+xml xspf 1146 | application/xv+xml mxml xhvml xvml xvm 1147 | application/yang yang 1148 | application/yin+xml yin 1149 | application/zip zip 1150 | # audio/1d-interleaved-parityfec 1151 | # audio/32kadpcm 1152 | # audio/3gpp 1153 | # audio/3gpp2 1154 | # audio/ac3 1155 | audio/adpcm adp 1156 | # audio/amr 1157 | # audio/amr-wb 1158 | # audio/amr-wb+ 1159 | # audio/asc 1160 | # audio/atrac-advanced-lossless 1161 | # audio/atrac-x 1162 | # audio/atrac3 1163 | audio/basic au snd 1164 | # audio/bv16 1165 | # audio/bv32 1166 | # audio/clearmode 1167 | # audio/cn 1168 | # audio/dat12 1169 | # audio/dls 1170 | # audio/dsr-es201108 1171 | # audio/dsr-es202050 1172 | # audio/dsr-es202211 1173 | # audio/dsr-es202212 1174 | # audio/dv 1175 | # audio/dvi4 1176 | # audio/eac3 1177 | # audio/evrc 1178 | # audio/evrc-qcp 1179 | # audio/evrc0 1180 | # audio/evrc1 1181 | # audio/evrcb 1182 | # audio/evrcb0 1183 | # audio/evrcb1 1184 | # audio/evrcwb 1185 | # audio/evrcwb0 1186 | # audio/evrcwb1 1187 | # audio/example 1188 | # audio/fwdred 1189 | # audio/g719 1190 | # audio/g722 1191 | # audio/g7221 1192 | # audio/g723 1193 | # audio/g726-16 1194 | # audio/g726-24 1195 | # audio/g726-32 1196 | # audio/g726-40 1197 | # audio/g728 1198 | # audio/g729 1199 | # audio/g7291 1200 | # audio/g729d 1201 | # audio/g729e 1202 | # audio/gsm 1203 | # audio/gsm-efr 1204 | # audio/gsm-hr-08 1205 | # audio/ilbc 1206 | # audio/ip-mr_v2.5 1207 | # audio/isac 1208 | # audio/l16 1209 | # audio/l20 1210 | # audio/l24 1211 | # audio/l8 1212 | # audio/lpc 1213 | audio/midi mid midi kar rmi 1214 | # audio/mobile-xmf 1215 | audio/mp4 mp4a 1216 | # audio/mp4a-latm 1217 | # audio/mpa 1218 | # audio/mpa-robust 1219 | audio/mpeg mpga mp2 mp2a mp3 m2a m3a 1220 | # audio/mpeg4-generic 1221 | # audio/musepack 1222 | audio/ogg oga ogg spx 1223 | # audio/opus 1224 | # audio/parityfec 1225 | # audio/pcma 1226 | # audio/pcma-wb 1227 | # audio/pcmu-wb 1228 | # audio/pcmu 1229 | # audio/prs.sid 1230 | # audio/qcelp 1231 | # audio/red 1232 | # audio/rtp-enc-aescm128 1233 | # audio/rtp-midi 1234 | # audio/rtx 1235 | audio/s3m s3m 1236 | audio/silk sil 1237 | # audio/smv 1238 | # audio/smv0 1239 | # audio/smv-qcp 1240 | # audio/sp-midi 1241 | # audio/speex 1242 | # audio/t140c 1243 | # audio/t38 1244 | # audio/telephone-event 1245 | # audio/tone 1246 | # audio/uemclip 1247 | # audio/ulpfec 1248 | # audio/vdvi 1249 | # audio/vmr-wb 1250 | # audio/vnd.3gpp.iufp 1251 | # audio/vnd.4sb 1252 | # audio/vnd.audiokoz 1253 | # audio/vnd.celp 1254 | # audio/vnd.cisco.nse 1255 | # audio/vnd.cmles.radio-events 1256 | # audio/vnd.cns.anp1 1257 | # audio/vnd.cns.inf1 1258 | audio/vnd.dece.audio uva uvva 1259 | audio/vnd.digital-winds eol 1260 | # audio/vnd.dlna.adts 1261 | # audio/vnd.dolby.heaac.1 1262 | # audio/vnd.dolby.heaac.2 1263 | # audio/vnd.dolby.mlp 1264 | # audio/vnd.dolby.mps 1265 | # audio/vnd.dolby.pl2 1266 | # audio/vnd.dolby.pl2x 1267 | # audio/vnd.dolby.pl2z 1268 | # audio/vnd.dolby.pulse.1 1269 | audio/vnd.dra dra 1270 | audio/vnd.dts dts 1271 | audio/vnd.dts.hd dtshd 1272 | # audio/vnd.dvb.file 1273 | # audio/vnd.everad.plj 1274 | # audio/vnd.hns.audio 1275 | audio/vnd.lucent.voice lvp 1276 | audio/vnd.ms-playready.media.pya pya 1277 | # audio/vnd.nokia.mobile-xmf 1278 | # audio/vnd.nortel.vbk 1279 | audio/vnd.nuera.ecelp4800 ecelp4800 1280 | audio/vnd.nuera.ecelp7470 ecelp7470 1281 | audio/vnd.nuera.ecelp9600 ecelp9600 1282 | # audio/vnd.octel.sbc 1283 | # audio/vnd.qcelp 1284 | # audio/vnd.rhetorex.32kadpcm 1285 | audio/vnd.rip rip 1286 | # audio/vnd.sealedmedia.softseal.mpeg 1287 | # audio/vnd.vmx.cvsd 1288 | # audio/vorbis 1289 | # audio/vorbis-config 1290 | audio/webm weba 1291 | audio/x-aac aac 1292 | audio/x-aiff aif aiff aifc 1293 | audio/x-caf caf 1294 | audio/x-flac flac 1295 | audio/x-matroska mka 1296 | audio/x-mpegurl m3u 1297 | audio/x-ms-wax wax 1298 | audio/x-ms-wma wma 1299 | audio/x-pn-realaudio ram ra 1300 | audio/x-pn-realaudio-plugin rmp 1301 | # audio/x-tta 1302 | audio/x-wav wav 1303 | audio/xm xm 1304 | chemical/x-cdx cdx 1305 | chemical/x-cif cif 1306 | chemical/x-cmdf cmdf 1307 | chemical/x-cml cml 1308 | chemical/x-csml csml 1309 | # chemical/x-pdb 1310 | chemical/x-xyz xyz 1311 | image/bmp bmp 1312 | image/cgm cgm 1313 | # image/example 1314 | # image/fits 1315 | image/g3fax g3 1316 | image/gif gif 1317 | image/ief ief 1318 | # image/jp2 1319 | image/jpeg jpeg jpg jpe 1320 | # image/jpm 1321 | # image/jpx 1322 | image/ktx ktx 1323 | # image/naplps 1324 | image/png png 1325 | image/prs.btif btif 1326 | # image/prs.pti 1327 | image/sgi sgi 1328 | image/svg+xml svg svgz 1329 | # image/t38 1330 | image/tiff tiff tif 1331 | # image/tiff-fx 1332 | image/vnd.adobe.photoshop psd 1333 | # image/vnd.cns.inf2 1334 | image/vnd.dece.graphic uvi uvvi uvg uvvg 1335 | image/vnd.dvb.subtitle sub 1336 | image/vnd.djvu djvu djv 1337 | image/vnd.dwg dwg 1338 | image/vnd.dxf dxf 1339 | image/vnd.fastbidsheet fbs 1340 | image/vnd.fpx fpx 1341 | image/vnd.fst fst 1342 | image/vnd.fujixerox.edmics-mmr mmr 1343 | image/vnd.fujixerox.edmics-rlc rlc 1344 | # image/vnd.globalgraphics.pgb 1345 | # image/vnd.microsoft.icon 1346 | # image/vnd.mix 1347 | image/vnd.ms-modi mdi 1348 | image/vnd.ms-photo wdp 1349 | image/vnd.net-fpx npx 1350 | # image/vnd.radiance 1351 | # image/vnd.sealed.png 1352 | # image/vnd.sealedmedia.softseal.gif 1353 | # image/vnd.sealedmedia.softseal.jpg 1354 | # image/vnd.svf 1355 | image/vnd.wap.wbmp wbmp 1356 | image/vnd.xiff xif 1357 | image/webp webp 1358 | image/x-3ds 3ds 1359 | image/x-cmu-raster ras 1360 | image/x-cmx cmx 1361 | image/x-freehand fh fhc fh4 fh5 fh7 1362 | image/x-icon ico 1363 | image/x-mrsid-image sid 1364 | image/x-pcx pcx 1365 | image/x-pict pic pct 1366 | image/x-portable-anymap pnm 1367 | image/x-portable-bitmap pbm 1368 | image/x-portable-graymap pgm 1369 | image/x-portable-pixmap ppm 1370 | image/x-rgb rgb 1371 | image/x-tga tga 1372 | image/x-xbitmap xbm 1373 | image/x-xpixmap xpm 1374 | image/x-xwindowdump xwd 1375 | # message/cpim 1376 | # message/delivery-status 1377 | # message/disposition-notification 1378 | # message/example 1379 | # message/external-body 1380 | # message/feedback-report 1381 | # message/global 1382 | # message/global-delivery-status 1383 | # message/global-disposition-notification 1384 | # message/global-headers 1385 | # message/http 1386 | # message/imdn+xml 1387 | # message/news 1388 | # message/partial 1389 | message/rfc822 eml mime 1390 | # message/s-http 1391 | # message/sip 1392 | # message/sipfrag 1393 | # message/tracking-status 1394 | # message/vnd.si.simp 1395 | # model/example 1396 | model/iges igs iges 1397 | model/mesh msh mesh silo 1398 | model/vnd.collada+xml dae 1399 | model/vnd.dwf dwf 1400 | # model/vnd.flatland.3dml 1401 | model/vnd.gdl gdl 1402 | # model/vnd.gs-gdl 1403 | # model/vnd.gs.gdl 1404 | model/vnd.gtw gtw 1405 | # model/vnd.moml+xml 1406 | model/vnd.mts mts 1407 | # model/vnd.parasolid.transmit.binary 1408 | # model/vnd.parasolid.transmit.text 1409 | model/vnd.vtu vtu 1410 | model/vrml wrl vrml 1411 | model/x3d+binary x3db x3dbz 1412 | model/x3d+vrml x3dv x3dvz 1413 | model/x3d+xml x3d x3dz 1414 | # multipart/alternative 1415 | # multipart/appledouble 1416 | # multipart/byteranges 1417 | # multipart/digest 1418 | # multipart/encrypted 1419 | # multipart/example 1420 | # multipart/form-data 1421 | # multipart/header-set 1422 | # multipart/mixed 1423 | # multipart/parallel 1424 | # multipart/related 1425 | # multipart/report 1426 | # multipart/signed 1427 | # multipart/voice-message 1428 | # text/1d-interleaved-parityfec 1429 | text/cache-manifest appcache 1430 | text/calendar ics ifb 1431 | text/css css 1432 | text/csv csv 1433 | # text/directory 1434 | # text/dns 1435 | # text/ecmascript 1436 | # text/enriched 1437 | # text/example 1438 | # text/fwdred 1439 | text/html html htm 1440 | # text/javascript 1441 | text/n3 n3 1442 | # text/parityfec 1443 | text/plain txt text conf def list log in 1444 | # text/prs.fallenstein.rst 1445 | text/prs.lines.tag dsc 1446 | # text/vnd.radisys.msml-basic-layout 1447 | # text/red 1448 | # text/rfc822-headers 1449 | text/richtext rtx 1450 | # text/rtf 1451 | # text/rtp-enc-aescm128 1452 | # text/rtx 1453 | text/sgml sgml sgm 1454 | # text/t140 1455 | text/tab-separated-values tsv 1456 | text/troff t tr roff man me ms 1457 | text/turtle ttl 1458 | # text/ulpfec 1459 | text/uri-list uri uris urls 1460 | text/vcard vcard 1461 | # text/vnd.abc 1462 | text/vnd.curl curl 1463 | text/vnd.curl.dcurl dcurl 1464 | text/vnd.curl.scurl scurl 1465 | text/vnd.curl.mcurl mcurl 1466 | # text/vnd.dmclientscript 1467 | text/vnd.dvb.subtitle sub 1468 | # text/vnd.esmertec.theme-descriptor 1469 | text/vnd.fly fly 1470 | text/vnd.fmi.flexstor flx 1471 | text/vnd.graphviz gv 1472 | text/vnd.in3d.3dml 3dml 1473 | text/vnd.in3d.spot spot 1474 | # text/vnd.iptc.newsml 1475 | # text/vnd.iptc.nitf 1476 | # text/vnd.latex-z 1477 | # text/vnd.motorola.reflex 1478 | # text/vnd.ms-mediapackage 1479 | # text/vnd.net2phone.commcenter.command 1480 | # text/vnd.si.uricatalogue 1481 | text/vnd.sun.j2me.app-descriptor jad 1482 | # text/vnd.trolltech.linguist 1483 | # text/vnd.wap.si 1484 | # text/vnd.wap.sl 1485 | text/vnd.wap.wml wml 1486 | text/vnd.wap.wmlscript wmls 1487 | text/x-asm s asm 1488 | text/x-c c cc cxx cpp h hh dic 1489 | text/x-fortran f for f77 f90 1490 | text/x-java-source java 1491 | text/x-opml opml 1492 | text/x-pascal p pas 1493 | text/x-nfo nfo 1494 | text/x-setext etx 1495 | text/x-sfv sfv 1496 | text/x-uuencode uu 1497 | text/x-vcalendar vcs 1498 | text/x-vcard vcf 1499 | # text/xml 1500 | # text/xml-external-parsed-entity 1501 | # video/1d-interleaved-parityfec 1502 | video/3gpp 3gp 1503 | # video/3gpp-tt 1504 | video/3gpp2 3g2 1505 | # video/bmpeg 1506 | # video/bt656 1507 | # video/celb 1508 | # video/dv 1509 | # video/example 1510 | video/h261 h261 1511 | video/h263 h263 1512 | # video/h263-1998 1513 | # video/h263-2000 1514 | video/h264 h264 1515 | # video/h264-rcdo 1516 | # video/h264-svc 1517 | video/jpeg jpgv 1518 | # video/jpeg2000 1519 | video/jpm jpm jpgm 1520 | video/mj2 mj2 mjp2 1521 | # video/mp1s 1522 | # video/mp2p 1523 | # video/mp2t 1524 | video/mp4 mp4 mp4v mpg4 1525 | # video/mp4v-es 1526 | video/mpeg mpeg mpg mpe m1v m2v 1527 | # video/mpeg4-generic 1528 | # video/mpv 1529 | # video/nv 1530 | video/ogg ogv 1531 | # video/parityfec 1532 | # video/pointer 1533 | video/quicktime qt mov 1534 | # video/raw 1535 | # video/rtp-enc-aescm128 1536 | # video/rtx 1537 | # video/smpte292m 1538 | # video/ulpfec 1539 | # video/vc1 1540 | # video/vnd.cctv 1541 | video/vnd.dece.hd uvh uvvh 1542 | video/vnd.dece.mobile uvm uvvm 1543 | # video/vnd.dece.mp4 1544 | video/vnd.dece.pd uvp uvvp 1545 | video/vnd.dece.sd uvs uvvs 1546 | video/vnd.dece.video uvv uvvv 1547 | # video/vnd.directv.mpeg 1548 | # video/vnd.directv.mpeg-tts 1549 | # video/vnd.dlna.mpeg-tts 1550 | video/vnd.dvb.file dvb 1551 | video/vnd.fvt fvt 1552 | # video/vnd.hns.video 1553 | # video/vnd.iptvforum.1dparityfec-1010 1554 | # video/vnd.iptvforum.1dparityfec-2005 1555 | # video/vnd.iptvforum.2dparityfec-1010 1556 | # video/vnd.iptvforum.2dparityfec-2005 1557 | # video/vnd.iptvforum.ttsavc 1558 | # video/vnd.iptvforum.ttsmpeg2 1559 | # video/vnd.motorola.video 1560 | # video/vnd.motorola.videop 1561 | video/vnd.mpegurl mxu m4u 1562 | video/vnd.ms-playready.media.pyv pyv 1563 | # video/vnd.nokia.interleaved-multimedia 1564 | # video/vnd.nokia.videovoip 1565 | # video/vnd.objectvideo 1566 | # video/vnd.sealed.mpeg1 1567 | # video/vnd.sealed.mpeg4 1568 | # video/vnd.sealed.swf 1569 | # video/vnd.sealedmedia.softseal.mov 1570 | video/vnd.uvvu.mp4 uvu uvvu 1571 | video/vnd.vivo viv 1572 | video/webm webm 1573 | video/x-f4v f4v 1574 | video/x-fli fli 1575 | video/x-flv flv 1576 | video/x-m4v m4v 1577 | video/x-matroska mkv mk3d mks 1578 | video/x-mng mng 1579 | video/x-ms-asf asf asx 1580 | video/x-ms-vob vob 1581 | video/x-ms-wm wm 1582 | video/x-ms-wmv wmv 1583 | video/x-ms-wmx wmx 1584 | video/x-ms-wvx wvx 1585 | video/x-msvideo avi 1586 | video/x-sgi-movie movie 1587 | video/x-smv smv 1588 | x-conference/x-cooltalk ice 1589 | --------------------------------------------------------------------------------