#!/bin/bash ############################################################################## # # Patootie # Using YAD and toot to have a GUI for sending a quick toot (with possible # images, content warnings, etc) # YAD = https://sourceforge.net/projects/yad-dialog/ # toot = https://toot.bezdomni.net/ # (c) Steven Saus 2023 # Licensed under the MIT license # ############################################################################## # Patootie uses the environment variable TOOTACCT to specify the tooting account # otherwise it uses whichever one is currently active in toot. # TODO - Start with image select, drop? # move sections to functions so I can swap order binary=$(which toot) if [ ! -f "${binary}" ];then echo "Exiting -- toot binary is not on \$PATH" 1>&2 exit 99 fi ANSWER=$(yad --form --separator="±" --item-separator="," --columns=2 --title "patootie" \ --field="What to toot?:TXT" "" \ --field="ContentWarning:CBE" none,discrimination,bigot,uspol,medicine,violence,reproduction,healthcare,LGBTQIA,climate,SocialMedia \ --field="Attachment?:CHK" \ --item-separator="," --button=Cancel:99 --button=Post:0) TootText=$(echo "${ANSWER}" | awk -F '±' '{print $1}' | sed -e 's/"/“/g' -e "s/'/’/g" -e 's/ -- /—/g' -e 's/ — /—/g' -e 's/ - /—/g' -e 's/ – /—/g' -e 's/ – /—/g') ContentWarning=$(echo "${ANSWER}" | awk -F '±' '{print $2}' | sed -e 's/"/“/g' -e "s/'/’/g" -e 's/ -- /—/g' -e 's/(/—/g' -e 's/)/—/g' -e 's/ — /—/g' -e 's/ - /—/g' -e 's/ – /—/g' -e 's/ – /—/g') if [ "$ContentWarning" == "none" ];then ContentWarning="" fi # to see if need to select image Need_Image=$(echo "$ANSWER" | awk -F '±' '{print $3}') if [ "${Need_Image}" == "TRUE" ];then IMAGE_FILE=$(yad --title "Select image to add" --width=500 --height=400 --file --file-filter "Graphic files | *.jpg *.png *.webp *.jpeg") if [ ! -f "${IMAGE_FILE}" ];then SendImage="" else if [ -f /usr/bin/convert ];then SendImage=$(mktemp --suffix=.png) /usr/bin/convert -resize 800x512\! "$IMAGE_FILE" "$SendImage" else filename=$(basename -- "$IMAGE_FILE") extension="${filename##*.}" SendImage=$(mktemp --suffix=.${extension}) cp "${IMAGE_FILE}" "${SendImage}" fi ALT_TEXT=$(yad --window-icon=musique --on-top --skip-taskbar --image-on-top --borders=5 --title "Choose your alt text" --image "${SendImage}" --form --separator="" --item-separator="," --text-align=center --field="Alt text to use?:TXT" "I was too lazy to put alt text" --item-separator="," --separator="") echo "$ALT_TEXT" if [ ! -z "$ALT_TEXT" ];then # parens changed here because otherwise eval chokes AltText=$(echo "${ALT_TEXT}" | sed -e 's/"/“/g' -e "s/'/’/g" -e 's/ -- /—/g' -e 's/(/—/g' -e 's/)/—/g' -e 's/ — /—/g' -e 's/ - /—/g' -e 's/ – /—/g' -e 's/ – /—/g') AltText=" --description \"${AltText}\"" else AltText="" fi echo "$AltText" # now adding the beginning part to the SendImage string for binary usage SendImage=" --media ${SendImage}" fi fi if [ ! -z "$ContentWarning" ];then if [ -f "$SendImage" ];then #if there is an image, and it's a CW'd post, the image should be sensitive ContentWarning=$(echo "--sensitive -p \"${ContentWarning}\"") else ContentWarning=$(echo "-p \"${ContentWarning}\"") fi fi if [ -z "$TOOTACCT" ];then echo "hi" postme=$(printf "%s post \"%s\" %s %s --quiet" "$binary" "${TootText}" "${SendImage}" "${ContentWarning}") echo "${postme}" echo "$postme" echo ${postme} #eval "${postme}" else postme=$(printf "echo -e \"${TootText}\" | %s post %s %s %s -u %s --quiet" "$binary" "${SendImage}" "${AltText}" "${ContentWarning}" "${TOOTACCT}") echo ${postme} eval "${postme}" fi if [ -f "$SendImage" ];then rm -rf "${SendImage}" fi