Skip to main content

Google’s Calendar on the Command Line!

Google’s Calendar on the Command Line!

You love your comfortable command line, but all the cool kids are playing in the Web 2.0 web space, and you want to stay true to your roots?  Want a Web 2.0 calendar, but still love (or need) command line access?

I just found the answer: gcalcli. This little tool will let you list your appointments, get an list your events, get an agenda, print ascii rendering of your calendar for the week or month.  You can even add events to the calendar.

I like the fact that I can easly get at my gcalendar from anywhere (even my cell phone), and now I can do it from my shell.

The only downsides so far?  The code has not been updated since October of 2007, and the speed can be a little slow sometimes. I am going to play with it for a while to see if I like it enough to replace remind.

Alerting with Remind

Alerting with Remind

Back in my article on Remind, I talked about the simple power of remind to power your scheduling needs.  That is all fine and good, but how to you get it to tell you when you have an event?

In its simplest form, when you run _remind _ from the command line, it will not only display the current day’s reminders, but it will run in the background and wake up to tell you about other reminders on the screen while you work.

This is fine, but what happens if you do not have that termial open in front of you?  Well, I have two ways I approach that issue.

First, when I run under X (yeah, yeah, I know, but I use cli tools under X), I have this added to my .xinitrc:

remind -z -k’xmessage -buttons okay:0 -default okay %s&’ ~/.reminders &

Let’s look at the command line:

  • The -z tells remind to wake up every 5 minutes and reread the .reminders file.
  • The -k tells remind to run a command instead of simply printing the reminder to the screen
  • xmessage -buttons okay:0 -default okay %s& is the secret sauce of this.  This is the command run when there is an alarm.  This command line calls xmessage (which is on pretty much any box with X) to display the alert.  You could use zenity or kmessage, or winpopup, or whatever.  This is what puts the alert in your face when you are not looking at the screen.  The & is needed to make this command non-blocking by putting it in the background.

That all good if you are setting at your computer.  But, what do you do when gasp you leave to computer?  This is a little tricker.  For this, my solution needs two things: 1) a computer which is always on and 2) a way to send messages to your cell phone/pager (sms or email).  I have a cron job which checks to make sure remind is running, and restarts it if it is not (I use a hosting provider which does not like long running processes).  The command line is similar to the one for X, but with a difference:

TZ=CDT6CST ~/bin/remind -z -k”echo %s

So you need a calendar?

So you need a calendar?

So, one of the things we have been using computers for is to keep track of our lives.  And this means a scheduling or calendaring tool.  Some tools out there do this fine, and some do it very well.

I have to keep track of a lot of appointments. From conference calls for work, to each member of the family’s schedules, to random, but highly important reminders.  Most calendaring programs out there will let you set up a reoccurring event by day of the month, or the date.  But, what if you need to do something two days before the end of the month, every month?  Or, you need to do something every full moon, but not on the blue moon?  Or, you have a standing meeting with your boss every other Monday morning, execpt when Monday is a holiday, then the meeting shifts to Tuesday?  Oh, and you want something that you can run over an ssh session, while on your smart phone, or you friend’s smart phone?

The answer is simple: remind.  remind can do this, and more.  Need to set something up by the Hebrew Calendar?  Check.  Want your calendar to run a shell command for you on a holiday, specific day of the month, or phase of the moon? Check.

Most modern Linux distrobutions include remind nowdays, as it is so darn usefull.  In addition, it runs just fine under Solaris, and the BSDs, including MacOS X.  If fact, over at 43Folders, they have a whole section their wiki for remind.  The wiki has many tips and tricks on how to use remind to its fullest.

In my next post, I will share some tips on how I get remind to remind me of events.

Command-Line blog posts

Command-Line blog posts

So, it only seems fitting that I should talk about a command-line interface to posting on this blog. No, I do not mean using links or the like, but a way to post from the command line.

So, this post is being typed up in vim on my Fedora 8 laptop. I will use this great little tool I found called wppost to post. wwpost is part of the perl module WordPress::Post.

A brief summary of its commands are bellow:

       -c category, can be a list separated by commas, no spaces
-t title
-i description, main body of post, if it has a slash, it is interpreted as a file to slurp
like a text or html file
-D iso formatted date for post, can be left out
-T if there are image attachments, place them as thumbnails only, with link, not just resized

Some usage examples taken from the man page:

    Most basic of usage, (provided you have a ~/.wppost file)

wppost -t 'hi everyone' -i 'i just wanted to say hello'

If you want to specify two different categories:

wppost -t 'Another Apple' -i 'Apples are really great. I do love them so.' -c food,rant -D 20071231

If the body of the post is in a file

wppost -t 'title here' -i ./content.txt

If the content of the post is in a file and you want to use the file
name as the title

wppost -i ./Title_Here.txt

If you want to have file attachments:

wppost -t 'recent photos' -i 'these are recent pictures i took' ./*jpg

Pretty cool, huh?

Peace out!