scripts/rofi-task.sh

85 lines
2.5 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env sh
# From Kehet
## https://gist.github.com/Kehet/5ba8a530e52ea3a0ae251d756faef680
# Vars {{{
## Current tasks temp file
readonly TASKW_CURRENT_LIST="/tmp/rofi-task.sh-current.tasks"
## Rofi colors
black="#000000"
blue="#0094cc"
# }}}
is_task_running() { # {{{
if task active >/dev/null 2>&1; then
return_is_task_running="0"
else
return_is_task_running="1"
fi
return "${return_is_task_running:=/dev/null}"
}
# }}}
display_current_task() { # {{{
## List active task(s) in a temp file
touch -- "${TASKW_CURRENT_LIST}"
printf '%b\n\n' " Choose a task to STOP" >> "${TASKW_CURRENT_LIST}"
task +ACTIVE export | jq -r 'sort_by( -.urgency )[] | [ (.id|tostring), .description ] | join(" ")' >> "${TASKW_CURRENT_LIST}"
## Display active tasks list and get title from the choosen one
TITLE=$(rofi -location 2 -lines 5 -no-auto-select -i -dmenu -p "RUNNING task(s)" -color-enabled -color-normal "${blue},${black},${blue},${black},${blue}" -color-window "${blue},${blue}" < "${TASKW_CURRENT_LIST}" |
cut --delimiter=" " --field=2)
ID=$(task "${TITLE}" simpleid | grep --after-context=2 -- ID | tail --lines=1 || return 0)
## Remove temp file
rm --force -- "${TASKW_CURRENT_LIST}"
## If no task was selected (empty var) then exit
[ -z "${TITLE}" ] && echo "Cancelled." && exit 0
## If no ID was found (empty var) then exit
[ -z "${ID}" ] && echo "Cancelled." && exit 0
## Kill any pomodorrior process running for the current task
pkill --full -- "${TITLE}"
## Also kill any "sleep 60" remaining process
pkill --full -- "sleep 60"
## Stop the selected task and exit
task "${ID}" stop >/dev/null && exit 0
}
# }}}
select_task() { # {{{
## Display pending tasks list and get title from the choosen one
TITLE=$(task status:pending export | jq -r 'sort_by( -.urgency )[] | [ (.id|tostring), .description ] | join(" ")' | sort --numeric-sort --reverse |
rofi -location 2 -no-auto-select -i -dmenu -p "Task" -color-enabled -color-normal "${black},${blue},${black},${blue},${black}" -color-window "${black},${black}" |
cut --delimiter=" " --field=2)
[ -z "${TITLE}" ] && echo "Cancelled." && exit 0
## Start task with pomodorrior script (task end after 25minutes)
pomodorrior "${TITLE}" && exit 0
}
# }}}
main() { # {{{
is_task_running \
&& display_current_task \
&& exit 0
select_task \
&& exit 0
}
# }}}
main
exit 255