[rc/i3status] disable wireless status for now
[~bandali/configs] / rc.org
diff --git a/rc.org b/rc.org
index 5962ebf..be3da30 100644 (file)
--- a/rc.org
+++ b/rc.org
@@ -14,275 +14,6 @@ Note: This file is best viewed inside Emacs with org mode.
 This section contains the configuration files (dotfiles) of various
 programs I use.
 
 This section contains the configuration files (dotfiles) of various
 programs I use.
 
-** bspwm
-
-*** bspwmrc
-:PROPERTIES:
-:header-args+: :tangle ~/.config/bspwm/bspwmrc :shebang "#!/bin/sh"
-:END:
-
-#+begin_src sh :tangle no
-sxhkd &
-sh ~/.fehbg &
-xfce4-panel -d &
-compton &
-sleep 0.5 && pasystray --notify=all &
-
-bspc monitor -d I II III IV V VI VII VIII IX X
-#bspc monitor eDP-1 -d I II III IV V
-#bspc monitor HDMI-1 -d VI VII VIII IX X
-
-#bspc config border_width         2
-#bspc config window_gap           8
-bspc config window_gap           0
-
-bspc config bottom_padding 26
-
-bspc config split_ratio          0.52
-bspc config borderless_monocle   true
-bspc config gapless_monocle      true
-bspc config click_to_focus       button1
-bspc config directional_focus_tightness low
-
-#bspc rule -a Firefox desktop='^1' follow=on
-bspc rule -a Nightly desktop='^1' follow=on
-bspc rule -a Emacs desktop='^2' state=tiled follow=on
-#bspc rule -a Chromium desktop='^4' follow=on
-bspc rule -a URxvt state=floating
-bspc rule -a URxvt:tiled state=tiled
-bspc rule -a Connman-gtk state=floating
-bspc rule -a Xfce4-panel state=floating
-bspc rule -a TelegramDesktop state=floating
-bspc rule -a Ec state=floating
-bspc rule -a Pavucontrol state=floating
-bspc rule -a Eog state=floating
-bspc rule -a Seahorse state=floating
-bspc rule -a mpv state=floating
-bspc rule -a Evince state=floating
-bspc rule -a Meld state=floating
-bspc rule -a Autokey-gtk state=floating
-bspc rule -a Mousepad state=floating
-bspc rule -a Wrapper-1.0 state=floating
-bspc rule -a File-roller state=floating
-bspc rule -a Gnome-disks state=floating
-bspc rule -a Termite state=floating
-bspc rule -a Termite:tiled state=tiled
-bspc rule -a Thunderbird:Calendar state=floating
-bspc rule -a Audacity state=floating
-bspc rule -a Proof state=floating # pvs x-show-proof
-bspc rule -a Nm-connection-editor state=floating
-bspc rule -a Wire state=floating
-bspc rule -a discord state=floating
-bspc rule -a X2goclient state=floating
-bspc rule -a SimpleScreenRecorder state=floating
-bspc rule -a Gimp state=floating
-bspc rule -a Wrapper-2.0 state=floating
-bspc rule -a Zathura state=tiled
-#+end_src
-
-*** sxhkdrc
-:PROPERTIES:
-:header-args+: :tangle ~/.config/sxhkd/sxhkdrc
-:END:
-
-#+begin_src conf :tangle no
-#
-# wm independent hotkeys
-#
-
-# terminal emulator
-super + {_,shift} + Return
-       urxvt{_, -name tiled}
-
-#super + {_,shift} + Return
-#      termite{_, --name=tiled}
-
-# program launcher
-super + space
-       rofi -show run -display-run '> ' -display-window ' 🗔 '
-
-super + alt + space
-       xfce4-popup-whiskermenu
-
-# window finder
-super + backslash
-       rofi -show window  -display-run '> ' -display-window ' 🗔 '
-
-# password manager
-alt + space
-       rofi-pass
-
-# firefox
-#super + r
-#      firefox
-
-# chromium
-#super + c
-#      chromium -incognito
-
-# emacs
-super + e
-       emacs
-
-# make sxhkd reload its configuration files:
-super + Escape
-       pkill -USR1 -x sxhkd
-
-# volume {up,down}
-XF86Audio{Raise,Lower}Volume
-       pamixer --allow-boost --{in,de}crease 5
-
-# mute
-XF86AudioMute
-       pamixer --toggle-mute
-
-XF86AudioMicMute
-       pactl set-source-mute 1 toggle
-
-# playback control
-XF86Audio{Play,Prev,Next}
-       mpc {toggle,prev,next}
-
-# lock the screen
-super + shift + q
-       light-locker-command -l
-
-# Toggle keyboard layout
-super + F7
-       toggle-layout
-
-# Toggle Xfce presentation mode
-XF86LaunchB
-       toggle-presentation-mode
-
-# monitor brightness
-XF86MonBrightness{Up,Down}
-       light -{A,U} 5
-
-super + apostrophe
-       rofi-light
-
-# keyboard brightness
-#XF86KbdBrightness{Up,Down}
-#      kbdlight {up,down}
-
-XF86RotateWindows
-       toggle-tablet
-
-#
-# bspwm hotkeys
-#
-
-# quit bspwm normally
-super + alt + Escape
-       bspc quit
-
-# close and kill
-super + {w,q}
-       bspc node -{c,k}
-
-# alternate between the tiled and monocle layout
-super + m
-       bspc desktop -l next
-
-# send the newest marked node to the newest preselected node
-super + y
-       bspc node newest.marked.local -n newest.!automatic.local
-
-# swap the current node and the biggest node
-super + g
-       bspc node -s biggest
-
-#
-# state/flags
-#
-
-# set the window state
-super + {t,shift + t,s,f}
-       bspc node -t {tiled,pseudo_tiled,floating,fullscreen}
-
-# set the node flags
-super + ctrl + {m,x,y,z}
-       bspc node -g {marked,locked,sticky,private}
-
-#
-# focus/swap
-#
-
-# focus the node in the given direction
-super + {_,shift + }{h,j,k,l}
-       bspc node -{f,s} {west,south,north,east}
-
-# focus the node for the given path jump
-super + {p,b,comma,period}
-       bspc node -f @{parent,brother,first,second}
-
-# focus the next/previous node in the current desktop
-super + {_,shift + }c
-       bspc node -f {next,prev}.local
-
-# focus the next/previous desktop in the current monitor
-super + bracket{left,right}
-       bspc desktop -f {prev,next}.local
-
-# send to next/prev desktop
-super + shift + bracket{left,right}
-       bspc node -d {prev,next} --follow
-
-# focus the last node/desktop
-super + {grave,Tab}
-       bspc {node,desktop} -f last
-
-# focus the older or newer node in the focus history
-super + {o,i}
-       bspc wm -h off; \
-       bspc node {older,newer} -f; \
-       bspc wm -h on
-
-# focus or send to the given desktop
-super + {_,shift + }{1-9,0}
-       bspc {desktop -f,node -d} '^{1-9,10}'
-
-#
-# preselect
-#
-
-# preselect the direction
-super + ctrl + {h,j,k,l}
-       bspc node -p {west,south,north,east}
-
-# preselect the ratio
-super + ctrl + {1-9}
-       bspc node -o 0.{1-9}
-
-# cancel the preselection for the focused node
-super + ctrl + space
-       bspc node -p cancel
-
-# cancel the preselection for the focused desktop
-super + ctrl + shift + space
-       bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel
-
-#
-# move/resize
-#
-
-# expand a window by moving one of its side outward
-super + alt + {h,j,k,l}
-       bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}
-
-# contract a window by moving one of its side inward
-super + alt + shift + {h,j,k,l}
-       bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}
-
-# move a floating window
-super + {Left,Down,Up,Right}
-       bspc node -v {-20 0,0 20,0 -20,20 0}
-
-#alt + bracket{left,right}
-#      xdotool key --clearmodifiers ctrl+Page_{Up,Down}
-#+end_src
-
 ** compton
 :PROPERTIES:
 :header-args+: :tangle ~/.config/compton.conf
 ** compton
 :PROPERTIES:
 :header-args+: :tangle ~/.config/compton.conf
@@ -389,6 +120,52 @@ wintypes:
 };
 #+end_src
 
 };
 #+end_src
 
+** dovecot
+:PROPERTIES:
+:header-args+: :tangle "/sudo::/etc/dovecot/dovecot.conf"
+:END:
+
+#+begin_src conf
+protocols = imap
+
+listen = 127.0.0.1
+log_path = /var/log/dovecot.log
+info_log_path = /var/log/dovecot-info.log
+
+ssl = no
+disable_plaintext_auth = no
+
+auth_verbose = yes
+auth_mechanisms = plain
+
+passdb {
+  driver = passwd-file
+  args = /etc/dovecot/passwd
+}
+
+userdb {
+  driver = static
+  args = uid=amin gid=amin home=/home/amin/mail/%d/%n
+  default_fields = mail=maildir:/home/amin/mail/%d/%n/mail
+}
+
+# mail_home = /home/amin/mail/%d/%n
+# mail_location = maildir:/home/amin/mail/%d/%n/mail:LAYOUT=fs:INBOX=/home/amin/mail/%d/%n/mail/Inbox
+
+# namespace {
+#   inbox = yes
+#   separator = /
+# }
+
+mail_plugins = $mail_plugins fts fts_lucene
+
+plugin {
+  fts = lucene
+  fts_lucene = whitespace_chars=@.
+  fts_autoindex = yes
+}
+#+end_src
+
 ** Dunst
 :PROPERTIES:
 :header-args+: :tangle ~/.config/dunst/dunstrc
 ** Dunst
 :PROPERTIES:
 :header-args+: :tangle ~/.config/dunst/dunstrc
@@ -643,7 +420,7 @@ timeout = 0
 [retriever]
 type = SimplePOP3SSLRetriever
 server = fencepost.gnu.org
 [retriever]
 type = SimplePOP3SSLRetriever
 server = fencepost.gnu.org
-username = aminb
+username = bandali
 password_command = ("gpg2", "--no-tty", "-q", "-d", "/home/amin/.passwd/gnu.gpg")
 port = 995
 use_apop = True
 password_command = ("gpg2", "--no-tty", "-q", "-d", "/home/amin/.passwd/gnu.gpg")
 port = 995
 use_apop = True
@@ -701,8 +478,8 @@ WantedBy=timers.target
 #+begin_src conf
 [user]
     name = Amin Bandali
 #+begin_src conf
 [user]
     name = Amin Bandali
-    email = amin@gnu.org
-    signingkey = CDDE75F903538E71813CDA27D1FBA36627D65876
+    email = bandali@gnu.org
+    signingkey = BE6273738E616D6D1B3A08E8A21A020248816103
 #+end_src
 
 **** signing
 #+end_src
 
 **** signing
@@ -781,7 +558,7 @@ WantedBy=timers.target
 **** send-email
 #+begin_src conf
 [sendemail]
 **** send-email
 #+begin_src conf
 [sendemail]
-       smtpuser = aminb
+       smtpuser = bandali
        smtpserver = fencepost.gnu.org
        smtpserverport = 587
        smtpencryption = tls
        smtpserver = fencepost.gnu.org
        smtpserverport = 587
        smtpencryption = tls
@@ -921,12 +698,13 @@ separator_width=0
 general {
         colors = true
         interval = 5
 general {
         colors = true
         interval = 5
+        output_format = "i3bar"
 }
 
 # order += "ipv6"
 order += "disk /"
 order += "disk /data"
 }
 
 # order += "ipv6"
 order += "disk /"
 order += "disk /data"
-order += "wireless _first_"
+order += "wireless _first_"
 order += "ethernet _first_"
 order += "battery 0"
 order += "volume master"
 order += "ethernet _first_"
 order += "battery 0"
 order += "volume master"
@@ -987,10 +765,12 @@ disk "/data" {
 #+begin_src conf
 # Global defaults
 CopyArrivalDate yes
 #+begin_src conf
 # Global defaults
 CopyArrivalDate yes
+Create Both
+Expunge Both
 
 ######
 IMAPAccount amin
 
 ######
 IMAPAccount amin
-Host nix.aminb.org
+Host mail.aminb.org
 User amin@aminb.org
 PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/amin.gpg"
 SSLType IMAPS
 User amin@aminb.org
 PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/amin.gpg"
 SSLType IMAPS
@@ -998,17 +778,20 @@ SSLType IMAPS
 IMAPStore amin-remote
 Account amin
 
 IMAPStore amin-remote
 Account amin
 
-MaildirStore amin-local
-Path ~/mail/amin/
-Inbox ~/mail/amin/Inbox
-SubFolders Verbatim
+IMAPAccount amin-dovecot
+Host 127.0.0.1
+Port 143
+User amin@aminb.org
+PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/amin-dovecot.gpg"
+SSLType None
+
+IMAPStore amin-local
+Account amin-dovecot
 
 Channel amin
 Master :amin-remote:
 Slave :amin-local:
 
 Channel amin
 Master :amin-remote:
 Slave :amin-local:
-Patterns * !dovecot*
-Create Both
-SyncState *
+Patterns *
 
 ######
 IMAPAccount uwaterloo
 
 ######
 IMAPAccount uwaterloo
@@ -1020,17 +803,20 @@ SSLType IMAPS
 IMAPStore uwaterloo-remote
 Account uwaterloo
 
 IMAPStore uwaterloo-remote
 Account uwaterloo
 
-MaildirStore uwaterloo-local
-Path ~/mail/uwaterloo/
-Inbox ~/mail/uwaterloo/Inbox
-SubFolders Verbatim
+IMAPAccount uwaterloo-dovecot
+Host 127.0.0.1
+Port 143
+User abandali@uwaterloo.ca
+PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/uwaterloo-dovecot.gpg"
+SSLType None
+
+IMAPStore uwaterloo-local
+Account uwaterloo-dovecot
 
 Channel uwaterloo
 Master :uwaterloo-remote:
 Slave :uwaterloo-local:
 
 Channel uwaterloo
 Master :uwaterloo-remote:
 Slave :uwaterloo-local:
-Patterns * !dovecot*
-Create Both
-SyncState *
+Patterns *
 #+end_src
 
 *** mbsync.service
 #+end_src
 
 *** mbsync.service
@@ -1534,29 +1320,32 @@ logfile ~/.msmtp.log
 
 # aminb
 account aminb
 
 # aminb
 account aminb
-host nix.aminb.org
+host mail.aminb.org
 # use `msmtp -a aminb --serverinfo --tls --tls-certcheck=off --tls-fingerprint=` to get the current fingerprint
 # use `msmtp -a aminb --serverinfo --tls --tls-certcheck=off --tls-fingerprint=` to get the current fingerprint
-tls_fingerprint 98:C7:F0:02:7F:2B:D8:B6:D3:BF:E8:C1:D4:07:6B:B5:6C:B1:C7:5D:97:20:70:88:AB:9E:B5:09:5D:2C:DC:8E
+tls_fingerprint DE:5F:73:0C:F7:9A:7B:1D:55:AA:49:28:E7:28:49:24:A4:08:55:00:7A:7E:D8:7F:30:06:26:24:11:29:61:07
 tls_starttls on
 from amin@aminb.org
 user amin@aminb.org
 passwordeval gpg2 --no-tty -q -d ~/.passwd/amin.gpg
 
 tls_starttls on
 from amin@aminb.org
 user amin@aminb.org
 passwordeval gpg2 --no-tty -q -d ~/.passwd/amin.gpg
 
+account bandali-me : aminb
+from amin@bandali.me
+
 # gnu
 account gnu
 host fencepost.gnu.org
 # use `msmtp -a gnu --serverinfo --tls --tls-certcheck=off --tls-fingerprint=` to get the current fingerprint
 # gnu
 account gnu
 host fencepost.gnu.org
 # use `msmtp -a gnu --serverinfo --tls --tls-certcheck=off --tls-fingerprint=` to get the current fingerprint
-tls_fingerprint 28:70:42:76:1C:EC:91:5F:D1:B3:27:A1:CD:3B:32:A4:8B:0B:DC:3A:CD:CA:F6:6F:E4:61:BA:69:D7:4D:0D:0B
+tls_fingerprint 93:59:52:1D:A6:95:13:31:7C:81:ED:DB:A5:BA:B5:2B:C8:BC:38:3E:71:A5:DF:8C:80:46:C1:E0:5D:2D:F4:E3
 tls_starttls on
 tls_starttls on
-from aminb@gnu.org
-user aminb
+from bandali@gnu.org
+user bandali
 passwordeval gpg2 --no-tty -q -d ~/.passwd/gnu.gpg
 
 passwordeval gpg2 --no-tty -q -d ~/.passwd/gnu.gpg
 
-# gnu (amin)
+# gnu (old)
+account gnu-aminb : gnu
+from aminb@gnu.org
 account gnu-amin : gnu
 from amin@gnu.org
 account gnu-amin : gnu
 from amin@gnu.org
-
-# gnu (mab)
 account gnu-mab : gnu
 from mab@gnu.org
 
 account gnu-mab : gnu
 from mab@gnu.org
 
@@ -2171,7 +1960,7 @@ def_key "K"
 # configured here named ".notmuch".
 #
 [database]
 # configured here named ".notmuch".
 #
 [database]
-path=/home/amin/mail
+path=/home/amin/oldmail
 
 # User configuration
 #
 
 # User configuration
 #
@@ -2191,7 +1980,7 @@ path=/home/amin/mail
 [user]
 name=Amin Bandali
 primary_email=amin@aminb.org
 [user]
 name=Amin Bandali
 primary_email=amin@aminb.org
-other_email=amin@gnu.org;abandali@uwaterloo.ca;mab@gnu.org;aminb@gnu.org;
+other_email=bandali@gnu.org;abandali@uwaterloo.ca;
 
 # Configuration for "notmuch new"
 #
 
 # Configuration for "notmuch new"
 #
@@ -2277,7 +2066,7 @@ sieve-filter -eW -o postmaster_address=postmaster@aminb.org \
 
 #+begin_src sh
 # apply sent tag to messages sent by me
 
 #+begin_src sh
 # apply sent tag to messages sent by me
-notmuch tag -new +sent -- from:amin@aminb.org or from:amin@gnu.org or from:mab@gnu.org or from:aminb@gnu.org or from:abandali@uwaterloo.ca
+notmuch tag -new +sent -- from:amin@aminb.org or from:bandali@gnu.org or from:aminb@gnu.org or from:amin@gnu.org or from:mab@gnu.org or from:abandali@uwaterloo.ca
 
 # initial tagging
 notmuch tag -latest                     -- tag:latest
 
 # initial tagging
 notmuch tag -latest                     -- tag:latest
@@ -2373,113 +2162,20 @@ Unit=notmuch.service
 WantedBy=timers.target
 #+end_src
 
 WantedBy=timers.target
 #+end_src
 
-** offlineimap
-
-*** offlineimaprc
-:PROPERTIES:
-:header-args+: :tangle ~/.offlineimaprc
-:END:
-
-#+begin_src conf :tangle no
-[general]
-pythonfile = ~/.offlineimap.py
-accounts = Gmail, aminb
-maxsyncaccounts = 3
-
-[Account Gmail]
-localrepository = GmailL
-remoterepository = GmailR
-
-[Account aminb]
-localrepository = aminbL
-remoterepository = aminbR
-
-[Repository GmailL]
-type = Maildir
-localfolders = ~/Maildir/Gmail
-
-[Repository GmailR]
-type = IMAP
-remotehost = imap.gmail.com
-remoteusereval = mailuser("gmail")
-remotepasseval = mailpasswd("gmail")
-sslcacertfile = /etc/ssl/certs/ca-certificates.crt
-ssl = yes
-folderfilter = lambda foldername: foldername not in '[Gmail]/All Mail'
-maxconnections = 1
-realdelete = no
-
-[Repository aminbL]
-type = Maildir
-localfolders = ~/Maildir/aminb
-
-[Repository aminbR]
-type = IMAP
-remotehost = mail.aminb.org
-remoteusereval = mailuser("aminb")
-remotepasseval = mailpasswd("aminb")
-sslcacertfile = /etc/ssl/certs/ca-certificates.crt
-ssl = yes
-folderfilter = lambda foldername: foldername not in 'dovecot.sieve'
-maxconnections = 1
-realdelete = no
-#+end_src
-
-*** offlineimap.py
-:PROPERTIES:
-:header-args+: :tangle ~/.offlineimap.py
-:END:
-
-#+begin_src python :tangle no
-import os
-import subprocess
-
-def mailpasswd(acct):
-    acct = os.path.basename(acct)
-    path = "/home/amin/.passwd/%s.gpg" % acct
-    args = ["gpg", "--use-agent", "--quiet", "--batch", "-d", path]
-    try:
-        return subprocess.check_output(args).strip()
-    except subprocess.CalledProcessError:
-        return ""
-
-def mailuser(acct):
-    acct = os.path.basename(acct)
-    path = "/home/amin/.passwd/%s" % acct
-    args = ["cat", path]
-    try:
-        return subprocess.check_output(args).strip()
-    except subprocess.CalledProcessError:
-        return ""
-
-def prime_gpg_agent():
-  ret = False
-  i = 1
-  while not ret:
-    ret = (mailpasswd("prime") == "prime")
-    if i > 2:
-      from offlineimap.ui import getglobalui
-      sys.stderr.write("Error reading in passwords. Terminating.\n")
-      getglobalui().terminate()
-    i += 1
-  return ret
-
-prime_gpg_agent()
-#+end_src
-
 ** pigeonhole
 ** pigeonhole
-*** gnu.sieve
+*** amin.sieve
 :PROPERTIES:
 :PROPERTIES:
-:header-args+: :tangle ~/sieve/gnu.sieve :comments none
+:header-args+: :tangle ~/mail/aminb.org/amin/sieve/amin.sieve :comments none
 :END:
 
 #+begin_src conf
 :END:
 
 #+begin_src conf
-require [ "regex", "variables", "fileinto", "envelope", "mailbox", "imap4flags", "include" ];
+require ["regex", "variables", "fileinto", "envelope",
+         "mailbox", "imap4flags", "include"];
 
 
+# webmasters
 if anyof (
 if anyof (
-  address :is "from" "webmasters@gnu.org",
-  address :is "from" "webmasters-comment@gnu.org") {
-  fileinto :create "webmasters";
+  address :is "from" ["webmasters@gnu.org", "webmasters-comment@gnu.org"]) {
+  fileinto :create "gnu.webmasters";
   stop;
 }
 
   stop;
 }
 
@@ -2488,453 +2184,57 @@ include :personal "lists";
 
 *** lists.sieve
 :PROPERTIES:
 
 *** lists.sieve
 :PROPERTIES:
-:header-args+: :tangle ~/sieve/lists.sieve :comments none
+:header-args+: :tangle ~/mail/aminb.org/amin/sieve/lists.sieve :comments none
 :END:
 
 #+begin_src conf
 :END:
 
 #+begin_src conf
-require [ "regex", "variables", "fileinto", "envelope", "mailbox", "imap4flags",
"include" ];
+require ["regex", "variables", "fileinto", "envelope",
        "mailbox", "imap4flags", "include"];
 
 
+# mailing lists
 if anyof (
 if anyof (
-    header :contains "list-id" "<emacs-devel.gnu.org>",
-    header :contains "list-id" "<emacs-orgmode.gnu.org>",
-    header :contains "list-id" "<emacsconf-discuss.gnu.org>",
-    header :contains "list-id" "<fencepost-users.gnu.org>",
-    header :contains "list-id" "<guix-devel.gnu.org>",
-    header :contains "list-id" "<guile-devel.gnu.org>",
-    header :contains "list-id" "<help-gnu-emacs.gnu.org>",
-    header :contains "list-id" "<info-gnu-emacs.gnu.org>",
-    header :contains "list-id" "<www-commits.gnu.org>",
-    header :contains "list-id" "<www-discuss.gnu.org>",
-    header :contains "list-id" "<deepspec.lists.cs.princeton.edu>",
-    header :contains "list-id" "<haskell-cafe.haskell.org>",
-    header :contains "list-id" "<haskell-art.we.lurk.org>",
-    header :contains "list-id" "<notmuch.notmuchmail.org>") {
+    header :contains "list-id"
+        [ "<emacs-devel.gnu.org>"
+        , "<emacs-orgmode.gnu.org>"
+        , "<emacsconf-discuss.gnu.org>"
+        , "<fencepost-users.gnu.org>"
+        , "<guix-devel.gnu.org>"
+        , "<guile-devel.gnu.org>"
+        , "<help-gnu-emacs.gnu.org>"
+        , "<info-gnu-emacs.gnu.org>"
+        , "<info-guix.gnu.org>"
+        , "<www-commits.gnu.org>"
+        , "<www-discuss.gnu.org>"
+        , "<deepspec.lists.cs.princeton.edu>"
+        , "<haskell-cafe.haskell.org>"
+        , "<haskell-art.we.lurk.org>"
+        , "<notmuch.notmuchmail.org>"
+        ] ) {
     if header :regex "list-id" "<([a-z_0-9-]+)[.@]" {
         set :lower "listname" "${1}";
     if header :regex "list-id" "<([a-z_0-9-]+)[.@]" {
         set :lower "listname" "${1}";
-        fileinto :create "l/${listname}";
+        fileinto :create "gnu.${listname}";
+        stop;
     }
 }
 
     }
 }
 
+# sr.ht lists, with dots ('.') omitted
 if anyof (
 if anyof (
-    header :contains "list-id" "<~aminb/test-priv@lists.sr.ht>",
-    header :contains "list-id" "<~sircmpwn/sr.ht-admins@lists.sr.ht>",
-    header :contains "list-id" "<~sircmpwn/sr.ht-announce@lists.sr.ht>",
-    header :contains "list-id" "<~sircmpwn/sr.ht-dev@lists.sr.ht>",
-    header :contains "list-id" "<~sircmpwn/sr.ht-discuss@lists.sr.ht>") {
-    if header :regex "list-id" "(~[a-z_0-9-]+)/([a-z_0-9.-]+)@" {
+    header :contains "list-id"
+        [ "<~bandali/public-inbox@lists.sr.ht>"
+        , "<~sircmpwn/sr.ht-admins@lists.sr.ht>"
+        , "<~sircmpwn/sr.ht-announce@lists.sr.ht>"
+        , "<~sircmpwn/sr.ht-dev@lists.sr.ht>"
+        , "<~sircmpwn/sr.ht-discuss@lists.sr.ht>"
+        ] ) {
+    if header :regex "list-id" "(~[a-z_0-9-]+)/([^.]*)\\.?([^.]*)\\.?([^.]*)\\.?([^.]*)\\.?([^.]*)\\.?([^.]*)@" {
         set :lower "username" "${1}";
         set :lower "username" "${1}";
-        set :lower "listname" "${2}";
-        fileinto :create "l/${username}/${listname}";
+        set :lower "listname" "${2}${3}${4}${5}${6}${7}";
+        fileinto :create "gnu.${username}.${listname}";
+        stop;
     }
 }
 #+end_src
 
     }
 }
 #+end_src
 
-** polybar
-
-*** config
-:PROPERTIES:
-:header-args+: :tangle ~/.config/polybar/config
-:END:
-
-#+begin_src conf :tangle no
-;=====================================================
-;
-;   To learn more about how to configure Polybar
-;   go to https://github.com/jaagr/polybar
-;
-;   The README contains alot of information
-;
-;=====================================================
-
-[colors]
-;background = ${xrdb:color0:#222}
-background = #222
-background-alt = #444
-;foreground = ${xrdb:color7:#222}
-foreground = #eee
-foreground-alt = #888
-primary = #ffb52a
-secondary = #e60053
-alert = #bd2c40
-
-[bar/main]
-;monitor = ${env:MONITOR:HDMI-1}
-width = 100%
-height = 27
-;offset-x = 1%
-;offset-y = 1%
-radius = 3.0
-fixed-center = true
-
-background = ${colors.background}
-foreground = ${colors.foreground}
-
-line-size = 3
-line-color = #f00
-
-border-size = 4
-border-color = #00000000
-
-padding-left = 0
-padding-right = 2
-
-module-margin-left = 2
-module-margin-right = 2
-
-font-0 = Ubuntu:fontformat=truetype:antialias=true:pixelsize=9;1
-font-1 = unifont:fontformat=truetype:size=8:antialias=false;0
-font-2 = Wuncon Siji:pixelsize=10;1
-font-3 = FontAwesome:pixelsize=10;1
-
-modules-left = bspwm xwindow
-modules-center = 
-modules-right = volume filesystem mail xkeyboard memory cpu temperature date powermenu
-
-tray-position = right
-tray-padding = 1
-;tray-transparent = true
-;tray-background = #0063ff
-tray-maxsize = 18
-
-wm-restack = bspwm
-
-;override-redirect = true
-
-scroll-up = bspwm-desknext
-scroll-down = bspwm-deskprev
-
-[module/xwindow]
-type = internal/xwindow
-label = %title:0:50:...%
-
-[module/xkeyboard]
-type = internal/xkeyboard
-blacklist-0 = num lock
-
-format-prefix = " "
-format-prefix-foreground = ${colors.foreground-alt}
-format-prefix-underline = ${colors.secondary}
-
-label-layout = %layout%
-label-layout-underline = ${colors.secondary}
-
-label-indicator-padding = 2
-label-indicator-margin = 1
-label-indicator-background = ${colors.secondary}
-label-indicator-underline = ${colors.secondary}
-
-[module/filesystem]
-type = internal/fs
-interval = 25
-
-mount-0 = /
-
-label-mounted = %{F#0a81f5}%mountpoint%%{F-}: %percentage_used%%
-label-unmounted = %mountpoint% not mounted
-label-unmounted-foreground = ${colors.foreground-alt}
-
-[module/bspwm]
-type = internal/bspwm
-
-label-focused = %index%
-label-focused-background = ${colors.background-alt}
-label-focused-underline= ${colors.primary}
-label-focused-padding = 2
-
-label-occupied = %index%
-label-occupied-padding = 2
-
-label-urgent = %index%!
-label-urgent-background = ${colors.alert}
-label-urgent-padding = 2
-
-label-empty = %index%
-label-empty-foreground = ${colors.foreground-alt}
-label-empty-padding = 2
-
-[module/i3]
-type = internal/i3
-format = <label-state> <label-mode>
-index-sort = true
-wrapping-scroll = false
-
-; Only show workspaces on the same output as the bar
-;pin-workspaces = true
-
-label-mode-padding = 2
-label-mode-foreground = #000
-label-mode-background = ${colors.primary}
-
-; focused = Active workspace on focused monitor
-label-focused = %index%
-label-focused-background = ${module/bspwm.label-focused-background}
-label-focused-underline = ${module/bspwm.label-focused-underline}
-label-focused-padding = ${module/bspwm.label-focused-padding}
-
-; unfocused = Inactive workspace on any monitor
-label-unfocused = %index%
-label-unfocused-padding = ${module/bspwm.label-occupied-padding}
-
-; visible = Active workspace on unfocused monitor
-label-visible = %index%
-label-visible-background = ${self.label-focused-background}
-label-visible-underline = ${self.label-focused-underline}
-label-visible-padding = ${self.label-focused-padding}
-
-; urgent = Workspace with urgency hint set
-label-urgent = %index%
-label-urgent-background = ${module/bspwm.label-urgent-background}
-label-urgent-padding = ${module/bspwm.label-urgent-padding}
-
-[module/mpd]
-type = internal/mpd
-format-online = <label-song>  <icon-prev> <icon-stop> <toggle> <icon-next>
-
-icon-prev = 
-icon-stop = 
-icon-play = 
-icon-pause = 
-icon-next = 
-
-label-song-maxlen = 25
-label-song-ellipsis = true
-
-[module/xbacklight]
-type = internal/xbacklight
-
-format = <label> <bar>
-label = BL
-
-bar-width = 10
-bar-indicator = |
-bar-indicator-foreground = #ff
-bar-indicator-font = 2
-bar-fill = ─
-bar-fill-font = 2
-bar-fill-foreground = #9f78e1
-bar-empty = ─
-bar-empty-font = 2
-bar-empty-foreground = ${colors.foreground-alt}
-
-[module/backlight-acpi]
-inherit = module/xbacklight
-type = internal/backlight
-;card = intel_backlight
-card = mba6x_backlight
-
-[module/cpu]
-type = internal/cpu
-interval = 2
-format-prefix = " "
-format-prefix-foreground = ${colors.foreground-alt}
-format-underline = #f90000
-label = %percentage%%
-
-[module/memory]
-type = internal/memory
-interval = 2
-format-prefix = " "
-format-prefix-foreground = ${colors.foreground-alt}
-format-underline = #4bffdc
-label = %percentage_used%%
-
-[module/wlan]
-type = internal/network
-interface = 
-interval = 3.0
-
-format-connected = <ramp-signal> <label-connected>
-format-connected-underline = #9f78e1
-label-connected = %essid%
-
-format-disconnected =
-;format-disconnected = <label-disconnected>
-;format-disconnected-underline = ${self.format-connected-underline}
-;label-disconnected = %ifname% disconnected
-;label-disconnected-foreground = ${colors.foreground-alt}
-
-ramp-signal-0 = 
-ramp-signal-1 = 
-ramp-signal-2 = 
-ramp-signal-3 = 
-ramp-signal-4 = 
-ramp-signal-foreground = ${colors.foreground-alt}
-
-[module/eth]
-type = internal/network
-interface = 
-interval = 3.0
-
-format-connected-underline = #55aa55
-format-connected-prefix = " "
-format-connected-prefix-foreground = ${colors.foreground-alt}
-label-connected = %local_ip%
-
-format-disconnected =
-;format-disconnected = <label-disconnected>
-;format-disconnected-underline = ${self.format-connected-underline}
-;label-disconnected = %ifname% disconnected
-;label-disconnected-foreground = ${colors.foreground-alt}
-
-[module/date]
-type = internal/date
-interval = 5
-
-date =
-date-alt = " %Y-%m-%d"
-
-time = %H:%M
-time-alt = %H:%M:%S
-
-format-prefix = 
-format-prefix-foreground = ${colors.foreground-alt}
-format-underline = #0a6cf5
-
-label = %date% %time%
-
-[module/volume]
-type = internal/volume
-
-format-volume = <label-volume> <bar-volume>
-label-volume = vol
-label-volume-foreground = ${root.foreground}
-
-format-muted-prefix = " "
-format-muted-foreground = ${colors.foreground-alt}
-label-muted = mute
-
-bar-volume-width = 10
-bar-volume-foreground-0 = #55aa55
-bar-volume-foreground-1 = #55aa55
-bar-volume-foreground-2 = #55aa55
-bar-volume-foreground-3 = #55aa55
-bar-volume-foreground-4 = #55aa55
-bar-volume-foreground-5 = #f5a70a
-bar-volume-foreground-6 = #ff5555
-bar-volume-gradient = false
-bar-volume-indicator = |
-bar-volume-indicator-font = 2
-bar-volume-fill = ─
-bar-volume-fill-font = 2
-bar-volume-empty = ─
-bar-volume-empty-font = 2
-bar-volume-empty-foreground = ${colors.foreground-alt}
-
-[module/battery]
-type = internal/battery
-battery = BAT0
-adapter = ADP1
-full-at = 64
-
-format-charging = <animation-charging> <label-charging>
-format-charging-underline = #ffb52a
-
-format-discharging = <ramp-capacity> <label-discharging>
-format-discharging-underline = ${self.format-charging-underline}
-
-format-full-prefix = " "
-format-full-prefix-foreground = ${colors.foreground-alt}
-format-full-underline = ${self.format-charging-underline}
-
-ramp-capacity-0 = 
-ramp-capacity-1 = 
-ramp-capacity-2 = 
-ramp-capacity-foreground = ${colors.foreground-alt}
-
-animation-charging-0 = 
-animation-charging-1 = 
-animation-charging-2 = 
-animation-charging-foreground = ${colors.foreground-alt}
-animation-charging-framerate = 750
-
-[module/temperature]
-type = internal/temperature
-thermal-zone = 1
-warn-temperature = 66
-
-format = <ramp> <label>
-format-underline = #f50a4d
-format-warn = <ramp> <label-warn>
-format-warn-underline = ${self.format-underline}
-
-label = %temperature%
-label-warn = %temperature%
-label-warn-foreground = ${colors.secondary}
-
-ramp-0 = 
-ramp-1 = 
-ramp-2 = 
-ramp-foreground = ${colors.foreground-alt}
-
-[module/powermenu]
-type = custom/menu
-
-format-spacing = 1
-
-label-open = 
-label-open-foreground = ${colors.secondary}
-label-close =  cancel
-label-close-foreground = ${colors.secondary}
-label-separator = |
-label-separator-foreground = ${colors.foreground-alt}
-
-menu-0-0 = reboot
-menu-0-0-exec = menu-open-1
-menu-0-1 = power off
-menu-0-1-exec = menu-open-2
-
-menu-1-0 = cancel
-menu-1-0-exec = menu-open-0
-menu-1-1 = reboot
-menu-1-1-exec = sudo reboot
-
-menu-2-0 = power off
-menu-2-0-exec = sudo poweroff
-menu-2-1 = cancel
-menu-2-1-exec = menu-open-0
-
-[module/mail]
-type = custom/script
-interval = 60
-format = <label>
-format-prefix = " "
-format-prefix-foreground = ${colors.foreground-alt}
-format-underline = #0a6cf5
-exec = notmuch count tag:unread
-
-[settings]
-screenchange-reload = true
-;compositing-background = xor
-;compositing-background = screen
-;compositing-foreground = source
-;compositing-border = over
-
-[global/wm]
-margin-top = 0
-margin-bottom = 0
-
-; vim:ft=dosini
-#+end_src
-
-*** polybar-launch
-:PROPERTIES:
-:header-args+: :tangle ~/.local/bin/polybar-launch :shebang "#!/usr/bin/env sh"
-:END:
-
-#+begin_src sh :tangle no
-# Terminate already running bar instances
-killall -q polybar
-
-# Wait until the processes have been shut down
-while pgrep -x polybar >/dev/null; do sleep 1; done
-
-# Launch main bar
-polybar main &
-
-echo "Bars launched..."
-#+end_src
-
 ** PowerTOP
 :PROPERTIES:
 :header-args+: :tangle "/sudo::/etc/systemd/system/powertop.service"
 ** PowerTOP
 :PROPERTIES:
 :header-args+: :tangle "/sudo::/etc/systemd/system/powertop.service"
@@ -2952,637 +2252,6 @@ RemainAfterExit=true
 WantedBy=multi-user.target
 #+end_src
 
 WantedBy=multi-user.target
 #+end_src
 
-** ranger
-
-*** rc.conf
-:PROPERTIES:
-:header-args+: :tangle ~/.config/ranger/rc.conf
-:END:
-
-#+begin_src conf :tangle no
-# ===================================================================
-# This file contains the default startup commands for ranger.
-# To change them, it is recommended to create the file
-# ~/.config/ranger/rc.conf and add your custom commands there.
-#
-# If you copy this whole file there, you may want to set the environment
-# variable RANGER_LOAD_DEFAULT_RC to FALSE to avoid loading it twice.
-#
-# The purpose of this file is mainly to define keybindings and settings.
-# For running more complex python code, please create a plugin in "plugins/" or
-# a command in "commands.py".
-#
-# Each line is a command that will be run before the user interface
-# is initialized.  As a result, you can not use commands which rely
-# on the UI such as :delete or :mark.
-# ===================================================================
-
-# ===================================================================
-# == Options
-# ===================================================================
-
-# How many columns are there, and what are their relative widths?
-set column_ratios 1,3,4
-
-# Which files should be hidden? (regular expression)
-set hidden_filter ^\.|\.(?:pyc|pyo|bak|swp)$|^lost\+found$|^__(py)?cache__$
-
-# Show hidden files? You can toggle this by typing 'zh'
-set show_hidden false
-
-# Ask for a confirmation when running the "delete" command?
-# Valid values are "always" (default), "never", "multiple"
-# With "multiple", ranger will ask only if you delete multiple files at once.
-set confirm_on_delete multiple
-
-# Which script is used to generate file previews?
-# ranger ships with scope.sh, a script that calls external programs (see
-# README for dependencies) to preview images, archives, etc.
-set preview_script ~/.config/ranger/scope.sh
-
-# Use the external preview script or display simple plain text previews?
-set use_preview_script true
-
-# Open all images in this directory when running certain image viewers
-# like feh or sxiv?  You can still open selected files by marking them.
-set open_all_images true
-
-# Be aware of version control systems and display information.
-set vcs_aware false
-
-# State of the three backends git, hg, bzr. The possible states are
-# disabled, local (only show local info), enabled (show local and remote
-# information).
-set vcs_backend_git enabled
-set vcs_backend_hg disabled
-set vcs_backend_bzr disabled
-
-# Preview images in full color with the external command "w3mimgpreview"?
-# This requires the console web browser "w3m" and a supported terminal.
-# It has been successfully tested with "xterm" and "urxvt" without tmux.
-set preview_images true
-
-# Use a unicode "..." character to mark cut-off filenames?
-set unicode_ellipsis false
-
-# Show dotfiles in the bookmark preview box?
-set show_hidden_bookmarks true
-
-# Which colorscheme to use?  These colorschemes are available by default:
-# default, jungle, snow
-set colorscheme default
-
-# Preview files on the rightmost column?
-# And collapse (shrink) the last column if there is nothing to preview?
-set preview_files true
-set preview_directories true
-set collapse_preview true
-
-# Save the console history on exit?
-set save_console_history true
-
-# Draw the status bar on top of the browser window (default: bottom)
-set status_bar_on_top false
-
-# Draw a progress bar in the status bar which displays the average state of all
-# currently running tasks which support progress bars?
-set draw_progress_bar_in_status_bar true
-
-# Draw borders around columns?
-set draw_borders true
-
-# Display the directory name in tabs?
-set dirname_in_tabs false
-
-# Enable the mouse support?
-set mouse_enabled true
-
-# Display the file size in the main column or status bar?
-set display_size_in_main_column true
-set display_size_in_status_bar true
-
-# Display files tags in all columns or only in main column?
-set display_tags_in_all_columns true
-
-# Set a title for the window?
-set update_title false
-
-# Set the title to "ranger" in the tmux program?
-set update_tmux_title false
-
-# Shorten the title if it gets long?  The number defines how many
-# directories are displayed at once, 0 turns off this feature.
-set shorten_title 3
-
-# Abbreviate $HOME with ~ in the titlebar (first line) of ranger?
-set tilde_in_titlebar false
-
-# How many directory-changes or console-commands should be kept in history?
-set max_history_size 20
-set max_console_history_size 50
-
-# Try to keep so much space between the top/bottom border when scrolling:
-set scroll_offset 8
-
-# Flush the input after each key hit?  (Noticable when ranger lags)
-set flushinput true
-
-# Padding on the right when there's no preview?
-# This allows you to click into the space to run the file.
-set padding_right true
-
-# Save bookmarks (used with mX and `X) instantly?
-# This helps to synchronize bookmarks between multiple ranger
-# instances but leads to *slight* performance loss.
-# When false, bookmarks are saved when ranger is exited.
-set autosave_bookmarks true
-
-# You can display the "real" cumulative size of directories by using the
-# command :get_cumulative_size or typing "dc".  The size is expensive to
-# calculate and will not be updated automatically.  You can choose
-# to update it automatically though by turning on this option:
-set autoupdate_cumulative_size false
-
-# Turning this on makes sense for screen readers:
-set show_cursor false
-
-# One of: size, basename, mtime, type
-set sort natural
-
-# Additional sorting options
-set sort_reverse false
-set sort_case_insensitive true
-set sort_directories_first true
-
-# Enable this if key combinations with the Alt Key don't work for you.
-# (Especially on xterm)
-set xterm_alt_key false
-
-# ===================================================================
-# == Local Options
-# ===================================================================
-# You can set local options that only affect a single directory.
-
-# Examples:
-# setlocal path=~/downloads sort mtime
-
-# ===================================================================
-# == Command Aliases in the Console
-# ===================================================================
-
-alias e    edit
-alias q    quit
-alias q!   quitall
-alias qall quitall
-alias setl setlocal
-
-alias filter     scout -prt
-alias find       scout -aet
-alias mark       scout -mr
-alias unmark     scout -Mr
-alias search     scout -rs
-alias search_inc scout -rts
-alias travel     scout -aefiklst
-
-# ===================================================================
-# == Define keys for the browser
-# ===================================================================
-
-# Basic
-map     Q quit!
-map     q quit
-copymap q ZZ ZQ
-
-map R     reload_cwd
-map <C-r> reset
-map <C-l> redraw_window
-map <C-c> abort
-map <esc> change_mode normal
-
-map i display_file
-map ? help
-map W display_log
-map w taskview_open
-map S shell $SHELL
-
-map :  console
-map ;  console
-map !  console shell 
-map @  console -p6 shell  %%s
-map #  console shell -p 
-map s  console shell 
-map r  chain draw_possible_programs; console open_with 
-map f  console find 
-map cd console cd 
-
-# Tagging / Marking
-map t       tag_toggle
-map ut      tag_remove
-map "<any>  tag_toggle tag=%any
-map <Space> mark_files toggle=True
-map v       mark_files all=True toggle=True
-map uv      mark_files all=True val=False
-map V       toggle_visual_mode
-map uV      toggle_visual_mode reverse=True
-
-# For the nostalgics: Midnight Commander bindings
-map <F1> help
-map <F3> display_file
-map <F4> edit
-map <F5> copy
-map <F6> cut
-map <F7> console mkdir 
-map <F8> console delete
-map <F10> exit
-
-# In case you work on a keyboard with dvorak layout
-map <UP>       move up=1
-map <DOWN>     move down=1
-map <LEFT>     move left=1
-map <RIGHT>    move right=1
-map <HOME>     move to=0
-map <END>      move to=-1
-map <PAGEDOWN> move down=1   pages=True
-map <PAGEUP>   move up=1     pages=True
-map <CR>       move right=1
-map <DELETE>   console delete
-map <INSERT>   console touch 
-
-# VIM-like
-copymap <UP>       k
-copymap <DOWN>     j
-copymap <LEFT>     h
-copymap <RIGHT>    l
-copymap <HOME>     gg
-copymap <END>      G
-copymap <PAGEDOWN> <C-F>
-copymap <PAGEUP>   <C-B>
-
-map J  move down=0.5  pages=True
-map K  move up=0.5    pages=True
-copymap J <C-D>
-copymap K <C-U>
-
-# Jumping around
-map H     history_go -1
-map L     history_go 1
-map ]     move_parent 1
-map [     move_parent -1
-map }     traverse
-
-map gh cd ~
-map ge cd /etc
-map gu cd /usr
-map gd cd /dev
-map gl cd -r .
-map gL cd -r %f
-map go cd /opt
-map gv cd /var
-map gm cd /media
-map gM cd /mnt
-map gs cd /srv
-map gr cd /
-map gR eval fm.cd(ranger.RANGERDIR)
-map g/ cd /
-map g? cd /usr/share/doc/ranger
-
-# External Programs
-map E  edit
-map du shell -p du --max-depth=1 -h --apparent-size
-map dU shell -p du --max-depth=1 -h --apparent-size | sort -rh
-map yp shell -d echo -n %d/%f | xsel -i
-map yd shell -d echo -n %d    | xsel -i
-map yn shell -d echo -n %f    | xsel -i
-
-# Filesystem Operations
-map =  chmod
-
-map cw console rename 
-map A  eval fm.open_console('rename ' + fm.thisfile.basename)
-map I  eval fm.open_console('rename ' + fm.thisfile.basename, position=7)
-
-map pp paste
-map po paste overwrite=True
-map pl paste_symlink relative=False
-map pL paste_symlink relative=True
-map phl paste_hardlink
-map pht paste_hardlinked_subtree
-
-map dd cut
-map ud uncut
-map da cut mode=add
-map dr cut mode=remove
-
-map yy copy
-map uy uncut
-map ya copy mode=add
-map yr copy mode=remove
-
-# Temporary workarounds
-map dgg eval fm.cut(dirarg=dict(to=0), narg=quantifier)
-map dG  eval fm.cut(dirarg=dict(to=-1), narg=quantifier)
-map dj  eval fm.cut(dirarg=dict(down=1), narg=quantifier)
-map dk  eval fm.cut(dirarg=dict(up=1), narg=quantifier)
-map ygg eval fm.copy(dirarg=dict(to=0), narg=quantifier)
-map yG  eval fm.copy(dirarg=dict(to=-1), narg=quantifier)
-map yj  eval fm.copy(dirarg=dict(down=1), narg=quantifier)
-map yk  eval fm.copy(dirarg=dict(up=1), narg=quantifier)
-
-# Searching
-map /  console search 
-map n  search_next
-map N  search_next forward=False
-map ct search_next order=tag
-map cs search_next order=size
-map ci search_next order=mimetype
-map cc search_next order=ctime
-map cm search_next order=mtime
-map ca search_next order=atime
-
-# Tabs
-map <C-n>     tab_new ~
-map <C-w>     tab_close
-map <TAB>     tab_move 1
-map <S-TAB>   tab_move -1
-map <A-Right> tab_move 1
-map <A-Left>  tab_move -1
-map gt        tab_move 1
-map gT        tab_move -1
-map gn        tab_new ~
-map gc        tab_close
-map uq        tab_restore
-map <a-1>     tab_open 1
-map <a-2>     tab_open 2
-map <a-3>     tab_open 3
-map <a-4>     tab_open 4
-map <a-5>     tab_open 5
-map <a-6>     tab_open 6
-map <a-7>     tab_open 7
-map <a-8>     tab_open 8
-map <a-9>     tab_open 9
-
-# Sorting
-map or toggle_option sort_reverse
-map os chain set sort=size;      set sort_reverse=False
-map ob chain set sort=basename;  set sort_reverse=False
-map on chain set sort=natural;   set sort_reverse=False
-map om chain set sort=mtime;     set sort_reverse=False
-map oc chain set sort=ctime;     set sort_reverse=False
-map oa chain set sort=atime;     set sort_reverse=False
-map ot chain set sort=type;      set sort_reverse=False
-
-map oS chain set sort=size;      set sort_reverse=True
-map oB chain set sort=basename;  set sort_reverse=True
-map oN chain set sort=natural;   set sort_reverse=True
-map oM chain set sort=mtime;     set sort_reverse=True
-map oC chain set sort=ctime;     set sort_reverse=True
-map oA chain set sort=atime;     set sort_reverse=True
-map oT chain set sort=type;      set sort_reverse=True
-
-map dc get_cumulative_size
-
-# Settings
-map zc    toggle_option collapse_preview
-map zd    toggle_option sort_directories_first
-map zh    toggle_option show_hidden
-map <C-h> toggle_option show_hidden
-map zi    toggle_option flushinput
-map zm    toggle_option mouse_enabled
-map zp    toggle_option preview_files
-map zP    toggle_option preview_directories
-map zs    toggle_option sort_case_insensitive
-map zu    toggle_option autoupdate_cumulative_size
-map zv    toggle_option use_preview_script
-map zf    console filter 
-
-# Bookmarks
-map `<any>  enter_bookmark %any
-map '<any>  enter_bookmark %any
-map m<any>  set_bookmark %any
-map um<any> unset_bookmark %any
-
-map m<bg>   draw_bookmarks
-copymap m<bg>  um<bg> `<bg> '<bg>
-
-# Generate all the chmod bindings with some python help:
-eval for arg in "rwxXst": cmd("map +u{0} shell -d chmod u+{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map +g{0} shell -d chmod g+{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map +o{0} shell -d chmod o+{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map +a{0} shell -d chmod a+{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map +{0}  shell -d chmod u+{0} %s".format(arg))
-
-eval for arg in "rwxXst": cmd("map -u{0} shell -d chmod u-{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map -g{0} shell -d chmod g-{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map -o{0} shell -d chmod o-{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map -a{0} shell -d chmod a-{0} %s".format(arg))
-eval for arg in "rwxXst": cmd("map -{0}  shell -d chmod u-{0} %s".format(arg))
-
-# ===================================================================
-# == Define keys for the console
-# ===================================================================
-# Note: Unmapped keys are passed directly to the console.
-
-# Basic
-cmap <tab>   eval fm.ui.console.tab()
-cmap <s-tab> eval fm.ui.console.tab(-1)
-cmap <ESC>   eval fm.ui.console.close()
-cmap <CR>    eval fm.ui.console.execute()
-cmap <C-l>   redraw_window
-
-copycmap <ESC> <C-c>
-copycmap <CR>  <C-j>
-
-# Move around
-cmap <up>    eval fm.ui.console.history_move(-1)
-cmap <down>  eval fm.ui.console.history_move(1)
-cmap <left>  eval fm.ui.console.move(left=1)
-cmap <right> eval fm.ui.console.move(right=1)
-cmap <home>  eval fm.ui.console.move(right=0, absolute=True)
-cmap <end>   eval fm.ui.console.move(right=-1, absolute=True)
-
-# Line Editing
-cmap <backspace>  eval fm.ui.console.delete(-1)
-cmap <delete>     eval fm.ui.console.delete(0)
-cmap <C-w>        eval fm.ui.console.delete_word()
-cmap <C-k>        eval fm.ui.console.delete_rest(1)
-cmap <C-u>        eval fm.ui.console.delete_rest(-1)
-cmap <C-y>        eval fm.ui.console.paste()
-
-# And of course the emacs way
-copycmap <up>        <C-p>
-copycmap <down>      <C-n>
-copycmap <left>      <C-b>
-copycmap <right>     <C-f>
-copycmap <home>      <C-a>
-copycmap <end>       <C-e>
-copycmap <delete>    <C-d>
-copycmap <backspace> <C-h>
-
-# Note: There are multiple ways to express backspaces.  <backspace> (code 263)
-# and <backspace2> (code 127).  To be sure, use both.
-copycmap <backspace> <backspace2>
-
-# This special expression allows typing in numerals:
-cmap <allow_quantifiers> false
-
-# ===================================================================
-# == Pager Keybindings
-# ===================================================================
-
-# Movement
-pmap  <down>      pager_move  down=1
-pmap  <up>        pager_move  up=1
-pmap  <left>      pager_move  left=4
-pmap  <right>     pager_move  right=4
-pmap  <home>      pager_move  to=0
-pmap  <end>       pager_move  to=-1
-pmap  <pagedown>  pager_move  down=1.0  pages=True
-pmap  <pageup>    pager_move  up=1.0    pages=True
-pmap  <C-d>       pager_move  down=0.5  pages=True
-pmap  <C-u>       pager_move  up=0.5    pages=True
-
-copypmap <UP>       k  <C-p>
-copypmap <DOWN>     j  <C-n> <CR>
-copypmap <LEFT>     h
-copypmap <RIGHT>    l
-copypmap <HOME>     g
-copypmap <END>      G
-copypmap <C-d>      d
-copypmap <C-u>      u
-copypmap <PAGEDOWN> n  f  <C-F>  <Space>
-copypmap <PAGEUP>   p  b  <C-B>
-
-# Basic
-pmap     <ESC> pager_close
-copypmap <ESC> q Q i <F3>
-pmap E      edit_file
-
-# ===================================================================
-# == Taskview Keybindings
-# ===================================================================
-
-# Movement
-tmap <up>        taskview_move up=1
-tmap <down>      taskview_move down=1
-tmap <home>      taskview_move to=0
-tmap <end>       taskview_move to=-1
-tmap <pagedown>  taskview_move down=1.0  pages=True
-tmap <pageup>    taskview_move up=1.0    pages=True
-tmap <C-d>       taskview_move down=0.5  pages=True
-tmap <C-u>       taskview_move up=0.5    pages=True
-
-copytmap <UP>       k  <C-p>
-copytmap <DOWN>     j  <C-n> <CR>
-copytmap <HOME>     g
-copytmap <END>      G
-copytmap <C-u>      u
-copytmap <PAGEDOWN> n  f  <C-F>  <Space>
-copytmap <PAGEUP>   p  b  <C-B>
-
-# Changing priority and deleting tasks
-tmap J          eval -q fm.ui.taskview.task_move(-1)
-tmap K          eval -q fm.ui.taskview.task_move(0)
-tmap dd         eval -q fm.ui.taskview.task_remove()
-tmap <pagedown> eval -q fm.ui.taskview.task_move(-1)
-tmap <pageup>   eval -q fm.ui.taskview.task_move(0)
-tmap <delete>   eval -q fm.ui.taskview.task_remove()
-
-# Basic
-tmap <ESC> taskview_close
-copytmap <ESC> q Q w <C-c>
-#+end_src
-
-*** scope.sh
-:PROPERTIES:
-:header-args+: :tangle ~/.config/ranger/scope.sh :shebang "#!/usr/bin/env sh"
-:END:
-
-#+begin_src sh :tangle no
-# ranger supports enhanced previews.  If the option "use_preview_script"
-# is set to True and this file exists, this script will be called and its
-# output is displayed in ranger.  ANSI color codes are supported.
-
-# NOTES: This script is considered a configuration file.  If you upgrade
-# ranger, it will be left untouched. (You must update it yourself.)
-# Also, ranger disables STDIN here, so interactive scripts won't work properly
-
-# Meanings of exit codes:
-# code | meaning    | action of ranger
-# -----+------------+-------------------------------------------
-# 0    | success    | success. display stdout as preview
-# 1    | no preview | failure. display no preview at all
-# 2    | plain text | display the plain content of the file
-# 3    | fix width  | success. Don't reload when width changes
-# 4    | fix height | success. Don't reload when height changes
-# 5    | fix both   | success. Don't ever reload
-
-# Meaningful aliases for arguments:
-path="$1"    # Full path of the selected file
-width="$2"   # Width of the preview pane (number of fitting characters)
-height="$3"  # Height of the preview pane (number of fitting characters)
-
-maxln=200    # Stop after $maxln lines.  Can be used like ls | head -n $maxln
-
-# Find out something about the file:
-mimetype=$(file --mime-type -Lb "$path")
-extension=${path##*.}
-
-# Functions:
-# runs a command and saves its output into $output.  Useful if you need
-# the return value AND want to use the output in a pipe
-try() { output=$(eval '"$@"'); }
-
-# writes the output of the previouosly used "try" command
-dump() { echo "$output"; }
-
-# a common post-processing function used after most commands
-trim() { head -n "$maxln"; }
-
-# wraps highlight to treat exit code 141 (killed by SIGPIPE) as success
-highlight() { command highlight "$@"; test $? = 0 -o $? = 141; }
-
-case "$extension" in
-    # Archive extensions:
-    7z|a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|\
-    rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip)
-        try als "$path" && { dump | trim; exit 0; }
-        try acat "$path" && { dump | trim; exit 3; }
-        try bsdtar -lf "$path" && { dump | trim; exit 0; }
-        exit 1;;
-    rar)
-        try unrar -p- lt "$path" && { dump | trim; exit 0; } || exit 1;;
-    # PDF documents:
-    pdf)
-        try pdftotext -l 10 -nopgbrk -q "$path" - && \
-            { dump | trim | fmt -s -w $width; exit 0; } || exit 1;;
-    # BitTorrent Files
-    torrent)
-        try transmission-show "$path" && { dump | trim; exit 5; } || exit 1;;
-    # HTML Pages:
-    htm|html|xhtml)
-        try w3m    -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; }
-        try lynx   -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; }
-        try elinks -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; }
-        ;; # fall back to highlight/cat if the text browsers fail
-esac
-
-case "$mimetype" in
-    # Syntax highlight for text files:
-    text/* | */xml)
-        try highlight --out-format=ansi "$path" && { dump | trim; exit 5; } || exit 2;;
-    # Ascii-previews of images:
-    image/*)
-        img2txt --gamma=0.6 --width="$width" "$path" && exit 4 || exit 1;;
-    # Display information about media files:
-    video/* | audio/*)
-        exiftool "$path" && exit 5
-        # Use sed to remove spaces so the output fits into the narrow window
-        try mediainfo "$path" && { dump | trim | sed 's/  \+:/: /;';  exit 5; } || exit 1;;
-esac
-
-exit 1
-#+end_src
-
 ** redshift
 :PROPERTIES:
 :header-args+: :tangle ~/.config/redshift.conf :comments none
 ** redshift
 :PROPERTIES:
 :header-args+: :tangle ~/.config/redshift.conf :comments none
@@ -3765,17 +2434,13 @@ insert_pass="Alt+n"
 #+end_src
 
 ** sway
 #+end_src
 
 ** sway
+
+*** main
 :PROPERTIES:
 :header-args+: :tangle ~/.config/sway/config
 :END:
 
 #+begin_src conf
 :PROPERTIES:
 :header-args+: :tangle ~/.config/sway/config
 :END:
 
 #+begin_src conf
-exec xrdb .Xresources
-exec dunst
-exec pgrep -x "systemd-inhibit" || \
-     systemd-inhibit --what=handle-power-key --who=aminb \
-     --why="Handle power button in sway" sleep infinity
-
 ### Variables
 # super
 set $mod Mod4
 ### Variables
 # super
 set $mod Mod4
@@ -3802,35 +2467,8 @@ output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill
 ### Idle configuration
 
 exec swayidle \
 ### Idle configuration
 
 exec swayidle \
-   timeout 120 swaylock \
-   timeout 180 'swaymsg "output * dpms off"' \
-      resume   'swaymsg "output * dpms on"'  \
-   before-sleep swaylock
-
-### Input configuration
-
-input "1739:31251:DLL07BE:01_06CB:7A13_Touchpad" {
-    dwt enabled
-    tap enabled
-    natural_scroll enabled
-    middle_emulation enabled
-    click_method clickfinger
-}
-
-input "2:7:SynPS/2_Synaptics_TouchPad" {
-    events disabled
-    dwt enabled
-    tap enabled
-    natural_scroll enabled
-    click_method clickfinger
-}
-
-input "1:1:AT_Translated_Set_2_keyboard" {
-    repeat_delay 200
-    repeat_rate 45
-    xkb_layout us_ab,ir
-    xkb_options ctrl:nocaps,altwin:swap_alt_win,grp:shifts_toggle
-}
+   timeout 120  '[ -f ~/.nosleep ] || swaymsg "output * dpms off"' \
+        resume  '[ -f ~/.nosleep ] || swaymsg "output * dpms on"'  \
 
 
 ### Key bindings
 
 
 ### Key bindings
@@ -3838,7 +2476,9 @@ input "1:1:AT_Translated_Set_2_keyboard" {
 # Basics:
 #
     # start a terminal
 # Basics:
 #
     # start a terminal
-    bindsym $mod+Return exec $term
+    bindsym $mod+Return exec $term -name floating
+    bindsym $mod+Shift+Return exec $term
+    for_window [class="URxvt" instance="floating"] floating enable
 
     # kill focused window
     bindsym $mod+Shift+q kill
 
     # kill focused window
     bindsym $mod+Shift+q kill
@@ -3860,7 +2500,7 @@ input "1:1:AT_Translated_Set_2_keyboard" {
     bindsym $mod+Shift+c reload
 
     # exit sway (logs you out of your wayland session)
     bindsym $mod+Shift+c reload
 
     # exit sway (logs you out of your wayland session)
-    bindsym $mod+Shift+e exit
+    bindsym $mod+Shift+e exit
 
     bindsym $mod+apostrophe exec rofi-light        # rofi-based brightness chooser
     bindsym XF86MonBrightnessUp exec light -A 5    # increase screen brightness
 
     bindsym $mod+apostrophe exec rofi-light        # rofi-based brightness chooser
     bindsym XF86MonBrightnessUp exec light -A 5    # increase screen brightness
@@ -3871,6 +2511,8 @@ input "1:1:AT_Translated_Set_2_keyboard" {
     bindsym XF86AudioMute exec pamixer --toggle-mute
     bindsym XF86AudioMicMute exec pactl set-source-mute 1 toggle
 
     bindsym XF86AudioMute exec pamixer --toggle-mute
     bindsym XF86AudioMicMute exec pactl set-source-mute 1 toggle
 
+    bindsym $mod+Shift+apostrophe exec rofi-remmina.py # choose remmina connection
+
     # original sway workspace switch and window move
     bindsym $mod+bracketleft workspace prev
     bindsym $mod+bracketright workspace next
     # original sway workspace switch and window move
     bindsym $mod+bracketleft workspace prev
     bindsym $mod+bracketright workspace next
@@ -3950,6 +2592,9 @@ input "1:1:AT_Translated_Set_2_keyboard" {
     # Make the current focus fullscreen
     bindsym $mod+f fullscreen
 
     # Make the current focus fullscreen
     bindsym $mod+f fullscreen
 
+    # Toggle sticky-ness of the current (floating) window
+    bindsym $mod+$mod2+space sticky toggle
+
     # Toggle the current focus between tiling and floating mode
     bindsym $mod+Shift+space floating toggle
 
     # Toggle the current focus between tiling and floating mode
     bindsym $mod+Shift+space floating toggle
 
@@ -3998,23 +2643,56 @@ bindsym $mod+Shift+r mode "resize"
 #
 # Power button
 #
 #
 # Power button
 #
-set $locker swaylock && sleep 1
 
 set $mode_system System (l)ock, (e)xit sway, (s)uspend, (h)ibernate, (r)eboot, (S)hutdown
 mode "$mode_system" {
 
 set $mode_system System (l)ock, (e)xit sway, (s)uspend, (h)ibernate, (r)eboot, (S)hutdown
 mode "$mode_system" {
-    bindsym l       exec $locker,                          mode "default"
-    bindsym e       exec swaymsg exit,                     mode "default"
-    bindsym s       exec $locker && systemctl suspend,     mode "default"
-    bindsym h       exec $locker && systemctl hibernate,   mode "default"
-    bindsym r       exec            systemctl reboot,      mode "default"
-    bindsym Shift+s exec            systemctl poweroff -i, mode "default"
+    bindsym l       exec swaylock,              mode "default"
+    bindsym e       exec swaymsg exit,          mode "default"
+    bindsym s       exec systemctl suspend,     mode "default"
+    bindsym h       exec systemctl hibernate,   mode "default"
+    bindsym r       exec systemctl reboot,      mode "default"
+    bindsym Shift+s exec systemctl poweroff -i, mode "default"
 
     # back to normal: Enter, Escape, or q
     bindsym Return mode "default"
     bindsym Escape mode "default"
     bindsym q      mode "default"
 }
 
     # back to normal: Enter, Escape, or q
     bindsym Return mode "default"
     bindsym Escape mode "default"
     bindsym q      mode "default"
 }
-bindsym XF86PowerOff mode "$mode_system"
+# bindsym XF86PowerOff mode "$mode_system"
+bindsym $mod+Shift+e mode "$mode_system"
+
+#
+# Presentation mode
+#
+
+bindsym $mod+$mod2+p exec ([ ! -e ~/.nosleep ] && touch ~/.nosleep || rm ~/.nosleep) && killall -USR1 i3status
+
+#
+# Notifications
+#
+
+bindsym $mod+Shift+n mode notifications
+mode notifications {
+    bindsym Return  exec makoctl invoke; exec makoctl dismiss; mode default
+    bindsym d       exec makoctl dismiss; mode default
+    bindsym Shift+d exec makoctl dismiss -a; mode default
+
+    bindsym Escape mode default
+    bindsym q      mode default
+}
+
+#
+# Screenshotting
+#
+
+bindsym $mod+Shift+s mode screenshot
+mode screenshot {
+    bindsym a exec grim $(xdg-user-dir PICTURES)/shots/$(date +'%Y-%m-%d-%H%M%S.png'); mode default
+    bindsym r exec slurp | grim -g - $(xdg-user-dir PICTURES)/shots/$(date +'%Y-%m-%d-%H%M%S.png'); mode default
+
+    bindsym Escape mode default
+    bindsym q      mode default
+}
 
 #
 # Status Bar:
 
 #
 # Status Bar:
@@ -4024,10 +2702,10 @@ bar {
     position bottom
     colors {
         statusline #ffffff
     position bottom
     colors {
         statusline #ffffff
-        background #323232
-        inactive_workspace #32323200 #32323200 #5c5c5c
+        background #212121
+        inactive_workspace #21212100 #21212100 #5c5c5c
     }
     }
-    status_command i3status
+    status_command i3status | my-i3status.py
 }
 
 # font pango: benis uushi 9
 }
 
 # font pango: benis uushi 9
@@ -4036,9 +2714,63 @@ bar {
 font pango: DejaVu Sans Mono 9
 # font pango: Liberation Mono 9
 
 font pango: DejaVu Sans Mono 9
 # font pango: Liberation Mono 9
 
+exec xrdb .Xresources
+# exec pgrep -x "systemd-inhibit" || \
+#      systemd-inhibit --what=handle-power-key --who=aminb \
+#      --why="Handle power button in sway" sleep infinity
+exec mako 2>&1 >/tmp/mako.log
+exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
+
 include /etc/sway/config.d/*
 include /etc/sway/config.d/*
+include ~/.config/sway/`hostname`
+
+exec systemd-notify --ready || true
+
 #+end_src
 
 #+end_src
 
+*** langa
+:PROPERTIES:
+:header-args+: :tangle ~/.config/sway/langa
+:END:
+
+#+begin_src conf
+input "2:7:SynPS/2_Synaptics_TouchPad" {
+    events disabled
+    dwt enabled
+    tap enabled
+    natural_scroll enabled
+    click_method clickfinger
+}
+
+input "1:1:AT_Translated_Set_2_keyboard" {
+    repeat_delay 200
+    repeat_rate 45
+    xkb_layout us_ab,ir
+    xkb_options ctrl:nocaps,altwin:swap_alt_win,grp:shifts_toggle
+}
+#+end_src
+
+*** shemshak
+:PROPERTIES:
+:header-args+: :tangle ~/.config/sway/shemshak
+:END:
+
+#+begin_src conf
+input "1739:31251:DLL07BE:01_06CB:7A13_Touchpad" {
+    dwt enabled
+    tap enabled
+    natural_scroll enabled
+    middle_emulation enabled
+    click_method clickfinger
+}
+
+input "1:1:AT_Translated_Set_2_keyboard" {
+    repeat_delay 200
+    repeat_rate 45
+    xkb_layout us,ir
+    xkb_options ctrl:nocaps,altwin:swap_alt_win,ctrl:rctrl_ralt,grp:shifts_toggle
+}
+#+end_src
 ** swaylock
 :PROPERTIES:
 :header-args+: :tangle ~/.config/swaylock/config
 ** swaylock
 :PROPERTIES:
 :header-args+: :tangle ~/.config/swaylock/config
@@ -4364,9 +3096,9 @@ DEVICES_TO_DISABLE_ON_STARTUP="bluetooth"
 #DEVICES_TO_DISABLE_ON_UNDOCK=""
 #+end_src
 
 #DEVICES_TO_DISABLE_ON_UNDOCK=""
 #+end_src
 
-*** pary
+*** shemshak
 
 
-#+begin_src conf :tangle (when (and (eq system-type 'gnu/linux) (string= (system-name) "pary")) "/sudo::/etc/default/tlp")
+#+begin_src conf :tangle (when (and (eq system-type 'gnu/linux) (string= (system-name) "shemshak")) "/sudo::/etc/default/tlp")
 # ------------------------------------------------------------------------------
 # tlp - Parameters for power saving
 # See full explanation: http://linrunner.de/en/tlp/docs/tlp-configuration.html
 # ------------------------------------------------------------------------------
 # tlp - Parameters for power saving
 # See full explanation: http://linrunner.de/en/tlp/docs/tlp-configuration.html
@@ -4920,9 +3652,9 @@ Emacs.font: Source Code Pro:size=14
 #+begin_src conf-xdefaults
 ! Font
 URxvt.font:             xft:source code pro:pixelsize=14:antialias=true:hinting=true, xft:dejavu sans mono:pixelsize=15:antialias=true:hinting=true
 #+begin_src conf-xdefaults
 ! Font
 URxvt.font:             xft:source code pro:pixelsize=14:antialias=true:hinting=true, xft:dejavu sans mono:pixelsize=15:antialias=true:hinting=true
-URxvt.boldFont:         xft:source code pro semibold:pixelsize=14:antialias=true:hinting=true:bold, xft:dejavu sans mono:pixelsize=15:antialias=true:hinting=true:bold
-URxvt.italicFont:       xft:source code pro italic:pixelsize=14:antialias=true:hinting=true:italic, xft:dejavu sans mono:pixelsize=15:antialias=true:hinting=true:italic
-URxvt.bolditalicFont:   xft:source code pro semibold italic:pixelsize=14:antialias=true:hinting=true:bold:italic, xft:dejavu sans mono:pixelsize=15:antialias=true:hinting=true:bolditalic
+URxvt.boldFont:         xft:source code pro:semibold:pixelsize=14:antialias=true:hinting=true:bold, xft:dejavu sans mono:pixelsize=15:antialias=true:hinting=true:bold
+URxvt.italicFont:       xft:source code pro:italic:pixelsize=14:antialias=true:hinting=true:italic, xft:dejavu sans mono:pixelsize=15:antialias=true:hinting=true:italic
+URxvt.bolditalicFont:   xft:source code pro:semibold:italic:pixelsize=14:antialias=true:hinting=true:bold:italic, xft:dejavu sans mono:pixelsize=15:antialias=true:hinting=true:bolditalic
 
 URxvt.xftAntialias:     true
 URxvt.letterSpace:      0
 
 URxvt.xftAntialias:     true
 URxvt.letterSpace:      0
@@ -5188,7 +3920,7 @@ zhighlighters=(main brackets pattern)
 #
 
 # Load these ssh identities with the ssh module
 #
 
 # Load these ssh identities with the ssh module
-zssh_ids=(id_ed25519_amin)
+zssh_ids=(id_ed25519_bandali)
 
 
 #
 
 
 #
@@ -5254,6 +3986,12 @@ export MOZ_USE_XINPUT2=1  # precise scrolling in firefox
 export NIXPKGS=$HOME/src/git/nixpkgs
 
 if [ -e /home/amin/.nix-profile/etc/profile.d/nix.sh ]; then . /home/amin/.nix-profile/etc/profile.d/nix.sh; fi # added by Nix installer
 export NIXPKGS=$HOME/src/git/nixpkgs
 
 if [ -e /home/amin/.nix-profile/etc/profile.d/nix.sh ]; then . /home/amin/.nix-profile/etc/profile.d/nix.sh; fi # added by Nix installer
+
+export GUIX_LOCPATH="$HOME/.guix-profile/lib/locale"
+export PATH="/$HOME/.config/guix/current/bin${PATH:+:}$PATH"
+export SSL_CERT_DIR="$HOME/.guix-profile/etc/ssl/certs"
+export SSL_CERT_FILE="$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt"
+export GIT_SSL_CAINFO="$SSL_CERT_FILE"
 #+end_src
 
 *** zshenv
 #+end_src
 
 *** zshenv
@@ -5332,10 +4070,11 @@ alias mv="mv -iv"
 alias cp="cp -iv"
 alias scl=systemctl
 alias jcl=journalctl
 alias cp="cp -iv"
 alias scl=systemctl
 alias jcl=journalctl
-alias m="mbsync -Va; getmail; notmuch new"
+alias m="mbsync uwaterloo; mbsync amin"
 alias best="youtube-dl -f best"
 alias best="youtube-dl -f best"
-alias nixx="ssh amin@nix.aminb.org"
-alias fence="ssh aminb@fencepost.gnu.org"
+alias sd="ssh deb"
+alias sf="ssh fp"
+alias sn="ssh nix"
 
 aur() {
    cd ~/usr/build
 
 aur() {
    cd ~/usr/build
@@ -5385,6 +4124,83 @@ fi
 printf '%s%%%%%2dh%02dm \n' "$perc" $((secs / 3600)) $((secs % 3600 / 60))
 #+end_src
 
 printf '%s%%%%%2dh%02dm \n' "$perc" $((secs / 3600)) $((secs % 3600 / 60))
 #+end_src
 
+** my-i3status.py
+:PROPERTIES:
+:header-args+: :tangle ~/.local/bin/my-i3status.py :shebang "#!/usr/bin/env python2"
+:END:
+
+#+begin_src python :comments none
+# -*- coding: utf-8 -*-
+
+# This script is a simple wrapper which prefixes each i3status line with custom
+# information. It is based on:
+# https://github.com/i3/i3status/blob/master/contrib/wrapper.py
+#
+# In ~/.i3status.conf, add the following line:
+#     output_format = "i3bar"
+# in the 'general' section.
+# Then, in ~/.config/i3/config or ~/.config/sway/config add:
+#     status_command i3status | my-i3status.py
+# in the 'bar' section.  Make sure my-i3status.py is in $PATH.
+#
+# © 2012 Valentin Haenel <valentin.haenel@gmx.de>
+# © 2018 Amin Bandali <bandali@gnu.org>
+#
+# This program is free software. It comes without any warranty, to the extent
+# permitted by applicable law. You can redistribute it and/or modify it under
+# the terms of the Do What The Fuck You Want To Public License (WTFPL), Version
+# 2, as published by Sam Hocevar. See http://sam.zoy.org/wtfpl/COPYING for more
+# details.
+
+import sys
+import json
+import os
+
+def get_nosleep():
+    """ Return true if ~/.nosleep exists. """
+    return os.path.isfile(os.path.expanduser("~/.nosleep"))
+
+def print_line(message):
+    """ Non-buffered printing to stdout. """
+    sys.stdout.write(message + '\n')
+    sys.stdout.flush()
+
+def read_line():
+    """ Interrupted respecting reader for stdin. """
+    # try reading a line, removing any extra whitespace
+    try:
+        line = sys.stdin.readline().strip()
+        # i3status sends EOF, or an empty line
+        if not line:
+            sys.exit(3)
+        return line
+    # exit on ctrl-c
+    except KeyboardInterrupt:
+        sys.exit()
+
+if __name__ == '__main__':
+    # Skip the first line which contains the version header.
+    print_line(read_line())
+
+    # The second line contains the start of the infinite array.
+    print_line(read_line())
+
+    while True:
+        line, prefix = read_line(), ''
+        # ignore comma at start of lines
+        if line.startswith(','):
+            line, prefix = line[1:], ','
+
+        if get_nosleep():
+            j = json.loads(line)
+            # insert information into the start of the json, but could be anywhere
+            j.insert(0, {'full_text' : '🖵 ', 'name' : 'nosleep'})
+            # and echo back new encoded json
+            print_line(prefix+json.dumps(j))
+        else:
+            print_line(prefix+line)
+#+end_src
+
 ** rofi-light
 :PROPERTIES:
 :header-args+: :tangle ~/.local/bin/rofi-light :shebang "#!/bin/bash"
 ** rofi-light
 :PROPERTIES:
 :header-args+: :tangle ~/.local/bin/rofi-light :shebang "#!/bin/bash"
@@ -5393,7 +4209,44 @@ printf '%s%%%%%2dh%02dm \n' "$perc" $((secs / 3600)) $((secs % 3600 / 60))
 #+begin_src bash
 cur=$(light -G)
 val=$(rofi -dmenu -mesg "light    $cur" -p "light -S " -l 0 -width 12)
 #+begin_src bash
 cur=$(light -G)
 val=$(rofi -dmenu -mesg "light    $cur" -p "light -S " -l 0 -width 12)
-light -S $val
+[ -n "$val" ] && light -S $val
+#+end_src
+
+** rofi-remmina.py
+:PROPERTIES:
+:header-args+: :tangle ~/.local/bin/rofi-remmina.py :shebang "#!/usr/bin/env python2"
+:END:
+
+#+begin_src python
+import ConfigParser
+import os
+from subprocess import Popen, PIPE
+
+remmina_dir = os.path.expanduser("~/.local/share/remmina")
+
+fdict = dict()
+
+for f in os.listdir(remmina_dir):
+    fp = os.path.join(remmina_dir, f)
+    c = ConfigParser.ConfigParser()
+    c.read(fp)
+    n = c.get('remmina', 'name')
+    fdict[n] = fp
+
+lines = max(min(15, len(fdict)), 1);
+width = len(max(fdict.keys(), key=len))
+rofi = Popen(["rofi", "-i", "-dmenu", \
+              "-l", str(lines), "-width", str(width), \
+              "-p", "connection"], stdout=PIPE, stdin=PIPE)
+selected = rofi.communicate("\n" \
+                            .join(fdict.keys()) \
+                            .encode("utf-8"))[0] \
+               .decode("utf-8") \
+               .strip()
+rofi.wait()
+
+r = Popen(["remmina", "-c", fdict[selected]])
+r.wait()
 #+end_src
 
 ** s (run sway)
 #+end_src
 
 ** s (run sway)
@@ -5404,7 +4257,7 @@ light -S $val
 #+begin_src bash
 export _JAVA_AWT_WM_NONREPARENTING=1
 export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true'
 #+begin_src bash
 export _JAVA_AWT_WM_NONREPARENTING=1
 export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true'
-light -Scrs "intel_backlight" 2
+light -Nr 2
 source $HOME/.zprofile
 sway
 #+end_src
 source $HOME/.zprofile
 sway
 #+end_src