Add taskwarrior config

This commit is contained in:
Şahin Akkaya 2023-12-25 23:24:05 +03:00
parent 23708bf23f
commit 2dd52a9fbf
2 changed files with 114 additions and 0 deletions

View File

@ -0,0 +1,67 @@
#!/usr/bin/env python3
'''Timewarrior on-modify hook to call timew on start,stop, done commands.'''
import json
import shlex
import subprocess
import sys
def retrieve_args_dict():
'''Read process arguments and store them in a dictionary.'''
process_args = sys.argv[1:]
dictionary = dict()
for process_arg in process_args:
splitted = process_arg.split(':')
if len(splitted) > 1:
key = splitted[0]
value = ''.join(splitted[1:])
dictionary[key] = value
return dictionary
def determine_timew_tags(task):
'''Determine which timew "tags" should be used for the task.'''
tags = list()
# Keys associated with one value
for key in ['uuid', 'project', 'description']:
if key in task:
tags.append('{}:{}'.format(key, task[key]))
# Keys associated with several values
if 'tags' in task:
for value in task['tags']:
tags.append('tag:{}'.format(value))
return tags
def generate_timew_command(cmd, tags):
'''Generate an input for subprocess.call.'''
tags_as_string = ' '.join([shlex.quote(tag) for tag in tags])
if cmd == 'done':
cmd = 'stop'
cmd_string = f'timew {cmd} {tags_as_string} :yes'
return shlex.split(cmd_string)
def main():
'''Main function of this module.'''
old_task = json.loads(sys.stdin.readline())
new_task = json.loads(sys.stdin.readline())
args = retrieve_args_dict()
# Do something.
feedback = None
if 'api' in args: # Only do something for known API.
if args['api'] in ['2']: # APIs that give us a 'command' key.
cmd = args['command']
if cmd in ['start', 'stop', 'done']: # Only do something on 'start', 'stop' or 'done'
timew_tags = determine_timew_tags(new_task)
timew_cmd = generate_timew_command(cmd, timew_tags)
subprocess.call(timew_cmd)
# Generate output as task expects it.
print(json.dumps(new_task))
if feedback is not None:
print(feedback)
sys.exit(0)
if __name__ == "__main__":
main()

47
.config/task/taskrc Normal file
View File

@ -0,0 +1,47 @@
# [Created by task 2.6.2 12/23/2023 17:46:47]
# Taskwarrior program configuration file.
# For more documentation, see https://taskwarrior.org or try 'man task', 'man task-color',
# 'man task-sync' or 'man taskrc'
# Here is an example of entries that use the default, override and blank values
# variable=foo -- By specifying a value, this overrides the default
# variable= -- By specifying no value, this means no default
# #variable=foo -- By commenting out the line, or deleting it, this uses the default
# You can also refence environment variables:
# variable=$HOME/task
# variable=$VALUE
# Use the command 'task show' to see all defaults and overrides
# data.location=/home/sahin/.task
# To use the default location of the XDG directories,
# move this configuration file from ~/.taskrc to ~/.config/task/taskrc and uncomment below
# Files
include holidays.tr-TR.rc
data.location=~/.local/share/task
hooks.location=~/.config/task/hooks
# Color theme (uncomment one to use)
include solarized-dark-256.theme
#include dark-16.theme
#include light-16.theme
#include light-256.theme
#include dark-256.theme
#include dark-red-256.theme
#include dark-green-256.theme
#include dark-blue-256.theme
#include dark-violets-256.theme
#include dark-yellow-green.theme
#include dark-gray-256.theme
#include dark-gray-blue-256.theme
#include solarized-light-256.theme
#include no-color.theme
news.version=2.6.0
#
color.calendar.holiday=black on yellow