diff --git a/yad-todo.sh b/yad-todo.sh new file mode 100755 index 0000000..0342976 --- /dev/null +++ b/yad-todo.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +######################################################################## +# Using YAD to make a quick todo-txt entry GUI +# by Steven Saus (c)2021 +# Licensed under the MIT license +# +# First argument is the path to todo.txt if it's not already exported +# as TODO_FILE. Simply designed for quick entry. +# +######################################################################## + +ToDoTxtFile="$1" + +if [ ! -f "${ToDoTxtFile}" ];then + if [ -f "$TODO_FILE" ];then + ToDoTxtFile="$TODO_FILE" + else + exit 99 + fi +fi + +projects=$(cat "$ToDoTxtFile" | grep -e '\+' | awk -F '+' '{print $2}' | awk '{print $1}' | sort | uniq | tr '\n' '!' | sed 's/!/\\!/g') +contexts=$(cat "$ToDoTxtFile" | grep -e '\@' | awk -F '@' '{print $2}' | awk '{print $1}' | sort | uniq | tr '\n' '!' | sed 's/!/\\!/g') +projects=$(echo " \!${projects::-2}") +contexts=$(echo " \!${contexts::-2}") +priority=" \!A\!B\!C\!D\!E\!F\!G\!H\!I\!J\!K\!L\!M\!N\!O\!P\!Q\!R\!S\!T\!U\!V\!W\!X\!Y\!Z" +blankentry=" \!" + +OutString=$(yad --form --date-format="%Y:%m:%d" --width=400 --center --window-icon=gtk-info --borders 3 --field="Task" New_Task --field="Context:CBE" ${contexts} --field="Project:CBE" ${projects} --field="Priority:CBE" ${priority} --field="Due Date::DT" ) + + +NewTask=$(echo "$OutString" | awk -F '|' '{print $1}') +if [ "$NewTask" == "New_Task" ];then + echo "Task not edited; exiting" + exit 88 +fi +if [ "$NewTask" == "" ];then + echo "Empty task; exiting" + exit 88 +fi + +NewContext=$(echo "$OutString" | awk -F '|' '{print $2}') +if [ "$NewContext" != "" ];then + NewContext=$(echo "@$NewContext") +fi +NewProject=$(echo "$OutString" | awk -F '|' '{print $3}') +if [ "$NewProject" != "" ];then + NewProject=$(echo "+$NewProject") +fi +NewPriority=$(echo "$OutString" | awk -F '|' '{print $4}') +echo "$NewPriority" +if [ "$NewPriority" != "" ];then + NewPriority=$(echo "($NewPriority)") +fi +NewDate=$(echo "$OutString" | awk -F '|' '{print $5}') + +TaskString=$(printf "/usr/bin/todo-txt add \"%s %s %s %s %s\"" "$NewTask" "$NewContext" "$NewProject" "$NewPriority" "$NewDate") +echo "$TaskString"