summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.Xdefaults29
-rw-r--r--.Xmodmap5
l---------.bash_profile1
-rw-r--r--.beetsconfig14
-rw-r--r--.config/awesome/ext.lua14
-rw-r--r--.config/awesome/rc.lua20
-rw-r--r--.config/clfswm/clfswmrc25
-rw-r--r--.config/cower/config3
-rw-r--r--.config/fish/config.fish76
-rwxr-xr-x.config/herbstluftwm/autostart46
-rwxr-xr-x.config/herbstluftwm/panel.sh150
-rw-r--r--.config/newsbeuter/config27
-rw-r--r--.conky_box.lua311
-rw-r--r--.conkyrc53
-rw-r--r--.emacs.d/icons/cl.xpm276
-rw-r--r--.emacs.d/icons/emacs.xpm189
-rw-r--r--.emacs.d/icons/php.xpm334
-rw-r--r--.emacs.d/icons/python.xpm173
-rw-r--r--.emacs.d/icons/scheme.xpm22
-rw-r--r--.emacs.d/init.el691
-rw-r--r--.emacs.d/site-lisp/ext.el47
-rw-r--r--.emacs.d/site-lisp/mode-icons.el59
-rw-r--r--.emacs.d/site-lisp/oni.el555
-rw-r--r--.emacs.d/themes/new-theme.el25
-rw-r--r--.fonts.conf34
-rw-r--r--.moc/config3
-rw-r--r--.sawfish/rc119
-rw-r--r--.scwmrc305
-rw-r--r--.xinitrc2
-rwxr-xr-xbin/hlwm/capture-todo6
-rwxr-xr-xbin/hlwm/show-todo5
-rwxr-xr-xbin/update_aur_cnt4
-rwxr-xr-xbin/update_pac_cnt4
33 files changed, 2908 insertions, 719 deletions
diff --git a/.Xdefaults b/.Xdefaults
index 4f77386..a626c06 100644
--- a/.Xdefaults
+++ b/.Xdefaults
@@ -16,27 +16,28 @@ urxvt.perl-ext-common: default,matcher,searchable-scrollback
urxvt.urlLauncher: conkeror
urxvt.matcher.button: 1
-urxvt.font: xft:Monaco:weight=medium:pixelsize=18
-urxvt.boldFont: xft:Monaco:weight=black:pixelsize=18
-urxvt.italicFont: xft:Monaco:slant=italic:pixelsize=18
+urxvt.font: xft:Press Start 2P-10
+! xft:Monaco:weight=medium:pixelsize=18
+! urxvt.boldFont: xft:Monaco:weight=black:pixelsize=18
+! urxvt.italicFont: xft:Monaco:slant=italic:pixelsize=18
-urxvt.background: #252a2b
+urxvt.background: #111113
urxvt.foreground: #eeeeec
-urxvt.color0: #0c191c
-urxvt.color8: #2e3436
+urxvt.color0: #171719
+urxvt.color8: #222224
-urxvt.color1: #a40000
-urxvt.color9: #ef2929
+urxvt.color1: #8b1a1a
+urxvt.color9: #ff5d55
urxvt.color2: #4e9a06
-urxvt.color10: #8ae234
+urxvt.color10: #9ad870
urxvt.color3: #c4a000
-urxvt.color11: #fce94f
+urxvt.color11: #cfce29
-urxvt.color4: #204a87
-urxvt.color12: #729fcf
+urxvt.color4: #2729b6
+urxvt.color12: #78a2c1
urxvt.color5: #5c3566
urxvt.color13: #ad7fa8
@@ -44,8 +45,8 @@ urxvt.color13: #ad7fa8
urxvt.color6: #9f5902
urxvt.color14: #e9b96e
-urxvt.color7: #babdb6
-urxvt.color15: #d3d7cf
+urxvt.color7: #999999
+urxvt.color15: #a9a9a9
Xft.antialias: true
Xft.rgba: rgb
diff --git a/.Xmodmap b/.Xmodmap
new file mode 100644
index 0000000..15f66e7
--- /dev/null
+++ b/.Xmodmap
@@ -0,0 +1,5 @@
+pointer = 3 2 1
+
+remove Mod5 = ISO_Level3_Shift
+keycode 108 = Alt_L
+add Mod1 = Alt_L
diff --git a/.bash_profile b/.bash_profile
new file mode 120000
index 0000000..c1abe3f
--- /dev/null
+++ b/.bash_profile
@@ -0,0 +1 @@
+.zprofile \ No newline at end of file
diff --git a/.beetsconfig b/.beetsconfig
new file mode 100644
index 0000000..3a9a192
--- /dev/null
+++ b/.beetsconfig
@@ -0,0 +1,14 @@
+
+[beets]
+library: ~/.local/share/beets/library.blb
+directory: /mnt/music/lib/
+plugins: mpdupdate embedart
+
+[paths]
+default: $albumartist/$year - $album/$track - $title
+singleton: Non-Album/$artist - $title
+comp: Compilations/$year - $album/$track - $artist - $title
+
+[mpdupdate]
+host: localhost
+port: 6600
diff --git a/.config/awesome/ext.lua b/.config/awesome/ext.lua
index d564867..e7bdf00 100644
--- a/.config/awesome/ext.lua
+++ b/.config/awesome/ext.lua
@@ -65,3 +65,17 @@ function run_or_raise(cmd, properties)
end
awful.util.spawn(cmd)
end
+
+function prev_client()
+ awful.client.focus.history.previous()
+ if client.focus then
+ client.focus:raise()
+ end
+end
+
+function next_client()
+ awful.client.focus.byidx(1)
+ if client.focus then
+ client.focus:raise()
+ end
+end
diff --git a/.config/awesome/rc.lua b/.config/awesome/rc.lua
index 24ff5fe..1c6e4fe 100644
--- a/.config/awesome/rc.lua
+++ b/.config/awesome/rc.lua
@@ -202,13 +202,11 @@ local bind = keychain
local sub = keychain.sub
globalkeys = awful.util.table.join(
bind({ "Control", }, "i",
- { sub({ }, "o",
- function ()
- awful.client.focus.byidx(1)
- if client.focus then client.focus:raise() end
- end),
- sub({ "Shift", }, "o",
+ { sub({ }, "space", ext.next_client),
+ sub({ }, ",",
function () awful.screen.focus_relative(1) end),
+ sub({ }, ".",
+ function () awful.screen.focus_relative(-1) end),
sub({ "Shift", }, "1",
function () mypromptbox[mouse.screen]:run() end),
sub({ }, "f", function () oni.focus_raise("right") end),
@@ -220,7 +218,8 @@ globalkeys = awful.util.table.join(
sub({ }, "e", oni.ror_editor),
sub({ "Shift", }, "e", oni.run_editor),
sub({ }, "w", oni.ror_browser),
- sub({ "Shift", }, "w", oni.run_browser) }),
+ sub({ "Shift", }, "w", oni.run_browser),
+ sub({ "Control", }, "i", ext.prev_client) }),
awful.key({ "Control", "Mod1" }, "l",
function () awful.util.spawn("i3lock -c 000000") end),
awful.key({ modkey, }, "Left", awful.tag.viewprev ),
@@ -233,13 +232,6 @@ globalkeys = awful.util.table.join(
awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end),
awful.key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end),
awful.key({ modkey, }, "u", awful.client.urgent.jumpto),
- awful.key({ modkey, }, "Tab",
- function ()
- awful.client.focus.history.previous()
- if client.focus then
- client.focus:raise()
- end
- end),
-- Standard program
awful.key({ modkey, }, "Return", function () awful.util.spawn(terminal) end),
diff --git a/.config/clfswm/clfswmrc b/.config/clfswm/clfswmrc
new file mode 100644
index 0000000..f69623e
--- /dev/null
+++ b/.config/clfswm/clfswmrc
@@ -0,0 +1,25 @@
+;; -*- mode: lisp; -*-
+(in-package :clfswm)
+
+(defun start-i3lock ()
+ "Run i3lock"
+ (do-shell "exec i3lock -c 000000"))
+
+(defun start-i3lock-2 ()
+ "Run i3lock in second mode"
+ (setf *second-mode-leave-function* 'start-i3lock)
+ (leave-second-mode))
+
+(defun my-bindings ()
+ (define-main-key ("l" :mod-1 :control) 'start-i3lock)
+ (define-second-key ("l" :mod-1 :control) 'start-i3lock-2))
+
+(add-hook *binding-hook* 'my-bindings)
+
+;; (defun my-init-hook ()
+;; (add-frame (create-frame :name "The Gimp" :x 0.6 :y 0 :w 0.3 :h 0.2) *root-frame*))
+
+;;y (add-hook *init-hook* 'my-init-hook)
+
+;;(setf *frame-background* "#252a2b")
+;;(setf *frame-foreground* "#eeeeec")
diff --git a/.config/cower/config b/.config/cower/config
new file mode 100644
index 0000000..6c24291
--- /dev/null
+++ b/.config/cower/config
@@ -0,0 +1,3 @@
+Color = always
+TargetDir = /home/slash/var/aur/
+IgnoreRepo = pegas
diff --git a/.config/fish/config.fish b/.config/fish/config.fish
new file mode 100644
index 0000000..f515917
--- /dev/null
+++ b/.config/fish/config.fish
@@ -0,0 +1,76 @@
+function fish_prompt -d "Write out the prompt"
+ set last_status $status
+ set current_directory (prompt_pwd)
+ set git_branch (git branch --contains HEAD 2>/dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/')
+ set cnormal (set_color white)
+
+ echo -n $cnormal
+
+ printf '%s%s%s' (set_color magenta) (hostname|cut -d . -f 1) $cnormal
+
+ if test -n "$current_directory"
+ printf ' %s%s%s' (set_color $fish_color_cwd) $current_directory $cnormal
+ end
+
+ if test -n "$git_branch"
+ printf '@%s%s%s' (set_color yellow) $git_branch $cnormal
+ end
+
+ if test $last_status -eq 0
+ printf '%s' (set_color --bold green)
+ else
+ printf '%s' (set_color --bold red)
+ end
+
+ printf '>%s ' (set_color normal)
+end
+
+function grep
+ /bin/grep --color=always $argv
+end
+
+function less
+ /bin/less -FXRS $argv
+end
+
+function ls
+ /bin/ls -F --color=always $argv
+end
+
+function mysql
+ /usr/bin/mysql --pager $argv
+end
+
+function slrn
+ set -x NNTPSERVER 'news.gmane.org'
+ /usr/bin/slrn $argv
+end
+
+function shutdown
+ dbus-send --system --print-reply \
+ --dest="org.freedesktop.ConsoleKit" \
+ /org/freedesktop/ConsoleKit/Manager \
+ org.freedesktop.ConsoleKit.Manager.Stop
+end
+
+function reboot
+ dbus-send --system --print-reply \
+ --dest="org.freedesktop.ConsoleKit" \
+ /org/freedesktop/ConsoleKit/Manager \
+ org.freedesktop.ConsoleKit.Manager.Restart
+end
+
+function engage
+ play -n -c1 synth whitenoise band -n 100 20 band -n 50 20 gain +25 fade h 1 864000 1
+end
+
+function lscompmod -d "List kernel modules used by hardware"
+ lspci -mvk | awk '/^Module/ {print $2}' | sort -u
+end
+
+set -x PAGER 'less -FXRS'
+set -x BROWSER conkeror
+set -x EDITOR 'emacsclient -c -a emacs'
+set -x PATH ~/usr/bin $PATH /sbin /usr/sbin /usr/local/emacs/bin/ \
+ /usr/local/bin /usr/local/stumpwm/bin /usr/local/scwm/bin \
+ /usr/local/clfswm/bin /opt/plan9/bin
diff --git a/.config/herbstluftwm/autostart b/.config/herbstluftwm/autostart
new file mode 100755
index 0000000..cf47e86
--- /dev/null
+++ b/.config/herbstluftwm/autostart
@@ -0,0 +1,46 @@
+#!/bin/zsh
+
+function hc () {
+ herbstclient $@
+}
+
+modkey="Mod4"
+
+hc keybind $modkey+Ctrl+q quit
+hc keybind $modkey+e spawn emacs
+
+hc set frame_bg_normal_color "#0c191c"
+hc set frame_bg_active_color "#000000"
+hc set frame_border_width 0
+hc set window_border_width 1
+hc set window_border_normal_color "#15abc3"
+hc set window_border_active_color "#e0c625"
+
+hc set focus_stealing_prevention 0
+
+hc set default_frame_layout 2
+hc set_layout max
+
+hc add default2
+hc remove_monitor 1
+hc move_monitor 0 1920x1080+0+0
+hc add_monitor 1680x1050+1920+0 default2
+
+hc pad 0 -5 -5 -5 -5
+hc pad 1 -5 -5 -5 -5
+
+hc mousebind $modkey-Button1 move
+hc mousebind $modkey-Button2 resize
+hc mousebind $modkey-Button3 zoom
+
+hc unrule -F
+hc rule focus=on
+hc rule windowtype=_NET_WM_WINDOW_TYPE_DIALOG focus=on pseudotile=on
+hc rule class=Xephyr pseudotile=on
+hc rule instance=Xine\ Window pseudotile=on
+
+# xbindkeys
+
+# ~/.config/herbstluftwm/panel.sh &
+
+# hc load default "(split horizontal:0.550000:0 (split vertical:0.850000:0 (split horizontal:0.180000:1 (clients max:0) (clients max:0 0x140001a)) (clients max:0)) (clients max:0 0xc00077))"
diff --git a/.config/herbstluftwm/panel.sh b/.config/herbstluftwm/panel.sh
new file mode 100755
index 0000000..22b46ae
--- /dev/null
+++ b/.config/herbstluftwm/panel.sh
@@ -0,0 +1,150 @@
+#!/bin/bash
+
+monitor=${1:-0}
+monitor2=1
+geometry=( $(herbstclient monitor_rect "$monitor") )
+if [ -z "$geometry" ] ;then
+ echo "Invalid monitor $monitor"
+ exit 1
+fi
+# geometry has the format: WxH+X+Y
+x=${geometry[0]}
+width=${geometry[2]}
+height=12
+y=0 #$(expr ${geometry[3]} - $height)
+tag_width=40
+font="-misc-tamsyn-medium-r-normal-*-14-*-*-*-*-*-iso8859-*"
+
+selcolor='#24c6e0'
+locolor='#657b83'
+bgcolor='#002b36'
+hicolor="#808080"
+urcolor="#e0c625"
+
+function uniq_linebuffered() {
+ awk '$0 != l { print ; l=$0 ; fflush(); }' "$@"
+}
+
+function print_tags() {
+ # draw tags
+ echo -n "$separator"
+ for i in "${TAGS[@]}" ; do
+ if [[ "${TAGS2[@]}" == *"#${i:1}"* ]]; then
+ echo -n "^bg($selcolor)^fg(#000000) ${i:1} ^fg()^bg()"
+ elif [[ "${TAGS2[@]}" == *"+${i:1}"* ]]; then
+ echo -n "^bg($locolor)^fg(#000000) ${i:1} ^fg()^bg()"
+ else
+ case ${i:0:1} in
+ '#')
+ echo -n "^bg($selcolor)^fg(#000000) ${i:1} ^fg()^bg()"
+ ;;
+ '+')
+ echo -n "^bg($locolor)^fg(#000000) ${i:1} ^fg()^bg()"
+ ;;
+ ':')
+ echo -n "^bg($hicolor)^fg(#000000) ${i:1} ^fg()^bg()"
+ ;;
+ '!')
+ echo -n "^bg($urcolor)^fg(#000000) ${i:1} ^fg()^bg()"
+ ;;
+ *)
+ echo -n "^bg($bgcolor)^fg(#ffffff) ${i:1} ^fg()^bg()"
+ ;;
+ esac
+ fi
+ echo -n "$separator"
+ done
+}
+
+function print_mailboxes() {
+ declare -A mailnames
+ mailboxes=(ninthfloor gmail aethon ryuslash.org)
+ mailnames=(
+ [ninthfloor]="9f"
+ [gmail]="gm"
+ [aethon]="aet"
+ [ryuslash.org]="ryu")
+ mailtxt=""
+ for j in "${mailboxes[@]}"; do
+ mailfile="$HOME/documents/mail/$j/inbox/new/"
+ mailcnt=$(ls $mailfile | wc -l)
+
+ if [ $mailcnt -gt 0 ]; then
+ mailsha1=$(echo $j | sha1sum)
+ mailcolor="#${mailsha1:0:6}"
+ else
+ mailcolor=$bgcolor
+ fi
+
+ mailtxt="$mailtxt${separator}^bg($mailcolor)^fg(#ffffff) ${mailnames[$j]} ^fg()^bg()"
+ done
+ mailtxt_only=$(echo -n "$mailtxt" | sed 's.\^[^(]*([^)]*)..g')
+ let mailtxt_width=$(textwidth "$font" "$mailtxt_only")+10
+ echo -n "^p(_RIGHT)^p(-$mailtxt_width)$mailtxt"
+}
+
+function print_services() {
+ services=(emacs httpd mysqld dunst xbindkeys mpdscribble sshd mpd)
+ servicetxt=""
+ for j in "${services[@]}"; do
+ servicetxt="$servicetxt$separator$(status $j)"
+ done
+ servicetxt_only=$(echo -n "$servicetxt" | sed 's.\^[^(]*([^)]*)..g')
+ let servicetxt_width=($(textwidth "$font" "$servicetxt_only")+7)/2
+
+ echo -n "^p(_CENTER)^p(-$servicetxt_width)$servicetxt"
+}
+
+function status()
+{
+ running=$(${1}_running 2>/dev/null || pidof $1)
+
+ if [ -n "$running" ]; then
+ color="darkgreen"
+ else
+ color="darkred"
+ fi
+
+ echo -n "^bg($color)^fg(#ffffff) $1 ^fg()^bg()"
+}
+
+function emacs_running()
+{
+ ps ax | awk '{ print $5 " " $6 }' | grep -E "^emacs --daemon"
+}
+
+{
+ childpid=$!
+ herbstclient --idle
+ kill $childpid
+} 2> /dev/null | {
+ TAGS=( $(herbstclient tag_status $monitor) )
+ TAGS2=( $(herbstclient tag_status $monitor2) )
+
+ separator="^fg($bgcolor)^ro(1x$height)^fg()"
+ print_tags
+ print_services
+ print_mailboxes
+
+ echo
+ # wait for next event
+ read line || break
+ cmd=( $line )
+ # find out event origin
+ case "${cmd[0]}" in
+ tag*)
+ TAGS=( $(herbstclient tag_status $monitor) )
+ TAGS2=( $(herbstclient tag_status $monitor2) )
+ ;;
+ quit_panel)
+ exit
+ ;;
+ esac
+
+ sleep 1s
+} 2> /dev/null | dzen2 -w $width -x $x -y $y -fn "$font" -h $height \
+ -ta l -bg "$bgcolor"
+
+# Local Variables:
+# eval: (git-auto-commit-mode 1)
+# End:
diff --git a/.config/newsbeuter/config b/.config/newsbeuter/config
new file mode 100644
index 0000000..257f150
--- /dev/null
+++ b/.config/newsbeuter/config
@@ -0,0 +1,27 @@
+
+auto-reload yes
+reload-threads 3
+reload-time 60
+
+browser firefox
+
+confirm-exit yes
+
+feedlist-format "%-35t %?d?- %-35d&? %> %u"
+articlelist-format "%-4i %f %t"
+feedlist-title-format "%N %V %> %u feeds with new articles"
+articlelist-title-format "%T"
+
+max-items 500
+
+show-read-feeds no
+show-read-articles no
+
+html-renderer "w3m -dump -T text/HTML -cols 72"
+
+color listfocus default red
+color info default black bold
+
+highlight article "^(Feed|Title|Author|Link|Date):.*" yellow default bold
+
+article-sort-order date-desc
diff --git a/.conky_box.lua b/.conky_box.lua
new file mode 100644
index 0000000..ef53427
--- /dev/null
+++ b/.conky_box.lua
@@ -0,0 +1,311 @@
+--[[BOX WIDGET v1.1 by Wlourf 27/01/2011
+This widget can drawn some boxes, even circles in your conky window
+http://u-scripts.blogspot.com/2011/01/box-widget.html)
+
+Inspired by Background by londonali1010 (2009), thanks ;-)
+
+The parameters (all optionals) are :
+x - x coordinate of top-left corner of the box, default = 0 = (top-left corner of conky window)
+y - y coordinate of top-left corner of the box, default = 0 = (top-left corner of conky window)
+w - width of the box, default = width of the conky window
+h - height of the box, default = height of the conky window
+corners - corners is a table for the four corners in this order : top-left, top-right,bottom-right, bottom-left
+ each corner is defined in a table with a shape and a radius, available shapes are : "curve","circle","line"
+ example for the same shapes for all corners:
+ { {"circle",10} }
+ example for first corner different from the three others
+ { {"circle",10}, {"circle",5} }
+ example for top corners differents from bottom corners
+ { {"circle",10}, {"circle",10}, {"line",0} }
+ default = { {"line",0} } i.e=no corner
+operator - set the compositing operator (needs in the conkyrc : own_window_argb_visual yes)
+ see http://cairographics.org/operators/
+ available operators are :
+ "clear","source","over","in","out","atop","dest","dest_over","dest_in","dest_out","dest_atop","xor","add","saturate"
+ default = "over"
+border - if border>0, the script draws only the border, like a frame, default=0
+dash - if border>0 and dash>0, the border is draw with dashes, default=0
+skew_x - skew box around x axis, default = 0
+skew_y - skew box around y axis, default = 0
+scale_x - rescale the x axis, default=1, useful for drawing elipses ...
+scale_y - rescale the x axis, default=1
+angle - angle of rotation of the box in degrees, default = 0
+ i.e. a horizontal graph
+rot_x - x point of rotation's axis, default = 0,
+ relative to top-left corner of the box, (not the conky window)
+rot_y - y point of rotation's axis, default = 0
+ relative to top-left corner of the box, (not the conky window)
+draw_me - if set to false, box is not drawn (default = true or 1)
+ it can be used with a conky string, if the string returns 1, the box is drawn :
+ example : "${if_empty ${wireless_essid wlan0}}${else}1$endif",
+
+linear_gradient - table with the coordinates of two points to define a linear gradient,
+ points are relative to top-left corner of the box, (not the conky window)
+ {x1,y1,x2,y2}
+radial_gradient - table with the coordinates of two circle to define a radial gradient,
+ points are relative to top-left corner of the box, (not the conky window)
+ {x1,y1,r1,x2,y2,r2} (r=radius)
+colour - table of colours, default = plain white {{1,0xFFFFFF,0.5}}
+ this table contains one or more tables with format {P,C,A}
+ P=position of gradient (0 = start of the gradient, 1= end of the gradient)
+ C=hexadecimal colour
+ A=alpha (opacity) of color (0=invisible,1=opacity 100%)
+ Examples :
+ for a plain color {{1,0x00FF00,0.5}}
+ for a gradient with two colours {{0,0x00FF00,0.5},{1,0x000033,1}} {x=80,y=150,w=20,h=20,
+ radial_gradient={20,20,0,20,20,20},
+ colour={{0.5,0xFFFFFF,1},{1,0x000000,0}},
+ or {{0.5,0x00FF00,1},{1,0x000033,1}} -with this one, gradient will start in the middle
+ for a gradient with three colours {{0,0x00FF00,0.5},{0.5,0x000033,1},{1,0x440033,1}}
+ and so on ...
+
+
+
+To call this script in Conky, use (assuming you have saved this script to ~/scripts/):
+ lua_load ~/scripts/box.lua
+ lua_draw_hook_pre main_box
+
+And leave one line blank or not after TEXT
+
+Changelog:
++ v1.0 -- Original release (19.12.2010)
++ v1.1 -- Adding parameters: operator, dash, angle, skew_x, skew_y, draw_me
+ corners are described in a table
+
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation version 3 (GPLv3)
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+-- MA 02110-1301, USA.
+
+
+]]
+
+
+require 'cairo'
+
+function conky_main_box()
+
+ if conky_window==nil then return end
+
+ ---------------------- PARAMETERS BEGIN HERE
+ local boxes_settings={
+ {
+ x = conky_window.text_start_x - 10,
+ y = conky_window.text_start_y - 10,
+ w = conky_window.text_width + 20,
+ h = conky_window.text_height + 20,
+ colour = {{1,0x000000,0.4}},
+ },
+ }
+
+
+ ---------------------------- PARAMETERS END HERE
+
+ local cs=cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)
+ local cr=cairo_create(cs)
+
+ if tonumber(conky_parse("$updates"))<5 then return end
+ for i in pairs(boxes_settings) do
+ draw_box (cr,boxes_settings[i])
+ end
+ cairo_destroy(cr)
+ cairo_surface_destroy(cs)
+end
+
+
+function draw_box(cr,t)
+
+ if t.draw_me == true then t.draw_me = nil end
+ if t.draw_me ~= nil and conky_parse(tostring(t.draw_me)) ~= "1" then return end
+
+ local table_corners={"circle","curve","line"}
+
+ local t_operators={
+ clear = CAIRO_OPERATOR_CLEAR,
+ source = CAIRO_OPERATOR_SOURCE,
+ over = CAIRO_OPERATOR_OVER,
+ ["in"] = CAIRO_OPERATOR_IN,
+ out = CAIRO_OPERATOR_OUT,
+ atop = CAIRO_OPERATOR_ATOP,
+ dest = CAIRO_OPERATOR_DEST,
+ dest_over = CAIRO_OPERATOR_DEST_OVER,
+ dest_in = CAIRO_OPERATOR_DEST_IN,
+ dest_out = CAIRO_OPERATOR_DEST_OUT,
+ dest_atop = CAIRO_OPERATOR_DEST_ATOP,
+ xor = CAIRO_OPERATOR_XOR,
+ add = CAIRO_OPERATOR_ADD,
+ saturate = CAIRO_OPERATOR_SATURATE,
+ }
+
+ function rgba_to_r_g_b_a(tc)
+ --tc={position,colour,alpha}
+ local colour = tc[2]
+ local alpha = tc[3]
+ return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
+ end
+
+ function table.copy(t)
+ local t2 = {}
+ for k,v in pairs(t) do
+ t2[k] = {v[1],v[2]}
+ end
+ return t2
+ end
+
+ function draw_corner(num,t)
+ local shape=t[1]
+ local radius=t[2]
+ local x,y = t[3],t[4]
+ if shape=="line" then
+ if num == 1 then cairo_line_to(cr,radius,0)
+ elseif num == 2 then cairo_line_to(cr,x,radius)
+ elseif num == 3 then cairo_line_to(cr,x-radius,y)
+ elseif num == 4 then cairo_line_to(cr,0,y-radius)
+ end
+ end
+ if shape=="circle" then
+ local PI = math.pi
+ if num == 1 then cairo_arc(cr,radius,radius,radius,-PI,-PI/2)
+ elseif num == 2 then cairo_arc(cr,x-radius,y+radius,radius,-PI/2,0)
+ elseif num == 3 then cairo_arc(cr,x-radius,y-radius,radius,0,PI/2)
+ elseif num == 4 then cairo_arc(cr,radius,y-radius,radius,PI/2,-PI)
+ end
+ end
+ if shape=="curve" then
+ if num == 1 then cairo_curve_to(cr,0,radius ,0,0 ,radius,0)
+ elseif num == 2 then cairo_curve_to(cr,x-radius,0, x,y, x,radius)
+ elseif num == 3 then cairo_curve_to(cr,x,y-radius, x,y, x-radius,y)
+ elseif num == 4 then cairo_curve_to(cr,radius,y, x,y, 0,y-radius)
+ end
+ end
+ end
+
+ --check values and set default values
+ if t.x == nil then t.x = 0 end
+ if t.y == nil then t.y = 0 end
+ if t.w == nil then t.w = conky_window.width end
+ if t.h == nil then t.h = conky_window.height end
+ if t.radius == nil then t.radius = 0 end
+ if t.border == nil then t.border = 0 end
+ if t.colour==nil then t.colour={{1,0xFFFFFF,0.5}} end
+ if t.linear_gradient ~= nil then
+ if #t.linear_gradient ~= 4 then
+ t.linear_gradient = {t.x,t.y,t.width,t.height}
+ end
+ end
+ if t.angle==nil then t.angle = 0 end
+
+ if t.skew_x == nil then t.skew_x=0 end
+ if t.skew_y == nil then t.skew_y=0 end
+ if t.scale_x==nil then t.scale_x=1 end
+ if t.scale_y==nil then t.scale_y=1 end
+ if t.rot_x == nil then t.rot_x=0 end
+ if t.rot_y == nil then t.rot_y=0 end
+
+ if t.operator == nil then t.operator = "over" end
+ if (t_operators[t.operator]) == nil then
+ print ("wrong operator :",t.operator)
+ t.operator = "over"
+ end
+
+ if t.radial_gradient ~= nil then
+ if #t.radial_gradient ~= 6 then
+ t.radial_gradient = {t.x,t.y,0, t.x,t.y, t.width}
+ end
+ end
+
+ for i=1, #t.colour do
+ if #t.colour[i]~=3 then
+ print ("error in color table")
+ t.colour[i]={1,0xFFFFFF,1}
+ end
+ end
+
+ if t.corners == nil then t.corners={ {"line",0} } end
+ local t_corners = {}
+ local t_corners = table.copy(t.corners)
+ --don't use t_corners=t.corners otherwise t.corners is altered
+
+ --complete the t_corners table if needed
+ for i=#t_corners+1,4 do
+ t_corners[i]=t_corners[#t_corners]
+ local flag=false
+ for j,v in pairs(table_corners) do flag=flag or (t_corners[i][1]==v) end
+ if not flag then print ("error in corners table :",t_corners[i][1]);t_corners[i][1]="curve" end
+ end
+
+ --this way :
+ -- t_corners[1][4]=x
+ -- t_corners[2][3]=y
+ --doesn't work
+ t_corners[1]={t_corners[1][1],t_corners[1][2],0,0}
+ t_corners[2]={t_corners[2][1],t_corners[2][2],t.w,0}
+ t_corners[3]={t_corners[3][1],t_corners[3][2],t.w,t.h}
+ t_corners[4]={t_corners[4][1],t_corners[4][2],0,t.h}
+
+ t.no_gradient = (t.linear_gradient == nil ) and (t.radial_gradient == nil )
+
+ cairo_save(cr)
+ cairo_translate(cr, t.x, t.y)
+ if t.rot_x~=0 or t.rot_y~=0 or t.angle~=0 then
+ cairo_translate(cr,t.rot_x,t.rot_y)
+ cairo_rotate(cr,t.angle*math.pi/180)
+ cairo_translate(cr,-t.rot_x,-t.rot_y)
+ end
+ if t.scale_x~=1 or t.scale_y~=1 or t.skew_x~=0 or t.skew_y~=0 then
+ local matrix0 = cairo_matrix_t:create()
+ tolua.takeownership(matrix0)
+ cairo_matrix_init (matrix0, t.scale_x,math.pi*t.skew_y/180 , math.pi*t.skew_x/180 ,t.scale_y,0,0)
+ cairo_transform(cr,matrix0)
+ end
+
+ local tc=t_corners
+ cairo_move_to(cr,tc[1][2],0)
+ cairo_line_to(cr,t.w-tc[2][2],0)
+ draw_corner(2,tc[2])
+ cairo_line_to(cr,t.w,t.h-tc[3][2])
+ draw_corner(3,tc[3])
+ cairo_line_to(cr,tc[4][2],t.h)
+ draw_corner(4,tc[4])
+ cairo_line_to(cr,0,tc[1][2])
+ draw_corner(1,tc[1])
+
+ if t.no_gradient then
+ cairo_set_source_rgba(cr,rgba_to_r_g_b_a(t.colour[1]))
+ else
+ if t.linear_gradient ~= nil then
+ pat = cairo_pattern_create_linear (t.linear_gradient[1],t.linear_gradient[2],t.linear_gradient[3],t.linear_gradient[4])
+ elseif t.radial_gradient ~= nil then
+ pat = cairo_pattern_create_radial (t.radial_gradient[1],t.radial_gradient[2],t.radial_gradient[3],
+ t.radial_gradient[4],t.radial_gradient[5],t.radial_gradient[6])
+ end
+ for i=1, #t.colour do
+ cairo_pattern_add_color_stop_rgba (pat, t.colour[i][1], rgba_to_r_g_b_a(t.colour[i]))
+ end
+ cairo_set_source (cr, pat)
+ cairo_pattern_destroy(pat)
+ end
+
+ cairo_set_operator(cr,t_operators[t.operator])
+
+ if t.border>0 then
+ cairo_close_path(cr)
+ if t.dash ~= nil then cairo_set_dash(cr, t.dash, 1, 0.0) end
+ cairo_set_line_width(cr,t.border)
+ cairo_stroke(cr)
+ else
+ cairo_fill(cr)
+ end
+
+ cairo_restore(cr)
+end
+
diff --git a/.conkyrc b/.conkyrc
new file mode 100644
index 0000000..297229e
--- /dev/null
+++ b/.conkyrc
@@ -0,0 +1,53 @@
+# -*- eval: (git-auto-commit-mode 1) -*-
+background yes
+use_xft yes
+xftfont tamsyn:pixelsize=14
+!xftalpha 0.1
+update_interval 2.0
+total_run_times 0
+double_buffer yes
+minimum_size 250 5
+maximum_width 400
+draw_shades no
+draw_outline no
+draw_borders no
+draw_graph_borders no
+default_color gray
+default_shade_color red
+default_outline_color green
+alignment top_right
+gap_x 10
+gap_y 42
+no_buffers yes
+uppercase no
+cpu_avg_samples 2
+net_avg_samples 1
+override_utf8_locale no
+use_spacer yes
+lua_load ~/.conkybox.lua
+lua_draw_hook_pre conky_main_box
+
+TEXT
+${font Arial:bold:size=10}${color Tan1}TODO ${color RoyalBlue}${voffset -2}${hr 2}
+$font${color SlateGray}${exec /home/slash/development/projects/ntd/src/ntd list short}
+
+$if_mpd_playing${font Arial:bold:size=10}${color Tan1}MUSIC ${color RoyalBlue}${voffset -2}${hr 2}
+$font$alignc${color SlateGray}$mpd_title
+$alignc$mpd_artist
+$alignc$mpd_album
+$mpd_bar
+
+$endif${font Arial:bold:size=10}${color Tan1}USAGE ${color RoyalBlue}${voffset -2}${hr 2}
+$font${color SlateGray}CPU1 $alignr${cpu cpu1}% ${cpubar cpu1 7,170}
+$font${color SlateGray}CPU2 $alignr${cpu cpu2}% ${cpubar cpu2 7,170}
+$font${color SlateGray}MEM $alignr${memperc}% ${membar 7,170}
+$font${color SlateGray}SWAP $alignr${swapperc}% ${swapbar 7, 170}
+
+${font Arial:bold:size=10}${color Tan1}HDD ${color RoyalBlue}${voffset -2}${hr 2}
+${font}${color SlateGray}Write: $alignr$diskio_write
+Read: $alignr$diskio_read
+
+${font Arial:bold:size=10}${color Tan1}TOP PROCESS ${color RoyalBlue}${voffset -2}${hr 2}
+${color SlateGray}${font}CPU: ${top name 1}${alignr}${top cpu 1}%
+MEM: ${top_mem name 1}${alignr}${top_mem mem 1}%
+IO: ${top_io name 1}${alignr}${top_io io_perc 1}%
diff --git a/.emacs.d/icons/cl.xpm b/.emacs.d/icons/cl.xpm
new file mode 100644
index 0000000..d7dd0f8
--- /dev/null
+++ b/.emacs.d/icons/cl.xpm
@@ -0,0 +1,276 @@
+/* XPM */
+static char * cl_xpm[] = {
+"23 16 257 2",
+" c None",
+". c #122C44",
+"+ c #112B43",
+"@ c #112B44",
+"# c #132D45",
+"$ c #132F48",
+"% c #14304A",
+"& c #133049",
+"* c #132F49",
+"= c #122C45",
+"- c #122C46",
+"; c #122D45",
+"> c #132E46",
+", c #14314C",
+"' c #14324D",
+") c #15334E",
+"! c #15344F",
+"~ c #14324E",
+"{ c #15324D",
+"] c #13304B",
+"^ c #14304B",
+"/ c #14314B",
+"( c #112E49",
+"_ c #244054",
+": c #233F54",
+"< c #12304D",
+"[ c #103050",
+"} c #0D2E4F",
+"| c #123352",
+"1 c #183854",
+"2 c #214059",
+"3 c #163653",
+"4 c #163553",
+"5 c #163552",
+"6 c #153452",
+"7 c #1A3954",
+"8 c #4D686E",
+"9 c #6D857F",
+"0 c #203E56",
+"a c #143350",
+"b c #112F4B",
+"c c #305065",
+"d c #678280",
+"e c #8AA291",
+"f c #3F5E6D",
+"g c #2E4E65",
+"h c #678380",
+"i c #41606D",
+"j c #193C5A",
+"k c #183A59",
+"l c #183959",
+"m c #173959",
+"n c #163857",
+"o c #143656",
+"p c #163757",
+"q c #123454",
+"r c #91A894",
+"s c #768F87",
+"t c #1E3E5A",
+"u c #163756",
+"v c #173754",
+"w c #6D8580",
+"x c #B8CCAA",
+"y c #CDE0B4",
+"z c #99B19C",
+"A c #D0E2B5",
+"B c #38596D",
+"C c #7F998F",
+"D c #627F81",
+"E c #173B5D",
+"F c #193D5E",
+"G c #1A3E5E",
+"H c #1C405F",
+"I c #33546A",
+"J c #537179",
+"K c #2E4F67",
+"L c #A2B89F",
+"M c #406070",
+"N c #14395B",
+"O c #183C5D",
+"P c #193C5D",
+"Q c #193C5C",
+"R c #183958",
+"S c #8CA595",
+"T c #385B71",
+"U c #A5BCA2",
+"V c #C8DAB1",
+"W c #D4E5B6",
+"X c #4F6F7B",
+"Y c #668384",
+"Z c #5B797F",
+"` c #1E4264",
+" . c #2C506A",
+".. c #55737C",
+"+. c #A5BBA1",
+"@. c #B4C9A8",
+"#. c #8CA697",
+"$. c #9AB29D",
+"%. c #B7CCA9",
+"&. c #506F7A",
+"*. c #153B5F",
+"=. c #1A3F61",
+"-. c #1A3F60",
+";. c #1A3E60",
+">. c #A7BDA2",
+",. c #466777",
+"'. c #32556E",
+"). c #6A8787",
+"!. c #AAC0A4",
+"~. c #C9DCB2",
+"{. c #C3D7AF",
+"]. c #77948D",
+"^. c #89A396",
+"/. c #B6CBAA",
+"(. c #B9CDAB",
+"_. c #75918C",
+":. c #53737E",
+"<. c #76928E",
+"[. c #3C5E73",
+"}. c #678486",
+"|. c #839D93",
+"1. c #31556D",
+"2. c #163C62",
+"3. c #1A4064",
+"4. c #1B4164",
+"5. c #A8BDA1",
+"6. c #839E94",
+"7. c #274C6A",
+"8. c #32566F",
+"9. c #30546D",
+"0. c #54747D",
+"a. c #7F9990",
+"b. c #95AD9A",
+"c. c #87A194",
+"d. c #5B7A80",
+"e. c #406275",
+"f. c #809B92",
+"g. c #CCDFB6",
+"h. c #CDE0B6",
+"i. c #4F6F7C",
+"j. c #7C9790",
+"k. c #A5BDA4",
+"l. c #77928E",
+"m. c #34566E",
+"n. c #173D62",
+"o. c #194063",
+"p. c #92A995",
+"q. c #D3E6B9",
+"r. c #BCD0AE",
+"s. c #C1D5B0",
+"t. c #A9BFA4",
+"u. c #4A6B79",
+"v. c #153C61",
+"w. c #1D4365",
+"x. c #31546D",
+"y. c #6B8988",
+"z. c #B5CAAA",
+"A. c #D3E5B8",
+"B. c #D6E8BA",
+"C. c #C8DCB4",
+"D. c #8FA899",
+"E. c #7E9A91",
+"F. c #A7BEA4",
+"G. c #C6DAB2",
+"H. c #9BB39E",
+"I. c #5F7E82",
+"J. c #3A5C71",
+"K. c #1C4264",
+"L. c #BCCFAB",
+"M. c #D2E4B7",
+"N. c #D1E3B6",
+"O. c #CCDEB4",
+"P. c #6E8A8A",
+"Q. c #718E8B",
+"R. c #A7BEA3",
+"S. c #D3E5B7",
+"T. c #C4D7B1",
+"U. c #CBDDB4",
+"V. c #D0E2B6",
+"W. c #D3E6B8",
+"X. c #D0E3B6",
+"Y. c #BED3AE",
+"Z. c #BFD2AE",
+"`. c #8DA492",
+" + c #C9DCB1",
+".+ c #D0E1B4",
+"++ c #CFE1B4",
+"@+ c #93AB9A",
+"#+ c #CDDFB3",
+"$+ c #93AC99",
+"%+ c #3D5F73",
+"&+ c #9BB39D",
+"*+ c #A1B8A0",
+"=+ c #C2D6AE",
+"-+ c #CFE1B5",
+";+ c #CCDFB4",
+">+ c #6F8C89",
+",+ c #79958E",
+"'+ c #698687",
+")+ c #BED1AD",
+"!+ c #D4E6B7",
+"~+ c #ABC1A3",
+"{+ c #94AA95",
+"]+ c #C2D4AC",
+"^+ c #CBDDB1",
+"/+ c #6E8B89",
+"(+ c #8CA695",
+"_+ c #D9E8B7",
+":+ c #617E82",
+"<+ c #92AA98",
+"[+ c #D1E3B4",
+"}+ c #B5CAA7",
+"|+ c #87A193",
+"1+ c #B5CAA8",
+"2+ c #96AE9A",
+"3+ c #98B09C",
+"4+ c #486878",
+"5+ c #52717C",
+"6+ c #738F8B",
+"7+ c #59777C",
+"8+ c #869E8E",
+"9+ c #A7BC9F",
+"0+ c #ADC2A3",
+"a+ c #D5E5B4",
+"b+ c #B8CBA8",
+"c+ c #51717B",
+"d+ c #BFD1AB",
+"e+ c #CADCB0",
+"f+ c #A4BA9F",
+"g+ c #56757E",
+"h+ c #9BB29B",
+"i+ c #496A78",
+"j+ c #3E6074",
+"k+ c #A0B79E",
+"l+ c #88A293",
+"m+ c #99B09A",
+"n+ c #708B87",
+"o+ c #7A938A",
+"p+ c #A6BB9E",
+"q+ c #92AA97",
+"r+ c #486877",
+"s+ c #648183",
+"t+ c #A0B69D",
+"u+ c #5F7D81",
+"v+ c #3D6072",
+"w+ c #C6D8AD",
+"x+ c #476776",
+"y+ c #4B6C78",
+"z+ c #4F6D76",
+"A+ c #769089",
+"B+ c #80998D",
+"C+ c #819A8E",
+"D+ c #95AC97",
+"E+ c #8BA393",
+"F+ c #A0B59B",
+"G+ c #93AB96",
+"H+ c #668282",
+" . . . . + @ + . # ",
+" $ % & * * % = - . . ; > $ ",
+" , ' ) ! ~ { { ' , , ] ^ / ^ ( _ : ",
+" < [ } | 1 2 3 4 4 3 5 5 5 6 7 8 9 0 a ",
+" b c d e f g h i j k l m n o p q r s t u v ",
+" w x y z A B C D E F G H I J K L M N O P Q R ",
+" S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.=.-.;.",
+" >.,.'.).!.~.{.].^./.(._.:.<.[.}.|.1.2.3.4.4.",
+" 5.6.7.8.9.0.a.b.c.d.e.f.g.h.i.j.k.l.m.n.n.o.",
+" p.q.r.s.t.u.v.w.x.y.z.A.B.C.D.E.F.G.H.I.J.K.",
+" L.A.M.N.O.P.Q.R./.M.M.M.S.T.U.M.V.W.X.Y.Z.",
+" `. +.+++@+_.#+$+%+&+#+*+=+-+;+>+,+'+)+!+~+",
+" {+]+^+/+(+_+:+<+[+}+|+1+2+3+4+5+6+z L.7+",
+" 8+9+0+a+b+c+d+e+f+g+h+i+j+k+J.l+m+n+ ",
+" o+p+q+r+s+Y t+J.t+u+v+w+x+y+ ",
+" z+A+B+C+D+E+F+G+C+H+ "};
diff --git a/.emacs.d/icons/emacs.xpm b/.emacs.d/icons/emacs.xpm
new file mode 100644
index 0000000..30183a4
--- /dev/null
+++ b/.emacs.d/icons/emacs.xpm
@@ -0,0 +1,189 @@
+/* XPM */
+static char * emacs_xpm[] = {
+"16 16 170 2",
+" c None",
+". c #5551AB",
+"+ c #5652AB",
+"@ c #5853AC",
+"# c #504CA8",
+"$ c #4C47A7",
+"% c #5752AA",
+"& c #534FA8",
+"* c #5652A8",
+"= c #6460AF",
+"- c #6E6BB5",
+"; c #8380BF",
+"> c #928FC7",
+", c #9794CA",
+"' c #8784C3",
+") c #5A55AE",
+"! c #5753AA",
+"~ c #6D6AB3",
+"{ c #9593C8",
+"] c #9D9BCC",
+"^ c #9895CA",
+"/ c #9A97CB",
+"( c #A2A0CF",
+"_ c #BBB9DB",
+": c #F4F4F8",
+"< c #D1D0E8",
+"[ c #5E59AF",
+"} c #5854A9",
+"| c #5954A9",
+"1 c #5955A9",
+"2 c #BCBADC",
+"3 c #F6F5FA",
+"4 c #EFEEF7",
+"5 c #F0F0F7",
+"6 c #E9E8F4",
+"7 c #DFDFEE",
+"8 c #D8D8EB",
+"9 c #F2F2F9",
+"0 c #FAFAFD",
+"a c #7B77BB",
+"b c #4F4BA7",
+"c c #5A57AA",
+"d c #6461AF",
+"e c #A19FCE",
+"f c #F0F0F8",
+"g c #E3E3F1",
+"h c #B9B8DA",
+"i c #B9B8DB",
+"j c #BCBBDC",
+"k c #C3C2E0",
+"l c #CBCAE5",
+"m c #AAA8D3",
+"n c #5F5BAC",
+"o c #5651A8",
+"p c #5955AA",
+"q c #5956AA",
+"r c #5C59AB",
+"s c #6B68B3",
+"t c #7C7ABB",
+"u c #B8B7DB",
+"v c #EBEAF5",
+"w c #B1B0D7",
+"x c #908EC6",
+"y c #908DC5",
+"z c #8581C0",
+"A c #726FB6",
+"B c #5E5BAC",
+"C c #5B56AA",
+"D c #5B57AB",
+"E c #5653A8",
+"F c #7574B8",
+"G c #8280BE",
+"H c #B0AED7",
+"I c #E1E1EF",
+"J c #BDBBDD",
+"K c #8481BF",
+"L c #7571B7",
+"M c #6A68B2",
+"N c #625FAD",
+"O c #5C58AB",
+"P c #5B57AA",
+"Q c #7A78BB",
+"R c #ADACD5",
+"S c #C8C7E3",
+"T c #D4D3E9",
+"U c #D0CFE7",
+"V c #D5D5EA",
+"W c #ECEDF6",
+"X c #7B79BB",
+"Y c #6664B0",
+"Z c #625FAE",
+"` c #5551A7",
+" . c #918EC7",
+".. c #F3F3FA",
+"+. c #F5F4FA",
+"@. c #F4F3F9",
+"#. c #E7E6F3",
+"$. c #C7C7E2",
+"%. c #B2B0D7",
+"&. c #B3B2D8",
+"*. c #9593C9",
+"=. c #6663AF",
+"-. c #5F5DAD",
+";. c #5B59AB",
+">. c #534FA6",
+",. c #F4F3FA",
+"'. c #C9C8E4",
+"). c #7675B9",
+"!. c #6C6AB3",
+"~. c #706EB5",
+"{. c #716FB6",
+"]. c #6E6CB4",
+"^. c #6968B1",
+"/. c #6462AF",
+"(. c #5B58AB",
+"_. c #5A56AA",
+":. c #5855A9",
+"<. c #6D6BB4",
+"[. c #D1D0E7",
+"}. c #F2F1F8",
+"|. c #B7B6DA",
+"1. c #6765B0",
+"2. c #6F6EB5",
+"3. c #7B7ABB",
+"4. c #807EBE",
+"5. c #807EBD",
+"6. c #7876B9",
+"7. c #615EAE",
+"8. c #5754A8",
+"9. c #6A67B2",
+"0. c #B4B3D8",
+"a. c #EAEAF4",
+"b. c #DADAEC",
+"c. c #B0B0D6",
+"d. c #9998CB",
+"e. c #8988C2",
+"f. c #7F7EBD",
+"g. c #7978BA",
+"h. c #7472B8",
+"i. c #6B68B2",
+"j. c #5D5AAC",
+"k. c #5755A8",
+"l. c #8A88C2",
+"m. c #C9C7E3",
+"n. c #E4E4F2",
+"o. c #EAE9F4",
+"p. c #E0E0EF",
+"q. c #CECEE6",
+"r. c #AFAED6",
+"s. c #8A89C3",
+"t. c #6865B1",
+"u. c #615FAE",
+"v. c #918FC6",
+"w. c #AAA9D4",
+"x. c #B9B8DC",
+"y. c #CDCCE5",
+"z. c #F5F5FA",
+"A. c #FFFFFF",
+"B. c #E7E7F3",
+"C. c #706DB5",
+"D. c #7E7CBC",
+"E. c #908FC5",
+"F. c #9C9BCC",
+"G. c #A2A1CF",
+"H. c #A09ECE",
+"I. c #9390C6",
+"J. c #7977BA",
+"K. c #5D59AB",
+"L. c #5552A8",
+"M. c #5451A7",
+" . + @ . # $ ",
+" % & * = - ; > , ' ) ",
+" ! * ~ { ] ^ / ( _ : < [ ",
+" } | 1 2 3 4 5 6 7 8 9 0 a b ",
+" } c d e f g h i j k l m n o ",
+"p q r s t u v w x y z A B C 1 ! ",
+"q D E B F G H I J K L M N O q } ",
+"P * Q R S T U V W S X Y Z r c 1 ",
+"` ...+.@.#.$.u %.&.*.=.-.;.P p ",
+">.&.,.f '.).!.~.{.].^./.B r (._.",
+":.<.[.}.|.1.2.3.4.5.6.<.7.r (._.",
+" 8.9.0.a.b.c.d.e.f.g.h.i.j.c ",
+" j.q k.l.m.n.o.p.q.r.s.t.r D ",
+" r u.h.v.w.x.y.z.A.B.C.} ",
+" B !.D.E.F.G.H.I.J.K. ",
+" :.8.8.8.L.M. "};
diff --git a/.emacs.d/icons/php.xpm b/.emacs.d/icons/php.xpm
new file mode 100644
index 0000000..8b316ef
--- /dev/null
+++ b/.emacs.d/icons/php.xpm
@@ -0,0 +1,334 @@
+/* XPM */
+static char * php_xpm[] = {
+"30 16 315 2",
+" c None",
+". c #D9D7E1",
+"+ c #CAC9D8",
+"@ c #B6B5CC",
+"# c #A5A4C3",
+"$ c #9697BA",
+"% c #8C8DB4",
+"& c #8283AE",
+"* c #787BA8",
+"= c #6D70A1",
+"- c #606598",
+"; c #5F6390",
+"> c #636588",
+", c #C7C5D6",
+"' c #BFBED5",
+") c #AAABCC",
+"! c #9193C0",
+"~ c #7E81B7",
+"{ c #767AB4",
+"] c #7478B3",
+"^ c #8185BE",
+"/ c #8488C0",
+"( c #777BB5",
+"_ c #777BB4",
+": c #777BB3",
+"< c #7579B1",
+"[ c #7275A9",
+"} c #6F709C",
+"| c #6A6A89",
+"1 c #626175",
+"2 c #A8A6C2",
+"3 c #9F9FC3",
+"4 c #8789BB",
+"5 c #6E73B1",
+"6 c #7075B1",
+"7 c #7379B2",
+"8 c #7377B3",
+"9 c #8387BD",
+"0 c #636474",
+"a c #595965",
+"b c #898CBC",
+"c c #7479B4",
+"d c #787CB7",
+"e c #787CB9",
+"f c #7376A9",
+"g c #656788",
+"h c #545463",
+"i c #9090B6",
+"j c #8083B6",
+"k c #7176B2",
+"l c #7578B4",
+"m c #787CB5",
+"n c #797DB5",
+"o c #7A7DB6",
+"p c #7B7FB8",
+"q c #757AB7",
+"r c #9193BF",
+"s c #070705",
+"t c #1F1F1E",
+"u c #878BBD",
+"v c #797DB7",
+"w c #797DB6",
+"x c #7B80BA",
+"y c #7D82C0",
+"z c #7174A7",
+"A c #50526A",
+"B c #2D2E36",
+"C c #7A7DA5",
+"D c #8182B0",
+"E c #757AB3",
+"F c #7579B5",
+"G c #7D80B1",
+"H c #6C6D86",
+"I c #57596B",
+"J c #58596C",
+"K c #6A6C86",
+"L c #8185B8",
+"M c #7F82A3",
+"N c #060607",
+"O c #28282A",
+"P c #5C5E70",
+"Q c #5B5C70",
+"R c #6E718E",
+"S c #8083B5",
+"T c #7A7DA1",
+"U c #5A5B6D",
+"V c #57596C",
+"W c #57586A",
+"X c #606177",
+"Y c #787B9F",
+"Z c #7F83BD",
+"` c #7B7FBB",
+" . c #4D4F6E",
+".. c #13141B",
+"+. c #7679A9",
+"@. c #767AB5",
+"#. c #7579B3",
+"$. c #74769C",
+"%. c #21211E",
+"&. c #10100C",
+"*. c #333334",
+"=. c #232221",
+"-. c #080803",
+";. c #5F606D",
+">. c #6F7082",
+",. c #040405",
+"'. c #212123",
+"). c #2D2E2F",
+"!. c #191916",
+"~. c #0E0D0B",
+"{. c #6C6D7E",
+"]. c #5A5B6A",
+"^. c #010000",
+"/. c #272727",
+"(. c #2F2F30",
+"_. c #0F0F0B",
+":. c #232321",
+"<. c #747798",
+"[. c #7C80BA",
+"}. c #7E83C1",
+"|. c #383A55",
+"1. c #64699A",
+"2. c #7679B2",
+"3. c #767AB3",
+"4. c #7D82BB",
+"5. c #686A89",
+"6. c #0D0C08",
+"7. c #4E4F5F",
+"8. c #8F92C1",
+"9. c #8487AD",
+"0. c #1D1E24",
+"a. c #1C1C1A",
+"b. c #4D4D4E",
+"c. c #010100",
+"d. c #7D7F97",
+"e. c #8487BA",
+"f. c #646579",
+"g. c #54545A",
+"h. c #43434C",
+"i. c #1A1B20",
+"j. c #8C90C0",
+"k. c #56576A",
+"l. c #000000",
+"m. c #565769",
+"n. c #7A7EB5",
+"o. c #7B80BB",
+"p. c #7276AD",
+"q. c #14151F",
+"r. c #64699D",
+"s. c #7E82B9",
+"t. c #5B5D73",
+"u. c #0E0E0A",
+"v. c #666887",
+"w. c #878BD1",
+"x. c #8F93C5",
+"y. c #25252D",
+"z. c #272726",
+"A. c #12110F",
+"B. c #8A8DB8",
+"C. c #7E83C4",
+"D. c #626479",
+"E. c #050505",
+"F. c #63646E",
+"G. c #2F2F31",
+"H. c #2F303B",
+"I. c #8C90C7",
+"J. c #8A8FD2",
+"K. c #62647C",
+"L. c #060501",
+"M. c #5A5B70",
+"N. c #7B7EB6",
+"O. c #7F83C0",
+"P. c #2D2F45",
+"Q. c #65699C",
+"R. c #787CB6",
+"S. c #777BB6",
+"T. c #7E81B5",
+"U. c #464755",
+"V. c #141313",
+"W. c #6C6D88",
+"X. c #8487B4",
+"Y. c #56576C",
+"Z. c #060606",
+"`. c #5B5B5C",
+" + c #8385B9",
+".+ c #8387BF",
+"++ c #45464F",
+"@+ c #0A0A0B",
+"#+ c #767783",
+"$+ c #111211",
+"%+ c #3F3F4A",
+"&+ c #8B8EB7",
+"*+ c #717496",
+"=+ c #24252B",
+"-+ c #1A1916",
+";+ c #75789A",
+">+ c #7A7EB8",
+",+ c #7E84C0",
+"'+ c #2F3047",
+")+ c #636593",
+"!+ c #7579B2",
+"~+ c #797DB8",
+"{+ c #7D80AF",
+"]+ c #36363E",
+"^+ c #232323",
+"/+ c #262627",
+"(+ c #181713",
+"_+ c #454650",
+":+ c #818292",
+"<+ c #0A0A07",
+"[+ c #4B4B53",
+"}+ c #8287C0",
+"|+ c #8387B9",
+"1+ c #2C2C29",
+"2+ c #171717",
+"3+ c #7F808C",
+"4+ c #141414",
+"5+ c #2C2C2E",
+"6+ c #696A82",
+"7+ c #7E82B7",
+"8+ c #767AB2",
+"9+ c #171722",
+"0+ c #6B6F9F",
+"a+ c #7A7EB9",
+"b+ c #7377A0",
+"c+ c #202020",
+"d+ c #202025",
+"e+ c #616276",
+"f+ c #5E5F77",
+"g+ c #686A87",
+"h+ c #8084B3",
+"i+ c #8486AF",
+"j+ c #63657E",
+"k+ c #797B9F",
+"l+ c #797EB9",
+"m+ c #8185B7",
+"n+ c #6C6E86",
+"o+ c #71738D",
+"p+ c #5F606E",
+"q+ c #070707",
+"r+ c #4F505E",
+"s+ c #61627C",
+"t+ c #76789D",
+"u+ c #7F83B8",
+"v+ c #8386C6",
+"w+ c #3F405E",
+"x+ c #64678F",
+"y+ c #6D70A2",
+"z+ c #7D81BC",
+"A+ c #6D708F",
+"B+ c #050500",
+"C+ c #444653",
+"D+ c #8C90C5",
+"E+ c #7D81BB",
+"F+ c #787CB4",
+"G+ c #7D81B9",
+"H+ c #7A7EB7",
+"I+ c #7C80B8",
+"J+ c #3B3C3E",
+"K+ c #111113",
+"L+ c #8082A8",
+"M+ c #8185C1",
+"N+ c #7B7FB9",
+"O+ c #8084C2",
+"P+ c #484B6E",
+"Q+ c #13141D",
+"R+ c #64668F",
+"S+ c #6E719E",
+"T+ c #7B7DA1",
+"U+ c #5D5E6F",
+"V+ c #77799B",
+"W+ c #7C81BA",
+"X+ c #7579B4",
+"Y+ c #7D81B4",
+"Z+ c #616379",
+"`+ c #8185B6",
+" @ c #7478B5",
+".@ c #8084C3",
+"+@ c #7073A9",
+"@@ c #393A56",
+"#@ c #151620",
+"$@ c #6A6C94",
+"%@ c #7375A5",
+"&@ c #787BB2",
+"*@ c #777CB6",
+"=@ c #767BB4",
+"-@ c #7C80B9",
+";@ c #7A7FBC",
+">@ c #7C80BD",
+",@ c #7175A9",
+"'@ c #4D4F70",
+")@ c #21222F",
+"!@ c #65678D",
+"~@ c #696D97",
+"{@ c #6F72A2",
+"]@ c #7477AD",
+"^@ c #777AB3",
+"/@ c #787CB8",
+"(@ c #787DB9",
+"_@ c #777BB7",
+":@ c #62658B",
+"<@ c #4B4D64",
+"[@ c #2F313A",
+"}@ c #666785",
+"|@ c #676888",
+"1@ c #696B8D",
+"2@ c #6C6D91",
+"3@ c #6C6D92",
+"4@ c #6D6E92",
+"5@ c #6B6D8F",
+"6@ c #696A8B",
+"7@ c #656682",
+"8@ c #5E5F75",
+"9@ c #555463",
+"0@ c #484750",
+" . + @ # $ % & * = - ; > ",
+" , ' ) ! ~ { ] ^ / ( { _ : < [ } | 1 ",
+" 2 3 4 ] 5 6 7 8 9 0 a b c { { ( d e d f g h ",
+" i j k l m n o p q r s t u v p ( m o w w x y z A B ",
+" C D E F G H I I J K L M N O P Q R S T U V W X Y Z ` ... ",
+" +.@.#.x $.%.&.*.=.-.;.>.,.'.).!.~.{.].^./.(._.:.<.[.}.|. ",
+"1.2._ 3.4.5.6.7.8.9.0.a.b.c.d.e.f.^.g.h.i.M j.k.l.m.n.o.p.q.",
+"r.m 3.{ s.t.u.v.w.x.y.t z.A.B.C.D.E.F.G.H.I.J.K.L.M.N.{ O.P.",
+"Q.R.3.S.T.U.V.W.X.Y.Z.`.V.G. +.+++@+#+$+%+&+*+=+-+;+>+{ ,+'+",
+")+!+( ~+{+]+c.^+/+(+_+:+<+[+}+|+1+2+3+l.4+5+a.z.6+7+_ >+8+9+",
+" 0+d a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+K.s+t+u+_ R.v+w+ ",
+" x+y+z+A+B+C+D+[.E+v F+G+H+3._ I+u J+K+L+M+G+N+{ ` O+P+Q+ ",
+" R+S+T+U+V+W+X+{ 3.3.{ { : 3.{ Y+>.Z+`+ @3.~+.@+@@@#@ ",
+" $@%@&@*@d ( ( _ 3.3.3.3.3.=@p -@~+;@>@,@'@)@ ",
+" !@~@{@]@^@( d /@e (@(@/@_@{ z :@<@[@ ",
+" }@|@1@2@3@4@5@6@7@8@9@0@ "};
diff --git a/.emacs.d/icons/python.xpm b/.emacs.d/icons/python.xpm
new file mode 100644
index 0000000..b7b6a23
--- /dev/null
+++ b/.emacs.d/icons/python.xpm
@@ -0,0 +1,173 @@
+/* XPM */
+static char * python_xpm[] = {
+"16 16 154 2",
+" c None",
+". c #4D8CBE",
+"+ c #4787B8",
+"@ c #4483B5",
+"# c #417FB1",
+"$ c #3E7BAD",
+"% c #3B77A8",
+"& c #508FBE",
+"* c #BBD3E5",
+"= c #73A2C7",
+"- c #3F7CAE",
+"; c #3C79A9",
+"> c #3975A6",
+", c #3672A2",
+"' c #4B8ABA",
+") c #A2C1DA",
+"! c #6698C0",
+"~ c #3F7DAE",
+"{ c #3C79AA",
+"] c #3976A5",
+"^ c #3772A2",
+"/ c #346E9E",
+"( c #4686B7",
+"_ c #4A85B5",
+": c #4782B3",
+"< c #3D7BAC",
+"[ c #3A76A7",
+"} c #3773A3",
+"| c #346F9E",
+"1 c #326C9B",
+"2 c #4B8BBE",
+"3 c #4888BA",
+"4 c #4585B7",
+"5 c #4381B3",
+"6 c #407DAF",
+"7 c #3D7AAB",
+"8 c #3873A3",
+"9 c #35709F",
+"0 c #286499",
+"a c #FFF46F",
+"b c #FFE872",
+"c c #FFE66E",
+"d c #4B8CBE",
+"e c #4889BB",
+"f c #4382B3",
+"g c #417FB0",
+"h c #3873A4",
+"i c #326C9C",
+"j c #306998",
+"k c #276499",
+"l c #FFF26E",
+"m c #FFE56D",
+"n c #FFE366",
+"o c #FFE162",
+"p c #4888BC",
+"q c #4685B8",
+"r c #4482B4",
+"s c #407FB1",
+"t c #3E7BAC",
+"u c #3B77A9",
+"v c #3974A4",
+"w c #3571A1",
+"x c #336D9D",
+"y c #306A99",
+"z c #2F6897",
+"A c #1F5F9B",
+"B c #FFEA68",
+"C c #FFE265",
+"D c #FFE05E",
+"E c #FFDE58",
+"F c #4687B9",
+"G c #3E7CAD",
+"H c #3B78A8",
+"I c #3472A6",
+"J c #2C6BA3",
+"K c #2A689F",
+"L c #26649B",
+"M c #25629A",
+"N c #1D5E9C",
+"O c #DCCE6E",
+"P c #FEE162",
+"Q c #FFDF5C",
+"R c #FFDD56",
+"S c #FFDB50",
+"T c #427FB2",
+"U c #3F7CAD",
+"V c #3C78A9",
+"W c #4B80A2",
+"X c #FFF86B",
+"Y c #FFF06F",
+"Z c #FFF070",
+"` c #FFEF6E",
+" . c #FFEC67",
+".. c #FFE762",
+"+. c #FEE060",
+"@. c #FFDE5A",
+"#. c #FFDD53",
+"$. c #FFDA4D",
+"%. c #FFD848",
+"&. c #4280B1",
+"*. c #3C7AAA",
+"=. c #3372A8",
+"-. c #FFF36D",
+";. c #FFE873",
+">. c #FFE772",
+",. c #FFE66F",
+"'. c #FFE469",
+"). c #FFE263",
+"!. c #FFDF5D",
+"~. c #FFDE57",
+"{. c #FFDC51",
+"]. c #FFD94B",
+"^. c #FFD745",
+"/. c #FFD540",
+"(. c #296AA7",
+"_. c #FFED70",
+":. c #FFE367",
+"<. c #FFE161",
+"[. c #FFDF5B",
+"}. c #FFDD55",
+"|. c #FFDA4F",
+"1. c #FFD849",
+"2. c #FFD743",
+"3. c #FFD43D",
+"4. c #FFD43A",
+"5. c #3B77A7",
+"6. c #2566A4",
+"7. c #FFEC6D",
+"8. c #FFE46A",
+"9. c #FFE264",
+"0. c #FFDC52",
+"a. c #FFD94C",
+"b. c #FFD846",
+"c. c #FFD43B",
+"d. c #FFD33A",
+"e. c #FEE368",
+"f. c #FFE262",
+"g. c #FFD641",
+"h. c #FFD43C",
+"i. c #FFE15F",
+"j. c #FFDE59",
+"k. c #FFDC53",
+"l. c #FFD847",
+"m. c #FFDA58",
+"n. c #FFE58C",
+"o. c #FFD33E",
+"p. c #FFD53F",
+"q. c #FFDF73",
+"r. c #FFF6D7",
+"s. c #FFD645",
+"t. c #FFD94A",
+"u. c #FFD643",
+"v. c #FFD33B",
+"w. c #FFD542",
+" . + @ # $ % ",
+" & * = # - ; > , ",
+" ' ) ! ~ { ] ^ / ",
+" ( _ : < [ } | 1 ",
+" 2 3 4 5 6 7 [ 8 9 1 0 a b c ",
+"d e ( f g < % h 9 i j k l m n o ",
+"p q r s t u v w x y z A B C D E ",
+"F @ g G H I J K L M N O P Q R S ",
+"@ T U V W X Y Z ` ...+.@.#.$.%.",
+"&.~ *.=.-.;.>.,.'.).!.~.{.].^./.",
+"U 7 [ (._.b m :.<.[.}.|.1.2.3.4.",
+" 5.} 6.7.8.9.D E 0.a.b./.c.d. ",
+" e.f.Q R $.%.g.h. ",
+" i.j.k.$.l.m.n.o. ",
+" R {.].^.p.q.r.s. ",
+" t.u.3.v.c.w. "};
diff --git a/.emacs.d/icons/scheme.xpm b/.emacs.d/icons/scheme.xpm
new file mode 100644
index 0000000..721b32e
--- /dev/null
+++ b/.emacs.d/icons/scheme.xpm
@@ -0,0 +1,22 @@
+/* XPM */
+static char * scheme_xpm[] = {
+"13 16 3 1",
+" c None",
+". c #7d7d7d",
+"+ c #000000",
+" .... ",
+" .+++. ",
+".+..++. ",
+".+. .+. ",
+" . .+. ",
+" .+. ",
+" .++. ",
+" .+++. ",
+" .+++. ",
+" .++++. ",
+" .++.++. ",
+" .++..+. ",
+" .++. .+. . ",
+" .++. .++..+.",
+".++. .+++. ",
+" .. ... "};
diff --git a/.emacs.d/init.el b/.emacs.d/init.el
index faf5ff5..c209642 100644
--- a/.emacs.d/init.el
+++ b/.emacs.d/init.el
@@ -21,6 +21,10 @@
'("/usr/share/emacs/site-lisp" "~/.emacs.d/site-lisp"))
(add-to-list 'load-path "~/.emacs.d/"))
+(require 'ext)
+(require 'mode-icons)
+(require 'oni)
+
(autoload 'define-slime-contrib "slime")
(autoload 'gtags-mode "gtags" nil t)
(autoload 'identica-mode "identica-mode" nil t)
@@ -39,598 +43,8 @@
(define-key key-translation-map (kbd "C-j") (kbd "C-l"))
(define-key key-translation-map (kbd "C-l") (kbd "C-j"))
-(defadvice org-agenda-redo (after org-agenda-redo-add-appts)
- "Pressing `r' on the agenda will also add appointments."
- (progn
- (setq appt-time-msg-list nil)
- (org-agenda-to-appt)))
-
(defalias 'yes-or-no-p 'y-or-n-p)
-(defface oni:mode-line-buffer-column
- '((t (:inherit font-lock-type-face)))
- "Face for the column number in the mode-line"
- :group 'local)
-
-(defface oni:mode-line-buffer-line
- '((t (:inherit font-lock-type-face)))
- "Face for the line number in the mode-line"
- :group 'local)
-
-(defface oni:mode-line-buffer-position
- '((t (:inherit font-lock-constant-face)))
- "Face for the buffer position in the mode-line"
- :group 'local)
-
-(defface oni:mode-line-buffer-state
- '((t (:inherit font-lock-preprocessor-face)))
- "Face for the state of the buffer in the mode-line"
- :group 'local)
-
-(defface oni:mode-line-mode
- '((t (:inherit font-lock-string-face)))
- "Face for the major mode in the mode-line"
- :group 'local)
-
-(defface oni:mode-line-modified
- '((t (:inherit font-lock-warning-face)))
- "Face for the modified state in the mode-line"
- :group 'local)
-
-(defmacro oni:define-mailbox (name email &optional signature longname)
- "Define a mailbox function for mailbox NAME with address EMAIL.
-Optionally set signature to SIGNATURE and use LONGNAME as the
-actual account name."
- `(defun ,(make-symbol (concat "oni:" name "-mailbox")) ()
- ,(concat "Settings for " name " mailbox")
- (setq mu4e-mu-home ,(expand-file-name (concat "~/.mu/" name))
- mu4e-maildir ,(expand-file-name (concat "~/documents/mail/"
- (or longname name)))
- mu4e-get-mail-command ,(concat "offlineimap -oa " (or longname
- name))
- mu4e~main-buffer-name ,(concat "*mu4e-" name "*")
- user-mail-address ,email
- message-sendmail-extra-arguments '("-a" ,name)
- message-signature-file ,signature)))
-
-(defmacro oni:email (user at host dot com)
- "Turn arguments into an email address.
-The resulting email address will look like: USER@HOST.COM, AT and
-DOT are intentionally being skipped."
- (concat (symbol-name user) "@" (symbol-name host) "."
- (symbol-name com)))
-
-(defvar oni:mailbox-map
- '("top" ("menu"
- ("ryulash.org" . "ryuslash")
- ("ninthfloor" . "ninthfloor")
- ("gmail" . "gmail")
- ("aethon" . "aethon")))
- "A mailbox map for use with `tmm-prompt'.")
-
-(defvar oni:required-packages
- '(graphviz-dot-mode htmlize magit rainbow-delimiters
- rainbow-mode yasnippet markdown-mode flymake
- flymake-cursor pony-mode sauron dispass
- expand-region fill-column-indicator
- git-auto-commit-mode idomenu magit smex)
- "List of all the packages I have (want) installed.")
-
-(defun oni:after-save-func ()
- "Function for `after-save-hook'."
- (oni:compile-el)
- (executable-make-buffer-file-executable-if-script-p)
- (let ((dom-dir (locate-dominating-file (buffer-file-name) "Makefile")))
- (when dom-dir
- (shell-command (concat "make -C " dom-dir " TAGS >/dev/null 2>&1")))))
-
-(defun oni:before-save-func ()
- "Function for `before-save-hook'."
- (if (eq major-mode 'html-mode)
- (oni:replace-html-special-chars))
- (if (not (eq major-mode 'markdown-mode))
- (delete-trailing-whitespace)))
-
-(defun oni:c-mode-common-func ()
- "Function for `c-mode-common-hook'."
- )
-
-(defun oni:c-mode-func ()
- "Function for `c-mode-hook'."
- (local-set-key [f9] 'compile)
- (local-set-key "\C-j" 'oni:newline-and-indent))
-
-(defun oni:close-client-window ()
- "Close a client's frames."
- (interactive)
- (server-save-buffers-kill-terminal nil))
-
-(defun oni:compilation-finish-function (buffer str)
- "Don't show compilation window if everything went OK."
- (unless (string-match-p "exited abnormally" str)
- ;;(run-at-time 0.5 nil 'delete-windows-on buffer)
- (delete-windows-on buffer)
- (message "Compilation successful")))
-
-(defun oni:compile-el ()
- "Compile the current buffer file if it is an .el file."
- (let* ((full-file-name (buffer-file-name))
- (file-name (file-name-nondirectory full-file-name))
- (suffix (file-name-extension file-name)))
- (if (and (not (string-equal file-name ".dir-locals.el"))
- (string-equal suffix "el"))
- (byte-compile-file full-file-name))))
-
-(defun oni:css-mode-func ()
- "Function for `css-mode-hook'."
- (local-set-key "\C-j" 'oni:newline-and-indent)
- (rainbow-mode))
-
-(defun oni:diary-display-func ()
- "Function for `diary-display-hook'."
- (diary-fancy-display))
-
-(defun oni:emacs-lisp-mode-func ()
- "Function for `emacs-lisp-mode-hook'."
- (eldoc-mode))
-
-(defun oni:emms-toggle-playing ()
- "Toggle between playing/paused states."
- (interactive)
- (if (eq emms-player-playing-p nil)
- (emms-start)
- (emms-pause)))
-
-(defun oni:erc-mode-func ()
- "Function for `erc-mode-hook'."
- (erc-fill-mode -1)
- (visual-line-mode)
- (setq truncate-lines nil))
-
-(defun oni:eshell-mode-func ()
- "Function for `eshell-mode-hook'."
- (setq truncate-lines nil))
-
-(defun oni:eshell-prompt-function ()
- "Show a pretty shell prompt."
- (let ((status (if (zerop eshell-last-command-status) ?+ ?-))
- (hostname (shell-command-to-string "hostname"))
- (dir (abbreviate-file-name (eshell/pwd)))
- (branch
- (shell-command-to-string
- "git branch --contains HEAD 2>/dev/null | sed -e '/^[^*]/d'"))
- (userstatus (if (zerop (user-uid)) ?# ?$)))
- (concat
- (propertize (char-to-string status)
- 'face `(:foreground ,(if (= status ?+)
- "green"
- "red")))
- " "
- (propertize (substring hostname 0 -1) 'face 'mode-line-buffer-id)
- " "
- (propertize (oni:shorten-dir dir) 'face 'font-lock-string-face)
- " "
- (when (not (string= branch ""))
- (propertize
- ;; Cut off "* " and "\n"
- (substring branch 2 -1)
- 'face 'font-lock-function-name-face))
- " \n"
- (propertize (char-to-string userstatus)
- 'face `(:foreground "blue"))
- "> ")))
-
-(defun oni:flymake-mode-func ()
- "Function for `flymake-mode-hook'."
- (local-set-key [M-P] 'flymake-goto-prev-error)
- (local-set-key [M-N] 'flymake-goto-next-error))
-
-(defun oni:flymake-pyflakes-init ()
- "Initialize function for flymake with pyflakes."
- (let* ((temp-file (flymake-init-create-temp-buffer-copy
- 'flymake-create-temp-inplace))
- (local-file (file-relative-name temp-file (file-name-directory
- buffer-file-name))))
- (list "pycheck.sh" (list local-file))))
-
-(defun oni:go-mode-func ()
- "Function for `go-mode-hook'."
- (setq indent-tabs-mode nil)
- (local-set-key "\C-j" 'oni:newline-and-indent))
-
-(defun oni:gtags-mode-func ()
- "Function for `gtags-mode-hook'."
- (local-set-key "\M-," 'gtags-find-tag)
- (local-set-key "\M-." 'gtags-find-rtag))
-
-(defun oni:html-mode-func ()
- "Function for `html-mode-hook'."
- (yas-minor-mode)
- (fci-mode))
-
-(defun oni:indent-shift-left (start end &optional count)
- "Rigidly indent region.
-Region is from START to END. Move
-COUNT number of spaces if it is non-nil otherwise use
-`tab-width'."
- (interactive
- (if mark-active
- (list (region-beginning) (region-end) current-prefix-arg)
- (list (line-beginning-position)
- (line-end-position)
- current-prefix-arg)))
- (if count
- (setq count (prefix-numeric-value count))
- (setq count tab-width))
- (when (> count 0)
- (let ((deactivate-mark nil))
- (save-excursion
- (goto-char start)
- (while (< (point) end)
- (if (and (< (current-indentation) count)
- (not (looking-at "[ \t]*$")))
- (error "Can't shift all lines enough"))
- (forward-line))
- (indent-rigidly start end (- count))))))
-
-(defun oni:indent-shift-right (start end &optional count)
- "Indent region between START and END rigidly to the right.
-If COUNT has been specified indent by that much, otherwise look at
-`tab-width'."
- (interactive
- (if mark-active
- (list (region-beginning) (region-end) current-prefix-arg)
- (list (line-beginning-position)
- (line-end-position)
- current-prefix-arg)))
- (let ((deactivate-mark nil))
- (if count
- (setq count (prefix-numeric-value count))
- (setq count tab-width))
- (indent-rigidly start end count)))
-
-(defun oni:jabber-chat-mode-func ()
- "Function for `jabber-chat-mode-hook'."
- (visual-line-mode)
- (setq mode-line-format (append (cddr jabber-chat-header-line-format)
- '(global-mode-string))
- header-line-format nil))
-
-(defun oni:jabber-roster-mode-func ()
- "Function for `jabber-roster-mode-hook'."
- (setq mode-line-format
- (list (propertize " %m" 'face 'mode-line-buffer-id))))
-
-(defun oni:java-mode-func ()
- "Function for `java-mode-hook'."
- (local-set-key "\C-j" 'oni:newline-and-indent))
-
-(defun oni:js-mode-func ()
- "Function for `js-mode-hook'."
- (rainbow-delimiters-mode)
- (local-set-key "\C-j" 'oni:newline-and-indent)
- (pretty-symbols-mode -1))
-
-(defun oni:js2-mode-func ()
- "Function for `js2-mode-hook'."
- (oni:prog-mode-func)
- (oni:js-mode-func)
- (local-set-key (kbd "<f5>") #'slime-js-reload)
- (slime-js-minor-mode))
-
-(defun oni:kill-region-or-backward-char ()
- "Either `kill-region' or `backward-delete-char-untabify'."
- (interactive)
- (if (region-active-p)
- (kill-region (region-beginning) (region-end))
- (backward-delete-char-untabify 1)))
-
-(defun oni:kill-region-or-forward-char ()
- "Either `kill-region' or `delete-forward-char'."
- (interactive)
- (if (region-active-p)
- (kill-region (region-beginning) (region-end))
- (delete-forward-char 1)))
-
-(defun oni:kill-region-or-line ()
- "Either `kill-region' or `kill-line'."
- (interactive)
- (if (region-active-p)
- (kill-region (region-beginning) (region-end))
- (kill-line)))
-
-(defun oni:lisp-mode-func ()
- "Function for `lisp-mode-hook'."
- )
-
-(defun oni:lua-mode-func()
- "Function for `lisp-mode-hook'."
- (local-unset-key (kbd ")"))
- (local-unset-key (kbd "]"))
- (local-unset-key (kbd "}")))
-
-(defun oni:magit-log-edit-mode-func ()
- "Function for `magit-log-edit-mode-hook'."
- (auto-fill-mode)
- (font-lock-add-keywords
- nil
- '(("\\`\\(.\\{,50\\}\\)\\(.*\\)\n?\\(.*\\)$"
- (1 'git-commit-summary-face)
- (2 'git-commit-overlong-summary-face)
- (3 'git-commit-nonempty-second-line-face))
- ("`\\([^']+\\)'" 1 font-lock-constant-face))
- t))
-
-(defun oni:markdown-mode-func ()
- "Function for `markdown-mode-hook'."
- (auto-fill-mode)
- (whitespace-mode))
-
-(defun oni:message-mode-func ()
- "Function for `message-mode-hook'."
- (auto-fill-mode)
- (flyspell-mode)
- (ispell-change-dictionary (read-string "New dictionary: ")))
-
-(defun oni:mini-fix-timestamp-string (date-string)
- "A minimal version of Xah Lee's `fix-timestamp-string'.
-Turn DATE-STRING into something else that can be worked with in
-code. Found at http://xahlee.org/emacs/elisp_parse_time.html"
- (setq date-string (replace-regexp-in-string "Jan" "01" date-string)
- date-string (replace-regexp-in-string "Feb" "02" date-string)
- date-string (replace-regexp-in-string "Mar" "03" date-string)
- date-string (replace-regexp-in-string "Apr" "04" date-string)
- date-string (replace-regexp-in-string "May" "05" date-string)
- date-string (replace-regexp-in-string "Jun" "06" date-string)
- date-string (replace-regexp-in-string "Jul" "07" date-string)
- date-string (replace-regexp-in-string "Aug" "08" date-string)
- date-string (replace-regexp-in-string "Sep" "09" date-string)
- date-string (replace-regexp-in-string "Oct" "10" date-string)
- date-string (replace-regexp-in-string "Nov" "11" date-string)
- date-string (replace-regexp-in-string "Dec" "12" date-string))
- (string-match
- "^\\([0-9]\\{2\\}\\)-\\([0-9]\\{2\\}\\)-\\([0-9]\\{4\\}\\)$"
- date-string)
- (format "%s-%s-%s"
- (match-string 3 date-string)
- (match-string 2 date-string)
- (match-string 1 date-string)))
-
-(defun oni:move-beginning-of-dwim ()
- "Move to beginning of line either after indentation or before."
- (interactive)
- (let ((start (point)))
- (back-to-indentation)
- (if (= start (point))
- (beginning-of-line))))
-
-(defun oni:move-end-of-dwim ()
- "Move to end of line, either before any comments or after."
- (interactive)
- (let ((start (point))
- (eolpos (line-end-position)))
- (beginning-of-line)
- (if (and comment-start
- (comment-search-forward eolpos t))
- (progn
- (search-backward-regexp (concat "[^ \t" comment-start "]"))
- (forward-char)
-
- (when (or (bolp)
- (= start (point)))
- (end-of-line)))
- (end-of-line))))
-
-;; (defun oni:mu4e-view-mode-func ()
-;; "Function for `mu4e-view-mode-hook'."
-;; (longlines-mode))
-
-(defun oni:myepisodes-formatter (plist)
- "Format RSS items from MyEpisodes as org tasks.
-PLIST contains all the pertinent information."
- (let ((str (plist-get plist :title)))
- (string-match
- "^\\[ \\([^\]]+\\) \\]\\[ \\([^\]]+\\) \\]\\[ \\([^\]]+\\) \\]\\[ \\([^\]]+\\) \\]$"
- str)
- (let* ((title (match-string 1 str))
- (episode (match-string 2 str))
- (name (match-string 3 str))
- (date (oni:mini-fix-timestamp-string (match-string 4 str))))
- (format "* ACQUIRE %s %s - %s <%s>" title episode name date))))
-
-(defun oni:newline-and-indent ()
- "`newline-and-indent', but with a twist.
-When dealing with braces, add another line and indent that too."
- (interactive)
- (if (and (not (or (= (point) (point-max))
- (= (point) (point-min))))
- (or (and (char-equal (char-before) ?{)
- (char-equal (char-after) ?}))
- (and (char-equal (char-before) ?\()
- (char-equal (char-after) ?\)))))
- (save-excursion (newline-and-indent)))
- (newline-and-indent))
-
-(defun oni:org-mode-func ()
- "Function for `org-mode-hook'."
- (flyspell-mode)
- (auto-fill-mode)
- (yas-minor-mode))
-
-(defun oni:php-mode-func ()
- "Function for `php-mode-hook'."
- (flymake-mode)
- (local-set-key "\C-j" 'oni:newline-and-indent)
- (c-set-offset 'arglist-intro '+)
- (c-set-offset 'arglist-close '0)
- (rainbow-delimiters-mode)
- (setq fci-rule-column 80))
-
-(defun oni:prog-mode-func ()
- "Function for `prog-mode-hook'."
- (rainbow-delimiters-mode)
- (fci-mode)
- (pretty-symbols-mode)
- (yas-minor-mode))
-
-(defun oni:python-mode-func ()
- "Function for `python-mode-hook'."
- (flymake-mode)
- (local-set-key (kbd "C->") 'python-indent-shift-right)
- (local-set-key (kbd "C-<") 'python-indent-shift-left)
- (set (make-local-variable 'electric-indent-chars) nil)
- (rainbow-delimiters-mode)
- (setq fci-rule-column 79
- fill-column 72)
- (fci-mode))
-
-(defun oni:raise-eshell ()
- "Start or switch back to `eshell'.
-Also change directories to current working directory."
- (interactive)
- (let ((dir (file-name-directory
- (or (buffer-file-name) "~/")))
- (hasfile (not (eq (buffer-file-name) nil))))
- (eshell)
- (if (and hasfile (eq eshell-process-list nil))
- (progn
- (eshell/cd dir)
- (eshell-reset)))))
-
-(defun oni:raise-scratch (&optional mode)
- "Show the *scratch* buffer.
-If called with a universal argument, ask the user which mode to
-use. If MODE is not nil, open a new buffer with the name
-*MODE-scratch* and load MODE as its major mode."
- (interactive (list (if current-prefix-arg
- (read-string "Mode: ")
- nil)))
- (let* ((bname (if mode
- (concat "*" mode "-scratch*")
- "*scratch*"))
- (buffer (get-buffer bname))
- (mode-sym (intern (concat mode "-mode"))))
-
- (unless buffer
- (setq buffer (generate-new-buffer bname))
- (with-current-buffer buffer
- (when (fboundp mode-sym)
- (funcall mode-sym))))
-
- (select-window (display-buffer buffer))))
-
-(defun oni:reload-buffer ()
- "Reload current buffer."
- (interactive)
- (revert-buffer nil t nil))
-
-(defun oni:replace-html-special-chars ()
- "Replace special characters with HTML escaped entities."
- (oni:replace-occurrences "é" "&eacute;"))
-
-(defun oni:replace-occurrences (from to)
- "Replace all occurrences of FROM with TO in the current buffer."
- (save-excursion
- (goto-char (point-min))
- (while (search-forward from nil t)
- (replace-match to))))
-
-(defun oni:required-packages-installed-p ()
- "Check if all the packages I need are installed."
- (let ((tmp-packages oni:required-packages)
- (result t))
- (while (and tmp-packages result)
- (if (not (package-installed-p (car tmp-packages)))
- (setq result nil))
- (setq tmp-packages (cdr tmp-packages)))
- result))
-
-(defun oni:scheme-mode-func ()
- "Function for `scheme-mode-hook'."
- )
-
-(defun oni:self-insert-dwim ()
- "Execute self insert, but when the region is active call self
-insert at the end of the region and at the beginning."
- (interactive)
- (if (region-active-p)
- (let ((electric-pair-mode nil)
- (beginning (region-beginning))
- (end (region-end)))
- (goto-char end)
- (self-insert-command 1)
- (save-excursion
- (goto-char beginning)
- (self-insert-command 1)))
- (self-insert-command 1)))
-
-(defun oni:shorten-dir (dir)
- "Shorten a directory, (almost) like fish does it."
- (while (string-match "\\(/\\.?[^./]\\)[^/]+/" dir)
- (setq dir (replace-match "\\1/" nil nil dir)))
- dir)
-
-(defun oni:split-window-interactive (dir)
- "Split windows in direction DIR.
-
-Can also delete or switch to another window."
- (interactive
- (list (read-char "Direction (h,v,q,d,o): ")))
- (case dir
- ((?v) (split-window-vertically))
- ((?h) (split-window-horizontally))
- ((?q) (delete-other-windows))
- ((?d) (delete-window))
- ((?o) (other-window 1))))
-
-(defun oni:split-window-interactively (window)
- "Ask for a direction and split WINDOW that way.
-
-If no direction is given, don't split."
- (let ((dir (read-char "Direction (h,v): ")))
- (case dir
- ((?v) (split-window-vertically))
- ((?h) (split-window-horizontally))
- (t window))))
-
-(defun oni:start-emms ()
- "Check to see if the function `emms' exists, if not call
-`emms-player-mpd-connect' and assume that will have loaded it."
- (interactive)
- (unless (fboundp 'emms)
- (emms-player-mpd-connect))
- (emms))
-
-(defun oni:term-mode-func ()
- "Function for `term-mode-hook'."
- (setq truncate-lines nil))
-
-(defun oni:texinfo-mode-func ()
- "Function for `texinfo-mode-hook'."
- (auto-fill-mode))
-
-(defun oni:view-mail (inbox)
- "Show a menu with all mailbox options from `oni:mailbox-map'
-for easy selection."
- (interactive
- (list (progn
- (require 'tmm)
- (let ((tmm-completion-prompt "Choose a mailbox\n"))
- (tmm-prompt oni:mailbox-map)))))
- (if inbox
- (progn
- (require 'mu4e)
- (funcall (intern (concat "oni:" inbox "-mailbox")))
- (mu4e))))
-
-(defun oni:write-file-func ()
- "Function for `write-file-hooks'."
- (time-stamp))
-
-(defun oni:yas-minor-mode-func ()
- "Function for `yas-minor-mode-hook'."
- (yas-load-directory (car yas-snippet-dirs)))
-
(eval-after-load "ebuff-menu"
'(define-key electric-buffer-menu-mode-map
(kbd "C-s") 'isearch-forward))
@@ -659,7 +73,7 @@ for easy selection."
(add-to-list ; Make sure pyflakes is loaded
'flymake-allowed-file-name-masks ; for python files.
- '("\\.py\\'" oni:flymake-pyflakes-init))
+ '("\\.py\\'" ext:flymake-pyflakes-init))
(add-to-list ; Error line repexp for go
'flymake-err-line-patterns ; compilation.
@@ -677,15 +91,6 @@ for easy selection."
(eval-after-load "info"
'(require 'info+))
-(eval-after-load "mu4e"
- '(add-to-list
- 'org-capture-templates
- '("c" "Contact" entry (file "~/documents/org/misc/contacts.org")
- (concat "* %(mu4e-view-snarf-from 'name)\n"
- " :PROPERTIES:\n"
- " :EMAIL: %(mu4e-view-snarf-from 'email)\n"
- " :END:"))))
-
(eval-after-load "org"
'(progn
(require 'appt)
@@ -731,53 +136,6 @@ for easy selection."
(setq-default fci-rule-column 73)
(setq-default gac-automatically-push-p t)
(setq-default indent-tabs-mode nil)
-;; (setq-default mode-line-format
-;; (list
-;; '(:eval
-;; (if (and (buffer-modified-p) (buffer-file-name))
-;; (propertize "!"
-;; 'face 'oni:mode-line-modified
-;; 'help-echo "Buffer has been modified")
-;; " "))
-
-;; '(:eval (propertize "%m"
-;; 'face 'oni:mode-line-mode
-;; 'help-echo buffer-file-coding-system))
-
-;; ": "
-
-;; '(:eval (propertize "%b "
-;; 'face 'mode-line-buffer-id
-;; 'help-echo (buffer-file-name)))
-
-;; "("
-;; (propertize "%p" 'face 'oni:mode-line-buffer-position) ":"
-;; (propertize "%04l" 'face 'oni:mode-line-buffer-line) ","
-;; (propertize "%02c" 'face 'oni:mode-line-buffer-column)
-;; ") "
-
-;; "["
-;; '(:eval (propertize
-;; (if buffer-read-only
-;; "R"
-;; (if overwrite-mode "O" "I"))
-;; 'face 'oni:mode-line-buffer-state
-;; 'help-echo (concat "Buffer is "
-;; (if buffer-read-only
-;; "read-only"
-;; (if overwrite-mode
-;; "in overwrite mode"
-;; "in insert mode")))))
-
-;; "] "
-
-;; '(:eval
-;; (propertize (format-time-string "%H:%M")
-;; 'help-echo
-;; (concat (format-time-string "%c; ")
-;; (emacs-uptime "Uptime: %hh"))))
-;; " --"
-;; '(:eval global-mode-string)))
(setq-default php-mode-warn-if-mumamo-off nil)
(setq-default require-final-newline t)
(setq-default tab-width 4)
@@ -847,8 +205,8 @@ for easy selection."
(setq jabber-chat-buffer-format "*jabber:%n*")
(setq jabber-chat-buffer-show-avatar nil)
(setq jabber-chat-fill-long-lines nil)
-(setq jabber-chat-foreign-prompt-format "[%t] < ")
-(setq jabber-chat-local-prompt-format "[%t] > ")
+(setq jabber-chat-foreign-prompt-format "%t < ")
+(setq jabber-chat-local-prompt-format "%t > ")
(setq jabber-chatstates-confirm nil)
(setq jabber-history-dir "~/.emacs.d/jabber")
(setq jabber-roster-show-bindings nil)
@@ -922,16 +280,16 @@ for easy selection."
(setq org-src-fontify-natively t)
(setq org-tags-exclude-from-inheritance '("crypt"))
(setq org-todo-keyword-faces
- '(("TODO" :foreground "red")
- ("IN PROGRESS" :foreground "yellow")
- ("DONE" :foreground "forest green")
- ("SUCCEEDED" :foreground "forest green")
- ("WAITING" :foreground "orange")
- ("CANCELLED" :foreground "orangered")
- ("FAILED" :foreground "orangered")))
-(setq org-todo-keywords
- '((sequence "TODO(t)" "IN PROGRESS" "WAITING(@/!)" "|"
- "DONE(!/!)" "CANCELLED(@/!)")))
+ '(("TODO" :background "red")
+ ("DONE" :background "forest green")
+ ("SUCCEEDED" :background "forest green")
+ ("WAITING" :background "orange" :foreground "black")
+ ("CANCELLED" :background "orange red")
+ ("FAILED" :background "orange red")
+ ("WIP" :background "#ff9800" :foreground "black")
+ ("HOLD" :background "orange" :foreground "black")
+ ("ACQUIRE" :background "red")
+ ("IGNORED" :background "#555555")))
(setq org-use-fast-todo-selection t)
(setq package-archives
'(("melpa" . "http://melpa.milkbox.net/packages/")
@@ -974,7 +332,6 @@ for easy selection."
(add-hook 'after-save-hook 'oni:after-save-func t)
(add-hook 'before-save-hook 'oni:before-save-func)
-(add-hook 'c-mode-common-hook 'oni:c-mode-common-func)
(add-hook 'c-mode-hook 'oni:c-mode-func)
(add-hook 'css-mode-hook 'oni:css-mode-func)
(add-hook 'diary-display-hook 'oni:diary-display-func)
@@ -990,17 +347,15 @@ for easy selection."
(add-hook 'java-mode-hook 'oni:java-mode-func)
(add-hook 'js-mode-hook 'oni:js-mode-func)
(add-hook 'js2-mode-hook 'oni:js2-mode-func)
-(add-hook 'lisp-mode-hook 'oni:lisp-mode-func)
(add-hook 'lua-mode-hook 'oni:lua-mode-func)
(add-hook 'magit-log-edit-mode-hook 'oni:magit-log-edit-mode-func)
(add-hook 'markdown-mode-hook 'oni:markdown-mode-func)
(add-hook 'message-mode-hook 'oni:message-mode-func)
-;; (add-hook 'mu4e-view-mode-hook 'oni:mu4e-view-mode-func)
(add-hook 'org-mode-hook 'oni:org-mode-func)
(add-hook 'php-mode-hook 'oni:php-mode-func)
(add-hook 'prog-mode-hook 'oni:prog-mode-func)
(add-hook 'python-mode-hook 'oni:python-mode-func)
-(add-hook 'scheme-mode-hook 'oni:scheme-mode-func)
+(add-hook 'rst-mode-hook 'oni:rst-mode-func)
(add-hook 'term-mode-hook 'oni:term-mode-func)
(add-hook 'texinfo-mode-hook 'oni:texinfo-mode-func)
(add-hook 'write-file-hooks 'oni:write-file-func)
@@ -1014,12 +369,13 @@ for easy selection."
(global-set-key (kbd "<XF86HomePage>") 'oni:raise-scratch)
(global-set-key (kbd "<XF86Mail>") 'oni:view-mail)
(global-set-key (kbd "<XF86Tools>") 'oni:start-emms)
-(global-set-key (kbd "<f5>") 'oni:reload-buffer)
+(global-set-key (kbd "<f5>") 'ext:reload-buffer)
(global-set-key (kbd "<f6>") 'jabber-switch-to-roster-buffer)
(global-set-key (kbd "<f7>") 'magit-status)
(global-set-key (kbd "<f8>") 'oni:raise-eshell)
(global-set-key (kbd "C-<") 'indent-shift-left)
(global-set-key (kbd "C->") 'indent-shift-right)
+(global-set-key (kbd "C-M-4") 'split-window-vertically)
(global-set-key (kbd "C-M-SPC") 'er/expand-region)
(global-set-key (kbd "C-M-d") 'kill-word)
(global-set-key (kbd "C-M-w") 'backward-kill-word)
@@ -1028,15 +384,15 @@ for easy selection."
(global-set-key (kbd "C-c a") 'org-agenda)
(global-set-key (kbd "C-c c") 'org-capture)
(global-set-key (kbd "C-c i p") 'identica-update-status-interactive)
+(global-set-key (kbd "C-c p") 'oni:show-buffer-position)
(global-set-key (kbd "C-d") 'oni:kill-region-or-forward-char)
(global-set-key (kbd "C-e") 'oni:move-end-of-dwim)
(global-set-key (kbd "C-k") 'oni:kill-region-or-line)
(global-set-key (kbd "C-w") 'oni:kill-region-or-backward-char)
(global-set-key (kbd "C-x C-b") 'electric-buffer-list)
+(global-set-key (kbd "M-4") 'split-window-horizontally)
(global-set-key (kbd "M-n") 'idomenu)
(global-set-key (kbd "\"") 'oni:self-insert-dwim)
-(global-set-key (kbd "M-4") 'split-window-horizontally)
-(global-set-key (kbd "C-M-4") 'split-window-vertically)
(if (daemonp)
(global-set-key "\C-x\C-c" 'oni:close-client-window)
@@ -1064,9 +420,10 @@ for easy selection."
'(".*" . ((bw-display-in-other-window . nil))))
(add-to-list 'display-buffer-alist
'("^\\*.*\\*$" . ((bw-display-in-bottom-window . nil))))
+(add-to-list 'display-buffer-alist
+ '("^\\*magit: .*\\*$" . ((display-buffer-same-window . nil))))
(delete " " mode-line-format)
-(delete " " mode-line-format)
(unless (oni:required-packages-installed-p)
(message "%s" "Refreshing package database...")
diff --git a/.emacs.d/site-lisp/ext.el b/.emacs.d/site-lisp/ext.el
new file mode 100644
index 0000000..2ed65d4
--- /dev/null
+++ b/.emacs.d/site-lisp/ext.el
@@ -0,0 +1,47 @@
+;;; ext.el --- More emacs functions
+
+;; Copyright (C) 2012 Tom Willemsen
+
+;; Author: Tom Willemsen <tom@ryuslash.org>
+;; Keywords: local
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;
+
+;;; Code:
+
+(defadvice org-agenda-redo (after ext:org-agenda-redo-add-appts)
+ "Pressing `r' on the agenda will also add appointments."
+ (progn
+ (setq appt-time-msg-list nil)
+ (org-agenda-to-appt)))
+
+(defun ext:flymake-pyflakes-init ()
+ "Initialize function for flymake with pyflakes."
+ (let* ((temp-file (flymake-init-create-temp-buffer-copy
+ 'flymake-create-temp-inplace))
+ (local-file (file-relative-name temp-file (file-name-directory
+ buffer-file-name))))
+ (list "pycheck.sh" (list local-file))))
+
+(defun ext:reload-buffer ()
+ "Reload current buffer."
+ (interactive)
+ (revert-buffer nil t nil))
+
+(provide 'ext)
+;;; ext.el ends here
diff --git a/.emacs.d/site-lisp/mode-icons.el b/.emacs.d/site-lisp/mode-icons.el
new file mode 100644
index 0000000..771d6f3
--- /dev/null
+++ b/.emacs.d/site-lisp/mode-icons.el
@@ -0,0 +1,59 @@
+;;; mode-icons.el --- Show icons for modes
+
+;; Copyright (C) 2012 Tom Willemsen
+
+;; Author: Tom Willemsen <thomas@aethon.nl>
+;; Keywords: multimedia
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;
+
+;;; Code:
+
+(defun mode-icons-get-icon-file (name)
+ (concat user-emacs-directory "/icons/" name))
+
+(defvar mode-icons
+ `(("Emacs-Lisp" . (image :type xpm
+ :file ,(mode-icons-get-icon-file "emacs.xpm")
+ :ascent center))
+ ("Python" . (image :type xpm
+ :file ,(mode-icons-get-icon-file "python.xpm")
+ :ascent center))
+ ("Scheme" . (image :type xpm
+ :file ,(mode-icons-get-icon-file "scheme.xpm")
+ :ascent center))
+ ("Lisp" . (image :type xpm
+ :file ,(mode-icons-get-icon-file "cl.xpm")
+ :ascent center))
+ ("PHP" . (image :type xpm
+ :file ,(mode-icons-get-icon-file "php.xpm")
+ :ascent center)))
+ "Icons for major modes.")
+
+(defun set-mode-icon (mode)
+ (let ((icon-spec (assoc mode mode-icons)))
+ (if icon-spec
+ (setq mode-name (propertize mode-name 'display (cdr icon-spec))))))
+
+(defun set-current-mode-icon ()
+ (set-mode-icon mode-name))
+
+(add-hook 'after-change-major-mode-hook 'set-current-mode-icon)
+
+(provide 'mode-icons)
+;;; mode-icons.el ends here
diff --git a/.emacs.d/site-lisp/oni.el b/.emacs.d/site-lisp/oni.el
new file mode 100644
index 0000000..2338ecc
--- /dev/null
+++ b/.emacs.d/site-lisp/oni.el
@@ -0,0 +1,555 @@
+;;; oni.el --- Functions for emacs
+
+;; Copyright (C) 2012 Tom Willemsen
+
+;; Author: Tom Willemsen <tom@ryuslash.org>
+;; Keywords: local
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;
+
+;;; Code:
+
+(defmacro oni:define-mailbox (name email &optional signature longname)
+ "Define a mailbox function for mailbox NAME with address EMAIL.
+Optionally set signature to SIGNATURE and use LONGNAME as the
+actual account name."
+ `(defun ,(make-symbol (concat "oni:" name "-mailbox")) ()
+ ,(concat "Settings for " name " mailbox")
+ (setq mu4e-mu-home ,(expand-file-name (concat "~/.mu/" name))
+ mu4e-maildir ,(expand-file-name (concat "~/documents/mail/"
+ (or longname name)))
+ mu4e-get-mail-command ,(concat "offlineimap -oa " (or longname
+ name))
+ mu4e~main-buffer-name ,(concat "*mu4e-" name "*")
+ user-mail-address ,email
+ message-sendmail-extra-arguments '("-a" ,name)
+ message-signature-file ,signature)))
+
+(defmacro oni:email (user at host dot com)
+ "Turn arguments into an email address.
+The resulting email address will look like: USER@HOST.COM, AT and
+DOT are intentionally being skipped."
+ (concat (symbol-name user) "@" (symbol-name host) "."
+ (symbol-name com)))
+
+(defvar oni:mailbox-map
+ '("top" ("menu"
+ ("ryulash.org" . "ryuslash")
+ ("ninthfloor" . "ninthfloor")
+ ("gmail" . "gmail")
+ ("aethon" . "aethon")))
+ "A mailbox map for use with `tmm-prompt'.")
+
+(defvar oni:required-packages
+ '(graphviz-dot-mode htmlize magit rainbow-delimiters
+ rainbow-mode yasnippet markdown-mode flymake
+ flymake-cursor pony-mode sauron dispass
+ expand-region fill-column-indicator
+ git-auto-commit-mode idomenu magit smex)
+ "List of all the packages I have (want) installed.")
+
+(defun oni:after-save-func ()
+ "Function for `after-save-hook'."
+ (oni:compile-el)
+ (executable-make-buffer-file-executable-if-script-p)
+ (let ((dom-dir (locate-dominating-file (buffer-file-name) "Makefile")))
+ (when dom-dir
+ (shell-command (concat "make -C " dom-dir " TAGS >/dev/null 2>&1")))))
+
+(defun oni:before-save-func ()
+ "Function for `before-save-hook'."
+ (if (eq major-mode 'html-mode)
+ (oni:replace-html-special-chars))
+ (if (not (eq major-mode 'markdown-mode))
+ (delete-trailing-whitespace)))
+
+(defun oni:c-mode-func ()
+ "Function for `c-mode-hook'."
+ (local-set-key [f9] 'compile)
+ (local-set-key "\C-j" 'oni:newline-and-indent))
+
+(defun oni:close-client-window ()
+ "Close a client's frames."
+ (interactive)
+ (server-save-buffers-kill-terminal nil))
+
+(defun oni:compile-el ()
+ "Compile the current buffer file if it is an .el file."
+ (let* ((full-file-name (buffer-file-name))
+ (file-name (file-name-nondirectory full-file-name))
+ (suffix (file-name-extension file-name)))
+ (if (and (not (string-equal file-name ".dir-locals.el"))
+ (string-equal suffix "el"))
+ (byte-compile-file full-file-name))))
+
+(defun oni:css-mode-func ()
+ "Function for `css-mode-hook'."
+ (local-set-key "\C-j" 'oni:newline-and-indent)
+ (rainbow-mode))
+
+(defun oni:diary-display-func ()
+ "Function for `diary-display-hook'."
+ (diary-fancy-display))
+
+(defun oni:emacs-lisp-mode-func ()
+ "Function for `emacs-lisp-mode-hook'."
+ (eldoc-mode))
+
+(defun oni:emms-toggle-playing ()
+ "Toggle between playing/paused states."
+ (interactive)
+ (if (eq emms-player-playing-p nil)
+ (emms-start)
+ (emms-pause)))
+
+(defun oni:erc-mode-func ()
+ "Function for `erc-mode-hook'."
+ (erc-fill-mode -1)
+ (visual-line-mode)
+ (setq truncate-lines nil))
+
+(defun oni:eshell-mode-func ()
+ "Function for `eshell-mode-hook'."
+ (setq truncate-lines nil))
+
+(defun oni:eshell-prompt-function ()
+ "Show a pretty shell prompt."
+ (let ((status (if (zerop eshell-last-command-status) ?+ ?-))
+ (hostname (shell-command-to-string "hostname"))
+ (dir (abbreviate-file-name (eshell/pwd)))
+ (branch
+ (shell-command-to-string
+ "git branch --contains HEAD 2>/dev/null | sed -e '/^[^*]/d'"))
+ (userstatus (if (zerop (user-uid)) ?# ?$)))
+ (concat
+ (propertize (char-to-string status)
+ 'face `(:foreground ,(if (= status ?+)
+ "green"
+ "red")))
+ " "
+ (propertize (substring hostname 0 -1) 'face 'mode-line-buffer-id)
+ " "
+ (propertize (oni:shorten-dir dir) 'face 'font-lock-string-face)
+ " "
+ (when (not (string= branch ""))
+ (propertize
+ ;; Cut off "* " and "\n"
+ (substring branch 2 -1)
+ 'face 'font-lock-function-name-face))
+ " \n"
+ (propertize (char-to-string userstatus)
+ 'face `(:foreground "blue"))
+ "> ")))
+
+(defun oni:flymake-mode-func ()
+ "Function for `flymake-mode-hook'."
+ (local-set-key [M-P] 'flymake-goto-prev-error)
+ (local-set-key [M-N] 'flymake-goto-next-error))
+
+(defun oni:go-mode-func ()
+ "Function for `go-mode-hook'."
+ (setq indent-tabs-mode nil)
+ (local-set-key "\C-j" 'oni:newline-and-indent))
+
+(defun oni:gtags-mode-func ()
+ "Function for `gtags-mode-hook'."
+ (local-set-key "\M-," 'gtags-find-tag)
+ (local-set-key "\M-." 'gtags-find-rtag))
+
+(defun oni:html-mode-func ()
+ "Function for `html-mode-hook'."
+ (yas-minor-mode)
+ (fci-mode))
+
+(defun oni:indent-shift-left (start end &optional count)
+ "Rigidly indent region.
+Region is from START to END. Move
+COUNT number of spaces if it is non-nil otherwise use
+`tab-width'."
+ (interactive
+ (if mark-active
+ (list (region-beginning) (region-end) current-prefix-arg)
+ (list (line-beginning-position)
+ (line-end-position)
+ current-prefix-arg)))
+ (if count
+ (setq count (prefix-numeric-value count))
+ (setq count tab-width))
+ (when (> count 0)
+ (let ((deactivate-mark nil))
+ (save-excursion
+ (goto-char start)
+ (while (< (point) end)
+ (if (and (< (current-indentation) count)
+ (not (looking-at "[ \t]*$")))
+ (error "Can't shift all lines enough"))
+ (forward-line))
+ (indent-rigidly start end (- count))))))
+
+(defun oni:indent-shift-right (start end &optional count)
+ "Indent region between START and END rigidly to the right.
+If COUNT has been specified indent by that much, otherwise look at
+`tab-width'."
+ (interactive
+ (if mark-active
+ (list (region-beginning) (region-end) current-prefix-arg)
+ (list (line-beginning-position)
+ (line-end-position)
+ current-prefix-arg)))
+ (let ((deactivate-mark nil))
+ (if count
+ (setq count (prefix-numeric-value count))
+ (setq count tab-width))
+ (indent-rigidly start end count)))
+
+(defun oni:jabber-chat-mode-func ()
+ "Function for `jabber-chat-mode-hook'."
+ (visual-line-mode)
+ (setq mode-line-format (append (cddr jabber-chat-header-line-format)
+ '(global-mode-string))
+ header-line-format nil))
+
+(defun oni:jabber-roster-mode-func ()
+ "Function for `jabber-roster-mode-hook'."
+ (setq mode-line-format
+ (list (propertize " %m" 'face 'mode-line-buffer-id))))
+
+(defun oni:java-mode-func ()
+ "Function for `java-mode-hook'."
+ (local-set-key "\C-j" 'oni:newline-and-indent))
+
+(defun oni:js-mode-func ()
+ "Function for `js-mode-hook'."
+ (rainbow-delimiters-mode)
+ (local-set-key "\C-j" 'oni:newline-and-indent)
+ (pretty-symbols-mode -1))
+
+(defun oni:js2-mode-func ()
+ "Function for `js2-mode-hook'."
+ (oni:prog-mode-func)
+ (oni:js-mode-func)
+ (local-set-key (kbd "<f5>") #'slime-js-reload)
+ (slime-js-minor-mode))
+
+(defun oni:kill-region-or-backward-char ()
+ "Either `kill-region' or `backward-delete-char-untabify'."
+ (interactive)
+ (if (region-active-p)
+ (kill-region (region-beginning) (region-end))
+ (backward-delete-char-untabify 1)))
+
+(defun oni:kill-region-or-forward-char ()
+ "Either `kill-region' or `delete-forward-char'."
+ (interactive)
+ (if (region-active-p)
+ (kill-region (region-beginning) (region-end))
+ (delete-forward-char 1)))
+
+(defun oni:kill-region-or-line ()
+ "Either `kill-region' or `kill-line'."
+ (interactive)
+ (if (region-active-p)
+ (kill-region (region-beginning) (region-end))
+ (kill-line)))
+
+(defun oni:lua-mode-func()
+ "Function for `lua-mode-hook'."
+ (local-unset-key (kbd ")"))
+ (local-unset-key (kbd "]"))
+ (local-unset-key (kbd "}")))
+
+(defun oni:magit-log-edit-mode-func ()
+ "Function for `magit-log-edit-mode-hook'."
+ (auto-fill-mode)
+ (font-lock-add-keywords
+ nil
+ '(("\\`\\(.\\{,50\\}\\)\\(.*\\)\n?\\(.*\\)$"
+ (1 'git-commit-summary-face)
+ (2 'git-commit-overlong-summary-face)
+ (3 'git-commit-nonempty-second-line-face))
+ ("`\\([^']+\\)'" 1 font-lock-constant-face))
+ t))
+
+(defun oni:markdown-mode-func ()
+ "Function for `markdown-mode-hook'."
+ (auto-fill-mode)
+ (whitespace-mode))
+
+(defun oni:message-mode-func ()
+ "Function for `message-mode-hook'."
+ (auto-fill-mode)
+ (flyspell-mode)
+ (ispell-change-dictionary (read-string "New dictionary: ")))
+
+(defun oni:mini-fix-timestamp-string (date-string)
+ "A minimal version of Xah Lee's `fix-timestamp-string'.
+Turn DATE-STRING into something else that can be worked with in
+code. Found at http://xahlee.org/emacs/elisp_parse_time.html"
+ (setq date-string (replace-regexp-in-string "Jan" "01" date-string)
+ date-string (replace-regexp-in-string "Feb" "02" date-string)
+ date-string (replace-regexp-in-string "Mar" "03" date-string)
+ date-string (replace-regexp-in-string "Apr" "04" date-string)
+ date-string (replace-regexp-in-string "May" "05" date-string)
+ date-string (replace-regexp-in-string "Jun" "06" date-string)
+ date-string (replace-regexp-in-string "Jul" "07" date-string)
+ date-string (replace-regexp-in-string "Aug" "08" date-string)
+ date-string (replace-regexp-in-string "Sep" "09" date-string)
+ date-string (replace-regexp-in-string "Oct" "10" date-string)
+ date-string (replace-regexp-in-string "Nov" "11" date-string)
+ date-string (replace-regexp-in-string "Dec" "12" date-string))
+ (string-match
+ "^\\([0-9]\\{2\\}\\)-\\([0-9]\\{2\\}\\)-\\([0-9]\\{4\\}\\)$"
+ date-string)
+ (format "%s-%s-%s"
+ (match-string 3 date-string)
+ (match-string 2 date-string)
+ (match-string 1 date-string)))
+
+(defun oni:move-beginning-of-dwim ()
+ "Move to beginning of line either after indentation or before."
+ (interactive)
+ (let ((start (point)))
+ (back-to-indentation)
+ (if (= start (point))
+ (beginning-of-line))))
+
+(defun oni:move-end-of-dwim ()
+ "Move to end of line, either before any comments or after."
+ (interactive)
+ (let ((start (point))
+ (eolpos (line-end-position)))
+ (beginning-of-line)
+ (if (and comment-start
+ (comment-search-forward eolpos t))
+ (progn
+ (search-backward-regexp (concat "[^ \t" comment-start "]"))
+ (forward-char)
+
+ (when (or (bolp)
+ (= start (point)))
+ (end-of-line)))
+ (end-of-line))))
+
+(defun oni:myepisodes-formatter (plist)
+ "Format RSS items from MyEpisodes as org tasks.
+PLIST contains all the pertinent information."
+ (let ((str (plist-get plist :title)))
+ (string-match
+ "^\\[ \\([^\]]+\\) \\]\\[ \\([^\]]+\\) \\]\\[ \\([^\]]+\\) \\]\\[ \\([^\]]+\\) \\]$"
+ str)
+ (let* ((title (match-string 1 str))
+ (episode (match-string 2 str))
+ (name (match-string 3 str))
+ (date (oni:mini-fix-timestamp-string (match-string 4 str))))
+ (format "* ACQUIRE %s %s - %s <%s>" title episode name date))))
+
+(defun oni:newline-and-indent ()
+ "`newline-and-indent', but with a twist.
+When dealing with braces, add another line and indent that too."
+ (interactive)
+ (if (and (not (or (= (point) (point-max))
+ (= (point) (point-min))))
+ (or (and (char-equal (char-before) ?{)
+ (char-equal (char-after) ?}))
+ (and (char-equal (char-before) ?\()
+ (char-equal (char-after) ?\)))))
+ (save-excursion (newline-and-indent)))
+ (newline-and-indent))
+
+(defun oni:org-mode-func ()
+ "Function for `org-mode-hook'."
+ (flyspell-mode)
+ (auto-fill-mode)
+ (yas-minor-mode))
+
+(defun oni:php-mode-func ()
+ "Function for `php-mode-hook'."
+ (flymake-mode)
+ (local-set-key "\C-j" 'oni:newline-and-indent)
+ (c-set-offset 'arglist-intro '+)
+ (c-set-offset 'arglist-close '0)
+ (rainbow-delimiters-mode)
+ (setq fci-rule-column 80))
+
+(defun oni:prog-mode-func ()
+ "Function for `prog-mode-hook'."
+ (rainbow-delimiters-mode)
+ (fci-mode)
+ (pretty-symbols-mode)
+ (yas-minor-mode))
+
+(defun oni:python-mode-func ()
+ "Function for `python-mode-hook'."
+ (flymake-mode)
+ (local-set-key (kbd "C->") 'python-indent-shift-right)
+ (local-set-key (kbd "C-<") 'python-indent-shift-left)
+ (set (make-local-variable 'electric-indent-chars) nil)
+ (rainbow-delimiters-mode)
+ (setq fci-rule-column 79
+ fill-column 72)
+ (fci-mode))
+
+(defun oni:raise-eshell ()
+ "Start or switch back to `eshell'.
+Also change directories to current working directory."
+ (interactive)
+ (let ((dir (file-name-directory
+ (or (buffer-file-name) "~/")))
+ (hasfile (not (eq (buffer-file-name) nil))))
+ (eshell)
+ (if (and hasfile (eq eshell-process-list nil))
+ (progn
+ (eshell/cd dir)
+ (eshell-reset)))))
+
+(defun oni:raise-scratch (&optional mode)
+ "Show the *scratch* buffer.
+If called with a universal argument, ask the user which mode to
+use. If MODE is not nil, open a new buffer with the name
+*MODE-scratch* and load MODE as its major mode."
+ (interactive (list (if current-prefix-arg
+ (read-string "Mode: ")
+ nil)))
+ (let* ((bname (if mode
+ (concat "*" mode "-scratch*")
+ "*scratch*"))
+ (buffer (get-buffer bname))
+ (mode-sym (intern (concat mode "-mode"))))
+
+ (unless buffer
+ (setq buffer (generate-new-buffer bname))
+ (with-current-buffer buffer
+ (when (fboundp mode-sym)
+ (funcall mode-sym))))
+
+ (select-window (display-buffer buffer))))
+
+(defun oni:replace-html-special-chars ()
+ "Replace special characters with HTML escaped entities."
+ (oni:replace-occurrences "é" "&eacute;"))
+
+(defun oni:replace-occurrences (from to)
+ "Replace all occurrences of FROM with TO in the current buffer."
+ (save-excursion
+ (goto-char (point-min))
+ (while (search-forward from nil t)
+ (replace-match to))))
+
+(defun oni:required-packages-installed-p ()
+ "Check if all the packages I need are installed."
+ (let ((tmp-packages oni:required-packages)
+ (result t))
+ (while (and tmp-packages result)
+ (if (not (package-installed-p (car tmp-packages)))
+ (setq result nil))
+ (setq tmp-packages (cdr tmp-packages)))
+ result))
+
+(defun oni:rst-mode-func ()
+ "Function for `rst-mode-hook'."
+ (auto-fill-mode))
+
+(defun oni:self-insert-dwim ()
+ "Execute self insert, but when the region is active call self
+insert at the end of the region and at the beginning."
+ (interactive)
+ (if (region-active-p)
+ (let ((electric-pair-mode nil)
+ (beginning (region-beginning))
+ (end (region-end)))
+ (goto-char end)
+ (self-insert-command 1)
+ (save-excursion
+ (goto-char beginning)
+ (self-insert-command 1)))
+ (self-insert-command 1)))
+
+(defun oni:shorten-dir (dir)
+ "Shorten a directory, (almost) like fish does it."
+ (while (string-match "\\(/\\.?[^./]\\)[^/]+/" dir)
+ (setq dir (replace-match "\\1/" nil nil dir)))
+ dir)
+
+(defun oni:show-buffer-position ()
+ "Show the position in the current buffer."
+ (interactive)
+ (message (format "%d:%d" (line-number-at-pos) (current-column))))
+
+(defun oni:split-window-interactive (dir)
+ "Split windows in direction DIR.
+
+Can also delete or switch to another window."
+ (interactive
+ (list (read-char "Direction (h,v,q,d,o): ")))
+ (case dir
+ ((?v) (split-window-vertically))
+ ((?h) (split-window-horizontally))
+ ((?q) (delete-other-windows))
+ ((?d) (delete-window))
+ ((?o) (other-window 1))))
+
+(defun oni:split-window-interactively (window)
+ "Ask for a direction and split WINDOW that way.
+
+If no direction is given, don't split."
+ (let ((dir (read-char "Direction (h,v): ")))
+ (case dir
+ ((?v) (split-window-vertically))
+ ((?h) (split-window-horizontally))
+ (t window))))
+
+(defun oni:start-emms ()
+ "Check to see if the function `emms' exists, if not call
+`emms-player-mpd-connect' and assume that will have loaded it."
+ (interactive)
+ (unless (fboundp 'emms)
+ (emms-player-mpd-connect))
+ (emms))
+
+(defun oni:term-mode-func ()
+ "Function for `term-mode-hook'."
+ (setq truncate-lines nil))
+
+(defun oni:texinfo-mode-func ()
+ "Function for `texinfo-mode-hook'."
+ (auto-fill-mode))
+
+(defun oni:view-mail (inbox)
+ "Show a menu with all mailbox options from `oni:mailbox-map'
+for easy selection."
+ (interactive
+ (list (progn
+ (require 'tmm)
+ (let ((tmm-completion-prompt "Choose a mailbox\n"))
+ (tmm-prompt oni:mailbox-map)))))
+ (if inbox
+ (progn
+ (require 'mu4e)
+ (funcall (intern (concat "oni:" inbox "-mailbox")))
+ (mu4e))))
+
+(defun oni:write-file-func ()
+ "Function for `write-file-hooks'."
+ (time-stamp))
+
+(defun oni:yas-minor-mode-func ()
+ "Function for `yas-minor-mode-hook'."
+ (yas-load-directory (car yas-snippet-dirs)))
+
+(provide 'oni)
+;;; oni.el ends here
diff --git a/.emacs.d/themes/new-theme.el b/.emacs.d/themes/new-theme.el
index c4df5e6..1d5a454 100644
--- a/.emacs.d/themes/new-theme.el
+++ b/.emacs.d/themes/new-theme.el
@@ -30,15 +30,18 @@
(custom-theme-set-faces
'new
'(default ((t (:background "#111113" :foreground "#eeeeec"))))
- '(flymake-errline ((t (:background "#8b1a1a"))))
- '(flymake-infoline ((t (:background "#00008b"))))
- '(flymake-warnline ((t (:background "#9a3200"))))
+ '(flymake-errline ((t (:background nil :underline (:color "#ff5555" :style wave)))))
+ '(flymake-infoline ((t (:background nil :underline (:color "#55ff55" :style wave)))))
+ '(flymake-warnline ((t (:background nil :underline (:color "#5555ff" :style wave)))))
'(font-lock-comment-delimiter-face ((t (:foreground "#a9a9a9" :slant italic :weight bold))))
'(font-lock-comment-face ((t (:foreground "#a9a9a9" :slant italic))))
+ '(font-lock-constant-face ((t (:foreground "#93d8d8"))))
'(font-lock-doc-face ((t (:foreground "#9ad870"))))
+ '(font-lock-function-name-face ((t (:foreground "#78a2c1"))))
'(font-lock-keyword-face ((t (:foreground "#cfce29"))))
'(font-lock-string-face ((t (:foreground "#ffbd5c"))))
- '(font-lock-type-face ((t (:foreground "#78a2c1"))))
+ '(font-lock-type-face ((t (:foreground "#78a2c1" :bold t))))
+ '(font-lock-variable-name-face ((t (:foreground "#c39cc3"))))
'(highlight ((t (:background "#171719"))))
'(ido-subdir ((t (:foreground "#ff5d55"))))
'(jabber-chat-prompt-foreign ((t (:foreground "#ff5d55"))))
@@ -48,7 +51,21 @@
'(minibuffer-prompt ((t (:foreground "#78a2c1"))))
'(mode-line ((t (:background "#222224" :foreground "#eeeeec" :box nil))))
'(mode-line-inactive ((t (:background "#171719" :foreground "#999999" :box nil))))
+ '(org-level-1 ((t (:height 1.5))))
+ '(org-level-2 ((t (:height 1.4))))
+ '(org-level-3 ((t (:height 1.3))))
+ '(org-level-4 ((t (:height 1.2))))
+ '(org-level-5 ((t (:height 1.1))))
+ '(org-level-6 ((t (:height 1.0))))
+ '(org-level-7 ((t (:height 1.0))))
+ '(org-level-8 ((t (:height 1.0))))
'(region ((t (:background "#2729b6"))))
+ '(rst-level-1 ((t (:height 1.5 :background nil))))
+ '(rst-level-2 ((t (:height 1.4 :background nil))))
+ '(rst-level-3 ((t (:height 1.3 :background nil))))
+ '(rst-level-4 ((t (:height 1.2 :background nil))))
+ '(rst-level-5 ((t (:height 1.1 :background nil))))
+ '(rst-level-6 ((t (:height 1.0 :background nil))))
)
(provide-theme 'new)
diff --git a/.fonts.conf b/.fonts.conf
new file mode 100644
index 0000000..6204d1f
--- /dev/null
+++ b/.fonts.conf
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+
+ <!-- settings go here -->
+ <match target="pattern">
+ <edit name="antialias" mode="assign">
+ <bool>true</bool>
+ </edit>
+
+ <edit name="hinting" mode="assign">
+ <bool>true</bool>
+ </edit>
+
+ <edit name="hintstyle" mode="assign">
+ <const>hintslight</const>
+ </edit>
+
+ <edit name="rgba" mode="assign">
+ <const>rgb</const>
+ </edit>
+
+ <edit name="autohint" mode="assign">
+ <bool>true</bool>
+ </edit>
+ </match>
+
+ <match target="font">
+ <edit name="lcdfilter" mode="assign">
+ <const>lcddefault</const>
+ </edit>
+ </match>
+
+</fontconfig>
diff --git a/.moc/config b/.moc/config
new file mode 100644
index 0000000..76619d2
--- /dev/null
+++ b/.moc/config
@@ -0,0 +1,3 @@
+Layout1 = playlist(0,0,100%,100%):directory(0,0,100%,100%)
+Layout2 = directory(0,0,50%,100%):playlist(50%,0,FILL,100%)
+CanStartInPlaylist = yes
diff --git a/.sawfish/rc b/.sawfish/rc
new file mode 100644
index 0000000..23fd5e6
--- /dev/null
+++ b/.sawfish/rc
@@ -0,0 +1,119 @@
+(setq user-apps-menu
+ '(("Emacs" (system "emacsclient -c &"))
+ ("Terminal" (system "urxvt &"))))
+
+(define oni:window-packing-keymap (make-keymap))
+
+(bind-keys oni:window-packing-keymap
+ "p" 'pack-window-up
+ "n" 'pack-window-down
+ "b" 'pack-window-left
+ "f" 'pack-window-right)
+
+(define oni:window-growing-keymap (make-keymap))
+
+(bind-keys oni:window-growing-keymap
+ "p" 'grow-window-up
+ "n" 'grow-window-down
+ "b" 'grow-window-left
+ "f" 'grow-window-right)
+
+(define oni:window-shrinking-keymap (make-keymap))
+
+(bind-keys oni:window-shrinking-keymap
+ "p" 'shrink-window-up
+ "n" 'shrink-window-down
+ "b" 'shrink-window-left
+ "f" 'shrink-window-right)
+
+(define oni:window-yanking-keymap (make-keymap))
+
+(bind-keys oni:window-yanking-keymap
+ "p" 'yank-window-up
+ "n" 'yank-window-down
+ "b" 'yank-window-left
+ "f" 'yank-window-right)
+
+(define oni:window-management-keymap (make-keymap))
+
+(bind-keys oni:window-management-keymap
+ "M" 'maximize-window-toggle
+ "p" oni:window-packing-keymap
+ "g" oni:window-growing-keymap
+ "s" oni:window-shrinking-keymap
+ "y" oni:window-yanking-keymap)
+
+(bind-keys global-keymap
+ "XF86AudioPlay" '(run-shell-command "mpc toggle")
+ "XF86AudioStop" '(run-shell-command "mpc stop")
+ "XF86AudioMute" '(run-shell-command "amixer sset Master toggle")
+ "XF86AudioLowerVolume" '(run-shell-command "mpc volume -5")
+ "XF86AudioRaiseVolume" '(run-shell-command "mpc volume +5")
+ "XF86AudioPrev" '(run-shell-command "mpc prev")
+ "XF86AudioNext" '(run-shell-command "mpc next"))
+
+(require 'sawfish.wm.util.prompt)
+
+(define oni:extended-keymap (make-keymap))
+
+(bind-keys oni:extended-keymap
+ "w" oni:window-management-keymap)
+
+;; (ungrab-keymap global-keymap)
+(bind-keys global-keymap
+ "Super-!" '(run-shell-command (prompt-for-string "Run: "))
+ "C-M-l" '(run-shell-command "i3lock -c \"#000000\"")
+ "Super-e" '(run-shell-command (getenv "EDITOR"))
+ "Super-w" '(run-shell-command (getenv "BROWSER"))
+ "Super-c" '(run-shell-command "urxvt")
+ "Super-TAB" 'cycle-windows
+ "Super-x" oni:extended-keymap
+ "Menu" 'popup-root-menu)
+;; (grab-keymap global-keymap)
+
+(setq prompt-color (cons (get-color "#eeeeec")
+ (get-color "#252e2b")))
+
+(setq default-frame-style 'naquadah)
+
+(require 'sawfish.wm.ext.match-window)
+
+(add-window-matcher '((WM_CLASS . "^Firefox/Navigator$"))
+ '((position . north-east)))
+
+(require 'rep.regexp)
+(require 'sawfish.wm.commands.grow-pack)
+(require 'sawfish.wm.commands.shrink-yank)
+
+(defun oni:emacs-main-window-p (window)
+ "Check wether or not WINDOW is Emacs' main window."
+ (let ((name (window-name window)))
+ (and (string-match "^emacs: " name)
+ (not (string= "emacs: *Sauron*" name)))))
+
+(defun oni:place-emacs-windows ()
+ "Place Emacs' main, sauron and optionally speedbar windows the
+way I like them."
+ (let ((main-window (car (filter-windows oni:emacs-main-window-p)))
+ (sauron-window (get-window-by-name "emacs: *Sauron*"))
+ (speedbar-window (get-window-by-name "^Speedbar " #:regex t)))
+ (move-window-to main-window 0 0)
+ (move-window-to sauron-window 0 0)
+
+ (set-window-type sauron-window 'transient)
+ (pack-window-down sauron-window)
+ (grow-window-right sauron-window)
+
+ (when speedbar-window
+ (move-window-to speedbar-window 0 0)
+ (set-window-type speedbar-window 'transient)
+ (yank-window-right main-window)
+ (grow-window-down speedbar-window))
+
+ (grow-window-down main-window)
+ (grow-window-right main-window)))
+
+(define-command 'oni:place-emacs-windows oni:place-emacs-windows)
+
+(bind-keys oni:window-management-keymap
+ "E" 'oni:place-emacs-windows)
diff --git a/.scwmrc b/.scwmrc
new file mode 100644
index 0000000..72ddae8
--- /dev/null
+++ b/.scwmrc
@@ -0,0 +1,305 @@
+;; -*- mode: scheme; -*-
+;; simple.scwmrc was system.scwmrc until Scwm-0.99.2
+
+;; Uncomment the below to send a single UDP packet to
+;; the scwm usage counter machine at startup
+;; The single packet just contains the hostname and version number
+;; To disable, set environment variable SCWM_DO_NOT_LOG_USAGE
+;;(define thank-scwm-authors-with-usage-note #t)
+
+(define user-image-load-path
+ (list (string-append (user-home) "/src/scwm/pixmaps")
+ (string-append (user-home) "/src/scwm/bitmaps")))
+
+;;; set path to use for image searches
+(set! image-load-path
+ (append
+ user-image-load-path
+ '("/usr/X11/lib/X11/mini-icons" "/usr/X11/include/X11/pixmaps"
+ "/usr/lib/icons" "/usr/local/X11/include/X11/pixmaps"
+ "/usr/local/lib/icons" "/usr/local/icons"
+ "/uns/share/include/X11/pixmaps" "/uns/share/include/X11/bitmaps")
+ image-load-path))
+
+;;-------------------------------;;
+;; import the scwm modules ;;
+
+#!
+(use-scwm-modules minimal base winops winlist wininfo
+ doc style message-window face
+ preferences style
+ ;optargs winlist-menu)
+ winlist-menu)
+!#
+
+
+(use-modules
+ (app scwm minimal)
+ (app scwm base)
+ (app scwm style)
+ (app scwm winops)
+ (app scwm winlist)
+ (app scwm wininfo)
+ (app scwm doc)
+ (app scwm message-window)
+ (app scwm face)
+ ;(app scwm preferences)
+ (app scwm optargs)
+ (app scwm winlist-menu))
+
+
+;;-------------------------------;;
+;; set some basic styles info ;;
+
+
+(define font
+ (make-font "-unknown-DejaVu Sans Mono-normal-normal-normal-*-18-*-*-*-m-0-iso10646-1"))
+
+(menu-style #:fg "#eeeeec"
+ #:bg "#252a2b"
+ #:stipple "blue"
+ #:hl-fg "yellow"
+ #:font font)
+
+(title-style #:font font #:justify 'left)
+
+(set-icon-font! font)
+(set-highlight-foreground! "white")
+(set-highlight-background! "blueviolet")
+(set-rubber-band-mask! 127)
+
+;;-------------------------------;;
+;; set some paths ;;
+;;
+
+;; these are OK for my system, but may need to be changed for
+;; yours. This should probably be eventually autoconfed or something.
+
+;;; set path to use for image searches
+(set! image-load-path
+ (append
+ user-image-load-path
+ '("/usr/X11/lib/X11/mini-icons" "/usr/X11/include/X11/pixmaps"
+ "/usr/lib/icons" "/usr/local/X11/include/X11/pixmaps"
+ "/usr/local/lib/icons" "/usr/local/icons"
+ "/uns/share/include/X11/pixmaps" "/uns/share/include/X11/bitmaps")
+ image-load-path))
+
+;;-------------------------------;;
+;; set some window styles ;;
+
+(window-style "*"
+ #:fg "white" #:bg "navy"
+ #:icon "unknown1.xpm"
+ #:icon-box (list (x- 70) 1 69 (y- 141))
+ #:border-width 6
+ #:focus 'mouse
+ #:mwm-func-hint #t #:mwm-decor-hint #t
+ #:hint-override #t #:decorate-transient #t
+ #:PPosition-hint #f
+ #:lenience #t
+ )
+(define desk-widget
+ (make-style #:plain-border #t #:sticky #t #:winlist-skip #t
+ #:border-width 3 #:focus 'none))
+
+(window-style "*lock" #:use-style desk-widget)
+(window-style "xload" #:no-titlebar #t #:use-style desk-widget)
+(window-style "xscreensaver" #:no-titlebar #t #:use-style desk-widget)
+(window-style "xbiff" #:no-titlebar #t #:use-style desk-widget)
+(window-style "xcalc" #:icon "xcalc.xpm")
+(window-style "xman" #:icon "xman.xpm")
+(window-style "xmag" #:icon "mag_glass.xpm")
+(window-style "Emacs" #:icon "gnu-animal.xpm")
+(window-style "XTerm" #:icon "xterm.xpm")
+
+
+;; People seem to prefer move by full virtual desks
+(set-edge-resistance! 500 10)
+(set-edge-scroll! (%x 100) (%y 100))
+
+
+;;-------------------------------;;
+;; define some useful menus ;;
+
+
+(define window-ops-menu
+ (menu
+ (list
+ (menu-title "Window Ops") menu-separator
+ (menuitem "Move" #:action interactive-move)
+ (menuitem "Resize" #:action interactive-resize)
+ (menuitem "Raise" #:action raise-window)
+ (menuitem "Lower" #:action lower-window)
+;; (menuitem "Print" #:action print-window)
+ (menuitem "(Un)Window-Shade" #:action toggle-window-shade)
+ (menuitem "(De)Iconify" #:action toggle-iconify)
+ (menuitem "(Un)Maximize" #:action toggle-maximize-vertical)
+ (menuitem "(Un)Stick" #:action toggle-stick)
+ (menuitem "(Un)Keep On Top" #:action toggle-on-top)
+ menu-separator
+ (menuitem "Close" #:action close-window)
+ (menuitem "Delete" #:action delete-window)
+ (menuitem "Destroy" #:action destroy-window)
+ menu-separator
+ (menuitem "Refresh Screen" #:action refresh))))
+
+(define* (popup-ops)
+ ""
+ (interactive)
+ (popup-menu window-ops-menu))
+
+;; Hack to let quit work
+(set-procedure-property! quit 'interactive #t)
+
+(define menu-quit-verify
+ (menu
+ (list
+ (menu-title "Really quit scwm?") menu-separator
+ ;;(menuitem "Yes" #:action scheme-quit)
+ (menuitem "Yes" #:action quit)
+ (menuitem "No" #:action #f)
+ menu-separator
+ (menuitem "Restart scwm" #:action (lambda () (restart "scwm"))))))
+
+(define (quit-verify)
+ (popup-menu menu-quit-verify))
+
+(define desk-menu
+ (menu
+ (list
+ (menu-title "Desks") menu-separator
+ (menuitem "Desk 1" #:action (lambda () (set-current-desk! 0)))
+ (menuitem "Desk 2" #:action (lambda () (set-current-desk! 1)))
+ (menuitem "Desk 3" #:action (lambda () (set-current-desk! 2)))
+ (menuitem "Desk 4" #:action (lambda () (set-current-desk! 3))))))
+
+(define util-menu
+ (menu
+ (list
+ (menu-title "Utilities") menu-separator
+ ;(menuitem "Preferences..." #:action scwm-options-dialog)
+ menu-separator
+ (menuitem "urxvt" #:action (lambda () (execute "urxvt")))
+ (menuitem "emacs" #:action (lambda () (execute "emacsclient -c -a emacs")))
+ (menuitem "firefox" #:action (lambda () (execute "firefox")))
+ (menuitem "top" #:action
+ (lambda () (execute "urxvt -T Top -n Top -e top")))
+ menu-separator
+ (menuitem "Desks" #:action desk-menu)
+ menu-separator
+ (menuitem "Exit scwm" #:action menu-quit-verify))))
+
+(define* (popup-util)
+ ""
+ (interactive)
+ (popup-menu util-menu))
+
+(define (make-small-window-ops-menu w)
+ (menu
+ (list
+;; (menu-title "Window Ops2")
+;; menu-separator
+ (menuitem "Move" #:action interactive-move)
+ (menuitem "Resize" #:action interactive-resize)
+ (menuitem "Raise" #:action raise-window)
+ (menuitem "Lower" #:action lower-window)
+ (menuitem "Iconify" #:action iconify-window)
+ menu-separator
+ (menuitem "More..." #:action
+ (menu
+ (list
+ (menuitem (if (maximized? w)
+ "Unmaximize"
+ "Maximize")
+ #:action toggle-maximize-vertical)
+ (menuitem (if (sticky-window? w)
+ "Unstick"
+ "Stick") #:action toggle-stick)
+ (menuitem (if (shaded-window? w)
+ "UnWindow-Shade"
+ "Window-Shade")
+ #:action toggle-window-shade)
+ (menuitem (if (kept-on-top? w)
+ "UnKeep On Top"
+ "Keep On Top") #:action toggle-on-top))))
+ menu-separator
+ (menuitem "Close" #:action close-window)
+ (menuitem "Destroy" #:action destroy-window))))
+
+(define* (popup-small-ops)
+ "" (interactive)
+ (popup-menu (make-small-window-ops-menu (get-window))))
+
+
+;; now set some mouse and key bindings ;;
+
+;; first our root menus
+(bind-mouse 'root 1 popup-util)
+(bind-mouse 'root 2 popup-ops)
+(bind-mouse 'root 3 (lambda ()
+ (show-window-list-menu #f #f #:show-geometry #t)))
+(bind-mouse 'root "M-3" (lambda () (popup-menu desk-menu)))
+
+
+;; window buttons
+(bind-mouse 'left-button-1 1 popup-small-ops)
+(bind-mouse 'right-button-1 1 toggle-maximize-vertical)
+(bind-mouse 'right-button-2 1 iconify-window)
+
+;; operations on parts of the window
+(bind-mouse '(frame-corners frame-sides) 2 popup-small-ops)
+(bind-mouse 'frame-corners 1 resize-or-raise)
+(bind-mouse 'frame-sides 1 move-or-raise)
+
+(define* (move-or-shade)
+ ""
+ (interactive)
+ (case (mouse-event-type)
+ ((double-click) (toggle-window-shade))
+ (else (move-or-raise))))
+
+(bind-mouse 'title 1 move-or-shade)
+(bind-mouse 'title 3 lower-window)
+
+
+;; key bindings for the menus
+(bind-key 'all "M-F1" popup-util)
+(bind-key 'all "M-F2" popup-ops)
+
+;; in case of emergency, hit Control-Meta-Shift-Q
+(bind-key 'all "C-M-S-q" quit-verify)
+
+;; some stuff for icons
+(define* (move-or-deiconify)
+ ""
+ (interactive)
+ (case (mouse-event-type)
+ ((motion) (interactive-move))
+ ((double-click) (deiconify-window))))
+
+(bind-mouse 'icon 1 move-or-deiconify)
+(bind-mouse 'icon 2 deiconify-window)
+
+
+
+;; move the pointer with the keyboard
+(bind-key 'all "M-Left" (lambda () (move-pointer (%x -1) 0)))
+(bind-key 'all "M-Right" (lambda () (move-pointer (%x 1) 0)))
+(bind-key 'all "M-Up" (lambda () (move-pointer 0 (%y -1))))
+(bind-key 'all "M-Down" (lambda () (move-pointer 0 (%y 1))))
+
+;; move the viewport with the keyboard
+(bind-key 'all "C-M-Left" (lambda () (move-viewport (%x -100) 0)))
+(bind-key 'all "C-M-Right" (lambda () (move-viewport (%x 100) 0)))
+(bind-key 'all "C-M-Up" (lambda () (move-viewport 0 (%y -100))))
+(bind-key 'all "C-M-Down" (lambda () (move-viewport 0 (%y 100))))
+
+;; rotate the current window with the keyboard
+(bind-key 'all "C-S-Tab"
+ (lambda ()
+ (next-window #:only visible? #:except iconified-window?)))
+
+(bind-key 'all "M-S-Tab"
+ (lambda ()
+ (prev-window #:only visible? #:except iconified-window?)))
diff --git a/.xinitrc b/.xinitrc
index fd7cd03..c48a296 100644
--- a/.xinitrc
+++ b/.xinitrc
@@ -12,4 +12,4 @@ fi
# rox -b Default
test -n "$1" && wm=$1 || wm="awesome" # wm="emacsclient -ce \"(oni:wm-init)\""
-exec ck-launch-session $wm
+exec $wm
diff --git a/bin/hlwm/capture-todo b/bin/hlwm/capture-todo
deleted file mode 100755
index 75c24a4..0000000
--- a/bin/hlwm/capture-todo
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/bash
-
-herbstclient rule pseudotile=on once
-emacs -Q -l ~/.emacs.d/site-lisp/org-init.elc \
- --execute "(progn (org-capture) (delete-other-windows)
- (add-hook 'org-capture-after-finalize-hook 'kill-emacs))"
diff --git a/bin/hlwm/show-todo b/bin/hlwm/show-todo
deleted file mode 100755
index 991d3bd..0000000
--- a/bin/hlwm/show-todo
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-
-grep --color=never "* \(TODO\|IN PROGRESS\|WAITING\)" org/notes.org \
- | sed 's/\*/ /g' \
- | xmessage -file - -default okay
diff --git a/bin/update_aur_cnt b/bin/update_aur_cnt
deleted file mode 100755
index f083c6b..0000000
--- a/bin/update_aur_cnt
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash
-
-/usr/bin/cower -uq 2>/dev/null \
- | wc -l 2>/dev/null > ~/.local/share/aur.cnt
diff --git a/bin/update_pac_cnt b/bin/update_pac_cnt
deleted file mode 100755
index 320e8a9..0000000
--- a/bin/update_pac_cnt
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash
-
-/usr/bin/pacman -Qu 2>/dev/null \
- | wc -l 2>/dev/null > ~/.local/share/updates.cnt