<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dabbler &#187; ubuntu</title>
	<atom:link href="http://sethjust.com/tag/ubuntu/feed/" rel="self" type="application/rss+xml" />
	<link>http://sethjust.com</link>
	<description>If it ain&#039;t broke, fix it!</description>
	<lastBuildDate>Fri, 16 Jul 2010 00:19:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>A useful calendar in Conky</title>
		<link>http://sethjust.com/2009/08/03/a-useful-calendar-in-conky/</link>
		<comments>http://sethjust.com/2009/08/03/a-useful-calendar-in-conky/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 02:34:09 +0000</pubDate>
		<dc:creator>sethjust</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[cal]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[conky]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[sed]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://sethjust.com/?p=114</guid>
		<description><![CDATA[Since I got a new desktop a month or so ago, I&#8217;ve been running Ubuntu as my main operating system, and am using Conky for a nice heads-up-display. There are a lot of articles on the web about both Ubuntu and Conky, but one thing I couldn&#8217;t find a good, accurate how-to on was getting [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Since I got a new desktop a month or so ago, I&#8217;ve been running <a href="http://www.ubuntu.com">Ubuntu</a> as my main operating system, and am using <a href="http://conky.sourceforge.net/">Conky</a> for a nice heads-up-display. There are a lot of articles on the web about both Ubuntu and Conky, but one thing I couldn&#8217;t find a good, accurate how-to on was getting a calendar that highlighted the current date. While getting the calendar is easy using the cal command, actually getting the date highlighted is somewhat hard, and all of the articles I found suggested methods that broke in various situations. However, I managed to get it all worked out, and have a beautiful calendar that looks like this:<img class="aligncenter" title="Conky Calendar" src="http://homepage.sethjust.com/files/conky_cal.png" alt="" width="129" height="120" /></p>
<p style="text-align: left;">After the jump, I&#8217;ll give you the code and explain how it all works.<span id="more-114"></span></p>
<h2 style="text-align: left;">How it Works:</h2>
<p style="text-align: left;">The code from ~/.conkyrc that makes this calendar is simple:</p>
<pre style="text-align: left;">${color orange}CALENDAR ${hr 2}$color
${execpi 60 DJS=`date +%_d`; cal | sed s/"$DJS"'\b'/'${color orange}'"$DJS"'$color'/}</pre>
<p>This is a somewhat complicated expression, but what it does is fairly simple. The first line simply draws the title for the section, and it&#8217;s the second line that does the magic. Let me break it down and explain it.</p>
<pre style="text-align: left;">${execpi 60</pre>
<p>This command tells Conky to execute the next argument every 60 seconds, and, importantly, parse the output of that argument. This way, when we put in commands that change the text color, Conky will obey them instead of printing them.</p>
<pre style="text-align: left;">DJS=`date +%_d`;</pre>
<p>DJS (which stands for &#8220;date&#8221; followed by my initials) is a temporary variable that holds the current day of the month, padded with a leading space, if necessary (so that we&#8217;ll catch the first of the month, not every 1 in the calendar, for example).</p>
<pre style="text-align: left;">cal |</pre>
<p>cal simply prints out a simple calendar, and the pipe feeds that output through to the next commmand:</p>
<pre style="text-align: left;">sed s/"$DJS"'\b'/'${color orange}'"$DJS"'$color'/</pre>
<p>This is one big mess of a command, but the main body is a <a href="http://en.wikipedia.org/wiki/Regex">regex</a> that sed takes as an argument. The regex searches for the string &#8220;$DJS&#8221;&#8216;\b&#8217;, which means the contents of the variable DJS (which we set earlier) followed by a word boundary &#8211; a change from printable characters to white space. This means that it will find the current date (one or two digits) but won&#8217;t find the 3 of the 30th on the third of the month. It also means that it will work correctly if the current date is on the far left or right column of the calendar.</p>
<p>The second half of the regex simply wraps what it found the first time around in a couple of Conky commands that change to color to orange, and then back to what it was before.</p>
<p>Lastly, the closing bracket (}) at the end of the line closes out the opening one that is required for all Conky commands with arguments.</p>
<p>Now go forth and cover your desktop in beautiful calendars.</p>
<p><strong>Update: </strong>Erik in the comments has a modification to center the entire calendar, if left-aligning isn&#8217;t for you.</p>
]]></content:encoded>
			<wfw:commentRss>http://sethjust.com/2009/08/03/a-useful-calendar-in-conky/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
