Tips and Tricks About Computers, Web Development, Linux, the Internet and the Like
Ubuntu
Make Screencasts in Ubuntu with gtk-recordmydesktop
May 30th
Yeah, the name sounds cliche but man oh man is this app slick. Compared to some of the others I tried, this one _just_worked_ and had the options I needed, plus more.
sudo apt-get install gtk-recordmydesktop
You can select a specific window or an arbitrary area and it compresses to ogv automatically.
Here’s a quick video I recorded in seconds — http://z.nexuizninjaz.com/videos/nst.ogv
A (darker) brown theme for ubuntuforums.org
May 22nd
Because I use a dark theme for GTK, I’ve been working on a darker theme for the ubuntu forums using Stylish. It’s not complete but certainly usable. If you’d like to try it out, you can install the theme (after you install stylish) by going to the userstyle page.
Inspecting GTK dialogs with Parasite
May 20th
Parasite is a program much like Firebug, except this is for GTK based applications.
By opening a program with parasite enabled, you can literally click elements of the GUI to reveal their properties.
The installation is pretty simple, open a terminal, clone the git repo, compile install and run. I like to make a folder for software I checkout from SVN or Git in my home dir so I don’t get things all messy. You need git to clone, so if you don’t have it installed already:
$ sudo apt-get install git-core
Clone it:
$ mkdir ~/git_software && cd ~/git_software && git clone git://github.com/chipx86/gtkparasite
Compile and install it:
$ ./autogen.sh && make && sudo make install
I run 64bit, so I had to do the following command to get things working:
$ sudo cp /usr/local/lib/gtk-2.0 /usr/lib64/ -r
Try it out (prefix an application name with GTK_MODULES=gtkparasite):
$ GTK_MODULES=gtkparasite gedit
deluge torrent – sort of like uTorrent for Linux
May 12th
When I first switched to Linux, I was running a lot of things in WINE because I was having trouble finding good linux alternatives for a few programs I use every day. Many programs weren’t a problem because they were designed (or redesigned) to be open-source and cross-platform. Those of you who have been following along have seen me recommend some applications as I made the switch but for the record, here’s a quick breakdown.
Cross platform applications that didn’t effect my switch to linux:
Web browsing: Firefox
Email: Thunderbird
(S)FTP: Filezilla
Web browsing: Opera (used for testing)
Applications I used on Windows and their alternatives I’ve found for Linux:
Text Editing: – Notepad++ | Geany
IRC: mIRC | Konversation (tried kvirc for a while but it’s too buggy)
Music: MusikCube | Amarok 1.4 / Exaile
The other programs I use are either minuscule or obvious (e.g. AIM to pidgin).
Today I’d like to share with you another great application that has replaced uTorrent (which I ran in WINE for a while and disliked), Deluge. What I love about deluge is that it is a native application with an interface that looks and behaves much like uTorrent does. Right click open folder in uTorrent in WINE is very face palm because it would try to open it in the stripped down windows explorer type thing :shudder:.
Anyway… I started using deluge at version 0.5 or so and since then it’s had a major code rewrite and feels more solid and (appears it) is now more extendible. Below is a screenshot of how nice it looks.
It even has a web-ui (if you install the package). You need to run this manually with the following command:
deluge -u web
The only thing it’s missing (that it had in earlier versions) is a good RSS plugin. There are some “solutions” like the FlexRSS plugin or Feeder (web ui only; good luck, have fun with installing that) but they are inferior to uTorrent. However, that is not enough to send me away and I highly recommend this as a Linux torrent client.
To install the latest version in Ubuntu 9.04 Jaunty Jackalope, I added the following PPA to my software sources >> https://launchpad.net/~deluge-team/+archive/ppa
Liquid Rescaling images – A truly mind-blowing plugin for GIMP
May 2nd
I’ve been using a lot of GIMP since switching to Linux because while Photoshop inside WINE is fast, it’s buggy and opening up a virtual machine just isn’t worth the time for a small edit. I’ve been getting used to the differences and with the latest release of 2.6.6 (packaged with Ubuntu 9.04, Jaunty Jackalope) it’s really starting to come together.
Looking to get the most power out of this application, I headed over to this messy repository that is the official plugin registry. Doing a quick breeze through to see if anything caught my eye, it quickly did with this page about Liquid Rescaling. The picture was enough to catch my attention but the video below dropped my jaw.
Looking to learn more, I went to the official page to learn more. On the download page, I found out that it’s included in the Ubuntu repsitories:
sudo apt-get install gimp-plugin-registry
After installing, I went to the help >> plugin browser in gimp and found that it was under the ‘layer’ file menu. I gave it a shot and It really is magic!
Panoramic Sunsets are so much nicer, aren’t they? :-P
NautilusSvn – Finally an SVN GUI for Linux that doesn't totally suck
Apr 28th
Now I know that headline may upset some people but from when I originally switched from Windows as my primary desktop, to up until ~a few months ago, I was at a loss for a decent SVN GUI in Linux. The SVN clients in the [Ubuntu] repositories were unstable, quirky or just total garbage.
The first I tried was Rapid SVN, rated high in the ‘add/remove’ programs dialog. I found this very unstable. Next I tried eSvn which I also found unstable and quirky. Then unto KDE svn which seemed quite stable and solid actually… but unfortunately I use GNOME and this application is (obviously) for KDE, so naturally(?), there were some bugs. In particular the title bars and some other variables were not passing values properly, they would show up as literal %t or what have you. This was a deal breaker for me. Smart SVN came recommended and I agree, it has potential but it seemed to be too much for my simple needs and hell, if I’m going to run a Java application, I might as well switch my IDE to Eclipse and use the plugin for that (which is actually a good interface to SVN).
However, I love my current IDE, Geany and I don’t use SVN strictly for code projects. Some of the Ninjaz and I collaborate in mapping using SVN.
For a while I used svn in the terminal, which is really as minimal as you can get and to a degree, I really enjoy it. It also makes for good practice when I need to do things concerning SVN on a server. However, this is 2009 and I (usually) feel more efficient with a GUI.
In windows, my favorite SVN client was Tortoise SVN, the de facto standard in SVN for windows. After tireless research I finally came across the application I was dreaming for, Nautilus SVN, which is attempting to clone Tortoise SVN for Linux. Written in Python, it integrates itself nicely into Nautilus’ right click (context) menu. When I first started using it, the application was pretty barebones but with the latest release, it has come a long way. Bringing in nice emblems and icons to signify status and accompany menu options, it’s really starting to feel like a solid application.
At version 0.12 beta, it’s obviously got some minor bugs but nothing that stands out… too hard. There is currently an issue with the status checks responsible for the folder emblems that can cause nautilus to temporarily freeze while retrieving information from large repositories but the problem is being addressed, though they’ve hit a few snags along the way.
I talked with one of the developers, Bruce from the Netherlands on their IRC channel, #nautilussvn on irc.freenode.org and feel confident in direction of the project. Bruce is a really nice and informative guy which makes the project all the more interesting to me.
I wish the team the best in the future and I’ll definitely be sticking with this for a while, I suggest other GNOME users check it out as well.
Batch images conversion – color to transparency from the linux terminal
Mar 31st
I’ve been re-theming and old forum and the themes that are available are a little less than perfect for our needs. I found a few suitable templates but it still results in me creating a mash-up. Some of the images (though gif) set the image background color to that of the site background. As I was using a different color, this obviously looked bad but I wasn’t about to manually edit all the files to give them transparency.
Being aware of the amazing command line tool for Linux, ImageMagick, I set out to find a tool to help me. I found a transparency flag, calculated the RGB values with the eyedropper in GIMP, then after a test run, I through it in a for loop.

So a directory down from my image source, I created a folder called “new” and ran the following color and like magic, they were all converted.
for image in *.gif; do convert -transparent 'RGB(48,71,94)' $image ../new/$image; done
Finding files and strings using the terminal in Linux
Feb 4th
My favorite thing about Linux is the terminal. I use it countless times a day to do all sorts of tasks, like managing game servers or writing scripts to do tedious tasks. One of the most popular things I do in the terminal is search for files or strings inside of files and today I’d like to go over a few methods and tricks for doing this. There are three tools that make this task amazingly easy but combining them is where we find the real power. These three tools are locate, find and grep. I will cover the basic use of these tools with some examples and tricks but I suggest you take a look at the man pages for the tools for addition information (i.e. man locate).
locate
Locate has got to be the most straight forward way to search for files. It uses a database so it’s blazing fast when searching your entire computer, compared to the ‘find’ we’ll cover later. It’s not available by default on all Linux distributions (it is on Ubuntu) so you might have to install it. Since I’ll be mentioning fstab later, I’ll give my examples with it.
Basic syntax is: locate [filename]
tyler@quadjutsu:~$ locate fstab /etc/fstab /etc/fstab.orig /etc/fstab.pre-ntfs-config /etc/fstab~ /usr/include/fstab.h /usr/lib/udev/migrate-fstab-to-uuid.sh /usr/share/apps/katepart/syntax/fstab.xml /usr/share/doc/m4/examples/fstab.m4 /usr/share/doc/mount/examples/fstab /usr/share/doc/util-linux/examples/fstab.example2 /usr/share/man/man5/fstab.5.gz /usr/share/pysdm/fstab.py /usr/share/pysdm/fstab.pyc
This database will automatically update itself at various times but to force an update type the following command:
tyler@quadjutsu:~$ sudo updatedb
Folder exclusions can be found (and edited) in /etc/updatedb.conf
By default (at least in ubuntu) /media (your mounted media) is not included in this database. This means if you use extra drives you’ve added to your computer and you want them to be searchable through the locate tool, you’ll have to mount them to a directory like /mnt.
To mount a drive on boot, you’ll need to add a line like the following to your /etc/fstab. The one below mounts an ntfs drive to /mnt/mydrive. That folder must exist for the drive to be mounted.
/dev/sda1 /mnt/mydrive ntfs-3g defaults,locale=en_US.utf8 0 0
I found the /dev/sda1 part by listing my harddrive partitions using the following command:
sudo fdisk -l
find
Find is a little more cryptic than locate but it’s a very powerful tool that should be available on most Linux distributions if not all.
Basic syntax is: find [directory] -name “[string]” -print
Find will search recursively through the folder you’re calling it from. The directory isn’t required but it will show you the full path. A neat trick is to use $(pwd) which creates a string for the “present working directory”. It’s also a good habit to use quotes around your name search because you can’t do regular expressions without it. find does not do matching the same way locate does. You’ll have to specific a wild card (*) for partial searches.
tyler@quadjutsu:~/Desktop$ find -name "notes" -print tyler@quadjutsu:~/Desktop$ find -name "notes*" -print ./notes.txt~ ./notes.txt tyler@quadjutsu:~/Desktop$ find $(pwd) -name "notes*" -print /home/tyler/Desktop/notes.txt~ /home/tyler/Desktop/notes.txt tyler@quadjutsu:~/Desktop$ find -name "no[a-z]*" -print ./notes.txt~ ./notes.txt
My Buddy From Belgium, MrBougo has asked I make note that -iname makes it case insensitive.
grep
In the context of searching, grep is like a pocket knife. It’s great for limiting returned results and searching through files, which are my two most common uses of it, though I’m sure there are a million others. First I’ll cover the searching files for strings portion and in combined tools we’ll discuss how to refine search results.
In terms of searching strings in files, basic syntax is: grep “[string]” [filename]
grep is case sensitive but can be changed to insensitive with -i. You can access extended regular expressions (which allow for such functions as use of the + sign to signify 1 or more characters) by calling “egrep”
tyler@quadjutsu:~$ grep "tyler" resume.txt tyler@detrition.net tyler@quadjutsu:~$ grep "Tyler" resume.txt Tyler J. Mulligan tyler@quadjutsu:~$ grep -i "tyler" resume.txt Tyler J. Mulligan tyler@detrition.net tyler@quadjutsu:~$ grep -i "tyl" resume.txt Tyler J. Mulligan tyler@detrition.net tyler@quadjutsu:~$ egrep -i "tyler [a-z.]+" resume.txt Tyler J. Mulligan tyler@quadjutsu:~$ egrep "tyler [a-z.]+" resume.txt
MrBougo also mentioned that, grep returns a 1 exit status if it doesnt find, so grep “foo” && grep “bar” will only grep for bar when foo is found.
Combining the tools
There are two very important techniques for linking together commands in the terminal. The pipe | and &&. The pipe passes the output of one command to the next, the && runs a command after the one before is complete.
Starting off slow, we’ll refine our search of grep with another grep. Note that you don’t have to use the quotes as I’ve shown below.
tyler@quadjutsu:~$ grep -i "nexuiz" resume.txt
* Web Developer and Interaction Designer for Nexuiz / Alientrap
* Owner and Creator of Nexuiz Ninjaz
tyler@quadjutsu:~$ grep -i "nexuiz" resume.txt |grep -i ninjaz
* Owner and Creator of Nexuiz NinjazNot that you would really want to do the follow commands but to emphasize how | and && work, the following example shows how you’re running the command twice rather than refining a search:
tyler@quadjutsu:~$ grep -i "nexuiz" resume.txt && grep -i "ninjaz" resume.txt
* Web Developer and Interaction Designer for Nexuiz / Alientrap
* Owner and Creator of Nexuiz Ninjaz
* Owner and Creator of Nexuiz Ninjaz
Recalling our first example with fstab, there was a lot of extra results we didn’t want. We know know it was in the etc folder, so we can filter our results by that.
tyler@quadjutsu:~$ locate fstab |grep etc /etc/fstab /etc/fstab.orig /etc/fstab.pre-ntfs-config /etc/fstab~
Another way would be to EXCLUDE folders we don’t want with the -v flag.
tyler@quadjutsu:~$ locate fstab |grep -v usr /etc/fstab /etc/fstab.orig /etc/fstab.pre-ntfs-config /etc/fstab~
And filtering out the junk like so:
tyler@quadjutsu:~$ locate fstab |grep etc |grep -v "~" |grep -v "\." /etc/fstab
~ has a special meaning in the terminal so you must quote it to match it. ~ refers to the user’s home directory, in this case /home/tyler. I’ve also had to escape . because it too has special meaning, in the context of regular expressions, it will match any character… if we’re excluding any character, we’re excluding our results :).
Quick Tricks
Remember commands is sometimes a hard thing to do, especially when it’s a whole string of complicated commands and regexes. Sometimes, I know I don’t have the mind to take notes but that’s okay (for a grace period) because bash keeps track for me. The history command will list all your recently executed commands and utilizing the grep command, we can filter that list.
tyler@quadjutsu:~$ history |grep locate 613 locate fstab 614 locate fstab |grep etc 624 locate fstab |grep etc |grep -v "~" |grep -v "\."
A quick way to search for files in a directory would be to use locate as the path and grep the results
tyler@quadjutsu:~$ locate ~ |grep notes.txt /home/tyler/Desktop/notes.txt
These are the basics of finding files and searching through them. Linux provides many tools to reformat and replace strings. There are a million different ways to combine commands and always a faster way to do it. Keep playing and you’ll just get better and better.












