summaryrefslogtreecommitdiff
path: root/scripts/todo
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/todo')
-rw-r--r--scripts/todo28
1 files changed, 28 insertions, 0 deletions
diff --git a/scripts/todo b/scripts/todo
new file mode 100644
index 0000000..17d7415
--- /dev/null
+++ b/scripts/todo
@@ -0,0 +1,28 @@
+#!/bin/sh
+#
+# Write/remove a task to do later.
+#
+# Select an existing entry to remove it from the file, or type a new entry to
+# add it.
+#
+
+file="$HOME/.todo"
+touch "$file"
+height=$(wc -l "$file" | awk '{print $1}')
+prompt="Add/delete a task: "
+
+cmd=$(dmenu -l "$height" -p "$prompt" "$@" < "$file")
+while [ -n "$cmd" ]; do
+ if grep -q "^$cmd\$" "$file"; then
+ grep -v "^$cmd\$" "$file" > "$file.$$"
+ mv "$file.$$" "$file"
+ height=$(( height - 1 ))
+ else
+ echo "$cmd" >> "$file"
+ height=$(( height + 1 ))
+ fi
+
+ cmd=$(dmenu -l "$height" -p "$prompt" "$@" < "$file")
+done
+
+exit 0