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