summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Chabowski <kevin@kch42.de>2013-12-01 23:59:31 +0100
committerKevin Chabowski <kevin@kch42.de>2013-12-01 23:59:31 +0100
commitb3eaf4d3e1e3031054fadbc47eb749f47f901e83 (patch)
treebb595da73ea856a77e15420b43d3b43c003963dd
downloaddotfiles-b3eaf4d3e1e3031054fadbc47eb749f47f901e83.tar.gz
dotfiles-b3eaf4d3e1e3031054fadbc47eb749f47f901e83.tar.bz2
dotfiles-b3eaf4d3e1e3031054fadbc47eb749f47f901e83.zip
Initial commit
-rw-r--r--.bashrc41
-rwxr-xr-x.config/bspwm/bspwmrc20
-rw-r--r--.config/dunst/dunstrc217
-rw-r--r--.config/sxhkd/sxhkdrc114
-rw-r--r--.gtkrc-2.04
-rwxr-xr-x.xinitrc48
-rwxr-xr-xbin/dmenu3
-rwxr-xr-xbin/myredshift57
-rwxr-xr-xbin/myxlock3
-rwxr-xr-xbin/opera2
-rwxr-xr-xbin/quitmenu32
-rw-r--r--foo/bar/config.h31
-rwxr-xr-xmybar/mybar.awk135
-rwxr-xr-xmybar/mybar.sh63
-rwxr-xr-xmybar/wifi.awk22
15 files changed, 792 insertions, 0 deletions
diff --git a/.bashrc b/.bashrc
new file mode 100644
index 0000000..397dbf0
--- /dev/null
+++ b/.bashrc
@@ -0,0 +1,41 @@
+#
+# ~/.bashrc
+#
+
+export GOPATH="$HOME/go"
+export PATH=$HOME/bin:$GOPATH/bin:$PATH
+export TEXMFHOME="$HOME/texmf"
+export EDITOR="nano"
+export BLOGROOT="$HOME/blog"
+export PLAN9=/opt/plan9
+
+export BAR_FIFO=$HOME/mybar/fifo
+export REDSHIFT_FIFO=$HOME/.redshift_fifo
+
+# If not running interactively, don't do anything
+[[ $- != *i* ]] && return
+
+# Aliases
+alias ls='ls --color=auto'
+alias xo='exo-open'
+alias la='ls -lah --color=auto'
+alias cb='xclip -i -selection clipboard'
+
+PS1="[ \[\e[1m\]\W\[\e[0m\] ]$ "
+
+mkcd() {
+ mkdir "$1"
+ cd "$1"
+}
+
+unlatin1() {
+ mv "$1" /tmp/unlatin1.data
+ iconv --from=latin1 --to=utf8 /tmp/unlatin1.data > "$1"
+ rm -f /tmp/unlatin1.data
+}
+
+relatin1() {
+ cp "$1" /tmp/relatin1.data
+ iconv --from=utf8 --to=latin1 /tmp/relatin1.data > "$1"
+ rm /tmp/relatin1.data
+}
diff --git a/.config/bspwm/bspwmrc b/.config/bspwm/bspwmrc
new file mode 100755
index 0000000..11b826a
--- /dev/null
+++ b/.config/bspwm/bspwmrc
@@ -0,0 +1,20 @@
+#! /bin/sh
+
+bspc desktop ^1 -n I
+bspc monitor -a II III IV V VI VII VIII IX X
+
+bspc rule -a Gimp -d ^8 --follow --floating
+
+bspc config border_width 2
+bspc config window_gap 8
+bspc config split_ratio 0.52
+bspc config borderless_monocle true
+bspc config gapless_monocle true
+
+bspc config focused_border_color '#45A5FF'
+bspc config normal_border_color '#444444'
+bspc config urgent_border_color '#FF0000'
+bspc config presel_border_color '#ff00ff'
+
+bspc config top_padding 18
+~/mybar/mybar.sh & \ No newline at end of file
diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc
new file mode 100644
index 0000000..425b5ae
--- /dev/null
+++ b/.config/dunst/dunstrc
@@ -0,0 +1,217 @@
+[global]
+ font = Monospace 8
+
+ # allow a small subset of html markup:
+ # <b>bold</b>
+ # <i>italic</i>
+ # <s>strikethrough<s/>
+ # <u>underline</u>
+ #
+ # for a complete reference see http://developer.gnome.org/pango/stable/PangoMarkupFormat.html
+ # If markup is not allowed, those tags will be stripped out of the message.
+ allow_markup = yes
+
+ # The format of the message. Possible variables are:
+ # %a appname
+ # %s summary
+ # %b body
+ # %i iconname (including its path)
+ # %I iconname (without its path)
+ # %p progress value if set ([ 0%] to [100%]) or nothing
+ # Markup is allowed
+ format = "<b>%s</b>\n%b"
+
+ # Sort messages by urgency
+ sort = yes
+
+ # Show how many messages are currently hidden (because of geometry)
+ indicate_hidden = yes
+
+ # alignment of message text.
+ # Possible values are "left", "center" and "right"
+ alignment = left
+
+ # The frequency with wich text that is longer than the notification
+ # window allows bounces back and forth.
+ # This option conflicts with 'word_wrap'.
+ # Set to 0 to disable
+ bounce_freq = 0
+
+ # show age of message if message is older than show_age_threshold seconds.
+ # set to -1 to disable
+ show_age_threshold = 60
+
+ # split notifications into multiple lines if they don't fit into geometry
+ word_wrap = yes
+
+ # ignore newlines '\n' in notifications
+ ignore_newline = no
+
+
+ # the geometry of the window
+ # geometry [{width}]x{height}][+/-{x}+/-{y}]
+ # The geometry of the message window.
+ # The height is measured in number of notifications everything else in pixels. If the width
+ # is omitted but the height is given ("-geometry x2"), the message window
+ # expands over the whole screen (dmenu-like). If width is 0,
+ # the window expands to the longest message displayed.
+ # A positive x is measured from the left, a negative from the
+ # right side of the screen. Y is measured from the top and down respectevly.
+ # The width can be negative. In this case the actual width is the
+ # screen width minus the width defined in within the geometry option.
+ geometry = "400x5-8+24"
+
+ # The transparency of the window. range: [0; 100]
+ # This option will only work if a compositing windowmanager is present (e.g. xcompmgr, compiz, etc..)
+ transparency = 0
+
+ # Don't remove messages, if the user is idle (no mouse or keyboard input)
+ # for longer than idle_threshold seconds.
+ # Set to 0 to disable.
+ idle_threshold = 120
+
+ # Which monitor should the notifications be displayed on.
+ monitor = 0
+
+ # Display notification on focused monitor. Possible modes are:
+ # mouse: follow mouse pointer
+ # keyboard: follow window with keyboard focus
+ # none: don't follow anything
+ #
+ # "keyboard" needs a windowmanager that exports the _NET_ACTIVE_WINDOW property.
+ # This should be the case for almost all modern windowmanagers.
+ #
+ # If this option is set to mouse or keyboard, the monitor option will be
+ # ignored.
+ follow = mouse
+
+ # should a notification popped up from history be sticky or
+ # timeout as if it would normally do.
+ sticky_history = yes
+
+ # The height of a single line. If the height is smaller than the font height,
+ # it will get raised to the font height.
+ # This adds empty space above and under the text.
+ line_height = 0
+
+ # Draw a line of 'separatpr_height' pixel height between two notifications.
+ # Set to 0 to disable
+ separator_height = 2
+
+ # padding between text and separator
+ padding = 8
+
+ # horizontal padding
+ horizontal_padding = 8
+
+ # Define a color for the separator.
+ # possible values are:
+ # * auto: dunst tries to find a color fitting to the background
+ # * foreground: use the same color as the foreground
+ # * frame: use the same color as the frame.
+ # * anything else will be interpreted as a X color
+ separator_color = frame
+
+ # print a notification on startup
+ # This is mainly for error detection, since dbus (re-)starts dunst
+ # automatically after a crash.
+ startup_notification = false
+
+ # dmenu path
+ dmenu = /usr/bin/dmenu -p dunst:
+
+ # browser for opening urls in context menu
+ browser = /usr/bin/firefox -new-tab
+
+[frame]
+ width = 2
+ color = "#aaaaaa"
+
+[shortcuts]
+ # shortcuts are specified as [modifier+][modifier+]...key
+ # available modifiers are 'ctrl', 'mod1' (the alt-key), 'mod2', 'mod3'
+ # and 'mod4' (windows-key)
+ # xev might be helpful to find names for keys
+
+ # close notification
+ close = ctrl+space
+
+ # close all notifications
+ close_all = ctrl+shift+space
+
+ # redisplay last message(s)
+ # On the US keyboard layout 'grave' is normally above TAB and left of '1'.
+ history = ctrl+grave
+
+ # context menu
+ context = ctrl+shift+period
+
+[urgency_low]
+ # IMPORTANT: colors have to be defined in quotation marks.
+ # Otherwise the '#' and following would be interpreted as a comment.
+ background = "#222222"
+ foreground = "#888888"
+ timeout = 10
+
+[urgency_normal]
+ background = "#285577"
+ foreground = "#ffffff"
+ timeout = 10
+
+[urgency_critical]
+ background = "#900000"
+ foreground = "#ffffff"
+ timeout = 0
+
+
+# Every section that isn't one of the above is interpreted as a rules
+# to override settings for certain messages.
+# Messages can be matched by 'appname', 'summary', 'body' or 'icon'
+# and you can override the 'timeout', 'urgency', 'foreground', 'background'
+# and 'format'.
+# Shell-like globbing will get expanded.
+#
+# SCRIPTING
+# you can specify a script that gets run when the rule matches by setting
+# the 'script' option.
+# The script will be called as follows:
+# script appname summary body icon urgency
+# where urgency can be "LOW", "NORMAL" or "CRITICAL".
+#
+# NOTE: if you don't want a notification to be displayed, set the format to ""
+# NOTE: It might be helpful to run dunst -print in a terminal in order to find
+# fitting options for rules.
+
+#[espeak]
+# summary = "*"
+# script = dunst_espeak.sh
+
+#[script-test]
+# summary = "*script*"
+# script = dunst_test.sh
+
+#[ignore]
+## This notification will not be displayed
+# summary = "foobar"
+# format = ""
+
+#[signed_on]
+# appname = Pidgin
+# summary = "*signed on*"
+# urgency = low
+#
+#[signed_off]
+# appname = Pidgin
+# summary = *signed off*
+# urgency = low
+#
+#[says]
+# appname = Pidgin
+# summary = *says*
+# urgency = critical
+#
+#[twitter]
+# appname = Pidgin
+# summary = *twitter.com*
+# urgency = normal
+#
diff --git a/.config/sxhkd/sxhkdrc b/.config/sxhkd/sxhkdrc
new file mode 100644
index 0000000..1045986
--- /dev/null
+++ b/.config/sxhkd/sxhkdrc
@@ -0,0 +1,114 @@
+#
+# bspwm hotkeys
+#
+
+ctrl + alt + q
+ quitmenu
+
+alt + F4
+ bspc window -c
+
+shift + alt + F4
+ bspc window -k
+
+# Switch layout
+ctrl + alt + l
+ bspc desktop -l next
+
+# Balance Tree
+ctrl + alt + b
+ bspc desktop -B
+
+# Toggle Fullscreen/Floating
+ctrl + alt + {s,f}
+ bspc window -t {floating,fullscreen}
+
+# Focus last selected Window / Desktop
+#super + {grave,Tab}
+# bspc {window,desktop} -f last
+
+# Circulate Tree
+ctrl + alt + {Prior,Next}
+ bspc desktop -C {forward,backward}
+
+# Rotate
+alt + shift + {Prior,Next}
+ bspc window -R {90,270}
+
+ctrl + alt + shift + {Prior,Next}
+ bspc desktop -R {90,270}
+
+# Swap with last selected window
+#super + apostrophe
+# bspc window -s last
+
+ctrl + alt + t; ctrl + alt + t
+ bspc window -w last.manual
+
+ctrl + alt + t; ctrl + alt + {Left,Down,Up,Right}
+ bspc window -w {Left,Down,Up,Right}
+
+# Swap current window with biggest
+ctrl + alt + m
+ bspc window -s biggest
+
+# Select / Swap with Window in Dir
+alt + {_,shift + }{Left,Down,Up,Right}
+ bspc window -{f,s} {left,down,up,right}
+
+# Switch window (alt tab)
+alt + {_,shift + }Tab
+ bspc window -f {next,prev}
+
+# Navigate Desktops
+alt + {Prior,Next}
+ bspc desktop -f {prev,next}
+
+# Preselect splitting (CHORD)
+ctrl + alt + p; ctrl + alt + {Left,Down,Up,Right}
+ bspc window -p {left,down,up,right}
+
+# Cancel (all) preselections
+ctrl + alt + p; ctrl + alt {_, + shift}+ c
+ bspc {window -p cancel,desktop -c}
+
+#change spliting
+ctrl + alt + {Left,Down,Up,Right}
+ bspc window -e {left,down,up,right} push
+
+ctrl + alt + shift + {Left,Down,Up,Right}
+ bspc window -e {right,up,down,left} pull
+
+#super + ctrl + {1-9}
+# bspc window -r 0.{1-9}
+
+# Change /move to desktop
+ctrl + alt + {_,shift + }{1-9,0}
+ bspc {desktop -f,window -d} ^{1-9,10}
+
+# Stuff for mouse focus, resize, ...
+~button1
+ bspc pointer -g focus
+
+alt + button{1-3}
+ bspc pointer -g {move,resize_side,resize_corner}
+
+alt + !button{1-3}
+ bspc pointer -t %i %i
+
+#
+# wm independent hotkeys
+#
+
+alt + asciicircum
+ xfce4-terminal
+
+alt + F2
+ dmenu_run
+
+# make sxhkd reload its configuration files:
+ctrl + alt + r
+ pkill -USR1 -x sxhkd
+
+ctrl + shift + Return
+ mydmenu
diff --git a/.gtkrc-2.0 b/.gtkrc-2.0
new file mode 100644
index 0000000..474d0ae
--- /dev/null
+++ b/.gtkrc-2.0
@@ -0,0 +1,4 @@
+gtk-theme-name = "Equinox Evolution Light"
+gtk-font-name = "DeJaVu Sans 10"
+gtk-icon-theme-name = "Faenza"
+
diff --git a/.xinitrc b/.xinitrc
new file mode 100755
index 0000000..7ed133b
--- /dev/null
+++ b/.xinitrc
@@ -0,0 +1,48 @@
+#!/bin/sh
+#
+# ~/.xinitrc
+#
+# Executed by startx (run your window manager from here)
+
+if [ -d /etc/X11/xinit/xinitrc.d ]; then
+ for f in /etc/X11/xinit/xinitrc.d/*; do
+ [ -x "$f" ] && . "$f"
+ done
+ unset f
+fi
+
+xset fp rehash
+
+# Windows button is now compose key
+setxkbmap -option compose:lwin
+setxkbmap -option compose:rwin
+
+# Start godoc server
+godoc -http=":6060" &
+
+# exec gnome-session
+# exec startkde
+
+#exec startxfce4
+
+if test -e "$BAR_FIFO"; then
+ rm -f "$BAR_FIFO"
+ mkfifo "$BAR_FIFO"
+fi
+
+if test $(hostname) = "kch42-notebook"; then
+ synclient TapButton1=0
+ synclient VertTwoFingerScroll=0
+ synclient VertEdgeScroll=1
+fi
+
+start-pulseaudio-x11 &
+xsetroot -cursor_name left_ptr &
+hsetroot -fill ~/"Bilder/backgrounds/earthporn/1q1tk1 - milky way behind fuji.jpg"
+dunst &
+sxhkd &
+compton &
+myredshift daemon &
+exec bspwm 2> ~/.bspwm.log
+
+# ...or the Window Manager of your choice
diff --git a/bin/dmenu b/bin/dmenu
new file mode 100755
index 0000000..d26c459
--- /dev/null
+++ b/bin/dmenu
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+/usr/bin/dmenu -b -nb '#333333' -nf '#cccccc' -sb '#45A5FF' -sf '#ffffff' "$@"
diff --git a/bin/myredshift b/bin/myredshift
new file mode 100755
index 0000000..96f9d96
--- /dev/null
+++ b/bin/myredshift
@@ -0,0 +1,57 @@
+#!/bin/sh
+
+rs() {
+ redshift -o -l 53.8695616:10.6875833 -t 6200:4800 "$@" >/dev/null
+}
+
+tick() {
+ while true; do
+ echo "tick"
+ sleep 30
+ done > "$REDSHIFT_FIFO"
+}
+
+daemon() {
+ test -e "$REDSHIFT_FIFO" && rm -f "$REDSHIFT_FIFO"
+ mkfifo "$REDSHIFT_FIFO"
+
+ tick &
+ tick_pid=$!
+
+ flag=""
+ cat "$REDSHIFT_FIFO" | while read cmd; do
+ case $cmd in
+ quit)
+ kill $tick_pid &
+ break
+ ;;
+ toggle)
+ if test -n "$flag"; then
+ flag=""
+ else
+ flag="-x"
+ fi
+
+ echo "redshift $flag" > "$BAR_FIFO"
+
+ rs $flag
+ ;;
+ tick)
+ rs $flag
+ ;;
+ esac
+ done
+}
+
+toggle() {
+ echo "toggle" > "$REDSHIFT_FIFO"
+}
+
+case $1 in
+daemon)
+ daemon
+ ;;
+toggle)
+ toggle
+ ;;
+esac
diff --git a/bin/myxlock b/bin/myxlock
new file mode 100755
index 0000000..f531e66
--- /dev/null
+++ b/bin/myxlock
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+xlock -mode blank
diff --git a/bin/opera b/bin/opera
new file mode 100755
index 0000000..654f023
--- /dev/null
+++ b/bin/opera
@@ -0,0 +1,2 @@
+#!/bin/bash
+/usr/bin/opera -noargb -nolirc "$@"
diff --git a/bin/quitmenu b/bin/quitmenu
new file mode 100755
index 0000000..e9823b8
--- /dev/null
+++ b/bin/quitmenu
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+mkopts() {
+ echo 'Quit
+Poweroff
+Reboot
+Suspend
+Lock
+'
+}
+
+if choice="`mkopts | dmenu -i`"; then
+ case "$choice" in
+ Quit)
+ pkill mybar
+ bspc quit
+ ;;
+ Poweroff)
+ poweroff
+ ;;
+ Reboot)
+ reboot
+ ;;
+ Suspend)
+ myxlock &
+ systemctl suspend
+ ;;
+ Lock)
+ myxlock
+ ;;
+ esac
+fi
diff --git a/foo/bar/config.h b/foo/bar/config.h
new file mode 100644
index 0000000..863e764
--- /dev/null
+++ b/foo/bar/config.h
@@ -0,0 +1,31 @@
+/* The height of the bar (in pixels) */
+#define BAR_HEIGHT 18
+/* The width of the bar. Set to -1 to fit screen */
+#define BAR_WIDTH -1
+/* Offset from the left. Set to 0 to have no effect */
+#define BAR_OFFSET 0
+/* Choose between an underline or an overline */
+#define BAR_UNDERLINE 1
+/* The thickness of the underline (in pixels). Set to 0 to disable. */
+#define BAR_UNDERLINE_HEIGHT 2
+/* Default bar position, overwritten by '-b' switch */
+#define BAR_BOTTOM 0
+/* The fonts used for the bar, comma separated. Only the first 2 will be used. */
+#define BAR_FONT "fixed","fixed"
+/* Some fonts don't set the right width for some chars, pheex it */
+#define BAR_FONT_FALLBACK_WIDTH 6
+/* Define the opacity of the bar (requires a compositor such as compton) */
+#define BAR_OPACITY 1.0 /* 0 is invisible, 1 is opaque */
+/* Color palette */
+#define BACKGROUND 0x333333
+#define COLOR0 0xeeeeee /* Normal text */
+#define COLOR1 0x777777 /* inactive text */
+#define COLOR2 0xff0000 /* Warning */
+#define COLOR3 0x55C5FF /* progbars */
+#define COLOR4 0x256590 /* progbars2 */
+#define COLOR5 0x555555
+#define COLOR6 0x75b5aa
+#define COLOR7 0x6c7a80
+#define COLOR8 0x425059
+#define COLOR9 0xcc6666
+#define FOREGROUND 0xeeeeee
diff --git a/mybar/mybar.awk b/mybar/mybar.awk
new file mode 100755
index 0000000..d16dbf1
--- /dev/null
+++ b/mybar/mybar.awk
@@ -0,0 +1,135 @@
+#!/bin/awk -f
+
+BEGIN {
+ date=""
+ cpu=""
+ mem=""
+ battery=""
+ window=""
+ wminfo=""
+ redshift=""
+ wifi=""
+
+ cpu_pused=0
+ cpu_ptotal=0
+}
+$1 == "date" {
+ date = $2 " " $3 " " $4
+}
+$1 == "cpu" {
+ used=$2+$3+$4+$7+$8;
+ total=used+$5+$6;
+
+ if(total - cpu_ptotal != 0) {
+ tmp=int(100*(used-cpu_pused)/(total-cpu_ptotal));
+ } else {
+ tmp=0
+ }
+ if(tmp > 100) {
+ tmp=0
+ }
+ cpu_pused=used
+ cpu_ptotal=total
+
+ if(tmp < 10) {
+ sp = " "
+ } else if(tmp < 100) {
+ sp = " "
+ } else {
+ sp = ""
+ }
+ f = int((tmp+5) / 10)
+ tmp = "CPU: " sp tmp "%"
+ cpu = "\\u3" substr(tmp, 1, f) "\\u4" substr(tmp, 1+f, 10-f) "\\ur"
+}
+$1 == "window" {
+ window=substr($0, 7, length($0)-6);
+}
+$1 == "mem" {
+ if($2 < 10) {
+ sp = " "
+ } else if($2 < 100) {
+ sp = " "
+ } else if($2 < 1000){
+ sp = " "
+ } else {
+ sp = ""
+ }
+ tmp = "Mem:" sp $2 "MB"
+ f = int(($2 / 4096 * 10) + .5)
+ mem = "\\u3" substr(tmp, 1, f) "\\u4" substr(tmp, 1+f, 10-f) "\\ur"
+}
+$1 == "bspwm" {
+ #wminfo=substr($0, 7, length($0)-6)
+ split(substr($0, 7, length($0)-6), info, ":")
+
+ wminfo=" \\u5"
+ sep=""
+ for(i in info) {
+ raw=info[i]
+ k=substr(raw, 1, 1)
+ v=substr(raw, 2, length(raw)-1)
+
+ add = ""
+ if(k=="u") add = "\\b2" v
+ else if(k=="U") add = "\\u3\\b2" v
+ else if(k=="f") add = "\\f1" v
+ else if(k=="F") add = "\\f1\\u3" v
+ else if(k=="o") add = v
+ else if(k=="O") add = "\\u3" v
+
+ if(add != "") {
+ wminfo = wminfo sep add "\\fr\\u5\\br"
+ sep = " "
+ }
+ }
+ wminfo = wminfo "\\ur"
+}
+$1 == "redshift" {
+ if($2 == "-x") {
+ redshift = "\\u2"
+ } else {
+ redshift = ""
+ }
+}
+$1 == "bat" {
+ val=$3
+ if($2 == "Full") {
+ val=100
+ }
+ if($2 == "Charging") {
+ tmp="-charging-"
+ } else {
+ tmp="Bat:"
+
+ if(val < 10) {
+ sp=" "
+ } else if(val < 100) {
+ sp=" "
+ } else {
+ sp=" "
+ }
+ tmp=tmp sp val "%"
+ }
+ f = int((val+5) / 10)
+ battery = "\\u3" substr(tmp, 1, f) "\\u4" substr(tmp, 1+f, 10-f) "\\ur"
+ if((val < 5) && ($2 != "Charging")) {
+ battery="\\b2" battery "\\br"
+ }
+}
+$1 == "wifi" {
+ if($2 == "-") {
+ wifi=""
+ } else {
+ tmp=$2
+ if(length(tmp) > 10) {
+ tmp=substr(tmp, 1, 8) ".."
+ }
+ f = int(($3+5) / 10)
+ wifi = "\\u3" substr(tmp, 1, f) "\\u4" substr(tmp, 1+f, 10-f) "\\ur"
+ }
+}
+{
+ print "\\l" wminfo "\\c" window "\\r" wifi " " battery " " mem " " cpu " " redshift "R\\ur " date " "
+ fflush()
+}
diff --git a/mybar/mybar.sh b/mybar/mybar.sh
new file mode 100755
index 0000000..5adc11e
--- /dev/null
+++ b/mybar/mybar.sh
@@ -0,0 +1,63 @@
+#!/bin/sh
+
+update_wminfo() {
+ bspc control --subscribe | while read line; do
+ echo "bspwm $line"
+ done
+}
+
+update_time() {
+ while true; do
+ date '+date %a. %Y-%b-%d %H:%M'
+ sleep 1
+ done
+}
+
+update_mem() {
+ while true; do
+ awk '
+$1 == "MemTotal:" { total=$2; }
+$1 == "MemFree:" { free=$2; }
+$1 == "Buffers:" { buf=$2; }
+$1 == "Cached:" { cache=$2; }
+END { print "mem " int((total - free - buf - cache) / 1024); }' < /proc/meminfo
+ sleep 2
+ done
+}
+
+update_cpu() {
+ while true; do
+ grep '^cpu\s' < /proc/stat
+ sleep 2
+ done
+}
+
+update_bat() {
+ while true; do
+ battery -f "bat %s %d"
+ sleep 2
+ done
+}
+
+update_wifi() {
+ while true; do
+ wicd-cli -y -d | ~/mybar/wifi.awk
+ sleep 2
+ done
+}
+
+trap 'trap - TERM; kill 0' INT TERM QUIT EXIT
+
+update_wminfo > "$BAR_FIFO" &
+update_time > "$BAR_FIFO" &
+update_mem > "$BAR_FIFO" &
+update_cpu > "$BAR_FIFO" &
+
+if test $(hostname) = "kch42-notebook"; then
+ update_bat > "$BAR_FIFO" &
+ update_wifi > "$BAR_FIFO" &
+fi
+
+xtitle -sf 'window %s' > "$BAR_FIFO" &
+
+cat "$BAR_FIFO" | ~/mybar/mybar.awk | bar
diff --git a/mybar/wifi.awk b/mybar/wifi.awk
new file mode 100755
index 0000000..90d3f9d
--- /dev/null
+++ b/mybar/wifi.awk
@@ -0,0 +1,22 @@
+#!/bin/awk -f
+
+BEGIN {
+ FS=":"
+ essid="-"
+ qual="0"
+}
+$1 == "Essid" {
+ split($2, parts, " ")
+ sep=""
+ essid = ""
+ for(i in parts) {
+ essid = sep parts[i]
+ sep="_"
+ }
+}
+$1 == "Quality" {
+ qual = $2
+}
+END {
+ print "wifi " essid " " qual
+}