diff options
Diffstat (limited to '.config')
-rw-r--r-- | .config/dunst/dunstrc | 186 | ||||
-rwxr-xr-x | .config/herbstluftwm/autostart | 2 | ||||
-rwxr-xr-x | .config/herbstluftwm/panel.sh | 134 | ||||
-rw-r--r-- | .config/nitrogen/bg-saved.cfg | 2 |
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 |