Nautilus enqueuer plugin for Rhythmbox - new and improved!

April 25th, 2010

It has been almost a year since I created my plugin to enqueue files into the Rhythmbox play queue from within Nautilus. I got feedback from several people across the globe regarding the plugin and the most common complaint that came across was that the plugin could not enqueue folders recursively. Also, when some files had embedded special characters, the plugin did not work as expected.

So, finally after a busy year, I sat down one evening and made the requested modifications to the plugin. Now it can handle folders recursively and also embedded special characters within file names. It is also intelligent enough to detect if a folder has zero music files and in that case the option to enqueue the folder itself would not come up. Another good  friend of mine gave a very good suggestion that the plugin should automatically detect the default player in Gnome and enqueue the files to that player. I think I shall take that up as an enhancement in the next version ;-)

So, here it is. Download and enjoy! Install instructions are same as before, which you can find in the original post. If you are already using the older version, then you just need to download this version, and replace the old one in your $HOME/.nautilus/python-extensions folder.

Last but not the least, I must thank all of you to have downloaded and tried my original plugin. But more thanks are due because of the fact that you took out time to give feedback. I know a year is late of me to have got back to you with the enhanced plugin, but things were quite hectic on my personal life as a result of which I got very little time for such activities.

admin Linux, Ubuntu , , , ,

My first Robot - LFR (Pronounced ‘Loafer’)

November 16th, 2009

If there is anything that is considered a rite of passage among embedded hobbyists then it undoubtedly has to be the creation of a robot. A robot is not only challenging from the point of view of an embedded system designed to perform a particular function, but it also has mechanical and structural facets to it which makes it even more difficult.

But please do not assume the robots we hobbyists build would be even remotely smart and glamorous like R2D2 from Starwars or the three-laws-bound R. Daneel Olivaw from Asimov’s novels. In stead, our robots are from a much more humble origin; most of us are satisfied with simple line followers and object avoiders. Speaking of which, let me introduce you to my first robot, which I have christened, LFR - Line Following Robot - but you may call him Loafer in affection.

As the name says, this robot is programmed to follow a painted line on any plane surface using a sensing contraption. For LFR, I have used an ATmega32 - an ideal choice primarily because of its on chip debug interface. An endeavour as ambitious as robot building definitely warrants a good debug features.

For my sensor array, I have used two LDRs or Light Dependent Resistors and an LED to act as the light source which is used to shine the path of the robot. The light reflected from either side of the line is then measured and compared to decide which direction to turn the robot. The turning is achieved by using a differential drive i.e. a drive which turns the wheels independently of each other. An LM339 is used as a comparator chip and a ULQ2804A chip is used as the motor driver chip

The below schematic diagrams show how steering of the robot is achieved by using the LDR-LED sensor array. The diagrams show the cases when the robot moves in a straight line, turns left and turns right respectively. This is based on the amount of light reflected off the black painted line.

LFR - moving in a straight line.

LFR - moving in a straight line.

LFR - turning left.

LFR - turning left.

LFR - turning right

LFR - turning right

After the schematic diagrams, now here I present some actual pictures of LFR. Alas! I do not have any videos of this one. One issue which I found with LFR was that the entire circuitry along with its batteries was a bit too heavy for my motors to drive. So it moved rather sluggishly. This is one improvement which I have in mind for LFR 2.0 ;-). And in case you are wondering, for the line, I pasted some black insulation tape on my marble white floor.

So without further ado, here are some snaps of LFR. The first one is a labelled picture for the curious.

Labelled top view of LFR

Labelled top view of LFR.

lfr_side_view

Side view of LFR - notice the big tires.

If you are curious,  click here to see the ATmega32 C source code for LFR. As usual, with ATmega32, the code is extremely convenient. I used the avr-gcc toolchain to compile this and my own homemade JTAG debugger to debug my code. And yes, if you have seen the code then your guess is probably right, I have used PWM to control the speed of the motors here ;-) . Oh and probably you might have also noticed the JTAG debugger interface on the top right hand corner of the main robot board.,

So that was all about LFR - my first robot. It does not follow any of the three laws of Asimov, but yes it is nice to build your own robot, for fun as well as learning!

I hope you enjoyed this post. Stay tuned for more! Until the next time, g’bye and take care! And please do not forget to comment if you like this post.

admin Embedded Hobbyist, Tech , , , ,

gnuProload - an official introduction

November 15th, 2009

It has been quite some time (more than year) since I created my gnuProload software to program AT89S52 microcontrollers over Linux after reverse engineering an existing software which ran only on windows. But a few months ago, I enhanced that software to enable it to program even Dallas DS5000T microcontrollers.

If you want to know how gnuProload itself came into being, please read this post first. It is quite interesting, in case you are passionate about software in general and open source in particular. It tells the story of how I refused to walk into the trap of closed source software and how I was forced to reverse engineer a piece of software which ran only on windows (prior to my reverse engineering) ;-). In case you are wondering, the name of that post is derived from the critically acclaimed movie by Stanley Kubrick, Dr. Strangelove ;-).

Ok, let’s not digress. What happened was that sometime around August, this year, I was contacted by a fellow from Brazil who visits various universities giving lectures on embedded development on Linux etc. So he wanted to present my software in one of his talks. I was flattered, naturally :-). So I went ahead and created a set of slides for him to present it in his talks. In this post, I am just providing those same slides for you to go through. I hope these bunch of slides will give you more information rather than my original post about gnuProload.

So here it is, download and enjoy! Oh and by the way, you would need OpenOffice.org to view these slides. And if you are too lazy to download it, here is a PDF copy of it ;-).

Enjoy! As usual, don’t hesitate to put in your comments. Have a nice day!

~Seemanta

admin Embedded Hobbyist, My Creations, Tech , , ,

A desktop notifier for new emails in your Gmail inbox for Ubuntu

June 11th, 2009

I have been fiddling with the Python programming language over the past few days.  And even though it has just been few weeks and I hardly have covered every aspect of the language in detail, I am already producing working code in python. In short, I am flying! Python really rocks!

So yesterday I thought it would be nice to be able to check my Gmail inbox for new incoming mails from the command line. So a little searching gave me this link.

This is a python script that does exactly what I wanted. But it runs from the command line and is interactive in that it asks for the user name and password from the user interactively. I went a step ahead and thought what if I can make this process automated and for every new mail, show up a notification. Speaking of notifications, you must be aware of the new OSD notification that is creating much buzz these days, especially in Ubuntu circles. This new notification system is designed to replace the existing notification system with a cooler UI and better usability. At least that’s what the canonical folks claim.

Anyway, I set out to create this cool notifier and in a few hours it was ready. Being a first timer to Python, it took some time as every now and then I would stop to see some documentation and then once I understood the concept, carried on hacking. Once complete, the next few minutes I spent in fine tuning the notifier, like add an image (the gmail logo of course!!).

Eureka!! It worked, Yippee !! That’s what I like most about Python. Even a complete newbie like me can create working code in such a short time! Having written the it, now I wanted to make it more user friendly. So the next day, I ended up writing a setup.py script to provide ease of installation. Believe me, writing this setup was far more difficult than the original notification script ! But because of this script, installation is super-easy. Just run the setup.py file, that’s it!

So finally, it was done. I did some minimal testing but it should work well. You may download this from here.

Steps to install:

0. First make sure you have the python bindings for notify-osd, the new notification system for Ubuntu. If not, then install it with the below command:

$ sudo apt-get install python-notify

1. Download, gunzip and untar the gmailnotifier.tar.gz file from the above link.
2. Go to the gmailnotifier folder so created and run the setup.py file.

$ ./setup.py

It will ask a few questions, like your gmail username, password, where you want to install the script and what should be the time interval in seconds to periodically check your mailbox for new mails. Make sure you answer those questions carefully and correctly. I have not added error checking for those questions yet :-|.

But if you feel anything is not correct, you may simply press Ctrl-C, abort the script and then run it from the beginning.

3. Now simply log off from gnome and then log back in. You are all set! That’s it. And don’t worry my setup script makes sure that the configuration file is not world-readable, since your Gmail password is there in plain text.

Enjoy ! In the event that you want to uninstall my script, you can do it manually(since uninstall option is not present in the setup.py script yet). Just open the file ~/.config/autostart/gmailnotifier.desktop in your favorite text editor. Note down the line which has an ‘Exec’ in it as the first word. That line would be something like:

Exec=/path/given/while/running/setup.py/gmailnotifier/gmailnotifier.py

Note down the path, excluding the gmailnotifier part. Here it would be

/path/given/while/running/setup.py

Go to that path and delete the gmailnotifier folder altogether. After that, close the ~/.config/autostart/gmailnotifier.desktop file and delete that also. That’s it.

And in case you are wondering how this looks like, here is a screenshot of it in my Ubuntu Jaunty installation. Look at the top right hand corner. It says I have 3 new mails.

gmailnotifier_in_action

Also, if you have not noticed by now, once installed my notifier script installs itself as a gnome startup program. If you go to ‘System->Preferences->Startup Applications’ you can see a new entry named ‘gmailnotifier’. Here is a screenshot of that too, just so that you don’t get surprised later when you see this new thing there all by itself.

gmailnotifier_installs_itself_as_a_startup_program

Read on if you want to know the technical details of my notifier. Basically my notifier depends on chiefly two main libraries - glib and pynotify. Glib is a general purpose library that is the foundation for GTK+ but more than that, it is a very high quality general purpose library that you can use freely in your other programs. Pynotify, on the other hand gives python bindings to the libnotify library.

In my script I first create a glib main loop. A main loop is an event loop that waits for events waiting indefinitely. Yeah, you guessed it, a glib main loop is at the heart of all GTK+ GUI applications which are fundamentally event driven and respond to mouse clicks, drags/drops and key events. But before I start the loop, I register for a timer callback every n seconds. This n is the interval the script would check your inbox for new mails.

This is one of the values you supply while running the setup script. Anyway, whenever this timer expires, the timer callback is called and this callback logs in, checks the Gmail RSS feed and informs you if there are any new mails. The point to be noted here is that new mails here mean mails that are ‘new’ to the script not to your inbox. Since this script does not mark new mails as read after displaying them, it maintains its own 2 buffers of old mails and new mails respectively. Any mail that is present in the new mail buffer but not in the old mail buffer is flagged as new and this count is what is shown in the the pop up.

As usual, comments/suggestions/bug reports are welcome if you liked my gmailnotifier!

admin Linux, Ubuntu , , ,

A nice little Nautilus plugin to enqueue audio files into Rhythmbox

May 19th, 2009

Nautilus is the default file manager in Gnome for Linux. And Rhythmbox is the official Gnome music player.  Rhythmbox supports many advanced features like Internet Radio, Library management, support for Apple iPod, DAAP shares and MTP to name a few.

So the other day, I had an idea to find a way to directly enqueue an audio file into the rhythmbox play queue. If you have used Winamp over windows, it is akin to the ‘Enqueue in Winamp’ option that windows explorer provides for audio files if you have installed Winamp in your machine and right clicked over any audio file.

So first I searched if such a Nautilus plugin was really already available. To my happiness I found one plugin, written in python for a similar use but for enqueueing into the playlist of the Audacious, another music player on Linux. So, I downloaded it, and after a few minutes of hacking, it was ready for rhythmbox. So I can’t take entire credit for creating this plugin ;-).

The only trouble I had was to find out which option to use with rhythmbox from the command line to import the audio file into the library AND enqueue it into tha play queue. The man page did not mention anything. Then I downloaded the entire rhythmbox source code and finally from the code was able to know how to achieve what I wanted.

So here it is. Click here to download the plugin, add-to-rhythmbox.py. Installing this plugin is really easy. Just follow the following steps:

1. First, install python-nautilus package which gives the python bindings for Nautilus:

sudo apt-get install python-nautilus

2. Create a folder called ‘python-extensions’ within .nautilus within your home folder. i.e if your home folder is /home/foobar then create /home/foobar/.nautilus/python-extensions.

3. Copy the downloaded script, `add-to-rhythmbox.py` into this python-extensions folder.


4. Restart nautilus with the command:

killall nautilus

That’s it. Now you can right click over any audio file and see the new option to enqueue that file into the rhythmbox play queue. Here is a screenshot of how it looks like:

Screenshot of my Nautilus plugin.

Screenshot of my Nautilus plugin to enqueue an audio file into Rhythmbox.

Hope this plugin would prove useful to all you Linux/Gnome users. Ideally I should have written this using dbus but was too lazy to do so. Maybe next time I would do that and post version 0.2. ;-)

Until my next post, g’bye and take care!

admin Linux, Ubuntu , , , ,

SEAShell - my new software for accessing Serial EEPROMs

May 3rd, 2009

Some time last year, I got myself  a few serial EEPROMs. As the name suggests, they are accessed serially using some serial protocol(usually SPI or I2C). Hence these serial  EEPROMs don’t have a parallel data/address bus that we normally associate with EEPROMs in general. Here is a photo of my SPI based EEPROM, a 25AA256 from Microchip.

Microchip_25AA256_SPI_EEPROM

Memory is written to and read from the EEPROM using a serial protocol, which may be SPI or I2C. I already wrote a post back then when I interfaced a SPI based serial EEPROM with my arduino board. This time, I have interfaced that same SPI based serial EEPROM(the microchip 25AA256 to be precise) with my Dallas DS-5000T microcontroller development board which has a DS5000T in it and that is basically a variant of the classic 8051 core. But alas! the DS-5000T does not support hardware SPI!! Hardware SPI means that you don’t have to implement the SPI protocol in software and by just setting up a few registers you can simply copy the byte in the output register and the microcontroller takes care of encoding each bit within that byte and sending it across the SPI bus. So that means that I had more work to do. I had to in fact implement the SPI bus protocol in software, which is also known by the term bit-banging. But before we discuss further let us look at how an SPI bus looks like:

SPI bus schematic

SPI bus schematic

As you can see, SPI works on a master-slave paradigm. The master is the one which initiates all data transfers. There can be several slaves on the same bus and the master has to select the slave it wants to communicate with by asserting the chip select line(also called slave select or SS line) of that slave. Here, SCLK stands for slave clock. The master has to supply the slave with clock pulses for it to work. MOSI means master out-slave in and MISO means master in-slave out. The former is used to transmit data from the master to the slave and the latter is used to receive data from the slave into the master. SS means slave select as indicated earlier. The slave would be active only when SS is asserted by the master by pulling it low.(It is asserted by pulling it low since SS is active low, indicated by the bar on top).

For more details about SPI, you can take a look at this Wikipedia link. The way my system is designed is that my DS5000T board acts my master which issues the EEPROM read/write commands. And the EEPROM itself acts as a slave. In order to communicate with the DS5000T, I use the PC serial port. The software that runs on my DS5000T, I call SEAShell -  or Serial EEPROM Access Shell. It is a shell in the sense that it allows you to read/write a particular byte within the EEPROM. Although I have not created a file system of sorts within my EEPROM, but that is an eventual goal. It would be really cool to have my own seemFS or Serial EEPROM Embedded Micro File-System. (I must add, I continue to impress myself with my cool names ;-) ).

So here is how my SEAShell setup looks like:

SEAshell_Schematic_Diagram

Schematic setup for SEAShell.

The circuit schematic of the connections between the DS5000T and the serial EEPROM is also very simple for this setup. It is so simple that I am not going to bother creating another drawing for it. The connections between the DS5000T and the 8 pin 25AA256 Serial EEPROM can be done as follows:

a) Pin 2.0 of  DS5000T –> Pin 1 of 25AA256 (/CS)

b) Pin 2.1 of DS5000T –> Pin 2 of 25AA256 (SO)

c) Pin 2.2 of DS5000T –> Pin 3 of 25AA256(/WP)

d) Pin 2.3 of DS5000T –> Pin 7 of 25AA256(/HOLD)

e) Pin 2.4 of DS5000T –> Pin 6 of 25AA256(SCK)

f) Pin 2.5 of DS5000T –> Pin 5 of 25AA256(SI)

g) Pin 4 of 25AA256 should be grounded.

h) Pin 8 of 25AA256 should be raised to VCC, +5 volts DC.

For more details about the 25AA256, you may refer to its official datasheet here.

The connection between the PC and the DS5000T board, of course uses the MAX232A level shifter(since RS232 voltage levels are not TTL compatible) and a few 10 uf capacitors. That is a standard connection and a bit of google can tell you how to interface a MAX232 IC with a serial port.

On the software side, I have written two programs for this:

a) SEAShell.asm  : An assembly language program for the 8051 that is burned into my DS5000T development board (using my very own gnuProload software, of course!). The job of this program is to provide an interface to the human user through the PC serial port to allow the human user to interactively (or in an automated way), read/write data into the Serial EEPROM. The source code for SEAShell.asm can be found here.

b) SEAShellUtil.c : A C language program that utilizes the automated mode of SEAShell.asm and can be used to read/write big files into the serial EEPROM. This is needed because we cannot expect a human user to type in several thousand bytes in case he/she wants to write them into the EEPROM. The source code for SEAShellUtil.c can be found here.

So my complete SEAShell setup comprises of the following  components:

a) The DS5000T development board. Note that any 8051 compatible microcontroller can be used because my SEAShell.asm uses only standard 8051 assembly language, no fancy 8051 variant specific things are used. Here I used my DS5000T because it was convenient for me. I could also have used my Atmel AT89S52 here.

b) The software consisting of SEAShell.asm and SEAShellUtil.c

c) The Serial EEPROM itself, which is a 25AA256. You can use any serial EEPROM which is based upon SPI. But you would have to modify the page size within the SEAShell.asm and SEAShellUtil.c code. Also find out whether the EEPROM accepts data MSB first or LSB first and then modify SEAShell.asm accordingly.

d) A simple serial port communication software like minicom (on Linux) or HyperTerminal(on Windows). Note that, SEAShellUtil.c would run only on Linux. However, you may try out the interactive mode of SEAShell.asm on any OS that has a serial port communication software(like minicom or HyperTerminal).

Here is a photo showing my hardware setup for SEAShell:

SEAShell_hardware_setup

Photo showing hardware setup for SEAShell.

The EEPROM can be seen on the right hand side fitted in a small ZIF socket. My DS5000T board can be seen on the left. Still further to the left you can see the serial port DB9 connector which connects to the PC on the other end. Also above the serial port connector is the small USB connector that supplies power to the DS5000T development board directly from my PC.

And to clarify matters more, here is a screencast which shows SEAShell in action:

I hope you like this post about SEAShell. As usual, do write in your comments and suggestions. Your comments go a long way in inspiring me to create more such stuff ;-) !

Until next time, this is Seemanta saying good-bye to you all and take care!

admin Embedded Hobbyist, My Creations, Tech , , , ,

Embedded development platforms I own

April 21st, 2009

I started creating small embedded projects for fun about a year and a half back. Since then I have been hooked into it and today it takes the entirety of my free time. I started out with the humble 8051 and along the way have had the fortune of laying my eyes on the sexy Arduino, the powerful AVR and even the austere MSP430. A list of my embedded projects can be accessed here.

Here is a brief overview of the platforms that I own, as of this writing. By platform, I mean a hardware and software setup that allows me to write code in C or assembly, compile/assemble that code, ‘burn’ that binary into the target microcontroller and then possibly debug that ‘burned’ code.

1. AT89S52 development platform: This is the very first platform I ever owned. I purchased this from a company in Gujarat (a western province in India) called Sunrom. I am very satisfied with their product although a bit disappointed with the company for the lack of Linux support for its flashing software. I chose this as my first platform since I was most familiar with the architecture of the ATMEL AT89S52. AT89S52 has a 8-bit CISC architecture.

AT89S52 Development Platform

My AT89S52 Development Platform

Type: Purchased
Approximate cost2250 INR (2006)
On Chip Debug support: No
Linux support: No. But I created a ‘reverse-engineered’  linux port for its flashing software. Look here.
Cons: Lack of Linux support from Sunrom and on chip debug.
Pros: Availability of some very good development tools like SDCC, ASEM51 etc.
My Comments: Best system to start embedded development at a minimum cost. Good value for money.
Overall Rating: 4.0/5

2. MSP430 EZ430-RF2500 USB development tool: I went to attend the MSP430 day conducted by Texas Instruments all over the globe and they gave this USB development tool as a free sample. This tool can be programmed via the IAR IDE that runs on windows through the PC USB. For the unitiatiated, MSP430 is a range of ultra low power microcontrollers from Texas Instruments. It has a 16-bit RISC architecture. Frankly speaking, I have never created any big project with the MSP430. Main reason being that for it to work, a separate 3.7 V power supply is needed for this ultra low power beast. Normal 5 volts that we use usually for other micros would fry it. But the circuit components would still need 3.7 volts. Thus, a kind of isolation would be needed to make sure that the 5V does not flow into the MSP430. This is one reason, I have never tried making anything with this platform. It just lies in my shelf, gathering dust till the moment of its beckoning comes.

A plus point however is that Texas Instruments have also created DIP version of this microcontroller which helps the hobbiyst who is occasional not well equipped to perform SMD soldering.

MSP430 Development Platform

My MSP430 Development Platform

Type: Free Sample given by Texas Instruments for MSP430 day attendees.
Approximate cost: 40 USD, if I remember correctly.
On Chip Debug support: Yes
Linux support: GCC port of MSP430 seems to work in Linux, but have heard horror stories from people trying to make the USB tool which I have work in Linux. Problem is compounded by Texas Instruments not releasing the sources for the DLL needed to talk with the USB stick tool.
Cons: Lack of proper Linux support. IAR compiler does not work beyond 4k code size.
Pros: DIP version is hobbyist friendly and availability of MSP-GCC is a boon for those who cannot afford the IAR C compiler.
My Comments: Not recommended for newcomers.
Overall Rating: 2.5/5

3. Arduino: This tiny physical computing platform has taken the embedded hobby world by storm. There are thousands of websites all over the web with thousands of cool arduino projects. Arduino is easy to learn and easy to program. But while many people would recommend it for newcomers, I would really not do so. Arduino lets users program at a somewhat abstract level using its IDE which is based on processing. I firmly believe that someone should start with embedded development with the guts-first approach, i.e. learn the architecture from inside out and start programming in assembly language before graduating to high level languages like C or processing/wiring.

Arduino Development Platform

My Arduino Development Platform

Type: Purchased
Approximate cost: 35 USD, back in 2008.
On Chip Debug support: No
Linux support: Yes. Arduino works out of the box with my laptop which has Ubuntu Intrepid Ibex.
Cons: Lack of on chip debug really makes creating complex stuff a pain in the butt.
Pros: Lots of sites on the web to start development.
My Comments: Not recommended for newcomers. But would readily recommend for experienced developers.
Overall Rating: 4.0/5

4. AVR ATmega: This is my latest acquisition in the world of embedded platforms. I hand made this myself after hours of backbreaking soldering sessions. But every minute of those sessions was wortwhile when I was able to use plain old GDB to perform hardware debugging of my target board. And did I mention, it works in windows too ? You just need to install win-avr and avr studio :-) .

For the uninitiated, AVR is a RISC architecture from ATMEL and is wildly popular among hobbyists. The best thing about AVR is the availability of the completely free GNU tool chain for this arcthitecture which is why is it so much popular among students and hobbyists.

AVR ATMega Development Platform

My AVR ATMega Development Platform

Type: Hand made
Approximate cost: 300 INR or 7.5 USD (Believe me !!)
On Chip Debug support: Yes.
Linux support: Yes. AVR ATmega is fully supported on Linux through AVaRice and the AVR port of the GNU toolchain.
Cons: Might be a bit daunting for the absolute noob to make this with bare hands, but then it can be also purchased from ATMEL but be ready to shell out in the range of 100 USD.
Pros: Very hacker friendly, and GNU/Linux friendly too. Works on windows along with win-avr and avr studio.
My Comments: Excellent  for newcomers. Also a great way to learn basics of soldering and embedded development.
Overall Rating: 4.5/5

So this completes my review. And no prizes for guessing who the winner is!. It is no doubt the AVR platform that steals the show. And why not? With its powerful on chip debug, 100% free GNU tool chain, GDB compatible software, Windows plus Linux compatibility, AVR really does steal the show.

That is all the time I have this time. Happy embedding!!
With this thought, I now take your leave and would see you all in my next post!

regards,
Seemanta

admin Embedded Hobbyist , , , , , , ,

10 cool Ubuntu applications to boost your productivity.

March 26th, 2009

I have been using Ubuntu for quite some time now and am quite hooked onto it. I like Ubuntu for its simple yet clear looks, ease of software installation and ease of customization all at the same time. Here is a list of 10 cool Ubuntu applications which will boost your productivity.

Note that, this is a subjective list based on what I feel would be productive. Your opinion and mileage would vary based on your personal taste and priority of what you like to do with your Linux box. Also note, all these applications referred here are based on an ‘Intrepid Ibex’ installation.

1. Terminator:

screenshot-seemantavyasa-tmp-terminator

Terminator is a replacement for the gnome-terminal. I personally used gnome-terminal but ever since I came across terminator, I have been using it, forgetting gnome-terminal in the process. The main difference between terminator and gnome-terminal is that terminator supports splitting the terminal window into horizontal and/or vertical sub-terminals AND tabbed terminals while gnome-terminal ONLY supports tabbed terminals.

Installation:

sudo apt-get install terminator

The way I use terminator is to create a permanent ‘root’ window so that all commands that need to be ’sudo-ed’ can be directly given here. Remaining windows are created on a need basis to work on non root stuff.

Usage:
Once installed, it would appear in Applications->Accessories->Terminator, in the gnome desktop environment.

Link:
http://linux.softpedia.com/get/Terminals/GNOME-Terminator-29392.shtml

2. Gnome do:screenshot-1

Gnome do is a kind of keyboard based program launcher(similar to the popular launchy application in windows). You can summon Gnome do with Win+Space keyboard combination and type whatever application you want to fire up. Gnome do performs an intelligent match based on your application usage pattern and then you can ‘do’ it or in other words, execute it.

But the best reason to gnome do is its new docky interface that comes with version 0.8.0 onwards. In my opinion, this is the BEST gnome dock I have ever seen. Do not want to sound demeaning to the popular AWN and the Cairo dock, but gnome do docky is the best dock out there. First of all, docky is not as slow as AWN and the effects are much more slick than Cairo dock. Also configuration of docky is MUCH simpler than configuring the Cairo dock. And it runs fastest out of the three. Way to go, docky!! Below is Gnome do in ‘do’ mode where I summoned it by typing Win+Space and just typed A N J U. It matched that with the Anjuta IDE. Pressing ‘Enter’
key here launches Anjuta.

screenshot-2

Installation:

sudo apt-get install gnome-do gnome-do-plugins

Usage:
Once installed, it would appear in Applications->Accessories->Gnome Do, in the gnome desktop environment.

After launching, a nice looking dock comes at the bottom of your screen with all the application icons.
You can press Win+Space to summon the ‘do’ interface and summon any program to execute. Please note however, by default Gnome do won’t come up in docky mode right after installation. You need to change its appearance from classic mode to docky mode in its ‘Preferences’ tab.

Link:
http://do.davebsd.com/

3. Screenlets:

Gnome screenlets is Linux’s answer to the popular desktop widgets that you occasionally see in Windows, whether from Konfabulator or the native ones in Vista. I tried many ’screenlet-esque’ packages like gDesklets, aDesklets etc. but screenlets stole the show. Main reason is it is MUCH more stable and usable than gDesklets or aDesklets. Besides, if you know python, writing new screenlet becomes a breeze.screenshot

In fact the package includes an ‘example’ screenlet that does not nothing but is a skeleton python screenlet script that you can modify to create your screenlet within minutes. It’s open source, dude! Enjoy!

Installation:

sudo apt-get install screenlets screenlets-doc

Usage:
Once installed, it would appear in Applications->Accessories->Screenlets in the gnome desktop
environment.This brings up the screenlet control center so to speak, from where you can centrally control the
activation/deactivation/configuration of all screenlets. There are a plethora of screenlets too, right from
weather, to calendar to CPU meter and what not.

Link:
http://screenlets.org/index.php/Home

4. Devhelp:

If you develop applications in the gnome environment, then chances are you must yearn for a centralized place for documentation. Nah, I am not speaking of man pages that can be viewed in the terminal , but specific documentation like glib APIs or LibGlade APIs. Then devhelp is the right application for you.

screenshot-gtk-reference-manual-gtkwindow-1The best part is, as and when you keep installing different gnome libraries and their associated documentation using apt or synaptics paackage manager, it keeps on adding those documentation packages  into the devhelp library.  That way, you always have a centralized repository of information at your fingertips. Happy hacking with DevHelp!

Installation:

sudo apt-get install devhelp devhelp-common libdevhelp-1.o

Usage:
Once installed, it is accessible from Applications->Programming->Devhelp

Link:
http://live.gnome.org/devhelp


5.  Tilda:

Ok, so you need to access the command line ever so often for doing some of your tasks through the command line. But you think that clicking on the minimised terminator icon or gnome-terminal for that matter, is time consuming and sucks. Never could have agreed more ! I agree for some time consuming tasks it might make sense to click on the minimised terminator icon, maximise it and do your work. But for giving simple one liner commands that becomes an overhead. That’s where I use Tilda. I summon tilda to do normal routine stuff like delete a particular folder, create symbolic link etc.. However, when I think that I would be using the terminal for some extended period of time, then I use terminator.

screenshot-3

If you have played games like Quake or Doom then you would remember that pressing the ’tilde’ key would cause a game console to drop down where you could give in-game commands or chat with your teammates over the network. Tilda does exactly that. Press the ’tilde’ key and voila ! A terminal drops down where you can do all your neat stuff. Done? Press tilde again and there it vanishes leaving you to work with whatver you were doing. It is so non-intrusive and yet always there for you to summon it, whenever you need it. This happens to be one of my most often used program in Ubuntu. In case you are wondering why ’tilda’ is not called ’tilde’ and called ’tilda’ instead then as per the website, it seems ’tilde’ name was already taken in sourceforge when the author registered his software.

Installation:

sudo apt-get install tilda

Usage:
Tilda runs in the background by default pressing tilde(~) summons tilda.  Presising tilde key again sends it back to the background.

Link:
http://tilda.sourceforge.net/wiki/index.php/Main_Page

6. Tomboy:

While on the gnome desktop, you may have needed to take notes on certain things. Well, use tomboy for that. Ah, you would say, whats so special about a note taking application. Well for one, in tomboy you can link your notes. You can have a main note, and then each link in your main note can be a hyperlink opening another sub-note and so on. Secondly, if you modify the link in the sub-note to correct a typo or any other reason for that matter, tomboy would automatically rename the link in the main note. Neat, eh? And if that’s not all, tomboy also enables you to synchronize your notes at a centralized web server ! Check it out for more details.

screenshot-41

Installation:

sudo apt-get install tomboy

Usage:
Once installed, accessible from Applications->Accessories->Tomboy Notes

Link:
http://live.gnome.org/Tomboy

7. Nautilus scripts:

Nautilus is the default gnome file manager. If you install these scripts in nautilus, you can multiply your productivity a million times because you can achieve almost anything just by right-clicking and then selecting things like, open command prompt here, archive file, extract here etc. This greatly enhances productiviy as this screenshot will illustrate. There are literally a plethora of options available when you install these scripts and not just the three examples mentioned above.

screenshot-file-browser-1

Installation:
Download and follow the instructions mentioned in the below link.

Usage:
While in the file manager, right click and select the script you want to execute. Above screenshot will clarify better.

Link:
http://g-scripts.sourceforge.net/

8. Preload:

Preload is an adaptive read-ahead daemon that is designed to decrease the load time of software. It is adaptive because it analyzes your application access pattern and then caches those applications in RAM so as to decrease their load times. As per reports I have heard, it leads to as much as 30% decrease in load times. I have indeed observed faster load times for Firefox after installing preload.

Installation:

sudo apt-get install preload

Usage:
Nothing. Preload is a daemon which would run at startup once you install it. So, just install and enjoy faster load times !

Link:
http://www.techthrob.com/2009/03/02/drastically-speed-up-your-linux-system-with-preload/

9. ffmpeg:

Want to rip out the audio of a video file you have? Want to add an audio track to a video which does not have sound? Want to convert your AVIs into flv format before uploading them to youtube? Want to transcode from ogg video format to AVI? You just think of it, and ffmpeg does it! It’s a swiss army knife for all who want to transcode video files.

screenshot-seemantavyasa-hb-terminator

The only minus is that its plethora of options can scare away the casual user. But there are a host of sites which would give you a quickstart guide sort of thing to get started on ffmpeg the quick and dirty way. If you are curious, in the above screenshot, I am inserting an audio mp3 track(audio_track.mp3) into an ogg video file(out-9.ogv) and then encoding the resulting output directly into flv(audio_video.flv) format. Above,  you can see ffmpeg at work as it outputs its progress.

Installation:

sudo apt-get install ffmpeg

Usage:
Are you kidding? There are so many options for ffmpeg that I can’t even dare to put them here. Try out this link to get a feel of the power of ffmpeg. ffmpeg is a command line application accessible from the bash prompt once installed.

Link:
http://ffmpeg.mplayerhq.hu/

10. VLC Media player:

This is another must have application on Ubuntu. I have seen VLC player able to play almost any *damn* format on my Linux box. It supports so many formats that you would lose count if you try to remember each one of them. VLC player truly and undoubtedly remains the video media player of choice for me on Ubuntu. In my opinion, having VLC player is productive because you install it once and then forget it and any other codec-not-found woes ;-)
screenshot-monsters_incmp4-vlc-media-player

Installation:

sudo apt-get install vlc

Usage:
Once installed, it is accessible from Applications->Sound and Video->VL Media Player

Link:
http://www.videolan.org/

So there, I have reached the end of my list. I hope installing these applications proves to be a real productivity booster for you just as it has been for me. If you enjoyed reading this post or it proved useful to you, then I would love to hear more from you. Leave a comment/question/suggestion/whatever for me to read on my blog.

So much for this time, see ya around!

admin Linux, Tech, Ubuntu , , , ,