general {
colors = true
interval = 5
+ output_format = "i3bar"
}
# order += "ipv6"
# Presentation mode
#
-bindsym $mod+$mod2+p exec [ ! -e ~/.nosleep ] && touch ~/.nosleep || rm ~/.nosleep
+bindsym $mod+$mod2+p exec ([ ! -e ~/.nosleep ] && touch ~/.nosleep || rm ~/.nosleep) && killall -USR1 i3status
#
# Notifications
background #323232
inactive_workspace #32323200 #32323200 #5c5c5c
}
- status_command i3status
+ status_command i3status | my-i3status.py
}
# font pango: benis uushi 9
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"