git.fiddlerwoaroof.com
Browse code

Updates to xmonad and zshrc

- XMonad
- principally, enabling Maximize mode
- M-\ maximize window
- C-M-\ switch + maximize
- S-M-\ maximize + then switch (i.e. if current window maximized,
unmaximize it and switch to next window)
- roxterm
- added solarized colorscheme
- zshrc
- added a suite of functions to interact with rss feeds, leveraging
various python utilities, jq and pandoc
- broke out several items in zshrc into a new lightweight plugin
system
- updating several custom scripts

- Custom Scripts (scripts/ folder)
- goosify: uses "python-goosify" to extract interesting content from a
url (works like curl, basically)
- pslist: opens a list of process in less and, optionally, searches for
a user specified process
- secure_note: saves a file to Dropbox, encrypted
- start_paper: sets up an environment to begin working on a paper
- tabularize: justifies data, splitting on a field

fiddlerwoaroof authored on 09/02/2015 00:07:20
Showing 29 changed files
1 1
Binary files a/.xmonad/cheatsheet.png and b/.xmonad/cheatsheet.png differ
... ...
@@ -187,6 +187,14 @@ switchWorkspace target = do
187 187
   windows $ W.greedyView target
188 188
   dShow target
189 189
 
190
+maximizeSwitch = do
191
+  withFocused $ sendMessage . maximizeRestore
192
+  windows W.focusUp
193
+
194
+maximizeFlop = do
195
+  windows W.focusUp
196
+  withFocused $ sendMessage . maximizeRestore
197
+
190 198
 main = do
191 199
    xmproc <- spawnPipe "/home/edwlan/.cabal/bin/xmobar /home/edwlan/.xmobarrc"
192 200
    --xmproc1 <- spawnPipe "/home/edwlan/.cabal/bin/xmobar /home/edwlan/.xmobarrc1"
... ...
@@ -206,6 +214,8 @@ main = do
206 214
          (((mod4Mask .|. controlMask, xK_q     ),
207 215
                spawn "if type xmonad; then xmonad --recompile && xmonad --restart; else xmessage xmonad not in \\$PATH: \"$PATH\"; fi")),
208 216
 
217
+         ((mod4Mask .|. shiftMask, xK_backslash), maximizeSwitch),
218
+         ((mod4Mask .|. controlMask, xK_backslash), maximizeFlop),
209 219
          ((mod4Mask, xK_backslash), withFocused (sendMessage . maximizeRestore)),
210 220
          ((mod4Mask .|. controlMask .|. shiftMask, xK_h ), sendMessage $ Move L),
211 221
          ((mod4Mask .|. controlMask .|. shiftMask, xK_j ), sendMessage $ Move D),
... ...
@@ -24,6 +24,7 @@ export MPD_HOST=srv2.elangley.org
24 24
 
25 25
 # Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
26 26
 # Example format: plugins=(rails git textmate ruby lighthouse)
27
+fpath=(~/.zsh.d/completion $fpath)
27 28
 plugins=(git ruby rails osx brew zsh-syntax-highlighting python git-extra git-flow battery scd)
28 29
 
29 30
 source $ZSH/oh-my-zsh.sh
... ...
@@ -117,10 +118,9 @@ autoload -U tcp_point
117 118
 autoload -U tcp_shoot
118 119
 #------------------
119 120
 zfinit
120
-#if [ $TERM != 'dumb' ]; then
121
-#  eval `dircolors -b`
122
-#  alias ls='ls --color=auto'
123
-#f
121
+if [[ $TERM != 'dumb' ]]; then
122
+  eval `dircolors $HOME/github_repos/dircolors-solarized/dircolors.256dark`
123
+fi
124 124
 setopt autopushd
125 125
 setopt cdablevars
126 126
 setopt AUTO_LIST
... ...
@@ -555,4 +555,16 @@ pmkdir() {
555 555
   cd $1 
556 556
 }
557 557
 
558
+mkcd() {
559
+  mkdir "$1"
560
+  cd "$1"
561
+}
562
+
563
+### load my plugins
564
+
565
+for x in `ls $HOME/.zsh.d/*.zsh`; do
566
+  source "$x"
567
+done
568
+alias cn=current_news
569
+
558 570
 # vim: set filetype=sh:
559 571
new file mode 100644
... ...
@@ -0,0 +1,30 @@
1
+
2
+[roxterm colour scheme]
3
+foreground=#838394949696
4
+background=#00002b2b3636
5
+0=#070736364242
6
+1=#dcdc32322f2f
7
+2=#858599990000
8
+3=#b5b589890000
9
+4=#26268b8bd2d2
10
+5=#d3d336368282
11
+6=#2a2aa1a19898
12
+7=#eeeee8e8d5d5
13
+8=#00002b2b3636
14
+9=#cbcb4b4b1616
15
+10=#58586e6e7575
16
+11=#65657b7b8383
17
+12=#838394949696
18
+13=#6c6c7171c4c4
19
+14=#9393a1a1a1a1
20
+15=#fdfdf6f6e3e3
21
+16=#4c4c4c4c4c4c
22
+17=#a8a830303030
23
+18=#202088882020
24
+19=#a8a888880000
25
+20=#555555559898
26
+21=#888830308888
27
+22=#303088888888
28
+23=#d8d8d8d8d8d8
29
+cursor=#9393a1a1a1a1
30
+palette_size=16
0 31
new file mode 100644
... ...
@@ -0,0 +1,30 @@
1
+
2
+[roxterm colour scheme]
3
+foreground=#838394949696
4
+background=#00002b2b3636
5
+0=#070736364242
6
+1=#dcdc32322f2f
7
+2=#858599990000
8
+3=#b5b589890000
9
+4=#26268b8bd2d2
10
+5=#d3d336368282
11
+6=#2a2aa1a19898
12
+7=#eeeee8e8d5d5
13
+8=#00002b2b3636
14
+9=#cbcb4b4b1616
15
+10=#58586e6e7575
16
+11=#65657b7b8383
17
+12=#838394949696
18
+13=#6c6c7171c4c4
19
+14=#9393a1a1a1a1
20
+15=#fdfdf6f6e3e3
21
+16=#4c4c4c4c4c4c
22
+17=#a8a830303030
23
+18=#202088882020
24
+19=#a8a888880000
25
+20=#555555559898
26
+21=#888830308888
27
+22=#303088888888
28
+23=#d8d8d8d8d8d8
29
+cursor=#9393a1a1a1a1
30
+palette_size=16
0 31
new file mode 100755
... ...
@@ -0,0 +1,39 @@
1
+#!/usr/bin/env python
2
+from __future__ import print_function
3
+
4
+import sys
5
+import base64
6
+import os
7
+
8
+
9
+outfn = os.getenv('OUTFILE', os.path.join(os.getenv('HOME'), '.ctextfile'))
10
+basename = os.path.basename(sys.argv[0])
11
+
12
+def fiter(fil):
13
+    line = None
14
+    while line != '':
15
+        line = fil.readline()
16
+        yield line
17
+
18
+if basename == 'ctext':
19
+    dat = sys.stdin.read()
20
+    dat = base64.b64encode(dat)
21
+    with open(outfn, 'a') as f:
22
+        print('%%',file=f)
23
+        print(dat,file=f)
24
+
25
+elif basename == 'ptext':
26
+    jmplist = []
27
+    with open(outfn, 'r') as f:
28
+        for line in fiter(f):
29
+            if line.strip() == '%%':
30
+                jmplist.append(f.tell()) # We want the pos __after__ the separator
31
+        if jmplist:
32
+            f.seek(jmplist[-1],0)
33
+            dat = f.read().strip()
34
+            print(base64.b64decode(dat),end='')
35
+        else:
36
+            raise ValueError('Empty Clipboard!')
37
+
38
+else:
39
+    print('Bad argv[0]', sys.argv[0])
... ...
@@ -1,5 +1,8 @@
1 1
 #!/usr/bin/zsh
2 2
 
3
-chosen=`mpc playlist -f "[%position%: %artist% - %album% - %title%]" | dmenu -l 15 -i | cut -d: -f 1`
4
-mpc play $chosen
3
+chosen=`mpc playlist -f "[%position%: %artist% - %album% - %title%]" |  dmenu -l 15 -i | cut -d: -f 1`
4
+
5
+if [[ "$chosen" -ne "" ]]; then
6
+  mpc play $chosen
7
+fi
5 8
 
... ...
@@ -3,5 +3,7 @@
3 3
 chosen=`mpc playlist -f "[%position%: %artist% - %album% - %title%]" | dmenu -l 15 -i | cut -d: -f 1`
4 4
 (( target=(`mpc current -f "[%position%]"` + 1) ))
5 5
 
6
-mpc move $chosen $target
6
+if [[ "$chosen" -ne "" ]]; then
7
+  mpc move $chosen $target
8
+fi
7 9
 
... ...
@@ -3,6 +3,7 @@
3 3
 chosen=`mpc playlist -f "[%position%: %artist% - %album% - %title%]" | dmenu -l 15 -i | cut -d: -f 1`
4 4
 (( target=(`mpc current -f "[%position%]"` + 1) ))
5 5
 
6
-mpc move $chosen $target
7
-mpc next
8
-
6
+if [[ chosen -ne "" ]]; then
7
+  mpc move $chosen $target
8
+  mpc next
9
+fi
9 10
new file mode 100755
... ...
@@ -0,0 +1,13 @@
1
+#!/usr/bin/env python2
2
+
3
+import goose
4
+import lxml
5
+import argparse
6
+
7
+p = argparse.ArgumentParser()
8
+p.add_argument('url')
9
+args = p.parse_args()
10
+
11
+g = goose.Goose()
12
+a = g.extract(args.url)
13
+print lxml.html.tostring(a.doc)
... ...
@@ -1,23 +1,24 @@
1 1
 #!/usr/bin/env python3
2
+'''Note, defualt is haskell mode'''
2 3
 
3 4
 import sys
4 5
 
5 6
 lines = []
6 7
 for line in sys.stdin:
7
-	line = line.split()
8
-	if line == []: continue
9
-	elif line[0] == 'import':
10
-		qualified = line[1] == 'qualified'
11
-		module = line[1]
12
-		if qualified: module = line[2]
13
-		lines.append(((1 if qualified else 0), module, len(module.split('.')), line))
14
-	else:
15
-		raise ValueError('Can\'t handle lines without import statements')
8
+    line = line.split()
9
+    if line == []: continue
10
+    elif line[0] == 'import':
11
+        qualified = line[1] == 'qualified'
12
+        module = line[1]
13
+        if qualified: module = line[2]
14
+        lines.append(((1 if qualified else 0), module, len(module.split('.')), line))
15
+    else:
16
+        raise ValueError('Can\'t handle lines without import statements')
16 17
 
17 18
 otoplevel = lines[0][1].split('.',1)[0]
18 19
 for line in sorted(lines):
19
-	toplevel = line[1].split('.',1)[0]
20
-	if toplevel != otoplevel:
21
-		print()
22
-	print(' '.join(line[-1]))
23
-	otoplevel = toplevel
20
+    toplevel = line[1].split('.',1)[0]
21
+    if toplevel != otoplevel:
22
+        print()
23
+    print(' '.join(line[-1]))
24
+    otoplevel = toplevel
24 25
new file mode 100755
... ...
@@ -0,0 +1,19 @@
1
+#!/bin/zsh
2
+
3
+COMMAND=
4
+case $1 in
5
+   next)
6
+      COMMAND=next
7
+      ;;
8
+   prev)
9
+      COMMAND=prev
10
+      ;;
11
+   pause)
12
+      COMMAND=pause
13
+      ;;
14
+   play)
15
+      COMMAND=play
16
+     ;;
17
+esac
18
+
19
+zenity --info --text="`mpc $COMMAND`"
0 20
new file mode 100755
... ...
@@ -0,0 +1,10 @@
1
+#!/bin/zsh
2
+
3
+# We have to supress less and grep for the pattern to work accurately
4
+if [[ $1 == "" ]]; then
5
+  ps ax | egrep -v '(grep|pslist|less)' | less
6
+else
7
+  ps ax | egrep -v '(grep|pslist|less)' | less -p $*
8
+fi
9
+
10
+
0 11
new file mode 100755
... ...
@@ -0,0 +1,57 @@
1
+#!/usr/bin/env python3.4
2
+from gi.repository import Gtk, WebKit
3
+import os.path
4
+print(__file__)
5
+basepath = os.path.dirname(__file__)
6
+
7
+builder = Gtk.Builder()
8
+builder.add_from_file(os.path.join(basepath,"pybrowse.glade"))
9
+window = builder.get_object("mainWindow")
10
+webview = WebKit.WebView()
11
+def onLoad(webview, stat_type):
12
+    if webview.get_load_status() == WebKit.LoadStatus.FINISHED:
13
+        builder.get_object("goTxt").set_text(webview.get_uri())
14
+        window.set_title(webview.get_title())
15
+webview.connect("notify::load-status", onLoad)
16
+mv = builder.get_object("mainview")
17
+mv.add(webview)
18
+
19
+
20
+class SigHandler(object):
21
+    eval_model = builder.get_object('historyModel')
22
+
23
+    def goBtn_clicked_cb(self, v):
24
+        print(self,v)
25
+        webview.load_uri(v.get_text())
26
+    eval_locals = dict()
27
+    def evalBtn_clicked_cb(self, v):
28
+        txt = v.get_text()
29
+        exec(txt, globals(), self.eval_locals)
30
+        self.eval_model.append([txt])
31
+    def row_activated(self, s, *a):
32
+        model, itr = s.get_selected()
33
+        eval_txt = builder.get_object('evalTxt')
34
+        eval_txt.set_text(model[itr][0])
35
+        eval_txt.grab_focus()
36
+    def row_added(self, *a):
37
+        print('row_added')
38
+        print(a)
39
+
40
+
41
+builder.connect_signals(SigHandler())
42
+window.connect("delete-event", Gtk.main_quit)
43
+window.show_all()
44
+
45
+import argparse
46
+parser = argparse.ArgumentParser()
47
+parser.add_argument('uri', nargs='?', default='http://google.com')
48
+args = parser.parse_args()
49
+
50
+import urllib.parse
51
+def fix_uri(uri):
52
+    if '://' not in uri:
53
+        uri = 'http://%s' % uri
54
+    return uri
55
+webview.load_uri(fix_uri(args.uri))
56
+
57
+Gtk.main()
0 58
new file mode 100644
... ...
@@ -0,0 +1,148 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!-- Generated with glade 3.18.3 -->
3
+<interface>
4
+  <requires lib="gtk+" version="3.12"/>
5
+  <object class="GtkImage" id="evalImage">
6
+    <property name="visible">True</property>
7
+    <property name="can_focus">False</property>
8
+    <property name="stock">gtk-execute</property>
9
+  </object>
10
+  <object class="GtkImage" id="goImage">
11
+    <property name="visible">True</property>
12
+    <property name="can_focus">False</property>
13
+    <property name="stock">gtk-media-play</property>
14
+  </object>
15
+  <object class="GtkListStore" id="historyModel">
16
+    <columns>
17
+      <!-- column-name item -->
18
+      <column type="gchararray"/>
19
+    </columns>
20
+  </object>
21
+  <object class="GtkApplicationWindow" id="mainWindow">
22
+    <property name="can_focus">False</property>
23
+    <property name="title" translatable="yes">pyBrowse</property>
24
+    <property name="default_width">500</property>
25
+    <property name="default_height">600</property>
26
+    <property name="show_menubar">False</property>
27
+    <child>
28
+      <object class="GtkBox" id="topBox">
29
+        <property name="visible">True</property>
30
+        <property name="can_focus">False</property>
31
+        <property name="orientation">vertical</property>
32
+        <property name="spacing">2</property>
33
+        <child>
34
+          <object class="GtkBox" id="box2">
35
+            <property name="visible">True</property>
36
+            <property name="can_focus">False</property>
37
+            <child>
38
+              <object class="GtkEntry" id="goTxt">
39
+                <property name="visible">True</property>
40
+                <property name="can_focus">True</property>
41
+                <signal name="activate" handler="goBtn_clicked_cb" object="goTxt" swapped="yes"/>
42
+                <accelerator key="l" signal="grab-focus" modifiers="GDK_CONTROL_MASK"/>
43
+              </object>
44
+              <packing>
45
+                <property name="expand">True</property>
46
+                <property name="fill">True</property>
47
+                <property name="position">0</property>
48
+              </packing>
49
+            </child>
50
+            <child>
51
+              <object class="GtkButton" id="goBtn">
52
+                <property name="label">_Go</property>
53
+                <property name="visible">True</property>
54
+                <property name="can_focus">True</property>
55
+                <property name="receives_default">True</property>
56
+                <property name="image">goImage</property>
57
+                <property name="use_underline">True</property>
58
+                <signal name="clicked" handler="goBtn_clicked_cb" object="goTxt" swapped="yes"/>
59
+              </object>
60
+              <packing>
61
+                <property name="expand">False</property>
62
+                <property name="fill">True</property>
63
+                <property name="pack_type">end</property>
64
+                <property name="position">1</property>
65
+              </packing>
66
+            </child>
67
+          </object>
68
+          <packing>
69
+            <property name="expand">False</property>
70
+            <property name="fill">True</property>
71
+            <property name="position">0</property>
72
+          </packing>
73
+        </child>
74
+        <child>
75
+          <object class="GtkScrolledWindow" id="mainview">
76
+            <property name="visible">True</property>
77
+            <property name="can_focus">True</property>
78
+            <property name="shadow_type">in</property>
79
+            <child>
80
+              <placeholder/>
81
+            </child>
82
+          </object>
83
+          <packing>
84
+            <property name="expand">True</property>
85
+            <property name="fill">True</property>
86
+            <property name="position">1</property>
87
+          </packing>
88
+        </child>
89
+        <child>
90
+          <object class="GtkBox" id="box1">
91
+            <property name="visible">True</property>
92
+            <property name="can_focus">False</property>
93
+            <child>
94
+              <object class="GtkComboBox" id="combobox1">
95
+                <property name="visible">True</property>
96
+                <property name="can_focus">True</property>
97
+                <property name="model">historyModel</property>
98
+                <property name="button_sensitivity">on</property>
99
+                <property name="has_entry">True</property>
100
+                <property name="entry_text_column">0</property>
101
+                <child>
102
+                  <object class="GtkCellRendererText" id="cellrenderertext1"/>
103
+                  <attributes>
104
+                    <attribute name="text">0</attribute>
105
+                  </attributes>
106
+                </child>
107
+                <child internal-child="entry">
108
+                  <object class="GtkEntry" id="evalTxt">
109
+                    <property name="can_focus">True</property>
110
+                    <property name="placeholder_text" translatable="yes">&lt;python code here&gt;</property>
111
+                    <signal name="activate" handler="evalBtn_clicked_cb" object="evalTxt" swapped="yes"/>
112
+                    <accelerator key="e" signal="grab-focus" modifiers="GDK_CONTROL_MASK"/>
113
+                  </object>
114
+                </child>
115
+              </object>
116
+              <packing>
117
+                <property name="expand">True</property>
118
+                <property name="fill">True</property>
119
+                <property name="position">0</property>
120
+              </packing>
121
+            </child>
122
+            <child>
123
+              <object class="GtkButton" id="evalBtn">
124
+                <property name="label" translatable="yes">_Eval</property>
125
+                <property name="visible">True</property>
126
+                <property name="can_focus">True</property>
127
+                <property name="receives_default">True</property>
128
+                <property name="image">evalImage</property>
129
+                <property name="use_underline">True</property>
130
+                <signal name="clicked" handler="evalBtn_clicked_cb" object="evalTxt" swapped="no"/>
131
+              </object>
132
+              <packing>
133
+                <property name="expand">False</property>
134
+                <property name="fill">True</property>
135
+                <property name="position">1</property>
136
+              </packing>
137
+            </child>
138
+          </object>
139
+          <packing>
140
+            <property name="expand">False</property>
141
+            <property name="fill">True</property>
142
+            <property name="position">2</property>
143
+          </packing>
144
+        </child>
145
+      </object>
146
+    </child>
147
+  </object>
148
+</interface>
... ...
@@ -7,7 +7,8 @@ import os
7 7
 parser = argparse.ArgumentParser()
8 8
 parser.add_argument("-n", "--new", action="store_true")
9 9
 parser.add_argument("-r", "--read", action="store_true")
10
-parser.add_argument("name", action="store", nargs=1)
10
+parser.add_argument("-l", "--list", action="store_true")
11
+parser.add_argument("name", action="store", nargs='?')
11 12
 args = parser.parse_args()
12 13
 GPG = "/usr/bin/gpg"
13 14
 base = os.path.join(os.environ.get("HOME"), "Dropbox", "secure_notes")
... ...
@@ -15,9 +16,14 @@ print base
15 16
 
16 17
 import subprocess
17 18
 if args.new:
18
-	print args.name
19
-	proc = subprocess.call([GPG, "-r", "Fiddlerwoaroof <fiddler.wo.a.roof@gmail.com>", "-o", os.path.join(base, args.name[0]), "-e"])
19
+    print args.name
20
+    proc = subprocess.call([GPG, "-r", "Fiddlerwoaroof <fiddler.wo.a.roof@gmail.com>", "-o", os.path.join(base, args.name), "-e"])
20 21
 elif args.read:
21
-	proc = subprocess.call([GPG, "-r", "Fiddlerwoaroof <fiddler.wo.a.roof@gmail.com>", "-d", os.path.join(base, args.name[0])])
22
-
23
-
22
+    print args.name
23
+    proc = subprocess.call([GPG, "-r", "Fiddlerwoaroof <fiddler.wo.a.roof@gmail.com>", "-d", os.path.join(base, args.name)])
24
+elif args.list:
25
+    files = os.listdir(base)
26
+    max_itm = max(len(x) for x in files)
27
+    for x in range(len(files)/3 + 1):
28
+        items = files[x*3:(x+1)*3]
29
+        print ' '.join(item.rjust(max_itm+3) for item in items)
... ...
@@ -4,96 +4,108 @@ DEST_DIR=$1
4 4
 
5 5
 mkdir $DEST_DIR || exit 1
6 6
 
7
-(base64 -d | tar jxf - -C $DEST_DIR --strip-components=1 --transform="s/paper_template/$DEST_DIR/g") <<EOF
7
+(base64 -d | tar --xz -xf - -C $DEST_DIR --strip-components=1 --transform="s/paper_template/$DEST_DIR/g") <<EOF
8 8
 
9
-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
-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
-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
-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
-oi/q5zGA0bSGApJMmTCaSVUVVD2XoPrKiafiY+4635W75eo3zYsU+ruWm+1ac2C5hBD6VtEe34+9/f7+gN5+peItFpDTG8ry0tCfJbVa01AjtwanGLVZ1qtHGOvkxwLxfPkCRG+P56sgfNcqRvFacbfyIMVCTXc85HaXFG3v55iiiDndxRR3mTftrVDiqb+qVhYKL+3V
14
-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
-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
-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
-7ctGPnx3EHZhU3iLKaYgr5QjjGAaSbnRECDGVGpRxiaUUywZxcghFpb17jMQD96fAfttPbnWWuncE8Yw6vdNs7uIivPk8tU3SgfR1lPccWKr7T+pfwir+twOyY6pkNo8+Y2ay2F7MBwZvlAzvZ9Mkg7M/VeXV+nB5G3HH6/CyGTSFNl1Ko9tDwy19xr7eexiRNeSV5tT
18
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-9FFEIpLJnDG2dltBkQhEkSxNxbDC3GK4238W6+l1uwgqiu7v5t1EjYo2NSYjWNjLv1urrv93L4r5+267Tua8IiloLFY0bHZdmq6Uka7NXFEOc9i1pIBISJ+lG9Qhjs2PsMriZscQLSRk0YLBq3F6+XNXS0VF39b9P3u3WCnHb/HW7dbXe1eivPlV0o0FjEg9UsdBwK0I
43
-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
-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
-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
-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
-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
-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
-xrbsJBjGQGSQAaKVvR83x+Fvwf43j9F9t8nttgy6bmf0ve9elBfw+fT+LaHiaP0oGtUzZIgk33sAGIp4v5XwxO+JCMgSB+3tzNOwojDK+rsaB7qCplmppFkU2De28sMZcjQPTTbDbwp2j25ouHeteV92g6ka1AVlzN3RfkciZ+S6EmaPpce1vCeM2ZVEKuEjWWPGjjFJ
50
-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
-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
-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
-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
-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
-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
-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
-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
-+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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-iY8Xn7YYs2WZepRVLVYqUM2SziNkitOSQuESzEkrYqIRXcIpvqzAM+A97D2IPCC3bUCWiyA28XYphNX4dYB3hr44ZID7vao9qLmrkwAOnTXZ8dyrvQYChqq8IEVMt2tm0sLG9sRlJShStfNzC7ph3n6bbstt6nbZShnunOEXmHh1RDkqzlQxrdqjgbaPUxsyOeb491dp
72
-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
-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
-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
-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
-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
-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
-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
-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
-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
-pobdpnbKKjyHJuu27rhpq5KTTDsE4ouYvJY7HaSOsSWlKOa20q2wvd32K47zk53O4cTmXOeFNOdRVHDOtt01Yzd2jXadiVFV2IFRFqFxN7dzqJhqEcRKzJrthRc2lOZN7XcsmBNE1LaZxKN1VqJ1yzXPk6HJyd5ZCi4pm0Ct2abXcduLbFsuHIz1qtQ8kjnTWksIi4kb
82
-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
-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
-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
-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
-+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
-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
-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
-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
-UkTdrbe7r0/RytvHdNSFFhNooxhEtksEVRYxSvG6NIzBCiYopMmJkU14eHK8629Sit37rDGiybSyQAimQUhZIlEiJezed6+ryvVqONtybphhVTVKtfG+n/GBtgfraqEJGQIQRMmgxBEmTBEa8W3IQJAogn1jnZQXFsHVmGCHkNVE5RLK9lrXo1t6PNZLAlilNotiLGTY
91
-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
-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
-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
-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
-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
-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
-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
98
-vRH4
9
+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
99 111
 EOF
... ...
@@ -4,5 +4,5 @@ DEST_DIR=$1
4 4
 
5 5
 mkdir $DEST_DIR || exit 1
6 6
 
7
-(base64 -d | tar jxf - -C $DEST_DIR --strip-components=1 --transform="s/paper_template/$DEST_DIR/g") <<EOF
7
+(base64 -d | tar --xz -xf - -C $DEST_DIR --strip-components=1 --transform="s/paper_template/$DEST_DIR/g") <<EOF
8 8
 
9 9
new file mode 100755
... ...
@@ -0,0 +1,53 @@
1
+#!/bin/zsh
2
+export PATH=$HOME/bin:$PATH
3
+ 
4
+# Load resources
5
+ 
6
+xrdb -merge $HOME/.Xresources
7
+
8
+# Set the background color<
9
+ 
10
+xsetroot -solid black
11
+xsetbg $HOME/.xmonad/cheatsheet.png
12
+if [ -e $HOME/Pictures/backgrund.png ]; then
13
+   xloadimage -onroot -quiet $HOME/Pictures/background.png
14
+fi
15
+conky -bd
16
+
17
+xscreensaver -no-splash &
18
+ 
19
+
20
+# Set up an icon tray
21
+trayer --edge top --align right --SetDockType true --SetPartialStrut true --expand true --width 10 --transparent true --tint 0x000000 --height 17 &
22
+synergys
23
+ 
24
+# notifications
25
+
26
+dunst &
27
+
28
+# dropbox
29
+
30
+dropbox start &
31
+btsync
32
+
33
+# notes
34
+
35
+tomboy &
36
+ 
37
+# mixer
38
+
39
+qasmixer -t &
40
+
41
+# Fire up apps
42
+ 
43
+
44
+$HOME/github_repos/shairport/shairport -a srv2 -o pulse -d | swap_variable SHAIRPORT_PID
45
+
46
+sonata --hidden &
47
+ 
48
+if [[ -x /usr/bin/nm-applet ]] ; then
49
+   nm-applet --sm-disable &
50
+fi
51
+ 
52
+eval `ssh-agent`
53
+exec xmonad
0 54
new file mode 100755
... ...
@@ -0,0 +1,49 @@
1
+#!/usr/bin/python -u
2
+from __future__ import print_function
3
+
4
+import sys
5
+import itertools
6
+
7
+def file_iter(fil):
8
+    line = None
9
+    line = fil.readline()
10
+    while line != '':
11
+        yield line
12
+        line = fil.readline()
13
+
14
+def row_iter(file_iter, split):
15
+    for line in file_iter:
16
+        yield line.split(split)
17
+
18
+
19
+def chunk(itr, chunk_amount=25):
20
+    lst = itertools.cycle(itertools.chain([0]*chunk_amount, [1]*chunk_amount))
21
+    def grouper(key):
22
+        return lst.next()
23
+    return (list(x[1]) for x in itertools.groupby(itr, grouper))
24
+
25
+def tabularize(fil, count, split):
26
+    itr = row_iter(file_iter(fil), split)
27
+    for chnk in chunk(itr, count):
28
+        maxlens = [map(len,x) for x in chnk]
29
+        maxlens = [max(x) for x in zip(*maxlens)]
30
+        for line in chnk:
31
+            print(' '.join(x.ljust(maxlens[idx]) for idx,x in enumerate(line)).rstrip())
32
+
33
+if __name__ == '__main__':
34
+    import argparse
35
+    parser = argparse.ArgumentParser()
36
+    parser.add_argument('-c', '--count', nargs='?', default=25, type=int)
37
+    parser.add_argument('-s', '--split', nargs='?', default=None)
38
+    parser.add_argument('inp', nargs='?', default='-')
39
+    args = parser.parse_args()
40
+
41
+    inp = sys.stdin
42
+    if args.inp != '-':
43
+        inp = open(args.inp)
44
+
45
+    with inp:
46
+        try:
47
+            tabularize(inp, count=args.count, split=args.split)
48
+        except IOError, e:
49
+            if e.errno != 32: raise
0 50
new file mode 100755
... ...
@@ -0,0 +1,13 @@
1
+#!/usr/bin/env zsh
2
+
3
+pushd $HOME/github_repos
4
+
5
+for x in `find -maxdepth 1 -type d | grep -v '^[.]$'`; do
6
+   pushd $x
7
+   if [[ -d .git ]]; then
8
+      git pull
9
+   fi
10
+   popd
11
+done
12
+
13
+popd
0 14
new file mode 100755
... ...
@@ -0,0 +1,7 @@
1
+#!/usr/bin/python3
2
+
3
+import urllib.parse
4
+import sys
5
+
6
+for x in sys.argv[1:]:
7
+    print(urllib.parse.unquote(x))
0 8
new file mode 100755
... ...
@@ -0,0 +1,18 @@
1
+#!/bin/bash
2
+#
3
+# Watches the folder or files passed as arguments to the script and when it
4
+# detects a change it automatically refreshes the current selected Chrome tab or
5
+# window.
6
+#
7
+# Usage:
8
+# ./chrome-refresh.sh /folder/to/watch /some/folder/file_to_watch.html
9
+
10
+TIME_FORMAT='%F %H:%M'
11
+OUTPUT_FORMAT='%T Event(s): %e fired for file: %w. Refreshing.'
12
+
13
+while inotifywait -q -r --timefmt "${TIME_FORMAT}" --format "${OUTPUT_FORMAT}" "$@"; do
14
+    CHROME_WINDOW_ID=$(xdotool search --onlyvisible --class google-chrome | head -1)
15
+    xdotool key --window $CHROME_WINDOW_ID 'ALT+1'
16
+    xdotool key --window $CHROME_WINDOW_ID 'CTRL+r'
17
+done
18
+
0 19
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+export LESS_TERMCAP_mb=$'\E[01;31m'       # begin blinking
2
+export LESS_TERMCAP_md=$'\E[01;38;5;74m'  # begin bold
3
+export LESS_TERMCAP_me=$'\E[0m'           # end mode
4
+export LESS_TERMCAP_se=$'\E[0m'           # end standout-mode
5
+export LESS_TERMCAP_so=$'\E[38;5;246m'    # begin standout-mode - info box
6
+export LESS_TERMCAP_ue=$'\E[0m'           # end underline
7
+export LESS_TERMCAP_us=$'\E[04;38;5;146m' # begin underline
0 8
new file mode 100644
... ...
@@ -0,0 +1,4 @@
1
+# Requires my pandoc functions
2
+rss_firststory() {
3
+  rss2json "$1" | jq '.[].entries[0].content[].value' | json-destringify  | dump_html -
4
+}
0 5
new file mode 100644
... ...
@@ -0,0 +1 @@
1
+export SYMBCALC_TEMPLATES=$HOME/.symbcalc/templates
0 2
new file mode 100644
... ...
@@ -0,0 +1,19 @@
1
+# Requires pandoc
2
+
3
+pandoc_view() {
4
+  input="$2"
5
+  if [[ "$input" == "" ]]; then
6
+    input="-"
7
+  fi
8
+  pandoc -s -f "$1" -t man "$input" | man -l -
9
+}
10
+
11
+dump_html() {
12
+  pandoc_view html "$1"
13
+}
14
+
15
+dump_md() {
16
+  pandoc_view markdown "$1"
17
+}
18
+
19
+
0 20
new file mode 100644
... ...
@@ -0,0 +1,32 @@
1
+# Drudge Report Reader
2
+# requires my rss2json script, my interface to python-goose, pandoc and my rss zsh plugin
3
+check_drudge() {
4
+  rss2json http://www.drudgereportarchives.com/rss/popular.xml | jq  '[.[0].entries[] | {title:.title, link:.link}]' 
5
+}
6
+
7
+read_drudge() {
8
+  if [[ "$1" == "1" ]]; then
9
+    check_drudge | jq -r '.[0].link' | xargs goosify | dump_html
10
+    return 0
11
+  fi
12
+
13
+  unset choice
14
+  data=`check_drudge`
15
+  cmd='echo $data | jq ".[].title"'
16
+  if [[ "$1" == "" ]]; then
17
+    echo $data | jq '.[].title' | nl | head -n 10
18
+  elif [[ "$1" == "all" ]]; then
19
+    echo $data | jq '.[].title' | nl
20
+  else
21
+    echo $data | jq '.[].title' | nl | head -n "$1"
22
+  fi
23
+
24
+  echo -n "your choice? "
25
+  choice=-1
26
+  read choice
27
+  if [[ $choice == "" ]]; then
28
+    return
29
+  fi
30
+  echo $data | jq -r '.[].link' | sed -n "${choice}p" | xargs goosify | dump_html
31
+}
32
+alias current_news='read_drudge 1'
0 33
new file mode 100644
... ...
@@ -0,0 +1,14 @@
1
+#compdef symbcalc
2
+
3
+_symbcalc() {
4
+  local curcontext="$curcontext" state line
5
+  typeset -A opt_args
6
+
7
+  _arguments \
8
+    '1: :->template'
9
+
10
+  case $state in
11
+    template)
12
+      compadd `basename -a $SYMBCALC_TEMPLATES/* | sed 's/\.tmpl$//'`
13
+  esac
14
+}