From 4e202347771a32441b2d0ee36e1e3e54a165c768 Mon Sep 17 00:00:00 2001 From: TuDatTr Date: Tue, 3 Mar 2020 18:26:11 +0100 Subject: [PATCH] Added Snippets and cleanup .script/startup.sh --- .gitignore | 1 + config/.Xresources | 4 +- config/.local/share/ranger/bookmarks | 4 +- config/.scripts/i3lock.py | 5 - config/.scripts/startup.sh | 11 +- config/.ssh/config | 6 + vim/.vim/autoload/colorizer.vim | 467 +++++++++++++++++++++++++++ vim/.vim/ftplugin/markdown.vim | 2 +- vim/.vim/plugged/ultisnips | 1 + vim/.vim/plugin/colorizer.vim | 76 +++++ vim/.vim/plugin/plugins.vim | 9 + vim/.vim/plugin/remaps.vim | 2 +- vim/.vim/spell/de.utf-8.add | 11 + vim/.vim/spell/de.utf-8.add.spl | Bin 10656 -> 10781 bytes vim/.vim/templates/skeleton.go | 6 + vim/.vim/templates/skeleton.md | 10 +- 16 files changed, 594 insertions(+), 21 deletions(-) create mode 100644 vim/.vim/autoload/colorizer.vim create mode 160000 vim/.vim/plugged/ultisnips create mode 100644 vim/.vim/plugin/colorizer.vim create mode 100644 vim/.vim/templates/skeleton.go diff --git a/.gitignore b/.gitignore index 8f362c7..7baaf5d 100755 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ \#*\# *API* *.bak +.*.git/ config/.local/share/ranger/* !config/.local/share/ranger/bookmarks config/.mozilla/* diff --git a/config/.Xresources b/config/.Xresources index d6a1aab..d982a3b 100644 --- a/config/.Xresources +++ b/config/.Xresources @@ -8,8 +8,8 @@ *.color8: #0c0e14 ! red -*.color1: #8b8b8b -*.color9: #e91e63 +*.color1: #e84f4f +*.color9: #d23d3d ! green *.color2: #00ffaf diff --git a/config/.local/share/ranger/bookmarks b/config/.local/share/ranger/bookmarks index e9b76b2..973a361 100644 --- a/config/.local/share/ranger/bookmarks +++ b/config/.local/share/ranger/bookmarks @@ -7,6 +7,6 @@ l:/home/tuan/Local c:/home/tuan/Documents/CTF/picoCTF t:/home/tuan/Templates w:/home/tuan/workspace_l/Projects -k:/home/tuan/Documents/Protokolle/FSE +k:/home/tuan q:/home/tuan/.nextcloud/Quick Drop -':/home/tuan/isofiles +':/home/tuan/.dotfiles/vim/.vim diff --git a/config/.scripts/i3lock.py b/config/.scripts/i3lock.py index f0d9c3f..f71c21b 100755 --- a/config/.scripts/i3lock.py +++ b/config/.scripts/i3lock.py @@ -152,13 +152,8 @@ def proc_exists(proc_name): proc_content = '{}: {}'.format(counter, proc_content) if proc_content: if proc_name in proc_content: - # print(proc_name) - # print(proc_content) - # print(proc_name in proc_content) if 'xss-lock' not in proc_content: - # print('xss-lock' not in proc_content) if this_proc not in proc_content: - # print(this_proc not in proc_content) print('Process Exists: {}'.format(time.time() - proc_check)) return True except FileNotFoundError: diff --git a/config/.scripts/startup.sh b/config/.scripts/startup.sh index dd865d3..39c9400 100755 --- a/config/.scripts/startup.sh +++ b/config/.scripts/startup.sh @@ -1,5 +1,9 @@ #!/bin/bash +lower_battery_threshold=10 +KBD=""; +oldKBD=""; + function kb_routine { oldKBD="$KBD"; case "$(xset -q | grep -A 0 'LED' | cut -c59-67)" in @@ -18,14 +22,11 @@ function kb_routine { function battery_routine { capacity=$(< /sys/class/power_supply/BAT0/capacity) - if [[ $capacity -lt 5 ]]; then - echo $capacity + if [[ $capacity -lt lower_battery_threshold ]]; then + notify-send "$capacity"; fi } -KBD=""; -oldKBD=""; - while : do kb_routine diff --git a/config/.ssh/config b/config/.ssh/config index aeae120..9899761 100644 --- a/config/.ssh/config +++ b/config/.ssh/config @@ -4,6 +4,12 @@ Host mx User infra IdentityFile /mnt/veracrypt1/fse +Host gitlab + HostName 132.252.238.13 + Port 22 + User infra + IdentityFile /mnt/veracrypt1/fse + Host helios HostName 132.252.238.17 Port 22 diff --git a/vim/.vim/autoload/colorizer.vim b/vim/.vim/autoload/colorizer.vim new file mode 100644 index 0000000..350456e --- /dev/null +++ b/vim/.vim/autoload/colorizer.vim @@ -0,0 +1,467 @@ +" colorizer.vim Colorize all text in the form #rrggbb or #rgb; autoload functions +" Maintainer: lilydjwg +" Version: 1.4.2 +" License: Vim License (see vim's :help license) +" +" See plugin/colorizer.vim for more info. + +let s:keepcpo = &cpo +set cpo&vim + +function! s:FGforBG(bg) "{{{1 + " takes a 6hex color code and returns a matching color that is visible + let pure = substitute(a:bg,'^#','','') + let r = str2nr(pure[0:1], 16) + let g = str2nr(pure[2:3], 16) + let b = str2nr(pure[4:5], 16) + let fgc = g:colorizer_fgcontrast + if r*30 + g*59 + b*11 > 12000 + return s:predefined_fgcolors['dark'][fgc] + else + return s:predefined_fgcolors['light'][fgc] + end +endfunction + +function! s:Rgb2xterm(color) "{{{1 + " selects the nearest xterm color for a rgb value like #FF0000 + let best_match=0 + let smallest_distance = 10000000000 + let r = str2nr(a:color[1:2], 16) + let g = str2nr(a:color[3:4], 16) + let b = str2nr(a:color[5:6], 16) + let colortable = s:GetXterm2rgbTable() + for c in range(0,254) + let d = pow(colortable[c][0]-r,2) + pow(colortable[c][1]-g,2) + pow(colortable[c][2]-b,2) + if d=16 && a:color<=232 + let l:color=a:color-16 + let r = s:valuerange[(l:color/36)%6] + let g = s:valuerange[(l:color/6)%6] + let b = s:valuerange[l:color%6] + endif + + " gray tone + if a:color>=233 && a:color<=253 + let r=8+(a:color-232)*0x0a + let g=r + let b=r + endif + let rgb=[r,g,b] + return rgb +endfunction + +function! s:SetMatcher(color, pat) "{{{1 + " "color" is the converted color and "pat" is what to highlight + let group = 'Color' . strpart(a:color, 1) + if !hlexists(group) || s:force_group_update + let fg = g:colorizer_fgcontrast < 0 ? a:color : s:FGforBG(a:color) + if &t_Co == 256 + exe 'hi '.group.' ctermfg='.s:Rgb2xterm(fg).' ctermbg='.s:Rgb2xterm(a:color) + endif + " Always set gui* as user may switch to GUI version and it's cheap + exe 'hi '.group.' guifg='.fg.' guibg='.a:color + endif + if !exists("w:colormatches[a:pat]") + let w:colormatches[a:pat] = matchadd(group, a:pat) + endif +endfunction + +" Color Converters {{{1 +function! s:RgbBgColor() "{{{2 + let bg = synIDattr(synIDtrans(hlID("Normal")), "bg") + let r = str2nr(bg[1:2], 16) + let g = str2nr(bg[3:4], 16) + let b = str2nr(bg[5:6], 16) + return [r,g,b] +endfunction + +function! s:Hexa2Rgba(hex,alpha) "{{{2 + let r = str2nr(a:hex[1:2], 16) + let g = str2nr(a:hex[3:4], 16) + let b = str2nr(a:hex[5:6], 16) + let alpha = printf("%.2f", str2float(str2nr(a:alpha,16)) / 255.0) + return [r,g,b,alpha] +endfunction + +function! s:Rgba2Rgb(r,g,b,alpha,percent,rgb_bg) "{{{2 + " converts matched r,g,b values and percentages to [0:255] + " if possible, overlays r,g,b with alpha on given rgb_bg color + if a:percent + let r = a:r * 255 / 100 + let g = a:g * 255 / 100 + let b = a:b * 255 / 100 + else + let r = a:r + let g = a:g + let b = a:b + endif + if r > 255 || g > 255 || b > 255 + return [] + endif + if empty(a:rgb_bg) + return [r,g,b] + endif + let alpha = str2float(a:alpha) + if alpha < 0 + let alpha = 0.0 + elseif alpha > 1 + let alpha = 1.0 + endif + if alpha == 1.0 + return [r,g,b] + endif + let r = float2nr(ceil(r * alpha) + ceil(a:rgb_bg[0] * (1 - alpha))) + let g = float2nr(ceil(g * alpha) + ceil(a:rgb_bg[1] * (1 - alpha))) + let b = float2nr(ceil(b * alpha) + ceil(a:rgb_bg[2] * (1 - alpha))) + if r > 255 + let r = 255 + endif + if g > 255 + let g = 255 + endif + if b > 255 + let b = 255 + endif + return [r,g,b] +endfunction + +"ColorFinders {{{1 +function! s:HexCode(str, lineno) "{{{2 + " finds RGB: #00f #0000ff and RGBA: #00f8 #0000ff88 (or ARGB: #800f #880000ff) + if has("gui_running") + let rgb_bg = s:RgbBgColor() + else + " translucent colors would display incorrectly, so ignore the alpha value + let rgb_bg = [] + endif + let ret = [] + let place = 0 + let colorpat = '#[0-9A-Fa-f]\{3\}\>\|#[0-9A-Fa-f]\{6\}\>\|#[0-9A-Fa-f]\{8\}\>\|#[0-9A-Fa-f]\{4\}\>' + while 1 + let foundcolor = matchstr(a:str, colorpat, place) + if foundcolor == '' + break + endif + let place = matchend(a:str, colorpat, place) + let pat = foundcolor . '\>' + let colorlen = len(foundcolor) + if get(g:, 'colorizer_hex_alpha_first') == 1 + if colorlen == 4 || colorlen == 5 + let ha = tolower(foundcolor[1]) + let hr = tolower(foundcolor[2]) + let hg = tolower(foundcolor[3]) + let hb = tolower(foundcolor[4]) + let foundcolor = substitute(foundcolor, '[[:xdigit:]]', '&&', 'g') + else + let ha = tolower(foundcolor[1:2]) + let hr = tolower(foundcolor[3:4]) + let hg = tolower(foundcolor[5:6]) + let hb = tolower(foundcolor[7:8]) + endif + if len(foundcolor) == 9 + let alpha = foundcolor[1:2] + let foundcolor = '#'.foundcolor[3:8] + else + let alpha = 'ff' + endif + if empty(rgb_bg) + if colorlen == 5 + let pat = printf('\c#\x\zs%s%s%s\ze\>', hr,hg,hb) + elseif colorlen == 9 + let pat = printf('\c#\x\x\zs%s%s%s\ze\>', hr,hg,hb) + endif + endif + else + if colorlen == 4 || colorlen == 5 + let hr = tolower(foundcolor[1]) + let hg = tolower(foundcolor[2]) + let hb = tolower(foundcolor[3]) + let ha = tolower(foundcolor[4]) + let foundcolor = substitute(foundcolor, '[[:xdigit:]]', '&&', 'g') + else + let hr = tolower(foundcolor[1:2]) + let hg = tolower(foundcolor[3:4]) + let hb = tolower(foundcolor[5:6]) + let ha = tolower(foundcolor[7:8]) + endif + if len(foundcolor) == 9 + let alpha = foundcolor[7:8] + let foundcolor = foundcolor[0:6] + else + let alpha = 'ff' + endif + if empty(rgb_bg) + if colorlen == 5 + let pat = printf('\c#%s%s%s\ze\x\>', hr,hg,hb) + elseif colorlen == 9 + let pat = printf('\c#%s%s%s\ze\x\x\>', hr,hg,hb) + endif + endif + endif + if empty(rgb_bg) || tolower(alpha) == 'ff' + call add(ret, [foundcolor, pat]) + else + let rgba = s:Hexa2Rgba(foundcolor, alpha) + let rgb = s:Rgba2Rgb(rgba[0], rgba[1], rgba[2], rgba[3], 0, rgb_bg) + let l:color = printf('#%02x%02x%02x', rgb[0], rgb[1], rgb[2]) + call add(ret, [l:color, pat]) + endif + endwhile + return ret +endfunction + +function! s:RgbColor(str, lineno) "{{{2 + let ret = [] + let place = 0 + let colorpat = '\ 255 || g > 255 || b > 255 + break + endif + let pat = printf('\ 0) && (g:colorizer_maxlines <= line('$')) + return + end + let w:colormatches = {} + if g:colorizer_fgcontrast != s:saved_fgcontrast || (exists("a:1") && a:1 == '!') + let s:force_group_update = 1 + endif + for i in range(1, line("$")) + call s:PreviewColorInLine(i) + endfor + let s:force_group_update = 0 + let s:saved_fgcontrast = g:colorizer_fgcontrast + augroup Colorizer + au! + if exists('##TextChanged') + autocmd TextChanged * silent call s:TextChanged() + if v:version > 704 || v:version == 704 && has('patch143') + autocmd TextChangedI * silent call s:TextChanged() + else + " TextChangedI does not work as expected + autocmd CursorMovedI * silent call s:CursorMoved() + endif + else + autocmd CursorMoved,CursorMovedI * silent call s:CursorMoved() + endif + " rgba handles differently, so need updating + autocmd GUIEnter * silent call colorizer#ColorHighlight(1) + autocmd BufEnter * silent call colorizer#ColorHighlight(1) + autocmd WinEnter * silent call colorizer#ColorHighlight(1) + autocmd ColorScheme * let s:force_group_update=1 | silent call colorizer#ColorHighlight(1) + augroup END +endfunction + +function! colorizer#ColorClear() "{{{1 + augroup Colorizer + au! + augroup END + augroup! Colorizer + let save_tab = tabpagenr() + let save_win = winnr() + tabdo windo call s:ClearMatches() + exe 'tabn '.save_tab + exe save_win . 'wincmd w' +endfunction + +function! s:ClearMatches() "{{{1 + if !exists('w:colormatches') + return + endif + for i in values(w:colormatches) + try + call matchdelete(i) + catch /.*/ + " matches have been cleared in other ways, e.g. user has called clearmatches() + endtry + endfor + unlet w:colormatches +endfunction + +function! colorizer#ColorToggle() "{{{1 + if exists('#Colorizer') + call colorizer#ColorClear() + echomsg 'Disabled color code highlighting.' + else + call colorizer#ColorHighlight(0) + echomsg 'Enabled color code highlighting.' + endif +endfunction + +function! colorizer#AlphaPositionToggle() "{{{1 + if exists('#Colorizer') + if get(g:, 'colorizer_hex_alpha_first') == 1 + let g:colorizer_hex_alpha_first = 0 + else + let g:colorizer_hex_alpha_first = 1 + endif + call colorizer#ColorHighlight(1) + endif +endfunction + +function! s:GetXterm2rgbTable() "{{{1 + if !exists('s:table_xterm2rgb') + let s:table_xterm2rgb = [] + for c in range(0, 254) + let s:color = s:Xterm2rgb(c) + call add(s:table_xterm2rgb, s:color) + endfor + endif + return s:table_xterm2rgb +endfun + +" Setups {{{1 +let s:ColorFinder = [function('s:HexCode'), function('s:RgbColor'), function('s:RgbaColor')] +let s:force_group_update = 0 +let s:predefined_fgcolors = {} +let s:predefined_fgcolors['dark'] = ['#444444', '#222222', '#000000'] +let s:predefined_fgcolors['light'] = ['#bbbbbb', '#dddddd', '#ffffff'] +if !exists("g:colorizer_fgcontrast") + " Default to black / white + let g:colorizer_fgcontrast = len(s:predefined_fgcolors['dark']) - 1 +elseif g:colorizer_fgcontrast >= len(s:predefined_fgcolors['dark']) + echohl WarningMsg + echo "g:colorizer_fgcontrast value invalid, using default" + echohl None + let g:colorizer_fgcontrast = len(s:predefined_fgcolors['dark']) - 1 +endif +let s:saved_fgcontrast = g:colorizer_fgcontrast + +" Restoration and modelines {{{1 +let &cpo = s:keepcpo +unlet s:keepcpo +" vim:ft=vim:fdm=marker:fmr={{{,}}}:ts=8:sw=2:sts=2:et diff --git a/vim/.vim/ftplugin/markdown.vim b/vim/.vim/ftplugin/markdown.vim index be2a0ea..361c0c8 100644 --- a/vim/.vim/ftplugin/markdown.vim +++ b/vim/.vim/ftplugin/markdown.vim @@ -4,5 +4,5 @@ " Begin Shortcuts " Compilation -map :!pandoc % -o %pdf --from markdown+pandoc_title_block --template $HOME/Templates/Pandoc/eisvogel --listings &>/dev/null & disown +map :!pandoc % -o %pdf --from markdown+yaml_metadata_block --template $HOME/Templates/Pandoc/eisvogel --listings &>/dev/null & disown map :!evince %pdf &>/dev/null & disown diff --git a/vim/.vim/plugged/ultisnips b/vim/.vim/plugged/ultisnips new file mode 160000 index 0000000..a6c9d4f --- /dev/null +++ b/vim/.vim/plugged/ultisnips @@ -0,0 +1 @@ +Subproject commit a6c9d4fd1b23e1480b973e7cee1fe20c79248b75 diff --git a/vim/.vim/plugin/colorizer.vim b/vim/.vim/plugin/colorizer.vim new file mode 100644 index 0000000..1354dcf --- /dev/null +++ b/vim/.vim/plugin/colorizer.vim @@ -0,0 +1,76 @@ +" colorizer.vim Colorize all text in the form #rrggbb or #rgb; entrance +" Maintainer: lilydjwg +" Version: 1.4.2 +" Licence: Vim license. See ':help license' +" Derived From: css_color.vim +" http://www.vim.org/scripts/script.php?script_id=2150 +" Thanks To: Niklas Hofer (Author of css_color.vim), Ingo Karkat, rykka, +" KrzysztofUrban, blueyed, shanesmith, UncleBill +" Usage: +" +" This plugin defines three commands: +" +" ColorHighlight - start/update highlighting +" ColorClear - clear all highlights +" ColorToggle - toggle highlights +" +" By default, tc is mapped to ColorToggle. If you want to use another +" key map, do like this: +" nmap ,tc Colorizer +" +" If you want completely not to map it, set the following in your vimrc: +" let g:colorizer_nomap = 1 +" +" To use solid color highlight, set this in your vimrc (later change won't +" probably take effect unless you use ':ColorHighlight!' to force update): +" let g:colorizer_fgcontrast = -1 +" set it to 0 or 1 to use a softened foregroud color. +" +" If you don't want to enable colorizer at startup, set the following: +" let g:colorizer_startup = 0 +" +" You can disable it on long buffers, for example if more than 1000 lines: +" let g:colorizer_maxlines = 1000 +" -1 means unlimited number of lines +" +" There are color strings in the format #RRGGBBAA and #AARRGGBB. The former is +" more common so it's the default. If you want the latter, set the following: +" let g:colorizer_hex_alpha_first = 1 +" +" You can toggle the recognized alpha position by +" call colorizer#AlphaPositionToggle() +" +" Note: if you modify a color string in normal mode, if the cursor is still on +" that line, it'll take 'updatetime' seconds to update. You can use +" :ColorHighlight (or your key mapping) again to force update. +" +" Performance Notice: In terminal, it may take several seconds to highlight 240 +" different colors. GUI version is much quicker. + +" Reload guard and 'compatible' handling {{{1 +if exists("loaded_colorizer") || v:version < 700 || !(has("gui_running") || &t_Co == 256) + finish +endif +let loaded_colorizer = 1 + +let s:save_cpo = &cpo +set cpo&vim + +"Define commands {{{1 +if !exists('g:colorizer_maxlines') + let g:colorizer_maxlines = -1 +endif +command! -bar -bang ColorHighlight call colorizer#ColorHighlight(1, "") +command! -bar ColorClear call colorizer#ColorClear() +command! -bar ColorToggle call colorizer#ColorToggle() +nnoremap Colorizer :ColorToggle +if !hasmapto("Colorizer") && (!exists("g:colorizer_nomap") || g:colorizer_nomap == 0) + nmap tc Colorizer +endif +if !exists('g:colorizer_startup') || g:colorizer_startup + call colorizer#ColorHighlight(0) +endif + +" Cleanup and modelines {{{1 +let &cpo = s:save_cpo +" vim:ft=vim:fdm=marker:fmr={{{,}}}:ts=8:sw=2:sts=2: diff --git a/vim/.vim/plugin/plugins.vim b/vim/.vim/plugin/plugins.vim index ae25370..6a46c5d 100644 --- a/vim/.vim/plugin/plugins.vim +++ b/vim/.vim/plugin/plugins.vim @@ -2,7 +2,16 @@ runtime macros/matchit.vim filetype on call plug#begin() +Plug 'SirVer/ultisnips' +Plug 'honza/vim-snippets' Plug 'lervag/vimtex' Plug 'sheerun/vim-polyglot' Plug 'fatih/vim-go' +Plug 'SirVer/ultisnips' call plug#end() + +let g:polyglot_disabled = ['latex'] + +let g:UltiSnipsExpandTrigger="" +let g:UltiSnipsJumpForwardTrigger="" +let g:UltiSnipsJumpBackwardTrigger="" diff --git a/vim/.vim/plugin/remaps.vim b/vim/.vim/plugin/remaps.vim index 3cf342f..c16dfc1 100644 --- a/vim/.vim/plugin/remaps.vim +++ b/vim/.vim/plugin/remaps.vim @@ -9,7 +9,7 @@ map :b nnoremap :earlier nnoremap :later noremap Y "+y -noremap :tabedit **/* +noremap :e **/* noremap :tabedit:ter:q noremap :syntax sync fromstart inoremap :syntax sync fromstart diff --git a/vim/.vim/spell/de.utf-8.add b/vim/.vim/spell/de.utf-8.add index a6d7b4e..e8fd785 100644 --- a/vim/.vim/spell/de.utf-8.add +++ b/vim/.vim/spell/de.utf-8.add @@ -843,3 +843,14 @@ Zusammlegung #igitalisierung Hauptcampus Campussen +Desktopanwendungen +Requests +IoT +emacs +vim +docker +shell +scripting +Frameworks +AirSniff +Poos diff --git a/vim/.vim/spell/de.utf-8.add.spl b/vim/.vim/spell/de.utf-8.add.spl index 3b750a7f4c38598a55529cafe868c728ba53f581..59315cd023908ef6374abe9eaec2ab9aa73f4dba 100644 GIT binary patch literal 10781 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 OyT_$=bhIDw-+u!^EohGb diff --git a/vim/.vim/templates/skeleton.go b/vim/.vim/templates/skeleton.go new file mode 100644 index 0000000..c8f4ae0 --- /dev/null +++ b/vim/.vim/templates/skeleton.go @@ -0,0 +1,6 @@ +package main + +import () + +func main() { +} diff --git a/vim/.vim/templates/skeleton.md b/vim/.vim/templates/skeleton.md index de53695..53865f8 100644 --- a/vim/.vim/templates/skeleton.md +++ b/vim/.vim/templates/skeleton.md @@ -1,5 +1,5 @@ -% Dokukmentation für die alte Infrastruktur -% Tuan-Dat Tran -% [:VIM_EVAL:]strftime('%Y-%m-%d')[:END_EVAL:] - -# INSERT +--- + title: + author: Tuan-Dat Tran + date: [:VIM_EVAL:]strftime('%Y-%m-%d')[:END_EVAL:] +---