diff --git a/config/lemonbar/display.py b/config/lemonbar/display.py index 1e1372f..b1803bd 100755 --- a/config/lemonbar/display.py +++ b/config/lemonbar/display.py @@ -36,7 +36,7 @@ class BarGroupType(enum.Enum): class BarStdoutThread(threading.Thread): - def run(self): + def run(self) -> None: while Bar.running: handle = Bar.process.stdout.readline().strip() if not len(handle): @@ -58,7 +58,7 @@ class Bar: FONTSIZE = 10 @staticmethod - def init(): + def init() -> None: Bar.running = True Section.init() @@ -75,7 +75,7 @@ class Bar: # Bar(1) @staticmethod - def stop(): + def stop() -> None: Bar.running = False Bar.process.kill() @@ -83,11 +83,11 @@ class Bar: os.killpg(os.getpid(), signal.SIGTERM) @staticmethod - def run(): + def run() -> None: Bar.forever() i3 = i3ipc.Connection() - def doStop(*args): + def doStop(*args) -> None: Bar.stop() print(88) @@ -176,6 +176,7 @@ class Bar: # Color for empty sections Bar.string += BarGroup.color(*Section.EMPTY) + # print(Bar.string) Bar.process.stdin.write(bytes(Bar.string + '\n', 'utf-8')) Bar.process.stdin.flush() diff --git a/config/scripts/bsh b/config/scripts/bsh index 7d39b62..27789fc 100755 --- a/config/scripts/bsh +++ b/config/scripts/bsh @@ -20,7 +20,13 @@ then grep -o '^[^#]*' ~/.config/inputrc > "${WORK}/.inputrc" grep -o '^[^"]*' ~/.config/vim/vimconfig.vim > "${WORK}/.vimrc" mkdir -p "${WORK}/terminfo/${TERM:0:1}" - cp ~/".config/terminfo/${TERM:0:1}/${TERM}" "${WORK}/terminfo/${TERM:0:1}/${TERM}" + if [ -f "/usr/share/terminfo/${TERM:0:1}/${TERM}" ] + then + cp "/usr/share/terminfo/${TERM:0:1}/${TERM}" "${WORK}/terminfo/${TERM:0:1}/${TERM}" + elif [ -f "$HOME/.config/terminfo/${TERM:0:1}/${TERM}" ] + then + cp "$HOME/.config/terminfo/${TERM:0:1}/${TERM}" "${WORK}/terminfo/${TERM:0:1}/${TERM}" + fi # Extra configuration echo "alias s='sudo -s -E bash --rcfile ${DEST}/.bashrc'" >> "${WORK}/.bashrc" diff --git a/config/shell/shenv b/config/shell/shenv index 70aca1f..7072c2c 100644 --- a/config/shell/shenv +++ b/config/shell/shenv @@ -118,8 +118,6 @@ then if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)" fi - export GPG_TTY=$(tty) - gpg-connect-agent updatestartuptty /bye >/dev/null else # Start regular SSH agent if not already started diff --git a/config/shell/shrc b/config/shell/shrc index 5247692..cde8a43 100644 --- a/config/shell/shrc +++ b/config/shell/shrc @@ -100,3 +100,7 @@ unset _i_prefer trysource ~/.local/bin/colorSchemeApply # Needed because xterm/urxvt won't use the last color, needed for vim +## GPG +# Update TTY +export GPG_TTY=$(tty) +gpg-connect-agent updatestartuptty /bye >/dev/null diff --git a/config/typescript b/config/typescript deleted file mode 100644 index 5c4c5cc..0000000 --- a/config/typescript +++ /dev/null @@ -1,199 +0,0 @@ -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 \ No newline at end of file