aboutsummaryrefslogtreecommitdiffstats
path: root/.config
diff options
context:
space:
mode:
Diffstat (limited to '.config')
-rw-r--r--.config/dunst/dunstrc186
-rwxr-xr-x.config/herbstluftwm/autostart2
-rwxr-xr-x.config/herbstluftwm/panel.sh134
-rw-r--r--.config/nitrogen/bg-saved.cfg2
4 files changed, 184 insertions, 140 deletions
diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc
index 1202f9b..cf4fc8b 100644
--- a/.config/dunst/dunstrc
+++ b/.config/dunst/dunstrc
@@ -1,17 +1,22 @@
[global]
font = Tamsyn 16
- # allow a small subset of html markup:
- # <b>bold</b>
- # <i>italic</i>
- # <s>strikethrough<s/>
- # <u>underline</u>
+ # Allow a small subset of html markup in notifications and formats:
+ # <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.
+ # 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:
+ # Treat incoming notifications as plain text
+ plain_text = no
+
+ # The format of the message. Possible variables are:
# %a appname
# %s summary
# %b body
@@ -21,48 +26,56 @@
# Markup is allowed
format = "<b>%s</b>\n%b"
- # Sort messages by urgency
+ # Sort messages by urgency.
sort = yes
- # Show how many messages are currently hidden (because of geometry)
+ # 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 of message text.
+ # Possible values are "left", "center" and "right".
alignment = left
- # The frequency with wich text that is longer than the notification
+ # The frequency with which text that is longer than the notification
# window allows bounces back and forth.
- # This option conflicts with 'word_wrap'.
- # Set to 0 to disable
+ # 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 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
+ # Split notifications into multiple lines if they don't fit into
+ # geometry.
word_wrap = no
- # ignore newlines '\n' in notifications
+ # Ignore newlines '\n' in notifications.
ignore_newline = no
- # the geometry of the window
- # geometry [{width}]x{height}][+/-{x}+/-{y}]
+ # The geometry of the window:
+ # [{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
+ # 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 respectively.
+ # 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 = "0x5-3+21"
+ geometry = "0x5-30+20"
- # The transparency of the window. range: [0; 100]
- # This option will only work if a compositing windowmanager is present (e.g. xcompmgr, compiz, etc..)
+ # Shrink window if it's smaller than the width. Will be ignored if
+ # width is 0.
+ shrink = no
+
+ # The transparency of the window. Range: [0; 100].
+ # This option will only work if a compositing window manager is
+ # present (e.g. xcompmgr, compiz, etc.).
transparency = 0
# Don't remove messages, if the user is idle (no mouse or keyboard input)
@@ -73,74 +86,91 @@
# 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
+ # 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.
+ # "keyboard" needs a window manager that exports the
+ # _NET_ACTIVE_WINDOW property.
+ # This should be the case for almost all modern window managers.
#
- # If this option is set to mouse or keyboard, the monitor option will be
- # ignored.
+ # If this option is set to mouse or keyboard, the monitor option
+ # will be ignored.
follow = keyboard
- # should a notification popped up from history be sticky or
- # timeout as if it would normally do.
+ # 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.
+ # Maximum amount of notifications kept in history
+ history_length = 20
+
+ # Display indicators for URLs (U) and actions (A).
+ show_indicators = yes
+
+ # The spacing between lines. If the height is smaller than the
+ # font height, it will get raised to the font height.
line_height = 0
- # Draw a line of 'separatpr_height' pixel height between two notifications.
- # Set to 0 to disable
+ # The height of the entire notification. If the height is smaller
+ # than the font height and padding combined, it will be raised
+ # to the font height and padding.
+ notification_height = 0
+
+ # Draw a line of "separator_height" pixel height between two
+ # notifications.
+ # Set to 0 to disable.
separator_height = 2
- # padding between text and separator
+ # Padding between text and separator.
padding = 8
- # horizontal padding
+ # 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
+ # * 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
+ # 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 path.
dmenu = /usr/bin/dmenu -p dunst:
- # browser for opening urls in context menu
+ # Browser for opening urls in context menu.
browser = /usr/bin/firefox -new-tab
+ # Align icons left/right/off
+ icon_position = left
+
[frame]
width = 1
[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
+ # 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 = mod4+grave
- # redisplay last message(s)
+ # Redisplay last message(s).
+ # On the US keyboard layout "grave" is normally above TAB and left
+ # of "1".
history = mod4+ctrl+grave
[urgency_low]
# IMPORTANT: colors have to be defined in quotation marks.
- # Otherwise the '#' and following would be interpreted as a comment.
+ # Otherwise the "#" and following would be interpreted as a comment.
timeout = 10
[urgency_normal]
@@ -150,23 +180,24 @@
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'.
+# 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", "icon", "category",
+# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
+# "background", "new_icon" 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.
+# 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
+# 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.
+# 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 = "*"
@@ -176,12 +207,10 @@
# summary = "*script*"
# script = dunst_test.sh
-[ignore]
-# This notification will not be displayed
- summary = "*HL: perl*"
- summary = "HL: "
- body = "*HL: perl*"
- body = "HL: "
+#[ignore]
+# # This notification will not be displayed
+# summary = "foobar"
+# format = ""
#[signed_on]
# appname = Pidgin
@@ -203,3 +232,4 @@
# summary = *twitter.com*
# urgency = normal
#
+# vim: ft=cfg
diff --git a/.config/herbstluftwm/autostart b/.config/herbstluftwm/autostart
index e38e6b2..642b154 100755
--- a/.config/herbstluftwm/autostart
+++ b/.config/herbstluftwm/autostart
@@ -192,7 +192,7 @@ herbstclient set tree_style '╾│ ├└╼─┐'
# or simply:
# hc detect_monitors
-# find the panel
+# run the panel
panel=~/.config/herbstluftwm/panel.sh
[ -x "$panel" ] || panel=/etc/xdg/herbstluftwm/panel.sh
for monitor in $(herbstclient list_monitors | cut -d: -f1) ; do
diff --git a/.config/herbstluftwm/panel.sh b/.config/herbstluftwm/panel.sh
index 1a116e1..51ce5c5 100755
--- a/.config/herbstluftwm/panel.sh
+++ b/.config/herbstluftwm/panel.sh
@@ -34,14 +34,11 @@ fg_green=$(echo -n '#ff'; echo "$fg_green" | tr -d '#')
fg_yellow=$(echo -n '#ff'; echo "$fg_yellow" | tr -d '#')
fg_blue=$(echo -n '#ff'; echo "$fg_blue" | tr -d '#')
-# these are annoying, but i can't figure out a stateless way to handle rotation
-declare -i mpd_offset
-declare -i mpd_length
-declare mpd_current
-declare mpd_playing
-
hc pad $monitor $bheight
+declare -i mpd_connected
+declare mpc_current
+declare mpc_rot
#################
@@ -52,17 +49,40 @@ hc pad $monitor $bheight
# upon events
update_mpd() {
- echo -n "%{F${bg_focus}}|%{F${fg_normal} A:mpd:} "
- echo -n "%{F${fg_green}}\uE05C%{F${fg_normal}} "
- #echo -n "$mpd_current" | cut -c -$(expr 20 - "$mpd_offset")
- echo "%{A}"
- if [[ $mpd_length -gt 20 ]]; then
- if [[ $mpd_offset -lt $[mpd_length-1] ]]; then
- mpd_offset=$[mpd_offset+1]
- else
- mpd_offset=0
+ echo -n "%{F${bg_focus}}|%{F${fg_normal} A:mpd:} "
+
+ # failed to connect or stopped
+ if [[ -z "$(mpc current)" ]]; then
+ if [[ $? ]]; then
+ mpd_connected=0
+ fi
+ echo "%{F${fg_red}}\uE05C %{F${fg_normal} A}"
+ return
+ else
+ if [[ "$(mpc current -f \"%title\")" == "$mpc_current" ]]; then
+ if [[ ${#mpc_rot} -gt 10 ]]; then
+ mpc_rot=$(echo "$mpc_rot" | sed -e 's/\(.\)\(.*\)/\2\1/')
fi
+ else
+ mpc_current="$(mpc current -f \"%title%\")"
+ mpc_rot=mpc_current
fi
+
+ echo -n "%{F${fg_green}}"
+ # if you want separate icons for paused / playing
+ # if [[ -z "$(mpc status | grep '\[playing\]')" ]]; then
+ # echo -n "paused icon"
+ # else
+ # echo -n "playing icon"
+ # fi
+ echo -n "\uE05C "
+
+ echo "$mpc_rot" | cut -c 10 | tr -d '\n'
+
+ echo "%{F${fg_normal} A}"
+ fi
+
+ mpd_connected=1
}
update_taglist() {
@@ -100,6 +120,11 @@ update_winlist() {
done
}
+update_date() {
+ echo -n "%{F${bg_focus}}|%{F${fg_normal} A:date:} \uE015 "
+ date +$'%a, %b %d, %H:%M:%S' | tr -d '\n'
+ echo " %{A}"
+}
#######################
@@ -117,11 +142,11 @@ fields[3]="%{r}"
# when
fields[4]=""
# mpd
-fields[5]=""
+fields[5]="$(update_mpd)"
# conky stats
fields[6]=""
# date
-fields[7]=""
+fields[7]="$(update_date)"
@@ -133,36 +158,37 @@ fields[7]=""
# with the first element in the line as a
# unique identifier for the event type
-get_date() {
- {
- while true; do
- date +$'date\t%a, %b %d, %H:%M:%S'
- sleep 1
- done
- } | awk '$0 != l { print ; l=$0 ; fflush(); }'
+# an event passed once a second
+event_tick() {
+ while true; do
+ sleep 1
+ echo "tick"
+ done
}
-get_mpd() {
+event_mpd() {
+ mpc status
while true; do
- if [[ -z "$(mpc status | grep '\[playing\]')" ]]; then
- echo -e "mpd\tpaused"
- else
- echo -e "mpd\tplaying"
- fi
- mpc idle player
if [[ $? ]]; then
+ mpd_connected=0
+ echo -e "mpd\tdisconnected"
+ sleep 10
break
+ else
+ mpd_connected=1
+ echo -e "mpd\tconnected"
fi
+ mpc idle player
done
}
-get_stat() {
+event_stat() {
{
conky -c ~/.config/herbstluftwm/panel/conky_stats
}
}
-get_when() {
+event_when() {
{
while true; do
if [[ -z "$(when --future=2 | sed '1,2d')" ]]; then
@@ -185,13 +211,13 @@ get_when() {
# their outputs multiplexed
{
- get_stat &
+ event_tick &
child[1]=$!
- get_date &
+ event_stat &
child[2]=$!
- get_when &
+ event_when &
child[3]=$!
- get_mpd &
+ event_mpd &
child[4]=$!
hc --idle
@@ -223,37 +249,20 @@ get_when() {
# determine event type and act
# accordingly
case "${event[0]}" in
- date)
- fields[7]="%{F${bg_focus}}|%{F${fg_normal} A:date:} \uE015 ${event[@]:1} %{A}"
- if [[ $mpd_playing ]]; then
+ tick)
+ fields[7]=$(update_date)
+ if [[ $mpd_connected ]]; then
fields[5]=$(update_mpd)
fi
;;
mpd)
- if [[ "${event[1]}" == "playing" ]]; then
- mpd_offset=0
- mpd_current="$(mpc current) "
- mpd_length=${#mpd_current}
- mpd_playing=true
- fields[5]=$(update_mpd)
- else
- mpd_offset=0
- mpd_length=0
- mpd_current=""
- mpd_playing=false
- fi
+ fields[5]=$(update_mpd)
;;
stats)
- # enforce fixed widths with sed. printf
- # pads in the other direction
- event[1]=$(echo ${event[1]} | sed \
- -e 's/^\(..\)$/\1 /' \
- -e 's/^\(...\)$/\1 /')
- event[2]=$(echo ${event[2]} | sed \
- -e 's/^\(..\)$/\1 /' \
- -e 's/^\(...\)$/\1 /')
+ event[1]=$(printf "%-4s" ${event[1]})
+ event[2]=$(printf "%-4s" ${event[2]})
fields[6]=$(
echo -n "%{F${bg_focus}}|%{F${fg_normal} A:stats:} "
echo -n "%{F${fg_blue}}\uE023%{F${fg_normal}} ${event[1]} "
@@ -279,6 +288,11 @@ get_when() {
fields[1]=$(update_taglist)
fields[2]=$(update_winlist)
;;
+
+ quit_panel)
+ pkill dunst
+ break
+ ;;
*)
;;
diff --git a/.config/nitrogen/bg-saved.cfg b/.config/nitrogen/bg-saved.cfg
index 3f73266..1bb40cb 100644
--- a/.config/nitrogen/bg-saved.cfg
+++ b/.config/nitrogen/bg-saved.cfg
@@ -1,4 +1,4 @@
[:0.0]
-file=/home/shmibs/backdrops/shadowed/punpun.jpg
+file=/home/shmibs/backdrops/shadowed/dream.png
mode=5
bgcolor=#000000