#!/usr/bin/env bash ####################################################################### # (C) Copyright Armaan Bhojwani, 2020 # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . ######################################################################## # Merge both global and local charfiles CHARDIR=$HOME/.cache/charsel if [[ ! -d $CHARDIR ]] then mkdir $CHARDIR/ elif [[ ! "$(ls -A $CHARDIR)" ]] then cp -rf /usr/share/charsel/- $CHARDIR/ cp -rf $HOME/.local/share/charsel/- $CHARDIR/ fi # Check for xclip if [[ ! -f "$(which xclip)" ]] then echo "Please install xclip." exit 1 fi # Check for user inputs if [[ $1 == "list" \ || $1 == "-l" \ || $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 # Check if given charfile exists if [[ ! -f $CHARFILE ]] then echo "Please enter a valid charfile." charsel list exit 1 fi # Define length of shortcode LENGTH=$(cat $CHARFILE \ | cut -f 1 -d ',' -s \ | wc -L \ | cut -b 1) clear # Main program while true do # Format output echo "*---------*---------------*" echo "| CHARSEL |" $1 echo "*---------*---------------*" echo "" cat $CHARFILE \ | sed -e '/^[ \t]*#/d' \ | grep -A 100 - \ | tail -n +2 \ | column -t -N input,output --output-separator ' | ' --separator ',' echo "" echo "*-------------------------*" echo "| previous shorcode:" $INPUT echo "| previous output: " $OUTPUT echo "*-------------------------*" # User input read -p "| input shortcode: " -N $LENGTH INPUT # This can definately be simplifed, but it works fine # Finds line number of shortcode LINENUMBER=$(cut -f 1 -d ',' -s $CHARFILE \ | grep -wn $INPUT \ | cut -d : -f 1) # Outputs charachter selected above OUTPUT=$(cut -f 2 -d ',' -s $CHARFILE \ | head -$LINENUMBER \ | tail +$LINENUMBER) # Check to see if the shortcode actually exists if [[ $(cut -f 1 -d ',' -s $CHARFILE \ | grep -wnc $INPUT) == "0" ]] then OUTPUT="" fi # Copy output to clipboard echo $OUTPUT \ | xclip -selection clipboard clear done