#!/usr/bin/env bash # Merge both global and local charfiles CHARDIR=~/.cache/charsel if [[ ! -d $CHARDIR ]] then mkdir $CHARDIR/ elif [[ ! "$(ls -A $CHARDIR)" ]] then cp -rf /usr/share/charsel/- $CHARDIR/ cp -rf ~/.local/share/charsel/- $CHARDIR/ fi # Check for user inputs if [[ $1 == "list" ]] then echo "The following charfiles are installed" ls $CHARDIR/charfiles exit 0 elif [[ $1 == "help" || $1 == "-h" || $1 == "--help" || $# -ne 1 ]] then cat /usr/share/doc/charsel/README.md exit 0 fi # Define charfile path CHARFILE=$CHARDIR/charfiles/$1 if [[ ! -f $CHARFILE ]] then echo "Please enter a valid charfile. You can list installed charfiles with \`charsel list\`" exit 1 fi # Define length of shortcut LENGTH=$(cat $CHARFILE | cut -f 1 -d ',' -s | wc -L | cut -b 1) # Clear screen clear # Main program while : do # Format charfile into table, showing only the shortcuts below the divider in the charfile cat $CHARFILE | grep -A 100 - | tail -n +2 | column -t -N input,output --output-separator ' | ' --separator ',' # Print a separator echo "" echo "--------------------------" echo "enter the input shortcode here:" # User input read -N $LENGTH INPUT # This can definately be simplifed, but it works fine LINENUMBER=$(cut -f 1 -d ',' -s $CHARFILE | grep -wn $INPUT | cut -d : -f 1) OUTPUT=$(cut -f 2 -d ',' -s $CHARFILE | head -$LINENUMBER | tail +$LINENUMBER) # Copy output to clipboard echo $OUTPUT | xclip -selection clipboard # Clear screen clear done