Wunderlist 2 sur votre bureau avec GeekTool

Edit 1: La méthode décrite ci-dessous ne fonctionne plus, l’application Wunderlist 3 pour Mac semble ne plus utiliser la base SQLite pour stocker les rappels

Edit 2: Wunderlist a publié son API et si vous utilisez Ubersicht vous pouvez utiliser ce widget de NikitaBazhenov : UbersichtWunderlistTasks

Pour le moment il n’existe pas d’API pour Wunderlist qui permettrait de réceptionner les données pour les traiter dans un script, la seule solution pour l’instant est de récupérer les informations de la base de données Sqlite locale qu’utilise le programme Wunderlist sous Mac OsX.

Cette astuce implique que vous ayez Wunderlist 2 d’installer sur votre Mac et qu’il soit lancé pour effectuer la synchronisation des données locales avec le serveur de Wunderlist.

Vous pouvez adapter le script à votre convenance pour changer les couleurs de la liste ou inverser le point si vous souhaitez qu’elle soit alignée au fer à droite.
Le script affiche la liste des tâches par catégories, la date d’échéance, les sous-tâches et si celle-ci est prioritaire.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/bin/bash

WUNDERDB=WKModel.sqlite
cd ~/Library/Containers/com.wunderkinder.wunderlistdesktop/Data/Library/Application\ Support/Wunderlist/

function printTask(){
TASK="$1"
task_name=$(echo $TASK | cut -d '|' -f 2)
task_id=$(echo $TASK | cut -d '|' -f 1)
task_date=$(echo $TASK | cut -d '|' -f 4)

# DATE
if [[ "$task_date" =~ [0-9]+ ]]; then due_date="\033[36m ("$( date -r$(($task_date+978346800)) +"%d/%m %H:%M" )")\033[0m "; else due_date=""; fi

# NAME
if [[ `echo $TASK | cut -d '|' -f 3` -eq 1 ]]; then
# STARRED
echo -e `tput setab 0` '\033[1;31m• \033[0m' `tput setab 9` $task_name "$due_date"
else
# NOT STARRED
echo -e `tput setab 9` '• ' `tput setab 9` $task_name "$due_date"
fi

# SUBTASK
sqlite3 $WUNDERDB "select Z_PK, ZTITLE, ZSTARRED, ZPARENTTASK from ZRESOURCE where ZPARENTTASK="$task_id" ORDER BY ZORDERINDEXDOUBLE" | while read SUBTASK; do
subtask_name=$(echo $SUBTASK | cut -d '|' -f 2)
echo " › "$subtask_name
done
}

# BOITE DE RECEPTION
tput setab 0; echo -e "\033[1;36m BOÎTE DE RECEPTION \033[0m"; tput setab 9;
sqlite3 $WUNDERDB "select Z_PK, ZTITLE, ZSTARRED, ZDUEDATE from ZRESOURCE where ZTASKLIST isnull and ZCOMPLETEDAT isnull and ZOWNER1 isnull and ZPARENTTASK isnull ORDER BY ZORDERINDEXDOUBLE" | while read TASK; do
printTask "$TASK"
done

# CATEGORIES
sqlite3 $WUNDERDB "select Z_PK, ZTITLE from ZRESOURCE where ZOWNER1=1;" | while read CAT; do

the_name=`echo -e "$CAT" | cut -d '|' -f 2 | tr '[:lower:]' '[:upper:]'`
the_id=`echo $CAT | cut -d '|' -f 1`
i=0

sqlite3 $WUNDERDB "select Z_PK, ZTITLE, ZSTARRED, ZDUEDATE from ZRESOURCE where ZTASKLIST="$the_id" and ZCOMPLETEDAT isnull ORDER BY ZORDERINDEXDOUBLE" | while read TASK; do
i=$((i+1))
if [[ $i -eq 1 ]]; then echo -e "\n"; tput setab 0; echo -e "\033[1;36m $the_name \033[0m"; tput setab 9; fi
printTask "$TASK"
done
done