commit 3b9fd1de5e8d0ed0d4dc27855133b90fea1b3402
parent d030fc54b1a94c2671dc99240952bb0cd9bf15cb
Author: Hayden Hamilton <hayden@haydenvh.com>
Date: Tue, 24 Dec 2019 17:44:57 +0000
..
Diffstat:
16 files changed, 1059 insertions(+), 137 deletions(-)
diff --git a/.config/calcurse/Xtheme b/.config/calcurse/Xtheme
@@ -1,44 +0,0 @@
-!
-! calcurse/Xtheme
-! Created by Hayden Hamilton
-!
-! haydenvh.com
-! Copyright (c) 2019 Hayden Hamilton. LICENSE:GPLv2 .licenses/gplv2.license
-!
-
-! special
-*.foreground: #a84b8d
-*.background: #090711
-*.cursorColor: #1e5eb3
-
-! black
-*.color0: #dc6f3c
-*.color8: #dc6f3c
-
-! red
-*.color1: #4747e1
-*.color9: #4747e1
-
-! green
-*.color4: #892b2b
-*.color12: #892b2b
-
-! yellow
-*.color3: #a1a1d9
-*.color11: #a1a1d9
-
-! blue
-*.color5: #1f8a27
-*.color13: #1f8a27
-
-! magenta
-*.color2: #a84b8d
-*.color10: #a84b8d
-
-! cyan
-*.color6: #434343
-*.color14: #434343
-
-! white
-*.color7: #3ab475
-*.color15: #3ab475
diff --git a/.config/vim/colors/.vimrc b/.config/dfm/bookmarks
diff --git a/.config/dfm/config b/.config/dfm/config
@@ -0,0 +1,16 @@
+DFM_DOT="0"
+DFM_USE_HH_PATCH="1"
+DFM_FILETYPE_PNG="feh"
+DFM_FILETYPE_JPEG="feh"
+DFM_FILETYPE_JPG="feh"
+DFM_FILETYPE_JPE="feh"
+DFM_FILETYPE_TIFF="feh"
+DFM_FILETYPE_OPUS="mpv"
+DFM_FILETYPE_M4A="mpv"
+DFM_FILETYPE_MP4="mpv"
+DFM_FILETYPE_MP3="mpv"
+DFM_FILETYPE_WEBM="mpv"
+DFM_FILETYPE_OGG="mpv"
+DFM_FILETYPE_SH="vim"
+DFM_FILETYPE_HTML="w3m"
+DFM_FILETYPE_MD="vim"
diff --git a/.config/fff/fff b/.config/fff/fff
@@ -0,0 +1 @@
+/home/hayden/.config/fff
+\ No newline at end of file
diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables
@@ -1,44 +0,0 @@
-# This file contains fish universal variable definitions.
-# VERSION: 3.0
-SETUVAR --export BROWSER:vimb
-SETUVAR --export EDITOR:vim
-SETUVAR --export LANG:en_US\x2eUTF\x2d8
-SETUVAR --export LC_CTYPE:en_US\x2eUTF\x2d8
-SETUVAR --export PASS:/home/hayden/work/pass
-SETUVAR --export --path PATH:/usr/local/bin\x1e/bin\x1e/usr/bin\x1e/usr/local/sbin\x1e/usr/sbin\x1e/sbin\x1e/home/hayden/\x2escripts/bin/c/\x1e/home/hayden/\x2escripts/bin/display/\x1e/home/hayden/\x2escripts/bin/dmenu/\x1e/home/hayden/\x2escripts/bin/git/\x1e/home/hayden/\x2escripts/bin/i3/\x1e/home/hayden/\x2escripts/bin/misc/\x1e\x2e\x1e\x1b\x5b0m\x1b\x5b35m/home/hayden/\x2escripts/bin/c/\x1b\x5b0m\x20\x1b\x5b35m/home/hayden/\x2escripts/bin/display/\x1b\x5b0m\x20\x1b\x5b35m/home/hayden/\x2escripts/bin/dmenu/\x1b\x5b0m\x20\x1b\x5b35m/home/hayden/\x2escripts/bin/git/\x1b\x5b0m\x20\x1b\x5b35m/home/hayden/\x2escripts/bin/i3/\x1b\x5b0m\x20\x1b\x5b35m/home/hayden/\x2escripts/bin/misc/\x1b\x5b0m\x20
-SETUVAR --export SCRIPTS:/home/hayden/\x2escripts/bin
-SETUVAR --export SUDO_ASKPASS:/home/hayden/\x2escripts/bin/dmenu/daskpass
-SETUVAR --export TERMINAL:urxvt
-SETUVAR --export WORK:/home/hayden/work
-SETUVAR __fish_init_2_39_8:\x1d
-SETUVAR __fish_init_2_3_0:\x1d
-SETUVAR __fish_init_3_x:\x1d
-SETUVAR fish_color_autosuggestion:86296b
-SETUVAR fish_color_cancel:\x2dr
-SETUVAR fish_color_command:a84b8d
-SETUVAR fish_color_comment:990000
-SETUVAR fish_color_cwd:green
-SETUVAR fish_color_cwd_root:red
-SETUVAR fish_color_end:009900
-SETUVAR fish_color_error:ff0000
-SETUVAR fish_color_escape:00a6b2
-SETUVAR fish_color_history_current:\x2d\x2dbold
-SETUVAR fish_color_host:normal
-SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue
-SETUVAR fish_color_normal:normal
-SETUVAR fish_color_operator:00a6b2
-SETUVAR fish_color_param:00afff
-SETUVAR fish_color_quote:3ab475
-SETUVAR fish_color_redirection:00afff
-SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack
-SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
-SETUVAR fish_color_user:brgreen
-SETUVAR fish_color_valid_path:\x2d\x2dunderline
-SETUVAR fish_greeting:Welcome\x20to\x20fish\x2c\x20the\x20friendly\x20interactive\x20shell
-SETUVAR fish_key_bindings:fish_vi_key_bindings
-SETUVAR fish_pager_color_completion:\x1d
-SETUVAR fish_pager_color_description:B3A06D\x1eyellow
-SETUVAR fish_pager_color_prefix:white\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
-SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
-SETUVAR --export scripts:\x1b\x5b0m\x1b\x5b35m/home/hayden/\x2escripts/bin/c/\x1b\x5b0m\x20\x1b\x5b35m/home/hayden/\x2escripts/bin/display/\x1b\x5b0m\x20\x1b\x5b35m/home/hayden/\x2escripts/bin/dmenu/\x1b\x5b0m\x20\x1b\x5b35m/home/hayden/\x2escripts/bin/git/\x1b\x5b0m\x20\x1b\x5b35m/home/hayden/\x2escripts/bin/i3/\x1b\x5b0m\x20\x1b\x5b35m/home/hayden/\x2escripts/bin/misc/\x1b\x5b0m\x20
-SETUVAR --export work:/home/hayden/work
diff --git a/.config/htop/htoprc b/.config/htop/htoprc
@@ -1,26 +0,0 @@
-# Beware! This file is rewritten by htop when settings are changed in the interface.
-# The parser is also very primitive, and not human-friendly.
-fields=0 48 17 18 38 39 40 2 46 47 49 1
-sort_key=46
-sort_direction=1
-hide_threads=0
-hide_kernel_threads=1
-hide_userland_threads=0
-shadow_other_users=1
-show_thread_names=0
-show_program_path=1
-highlight_base_name=0
-highlight_megabytes=1
-highlight_threads=1
-tree_view=1
-header_margin=1
-detailed_cpu_time=0
-cpu_count_from_zero=1
-update_process_names=0
-account_guest_in_cpu_meter=0
-color_scheme=0
-delay=15
-left_meters=AllCPUs CPU Memory Swap LoadAverage Tasks
-left_meter_modes=1 1 1 1 1 1
-right_meters=Tasks LoadAverage Uptime Clock Hostname Uptime
-right_meter_modes=2 2 2 2 2 2
diff --git a/.config/i3/config b/.config/i3/config
@@ -248,7 +248,7 @@ exec fehffile ~/.wall.png
exec_always notify-send "i3 restarted. Press Super(windows key)+F1 to open the manual."
exec_always brightnessctl s 100%
exec_always crefresh
-exec $terminal -name dropdown -e fish
+exec $TERMINAL -name dropdown -e fish
##Setting colors for tabbed windows
#class #border #background #text
diff --git a/.config/i3blocks/i3blocks b/.config/i3blocks/i3blocks
@@ -0,0 +1 @@
+/home/hayden/.config/i3blocks/
+\ No newline at end of file
diff --git a/.config/irssi/away.log b/.config/irssi/away.log
@@ -1,21 +0,0 @@
---- Log opened Thu Dec 12 18:30:41 2019
-18:35 9/bishop948/ |g ethe idea is nice let's hope it never have to be used at all
-18:35 9/bishop948/ |g e*but
-20:57 9/aldcor8/ |g ei made #GNU/matrix as a result of todays "incident". Feel free to join :)
-20:57 ?/haydenhg8/ |g ek.
-20:59 9/aldcor8/ |g ewith feel free I meant that you must join that channel!
---- Log closed Thu Dec 12 21:04:32 2019
---- Log opened Thu Dec 12 23:40:41 2019
---- Log closed Thu Dec 12 23:41:09 2019
---- Log opened Sat Dec 14 00:18:42 2019
---- Log closed Sat Dec 14 00:18:42 2019
---- Log opened Sun Dec 15 00:58:34 2019
---- Log closed Sun Dec 15 11:24:57 2019
---- Log opened Tue Dec 17 23:29:52 2019
---- Log closed Wed Dec 18 07:12:52 2019
---- Log opened Sat Dec 21 01:27:29 2019
---- Log closed Sat Dec 21 11:01:32 2019
---- Log opened Mon Dec 23 01:53:33 2019
-10:16 #GNU/matrix: 2/ n0a110wg8/ |g ehaydenh: i'd be interested in checking out your dmenu fm tool. and that center patch looks awesome... i wrote a script for managing and connecting to my wireless networks in dmenu, works good for me
-12:24 #GNU/matrix: 2/ klausg8/ |g ehaydenh: you do c/cpp ?
---- Log closed Mon Dec 23 12:36:21 2019
diff --git a/.config/irssi/default.theme b/.config/irssi/default.theme
@@ -0,0 +1,295 @@
+# When testing changes, the easiest way to reload the theme is with /RELOAD.
+# This reloads the configuration file too, so if you did any changes remember
+# to /SAVE it first. Remember also that /SAVE overwrites the theme file with
+# old data so keep backups :)
+
+# TEMPLATES:
+
+# The real text formats that irssi uses are the ones you can find with
+# /FORMAT command. Back in the old days all the colors and texts were mixed
+# up in those formats, and it was really hard to change the colors since you
+# might have had to change them in tens of different places. So, then came
+# this templating system.
+
+# Now the /FORMATs don't have any colors in them, and they also have very
+# little other styling. Most of the stuff you need to change is in this
+# theme file. If you can't change something here, you can always go back
+# to change the /FORMATs directly, they're also saved in these .theme files.
+
+# So .. the templates. They're those {blahblah} parts you see all over the
+# /FORMATs and here. Their usage is simply {name parameter1 parameter2}.
+# When irssi sees this kind of text, it goes to find "name" from abstracts
+# block below and sets "parameter1" into $0 and "parameter2" into $1 (you
+# can have more parameters of course). Templates can have subtemplates.
+# Here's a small example:
+# /FORMAT format hello {colorify {underline world}}
+# abstracts = { colorify = "%G$0-%n"; underline = "%U$0-%U"; }
+# When irssi expands the templates in "format", the final string would be:
+# hello %G%Uworld%U%n
+# ie. underlined bright green "world" text.
+# and why "$0-", why not "$0"? $0 would only mean the first parameter,
+# $0- means all the parameters. With {underline hello world} you'd really
+# want to underline both of the words, not just the hello (and world would
+# actually be removed entirely).
+
+# COLORS:
+
+# You can find definitions for the color format codes in docs/formats.txt.
+
+# There's one difference here though. %n format. Normally it means the
+# default color of the terminal (white mostly), but here it means the
+# "reset color back to the one it was in higher template". For example
+# if there was /FORMAT test %g{foo}bar, and foo = "%Y$0%n", irssi would
+# print yellow "foo" (as set with %Y) but "bar" would be green, which was
+# set at the beginning before the {foo} template. If there wasn't the %g
+# at start, the normal behaviour of %n would occur. If you _really_ want
+# to use the terminal's default color, use %N.
+
+#############################################################################
+
+# default foreground color (%N) - -1 is the "default terminal color"
+default_color = "-1";
+
+# print timestamp/servertag at the end of line, not at beginning
+info_eol = "false";
+
+# these characters are automatically replaced with specified color
+# (dark grey by default)
+replaces = { "[]=" = "%K$*%n"; };
+
+abstracts = {
+ ##
+ ## generic
+ ##
+
+ # text to insert at the beginning of each non-message line
+ line_start = "%B-%n!%B-%n ";
+
+ # timestamp styling, nothing by default
+ timestamp = "$*";
+
+ # any kind of text that needs hilighting, default is to bold
+ hilight = "%_$*%_";
+
+ # any kind of error message, default is bright red
+ error = "%R$*%n";
+
+ # channel name is printed
+ channel = "%_$*%_";
+
+ # nick is printed
+ nick = "%_$*%_";
+
+ # nick host is printed
+ nickhost = "[$*]";
+
+ # server name is printed
+ server = "%_$*%_";
+
+ # some kind of comment is printed
+ comment = "[$*]";
+
+ # reason for something is printed (part, quit, kick, ..)
+ reason = "{comment $*}";
+
+ # mode change is printed ([+o nick])
+ mode = "{comment $*}";
+
+ ##
+ ## channel specific messages
+ ##
+
+ # highlighted nick/host is printed (joins)
+ channick_hilight = "%C$*%n";
+ chanhost_hilight = "{nickhost %c$*%n}";
+
+ # nick/host is printed (parts, quits, etc.)
+ channick = "%c$*%n";
+ chanhost = "{nickhost $*}";
+
+ # highlighted channel name is printed
+ channelhilight = "%c$*%n";
+
+ # ban/ban exception/invite list mask is printed
+ ban = "%c$*%n";
+
+ ##
+ ## messages
+ ##
+
+ # the basic styling of how to print message, $0 = nick mode, $1 = nick
+ msgnick = "%K<%n$0$1-%K>%n %|";
+
+ # message from you is printed. "ownnick" specifies the styling of the
+ # nick ($0 part in msgnick) and "ownmsgnick" specifies the styling of the
+ # whole line.
+
+ # Example1: You want the message text to be green:
+ # ownmsgnick = "{msgnick $0 $1-}%g";
+ # Example2.1: You want < and > chars to be yellow:
+ # ownmsgnick = "%Y{msgnick $0 $1-%Y}%n";
+ # (you'll also have to remove <> from replaces list above)
+ # Example2.2: But you still want to keep <> grey for other messages:
+ # pubmsgnick = "%K{msgnick $0 $1-%K}%n";
+ # pubmsgmenick = "%K{msgnick $0 $1-%K}%n";
+ # pubmsghinick = "%K{msgnick $1 $0$2-%n%K}%n";
+ # ownprivmsgnick = "%K{msgnick $*%K}%n";
+ # privmsgnick = "%K{msgnick %R$*%K}%n";
+
+ # $0 = nick mode, $1 = nick
+ ownmsgnick = "{msgnick $0 $1-}";
+ ownnick = "%_$*%n";
+
+ # public message in channel, $0 = nick mode, $1 = nick
+ pubmsgnick = "{msgnick $0 $1-}";
+ pubnick = "%N$*%n";
+
+ # public message in channel meant for me, $0 = nick mode, $1 = nick
+ pubmsgmenick = "{msgnick $0 $1-}";
+ menick = "%Y$*%n";
+
+ # public highlighted message in channel
+ # $0 = highlight color, $1 = nick mode, $2 = nick
+ pubmsghinick = "{msgnick $1 $0$2-%n}";
+
+ # channel name is printed with message
+ msgchannel = "%K:%c$*%n";
+
+ # private message, $0 = nick, $1 = host
+ privmsg = "[%R$0%K(%r$1-%K)%n] ";
+
+ # private message from you, $0 = "msg", $1 = target nick
+ ownprivmsg = "[%r$0%K(%R$1-%K)%n] ";
+
+ # own private message in query
+ ownprivmsgnick = "{msgnick $*}";
+ ownprivnick = "%_$*%n";
+
+ # private message in query
+ privmsgnick = "{msgnick %R$*%n}";
+
+ ##
+ ## Actions (/ME stuff)
+ ##
+
+ # used internally by this theme
+ action_core = "%_ * $*%n";
+
+ # generic one that's used by most actions
+ action = "{action_core $*} ";
+
+ # own action, both private/public
+ ownaction = "{action $*}";
+
+ # own action with target, both private/public
+ ownaction_target = "{action_core $0}%K:%c$1%n ";
+
+ # private action sent by others
+ pvtaction = "%_ (*) $*%n ";
+ pvtaction_query = "{action $*}";
+
+ # public action sent by others
+ pubaction = "{action $*}";
+
+
+ ##
+ ## other IRC events
+ ##
+
+ # whois
+ whois = "%# $[8]0 : $1-";
+
+ # notices
+ ownnotice = "[%r$0%K(%R$1-%K)]%n ";
+ notice = "%K-%M$*%K-%n ";
+ pubnotice_channel = "%K:%m$*";
+ pvtnotice_host = "%K(%m$*%K)";
+ servernotice = "%g!$*%n ";
+
+ # CTCPs
+ ownctcp = "[%r$0%K(%R$1-%K)] ";
+ ctcp = "%g$*%n";
+
+ # wallops
+ wallop = "%_$*%n: ";
+ wallop_nick = "%n$*";
+ wallop_action = "%_ * $*%n ";
+
+ # netsplits
+ netsplit = "%R$*%n";
+ netjoin = "%C$*%n";
+
+ # /names list
+ names_prefix = "";
+ names_nick = "[%_$0%_$1-] ";
+ names_nick_op = "{names_nick $*}";
+ names_nick_halfop = "{names_nick $*}";
+ names_nick_voice = "{names_nick $*}";
+ names_users = "[%g$*%n]";
+ names_channel = "%G$*%n";
+
+ # DCC
+ dcc = "%g$*%n";
+ dccfile = "%_$*%_";
+
+ # DCC chat, own msg/action
+ dccownmsg = "[%r$0%K($1-%K)%n] ";
+ dccownnick = "%R$*%n";
+ dccownquerynick = "%_$*%n";
+ dccownaction = "{action $*}";
+ dccownaction_target = "{action_core $0}%K:%c$1%n ";
+
+ # DCC chat, others
+ dccmsg = "[%G$1-%K(%g$0%K)%n] ";
+ dccquerynick = "%G$*%n";
+ dccaction = "%_ (*dcc*) $*%n %|";
+
+ ##
+ ## statusbar
+ ##
+
+ # default background for all statusbars. You can also give
+ # the default foreground color for statusbar items.
+ sb_background = "%4%w";
+ window_border = "%4%w";
+
+ # default backround for "default" statusbar group
+ #sb_default_bg = "%4";
+ # background for prompt / input line
+ sb_prompt_bg = "%n";
+ # background for info statusbar
+ sb_info_bg = "%8";
+ # background for topicbar (same default)
+ #sb_topic_bg = "%4";
+
+ # text at the beginning of statusbars. "sb" already puts a space there,
+ # so we don't use anything by default.
+ sbstart = "";
+ # text at the end of statusbars. Use space so that it's never
+ # used for anything.
+ sbend = " ";
+
+ topicsbstart = "{sbstart $*}";
+ topicsbend = "{sbend $*}";
+
+ prompt = "[$*] ";
+
+ sb = " %c[%n$*%c]%n";
+ sbmode = "(%c+%n$*)";
+ sbaway = " (%GzZzZ%n)";
+ sbservertag = ":$0 (change with ^X)";
+ sbnickmode = "$0";
+
+ # activity in statusbar
+
+ # ',' separator
+ sb_act_sep = "%c$*";
+ # normal text
+ sb_act_text = "%c$*";
+ # public message
+ sb_act_msg = "%W$*";
+ # hilight
+ sb_act_hilight = "%M$*";
+ # hilight with specified color, $0 = color, $1 = text
+ sb_act_hilight_color = "$0$1-%n";
+};
diff --git a/.config/mpd/mpd.conf b/.config/mpd/mpd.conf
@@ -0,0 +1,19 @@
+music_directory "~/music"
+db_file "~/.config/mpd/database"
+log_file "~/.config/mpd/log"
+playlist_directory "~/.config/mpd/playlists"
+pid_file "~/.config/mpd/pid"
+state_file "~/.config/mpd/state"
+sticker_file "~/.config/mpd/sticker.sql"
+
+auto_update "yes"
+
+bind_to_address "127.0.0.1"
+restore_paused "yes"
+max_output_buffer_size "16384"
+
+audio_output {
+ type "alsa"
+ name "ALSA"
+ device "hw:0"
+}
diff --git a/.config/vim/surround.vim b/.config/vim/surround.vim
@@ -0,0 +1,619 @@
+" surround.vim - Surroundings
+" Author: Tim Pope <http://tpo.pe/>
+" Version: 2.1
+" GetLatestVimScripts: 1697 1 :AutoInstall: surround.vim
+
+if exists("g:loaded_surround") || &cp || v:version < 700
+ finish
+endif
+let g:loaded_surround = 1
+
+" Input functions {{{1
+
+function! s:getchar()
+ let c = getchar()
+ if c =~ '^\d\+$'
+ let c = nr2char(c)
+ endif
+ return c
+endfunction
+
+function! s:inputtarget()
+ let c = s:getchar()
+ while c =~ '^\d\+$'
+ let c .= s:getchar()
+ endwhile
+ if c == " "
+ let c .= s:getchar()
+ endif
+ if c =~ "\<Esc>\|\<C-C>\|\0"
+ return ""
+ else
+ return c
+ endif
+endfunction
+
+function! s:inputreplacement()
+ let c = s:getchar()
+ if c == " "
+ let c .= s:getchar()
+ endif
+ if c =~ "\<Esc>" || c =~ "\<C-C>"
+ return ""
+ else
+ return c
+ endif
+endfunction
+
+function! s:beep()
+ exe "norm! \<Esc>"
+ return ""
+endfunction
+
+function! s:redraw()
+ redraw
+ return ""
+endfunction
+
+" }}}1
+
+" Wrapping functions {{{1
+
+function! s:extractbefore(str)
+ if a:str =~ '\r'
+ return matchstr(a:str,'.*\ze\r')
+ else
+ return matchstr(a:str,'.*\ze\n')
+ endif
+endfunction
+
+function! s:extractafter(str)
+ if a:str =~ '\r'
+ return matchstr(a:str,'\r\zs.*')
+ else
+ return matchstr(a:str,'\n\zs.*')
+ endif
+endfunction
+
+function! s:fixindent(str,spc)
+ let str = substitute(a:str,'\t',repeat(' ',&sw),'g')
+ let spc = substitute(a:spc,'\t',repeat(' ',&sw),'g')
+ let str = substitute(str,'\(\n\|\%^\).\@=','\1'.spc,'g')
+ if ! &et
+ let str = substitute(str,'\s\{'.&ts.'\}',"\t",'g')
+ endif
+ return str
+endfunction
+
+function! s:process(string)
+ let i = 0
+ for i in range(7)
+ let repl_{i} = ''
+ let m = matchstr(a:string,nr2char(i).'.\{-\}\ze'.nr2char(i))
+ if m != ''
+ let m = substitute(strpart(m,1),'\r.*','','')
+ let repl_{i} = input(match(m,'\w\+$') >= 0 ? m.': ' : m)
+ endif
+ endfor
+ let s = ""
+ let i = 0
+ while i < strlen(a:string)
+ let char = strpart(a:string,i,1)
+ if char2nr(char) < 8
+ let next = stridx(a:string,char,i+1)
+ if next == -1
+ let s .= char
+ else
+ let insertion = repl_{char2nr(char)}
+ let subs = strpart(a:string,i+1,next-i-1)
+ let subs = matchstr(subs,'\r.*')
+ while subs =~ '^\r.*\r'
+ let sub = matchstr(subs,"^\r\\zs[^\r]*\r[^\r]*")
+ let subs = strpart(subs,strlen(sub)+1)
+ let r = stridx(sub,"\r")
+ let insertion = substitute(insertion,strpart(sub,0,r),strpart(sub,r+1),'')
+ endwhile
+ let s .= insertion
+ let i = next
+ endif
+ else
+ let s .= char
+ endif
+ let i += 1
+ endwhile
+ return s
+endfunction
+
+function! s:wrap(string,char,type,removed,special)
+ let keeper = a:string
+ let newchar = a:char
+ let s:input = ""
+ let type = a:type
+ let linemode = type ==# 'V' ? 1 : 0
+ let before = ""
+ let after = ""
+ if type ==# "V"
+ let initspaces = matchstr(keeper,'\%^\s*')
+ else
+ let initspaces = matchstr(getline('.'),'\%^\s*')
+ endif
+ let pairs = "b()B{}r[]a<>"
+ let extraspace = ""
+ if newchar =~ '^ '
+ let newchar = strpart(newchar,1)
+ let extraspace = ' '
+ endif
+ let idx = stridx(pairs,newchar)
+ if newchar == ' '
+ let before = ''
+ let after = ''
+ elseif exists("b:surround_".char2nr(newchar))
+ let all = s:process(b:surround_{char2nr(newchar)})
+ let before = s:extractbefore(all)
+ let after = s:extractafter(all)
+ elseif exists("g:surround_".char2nr(newchar))
+ let all = s:process(g:surround_{char2nr(newchar)})
+ let before = s:extractbefore(all)
+ let after = s:extractafter(all)
+ elseif newchar ==# "p"
+ let before = "\n"
+ let after = "\n\n"
+ elseif newchar ==# 's'
+ let before = ' '
+ let after = ''
+ elseif newchar ==# ':'
+ let before = ':'
+ let after = ''
+ elseif newchar =~# "[tT\<C-T><]"
+ let dounmapp = 0
+ let dounmapb = 0
+ if !maparg(">","c")
+ let dounmapb = 1
+ " Hide from AsNeeded
+ exe "cn"."oremap > ><CR>"
+ endif
+ let default = ""
+ if newchar ==# "T"
+ if !exists("s:lastdel")
+ let s:lastdel = ""
+ endif
+ let default = matchstr(s:lastdel,'<\zs.\{-\}\ze>')
+ endif
+ let tag = input("<",default)
+ if dounmapb
+ silent! cunmap >
+ endif
+ let s:input = tag
+ if tag != ""
+ let keepAttributes = ( match(tag, ">$") == -1 )
+ let tag = substitute(tag,'>*$','','')
+ let attributes = ""
+ if keepAttributes
+ let attributes = matchstr(a:removed, '<[^ \t\n]\+\zs\_.\{-\}\ze>')
+ endif
+ let s:input = tag . '>'
+ if tag =~ '/$'
+ let tag = substitute(tag, '/$', '', '')
+ let before = '<'.tag.attributes.' />'
+ let after = ''
+ else
+ let before = '<'.tag.attributes.'>'
+ let after = '</'.substitute(tag,' .*','','').'>'
+ endif
+ if newchar == "\<C-T>"
+ if type ==# "v" || type ==# "V"
+ let before .= "\n\t"
+ endif
+ if type ==# "v"
+ let after = "\n". after
+ endif
+ endif
+ endif
+ elseif newchar ==# 'l' || newchar == '\'
+ " LaTeX
+ let env = input('\begin{')
+ if env != ""
+ let s:input = env."\<CR>"
+ let env = '{' . env
+ let env .= s:closematch(env)
+ echo '\begin'.env
+ let before = '\begin'.env
+ let after = '\end'.matchstr(env,'[^}]*').'}'
+ endif
+ elseif newchar ==# 'f' || newchar ==# 'F'
+ let fnc = input('function: ')
+ if fnc != ""
+ let s:input = fnc."\<CR>"
+ let before = substitute(fnc,'($','','').'('
+ let after = ')'
+ if newchar ==# 'F'
+ let before .= ' '
+ let after = ' ' . after
+ endif
+ endif
+ elseif newchar ==# "\<C-F>"
+ let fnc = input('function: ')
+ let s:input = fnc."\<CR>"
+ let before = '('.fnc.' '
+ let after = ')'
+ elseif idx >= 0
+ let spc = (idx % 3) == 1 ? " " : ""
+ let idx = idx / 3 * 3
+ let before = strpart(pairs,idx+1,1) . spc
+ let after = spc . strpart(pairs,idx+2,1)
+ elseif newchar == "\<C-[>" || newchar == "\<C-]>"
+ let before = "{\n\t"
+ let after = "\n}"
+ elseif newchar !~ '\a'
+ let before = newchar
+ let after = newchar
+ else
+ let before = ''
+ let after = ''
+ endif
+ let after = substitute(after ,'\n','\n'.initspaces,'g')
+ if type ==# 'V' || (a:special && type ==# "v")
+ let before = substitute(before,' \+$','','')
+ let after = substitute(after ,'^ \+','','')
+ if after !~ '^\n'
+ let after = initspaces.after
+ endif
+ if keeper !~ '\n$' && after !~ '^\n'
+ let keeper .= "\n"
+ elseif keeper =~ '\n$' && after =~ '^\n'
+ let after = strpart(after,1)
+ endif
+ if keeper !~ '^\n' && before !~ '\n\s*$'
+ let before .= "\n"
+ if a:special
+ let before .= "\t"
+ endif
+ elseif keeper =~ '^\n' && before =~ '\n\s*$'
+ let keeper = strcharpart(keeper,1)
+ endif
+ if type ==# 'V' && keeper =~ '\n\s*\n$'
+ let keeper = strcharpart(keeper,0,strchars(keeper) - 1)
+ endif
+ endif
+ if type ==# 'V'
+ let before = initspaces.before
+ endif
+ if before =~ '\n\s*\%$'
+ if type ==# 'v'
+ let keeper = initspaces.keeper
+ endif
+ let padding = matchstr(before,'\n\zs\s\+\%$')
+ let before = substitute(before,'\n\s\+\%$','\n','')
+ let keeper = s:fixindent(keeper,padding)
+ endif
+ if type ==# 'V'
+ let keeper = before.keeper.after
+ elseif type =~ "^\<C-V>"
+ " Really we should be iterating over the buffer
+ let repl = substitute(before,'[\\~]','\\&','g').'\1'.substitute(after,'[\\~]','\\&','g')
+ let repl = substitute(repl,'\n',' ','g')
+ let keeper = substitute(keeper."\n",'\(.\{-\}\)\(\n\)',repl.'\n','g')
+ let keeper = substitute(keeper,'\n\%$','','')
+ else
+ let keeper = before.extraspace.keeper.extraspace.after
+ endif
+ return keeper
+endfunction
+
+function! s:wrapreg(reg,char,removed,special)
+ let orig = getreg(a:reg)
+ let type = substitute(getregtype(a:reg),'\d\+$','','')
+ let new = s:wrap(orig,a:char,type,a:removed,a:special)
+ call setreg(a:reg,new,type)
+endfunction
+" }}}1
+
+function! s:insert(...) " {{{1
+ " Optional argument causes the result to appear on 3 lines, not 1
+ let linemode = a:0 ? a:1 : 0
+ let char = s:inputreplacement()
+ while char == "\<CR>" || char == "\<C-S>"
+ " TODO: use total count for additional blank lines
+ let linemode += 1
+ let char = s:inputreplacement()
+ endwhile
+ if char == ""
+ return ""
+ endif
+ let cb_save = &clipboard
+ set clipboard-=unnamed clipboard-=unnamedplus
+ let reg_save = @@
+ call setreg('"',"\r",'v')
+ call s:wrapreg('"',char,"",linemode)
+ " If line mode is used and the surrounding consists solely of a suffix,
+ " remove the initial newline. This fits a use case of mine but is a
+ " little inconsistent. Is there anyone that would prefer the simpler
+ " behavior of just inserting the newline?
+ if linemode && match(getreg('"'),'^\n\s*\zs.*') == 0
+ call setreg('"',matchstr(getreg('"'),'^\n\s*\zs.*'),getregtype('"'))
+ endif
+ " This can be used to append a placeholder to the end
+ if exists("g:surround_insert_tail")
+ call setreg('"',g:surround_insert_tail,"a".getregtype('"'))
+ endif
+ if &ve != 'all' && col('.') >= col('$')
+ if &ve == 'insert'
+ let extra_cols = virtcol('.') - virtcol('$')
+ if extra_cols > 0
+ let [regval,regtype] = [getreg('"',1,1),getregtype('"')]
+ call setreg('"',join(map(range(extra_cols),'" "'),''),'v')
+ norm! ""p
+ call setreg('"',regval,regtype)
+ endif
+ endif
+ norm! ""p
+ else
+ norm! ""P
+ endif
+ if linemode
+ call s:reindent()
+ endif
+ norm! `]
+ call search('\r','bW')
+ let @@ = reg_save
+ let &clipboard = cb_save
+ return "\<Del>"
+endfunction " }}}1
+
+function! s:reindent() " {{{1
+ if exists("b:surround_indent") ? b:surround_indent : (!exists("g:surround_indent") || g:surround_indent)
+ silent norm! '[=']
+ endif
+endfunction " }}}1
+
+function! s:dosurround(...) " {{{1
+ let scount = v:count1
+ let char = (a:0 ? a:1 : s:inputtarget())
+ let spc = ""
+ if char =~ '^\d\+'
+ let scount = scount * matchstr(char,'^\d\+')
+ let char = substitute(char,'^\d\+','','')
+ endif
+ if char =~ '^ '
+ let char = strpart(char,1)
+ let spc = 1
+ endif
+ if char == 'a'
+ let char = '>'
+ endif
+ if char == 'r'
+ let char = ']'
+ endif
+ let newchar = ""
+ if a:0 > 1
+ let newchar = a:2
+ if newchar == "\<Esc>" || newchar == "\<C-C>" || newchar == ""
+ return s:beep()
+ endif
+ endif
+ let cb_save = &clipboard
+ set clipboard-=unnamed clipboard-=unnamedplus
+ let append = ""
+ let original = getreg('"')
+ let otype = getregtype('"')
+ call setreg('"',"")
+ let strcount = (scount == 1 ? "" : scount)
+ if char == '/'
+ exe 'norm! '.strcount.'[/d'.strcount.']/'
+ elseif char =~# '[[:punct:][:space:]]' && char !~# '[][(){}<>"''`]'
+ exe 'norm! T'.char
+ if getline('.')[col('.')-1] == char
+ exe 'norm! l'
+ endif
+ exe 'norm! dt'.char
+ else
+ exe 'norm! d'.strcount.'i'.char
+ endif
+ let keeper = getreg('"')
+ let okeeper = keeper " for reindent below
+ if keeper == ""
+ call setreg('"',original,otype)
+ let &clipboard = cb_save
+ return ""
+ endif
+ let oldline = getline('.')
+ let oldlnum = line('.')
+ if char ==# "p"
+ call setreg('"','','V')
+ elseif char ==# "s" || char ==# "w" || char ==# "W"
+ " Do nothing
+ call setreg('"','')
+ elseif char =~ "[\"'`]"
+ exe "norm! i \<Esc>d2i".char
+ call setreg('"',substitute(getreg('"'),' ','',''))
+ elseif char == '/'
+ norm! "_x
+ call setreg('"','/**/',"c")
+ let keeper = substitute(substitute(keeper,'^/\*\s\=','',''),'\s\=\*$','','')
+ elseif char =~# '[[:punct:][:space:]]' && char !~# '[][(){}<>]'
+ exe 'norm! F'.char
+ exe 'norm! df'.char
+ else
+ " One character backwards
+ call search('\m.', 'bW')
+ exe "norm! da".char
+ endif
+ let removed = getreg('"')
+ let rem2 = substitute(removed,'\n.*','','')
+ let oldhead = strpart(oldline,0,strlen(oldline)-strlen(rem2))
+ let oldtail = strpart(oldline, strlen(oldline)-strlen(rem2))
+ let regtype = getregtype('"')
+ if char =~# '[\[({<T]' || spc
+ let keeper = substitute(keeper,'^\s\+','','')
+ let keeper = substitute(keeper,'\s\+$','','')
+ endif
+ if col("']") == col("$") && col('.') + 1 == col('$')
+ if oldhead =~# '^\s*$' && a:0 < 2
+ let keeper = substitute(keeper,'\%^\n'.oldhead.'\(\s*.\{-\}\)\n\s*\%$','\1','')
+ endif
+ let pcmd = "p"
+ else
+ let pcmd = "P"
+ endif
+ if line('.') + 1 < oldlnum && regtype ==# "V"
+ let pcmd = "p"
+ endif
+ call setreg('"',keeper,regtype)
+ if newchar != ""
+ let special = a:0 > 2 ? a:3 : 0
+ call s:wrapreg('"',newchar,removed,special)
+ endif
+ silent exe 'norm! ""'.pcmd.'`['
+ if removed =~ '\n' || okeeper =~ '\n' || getreg('"') =~ '\n'
+ call s:reindent()
+ endif
+ if getline('.') =~ '^\s\+$' && keeper =~ '^\s*\n'
+ silent norm! cc
+ endif
+ call setreg('"',original,otype)
+ let s:lastdel = removed
+ let &clipboard = cb_save
+ if newchar == ""
+ silent! call repeat#set("\<Plug>Dsurround".char,scount)
+ else
+ silent! call repeat#set("\<Plug>C".(a:0 > 2 && a:3 ? "S" : "s")."urround".char.newchar.s:input,scount)
+ endif
+endfunction " }}}1
+
+function! s:changesurround(...) " {{{1
+ let a = s:inputtarget()
+ if a == ""
+ return s:beep()
+ endif
+ let b = s:inputreplacement()
+ if b == ""
+ return s:beep()
+ endif
+ call s:dosurround(a,b,a:0 && a:1)
+endfunction " }}}1
+
+function! s:opfunc(type, ...) abort " {{{1
+ if a:type ==# 'setup'
+ let &opfunc = matchstr(expand('<sfile>'), '<SNR>\w\+$')
+ return 'g@'
+ endif
+ let char = s:inputreplacement()
+ if char == ""
+ return s:beep()
+ endif
+ let reg = '"'
+ let sel_save = &selection
+ let &selection = "inclusive"
+ let cb_save = &clipboard
+ set clipboard-=unnamed clipboard-=unnamedplus
+ let reg_save = getreg(reg)
+ let reg_type = getregtype(reg)
+ let type = a:type
+ if a:type == "char"
+ silent exe 'norm! v`[o`]"'.reg.'y'
+ let type = 'v'
+ elseif a:type == "line"
+ silent exe 'norm! `[V`]"'.reg.'y'
+ let type = 'V'
+ elseif a:type ==# "v" || a:type ==# "V" || a:type ==# "\<C-V>"
+ let &selection = sel_save
+ let ve = &virtualedit
+ if !(a:0 && a:1)
+ set virtualedit=
+ endif
+ silent exe 'norm! gv"'.reg.'y'
+ let &virtualedit = ve
+ elseif a:type =~ '^\d\+$'
+ let type = 'v'
+ silent exe 'norm! ^v'.a:type.'$h"'.reg.'y'
+ if mode() ==# 'v'
+ norm! v
+ return s:beep()
+ endif
+ else
+ let &selection = sel_save
+ let &clipboard = cb_save
+ return s:beep()
+ endif
+ let keeper = getreg(reg)
+ if type ==# "v" && a:type !=# "v"
+ let append = matchstr(keeper,'\_s\@<!\s*$')
+ let keeper = substitute(keeper,'\_s\@<!\s*$','','')
+ endif
+ call setreg(reg,keeper,type)
+ call s:wrapreg(reg,char,"",a:0 && a:1)
+ if type ==# "v" && a:type !=# "v" && append != ""
+ call setreg(reg,append,"ac")
+ endif
+ silent exe 'norm! gv'.(reg == '"' ? '' : '"' . reg).'p`['
+ if type ==# 'V' || (getreg(reg) =~ '\n' && type ==# 'v')
+ call s:reindent()
+ endif
+ call setreg(reg,reg_save,reg_type)
+ let &selection = sel_save
+ let &clipboard = cb_save
+ if a:type =~ '^\d\+$'
+ silent! call repeat#set("\<Plug>Y".(a:0 && a:1 ? "S" : "s")."surround".char.s:input,a:type)
+ else
+ silent! call repeat#set("\<Plug>SurroundRepeat".char.s:input)
+ endif
+endfunction
+
+function! s:opfunc2(...) abort
+ if !a:0 || a:1 ==# 'setup'
+ let &opfunc = matchstr(expand('<sfile>'), '<SNR>\w\+$')
+ return 'g@'
+ endif
+ call s:opfunc(a:1, 1)
+endfunction " }}}1
+
+function! s:closematch(str) " {{{1
+ " Close an open (, {, [, or < on the command line.
+ let tail = matchstr(a:str,'.[^\[\](){}<>]*$')
+ if tail =~ '^\[.\+'
+ return "]"
+ elseif tail =~ '^(.\+'
+ return ")"
+ elseif tail =~ '^{.\+'
+ return "}"
+ elseif tail =~ '^<.+'
+ return ">"
+ else
+ return ""
+ endif
+endfunction " }}}1
+
+nnoremap <silent> <Plug>SurroundRepeat .
+nnoremap <silent> <Plug>Dsurround :<C-U>call <SID>dosurround(<SID>inputtarget())<CR>
+nnoremap <silent> <Plug>Csurround :<C-U>call <SID>changesurround()<CR>
+nnoremap <silent> <Plug>CSurround :<C-U>call <SID>changesurround(1)<CR>
+nnoremap <expr> <Plug>Yssurround '^'.v:count1.<SID>opfunc('setup').'g_'
+nnoremap <expr> <Plug>YSsurround <SID>opfunc2('setup').'_'
+nnoremap <expr> <Plug>Ysurround <SID>opfunc('setup')
+nnoremap <expr> <Plug>YSurround <SID>opfunc2('setup')
+vnoremap <silent> <Plug>VSurround :<C-U>call <SID>opfunc(visualmode(),visualmode() ==# 'V' ? 1 : 0)<CR>
+vnoremap <silent> <Plug>VgSurround :<C-U>call <SID>opfunc(visualmode(),visualmode() ==# 'V' ? 0 : 1)<CR>
+inoremap <silent> <Plug>Isurround <C-R>=<SID>insert()<CR>
+inoremap <silent> <Plug>ISurround <C-R>=<SID>insert(1)<CR>
+
+if !exists("g:surround_no_mappings") || ! g:surround_no_mappings
+ nmap ds <Plug>Dsurround
+ nmap cs <Plug>Csurround
+ nmap cS <Plug>CSurround
+ nmap ys <Plug>Ysurround
+ nmap yS <Plug>YSurround
+ nmap yss <Plug>Yssurround
+ nmap ySs <Plug>YSsurround
+ nmap ySS <Plug>YSsurround
+ xmap S <Plug>VSurround
+ xmap gS <Plug>VgSurround
+ if !exists("g:surround_no_insert_mappings") || ! g:surround_no_insert_mappings
+ if !hasmapto("<Plug>Isurround","i") && "" == mapcheck("<C-S>","i")
+ imap <C-S> <Plug>Isurround
+ endif
+ imap <C-G>s <Plug>Isurround
+ imap <C-G>S <Plug>ISurround
+ endif
+endif
+
+" vim:set ft=vim sw=2 sts=2 et:
diff --git a/.config/wall1 b/.config/wall1
Binary files differ.
diff --git a/.config/wall2 b/.config/wall2
Binary files differ.
diff --git a/.config/youtube-viewer/youtube-viewer.conf b/.config/youtube-viewer/youtube-viewer.conf
@@ -0,0 +1,104 @@
+#!/usr/bin/perl
+
+# Youtube Viewer 3.5.9 - configuration file
+
+our $CONFIG = {
+ auto_captions => 0,
+ autohide_watched => 0,
+ autoplay_mode => 0,
+ cache_dir => "/home/hayden/.cache/youtube-viewer",
+ captions_dir => "/tmp",
+ clobber => 0,
+ colors => 1,
+ comments_order => "time",
+ confirm => 0,
+ convert_cmd => "ffmpeg -i *IN* *OUT*",
+ convert_to => undef,
+ copy_caption => 0,
+ custom_layout => 0,
+ custom_layout_format => "*NO*. *TITLE* (*AUTHOR*) (*RATING*) [*TIME*]\\n",
+ dash_mp4_audio => 1,
+ dash_segmented => 1,
+ dash_support => 1,
+ debug => 0,
+ download_and_play => 0,
+ download_in_parallel => 0,
+ download_with_wget => 1,
+ downloads_dir => ".",
+ env_proxy => 1,
+ fat32safe => 0,
+ ffmpeg_cmd => "/usr/bin/ffmpeg",
+ fullscreen => 0,
+ get_captions => 1,
+ get_term_width => 1,
+ highlight_color => "bold",
+ highlight_watched => 1,
+ history => 0,
+ history_file => "/home/hayden/.config/youtube-viewer/history.txt",
+ history_limit => 10000,
+ hl => "en_US",
+ http_proxy => undef,
+ interactive => 1,
+ keep_original_video => 0,
+ maxResults => 20,
+ merge_into_mkv => 1,
+ merge_into_mkv_args => "-loglevel warning -c:s srt -c:v copy -c:a copy -disposition:s forced",
+ merge_with_captions => 1,
+ order => undef,
+ page => 1,
+ prefer_mp4 => 0,
+ publishedAfter => undef,
+ publishedBefore => undef,
+ regionCode => undef,
+ remember_watched => 0,
+ remove_played_file => 0,
+ resolution => "best",
+ results_fixed_width => 0,
+ results_with_colors => 0,
+ results_with_details => 0,
+ safeSearch => undef,
+ show_video_info => 1,
+ skip_if_exists => 1,
+ skip_watched => 0,
+ srt_languages => ["en", "es"],
+ subscriptions_order => "relevance",
+ thousand_separator => ",",
+ use_invidious_api => 0,
+ video_filename_format => "*FTITLE* - *ID*.*FORMAT*",
+ video_player_selected => "mpv",
+ video_players => {
+ mplayer => {
+ arg => "-prefer-ipv4 -really-quiet -title *TITLE*",
+ audio => "-audiofile *AUDIO*",
+ cmd => "mplayer",
+ fs => "-fs",
+ novideo => "-novideo",
+ srt => "-sub *SUB*",
+ },
+ mpv => {
+ arg => "--input-ipc-server=/tmp/mpv-socket2 --really-quiet --title *TITLE* --no-ytdl",
+ audio => "--audio-file *AUDIO*",
+ cmd => "/bin/mpv",
+ fs => "--fullscreen",
+ novideo => "--no-video",
+ srt => "--sub-file *SUB*",
+ },
+ vlc => {
+ arg => "--quiet --play-and-exit --no-video-title-show --input-title-format *TITLE*",
+ audio => "--input-slave *AUDIO*",
+ cmd => "vlc",
+ fs => "--fullscreen",
+ novideo => "--intf dummy --novideo",
+ srt => "--sub-file *SUB*",
+ },
+ },
+ videoCaption => undef,
+ videoDefinition => undef,
+ videoDimension => undef,
+ videoDuration => undef,
+ videoLicense => undef,
+ videoSyndicated => undef,
+ watched_file => "/home/hayden/.config/youtube-viewer/watched.txt",
+ wget_cmd => "/usr/bin/wget",
+ youtube_video_url => "https://www.youtube.com/watch?v=%s",
+}
diff --git a/.scripts/bin/i3/hvol b/.scripts/bin/i3/hvol
@@ -1,5 +1,5 @@
#!/bin/bash
-if [ $1 == "toggle" ]
+if [ "$1" == "toggle" ]
then
amixer set Master $1
volume=$(amixer sget Master | awk '/Mono/ {print $6}' | sed 's/\[//g' | sed 's/\]//g')