This patch aims to make panel.sh a bit easier to understand.
I had a while until I got the concept, and I've also seen people in
IRC who don't get it :P
Florian
--
() ascii ribbon campaign - stop html mail www.asciiribbon.org
/\ www.the-compiler.org | I love long mails http://email.is-not-s.ms/
He who invents adages for others to peruse takes along rowboat when going on
cruise.
From 4918bf633fc9f665ff61b51030696b72a810886b Mon Sep 17 00:00:00 2001 From: Florian Bruhin <git _at_ the _minus_ compiler _dot_ org> Date: Tue, 29 Oct 2013 18:50:19 +0100 Subject: [PATCH] Add comments to panel.sh --- share/panel.sh | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/share/panel.sh b/share/panel.sh index 02a925d..d25c0b7 100755 --- a/share/panel.sh +++ b/share/panel.sh @@ -53,10 +53,18 @@ else fi hc pad $monitor $panel_height + { - # events: + ### Event generator ### + # based on different input data (mpc, date, hlwm hooks, ...) this generates events, formed like this: + # <eventname>\t<data> [...] + # e.g. + # date ^fg(#efefef)18:33^fg(#909090), 2013-10-^fg(#efefef)29 + #mpc idleloop player & while true ; do + # "date" output is checked once a second, but an event is only + # generated if the output changed compared to the previous run. date +$'date\t^fg(#efefef)%H:%M^fg(#909090), %Y-%m-^fg(#efefef)%d' sleep 1 || break done > >(uniq_linebuffered) & @@ -69,6 +77,11 @@ hc pad $monitor $panel_height date="" windowtitle="" while true ; do + + ### Output ### + # This part prints dzen data based on the _previous_ data handling run, + # and then waits for the next event to happen. + bordercolor="#26221C" separator="^bg()^fg($selbg)|" # draw tags @@ -91,11 +104,13 @@ hc pad $monitor $panel_height ;; esac if [ ! -z "$dzen2_svn" ] ; then + # clickable tags if using SVN dzen echo -n "^ca(1,\"${herbstclient_command[@]:-herbstclient}\" " echo -n "focus_monitor \"$monitor\" && " echo -n "\"${herbstclient_command[@]:-herbstclient}\" " echo -n "use \"${i:1}\") ${i:1} ^ca()" else + # non-clickable tags if using older dzen echo -n " ${i:1} " fi done @@ -108,6 +123,15 @@ hc pad $monitor $panel_height width=$($textwidth "$font" "$right_text_only ") echo -n "^pa($(($panel_width - $width)))$right" echo + + ### Data handling ### + # This part handles the events generated in the event loop, and sets + # internal variables based on them. The event and its arguments are + # read into the array cmd, then action is taken depending on the event + # name. + # "Special" events (quit_panel/togglehidepanel/reload) are also handled + # here. + # wait for next event IFS=$'\t' read -ra cmd || break # find out event origin @@ -150,6 +174,11 @@ hc pad $monitor $panel_height # ;; esac done + + ### dzen2 ### + # After the data is gathered and processed, the output of the previous block + # gets piped to dzen2. + } 2> /dev/null | dzen2 -w $panel_width -x $x -y $y -fn "$font" -h $panel_height \ -e 'button3=' \ -ta l -bg "$bgcolor" -fg '#efefef' -- 1.8.4.1
Attachment:
pgpOIgqOwakjE.pgp
Description: PGP signature