Script started on 2019-04-25 21:52:12+02:00 [TERM="rxvt-unicode-256color" TTY="/dev/pts/8" COLUMNS="191" LINES="54"]
]4;0;rgb:27/28/22\]4;1;rgb:f9/26/72\]4;2;rgb:a6/e2/2e\]4;3;rgb:f4/bf/75\]4;4;rgb:66/d9/ef\]4;5;rgb:ae/81/ff\]4;6;rgb:a1/ef/e4\]4;7;rgb:f8/f8/f2\]4;8;rgb:75/71/5e\]4;9;rgb:f9/26/72\]4;10;rgb:a6/e2/2e\]4;11;rgb:f4/bf/75\]4;12;rgb:66/d9/ef\]4;13;rgb:ae/81/ff\]4;14;rgb:a1/ef/e4\]4;15;rgb:f9/f8/f5\]4;16;rgb:fd/97/1f\]4;17;rgb:cc/66/33\]4;18;rgb:38/38/30\]4;19;rgb:49/48/3e\]4;20;rgb:a5/9f/85\]4;21;rgb:f5/f4/f1\]10;rgb:f8/f8/f2\]11;rgb:27/28/22\]708;rgb:27/28/22\]12;7\%                                                                                                                                                                                              
 

 geoffrey  curacao  config  master  78✎  8+    1.67  [6 q[?2004hlala .matlab/steam/  sc    crscripts/scripts/[2 q[?2004l

totale 319K
drwxr-xr-x  2 geoffrey geoffrey   62 2019-04-24 07:25:17 .
drwxr-xr-x 22 geoffrey geoffrey   35 2019-04-25 21:52:12 ..
-rwxr-xr-x  1 geoffrey geoffrey 6,1K 2018-10-06 10:31:18 archive
-rwxr-xr-x  1 geoffrey geoffrey  126 2018-10-06 10:31:18 arch-kexec
-rwxr-xr-x  1 geoffrey geoffrey   97 2019-04-14 19:40:55 beep
-rwxr-xr-x  1 geoffrey geoffrey 2,1K 2019-04-12 23:58:54 changeColors
-rwxr-xr-x  1 geoffrey geoffrey  462 2018-10-06 10:31:18 cleandev
-rwxr-xr-x  1 geoffrey geoffrey 7,2K 2018-10-06 10:31:18 compressPictureMovies
-rwxr-xr-x  1 geoffrey geoffrey  309 2018-10-06 10:31:18 cudarun
-rwxr-xr-x  1 geoffrey geoffrey  232 2018-10-06 10:31:18 dafont
-rwxr-xr-x  1 geoffrey geoffrey  14K 2018-10-06 10:31:18 debloc
-rwxr-xr-x  1 geoffrey geoffrey  248 2018-10-06 10:31:18 docker-image-childs
-rwxr-xr-x  1 geoffrey geoffrey  127 2018-10-06 10:31:18 docker-rm
-rwxr-xr-x  1 geoffrey geoffrey 6,9K 2018-10-06 10:31:18 dotfiles
-rwxr-xr-x  1 geoffrey geoffrey  309 2019-04-24 07:25:17 dummy
-rwxr-xr-x  1 geoffrey geoffrey  284 2018-10-06 10:31:18 emergency-clean
-rwxr-xr-x  1 geoffrey geoffrey  277 2018-10-27 10:14:28 gitCheckoutModes
-rwxr-xr-x  1 geoffrey geoffrey 1,4K 2018-10-06 10:31:18 gitghost
-rw-r--r--  1 geoffrey geoffrey   17 2018-10-06 10:31:18 .gitignore
-rwxr-xr-x  1 geoffrey geoffrey  245 2018-10-06 10:31:18 heavyPackages
-rwxr-xr-x  1 geoffrey geoffrey 1,3K 2018-10-06 10:31:18 html2pdf
-rwxr-xr-x  1 geoffrey geoffrey 2,6K 2018-10-06 10:51:09 install-arch
-rwxr-xr-x  1 geoffrey geoffrey 7,8K 2019-02-23 12:47:23 install-prefs
-rwxr-xr-x  1 geoffrey geoffrey  943 2018-10-06 10:31:18 install-termux
-rwxr-xr-x  1 geoffrey geoffrey  412 2018-10-06 10:31:18 install-wsl
-rwxr-xr-x  1 geoffrey geoffrey  229 2018-11-06 23:46:34 logstasync
-rwxr-xr-x  1 geoffrey geoffrey 2,2K 2018-10-06 10:31:18 lorem
-rwxr-xr-x  1 geoffrey geoffrey  14K 2019-04-22 18:42:25 machines
-rwxr-xr-x  1 geoffrey geoffrey 4,1K 2018-10-06 10:31:18 md2html
-rwxr-xr-x  1 geoffrey geoffrey  19K 2019-01-09 07:31:54 mel
-rwxr-xr-x  1 geoffrey geoffrey 8,2K 2018-10-17 14:03:15 melConf
-rwxr-xr-x  1 geoffrey geoffrey 1012 2018-10-06 10:31:18 musiqueBof
-rwxr-xr-x  1 geoffrey geoffrey   71 2018-10-06 10:31:18 newestFile
-rwxr-xr-x  1 geoffrey geoffrey 1,7K 2018-11-14 13:16:34 o
-rwxr-xr-x  1 geoffrey geoffrey   71 2018-10-06 10:31:18 oldestFile
-rwxr-xr-x  1 geoffrey geoffrey 3,9K 2019-01-12 12:52:48 optimize
-rw-r--r--  1 geoffrey geoffrey  558 2018-10-06 10:31:18 package.json
-rw-r--r--  1 geoffrey geoffrey  45K 2018-10-06 10:31:18 package-lock.json
-rwxr-xr-x  1 geoffrey geoffrey  175 2018-10-30 13:23:15 pdfpages
-rwxr-xr-x  1 geoffrey geoffrey 1,1K 2018-10-06 10:31:18 pdfrename
-rwxr-xr-x  1 geoffrey geoffrey 2,3K 2018-10-06 10:31:18 proxy
-rwxr-xr-x  1 geoffrey geoffrey 2,3K 2018-11-07 19:17:02 pushToTalk
-rwxr-xr-x  1 geoffrey geoffrey  312 2018-12-15 15:08:25 pw
-rwxr-xr-x  1 geoffrey geoffrey  130 2018-10-10 08:14:35 rankmirrors
-rwxr-xr-x  1 geoffrey geoffrey  170 2018-10-06 10:31:18 remcrlf
-rwxr-xr-x  1 geoffrey geoffrey  410 2018-10-06 10:31:18 rep
-rwxr-xr-x  1 geoffrey geoffrey 1,9K 2018-11-01 17:47:31 replayGain
-rwxr-xr-x  1 geoffrey geoffrey  563 2018-11-17 10:50:26 rmf
-rwxr-xr-x  1 geoffrey geoffrey   61 2018-10-06 10:31:18 rms
-rwxr-xr-x  1 geoffrey geoffrey  695 2018-10-06 10:31:18 sedrename
-rwxr-xr-x  1 geoffrey geoffrey  206 2018-10-11 23:28:40 showKeyboardLayout
-rwxr-xr-x  1 geoffrey geoffrey  486 2018-10-18 21:13:10 syncthingRestore
-rwxr-xr-x  1 geoffrey geoffrey  431 2018-10-06 10:31:18 tagCreatorPhotos
-rwxr-xr-x  1 geoffrey geoffrey 1,6K 2019-03-20 22:12:02 ter
-rwxr-xr-x  1 geoffrey geoffrey  415 2018-12-05 14:47:41 totask
-rwxr-xr-x  1 geoffrey geoffrey   45 2019-04-12 22:38:27 tracefiles
-rwxr-xr-x  1 geoffrey geoffrey  486 2018-10-06 10:31:18 transfer
-rwxr-xr-x  1 geoffrey geoffrey  614 2018-11-24 13:41:52 tunnel
-rwxr-xr-x  1 geoffrey geoffrey  890 2018-12-10 17:02:32 unziptree
-rwxr-xr-x  1 geoffrey geoffrey 4,3K 2019-01-12 21:04:37 updateCompressedMusic
-rwxr-xr-x  1 geoffrey geoffrey   66 2018-10-06 10:31:18 updatedate
-rwxr-xr-x  1 geoffrey geoffrey  288 2018-10-06 10:31:18 vidcmp
%                                                                                                                                                                                              
 

 geoffrey  curacao  config  master  78✎  8+    47ms 867µs  1.71  [6 q[?2004hcd config/cd shell/ scripts/crscripts/scripts/[2 q[?2004l

%                                                                                                                                                                                              
 

 geoffrey  curacao  scripts  master  78✎  8+    36ms 195µs  1.71  [6 q[?2004h./a.out./[?2004l

%                                                                                                                                                                                              
 

 geoffrey  curacao  scripts  master  78✎  8+    SIGINT  1.71  [6 q[?2004hvi .config/systemd/user/melfetch.servicevi c                                    .config/systemd/user/melfetch.serviced                                    dodo

docker-image-childs*  docker-rm*            dotfiles*           
vi do  SIGINT  1.71  [?2004l

%                                                                                                                                                                                              
 

 geoffrey  curacao  scripts  master  78✎  8+    SIGINT  1.69  [6 q[?2004h./a.out././downloadLastCSV.pydoot               ./dotfiles ./dotfiles iinnssttaalll[2 q[?2004l

[ERROR] /home/geoffrey/.config/llpp.conf already exists, but is not a symbolic link
[ERROR] /home/geoffrey/.config/user-dirs.dirs already exists, but is not a symbolic link
%                                                                                                                                                                                              
 

 geoffrey  curacao  scripts  master  78✎  8+    627ms 368µs  1.67  [6 q[?2004hcd scripts/cd ~/.config/~//..ccoon~/.config/~/.config/ssccr~/.config/scripts/~/.config/scripts/[2 q[?2004l

%                                                                                                                                                                                              
 

 geoffrey  curacao  scripts  master  78✎  8+    38ms 269µs  1.67  [6 q[?2004hla scripts/la         [2 q[?2004l

totale 319K
drwxr-xr-x  2 geoffrey geoffrey   62 2019-04-24 07:25:17 .
drwxr-xr-x 22 geoffrey geoffrey   35 2019-04-25 21:52:12 ..
-rwxr-xr-x  1 geoffrey geoffrey 6,1K 2018-10-06 10:31:18 archive
-rwxr-xr-x  1 geoffrey geoffrey  126 2018-10-06 10:31:18 arch-kexec
-rwxr-xr-x  1 geoffrey geoffrey   97 2019-04-14 19:40:55 beep
-rwxr-xr-x  1 geoffrey geoffrey 2,1K 2019-04-12 23:58:54 changeColors
-rwxr-xr-x  1 geoffrey geoffrey  462 2018-10-06 10:31:18 cleandev
-rwxr-xr-x  1 geoffrey geoffrey 7,2K 2018-10-06 10:31:18 compressPictureMovies
-rwxr-xr-x  1 geoffrey geoffrey  309 2018-10-06 10:31:18 cudarun
-rwxr-xr-x  1 geoffrey geoffrey  232 2018-10-06 10:31:18 dafont
-rwxr-xr-x  1 geoffrey geoffrey  14K 2018-10-06 10:31:18 debloc
-rwxr-xr-x  1 geoffrey geoffrey  248 2018-10-06 10:31:18 docker-image-childs
-rwxr-xr-x  1 geoffrey geoffrey  127 2018-10-06 10:31:18 docker-rm
-rwxr-xr-x  1 geoffrey geoffrey 6,9K 2018-10-06 10:31:18 dotfiles
-rwxr-xr-x  1 geoffrey geoffrey  309 2019-04-24 07:25:17 dummy
-rwxr-xr-x  1 geoffrey geoffrey  284 2018-10-06 10:31:18 emergency-clean
-rwxr-xr-x  1 geoffrey geoffrey  277 2018-10-27 10:14:28 gitCheckoutModes
-rwxr-xr-x  1 geoffrey geoffrey 1,4K 2018-10-06 10:31:18 gitghost
-rw-r--r--  1 geoffrey geoffrey   17 2018-10-06 10:31:18 .gitignore
-rwxr-xr-x  1 geoffrey geoffrey  245 2018-10-06 10:31:18 heavyPackages
-rwxr-xr-x  1 geoffrey geoffrey 1,3K 2018-10-06 10:31:18 html2pdf
-rwxr-xr-x  1 geoffrey geoffrey 2,6K 2018-10-06 10:51:09 install-arch
-rwxr-xr-x  1 geoffrey geoffrey 7,8K 2019-02-23 12:47:23 install-prefs
-rwxr-xr-x  1 geoffrey geoffrey  943 2018-10-06 10:31:18 install-termux
-rwxr-xr-x  1 geoffrey geoffrey  412 2018-10-06 10:31:18 install-wsl
-rwxr-xr-x  1 geoffrey geoffrey  229 2018-11-06 23:46:34 logstasync
-rwxr-xr-x  1 geoffrey geoffrey 2,2K 2018-10-06 10:31:18 lorem
-rwxr-xr-x  1 geoffrey geoffrey  14K 2019-04-22 18:42:25 machines
-rwxr-xr-x  1 geoffrey geoffrey 4,1K 2018-10-06 10:31:18 md2html
-rwxr-xr-x  1 geoffrey geoffrey  19K 2019-01-09 07:31:54 mel
-rwxr-xr-x  1 geoffrey geoffrey 8,2K 2018-10-17 14:03:15 melConf
-rwxr-xr-x  1 geoffrey geoffrey 1012 2018-10-06 10:31:18 musiqueBof
-rwxr-xr-x  1 geoffrey geoffrey   71 2018-10-06 10:31:18 newestFile
-rwxr-xr-x  1 geoffrey geoffrey 1,7K 2018-11-14 13:16:34 o
-rwxr-xr-x  1 geoffrey geoffrey   71 2018-10-06 10:31:18 oldestFile
-rwxr-xr-x  1 geoffrey geoffrey 3,9K 2019-01-12 12:52:48 optimize
-rw-r--r--  1 geoffrey geoffrey  558 2018-10-06 10:31:18 package.json
-rw-r--r--  1 geoffrey geoffrey  45K 2018-10-06 10:31:18 package-lock.json
-rwxr-xr-x  1 geoffrey geoffrey  175 2018-10-30 13:23:15 pdfpages
-rwxr-xr-x  1 geoffrey geoffrey 1,1K 2018-10-06 10:31:18 pdfrename
-rwxr-xr-x  1 geoffrey geoffrey 2,3K 2018-10-06 10:31:18 proxy
-rwxr-xr-x  1 geoffrey geoffrey 2,3K 2018-11-07 19:17:02 pushToTalk
-rwxr-xr-x  1 geoffrey geoffrey  312 2018-12-15 15:08:25 pw
-rwxr-xr-x  1 geoffrey geoffrey  130 2018-10-10 08:14:35 rankmirrors
-rwxr-xr-x  1 geoffrey geoffrey  170 2018-10-06 10:31:18 remcrlf
-rwxr-xr-x  1 geoffrey geoffrey  410 2018-10-06 10:31:18 rep
-rwxr-xr-x  1 geoffrey geoffrey 1,9K 2018-11-01 17:47:31 replayGain
-rwxr-xr-x  1 geoffrey geoffrey  563 2018-11-17 10:50:26 rmf
-rwxr-xr-x  1 geoffrey geoffrey   61 2018-10-06 10:31:18 rms
-rwxr-xr-x  1 geoffrey geoffrey  695 2018-10-06 10:31:18 sedrename
-rwxr-xr-x  1 geoffrey geoffrey  206 2018-10-11 23:28:40 showKeyboardLayout
-rwxr-xr-x  1 geoffrey geoffrey  486 2018-10-18 21:13:10 syncthingRestore
-rwxr-xr-x  1 geoffrey geoffrey  431 2018-10-06 10:31:18 tagCreatorPhotos
-rwxr-xr-x  1 geoffrey geoffrey 1,6K 2019-03-20 22:12:02 ter
-rwxr-xr-x  1 geoffrey geoffrey  415 2018-12-05 14:47:41 totask
-rwxr-xr-x  1 geoffrey geoffrey   45 2019-04-12 22:38:27 tracefiles
-rwxr-xr-x  1 geoffrey geoffrey  486 2018-10-06 10:31:18 transfer
-rwxr-xr-x  1 geoffrey geoffrey  614 2018-11-24 13:41:52 tunnel
-rwxr-xr-x  1 geoffrey geoffrey  890 2018-12-10 17:02:32 unziptree
-rwxr-xr-x  1 geoffrey geoffrey 4,3K 2019-01-12 21:04:37 updateCompressedMusic
-rwxr-xr-x  1 geoffrey geoffrey   66 2018-10-06 10:31:18 updatedate
-rwxr-xr-x  1 geoffrey geoffrey  288 2018-10-06 10:31:18 vidcmp
%                                                                                                                                                                                              
 

 geoffrey  curacao  scripts  master  78✎  8+    18ms 501µs  1.65  [6 q[?2004hvi .config/systemd/user/melfetch.servicevi machines                             me      melmel[2 q[?2004l

[?1049h=[?2004h(B[?25h[?25l]112[2 q]112[2 q[?25h[?25l[?1004h]777;focus;on[?25h[?25l[?25h[?25l(B mel (B(B                                                                                                                                                                              (B(B buffers 
(B1   (B#!/usr/bin/env python3
(B  1 (B 
(B  2 (B"(B""
(B  3 (BM(Beh mail client
(B  4 (BA(B dumb Python scripts that leverages notmuch, mbsync, and msmtp
(B  5 (Bt(Bo become a fully-functional extremly-opinonated mail client.
(B  6 (B"(B""
(B  7 (B 
(B  8 #(B (BTODO(B Features
(B  9 (B (B   (B# (BTODO(B Implement initial command set
(B 10 (B (B   (B# (BTODO(B Lockfiles for write operations on mail files (mbsync, tags→maildir operations)
(B 11 (B (B   (B# (BTODO(B OPTI Lockfile per account and process everything in parallel (if implemented, this
(B 12 (B (B   (B# should be optional since while it may speed up the mail fetching process, its multi-threading
(B 13 (B (B   (B# nature would cause a lot of cache flushes and be not very efficient on battery)
(B 14 (B (B   (B# (BTODO(B Handle true character width
(B 15 (B (B   (B# (BTODO(B IMAP IDLE watches?
(B 16 (B (B   (B# (BTODO(B GPG
(B 17 #(B (BTODO(B (only then) Refactor
(B 18 (B (B   (B# (BTODO(B OOP-based
(B 19 (B (B   (B# (BTODO(B Merge file with melConf
(B 20 (B 
(B 21 #(B DEBUG Small perf profiler
(B 22 (Bi(Bmport(B time
(B 23 (Bp(Berf_dict = (Bdict(B()
(B 24 (Bp(Berf_last = time.perf_counter()
(B 25 (Bd(Bef(B (Bperfstep(B(name):
(B 26 (B (B   t = time.perf_counter()
(B 27 (B (B   (Bglobal(B perf_last
(B 28 (B (B   (Bglobal(B perf_dict
(B 29 (B (B   diff = t - perf_last
(B 30 (B (B   (Bif(B name (Bnot(B (Bin(B perf_dict:
(B 31 (B (B       perf_dict[name] = (B0
(B 32 (B (B   perf_dict[name] += diff
(B 33 (B (B   perf_last = time.perf_counter()
(B 34 (B 
(B 35 (B 
(B 36 (Bi(Bmport(B notmuch
(B 37 (Bi(Bmport(B logging
(B 38 (Bi(Bmport(B coloredlogs
(B 39 (Bi(Bmport(B colorama
(B 40 (Bi(Bmport(B datetime
(B 41 (Bi(Bmport(B os
(B 42 (Bi(Bmport(B progressbar
(B 43 (Bi(Bmport(B argparse
(B 44 (Bi(Bmport(B configparser
(B 45 (Bi(Bmport(B base64
(B 46 (Bi(Bmport(B shutil
(B 47 (Bi(Bmport(B argparse
(B 48 (Bi(Bmport(B xdg.BaseDirectory
(B 49 (Bi(Bmport(B sys
(B 50 (Bi(Bmport(B subprocess[?25h[?25l(B (BNORMAL(B (B(B(B mel                                                                                                                               (B(B python (B(B utf-8[unix] (B(B   0% (B☰    1/608 (B :  1 (B(B]2;mel (~/.dotfiles/config/scripts) - NVIM[?25h[?25l[?25h[?25l(B/[?25h[?25l 
/(BCOMMAND(B (B(B(B mel]112[2 q[?25h[?25l(Bm[?25h[?25l
(B  3 #21
(B4   (BM(Beh (Bm(B1 (BA(B du(Bm(Bb Python scripts that leverages not(Bm(Buch, (Bm(Bbsync, and (Bm(Bs(Bm(B2 (Bt(Bo beco(Bm(Be a fully-functional extre(Bm(Bly-opinonated (Bm(B3456 (B (B   (B# (BTODO(B I(Bm(Bple(Bm(Bent initial co(Bmm(B 7 (B (B   (B# (BTODO(B Lockfiles for write operations on (Bm(Bail files ((Bm(Bbsync, tags→(Bm(B 8 (B (B   (B# (BTODO(B OPTI Lockfile per account and process everything in parallel (if i(Bm(Bple(Bm(B 9 (B (B   (B# should be optional since while it (Bm(Bay speed up the (Bm(Bail fetching process, its (Bm(B012 (B (B   (B# (BTODO(B I(BM(B3456 (B (B   (B# (BTODO(B (BM(Berge file with (Bm(B1718 #(B DEBUG S(Bm(B19 (Bi(Bm(Bport(B ti(Bm(B01 (Bp(Berf_last = ti(Bm(B2 (Bd(Bef(B (Bperfstep(B(na(Bm(B3 (B (B   t = ti(Bm(B45627 (B (B   (Bif(B na(Bm(B28 (B (B       perf_dict[na(Bm(B29 (B (B   perf_dict[na(Bm(B0 (B (B   perf_last = ti(Bm(B123 (Bi(Bm(Bport(B not(Bm(B4 (Bi(Bm(B5 (Bi(Bm(B6 (Bi(Bm(Bport(B colora(Bm(B37 (Bi(Bm(Bport(B dateti(Bm(B38 (Bi(Bm(B39 (Bi(Bm(B0 (Bi(Bm(B1 (Bi(Bm(B2 (Bi(Bm(B3 (Bi(Bm(B4 (Bi(Bm(B5 (Bi(Bm(B6 (Bi(Bm(B47 (Bi(Bm(B4[?25h[?25l(Bb[?25h[?25l(B4 (B#!/u(Bs3 (B    (B (B2 (B"""(B (B 
(B  1 (BMeh (Bm
(B5   (BA du(Bmb(B Python scripts that leverages notmuch, (Bmb(Bsync, and msm(B1 (Bto b(Be(Bcome a fully-functional extremly-opinonated m(B2 (B"""(B (B (B3 (B    (B (B4 (B#(B5 (B    (B#(B (BTODO(B Implement initial comm(B6 (B    (B#(B (BTODO(B Lockfiles for write operations on mail files ((Bmb(Bsync, tags→m(B7 (B    (B#(B (BTODO(B OPTI Lockfile per account and process everything in parallel (if implem(B8 (B    (B#(B should be optional since while it may speed up the mail fetching process, its m(B 9 (B    (B#0 (B    (B#1 (B    (B#(B (BTODO(B IM(B2 (B    (B#3 (B#(B4 (B    (B#5 (B    (B#(B (BTODO(B Merge file with m(B6 (B    (B (B7 (B# DE(BB(BUG Sm(B8 (Bimpo(Br(Bt(B tim(B19 (Bperf(B_(B0 (Bperf(B_(Blast = tim(B1 (Bdef(B (Bp(Berfstep(B(nam(B2 (B    (Bt(B = tim(B3 (B    (Bg(B4 (B    (Bg(B5 (B    (Bd(B6 (B    (Bi(Bf(B nam(B7 (B    (B (B   perf_dict[nam(B8 (B    (Bp(Berf_dict[nam(B29 (B    (Bp(Berf_last = tim(B0 (B    (B (B1 (B    (B (B2 (Bimpo(Br(Bt(B notm(B3 (Bimpo(Br(B4 (Bimpo(Br(B5 (Bimpo(Br(Bt(B coloram(B6 (Bimpo(Br(Bt(B datetim(B7 (Bimpo(Br(B8 (Bimpo(Br(B39 (Bimpo(Br(B0 (Bimpo(Br(B1 (Bimpo(Br(B2 (Bimpo(Br(B3 (Bimpo(Br(B4 (Bimpo(Br(B5 (Bimpo(Br(B6 (Bimpo(Br(B5/608 (B :  5[?25h[?25l(Bs[?25h[?25l(Bsr/bin/env python3(B                        (B (B                                          (B (B                                          (B (Bmail client(B                               (B (Bmb Python scripts that leverages notmuch, (Bmbs(Become a fully-functional extremly-opinonat(Be(B                                          (B (B                                          (B  (B# (BTODO(B Implement initial command set(B      (B (B# (BTODO(B Lockfiles for write operations on m(Ba(Bil files ((Bmbs(B# (BTODO(B OPTI Lockfile per account and proce(Bs(B# should be optional since while it may sp(Be(B# nature would cause a lot of cache flushe(Bs(B# (BTODO(B Handle true character width(B        (B (B# (BTODO(B IMAP IDLE watches?(B                 (B (B# (BTODO(B GPG(B                                (B  (B# (BTODO(B OOP-based(B                          (B (B# (BTODO(B Merge file with melConf(B            (B (B                                          (B (BBUG Small perf profiler(B                   (B (Brt(B time                                   (B (B_dict = (Bdict(B()                            (B (B_last = time.perf_counter()               (B (Bperfstep(B(name):                           (B (Bt = time.perf_counter()                   (B (Bglobal(B perf_last                          (B (Bglobal(B perf_dict                          (B (Bdiff = t - perf_last                      (B (Bif(B name (Bnot(B (Bin(B perf_dict:                 (B (B    perf_dict[name] = (B0(B                   (B (Bperf_dict[name] += diff                   (B (Bperf_last = time.perf_counter()           (B (B                                          (B (B                                          (B (Brt(B notmuch                                (B (Brt(B logging                                (B (Brt(B coloredlogs                            (B (Brt(B colorama                               (B (Brt(B datetime                               (B (Brt(B os                                     (B (Brt(B progressbar                            (B (Brt(B argparse                               (B (Brt(B configparser                           (B (Brt(B base64                                 (B (Brt(B shutil                                 (B (Brt(B argparse                               (B (Brt(B xdg.BaseDirectory                      (B (Brt(B sys                                    (B (Brt(B subprocess                             (B (B47[?25h[?25l(By[?25h[?25l(By(By[?25h[?25l(Bn[?25h[?25l(Bn(Bn[?25h[?25l(Bc[?25h[?25l(Bc(Bc[?25h[?25l
[?25h[?25l]112[2 q[?25h[?25lmbsync(BNORMAL(B (B(B(B mel [?25h[?25l(Bn[?25h[?25l 
[?25h[?25l(B10 (B#!/usr/bin/env python3(B                                   (B (B9 (B                                                         (B (B8 (B"""(B                                                      (B (B7 (BMeh mail client(B                                          (B 
(B  6 (BA dumb Python scripts that leverages notmuch, (Bmbsync(B, and(B (B5 (Bto become a fully-functional extremly-opinonated mail cli(Be(B4 (B"""(B                                                      (B (B           (B (B2 (B# (BTODO(B Features(B                                          (B (B1 (B    (B# (BTODO(B Implement initial command set(B                 (B 
(B11  (B    (B# (BTODO(B Lockfiles for write operations on ma(B1 (B    (B# (BTODO(B OPTI Lockfile per account and process everythi(Bn2 (B    (B# should be optional since while it may speed up the (Bm3 (B    (B# nature would cause a lot of cache flushes and be no(Bt 4 (B    (B# (BTODO(B Handle true character width(B                   (B (B 5 (B    (B# (BTODO(B IMAP IDLE watches?(B                            (B (B 6 (B    (B# (BTODO(B GPG(B                                           (B (B 7 (B# (BTODO(B (only then) Refactor(B                              (B (B 8 (B    (B# (BTODO(B OOP-based(B                                     (B (B 9 (B    (B# (BTODO(B Merge file with melConf(B                       (B (B0 (B                                                         (B (B1 (B# DEBUG Small perf profiler(B                              (B (B2 (Bimport(B time                                              (B (B3 (Bperf_dict = (Bdict(B()                                       (B (B14 (Bperf_last = time.perf_counter()                          (B (B15 (Bdef(B (Bperfstep(B(name):                                      (B (B16 (B    t = time.perf_counter()                              (B (B17 (B    (Bglobal(B perf_last                                     (B (B18 (B    (Bglobal(B perf_dict                                     (B (B19 (B    diff = t - perf_last                                 (B (B0 (B    (Bif(B name (Bnot(B (Bin(B perf_dict:                            (B (B1 (B        perf_dict[name] = (B0(B                              (B (B2 (B    perf_dict[name] += diff                              (B (B3 (B    perf_last = time.perf_counter()                      (B (B24 (B                                                         (B (B25 (B                                                         (B (B26 (Bimport(B notmuch                                           (B (B27 (Bimport(B logging                                           (B (B28 (Bimport(B coloredlogs                                       (B (B29 (Bimport(B colorama                                          (B (B0 (Bimport(B datetime                                          (B (B1 (Bimport(B os                                                (B (B2 (Bimport(B progressbar                                       (B (B3 (Bimport(B argparse                                          (B (B34 (Bimport(B configparser                                      (B (B35 (Bimport(B base64                                            (B (B36 (Bimport(B shutil                                            (B (B37 (Bimport(B argparse                                          (B (B38 (Bimport(B xdg.BaseDirectory                                 (B (B39 (Bimport(B sys                                               (B (B0 (Bimport(B subprocess                                        (B (B1% (B☰   11/608 (B : 58[?25h[?25l(Bn[?25h[?25l 
[?25h[?25l(B25 (B    (B# move de(Bs(Bt msg...(B(B24 (B    (B## Read m(Be(Bssage(B(B23 (B             (B (B(B22 (B             (B (B(B21 (B    (B# read ms(Bg(B [--html] [--plain] [--browser](B(B20 (B    (Bdef(B (Bfunc_(Br(Bead(B(args):(B19 (B        apply(B_(Bmsgs_input(args.message, read_msg)(B18 (B    parserRea(Bd(B = subparsers.add_parser((B"read"(B, (Bhelp(B=(B"Read message"(B)(B17 (B    parserRea(Bd(B.add_argument((B'message'(B, nargs=(B1(B, (Bhelp(B=(B"Messages"(B)(B16 (B    parserRea(Bd(B.set_defaults(func=func_read)
(B 15 (B             (B (B(B14 (B             (B (B(B13 (B    (B# attach (Bm(Bsg [id] [--save] (list if no id, xdg-open else)(B(B12 (B    (B## Redact(Bi(Bon(B(B11 (B    (B# new acc(Bo(Bunt(B(B10 (B    (B# reply m(Bs(Bg [--all](B(B9 (B    (B## Folder(B (Bmanagement(B(B8 (B    (B# tree [f(Bo(Blder](B(B7 (B    (B# mkdir f(Bo(Blder(B(B6 (B    (B# rmdir f(Bo(Blder (prevent if folder isn't empty (mail/subfolder))(B 5 (B    (B# (yeah t(Bh(Bat should do)(B(B 4 (B    (B## Meta(B  (B (B(B 3 (B    (B# setup ((Bi(Bnteractive thing maybe)(B(B 2 (B             (B (B(B 1 (B             (B (B
(B531 (B    (B# fetch ((Bmbsync(B, notmuch new, retag, notify; called by greater gods)(B 1 (B    (Bdef(B (Bfunc_(Bf(Betch(B(args):(B 2 (B        (B# Fet(Bc(Bh mails(B(B 3 (B        log.i(Bn(Bfo((B"Fetching mails"(B)(B 4 (B        (Bmbsync(BConfigPath = os.path.expanduser((B"~/.(Bmbsync(Brc"(B) (B# (BTODO(B Better(B 5 (B        cmd =(B (B[(B"(Bmbsync(B"(B, (B"--config"(B, (Bmbsync(BConfigPath, (B"--all"(B](B 6 (B        subpr(Bo(Bcess.run(cmd)(B 7 (B             (B (B(B 8 (B        (B# Ind(Be(Bx new mails(B(B 9 (B        notmu(Bc(Bh_new()(B10 (B             (B (B(B11 (B        (B# Not(Bi(Bfy(B(B12 (B        notif(By(B_all()(B13 (B             (B (B(B14 (B        (B# Tag(B (Bnew mails(B(B15 (B        apply(BM(Bsgs((B'tag:unprocessed'(B, retag_msg, showProgress=(BTrue(B, write=(BTrue(B)(B16 (B             (B (B(B17 (B    parserFet(Bc(Bh = subparsers.add_parser((B"fetch"(B, (Bhelp(B=(B"Fetch mail, tag them, and run notifications"(B)(B18 (B    parserFet(Bc(Bh.set_defaults(func=func_fetch)(B19 (B             (B (B(B20 (B             (B (B(B21 (B    (B## Debug(B (B (B(B22 (B    (B# debug ((Bv(Barious)(B(B23 (B    (Bdef(B (Bfunc_(Be(Bxpose(B(args):(B24 (B        (B# And(B (Bleave the door open(B(B25 (B        (Bdef(B (Be(Bx(Bpose_msg(B(a):(B(B func_read()  python (B(B utf-8[unix] (B(B  87% (B☰  531/608 (B : 14[?25h[?25l(Bn[?25h[?25l 
[?25h[?25l(B9 (B    (B# mo(Bv(Be des(B8 (B    (B## R(Be(Bad me(B7 (B        (B (B(B6 (B        (B (B(B5 (B    (B# re(Ba(Bd msg(B4 (B    (Bdef(B (Bf(Bunc_r(B23 (B        (Ba(Bpply_(B22 (B    pars(Be(BrRead(B21 (B    pars(Be(BrRead(B20 (B    pars(Be(BrRead(B9 (B        (B (B(B8 (B        (B (B(B7 (B    (B# at(Bt(Bach m(B6 (B    (B## R(Be(Bdacti(B5 (B    (B# ne(Bw(B acco(B4 (B    (B# re(Bp(Bly ms(B13 (B    (B## F(Bo(Blder (B12 (B    (B# tr(Be(Be [fo(B11 (B    (B# mk(Bd(Bir fo(B10 (B    (B# rm(Bd(Bir fo(B9 (B    (B# (y(Be(Bah th(B8 (B    (B## M(Be(Bta(B   (B7 (B    (B# se(Bt(Bup (i(B6 (B        (B (B(B5 (B        (B (B
(B  4 (B    (B# fe(Bt3 (B    (Bdef(B (Bf(Bunc_f(B#(B Fetc(B1 (B        (Bl(Bog.in
(B535 (B1 (B        (Bc(Bmd = (B2 (B        (Bs(Bubpro(B3 (B        (B (B(B4 (B        (B#(B Inde(B5 (B        (Bn(Botmuc(B 6 (B        (B (B(B 7 (B        (B#(B Noti(B 8 (B        (Bn(Botify(B 9 (B        (B (B(B0 (B        (B#(B Tag (B1 (B        (Ba(BpplyM(B2 (B        (B (B(B3 (B    pars(Be(BrFetc(B4 (B    pars(Be(BrFetc(B5 (B        (B (B(B16 (B        (B (B(B17 (B    (B## D(Be(Bbug(B  (B18 (B    (B# de(Bb(Bug (v(B19 (B    (Bdef(B (Bf(Bunc_e(B0 (B        (B#(B And (B1 (B        (Bd(Bef(B (Bex(B(B func_fetch()  python (B(B utf-8[unix] (B(B  87% (B☰  535/608 (B :  9[?25h[?25l(BE[?25h[?25l (Bve dest msg...(B (B (Bead message(B    (B (B               (B (B               (B (Bad msg [--html](B (Bfunc_read(B(args)(B:(Bapply_msgs_inpu(Bt(BerRead = subpar(Bs(BerRead.add_argu(Bm(BerRead.set_defa(Bu(B               (B (B               (B (Btach msg [id] [(B-(Bedaction(B       (B (Bw account(B      (B (Bply msg [--all](B (Bolder managemen(Bt(Bee [folder](B    (B (Bdir folder(B     (B (Bdir folder (pre(Bv(Beah that should(B (Beta(B            (B (Btup (interactiv(Be(B               (B (B               (B (Btch ((Bmbsync(B, no(Bt(Bfunc_fetch(B(args(B)(B# Fetch mails(B  (B (Blog.info((B"Fetch(Bi(Bcmd = [(B"(Bmbsync(B"(B,(Bsubprocess.run((Bc(B               (B (B# Index new mai(Bl(Bnotmuch_new()  (B (B               (B (B# Notify(B       (B (Bnotify_all()   (B (B               (B (B# Tag new mails(B (BapplyMsgs((B'tag:(Bu(B               (B (BerFetch = subpa(Br(BerFetch.set_def(Ba(B               (B (B               (B (Bebug(B           (B (Bbug (various)(B  (B (Bfunc_expose(B(arg(Bs(B# And leave the(B (Bdef(B (Bexpose_msg(B((Ba(B24[?25h[?25l(BE[?25h[?25l   (B (B  (B (B  (B (B  (B (B [(B-(B: (B (Bt((Ba(Bse(Br(Bme(Bn(Bul(Bt(B  (B (B  (B (B--(Bs(B  (B (B  (B (B  (B (Bt(B (B (B  (B (B  (B (Bve(Bn(B d(Bo(B  (B (Be (Bt(B  (B (B  (B (Btm(Bu(B):(B (B  (B (Bin(Bg(B, (B"(Bcm(Bd(B  (B (Bls(B (B  (B (B  (B (B  (B (B  (B (B  (B (B  (B (Bun(Bp(B  (B (Brs(Be(Bau(Bl(B  (B (B  (B (B  (B (B  (B (Bs)(B:(B d(Bo(Ba)(B:(B6[?25h[?25l(BE[?25h[?25l                                   (B (B                                  (B (B                                  (B (B                                  (B (B--plain] [--browser](B              (B (B                                  (B (Bargs.message, read_msg)           (B (Brs.add_parser((B"read"(B, (Bhelp(B=(B"Read m(Be(Bnt((B'message'(B, nargs=(B1(B, (Bhelp(B=(B"Messa(Bg(Bts(func=func_read)                (B (B                                  (B (B                                  (B (Bsave] (list if no id, xdg-open els(Be(B                                  (B (B                                  (B (B                                  (B (B                                  (B (B                                  (B (B                                  (B (Bnt if folder isn't empty (mail/sub(Bf(Bo)(B                                (B (B                                  (B (Bthing maybe)(B                      (B (B                                  (B (B                                  (B (Buch new, retag, notify; called by (Bg(B                                  (B (B                                  (B (Bg mails"(B)                         (B (B((B"~/.(Bmbsync(Brc"(B)(B"--config"(B, (Bmbsync(BConfigPath, (B"--a(Bl(Bd)                                (B (B                                  (B (B                                  (B (B                                  (B (B                                  (B (B                                  (B (B                                  (B (B                                  (B (B                                  (B (Bprocessed'(B, retag_msg, showProgres(Bs(B                                  (B (Bers.add_parser((B"fetch"(B, (Bhelp(B=(B"Fetc(Bh(Blts(func=func_fetch)              (B (B                                  (B (B                                  (B (B                                  (B (B                                  (B (B:                                 (B (Boor open(B                          (B (B:                                 (B (B60[?25h[?25l(Bb[?25h[?25l (B (B (B (B (B (B (B (B (B (B (B (B (B (B (Bm(Be(Ba(Bg(B (B (B (B (B (B (Bs(Be(B (B (B (B (B (B (B (B (B (B (B (B (Bb(Bf(B (B (B (B (B (B (B (B (B (B (B (Bg(B (B (B (B (B (B ((B"~/.(Bmbsync(Brc"(B)(Ba(Bl(B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (Bs(Bs(B (B (Bc(Bh(B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B59[?25h[?25l(Bb[?25h[?25l (B (B(B (B(B (B(B (B(B (B(B (B(B (B(Bp(B=(B"Read m(Bl(Bp(B=(B"Messa(B (B(B (B(B (B(B-(Bopen els(B (B(B (B(B (B(B (B(B (B(B (B(B((Bmail/sub(B (B(B (B(B (B(B (B(B (B(Ba(Blled by (B (B(B (B(B (B(Ba(Bth, (B"--a(B (B(B (B(B (B(B (B(B (B(B (B(B (B(B (B(B (B(Bo(BwProgres(B (B(Be(Blp(B=(B"Fetc(B (B(B (B(B (B(B (B(B (B(B (B(B (B(B (B(B1[?25h[?25l(Bi[?25h[?25l ]112[6 q[?25h[?25l
(B (BINSERT(B (B(B(B mel                                                                                                                (B(B func_fetch()  python (B(B utf-8[unix] (B(B  87% (B☰  535/608 (B : 51 (B[?25h[?25l(B mel+ (B(B (B (B (B (B (B (B (B (B (B (B (B (B (B (Bp(B=(Bl(Bp(B (B (B (B (B (B (B-(Bo(B (B (B (B (B (B (B (B (B (B (B (B (B((Bm(B (B (B (B (B (B (B (B (B (B (Ba(Bl(B (B (B (B (B (B (Bc(Bmbsync(Brc"(B) (B# (BTODO(B Better(Ba(Bt(B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (Bo(Bw(B (B (Be(Bl(B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B[+]                                                                                                             (B(B func_fetch()  python (B(B utf-8[unix] (B(B  87% (B☰  535/608 (B : 52]2;mel + (~/.dotfiles/config/scripts) - NVIM[?25h[?25l[?25h[?25l(B (B (B (B (B (B (B (B (B (B (B (B (B (B (B=(B"(Bp(B=(B (B (B (B (B (B (Bo(Bp(B (B (B (B (B (B (B (B (B (B (B (B (Bm(Ba(B (B (B (B (B (B (B (B (B (B (Bl(Bl(B (B (B (B (B (B (Bo(Bmbsync(Brc"(B) (B# (BTODO(B Better(Bt(Bh(B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (Bw(BP(B (B (Bl(Bp(B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B3[?25h[?25l(B (B (B (B (B (B (B (B (B (B (B (B (B (B (B"(BR(B=(B"(B (B (B (B (B (B (Bp(Be(B (B (B (B (B (B (B (B (B (B (B (B (Ba(Bi(B (B (B (B (B (B (B (B (B (B (Bl(Be(B (B (B (B (B (B (Bn(Bmbsync(Brc"(B) (B# (BTODO(B Better(Bh(B,(B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (BP(Br(B (B (Bp(B=(B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B4[?25h[?25l(B (B (B (B (B (B (B (B (B (B (B (B (B (B (BR(Be(B"(BM(B (B (B (B (B (B (Be(Bn(B (B (B (B (B (B (B (B (B (B (B (B (Bi(Bl(B (B (B (B (B (B (B (B (B (B (Be(Bd(B (B (B (B (B (B (Bf(Bmbsync(Brc"(B) (B# (BTODO(B Better(B,(B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (Br(Bo(B (B (B=(B"(B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B5[?25h[?25l(B (B (B (B (B (B (B (B (B (B (B (B (B (B (Be(Ba(BM(Be(B (B (B (B (B (B (Bn(B (B (B (B (B (B (B (B (B (B (B (B (B (Bl(B/(B (B (B (B (B (B (B (B (B (B (Bd(B (B (B (B (B (B (B (Bi(Bmbsync(Brc"(B) (B# (BTODO(B Better(B (B"(B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (Bo(Bg(B (B (B"(BF(B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B6[?25h[?25l(B (B (B (B (B (B (B (B (B (B (B (B (B (B (Ba(Bd(Be(Bs(B (B (B (B (B (B (B (Be(B (B (B (B (B (B (B (B (B (B (B (B (B/(Bs(B (B (B (B (B (B (B (B (B (B (B (Bb(B (B (B (B (B (B (Bg(Bmbsync(Brc"(B) (B# (BTODO(B Better(B"(B-(B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (Bg(Br(B (B (BF(Be(B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B (B7[?25h[?25l(B (B (B (B (B (B (B (B (B (B (B (B (B (B (Bd(B (Bs(Bs(B (B (B (B (B (B (Be(Bl(B (B (B (B (B (B (B (B (B (B (B (B (Bs(Bu(B (B (B (B (B (B (B (B (B (B (Bb(By(B (B (B (B (B (B (B/(Bmbsync(Brc"(B) (B# (BTODO(B Better(B-(B-(B (B[48;5;1