dotfiles

<-- duh.
Log | Files | Refs | LICENSE

commit 3b9fd1de5e8d0ed0d4dc27855133b90fea1b3402
parent d030fc54b1a94c2671dc99240952bb0cd9bf15cb
Author: Hayden Hamilton <hayden@haydenvh.com>
Date:   Tue, 24 Dec 2019 17:44:57 +0000

..

Diffstat:
D.config/calcurse/Xtheme | 44--------------------------------------------
R.config/vim/colors/.vimrc -> .config/dfm/bookmarks | 0
A.config/dfm/config | 16++++++++++++++++
A.config/fff/fff | 2++
D.config/fish/fish_variables | 44--------------------------------------------
D.config/htop/htoprc | 26--------------------------
M.config/i3/config | 2+-
A.config/i3blocks/i3blocks | 2++
D.config/irssi/away.log | 21---------------------
A.config/irssi/default.theme | 295+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A.config/mpd/mpd.conf | 19+++++++++++++++++++
A.config/vim/surround.vim | 619+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A.config/wall1 | 0
A.config/wall2 | 0
A.config/youtube-viewer/youtube-viewer.conf | 104+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
M.scripts/bin/i3/hvol | 2+-
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')