[emacs] update 14 drones
[~bandali/configs] / rc.org
diff --git a/rc.org b/rc.org
index 03975b7..e648215 100644 (file)
--- a/rc.org
+++ b/rc.org
@@ -643,7 +643,7 @@ timeout = 0
 [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
@@ -781,7 +781,7 @@ WantedBy=timers.target
 **** send-email
 #+begin_src conf
 [sendemail]
-       smtpuser = aminb
+       smtpuser = bandali
        smtpserver = fencepost.gnu.org
        smtpserverport = 587
        smtpencryption = tls
@@ -921,6 +921,7 @@ separator_width=0
 general {
         colors = true
         interval = 5
+        output_format = "i3bar"
 }
 
 # order += "ipv6"
@@ -1548,13 +1549,17 @@ host fencepost.gnu.org
 # use `msmtp -a gnu --serverinfo --tls --tls-certcheck=off --tls-fingerprint=` to get the current fingerprint
 tls_fingerprint 34:60:91:B5:71:5B:76:87:50:F3:83:13:26:0F:EE:75:42:83:93:9A:E2:AF:1E:87:72:02:C9:61:CE:28:1B:8E
 tls_starttls on
-from aminb@gnu.org
-user aminb
+from bandali@gnu.org
+user bandali
 passwordeval gpg2 --no-tty -q -d ~/.passwd/gnu.gpg
 
-# gnu (bandali)
-account gnu-bandali : gnu
-from bandali@gnu.org
+# gnu (old)
+account gnu-aminb : gnu
+from aminb@gnu.org
+account gnu-amin : gnu
+from amin@gnu.org
+account gnu-mab : gnu
+from mab@gnu.org
 
 # uwaterloo
 account uwaterloo
@@ -3768,12 +3773,6 @@ insert_pass="Alt+n"
 :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
@@ -3800,8 +3799,8 @@ output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill
 ### Idle configuration
 
 exec swayidle \
-   timeout 120  'swaymsg "output * dpms off"' \
-   resume       'swaymsg "output * dpms on"'  \
+   timeout 120  '[ -f ~/.nosleep ] || swaymsg "output * dpms off"' \
+        resume  '[ -f ~/.nosleep ] || swaymsg "output * dpms on"'  \
    before-sleep swaylock
 
 
@@ -3987,6 +3986,39 @@ mode "$mode_system" {
 }
 bindsym XF86PowerOff 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:
 #
@@ -3998,7 +4030,7 @@ bar {
         background #323232
         inactive_workspace #32323200 #32323200 #5c5c5c
     }
-    status_command i3status
+    status_command i3status | my-i3status.py
 }
 
 # font pango: benis uushi 9
@@ -4007,9 +4039,18 @@ bar {
 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 ~/.config/sway/`hostname`
 
+exec systemd-notify --ready || true
+
 #+end_src
 
 *** langa
@@ -5401,6 +5442,83 @@ fi
 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"