Skip to content

Instantly share code, notes, and snippets.

Wilhelm Schürmann wbsch

Block or report user

Report or block wbsch

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@wbsch
wbsch / on-launch_stopstarted.sh
Last active Jun 1, 2019
Taskwarrior hook that stops all active tasks when "task FILTER start" is run. PoC for https://bug.tasktools.org/browse/TW-1712
View on-launch_stopstarted.sh
#!/usr/bin/env bash
# Stops all previously active tasks on "task FILTER start"
#
# Only pending tasks are checked/stopped. If you really want to stop
# started tasks that are completed/deleted, remove the status:pending
# filter. Note that this will decrease performance, and should not
# be necessary.
tw_command=""
for i in "$@"; do
View on-add_annotate.py
#!/usr/bin/env python3
#
# Save as on-add_annotate.py in hooks directory, then:
# $ chmod +x ~/.task/hooks/on-add_annotate.py
#
# Anything after "annotate:" in a new task's description is added as an
# annotation:
# $ task add this is the description annotate:this is an annotation
import json
View on-modify_macro_expand.py
#!/usr/bin/env python
# Proof of Concept for expanding aliases in annotations.
#
# See https://bug.tasktools.org/browse/TW-77
import json
import re
import sys
old = json.loads(sys.stdin.readline())
new = json.loads(sys.stdin.readline())
@wbsch
wbsch / on-exit_git.py
Last active May 10, 2019
Proof of concept for a Taskwarrior on-exit hook that manages a git repository in ~/.task
View on-exit_git.py
#!/usr/bin/env python
#
# PoC: Manage a git repository in ~/.task that gets updated on changes.
# Only pending.data and completed.data are included by default.
# You can use "git add" to add whatever files you want to track in your
# task folder.
#
# Inspired by https://gist.github.com/Unode/9366218
#
# Works with any Taskwarrior version that supports hooks.
@wbsch
wbsch / on-add_inline_tags.py
Last active Sep 4, 2015
Proof of concept for a Taskwarrior on-add hook that allows for "inline tags" when adding tasks
View on-add_inline_tags.py
#!/usr/bin/env python
#
# PoC for "inline tags", as described in TW-1357
# https://bug.tasktools.org/browse/TW-1357
#
# Turns
# $ task add I saw @bob in the @garden
# Into the equivalent of
# $ task add I saw bob in the garden +bob +garden
@wbsch
wbsch / on-add_interactivity.py
Created Mar 21, 2015
Proof of concept for an interactive Taskwarrior hook. Hackish and potentially problematic, but it works.
View on-add_interactivity.py
#!/usr/bin/env python
#
# PoC: Interactive on-add hook
import json
import sys
t = json.loads(sys.stdin.readline())
real_stdin = open("/dev/tty", "r")
@wbsch
wbsch / on-modify.blocks_attr.py
Last active Jul 2, 2019
Taskwarrior hook script that adds a "blocks:" pseudo-attribute for adding/modifying tasks.
View on-modify.blocks_attr.py
#!/usr/bin/env python
#
# Adds the ability to add / modify tasks using a "blocks:" attribute,
# the opposite of "depends:".
#
# This script acts as an on-modify, on-add and on-launch hook at the same time.
#
### SETUP
# Save this file as
# ~/.task/hooks/on-modify.blocks_attr.py
@wbsch
wbsch / on-add.project_pwd.py
Created Mar 5, 2015
Example for an on-add hook that sets the project of newly added tasks to the current directory's name by default.
View on-add.project_pwd.py
#!/usr/bin/env python
import json
import os
import sys
t = json.loads(sys.stdin.readline())
if not 'project' in t:
t['project'] = os.path.basename(os.getcwd())
@wbsch
wbsch / on-modify.timetrack.py
Last active Jan 14, 2019
Time tracking hook script for Taskwarrior that outputs ledger timelog formatted data.
View on-modify.timetrack.py
#!/usr/bin/env python
#
# Writes task start/stop times to a timelog formatted file.
# You might need to adjust LEDGERFILE, or set the TIMELOG environment variable.
#
# Example reports, after using start/stop on a task:
# ledger -f /path/to/timelog.ledger print
# ledger -f /path/to/timelog.ledger register
#
# Projects, tags, and UUIDs are fully supported and queryable from ledger.
@wbsch
wbsch / filter.py
Last active Dec 17, 2015
Filter Taskwarrior tasks completed/deleted before a certain time. Reads from STDIN, outputs to STDOUT. Backups still recommended. More detailed documentation and options.
View filter.py
#!/usr/bin/env python
import re
import sys
import time
if len(sys.argv) < 3 or sys.argv[2] not in ["all", "completed", "deleted"]:
sys.stderr.write("Reads data in Taskwarrior format from STDIN and writes to STDOUT only those tasks completed/deleted after the supplied date.\n\n")
sys.stderr.write("### Usage: " + sys.argv[0] + " <Y-m-d> <all|completed|deleted>\n")
sys.stderr.write("Where \"all\" filters all tasks and \"completed\"/\"deleted\" only those with the status set to the keyword specified.\n\n")
sys.stderr.write("### Example usage:\n")
You can’t perform that action at this time.