From 114d8f292d177b71ea08c55b70d7856e1bc50baa Mon Sep 17 00:00:00 2001 From: Benjamin Chausse Date: Mon, 15 Jul 2024 13:15:47 -0400 Subject: ttf/otf font preview within lf --- .config/lf/lfrc | 1 + .config/lf/scope | 184 +++++++++++++++++++++++++++--------------------- .config/mimeapps.list | 1 + .config/sxhkd/sxhkdrc | 6 +- .local/bin/colorhandler | 4 +- .local/bin/compiler | 14 ++-- .profile | 1 + 7 files changed, 119 insertions(+), 92 deletions(-) diff --git a/.config/lf/lfrc b/.config/lf/lfrc index b6c80a8..251230e 100755 --- a/.config/lf/lfrc +++ b/.config/lf/lfrc @@ -141,6 +141,7 @@ map b $setbg $f map down map up map V push :!nvim +map N push :!touch map W $setsid -f $TERMINAL >/dev/null 2>&1 map Y $printf "%s" "$fx" | xclip -selection clipboard diff --git a/.config/lf/scope b/.config/lf/scope index f396519..6d9e8cdf 100755 --- a/.config/lf/scope +++ b/.config/lf/scope @@ -12,17 +12,17 @@ PREVIEW_WIDTH=600 # px # PrefixGen: generates a hash prefix for the given file # This is a unique identifier for the file to preview PrefixGen() { - # The file path is hashed instead of the file itself since large files - # can take a long time to hash and the file path is usually enough to - # uniquely identify the file. Also, the suffix is used to determine if - # the preview is outdated (which removes the need to hash the file). - readlink -f "$1" | sha256sum | cut -d' ' -f1 + # The file path is hashed instead of the file itself since large files + # can take a long time to hash and the file path is usually enough to + # uniquely identify the file. Also, the suffix is used to determine if + # the preview is outdated (which removes the need to hash the file). + readlink -f "$1" | sha256sum | cut -d' ' -f1 } # SuffixGen: generates a hash suffix for the given file # This suffix is used to determine if the preview is outdated SuffixGen() { - stat -Lc "%Y" "$1" + stat -Lc "%Y" "$1" } # Prevent recursive thumbnails (if the file ends in .six) @@ -30,94 +30,116 @@ SuffixGen() { case "$(file --dereference --brief --mime-type -- "$1")" in text/html) - lynx -width="$4" -display_charset=utf-8 -dump "$1" - ;; + lynx -width="$4" -display_charset=utf-8 -dump "$1" + ;; text/troff) - man ./ "$1" | col -b - ;; + man ./ "$1" | col -b + ;; text/* | */xml | application/json | application/x-ndjson) - bat --terminal-width "$(($4 - 2))" -f "$1" - ;; + bat --terminal-width "$(($4 - 2))" -f "$1" + ;; audio/* | application/octet-stream) - mediainfo "$1" || exit 1 - ;; + mediainfo "$1" || exit 1 + ;; +font/* | application/vnd.ms-opentype) + prefix="$(PrefixGen "$1")" + suffix="$(SuffixGen "$1")" + filename="$prefix-$suffix" + + PREVIEW_TEXT="ABCDEFGHIJKLMNOPQRSTUBWXYZ\n""\ +abcdefghijklmnopqrstuvwxyz\n""\ +1234567890\n""\ +!@#$\%(){}[]-+=_\`~" + + [ ! -f "$PREVIEW_DIR/$filename.six" ] || { + rm -f "$PREVIEW_DIR/$prefix-*" + convert -size "600x412" xc:'#ffffff' \ + -gravity center -pointsize 28 \ + -font "$1" \ + -fill '#000000' \ + -annotate +0+0 "$PREVIEW_TEXT" \ + -flatten ppm:- | img2sixel -E size -q high -o "$PREVIEW_DIR/$filename.six" + } + cat "$PREVIEW_DIR/$filename.six" + + ;; image/vnd.djvu) - prefix="$(PrefixGen "$1")" - suffix="$(SuffixGen "$1")" - filename="$prefix-$suffix" - [ ! -f "$PREVIEW_DIR/$filename.six" ] && { - rm -f "$PREVIEW_DIR/$prefix-*" - djvused "$1" -e 'select 1; save-page-with /dev/stdout' | - convert djvu:- ppm:- | - img2sixel -S -E size -q high -w $PREVIEW_WIDTH -o "$PREVIEW_DIR/$filename.six" - } - cat "$PREVIEW_DIR/$filename.six" - ;; + prefix="$(PrefixGen "$1")" + suffix="$(SuffixGen "$1")" + filename="$prefix-$suffix" + [ ! -f "$PREVIEW_DIR/$filename.six" ] && { + rm -f "$PREVIEW_DIR/$prefix-*" + djvused "$1" -e 'select 1; save-page-with /dev/stdout' | + convert djvu:- ppm:- | + img2sixel -S -E size -q high -w $PREVIEW_WIDTH -o "$PREVIEW_DIR/$filename.six" + } + cat "$PREVIEW_DIR/$filename.six" + ;; image/webp) - prefix="$(PrefixGen "$1")" - suffix="$(SuffixGen "$1")" - filename="$prefix-$suffix" - [ ! -f "$PREVIEW_DIR/$filename.six" ] && { - rm -f "$PREVIEW_DIR/$prefix-*" - dwebp "$1" -tiff -o - | img2sixel -S -E size -q high -w $PREVIEW_WIDTH -o "$PREVIEW_DIR/$filename.six" - } - cat "$PREVIEW_DIR/$filename.six" - ;; + prefix="$(PrefixGen "$1")" + suffix="$(SuffixGen "$1")" + filename="$prefix-$suffix" + [ ! -f "$PREVIEW_DIR/$filename.six" ] && { + rm -f "$PREVIEW_DIR/$prefix-*" + dwebp "$1" -tiff -o - | img2sixel -S -E size -q high -w $PREVIEW_WIDTH -o "$PREVIEW_DIR/$filename.six" + } + cat "$PREVIEW_DIR/$filename.six" + ;; image/heic) - prefix="$(PrefixGen "$1")" - suffix="$(SuffixGen "$1")" - filename="$prefix-$suffix" - [ ! -f "$PREVIEW_DIR/$filename.six" ] && { - rm -f "$PREVIEW_DIR/$prefix-*" - convert "$1" ppm:- | - img2sixel -S -E size -q high -w $PREVIEW_WIDTH -o "$PREVIEW_DIR/$filename.six" - } - cat "$PREVIEW_DIR/$filename.six" - ;; + prefix="$(PrefixGen "$1")" + suffix="$(SuffixGen "$1")" + filename="$prefix-$suffix" + [ ! -f "$PREVIEW_DIR/$filename.six" ] && { + rm -f "$PREVIEW_DIR/$prefix-*" + convert "$1" ppm:- | + img2sixel -S -E size -q high -w $PREVIEW_WIDTH -o "$PREVIEW_DIR/$filename.six" + } + cat "$PREVIEW_DIR/$filename.six" + ;; image/*) - prefix="$(PrefixGen "$1")" - suffix="$(SuffixGen "$1")" - filename="$prefix-$suffix" - [ ! -f "$PREVIEW_DIR/$filename.six" ] && { - rm -f "$PREVIEW_DIR/$prefix-*" - img2sixel -S -E size -q high -w $PREVIEW_WIDTH "$1" -o "$PREVIEW_DIR/$filename.six" - } - cat "$PREVIEW_DIR/$filename.six" - ;; + prefix="$(PrefixGen "$1")" + suffix="$(SuffixGen "$1")" + filename="$prefix-$suffix" + [ ! -f "$PREVIEW_DIR/$filename.six" ] && { + rm -f "$PREVIEW_DIR/$prefix-*" + img2sixel -S -E size -q high -w $PREVIEW_WIDTH "$1" -o "$PREVIEW_DIR/$filename.six" + } + cat "$PREVIEW_DIR/$filename.six" + ;; */pdf) - prefix="$(PrefixGen "$1")" - suffix="$(SuffixGen "$1")" - filename="$prefix-$suffix" - [ ! -f "$PREVIEW_DIR/$filename.six" ] && { - rm -f "$PREVIEW_DIR/$prefix-*" - pdftocairo -singlefile -scale-to-x $PREVIEW_WIDTH -scale-to-y -1 -jpeg "$1" - | - img2sixel -S -E size -q high -o "$PREVIEW_DIR/$filename.six" - } - cat "$PREVIEW_DIR/$filename.six" - ;; + prefix="$(PrefixGen "$1")" + suffix="$(SuffixGen "$1")" + filename="$prefix-$suffix" + [ ! -f "$PREVIEW_DIR/$filename.six" ] && { + rm -f "$PREVIEW_DIR/$prefix-*" + pdftocairo -singlefile -scale-to-x $PREVIEW_WIDTH -scale-to-y -1 -jpeg "$1" - | + img2sixel -S -E size -q high -o "$PREVIEW_DIR/$filename.six" + } + cat "$PREVIEW_DIR/$filename.six" + ;; video/*) - prefix="$(PrefixGen "$1")" - suffix="$(SuffixGen "$1")" - filename="$prefix-$suffix" - [ ! -f "$PREVIEW_DIR/$filename.six" ] && { - rm -f "$PREVIEW_DIR/$prefix-*" - ffmpegthumbnailer -i "$1" -s 0 -c jpeg -f -o - | - img2sixel -S -E size -q high -w $PREVIEW_WIDTH -o "$PREVIEW_DIR/$filename.six" - } - cat "$PREVIEW_DIR/$filename.six" - ;; + prefix="$(PrefixGen "$1")" + suffix="$(SuffixGen "$1")" + filename="$prefix-$suffix" + [ ! -f "$PREVIEW_DIR/$filename.six" ] && { + rm -f "$PREVIEW_DIR/$prefix-*" + ffmpegthumbnailer -i "$1" -s 0 -c jpeg -f -o - | + img2sixel -S -E size -q high -w $PREVIEW_WIDTH -o "$PREVIEW_DIR/$filename.six" + } + cat "$PREVIEW_DIR/$filename.six" + ;; application/*zip) - atool --list -- "$1" - ;; + atool --list -- "$1" + ;; *spreadsheetml.sheet) - xlsx2csv -s 1 "$1" | bat --terminal-width "$(($4 - 2))" -l 'csv' - ;; + xlsx2csv -s 1 "$1" | bat --terminal-width "$(($4 - 2))" -l 'csv' + ;; *opendocument*) - odt2txt "$1" - ;; + odt2txt "$1" + ;; application/pgp-encrypted) - gpg -d -- "$1" - ;; + gpg -d -- "$1" + ;; esac exit 1 diff --git a/.config/mimeapps.list b/.config/mimeapps.list index 487fece..34ceddb 100644 --- a/.config/mimeapps.list +++ b/.config/mimeapps.list @@ -41,3 +41,4 @@ application/xhtml+xml=firefox.desktop; application/x-extension-xhtml=firefox.desktop; application/x-extension-xht=firefox.desktop; text/plain=nvim.desktop; +text/calendar=nvim.desktop diff --git a/.config/sxhkd/sxhkdrc b/.config/sxhkd/sxhkdrc index 31f10df..7a296fa 100644 --- a/.config/sxhkd/sxhkdrc +++ b/.config/sxhkd/sxhkdrc @@ -153,7 +153,7 @@ super + p displayselect ## TODOs (orgmode-nvim) super + space - dropdowntoggle orgmode nvim +"Neorg index" + dropdowntoggle orgmode nvim "$HOME/Dropbox/org/index.org" ## Terminal Calculator super + a dropdowntoggle calc tmux-py @@ -217,10 +217,10 @@ XF86AudioMute ## Increase/decrease Brightness {XF86MonBrightnessUp, XF86MonBrightnessDown} backlightctl -{i,d} 5 -## Max-Out Brightness +## Set brightness to maximum shift + XF86MonBrightnessUp backlightctl -s 100 -## Set Brightness to 5 percent +## Set brightness to minimum shift + XF86MonBrightnessDown backlightctl -s 0 ## Fix games with MX Master mouse diff --git a/.local/bin/colorhandler b/.local/bin/colorhandler index 7e35263..3f0f18f 100755 --- a/.local/bin/colorhandler +++ b/.local/bin/colorhandler @@ -1,6 +1,8 @@ #!/bin/sh -col=$(colorpicker --short --one-shot) +[ -z "$1" ] && col=$(colorpicker --short --one-shot) || + col="$1" + sed "s/fill=.*>/fill=\"$col\">/g" $HOME/.local/share/circle.svg > /tmp/circle.svg diff --git a/.local/bin/compiler b/.local/bin/compiler index e6a6db3..5754848 100755 --- a/.local/bin/compiler +++ b/.local/bin/compiler @@ -13,13 +13,13 @@ base="${file%.*}" cd "$dir" || exit textype() { - command="pdflatex" - (sed 5q "$file" | grep -i -q 'xelatex') && command="xelatex" - $command --output-directory="$dir" "$base" && - grep -i addbibresource "$file" >/dev/null && - biber --input-directory "$dir" "$base" && - $command --output-directory="$dir" "$base" && - $command --output-directory="$dir" "$base" + command="pdflatex" + (sed 5q "$file" | grep -i -q 'xelatex') && command="xelatex" + $command --output-directory="$dir" "$base" && + grep -i addbibresource "$file" >/dev/null && + biber --input-directory "$dir" "$base" && + $command --output-directory="$dir" "$base" && + $command --output-directory="$dir" "$base" } case "$file" in diff --git a/.profile b/.profile index bd1c575..41b425f 100644 --- a/.profile +++ b/.profile @@ -40,6 +40,7 @@ export WINEPREFIX="$XDG_DATA_HOME/wineprefixes/default" export HISTFILE="$XDG_CACHE_HOME/zsh_history" export HISTSIZE=1000 export SAVEHIST=10000 +export BAT_THEME="ansi" # Path export PATH="$PATH:$(find "$HOME/.local/bin" -type d | paste -sd ":" -)" -- cgit v1.2.3