diff --git a/.bin/dexec_super b/.bin/dexec_super index 691e055..f031ac7 100755 --- a/.bin/dexec_super +++ b/.bin/dexec_super @@ -2,37 +2,77 @@ . $HOME/.bin/_config KEYS="\ -openbsd -tweety -dalek cvs +dalek +git +github inbox +make-web +mastodon matrix +openbsd all +openbsd bugs openbsd ports openbsd tech -openbsd bugs -openbsd all -vorstand +reddit shell -github telegram +telegram-desktop +tweety +vorstand " SEL=$(printf "$KEYS" | $DMENU_CMD -p "Next key" -b -l 20) case "$SEL" in - openbsd) texec "ssh -t openbsd.codevoid.de"; ;; - dalek) texec "ssh -t home.codevoid.de 'tmux -u attach || tmux -u'"; ;; - tweety) texec "ssh -t tweety.home.codevoid.de 'tmux -u attach || tmux -u'"; ;; - cvs) texec "ssh -t cvs.openbsd.org"; ;; - shell) texec "ssh -t shell.uugrn.org"; ;; - vorstand) texec "sftp vorstand@vorstand.uugrn.org"; ;; - inbox) texec "ksh -ic mutt"; ;; - *ports) texec "ksh -ic mutt-openbsd-ports"; ;; - *tech) texec "ksh -ic mutt-openbsd-tech"; ;; - *bugs) texec "ksh -ic mutt-openbsd-bugs"; ;; - github) chrome https://github.com; ;; - matrix) texec "gomuks" ; ;; - telegram) texec "tg" ; ;; + dalek) + texec "ssh -t home.codevoid.de 'tmux -u attach || tmux -u'" + ;; + tweety) + texec "ssh -t tweety.home.codevoid.de 'tmux -u attach || tmux -u'" + ;; + cvs) + texec "ssh -t cvs.openbsd.org" + ;; + vorstand) + texec "sftp vorstand@vorstand.uugrn.org" + ;; + inbox) + texec "ksh -ic mutt" + ;; + reddit) + texec "tuir" + ;; + mastodon) + texec "tuta" + ;; + *ports) + texec "ksh -ic mutt-openbsd-ports" + ;; + *tech) + texec "ksh -ic mutt-openbsd-tech" + ;; + *bugs) + texec "ksh -ic mutt-openbsd-bugs" + ;; + github) + $BROWSER https://github.com/c0dev0id + ;; + git) + $BROWSER https://git.uugrn.org/sdk + ;; + make-web) + texec 'ssh home.codevoid.de "cd ~/make-web && make install"' + $BROWSER https://home.codevoid.de + ;; + matrix) + texec "gomuks" + ;; + telegram) + texec "tg" + ;; + telegram-desktop) + telegram-desktop + ;; esac diff --git a/.bin/nnn.sh b/.bin/nnn.sh index de4e00b..99410a1 100755 --- a/.bin/nnn.sh +++ b/.bin/nnn.sh @@ -1,42 +1,45 @@ #!/bin/ksh -if [ -z "$1" ]; +f=$1 + +if [ -z "$f" ]; then - print "Parameter missing." - exit 2 + f="$(find $PWD $HOME $HOME/Downloads -maxdepth 1 -type f \ + | sort -u \ + | fzf -e -x -i)" fi ################################################### # URLS ################################################### -if print "$1" | egrep -qi '^shell:|^ushell:|^cvs:'; +if print "$f" | egrep -qi '^shell:|^ushell:|^cvs:'; then - _server=${1%%:*} - _dir=${1#*:} + _server=${f%%:*} + _dir=${f#*:} ssh -tt $_server "vim $_dir" exit 0 fi -if print "$1" | egrep -qi '^http[s]{0,1}://'; +if print "$f" | egrep -qi '^http[s]{0,1}://'; then - case "$1" in - *.mkv) mpv "$1"; ;; - *.mp4) mpv "$1"; ;; - *.webm) mpv "$1"; ;; - *) sacc "$1"; ;; + case "$f" in + *.mkv) mpv "$f"; ;; + *.mp4) mpv "$f"; ;; + *.webm) mpv "$f"; ;; + *) sacc "$f"; ;; esac - ${BROWSER:=vimb} "$1" + ${BROWSER:=vimb} "$f" exit 0 fi -if print "$1" | egrep -qi '^gopher://'; +if print "$f" | egrep -qi '^gopher://'; then - case "$1" in - *.mkv) mpv "$1"; ;; - *.mp4) mpv "$1"; ;; - *.webm) mpv "$1"; ;; - *) sacc "$1"; ;; + case "$f" in + *.mkv) mpv "$f"; ;; + *.mp4) mpv "$f"; ;; + *.webm) mpv "$f"; ;; + *) sacc "$f"; ;; esac exit 0 fi @@ -45,7 +48,7 @@ fi # REAL FILES ################################################### -if [ ! -f "$1" ]; +if [ ! -f "$f" ]; then print "Parameter is not a file." exit 1 @@ -55,15 +58,15 @@ fi # EXTENSIONS ################################################### -EXT="$(print "${1##*.}" | tr '[:upper:]' '[:lower:]')" +EXT="$(print "${f##*.}" | tr '[:upper:]' '[:lower:]')" case "$EXT" in - docx) libreoffice "$1"; ;; - xlsx) libreoffice "$1"; ;; - txt) vim "$1"; ;; - m2ts) mpv "$1"; ;; - sid) sidplay "$1"; ;; - out) kdump -RTf "$1" | less; ;; + docx) libreoffice "$f"; ;; + xlsx) libreoffice "$f"; ;; + txt) vim "$f"; ;; + m2ts) mpv "$f"; ;; + sid) sidplay "$f"; ;; + out) kdump -RTf "$f" | less; ;; *) unset EXT; ;; esac @@ -76,22 +79,22 @@ fi # MIME TYPES ################################################### -case "$(file -ib "$1")" in +case "$(file -ib "$f")" in # full qualified - application/ogg) ogg123 "$1"; ;; - application/pdf) mupdf-gl -XJA0 "$1"; ;; - application/postscript) mupdf-gl -XJA0 "$1"; ;; - application/vnd.oasis.opendocument.*) libreoffice "$1"; ;; - audio/mpeg) mpg123 "$1"; ;; - audio/midi) timidity "$1"; ;; + application/ogg) ogg123 "$f"; ;; + application/pdf) mupdf-gl -XJA0 "$f"; ;; + application/postscript) mupdf-gl -XJA0 "$f"; ;; + application/vnd.oasis.opendocument.*) libreoffice "$f"; ;; + audio/mpeg) mpg123 "$f"; ;; + audio/midi) timidity "$f"; ;; # with wildcards - audio/*) mpv "$1"; ;; - video/*) mpv "$1"; ;; - image/webp) mpv "$1"; ;; - image/*) sxiv -N floating -g 1280x720+300+180 -ab "$1"; ;; + audio/*) mpv "$f"; ;; + video/*) mpv "$f"; ;; + image/webp) mpv "$f"; ;; + image/*) sxiv -N floating -g 1280x720+300+180 -ab "$f"; ;; # can't handle - application/octet-stream) print "Sorry, can't handle: $1"; ;; + application/octet-stream) print "Sorry, can't handle: $f"; ;; # vim can handle a lot! - *) vim "$1"; ;; + *) vim "$f"; ;; esac diff --git a/.bin/sshot b/.bin/sshot index 16febce..250b2a0 100755 --- a/.bin/sshot +++ b/.bin/sshot @@ -1,51 +1,23 @@ #!/bin/sh -e . ${HOME}/.bin/_config -# -# SIGNAL HANDLER -# trap cleanup 1 2 3 6 -cleanup() { - rm -f "${_file_tmp}"; - notify-send "sshot: Aborted..." -} +cleanup() { rm -f "$file"; } -# -# CONFIGURATION -# -_filename="$(date "+%Y-%m-%d_%H-%M-%S")-sshot.png" -_file_dir="${HOME}/Downloads/Screenshots" -mkdir -p "$_file_dir" +# FILENAME +file="${HOME}/Downloads/Screenshots/$(date "+%Y-%m-%d_%H-%M-%S")-sshot.png" +mkdir -p "$(dirname "$file")" -# # TAKE SCREENSHOT -# -flameshot gui -p "${_file_dir}/${_filename}" -test -f "${_file_dir}/${_filename}" || exit 1 -pngcrush -reduce "${_file_dir}/${_filename}" +flameshot gui -p "$file" +test -f "$file" || exit 1 + +# COMPRESS +test -f /usr/local/bin/pngcrush \ + && pngcrush -reduce "$file" -# # UPLOAD -# -scp "${_file_dir}/${_filename}" sdk@home.codevoid.de:make-web/src/paste/ +_SWM_WS=-1 texec "upload \"$file\"" -# -# BUILD WEBSITE -# -ssh home.codevoid.de "cd make-web && make install" - -# -# COPY TO CLIPBOARD -# -printf '%s' "https://home.codevoid.de/paste/${_filename}" | xclip - -# -# PRINT TO STDOUT -# -echo "https://home.codevoid.de/paste/${_filename}" -echo "${_file_dir}/${_filename}" - -# # NOTIFY -# -notify-send "https://home.codevoid.de/paste/${_filename}" +notify-send "$(xclip -o)" diff --git a/.bin/xpick_copy b/.bin/xpick_copy index 7330d84..876db06 100755 --- a/.bin/xpick_copy +++ b/.bin/xpick_copy @@ -1,3 +1,3 @@ #!/bin/sh xpick -h | tr -d '\n' | xclip -notify-send "$(xclip -o)" +notify-send "Copied: $(xclip -o)" diff --git a/.config/spectrwm/spectrwm.conf b/.config/spectrwm/spectrwm.conf index f864c57..55585b3 100644 --- a/.config/spectrwm/spectrwm.conf +++ b/.config/spectrwm/spectrwm.conf @@ -1,30 +1,48 @@ -# Window Decoration -border_width = 2 -color_focus = rgb:77/77/77 -color_focus_maximized = rgb:28/28/28 -color_focus_free = rgb:77/77/77 -color_unfocus = rgb:47/47/47 -color_unfocus_free = rgb:47/47/47 -region_padding = 20 -tile_gap = 24 +# __ +# _________ ___ _____/ /_______ ______ ___ +# / ___/ __ \/ _ \/ ___/ __/ ___/ | /| / / __ `__ \ +# (__ ) /_/ / __/ /__/ /_/ / | |/ |/ / / / / / / +# /____/ .___/\___/\___/\__/_/ |__/|__/_/ /_/ /_/ +# /_/ C-O-D-E-V-O-I-D E-D-I-T-I-O-N +# + +# +-------------------------------------------------- +# | WINDOW DECORATION +# +-------------------------------------------------- + +border_width = 2 +color_focus = rgb:77/77/77 +color_focus_maximized = rgb:28/28/28 +color_focus_free = rgb:77/77/77 +color_unfocus = rgb:47/47/47 +color_unfocus_free = rgb:47/47/47 +region_padding = 6 +tile_gap = 6 + +# +-------------------------------------------------- +# | BAR SETTINGS +# +-------------------------------------------------- +bar_border_width = 4 +bar_border = rgb:18/18/18 +bar_border_unfocus = rgb:18/18/18 +bar_border_free = rgb:18/18/18 +bar_color = rgb:18/18/18 +bar_color_free = rgb:18/18/18 +bar_color_selected = rgb:18/24/28 +bar_font_color = rgb:99/99/99,red +bar_font_color_selected = rgb:ff/ff/ff +bar_font_color_free = rgb:99/99/99,red +bar_font = FuraCodeNerdFont-12 +bar_font_pua = FuraCodeNerdFont-12 +bar_action = cbar +bar_action_expand = 1 +bar_at_bottom = 0 +bar_format = +S +L  +R   +I   +M  +W +|1R +A %Y-%m-%d %H:%M + +# +-------------------------------------------------- +# | WORKSPACE LAYOUT +# +-------------------------------------------------- -# Bar Settings -bar_border_width = 4 -bar_border = rgb:18/18/18 -bar_border_unfocus = rgb:18/18/18 -bar_border_free = rgb:18/18/18 -bar_color = rgb:18/18/18 -bar_color_free = rgb:18/18/18 -bar_color_selected = rgb:18/24/28 -bar_font_color = rgb:99/99/99,red -bar_font_color_selected = rgb:ff/ff/ff -bar_font_color_free = rgb:99/99/99,red -bar_font = FuraCodeNerdFont-12 -bar_font_pua = FuraCodeNerdFont-12 -bar_action = cbar -bar_action_expand = 1 -bar_at_bottom = 0 -bar_format = +S +L  +R   +I   +M  +W +|1R +A %Y-%m-%d %H:%M workspace_indicator = listall,markcurrent,markactive,markempty,noindexes workspace_mark_current = '' workspace_mark_active = '' @@ -35,77 +53,160 @@ stack_mark_horizontal_flip = '' stack_mark_vertical = '' stack_mark_vertical_flip = '' stack_mark_max = '' - -workspace_clamp = 1 -warp_focus = 0 -warp_pointer = 0 -cycle_visible = 0 -focus_close_wrap = 1 -focus_mode = default verbose_layout = 1 -click_to_raise = 1 -# Custom Quirks -quirk[IPMIView20-IPMIView20:IPMIView20-IPMIView20] = FLOAT + ANYWHERE +# +-------------------------------------------------- +# | FOCUS BEHAVIOR +# +-------------------------------------------------- + +workspace_clamp = 1 +warp_focus = 0 +warp_pointer = 0 +cycle_visible = 0 +focus_close_wrap = 1 +focus_mode = default +click_to_raise = 1 + +# +-------------------------------------------------- +# | QUIRKS +# +-------------------------------------------------- + quirk[scratchpad] = FLOAT + ANYWHERE + FOCUSPREV -#quirk[Vimb] = NORESIZE -#quirk[qutebrowser] = NORESIZE -quirk[Nsxiv:tabbed] = NOFOCUSONMAP + FOCUSPREV -# Window Manager Keys -keyboard_mapping = ~/.config/spectrwm/spectrwm_map.conf +# +-------------------------------------------------- +# | REGISTERED PROGRAMS +# +-------------------------------------------------- -# Custom Programs -program[sterm] = sterm -bind[sterm] = MOD+Return +program[sterm] = sterm +bind[sterm] = MOD+Return -program[bterm] = bterm -bind[bterm] = MOD+Shift+Return +program[bterm] = bterm +bind[bterm] = MOD+Shift+Return -program[hterm] = hterm -bind[hterm] = MOD+Control+Return +program[hterm] = hterm +bind[hterm] = MOD+Control+Return -program[irssi] = texec x -bind[irssi] = MOD+Shift+X +program[irssi] = texec x +bind[irssi] = MOD+Shift+X -program[Super] = dexec_super -bind[Super] = Super_L +program[Super] = dexec_super +bind[Super] = Super_L -program[mutt] = texec mutt -bind[mutt] = MOD+Shift+M +program[mutt] = texec mutt +bind[mutt] = MOD+Shift+M -program[omutt] = texec mutt-openbsd-all -bind[omutt] = MOD+Shift+O +program[omutt] = texec mutt-openbsd-all +bind[omutt] = MOD+Shift+O -program[exec] = dexec -bind[exec] = MOD+D +program[exec] = dexec +bind[exec] = MOD+D -program[ssh] = dexec_ssh -bind[ssh] = MOD+S +program[ssh] = dexec_ssh +bind[ssh] = MOD+S -program[audio] = dexec_audio -bind[audio] = MOD+O +program[audio] = dexec_audio +bind[audio] = MOD+O program[scratchpad] = sp bind[scratchpad] = MOD+minus -program[apps] = dexec_apps -bind[apps] = MOD+A +program[apps] = dexec_apps +bind[apps] = MOD+A -program[browser] = dexec_browser -bind[browser] = MOD+Shift+F +program[browser] = dexec_browser +bind[browser] = MOD+Shift+F -program[pass] = dexec_pass -bind[pass] = MOD+Shift+P +program[pass] = dexec_pass +bind[pass] = MOD+Shift+P -program[pim] = dexec_pim -bind[pim] = MOD+P +program[pim] = dexec_pim +bind[pim] = MOD+P # OTHERS -program[sshot] = sshot -bind[sshot] = Print +program[sshot] = sshot +bind[sshot] = Print -program[xpick] = xpick_copy -bind[xpick] = MOD+Print +program[xpick] = xpick_copy +bind[xpick] = MOD+Print -program[lock] = /usr/bin/false +program[lock] = /usr/bin/false + +# +-------------------------------------------------- +# | KEYBOARD MAPPING +# +-------------------------------------------------- + +# BAR +bind[bar_toggle] = MOD+b +bind[bar_toggle_ws] = MOD+Shift+b + +# LAYOUT +bind[cycle_layout] = MOD+l +bind[flip_layout] = MOD+Shift+l +bind[float_toggle] = MOD+space +bind[free_toggle] = MOD+Shift+space + +# FOCUS +bind[focus_main] = MOD+m +bind[focus_next] = MOD+Down +#bind[focus_next] = MOD+Tab +bind[focus_prev] = MOD+Up +bind[focus_prev] = MOD+Shift+Tab +bind[focus_urgent] = MOD+u +#bind[focus_free] = MOD+Shift+BackSpace + +# ICONFIY / HIDE +bind[iconify] = MOD+Shift+i +bind[uniconify] = MOD+i + +# MASTER +bind[master_add] = MOD+comma +bind[master_del] = MOD+period +bind[master_grow] = MOD+Right +bind[master_shrink] = MOD+Left +bind[stack_dec] = MOD+Shift+comma +bind[stack_inc] = MOD+Shift+period +#bind[stack_reset] = MOD+Shift+space +bind[maximize_toggle] = MOD+f + +# WS NAVIGATION +bind[ws_1] = MOD+1 +bind[ws_2] = MOD+2 +bind[ws_3] = MOD+3 +bind[ws_4] = MOD+4 +bind[ws_5] = MOD+5 +bind[ws_6] = MOD+6 +bind[ws_7] = MOD+7 +bind[ws_8] = MOD+8 +bind[ws_9] = MOD+9 +bind[ws_10] = MOD+0 +bind[ws_next_all] = MOD+Page_Down +bind[ws_prev_all] = MOD+Page_Up +bind[ws_prior] = MOD+Tab + +# MOVE WINDOW TO OTHER WS +bind[rg_next] = MOD+dead_circumflex +bind[rg_prev] = MOD+Shift+dead_circumflex +bind[mvws_1] = MOD+Shift+1 +bind[mvws_2] = MOD+Shift+2 +bind[mvws_3] = MOD+Shift+3 +bind[mvws_4] = MOD+Shift+4 +bind[mvws_5] = MOD+Shift+5 +bind[mvws_6] = MOD+Shift+6 +bind[mvws_7] = MOD+Shift+7 +bind[mvws_8] = MOD+Shift+8 +bind[mvws_9] = MOD+Shift+9 +bind[mvws_10] = MOD+Shift+0 + +# RENAME WS +bind[name_workspace] = MOD+r + +# MOVE WINDOW WITHIN WS +bind[swap_main] = MOD+M +bind[swap_next] = MOD+Shift+Down +bind[swap_prev] = MOD+Shift+Up + +# DELETE WINDOW +bind[wind_del] = MOD+q +bind[wind_kill] = MOD+Shift+q + +bind[restart] = MOD+Shift+r diff --git a/.kshrc b/.kshrc index 64d9617..e9c7d96 100644 --- a/.kshrc +++ b/.kshrc @@ -69,7 +69,7 @@ export TUIR_BROWSER NNN_OPTS="cErxAJBR" NNN_OPENER="nnn.sh" NNN_FIFO=/tmp/nnn.fifo -NNN_PLUG='o:-!mpv "$nnn";x:!imagesort;p:!pdfarranger "$nnn" > /dev/null 2>&1 &' +NNN_PLUG='o:-!mpv "$nnn";u:!upload "$nnn";x:!imagesort;p:!pdfarranger "$nnn" > /dev/null 2>&1 &' NNN_ARCHIVE="\\.(7z|bz2|gz|tar|tgz|zip)$" NNN_COLORS='#0a1b2c3d;1234' NNN_FCOLORS='c1e2272e006033f7c6d6abc4'