| @ -1,102 +1,5 @@ | |||||
| #!/bin/bash | |||||
| # | |||||
| # ~/.bash_profile | |||||
| # | |||||
| set -o vi | |||||
| bind -m vi-insert "\C-l":clear-screen | |||||
| shopt -s extglob | |||||
| HISTSIZE= | |||||
| HISTFILESIZE= | |||||
| export EDITOR='nvim' | |||||
| export GIT_AUTHOR_NAME="Tovi Jaeschke-Rogers" | |||||
| export GIT_AUTHOR_EMAIL="tovi@tovijaeschke.xyz" | |||||
| export GIT_COMMITTER_NAME="Tovi Jaeschke-Rogers" | |||||
| export GIT_COMMITTER_EMAIL="tovi@tovijaeschke.xyz" | |||||
| export LESS='-R' | |||||
| export LESSOPEN='|~/.lessfilter %s' | |||||
| if [[ $(uname) != "Linux" ]]; then | |||||
| test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash" || true | |||||
| export HOMEBREW_NO_INSTALL_CLEANUP=1 | |||||
| export GIT_AUTHOR_EMAIL="tovi.jaeschke-rogers@thirty4.com" | |||||
| export GIT_COMMITTER_EMAIL="tovi.jaeschke-rogers@thirty4.com" | |||||
| mount-hdd() { | |||||
| if [ -z $1 ]; then | |||||
| sudo umount /dev/disk2s1 && sudo /usr/local/bin/ntfs-3g /dev/disk2s1 /Volumes/NTFS -olocal -oallow_other | |||||
| else | |||||
| sudo umount /dev/$1 && sudo /usr/local/bin/ntfs-3g /dev/$1 /Volumes/NTFS -olocal -oallow_other | |||||
| fi | |||||
| } | |||||
| fi | |||||
| # set PATH so it includes user's private bin if it exists | |||||
| if [ -d "$HOME/.local/bin" ] ; then | |||||
| PATH="$PATH:$(du "$HOME/.local/bin/" | cut -f2 | tr '\n' ':')$HOME/.composer/vendor/bin" | |||||
| fi | |||||
| source ~/.config/aliasrc | |||||
| parse_git_branch() { | |||||
| git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' | |||||
| } | |||||
| export PS1=" \[\033[0;36m\]\t \[\033[0;35m\]\u\[\033[0;32m\]@\[\033[0;34m\]\h \[\033[32m\]\W\[\033[33m\]\$(parse_git_branch)\[\033[31m\] \n$\[\033[00m\] " | |||||
| mkcd() { | |||||
| if [ ! -d "$1" ]; then | |||||
| mkdir -p "$1" && cd "$1" | |||||
| elif [ -d "$1" ]; then | |||||
| cd "$1" | |||||
| else | |||||
| echo "Error" | |||||
| fi | |||||
| } | |||||
| # Go up directory structures | |||||
| up() { | |||||
| cd $(printf "%0.0s../" $(seq 1 $1)); | |||||
| } | |||||
| git() { | |||||
| if [[ $@ == "mergetool" ]]; then | |||||
| command git mergetool --no-gui | |||||
| else | |||||
| command git $@ | |||||
| fi | |||||
| } | |||||
| # git branch -vv | grep 'gone\]' | awk ' { print $1 }' | xargs -p git branch -d | |||||
| git-prune() { | |||||
| if [[ $@ == "--apply" ]]; then | |||||
| command git branch --merged develop | grep -vEw "develop$|master$" | xargs git branch -d | |||||
| else | |||||
| echo "Run \"git prune --apply\" to delete the following branches:" | |||||
| command git branch --merged develop | grep -vEw "develop$|master$" | |||||
| fi | |||||
| } | |||||
| color-diff() { | |||||
| if [ -z ${1+x} ] || [ -z ${2+x} ]; then | |||||
| echo "Usage: color-diff dir1/ dir2/" | |||||
| return | |||||
| fi | |||||
| diff -bur $1 $2 | colordiff | less | |||||
| } | |||||
| export NVM_DIR="$HOME/.nvm" | |||||
| [ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh" # This loads nvm | |||||
| [ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm" | |||||
| [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion | |||||
| [[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh" | |||||
| eval "$(thefuck --alias)" | |||||
| [[ -f ~/.bashrc ]] && . ~/.bashrc | |||||
| @ -1,116 +1,13 @@ | |||||
| #!/bin/bash | |||||
| # | |||||
| # ~/.bashrc | |||||
| # | |||||
| export PATH=~/go/bin:/snap/bin:/usr/sandbox/:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/share/games:/usr/local/sbin:/usr/sbin:/sbin:$PATH | |||||
| # If not running interactively, don't do anything | |||||
| [[ $- != *i* ]] && return | |||||
| set -o vi | |||||
| bind -m vi-insert "\C-l":clear-screen | |||||
| shopt -s extglob | |||||
| HISTSIZE= | |||||
| HISTFILESIZE= | |||||
| export EDITOR='nvim' | |||||
| export GIT_AUTHOR_NAME="Tovi Jaeschke-Rogers" | |||||
| export GIT_AUTHOR_EMAIL="tovi@tovijaeschke.xyz" | |||||
| export GIT_COMMITTER_NAME="Tovi Jaeschke-Rogers" | |||||
| export GIT_COMMITTER_EMAIL="tovi@tovijaeschke.xyz" | |||||
| export LESS='-R' | |||||
| export LESSOPEN='|~/.lessfilter %s' | |||||
| alias ls="ls --color=auto" \ | |||||
| vb='nvim ~/.bashrc && source ~/.bashrc' \ | |||||
| va='nvim ~/.config/aliasrc && source ~/.bashrc' | |||||
| if [[ $(uname) != "Linux" ]]; then | |||||
| test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash" || true | |||||
| export HOMEBREW_NO_INSTALL_CLEANUP=1 | |||||
| export GIT_AUTHOR_EMAIL="tovi.jaeschke-rogers@thirty4.com" | |||||
| export GIT_COMMITTER_EMAIL="tovi.jaeschke-rogers@thirty4.com" | |||||
| alias ls="ls -G" \ | |||||
| vb='nvim ~/.bash_profile && source ~/.bash_profile' \ | |||||
| va='nvim ~/.config/aliasrc && source ~/.bash_profile' | |||||
| mount-hdd() { | |||||
| if [ -z $1 ]; then | |||||
| sudo umount /dev/disk2s1 && sudo /usr/local/bin/ntfs-3g /dev/disk2s1 /Volumes/NTFS -olocal -oallow_other | |||||
| else | |||||
| sudo umount /dev/$1 && sudo /usr/local/bin/ntfs-3g /dev/$1 /Volumes/NTFS -olocal -oallow_other | |||||
| fi | |||||
| } | |||||
| else | |||||
| aupdate() { | |||||
| sudo "apt update && apt upgrade" | |||||
| } | |||||
| alias ls='ls --color=auto' | |||||
| PS1='[\u@\h \W]\$ ' | |||||
| fi | |||||
| # set PATH so it includes user's private bin if it exists | |||||
| if [ -d "$HOME/.local/bin" ] ; then | |||||
| PATH="$PATH:$(du "$HOME/.local/bin/" | cut -f2 | tr '\n' ':')" | |||||
| fi | |||||
| set -o vi | |||||
| source ~/.config/aliasrc | source ~/.config/aliasrc | ||||
| parse_git_branch() { | |||||
| git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' | |||||
| } | |||||
| export PS1=" \[\033[0;36m\]\t \[\033[0;35m\]\u\[\033[0;32m\]@\[\033[0;34m\]\h \[\033[32m\]\W\[\033[33m\]\$(parse_git_branch)\[\033[31m\] \n$\[\033[00m\] " | |||||
| mkcd() { | |||||
| if [ ! -d "$1" ]; then | |||||
| mkdir -p "$1" && cd "$1" | |||||
| elif [ -d "$1" ]; then | |||||
| cd "$1" | |||||
| else | |||||
| echo "Error" | |||||
| fi | |||||
| } | |||||
| # Go up directory structures | |||||
| up() { | |||||
| cd $(printf "%0.0s../" $(seq 1 $1)); | |||||
| } | |||||
| git() { | |||||
| if [[ $@ == "mergetool" ]]; then | |||||
| command git mergetool --no-gui | |||||
| else | |||||
| command git $@ | |||||
| fi | |||||
| } | |||||
| # git branch -vv | grep 'gone\]' | awk ' { print $1 }' | xargs -p git branch -d | |||||
| git-prune() { | |||||
| if [[ $@ == "--apply" ]]; then | |||||
| command git branch --merged develop | grep -vEw "develop$|master$" | xargs git branch -d | |||||
| else | |||||
| echo "Run \"git prune --apply\" to delete the following branches:" | |||||
| command git branch --merged develop | grep -vEw "develop$|master$" | |||||
| fi | |||||
| } | |||||
| color-diff() { | |||||
| if [ -z ${1+x} ] || [ -z ${2+x} ]; then | |||||
| echo "Usage: color-diff dir1/ dir2/" | |||||
| return | |||||
| fi | |||||
| diff -bur $1 $2 | colordiff | less | |||||
| } | |||||
| export NVM_DIR="$HOME/.nvm" | |||||
| [ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh" # This loads nvm | |||||
| [ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm" | |||||
| [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion | |||||
| [[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh" | |||||
| @ -0,0 +1,4 @@ | |||||
| #!/bin/sh | |||||
| if [ -n "$FIFO_UEBERZUG" ]; then | |||||
| printf '{"action": "remove", "identifier": "PREVIEW"}\n' > "$FIFO_UEBERZUG" | |||||
| fi | |||||
| @ -0,0 +1,119 @@ | |||||
| # Luke's lf settings | |||||
| # Note on Image Previews | |||||
| # For those wanting image previews, like this system, there are four steps to | |||||
| # set it up. These are done automatically for LARBS users, but I will state | |||||
| # them here for others doing it manually. | |||||
| # | |||||
| # 1. ueberzug must be installed. | |||||
| # 2. The scope file (~/.config/lf/scope for me), must have a command similar to | |||||
| # mine to generate ueberzug images. | |||||
| # 3. A `set cleaner` line as below is a cleaner script. | |||||
| # 4. lf should be started through a wrapper script (~/.local/bin/lfub for me) | |||||
| # that creates the environment for ueberzug. This command can be be aliased | |||||
| # in your shellrc (`alias lf="lfub") or if set to a binding, should be | |||||
| # called directly instead of normal lf. | |||||
| # Basic vars | |||||
| set shellopts '-eu' | |||||
| set ifs "\n" | |||||
| set scrolloff 10 | |||||
| set icons | |||||
| set period 1 | |||||
| set hiddenfiles ".*:*.aux:*.log:*.bbl:*.bcf:*.blg:*.run.xml" | |||||
| set cleaner '~/.config/lf/cleaner' | |||||
| set previewer '~/.config/lf/scope' | |||||
| # cmds/functions | |||||
| cmd open ${{ | |||||
| case $(file --mime-type "$(readlink -f $f)" -b) in | |||||
| application/vnd.openxmlformats-officedocument.spreadsheetml.sheet) localc $fx ;; | |||||
| image/vnd.djvu|application/pdf|application/octet-stream|application/postscript) setsid -f zathura $fx >/dev/null 2>&1 ;; | |||||
| text/*|application/json|inode/x-empty) $EDITOR $fx;; | |||||
| image/x-xcf) gimp $f >/dev/null 2>&1 ;; | |||||
| image) display -- $f ;; | |||||
| audio/*) mpv --audio-display=no $f ;; | |||||
| video/*) mpv $f -quiet >/dev/null 2>&1 ;; | |||||
| application/pdf|application/vnd*|application/epub*) zathura $fx >/dev/null 2>&1 ;; | |||||
| esac | |||||
| }} | |||||
| cmd mkdir $mkdir -p "$(echo $* | tr ' ' '\ ')" | |||||
| cmd extract ${{ | |||||
| clear; tput cup $(($(tput lines)/3)); tput bold | |||||
| set -f | |||||
| printf "%s\n\t" "$fx" | |||||
| printf "extract?[y/N]" | |||||
| read ans | |||||
| [ $ans = "y" ] && aunpack $fx | |||||
| }} | |||||
| cmd delete ${{ | |||||
| clear; tput cup $(($(tput lines)/3)); tput bold | |||||
| set -f | |||||
| printf "%s\n\t" "$fx" | |||||
| printf "delete?[y/N]" | |||||
| read ans | |||||
| [ $ans = "y" ] && rm -rf -- $fx | |||||
| }} | |||||
| cmd moveto ${{ | |||||
| clear; tput cup $(($(tput lines)/3)); tput bold | |||||
| set -f | |||||
| clear; echo "Move to where?" | |||||
| dest="$(sed -e 's/\s*#.*//' -e '/^$/d' -e 's/^\S*\s*//' ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf | sed 's|~|$HOME|')" && | |||||
| for x in $fx; do | |||||
| eval mv -iv \"$x\" \"$dest\" | |||||
| done && | |||||
| notify-send "🚚 File(s) moved." "File(s) moved to $dest." | |||||
| }} | |||||
| cmd copyto ${{ | |||||
| clear; tput cup $(($(tput lines)/3)); tput bold | |||||
| set -f | |||||
| clear; echo "Copy to where?" | |||||
| dest="$(sed -e 's/\s*#.*//' -e '/^$/d' -e 's/^\S*\s*//' ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf | sed 's|~|$HOME|')" && | |||||
| for x in $fx; do | |||||
| eval cp -ivr \"$x\" \"$dest\" | |||||
| done && | |||||
| notify-send "📋 File(s) copied." "File(s) copies to $dest." | |||||
| }} | |||||
| cmd setbg "$1" | |||||
| cmd bulkrename $vidir | |||||
| # Bindings | |||||
| map <c-f> $lf -remote "send $id select '$(fzf)'" | |||||
| map J $lf -remote "send $id cd $(sed -e 's/\s*#.*//' -e '/^$/d' -e 's/^\S*\s*//' ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf)" | |||||
| map gh | |||||
| map g top | |||||
| map D delete | |||||
| map E extract | |||||
| map C copyto | |||||
| map M moveto | |||||
| map <c-n> push :mkdir<space> | |||||
| map <c-r> reload | |||||
| map <c-s> set hidden! | |||||
| map <enter> shell | |||||
| map x $$f | |||||
| map X !$f | |||||
| map o &mimeopen $f | |||||
| map O $mimeopen --ask $f | |||||
| map A rename # at the very end | |||||
| map c push A<c-u> # new rename | |||||
| map I push A<c-a> # at the very beginning | |||||
| map i push A<a-b><a-b><a-f> # before extention | |||||
| map a push A<a-b> # after extention | |||||
| map B bulkrename | |||||
| map b $setbg $f | |||||
| map <c-e> down | |||||
| map <c-y> up | |||||
| map V push :!nvim<space> | |||||
| map W $setsid -f $TERMINAL >/dev/null 2>&1 | |||||
| map Y $printf "%s" "$fx" | xclip -selection clipboard | |||||
| @ -0,0 +1,43 @@ | |||||
| #!/bin/sh | |||||
| # File preview handler for lf. | |||||
| set -C -f | |||||
| IFS="$(printf '%b_' '\n')"; IFS="${IFS%_}" | |||||
| image() { | |||||
| if [ -n "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ] && command -V ueberzug >/dev/null 2>&1; then | |||||
| printf '{"action": "add", "identifier": "PREVIEW", "x": "%s", "y": "%s", "width": "%s", "height": "%s", "scaler": "contain", "path": "%s"}\n' "$4" "$5" "$(($2-1))" "$(($3-1))" "$1" > "$FIFO_UEBERZUG" | |||||
| else | |||||
| mediainfo "$1" | |||||
| fi | |||||
| } | |||||
| ifub() { | |||||
| [ -n "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ] && command -V ueberzug >/dev/null 2>&1 | |||||
| } | |||||
| # Note that the cache file name is a function of file information, meaning if | |||||
| # an image appears in multiple places across the machine, it will not have to | |||||
| # be regenerated once seen. | |||||
| case "$(file --dereference --brief --mime-type -- "$1")" in | |||||
| image/*) image "$1" "$2" "$3" "$4" "$5" ;; | |||||
| text/html) lynx -width="$4" -display_charset=utf-8 -dump "$1" ;; | |||||
| text/troff) man ./ "$1" | col -b ;; | |||||
| text/* | */xml | application/json) cat "$1" ;; | |||||
| application/zip) atool --list -- "$1" ;; | |||||
| audio/* | application/octet-stream) mediainfo "$1" || exit 1;; | |||||
| video/* ) | |||||
| CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | awk '{print $1}')" | |||||
| [ ! -f "$CACHE" ] && ffmpegthumbnailer -i "$1" -o "$CACHE" -s 0 | |||||
| image "$CACHE" "$2" "$3" "$4" "$5" | |||||
| ;; | |||||
| */pdf) | |||||
| CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | awk '{print $1}')" | |||||
| [ ! -f "$CACHE.jpg" ] && pdftoppm -jpeg -f 1 -singlefile "$1" "$CACHE" | |||||
| image "$CACHE.jpg" "$2" "$3" "$4" "$5" | |||||
| ;; | |||||
| *opendocument*) odt2txt "$1" ;; | |||||
| application/pgp-encrypted) gpg -d -- "$1" ;; | |||||
| esac | |||||
| exit 1 | |||||
| @ -1,31 +0,0 @@ | |||||
| # vim: filetype=neomuttrc | |||||
| # muttrc file for account tovi | |||||
| set realname = "Tovi Jaeschke-Rogers" | |||||
| set from = "tovi@tovijaeschke.xyz" | |||||
| set sendmail = "msmtp -a tovi" | |||||
| alias me Tovi Jaeschke-Rogers <tovi@tovijaeschke.xyz> | |||||
| set folder = /Users/tovijaeschke-rogers/.local/share/mail/tovi | |||||
| set header_cache = /Users/tovijaeschke-rogers/.cache/mutt-wizard/tovi/headers | |||||
| set message_cachedir = /Users/tovijaeschke-rogers/.cache/mutt-wizard/tovi/bodies | |||||
| set mbox_type = Maildir | |||||
| set spoolfile = +INBOX | |||||
| set postponed = +Drafts | |||||
| set record = +Sent | |||||
| set trash = +Trash | |||||
| mailboxes $spoolfile $record $postponed $trash | |||||
| set smtp_pass = "`pass mutt-wizard-tovi`" | |||||
| set smtp_url = "smtp://tovi@mail.tovijaeschke.xyz:587" | |||||
| set crypt_autosign = yes | |||||
| set crypt_opportunistic_encrypt = yes | |||||
| set pgp_self_encrypt = yes | |||||
| set pgp_default_key = 78CC949ADAAF9556 | |||||
| bind index,pager gg noop | |||||
| bind index,pager g noop | |||||
| bind index,pager M noop | |||||
| bind index,pager C noop | |||||
| bind index gg first-entry | |||||
| macro index o "<shell-escape>mailsync -V tovi<enter>" "run mbsync to sync tovi" | |||||
| #unmailboxes * | |||||
| @ -1,4 +0,0 @@ | |||||
| # vim: filetype=neomuttrc | |||||
| source /usr/local/share/mutt-wizard/mutt-wizard.muttrc # mw-autogenerated | |||||
| source /Users/tovijaeschke-rogers/.config/mutt/accounts/1-tovi.muttrc # mw-autogenerated | |||||
| macro index,pager i1 '<sync-mailbox><enter-command>source /Users/tovijaeschke-rogers/.config/mutt/accounts/1-tovi.muttrc<enter><change-folder>!<enter>;<check-stats>' "switch to tovi@tovijaeschke.xyz" # mw-autogenerated | |||||
| @ -0,0 +1,25 @@ | |||||
| { | |||||
| "languageserver": { | |||||
| "ccls": { | |||||
| "command": "ccls", | |||||
| "filetypes": [ | |||||
| "c", | |||||
| "cpp", | |||||
| "objc", | |||||
| "objcpp" | |||||
| ], | |||||
| "rootPatterns": [ | |||||
| ".ccls", | |||||
| "compile_commands.json", | |||||
| ".vim/", | |||||
| ".git/", | |||||
| ".hg/" | |||||
| ], | |||||
| "initializationOptions": { | |||||
| "cache": { | |||||
| "directory": "/tmp/ccls" | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| @ -1,125 +1,175 @@ | |||||
| " My awesome vimrc | |||||
| let mapleader ="," | let mapleader ="," | ||||
| if ! filereadable(expand('~/.config/nvim/autoload/plug.vim')) | if ! filereadable(expand('~/.config/nvim/autoload/plug.vim')) | ||||
| echo "Downloading junegunn/vim-plug to manage plugins..." | |||||
| silent !mkdir -p ~/.config/nvim/autoload/ | |||||
| silent !curl "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" > ~/.config/nvim/autoload/plug.vim | |||||
| autocmd VimEnter * PlugInstall | |||||
| echo "Downloading junegunn/vim-plug to manage plugins..." | |||||
| silent !mkdir -p ~/.config/nvim/autoload/ | |||||
| silent !curl "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" > ~/.config/nvim/autoload/plug.vim | |||||
| autocmd VimEnter * PlugInstall | |||||
| endif | endif | ||||
| function! Cond(cond, ...) | |||||
| let opts = get(a:000, 0, {}) | |||||
| return a:cond ? opts : extend(opts, { 'on': [], 'for': [] }) | |||||
| endfunction | |||||
| call plug#begin('~/.config/nvim/plugged') | call plug#begin('~/.config/nvim/plugged') | ||||
| Plug 'morhetz/gruvbox' | |||||
| Plug 'neoclide/coc.nvim', {'branch': 'release'} | |||||
| Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } | |||||
| Plug 'junegunn/fzf.vim' | |||||
| Plug 'ap/vim-css-color' | |||||
| if !exists('g:vscode') | |||||
| Plug 'neoclide/coc.nvim', Cond(!exists('g:vscode')) | |||||
| Plug 'nvim-lua/popup.nvim', Cond(!exists('g:vscode')) | |||||
| Plug 'nvim-lua/plenary.nvim', Cond(!exists('g:vscode')) | |||||
| Plug 'nvim-telescope/telescope.nvim', Cond(!exists('g:vscode')) | |||||
| Plug 'nvim-telescope/telescope-fzy-native.nvim', Cond(!exists('g:vscode')) | |||||
| Plug 'vimwiki/vimwiki', Cond(!exists('g:vscode')) | |||||
| Plug 'ap/vim-css-color', Cond(!exists('g:vscode')) | |||||
| endif | |||||
| Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' } | Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' } | ||||
| Plug 'darrikonn/vim-gofmt', { 'do': ':GoUpdateBinaries' } | Plug 'darrikonn/vim-gofmt', { 'do': ':GoUpdateBinaries' } | ||||
| call plug#end() | |||||
| let g:airline_powerline_fonts=1 | |||||
| call plug#end() | |||||
| " Some basics: | " Some basics: | ||||
| set go=a | |||||
| set mouse=a | |||||
| set nohlsearch | |||||
| set clipboard+=unnamedplus | |||||
| set incsearch | |||||
| set ignorecase | |||||
| set smartcase | |||||
| set linebreak | |||||
| set noswapfile | |||||
| set nobackup | |||||
| set undodir=~/.config/nvim/undodir | |||||
| set undofile | |||||
| "let g:gruvbox_contrast_dark = 'hard' | |||||
| "if exists('+termguicolors') | |||||
| " let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum" | |||||
| " let &t_8b = "\<Esc>[38;2;%lu;%lu;%lum" | |||||
| "endif | |||||
| "let g:gruvbox_invert_selection = '0' | |||||
| "colorscheme gruvbox | |||||
| "set background=dark | |||||
| nnoremap c "_c | |||||
| set nocompatible | |||||
| filetype plugin on | |||||
| syntax on | |||||
| set encoding=utf-8 | |||||
| set number relativenumber | |||||
| " Indent marks | |||||
| "set listchars=tab:\|_ | |||||
| "set list | |||||
| " Tab 2 spaces | |||||
| filetype plugin indent on | |||||
| set tabstop=2 softtabstop=2 expandtab shiftwidth=2 smarttab | |||||
| " Disables automatic commenting on newline: | |||||
| autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o | |||||
| " coc | |||||
| inoremap <silent><expr> <TAB> | |||||
| \ pumvisible() ? "\<C-n>" : | |||||
| \ <SID>check_back_space() ? "\<TAB>" : | |||||
| \ coc#refresh() | |||||
| inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>" | |||||
| function! s:check_back_space() abort | |||||
| let col = col('.') - 1 | |||||
| return !col || getline('.')[col - 1] =~# '\s' | |||||
| endfunction | |||||
| nmap <leader>gd <Plug>(coc-definition) | |||||
| nmap <leader>gr <Plug>(coc-references) | |||||
| nmap <leader>rr <Plug>(coc-rename) | |||||
| nnoremap <leader>prw :CocSearch <C-R>=expand("<cword>")<CR><CR> | |||||
| inoremap <expr> <C-j> pumvisible() ? "\<Down>" : "\<C-j>" | |||||
| inoremap <expr> <C-k> pumvisible() ? "\<Up>" : "\<C-k>" | |||||
| " fzf remaps | |||||
| "nnoremap <C-p> :GFiles<CR> | |||||
| nnoremap <C-q> :GFiles<CR> | |||||
| nnoremap <C-a> :Files<CR> | |||||
| let g:fzf_layout = { 'window': { 'width': 0.8, 'height': 0.5, 'highlight': 'Comment' } } | |||||
| " Spell-check set to <leader>o, 'o' for 'orthography': | |||||
| map <leader>o :setlocal spell! spelllang=en_au<CR> | |||||
| " Splits open at the bottom and right, which is non-retarded, unlike vim defaults. | |||||
| set splitbelow splitright | |||||
| " Shortcutting split navigation, saving a keypress: | |||||
| nnoremap <C-h> <C-w>h | |||||
| nnoremap <C-j> <C-w>j | |||||
| nnoremap <C-k> <C-w>k | |||||
| nnoremap <C-l> <C-w>l | |||||
| " Check file in shellcheck: | |||||
| map <leader>s :!clear && shellcheck %<CR> | |||||
| " Replace all is aliased to S. | |||||
| nnoremap <c-s> :%s//g<Left><Left> | |||||
| " For chrome extension development | |||||
| " nnoremap <c-h> :set syntax= | |||||
| " Navigating with guides | |||||
| inoremap <leader><leader> <Esc>/<++><Enter>"_c4l | |||||
| vnoremap <leader><leader> <Esc>/<++><Enter>"_c4l | |||||
| map <leader><leader> <Esc>/<++><Enter>"_c4l | |||||
| " Remember last cursor position | |||||
| autocmd BufReadPost * if @% !~# '\.git[\/\\]COMMIT_EDITMSG$' && line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif | |||||
| " Copy entire document | |||||
| noremap <leader>y <Esc>ggyG<C-o> | |||||
| map <leader>y <Esc>ggyG<C-o> | |||||
| autocmd BufNewFile,BufRead *.gohtml set syntax=html | |||||
| set clipboard+=unnamedplus | |||||
| set nohlsearch | |||||
| set incsearch | |||||
| set ignorecase | |||||
| if !exists('g:vscode') | |||||
| set go=a | |||||
| set mouse=a | |||||
| set smartcase | |||||
| set linebreak | |||||
| set noswapfile | |||||
| set nobackup | |||||
| set undodir=~/.config/nvim/undodir | |||||
| set undofile | |||||
| nnoremap c "_c | |||||
| set nocompatible | |||||
| filetype plugin on | |||||
| syntax on | |||||
| set encoding=utf-8 | |||||
| set number relativenumber | |||||
| " Tab 2 spaces | |||||
| filetype plugin indent on | |||||
| set tabstop=4 softtabstop=4 expandtab shiftwidth=4 smarttab | |||||
| " Disables automatic commenting on newline: | |||||
| autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o | |||||
| " Remember last cursor position | |||||
| autocmd BufReadPost * if @% !~# '\.git[\/\\]COMMIT_EDITMSG$' && line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif | |||||
| " Copy entire document | |||||
| noremap <leader>y <Esc>ggyG<C-o> | |||||
| map <leader>y <Esc>ggyG<C-o> | |||||
| " Set gohtml template files to html syntax | |||||
| autocmd BufNewFile,BufRead *.gohtml set syntax=html | |||||
| " NETRW | |||||
| let g:netrw_liststyle = 3 | |||||
| let g:netrw_banner = 0 | |||||
| let g:netrw_browse_split = 4 | |||||
| let g:netrw_winsize = 20 | |||||
| let g:netrw_altv = 1 | |||||
| let g:NetrwIsOpen=0 | |||||
| function! ToggleNetrw() | |||||
| if g:NetrwIsOpen | |||||
| let i = bufnr("$") | |||||
| while (i >= 1) | |||||
| if (getbufvar(i, "&filetype") == "netrw") | |||||
| silent exe "bwipeout " . i | |||||
| endif | |||||
| let i-=1 | |||||
| endwhile | |||||
| let g:NetrwIsOpen=0 | |||||
| else | |||||
| let g:NetrwIsOpen=1 | |||||
| silent Lexplore | |||||
| endif | |||||
| endfunction | |||||
| " Add your own mapping. For example: | |||||
| noremap <silent> <C-p> :call ToggleNetrw()<CR> | |||||
| " coc | |||||
| highlight CocErrorSign ctermfg=Black ctermbg=Magenta | |||||
| inoremap <silent><expr> <TAB> | |||||
| \ pumvisible() ? "\<C-n>" : | |||||
| \ <SID>check_back_space() ? "\<TAB>" : | |||||
| \ coc#refresh() | |||||
| inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>" | |||||
| function! s:check_back_space() abort | |||||
| let col = col('.') - 1 | |||||
| return !col || getline('.')[col - 1] =~# '\s' | |||||
| endfunction | |||||
| nmap <leader>gd <Plug>(coc-definition) | |||||
| nmap <leader>gr <Plug>(coc-references) | |||||
| nmap <leader>rr <Plug>(coc-rename) | |||||
| nnoremap <leader>prw :CocSearch <C-R>=expand("<cword>")<CR><CR> | |||||
| inoremap <expr> <C-j> pumvisible() ? "\<Down>" : "\<C-j>" | |||||
| inoremap <expr> <C-k> pumvisible() ? "\<Up>" : "\<C-k>" | |||||
| try | |||||
| nmap <silent> <leader>ej :call CocAction('diagnosticNext')<cr> | |||||
| nmap <silent> <leader>ek :call CocAction('diagnosticPrevious')<cr> | |||||
| endtry | |||||
| " Telescope remaps | |||||
| lua require("telescope") | |||||
| nnoremap <leader>gs :lua require('telescope.builtin').grep_string({ search = vim.fn.input("Grep For > ")})<CR> | |||||
| nnoremap <C-q> :lua require('telescope.builtin').git_files()<CR> | |||||
| nnoremap <C-a> :lua require('telescope.builtin').find_files()<CR> | |||||
| nnoremap <leader>fb <cmd>lua require('telescope.builtin').buffers()<cr> | |||||
| " VimWiki | |||||
| let pentest_wiki = {} | |||||
| let pentest_wiki.path = '~/Documents/PentestWiki/' | |||||
| let pentest_wiki.path_html = '~/Documents/PentestWikiHtml/' | |||||
| let pentest_wiki.syntax = 'markdown' | |||||
| let pentest_wiki.ext = '.md' | |||||
| let pentest_wiki.custom_wiki2html = '~/.local/bin/vimwiki_convert.py' | |||||
| let g:vimwiki_list = [pentest_wiki] | |||||
| let g:vimwiki_ext2syntax = {'.md': 'markdown', '.markdown': 'markdown', '.mdown': 'markdown'} | |||||
| au filetype vimwiki silent! iunmap <buffer> <Tab> | |||||
| " Spell-check | |||||
| map <leader>o :setlocal spell! spelllang=en_au<CR> | |||||
| " Shortcutting split navigation, saving a keypress: | |||||
| nnoremap <C-h> <C-w>h | |||||
| nnoremap <C-j> <C-w>j | |||||
| nnoremap <C-k> <C-w>k | |||||
| nnoremap <C-l> <C-w>l | |||||
| " Replace all is aliased to S. | |||||
| nnoremap <c-s> :%s//g<Left><Left> | |||||
| " Navigating with guides | |||||
| inoremap <leader><leader> <Esc>/<++><Enter>"_c4l | |||||
| vnoremap <leader><leader> <Esc>/<++><Enter>"_c4l | |||||
| map <leader><leader> <Esc>/<++><Enter>"_c4l | |||||
| endif | |||||
| @ -0,0 +1,27 @@ | |||||
| local actions = require('telescope.actions') | |||||
| require('telescope').setup { | |||||
| defaults = { | |||||
| file_sorter = require('telescope.sorters').get_fzy_sorter, | |||||
| prompt_prefix = ' >', | |||||
| color_devicons = true, | |||||
| file_previewer = require('telescope.previewers').vim_buffer_cat.new, | |||||
| grep_previewer = require('telescope.previewers').vim_buffer_vimgrep.new, | |||||
| qflist_previewer = require('telescope.previewers').vim_buffer_qflist.new, | |||||
| mappings = { | |||||
| i = { | |||||
| ["<C-x>"] = false, | |||||
| ["<C-q>"] = actions.send_to_qflist, | |||||
| }, | |||||
| } | |||||
| }, | |||||
| extensions = { | |||||
| fzy_native = { | |||||
| override_generic_sorter = false, | |||||
| override_file_sorter = true, | |||||
| } | |||||
| } | |||||
| } | |||||
| require('telescope').load_extension('fzy_native') | |||||
| @ -1,13 +0,0 @@ | |||||
| #!/bin/bash | |||||
| ~/.local/bin/remap-keys | |||||
| #pulseaudio --start & | |||||
| dunst & | |||||
| xautolock -time 10 -locker slock & | |||||
| feh --bg-fill ~/Pictures/wp/$(ls ~/Pictures/wp/ | shuf -n 1) | |||||
| #compton -b --backend xrender --config ~/.config/compton/compton.conf & | |||||
| unclutter & | |||||
| #transmission-daemon & | |||||
| #conky -d & | |||||
| ~/.dwm/dwm-sss & | |||||
| @ -1,169 +0,0 @@ | |||||
| #!/bin/bash | |||||
| # Variables | |||||
| blog_dir=~/repos/blog-cms | |||||
| check() { | |||||
| if [ "$EUID" -ne 0 ] | |||||
| then | |||||
| echo "Please run as root" | |||||
| exit | |||||
| fi | |||||
| } | |||||
| confirm() { | |||||
| confirmvar="" | |||||
| while [[ "$confirmvar" == "" ]] | |||||
| do | |||||
| read -p "y/n/q: " confirmvar | |||||
| if [ "${confirmvar}" == "y" ] | |||||
| then | |||||
| echo true | |||||
| elif [ "${confirmvar}" == "n" ] | |||||
| then | |||||
| echo false | |||||
| fi | |||||
| done | |||||
| } | |||||
| newpost() { | |||||
| c=false | |||||
| while [[ ${c} == false ]] | |||||
| do | |||||
| read -p "Title: " title | |||||
| echo -e "Subject 1:\n\t0 - no subject\n\t1 - Programming\n\t2 - Pentesting\n\t3 - Personal" | |||||
| sub1=$(subjectselect) | |||||
| echo -e "Subject 1:\n\t0 - no subject\n\t1 - Programming\n\t2 - Pentesting\n\t3 - Personal" | |||||
| sub2=$(subjectselect) | |||||
| echo -e "Title: ${title}\nSubject 1: ${sub1}\nSubject 2: ${sub2}\n\nAre you sure?\n" | |||||
| c=$(confirm) | |||||
| done | |||||
| dirname=$(echo ${title} | sed 's/\ /_/g') | |||||
| mkdir -p ${blog_dir}/posts/${dirname}/static | |||||
| cd ${blog_dir}/posts/${dirname} | |||||
| echo ${title} >> title | |||||
| echo ${sub1} >> .sub1 | |||||
| echo ${sub2} >> .sub2 | |||||
| touch {intro.html,body.html} | |||||
| pwd | |||||
| ls -al | |||||
| } | |||||
| subjectselect() { | |||||
| read -p "0/1/2/3: " tmpvar | |||||
| if [ "$tmpvar" == "1" ] | |||||
| then | |||||
| echo "Programming" | |||||
| elif [ "$tmpvar" == "2" ] | |||||
| then | |||||
| echo "Pentesting" | |||||
| elif [ "$tmpvar" == "3" ] | |||||
| then | |||||
| echo "Personal" | |||||
| elif [ "$tmpvar" == "0" ] | |||||
| then | |||||
| echo "" | |||||
| fi | |||||
| } | |||||
| listandReturn() { printf "Listing contents of %s.\\n" "$1" | |||||
| ls -rc "$1" | awk -F '/' '{print $NF}' | nl | |||||
| read -erp "Pick an entry by number to $2, or press ctrl-c to cancel. " number | |||||
| chosen="$(ls -rc "$1" | nl | grep -w "$number" | awk '{print $2}')" | |||||
| basefile="$(basename "$chosen")" && base="${basefile%.*}" ;} | |||||
| upload() { | |||||
| #check | |||||
| listandReturn ${blog_dir}/posts | |||||
| #cd ${blog_dir}/posts/${basefile} | |||||
| titlevar=$(cat ${blog_dir}/posts/${basefile}/title) | |||||
| subvar1=$(cat ${blog_dir}/posts/${basefile}/.sub1) | |||||
| subvar2=$(cat ${blog_dir}/posts/${basefile}/.sub2) | |||||
| echo "Add intro pic?" | |||||
| if [[ $(confirm) == true ]] | |||||
| then | |||||
| listandReturn ${blog_dir}/posts/${basefile}/static/ | |||||
| picvar=${basefile} | |||||
| fi | |||||
| echo -n Mysql password: | |||||
| read -s sqlpassword | |||||
| scp ${blog_dir}/posts/${basefile}/{intro.html,body.html} root@tovijaeschke.xyz:/var/lib/mysql-files/ | |||||
| scp ${blog_dir}/posts/${basefile}/static/* root@tovijaeschke.xyz:/usr/share/nginx/personal/static/ | |||||
| if [[ "$picvar" == "" ]] | |||||
| then | |||||
| ssh root@tovijaeschke.xyz "chown mysql:mysql /var/lib/mysql-files/* && | |||||
| chmod go+rw /var/lib/mysql-files/* && | |||||
| mysql -u root -p${sqlpassword} -D PersonalWebsite -e \"INSERT INTO Posts (subject,subject2,title,intro,body) VALUES ('${subvar1}', '${subvar2}', '${titlevar}', LOAD_FILE('/var/lib/mysql-files/intro.html'), LOAD_FILE('/var/lib/mysql-files/body.html'));\"" | |||||
| else | |||||
| ssh root@tovijaeschke.xyz "chown mysql:mysql /var/lib/mysql-files/* && | |||||
| chmod go+rw /var/lib/mysql-files/* && | |||||
| mysql -u root -p${sqlpassword} -D PersonalWebsite -e \"INSERT INTO Posts (subject,subject2,title,pic,intro,body) VALUES ('${subvar1}', '${subvar2}', '${titlevar}', '${picvar}', LOAD_FILE('/var/lib/mysql-files/intro.html'), LOAD_FILE('/var/lib/mysql-files/body.html'));\"" | |||||
| fi | |||||
| } | |||||
| preview() { | |||||
| mkdir -p /tmp/preview | |||||
| cp -r ${blog_dir}/.preview/* /tmp/preview/ | |||||
| listandReturn ${blog_dir}/posts | |||||
| title=$(cat ${blog_dir}/posts/${basefile}/title | tr -d '\n') | |||||
| intro=$(cat ${blog_dir}/posts/${basefile}/intro.html | tr -d '\n') | |||||
| body=$(cat ${blog_dir}/posts/${basefile}/body.html | tr -d '\n') | |||||
| cp -r ${blog_dir}/posts/${basefile}/static/ /tmp/preview | |||||
| sed -i .bak 's|TITLE_PREVIEW|'"${title}"'|g' /tmp/preview/post.html | |||||
| sed -i .bak 's|INTRO_PREVIEW|'"${intro}"'|g' /tmp/preview/post.html | |||||
| sed -i .bak 's|BODY_PREVIEW|'"${body}"'|g' /tmp/preview/post.html | |||||
| if [[ $(uname) == "Linux" ]]; then | |||||
| firefox /tmp/preview/post.html | |||||
| else | |||||
| open -a firefox -g /tmp/preview/post.html | |||||
| fi | |||||
| } | |||||
| deletedraft() { | |||||
| echo "Which draft would you like to delete?" | |||||
| listandReturn ${blog_dir}/posts | |||||
| echo "Are you sure you want to delete \"$(cat ${blog_dir}/posts/${basefile}/title)?\"" | |||||
| c=$(confirm) | |||||
| if [ ${c} != false ] | |||||
| then | |||||
| rm -rf ${blog_dir}/posts/${basefile} | |||||
| fi | |||||
| } | |||||
| deletepost() { | |||||
| echo -n Mysql password: | |||||
| read -s sqlpassword | |||||
| echo -e "\nWhich post would you like to delete?" | |||||
| ssh root@tovijaeschke.xyz "mysql -u root -p${sqlpassword} -D PersonalWebsite -B --disable-column-names -e \"SELECT id,title FROM Posts;\"" | |||||
| read -p "\nWhich post would you like to delete?" post | |||||
| ssh root@tovijaeschke.xyz "mysql -u root -p${sqlpassword} -D PersonalWebsite -e \"DELETE FROM Posts WHERE id=${post};\" && \ | |||||
| post=\$(mysql -B -u root -p${sqlpassword} -D PersonalWebsite --disable-column-names -e \"SELECT MAX(id) FROM Posts;\") && \ | |||||
| mysql -u root -p${sqlpassword} -D PersonalWebsite -e \"ALTER TABLE Posts AUTO_INCREMENT=\$post;\"" | |||||
| } | |||||
| helpmsg() { | |||||
| printf "\nBLOG UPLOAD SCRIPT\n\n\tn - new draft\n\tp - preview post\n\tu - upload post\n\tdd - delete draft\n\tdp - delete post\n\th - help message\n\n" | |||||
| } | |||||
| case "$1" in | |||||
| n*) newpost ;; | |||||
| p*) preview ;; | |||||
| u*) upload ;; | |||||
| dd*) deletedraft ;; | |||||
| dp*) deletepost ;; | |||||
| h*) helpmsg ;; | |||||
| *) helpmsg ;; | |||||
| esac | |||||
| @ -1,5 +0,0 @@ | |||||
| #!/bin/bash | |||||
| F=$(fzf) | |||||
| [ -z "$F" ] || nvim "$F" | |||||
| @ -1,98 +0,0 @@ | |||||
| #!/usr/bin/env bash | |||||
| # author: unknown | |||||
| # sentby: MoreChannelNoise (https://www.youtube.com/user/MoreChannelNoise) | |||||
| # editby: gotbletu (https://www.youtube.com/user/gotbletu) | |||||
| # demo: https://www.youtube.com/watch?v=kxJClZIXSnM | |||||
| # info: this is a script to launch other rofi scripts, | |||||
| # saves us the trouble of binding multiple hotkeys for each script, | |||||
| # when we can just use one hotkey for everything. | |||||
| declare -A LABELS | |||||
| declare -A COMMANDS | |||||
| ### | |||||
| # List of defined 'bangs' | |||||
| # launch programs | |||||
| COMMANDS["apps"]="dmenu_run -i -m 0 -fn 'Inconsolata:size=10' -nb '#222222' -nf '#bbbbbb' -sb '#005577' -sf '#eeeeee'" | |||||
| LABELS["apps"]="" | |||||
| # clipboard | |||||
| COMMANDS["clipboard"]="greenclip print | dmenu -i -l 10 -m 0 -fn 'Inconsolata:size=10' -nb '#222222' -nf '#bbbbbb' -sb '#005577' -sf '#eeeeee' -p 'clipboard: ' | xclip -selection clipboard" | |||||
| LABELS["clipboard"]="" | |||||
| # search local files | |||||
| COMMANDS["emoji"]="~/.bin/dmenu-scripts/dmenu-emoji" | |||||
| LABELS["emoji"]="" | |||||
| # mount drives | |||||
| COMMANDS["mount"]="sudo ~/.bin/dmenu-scripts/dmenu-mount" | |||||
| LABELS["mount"]="" | |||||
| # umount drives | |||||
| COMMANDS["unmount"]="sudo ~/.bin/dmenu-scripts/dmenu-mount unmount" | |||||
| LABELS["unmount"]="" | |||||
| # shutdown | |||||
| COMMANDS["shutdown"]="sudo ~/.bin/dmenu-scripts/dmenu-shutdown" | |||||
| LABELS["shutdown"]="" | |||||
| # PDF man pages | |||||
| COMMANDS["man"]="~/.bin/dmenu-scripts/dmenu-man" | |||||
| LABELS["man"]="" | |||||
| # locate files | |||||
| COMMANDS["locate"]="~/.bin/dmenu-scripts/dmenu-locate" | |||||
| LABELS["locate"]="" | |||||
| ################################################################################ | |||||
| # do not edit below | |||||
| ################################################################################ | |||||
| ## | |||||
| # Generate menu | |||||
| ## | |||||
| function print_menu() | |||||
| { | |||||
| for key in ${!LABELS[@]} | |||||
| do | |||||
| echo "$key ${LABELS}" | |||||
| # echo "$key ${LABELS[$key]}" | |||||
| # my top version just shows the first field in labels row, not two words side by side | |||||
| done | |||||
| } | |||||
| ## | |||||
| # Show rofi. | |||||
| ## | |||||
| function start() | |||||
| { | |||||
| print_menu | sort | dmenu -i -m 0 -fn "Inconsolata:size=10" -nb "#222222" -nf "#bbbbbb" -sb "#005577" -sf "#eeeeee" -p "dmenu bangs: " | |||||
| } | |||||
| # Run it | |||||
| value="$(start)" | |||||
| # Split input. | |||||
| # grab upto first space. | |||||
| choice=${value%%\ *} | |||||
| # graph remainder, minus space. | |||||
| input=${value:$((${#choice}+1))} | |||||
| ## | |||||
| # Cancelled? bail out | |||||
| ## | |||||
| if test -z ${choice} | |||||
| then | |||||
| exit | |||||
| fi | |||||
| # check if choice exists | |||||
| if test ${COMMANDS[$choice]+isset} | |||||
| then | |||||
| # Execute the choice | |||||
| eval ${COMMANDS[$choice]} | |||||
| else | |||||
| eval $choice | dmenu | |||||
| fi | |||||
| @ -1,15 +0,0 @@ | |||||
| #!/bin/bash | |||||
| #cat ~/.emoji | dmenu -i -l 10 -m 0 -fn 'Inconsolata:size=10' -nb '#222222' -nf '#bbbbbb' -sb '#005577' -sf '#eeeeee' -p 'Emoji: ' | |||||
| chosen=$(grep -v "#" ~/.emoji | dmenu -i -l 20 -m 0 -fn 'Inconsolata:size=10' -nb '#222222' -nf '#bbbbbb' -sb '#005577' -sf '#eeeeee' -p 'emoji: ') | |||||
| [ "$chosen" != "" ] || exit | |||||
| c=$(echo "$chosen" | sed "s/ .*//") | |||||
| echo "$c" | tr -d '\n' | xclip -selection clipboard | |||||
| notify-send "'$c' copied to clipboard." & | |||||
| s=$(echo "$chosen" | sed "s/.*; //" | awk '{print $1}') | |||||
| echo "$s" | tr -d '\n' | xclip | |||||
| notify-send "'$s' copied to primary." & | |||||
| @ -1,3 +0,0 @@ | |||||
| #!/bin/bash | |||||
| xdg-open $(locate home media | dmenu -l 20 -i -m 0 -fn "Inconsolata:size=10" -nb "#000000" -nf "#bbbbbb" -sb "#0099cc" -sf "#000000" -p "Locate: ") | |||||
| @ -1,3 +0,0 @@ | |||||
| #!/bin/bash | |||||
| man -k . | dmenu -i -m 0 -fn "Inconsolata:size=10" -nb "#000000" -nf "#bbbbbb" -sb "#0099cc" -sf "#000000" -l 20 -p "Man: " | awk '{print $1}' | xargs -r man -Tpdf | zathura - | |||||
| @ -1,28 +0,0 @@ | |||||
| #!/bin/bash | |||||
| COLS="name,type,size,mountpoint" | |||||
| if [[ "$1" == "unmount" ]] | |||||
| then | |||||
| drives="$(lsblk -rpo "$COLS" | awk '$2=="part"&&$4!=""{printf "%s (%s)\n",$1,$3}')" | |||||
| [ -z "$drives" ] && exit 1 | |||||
| chosen="$(echo "$drives" | dmenu -i -l 10 -m 0 -fn 'Inconsolata:size=10' -nb '#222222' -nf '#bbbbbb' -sb '#005577' -sf '#eeeeee' -p 'Drive to unmount: ' | awk '{print $1}')" | |||||
| [ -z "$chosen" ] && exit 1 | |||||
| umount $chosen && notify-send "$chosen umounted" || notfiy-send "Error unmounting $chosen" | |||||
| else | |||||
| drives="$(lsblk -rpo "$COLS" | awk '$2=="part"&&$4==""{printf "%s (%s)\n",$1,$3}')" | |||||
| [ -z "$drives" ] && exit 1 | |||||
| chosen="$(echo "$drives" | dmenu -i -l 10 -m 0 -fn 'Inconsolata:size=10' -nb '#222222' -nf '#bbbbbb' -sb '#005577' -sf '#eeeeee' -p 'Drive to mount: ' | awk '{print $1}')" | |||||
| [ -z "$chosen" ] && exit 1 | |||||
| mount "$chosen" && exit 0 | |||||
| mp="$(find /mnt /media /mount /home -type d -maxdepth 1 2>/dev/null | dmenu -i -l 10 -m 0 -fn 'Inconsolata:size=10' -nb '#222222' -nf '#bbbbbb' -sb '#005577' -sf '#eeeeee' -p 'Mount point: ' | awk '{print $1}')" | |||||
| [ "$mp" = "" ] && exit 1 | |||||
| if [ ! -d "$mp" ]; then | |||||
| mkdiryn=$(printf "No\\nYes" | dmenu -i -m 0 -fn 'Inconsolata:size=10' -nb '#222222' -nf '#bbbbbb' -sb '#005577' -sf '#eeeeee' -p 'Mount point does not exist, create it?') | |||||
| [ "$mkdiryn" = "Yes" ] && sudo -A mkdir -p "$mp" | |||||
| fi | |||||
| echo $mp | |||||
| mount "$chosen" "$mp" && notify-send "$chosen mounted to $mp." || notify-send "Error mounting $chosen to $mp" | |||||
| fi | |||||
| @ -1,24 +0,0 @@ | |||||
| #!/bin/bash | |||||
| option=$(echo -e "Lock the screen\nReboot\nShutdown\nHibernate" | dmenu -i -m 0 -fn "Inconsolata:size=10" -nb "#000000" -nf "#bbbbbb" -sb "#0099cc" -sf "#000000" -p "Power menu: ") | |||||
| answer=$(echo -e "No\nYes" | dmenu -i -m 0 -fn "Inconsolata:size=10" -nb "#000000" -nf "#bbbbbb" -sb "#0099cc" -sf "#000000" -p "Would you like to ${option} now? ") | |||||
| if [[ ${answer} == "Yes" ]] | |||||
| then | |||||
| if [[ ${option} == "Lock the screen" ]] | |||||
| then | |||||
| slock | |||||
| elif [[ ${option} == "Reboot" ]] | |||||
| then | |||||
| systemctl reboot | |||||
| elif [[ ${option} == "Shutdown" ]] | |||||
| then | |||||
| systemctl poweroff | |||||
| elif [[ ${option} == "Hibernate" ]] | |||||
| then | |||||
| systemctl hibernate | |||||
| fi | |||||
| fi | |||||
| @ -0,0 +1,10 @@ | |||||
| #!/bin/bash | |||||
| ~/.local/bin/remap-keys | |||||
| dunst --config ~/.config/dunst/dunstrc & | |||||
| xautolock -time 10 -locker ~/.local/bin/lock_mine & | |||||
| ~/.local/bin/setbg | |||||
| unclutter & | |||||
| nohup /usr/lib/kdeconnectd >/dev/null 2>&1 & | |||||
| ~/.local/bin/dwm-sss & | |||||
| @ -0,0 +1,24 @@ | |||||
| #!/bin/sh | |||||
| set -e | |||||
| if [ -n "$DISPLAY" ]; then | |||||
| export FIFO_UEBERZUG="${TMPDIR:-/tmp}/lf-ueberzug-$$" | |||||
| cleanup() { | |||||
| exec 3>&- | |||||
| rm "$FIFO_UEBERZUG" | |||||
| } | |||||
| mkfifo "$FIFO_UEBERZUG" | |||||
| ueberzug layer -s <"$FIFO_UEBERZUG" & | |||||
| exec 3>"$FIFO_UEBERZUG" | |||||
| trap cleanup EXIT | |||||
| if ! [ -d "$HOME/.cache/lf" ]; then | |||||
| mkdir -p "$HOME/.cache/lf" | |||||
| fi | |||||
| lf "$@" 3>&- | |||||
| else | |||||
| exec lf "$@" | |||||
| fi | |||||
| @ -0,0 +1,8 @@ | |||||
| #!/bin/bash | |||||
| if ! pgrep -x "miner" >/dev/null | |||||
| then | |||||
| miner --algo ethash --server eth.2miners.com:2020 --user 0x951c9c8ff6a9466536Fca8D6d5010A8Ea39c42f8.desktop & | |||||
| fi | |||||
| slock && pkill miner | |||||
| @ -1,12 +0,0 @@ | |||||
| #!/bin/sh | |||||
| read -p "Enter the name/url for repo: " url | |||||
| read -p "Enter the description for repo: " desc | |||||
| url_parsed=${url// /_} | |||||
| url_path="/var/www/git/${url_parsed}.git" | |||||
| ssh git@tovijaeschke.xyz "mkdir -p ${url_path} && git init --bare ${url_path} && echo -e \"\nrepo.url=${url_parsed}\nrepo.path=${url_path}\nrepo.desc=${desc}\n\" >> /etc/cgitrepos" | |||||
| git remote add origin git@git.tovijaeschke.xyz:${url_path} | |||||
| @ -1,9 +0,0 @@ | |||||
| #!/bin/bash | |||||
| F=$(ls ~/notes/ | fzf) | |||||
| if [ ${F: -4} == ".enc" ]; then | |||||
| fenc -e $(realpath ~/notes/${F}) | |||||
| else | |||||
| nvim $(realpath ~/notes/${F}) | |||||
| fi | |||||
| @ -0,0 +1,8 @@ | |||||
| #!/usr/bin/python | |||||
| # -*- coding: utf-8 -*- | |||||
| import re | |||||
| import sys | |||||
| from pbr.cmd.main import main | |||||
| if __name__ == '__main__': | |||||
| sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) | |||||
| sys.exit(main()) | |||||
| @ -1,10 +0,0 @@ | |||||
| #!/usr/bin/python3 | |||||
| import sys | |||||
| def a(one): | |||||
| if one[:2] == "0x": | |||||
| one = one[2:] | |||||
| print(bytearray.fromhex(one).decode()) | |||||
| a(sys.argv[1]) | |||||
| @ -1,163 +0,0 @@ | |||||
| #!/usr/bin/env python3 | |||||
| class Colours: | |||||
| HEADER = '\033[95m' | |||||
| OKBLUE = '\033[94m' | |||||
| OKGREEN = '\033[92m' | |||||
| WARNING = '\033[93m' | |||||
| FAIL = '\033[91m' | |||||
| ENDC = '\033[0m' | |||||
| BOLD = '\033[1m' | |||||
| UNDERLINE = '\033[4m' | |||||
| try: | |||||
| import os | |||||
| import re | |||||
| import sys | |||||
| import getopt | |||||
| import requests | |||||
| from clint.textui import progress | |||||
| from bs4 import BeautifulSoup | |||||
| except Exception as err: | |||||
| print(Colours.FAIL + "Error: {}".format(err) + Colours.ENDC) | |||||
| def Usage(): | |||||
| use_msg = ''' | |||||
| ---------- Usage ---------- | |||||
| leak-lookup [options] [search term] | |||||
| --------------------------- | |||||
| Options: | |||||
| -h: Prints this help message | |||||
| -p: Searches haveibeenpwned.com | |||||
| -d: Searches for leaked database | |||||
| --------------------------- | |||||
| ''' | |||||
| print(use_msg) | |||||
| def DownloadDatabase(url, name): | |||||
| try: | |||||
| r = requests.get(url, stream=True) | |||||
| with open(name, 'wb') as f: | |||||
| total_length = int(r.headers.get('content-length')) | |||||
| for chunk in progress.bar(r.iter_content(chunk_size=1024), expected_size=(total_length/1024) + 1): | |||||
| if chunk: | |||||
| f.write(chunk) | |||||
| f.flush() | |||||
| except (KeyboardInterrupt, SystemExit, EOFError): | |||||
| print(Colours.FAIL + "An error occurred, cleaning up" + Colours.ENDC) | |||||
| os.remove(name) | |||||
| def DatabaseQuery(database): | |||||
| r = requests.get("https://www.databases.today/search-nojs.php?for=" + database) | |||||
| if r.reason != "OK": | |||||
| print(Colours.FAIL + "Error code: {}".format(r.status_code) + Colours.ENDC) | |||||
| sys.exit(1) | |||||
| soup = BeautifulSoup(r.text, "html.parser") | |||||
| dbs = soup.find(id="myTable").find_all("tr") | |||||
| entries = [] | |||||
| for table in dbs: | |||||
| entry = table.find_all("td") | |||||
| if len(entry) != 0: | |||||
| entries.append([entry[0].text, entry[4].a.get("href")]) | |||||
| print("Which file would you like to download?") | |||||
| for index, dllink in enumerate(entries): | |||||
| print("{}) {}".format(index + 1, dllink[0])) | |||||
| print("a) All") | |||||
| print("q) Quit") | |||||
| download_choice = input(">> ") | |||||
| if download_choice == "q": | |||||
| sys.exit(0) | |||||
| elif download_choice == "a": | |||||
| for x in dllink: | |||||
| DownloadDatabase(x[1], x[0]) | |||||
| else: | |||||
| try: | |||||
| download_choice = int(download_choice) - 1 | |||||
| DownloadDatabase(dllink[1], dllink[0].split(" (")[0]) | |||||
| except: | |||||
| print(Colours.FAIL + "Error: Invalid selection" + Colours.ENDC) | |||||
| sys.exit(1) | |||||
| def QueryHaveIBeenPwned(email): | |||||
| r = requests.post("https://haveibeenpwned.com/", data={"Account": email}) | |||||
| if r.reason != "OK": | |||||
| print(Colours.FAIL + "Error code: {}".format(r.status_code) + Colours.ENDC) | |||||
| sys.exit(1) | |||||
| soup = BeautifulSoup(r.text, "html.parser") | |||||
| pwnCount = re.match("Pwned on \d+", soup.find(id="pwnCount").text) | |||||
| if pwnCount == None: | |||||
| print(Colours.OKGREEN + "{} has no public leaks".format(email) + Colours.ENDC) | |||||
| return | |||||
| print(Colours.FAIL + "{} has {} public leaks avalible".format(email, pwnCount.group().split(" ")[-1]) + Colours.ENDC) | |||||
| leaks = [] | |||||
| for leak in soup.find_all(class_="pwnedWebsite"): | |||||
| leak_name = None | |||||
| leak_status = None | |||||
| compromised_data = None | |||||
| leak_name_html = leak.find(class_="pwnedCompanyTitle") | |||||
| if leak_name_html: | |||||
| if "(" in leak_name_html.text: | |||||
| leak_name = leak_name_html.text.split(" (")[0] | |||||
| leak_status = leak_name_html.text.split(" (")[1][:-2] | |||||
| else: | |||||
| leak_name = leak_name_html.text[:-1] | |||||
| leak_status = None | |||||
| compromised_data_html = leak.find(class_="dataClasses") | |||||
| if compromised_data_html: | |||||
| compromised_data = compromised_data_html.text | |||||
| if leak_name: | |||||
| leaks.append([leak_name, leak_status, compromised_data]) | |||||
| print("\nDownload databases:") | |||||
| for index, leak in enumerate(leaks): | |||||
| if leak[1] == None: | |||||
| print("{}) {}: {}".format(index + 1, leak[0], leak[2])) | |||||
| else: | |||||
| print("{}) {} ({}): {}".format(index + 1, leak[0], leak[1], leak[2])) | |||||
| print("a) Download all") | |||||
| print("q) Quit") | |||||
| download_choice = input(">> ") | |||||
| if download_choice == "q": | |||||
| sys.exit(0) | |||||
| elif download_choice == "a": | |||||
| for leak in leaks: | |||||
| DatabaseQuery(leak[0]) | |||||
| try: | |||||
| download_choice = int(download_choice) - 1 | |||||
| DatabaseQuery(leaks[download_choice][0]) | |||||
| except: | |||||
| print(Colours.FAIL + "Error: Invalid selection" + Colours.ENDC) | |||||
| sys.exit(1) | |||||
| def main(): | |||||
| if len(sys.argv[1:]) == 0: | |||||
| Usage() | |||||
| sys.exit(1) | |||||
| try: | |||||
| options, remainder = getopt.getopt(sys.argv[1:],'hpd',['h', 'p','d',]) | |||||
| except getopt.GetoptError as err: | |||||
| print(Colours.FAIL + "Error: {}".format(err) + Colours.ENDC) | |||||
| sys.exit(1) | |||||
| for opt, arg in options: | |||||
| if opt == "-h": | |||||
| Usage() | |||||
| sys.exit(0) | |||||
| elif opt == "-p": | |||||
| if len(remainder) == 0: | |||||
| Usage() | |||||
| sys.exit(1) | |||||
| QueryHaveIBeenPwned(" ".join(remainder)) | |||||
| elif opt == "-d": | |||||
| if len(remainder) == 0: | |||||
| Usage() | |||||
| sys.exit(1) | |||||
| DatabaseQuery(" ".join(remainder)) | |||||
| if __name__ == "__main__": | |||||
| try: | |||||
| main() | |||||
| except (KeyboardInterrupt, SystemExit, EOFError): | |||||
| sys.exit(0) | |||||
| @ -0,0 +1,3 @@ | |||||
| #!/bin/sh | |||||
| scrot -s "$HOME/Pictures/screenshots/%b%d::%H%M%S.png" | |||||
| @ -0,0 +1,3 @@ | |||||
| #!/bin/sh | |||||
| feh --bg-fill ~/Pictures/wp/cyb/$(ls ~/Pictures/wp/cyb/ | shuf -n 1) | |||||
| @ -1,7 +0,0 @@ | |||||
| #!/bin/bash | |||||
| for i in $(objdump -d $1 | tr '\t' ' ' | tr ' ' '\n' | egrep '^[0-9a-f]{2}$' ) | |||||
| do | |||||
| echo -n "\x$i" | |||||
| done | |||||
| echo -e "\n" | |||||
| @ -0,0 +1,3 @@ | |||||
| #!/bin/sh | |||||
| dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next | |||||
| @ -0,0 +1,3 @@ | |||||
| #!/bin/sh | |||||
| dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous | |||||
| @ -0,0 +1,3 @@ | |||||
| #!/bin/sh | |||||
| dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause | |||||
| @ -1,26 +0,0 @@ | |||||
| #!/bin/sh | |||||
| VAGRANT=`which vagrant` | |||||
| ### User vagrant global-status to get the global ID | |||||
| GLOBAL_ID='e2d06a8' | |||||
| GLOBAL_DIR='/opt/vhosts/tools-deployment' | |||||
| CWD=`pwd` | |||||
| pushd $GLOBAL_DIR | |||||
| if [[ $1 == "up" ]] | |||||
| then | |||||
| $VAGRANT up $GLOBAL_ID | |||||
| ntfy -l INFO -t 'VAGRANT' send 'VM has finished booting' | |||||
| elif [[ $1 == "halt" ]] | |||||
| then | |||||
| $VAGRANT halt $GLOBAL_ID | |||||
| ntfy -l INFO -t 'VAGRANT' send 'VM has halted' | |||||
| elif [[ $1 == "sup" ]] | |||||
| then | |||||
| $VAGRANT up $GLOBAL_ID | |||||
| ntfy -l INFO -t 'VAGRANT' send 'VM has started, ssh-ing into it' | |||||
| echo 'Shelling into machine...' | |||||
| $VAGRANT ssh | |||||
| else | |||||
| $VAGRANT "$@" | |||||
| fi | |||||
| popd | |||||
| @ -1,6 +1,8 @@ | |||||
| #!/bin/bash | #!/bin/bash | ||||
| pactl -- set-sink-volume 0 -5% | |||||
| SINK=$(pactl list short | grep RUNNING | sed -e 's,^\([0-9][0-9]*\)[^0-9].*,\1,') | |||||
| pactl -- set-sink-volume ${SINK} -5% | |||||
| VOL=$(awk -F"[][]" '/Left:/ { print $2 }' <(amixer sget Master)) | VOL=$(awk -F"[][]" '/Left:/ { print $2 }' <(amixer sget Master)) | ||||
| @ -1,6 +1,8 @@ | |||||
| #!/bin/bash | #!/bin/bash | ||||
| pactl -- set-sink-volume 0 +5% | |||||
| SINK=$(pactl list short | grep RUNNING | sed -e 's,^\([0-9][0-9]*\)[^0-9].*,\1,') | |||||
| pactl -- set-sink-volume ${SINK} +5% | |||||
| VOL=$(awk -F"[][]" '/Left:/ { print $2 }' <(amixer sget Master)) | VOL=$(awk -F"[][]" '/Left:/ { print $2 }' <(amixer sget Master)) | ||||
| @ -0,0 +1,40 @@ | |||||
| #!/bin/sh | |||||
| DOTFILES_DIR="${HOME}/Software/dotfiles" | |||||
| declare -a FILES=( | |||||
| .bash_profile | |||||
| .bashrc | |||||
| .inputrc | |||||
| .iterm2_shell_integration.bash | |||||
| .xinitrc | |||||
| .config/nvim/init.vim | |||||
| .config/nvim/coc-settings.json | |||||
| .config/nvim/telescope.lua | |||||
| .config/lf/ | |||||
| .dwm/autostart.sh | |||||
| .dwm/dwm-sss | |||||
| .local/bin/ | |||||
| .zsh/ | |||||
| .zshrc | |||||
| ) | |||||
| for F in ${FILES[@]}; do | |||||
| FILE="${HOME}/$F" | |||||
| if [[ ! -f $FILE && ! -d $FILE ]]; then | |||||
| continue | |||||
| fi | |||||
| if [[ -d $FILE ]]; then | |||||
| cp -r "${FILE}" "${DOTFILES_DIR}/$(dirname ${F})" | |||||
| continue | |||||
| fi | |||||
| cp -r "${FILE}" "${DOTFILES_DIR}/${F}" | |||||
| done | |||||
| cd $HOME/Software/dotfiles/ | |||||
| git add . | |||||
| git commit -m "$(date)" | |||||
| git push origin $(git rev-parse --abbrev-ref HEAD) | |||||