Compare commits
No commits in common. "50315ed3aabb9fed64d351268bfc4f75cc8cd6d1" and "81337dc1b8066f12631cd66126fe87ceef67886a" have entirely different histories.
50315ed3aa
...
81337dc1b8
|
@ -47,6 +47,7 @@ if __name__ == "__main__":
|
|||
PERSONAL_THEME = 0
|
||||
Bar.addSectionAll(KeystoreProvider(theme=PERSONAL_THEME), BarGroupType.RIGHT)
|
||||
# Bar.addSectionAll(NotmuchUnreadProvider(dir='~/.mail/', theme=PERSONAL_THEME), BarGroupType.RIGHT)
|
||||
Bar.addSectionAll(TaskWarriorProvider(theme=PERSONAL_THEME), BarGroupType.RIGHT)
|
||||
# Bar.addSectionAll(TodoProvider(dir='~/.vdirsyncer/currentCalendars/', theme=PERSONAL_THEME), BarGroupType.RIGHT)
|
||||
|
||||
TIME_THEME = 6
|
||||
|
|
|
@ -14,6 +14,7 @@ import json
|
|||
import notmuch
|
||||
import mpd
|
||||
import random
|
||||
import taskw
|
||||
import math
|
||||
|
||||
coloredlogs.install(level='DEBUG', fmt='%(levelname)s %(message)s')
|
||||
|
@ -525,6 +526,39 @@ class NotmuchUnreadProvider(ColorCountsSection, InotifyUpdater):
|
|||
self.addPath(os.path.join(self.dir, '.notmuch', 'xapian'))
|
||||
|
||||
|
||||
class TaskWarriorProvider(StatefulSection, InotifyUpdater):
|
||||
ICON = ''
|
||||
NUMBER_STATES = 2
|
||||
DEFAULT_STATE = 1
|
||||
|
||||
|
||||
def __init__(self, theme=None):
|
||||
InotifyUpdater.__init__(self)
|
||||
StatefulSection.__init__(self, theme=theme)
|
||||
self.taskw = taskw.TaskWarrior()
|
||||
self.addPath(os.path.expanduser(self.taskw.config['data']['location']))
|
||||
|
||||
def fetcher(self):
|
||||
maxi = -math.inf
|
||||
total = 0
|
||||
for task in self.taskw.load_tasks('pending')['pending']:
|
||||
urgency = task['urgency']
|
||||
if urgency > maxi:
|
||||
maxi = urgency
|
||||
if urgency > 0:
|
||||
total += urgency
|
||||
t = Text()
|
||||
t.append(f"{maxi:.1f}")
|
||||
|
||||
if self.showTotal:
|
||||
t.append(f" | {total:.1f}")
|
||||
|
||||
return t
|
||||
|
||||
def onChangeState(self, state):
|
||||
self.showTotal = state >= 1
|
||||
|
||||
|
||||
class TodoProvider(ColorCountsSection, InotifyUpdater):
|
||||
# TODO OPT/UX Maybe we could get more data from the todoman python module
|
||||
# TODO OPT Specific callback for specific directory
|
||||
|
|
|
@ -9,5 +9,6 @@ pulsectl==18.8.0
|
|||
pyinotify==0.9.6
|
||||
python-mpd2==1.0.0
|
||||
python-uinput==0.11.2
|
||||
taskw==1.2.0
|
||||
yoke==0.1.1
|
||||
zeroconf==0.21.3
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
no-audio-display
|
|
@ -5,4 +5,4 @@
|
|||
cd ~/.dotfiles/config/automatrop
|
||||
echo 30000 | sudo tee /sys/class/backlight/intel_backlight/brightness
|
||||
xrandr --output HDMI-0 --brightness 1
|
||||
ansible-playbook playbooks/default.yml -e base16_scheme=solarized-dark --tags color --connection local
|
||||
ansible-playbook playbooks/default.yml -e base16_scheme=solarized-dark --tags color --inventory 'localhost'
|
||||
|
|
|
@ -5,4 +5,4 @@
|
|||
cd ~/.dotfiles/config/automatrop
|
||||
echo 30000 | sudo tee /sys/class/backlight/intel_backlight/brightness
|
||||
xrandr --output HDMI-0 --brightness 1
|
||||
ansible-playbook playbooks/default.yml -e base16_scheme=solarized-light --tags color --connection local
|
||||
ansible-playbook playbooks/default.yml -e base16_scheme=solarized-light --tags color --inventory 'localhost'
|
||||
|
|
|
@ -5,4 +5,4 @@
|
|||
cd ~/.dotfiles/config/automatrop
|
||||
echo 1 | sudo tee /sys/class/backlight/intel_backlight/brightness
|
||||
xrandr --output HDMI-0 --brightness 0.5
|
||||
ansible-playbook playbooks/default.yml -e base16_scheme=solarized-dark --tags color --connection local
|
||||
ansible-playbook playbooks/default.yml -e base16_scheme=solarized-dark --tags color --inventory 'localhost'
|
||||
|
|
|
@ -175,7 +175,8 @@ then
|
|||
i vdirsyncer # Synchronize DAV
|
||||
i khard # Contacts editor
|
||||
i khal # Calendar editor
|
||||
i todoman # Todo-list
|
||||
i task # Todo-list
|
||||
i timew # Time-tracker
|
||||
fi
|
||||
|
||||
|
||||
|
|
21
config/scripts/totask
Executable file
21
config/scripts/totask
Executable file
|
@ -0,0 +1,21 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import taskw
|
||||
import sys
|
||||
|
||||
tw = taskw.TaskWarrior()
|
||||
|
||||
total = 0
|
||||
number = 0
|
||||
statuses = set()
|
||||
for task in tw._get_task_objects(*sys.argv[1:], 'export'):
|
||||
statuses.add(task['status'])
|
||||
if task['status'] not in {'pending', 'waiting'}:
|
||||
continue
|
||||
urgency = task['urgency']
|
||||
if urgency <= 0:
|
||||
continue
|
||||
total += urgency
|
||||
number += 1
|
||||
|
||||
print(f"Σ{total:.3f} #{number}")
|
|
@ -42,7 +42,10 @@ direnv PARALLEL_HOME "$HOME/.cache/parallel"
|
|||
export PYTHONSTARTUP="$HOME/.config/pythonstartup.py"
|
||||
export SCREENRC="$HOME/.config/screenrc"
|
||||
export SQLITE_HISTFILE="$HOME/.cache/sqlite_history"
|
||||
export TASKRC="$HOME/.config/taskrc"
|
||||
direnv TASKDATA "$HOME/.config/task"
|
||||
direnv TERMINFO "$HOME/.config/terminfo"
|
||||
direnv TIMEWARRIORDB "$HOME/.config/timewarrior"
|
||||
export RXVT_SOCKET="$HOME/.cache/urxvtd-$HOST"
|
||||
export MYVIMRC="$HOME/.config/vim/vimrc"
|
||||
export VIMINIT="source $MYVIMRC"
|
||||
|
|
8
config/systemd/user/tasksync.service
Normal file
8
config/systemd/user/tasksync.service
Normal file
|
@ -0,0 +1,8 @@
|
|||
[Unit]
|
||||
Description=Taskwarrior synchronisation
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/usr/bin/task sync
|
||||
Environment=TASKRC=%h/.config/taskrc
|
||||
Environment=TASKDATA=%h/.config/task
|
10
config/systemd/user/tasksync.timer
Normal file
10
config/systemd/user/tasksync.timer
Normal file
|
@ -0,0 +1,10 @@
|
|||
[Unit]
|
||||
Description=Taskwarrior synchronisation timer
|
||||
|
||||
[Timer]
|
||||
OnBootSec=2m
|
||||
OnUnitActiveSec=5m
|
||||
Unit=tasksync.service
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
Loading…
Reference in a new issue