I’ve used Ubuntu as my main OS since November of 2007. All of my M.S. and Ph.D. research and almost all of my programming experience has happened in Ubuntu. I do all of my video editing and nearly all of my photo editing in Ubuntu, as well. I rarely need to use Microsoft Windows, but when I do, I run it inside of a virtual machine in Ubuntu.

Many people dislike Ubuntu nowadays because of the Unity interface and various other reasons (e.g., Mir), but I am still rather happy with it—even after evaluating several alternative Linux-based operating systems (Note: Linux Mint 17 is a strong competetor). I thought that it might be helpful to share some details of the software that I use and a few of the settings that I change when I install Ubuntu. This entry primarily covers GUI software, however a few command-line tools are mentioned. I’ll update this periodically as my preferences change (and as I learn new things). If you have any suggestions, please let me know.

Synaptic

I begin by installing the Synaptic Package Manager because it is faster and allows more flexibility than the Ubuntu Software Center.

$ sudo apt-get install synaptic $ sudo apt-get install synaptic

Customizing Unity

I remove most of the “lenses” for the Unity dash. This can be done in Synaptic by searching for “unity” or by typing

$ sudo apt-get remove unity-lens- $ sudo apt-get remove unity-lens-

and then pressing the [TAB] key. This will show a list of installed lenses. I only keep unity-lens-applications, unity-lens-files, and unity-lens-gwibber on my current workstation.

I then install a few programs to customize the appearance and behavior of the Unity interface: Unsettings, Ubuntu Tweak, and CompizConfig Settings Manager. The latter is installed using

sudo apt-get install compizconfig-settings-manager sudo apt-get install compizconfig-settings-manager

The other programs are installed from either a PPA or a .deb package.

Using Compiz Settings, I disable some of the silly animations that are turned on by default. I also enable a few plugins and adjust the Compiz / OpenGL quality and performance settings. Using Ubuntu Tweak, I enable some PPAs and install some software. I also set up some “hot corners” to automatically perform tasks when the cursor moves to the corner of the screen, as shown in the video, below (there is no audio in the following video).

This can take a while to get used to, but I like the ability to quickly navigate through my workspaces and my open windows with just a motion of the mouse.

Convenience Software

I use a few tools that make the computer easier for me to use. Some of these should probably be installed by default, but oh well…

Open Terminal

I add an “open terminal here” option to Nautilus:

$ sudo apt-get install nautilus-open-terminal $ sudo apt-get install nautilus-open-terminal

I also add other useful Nautilus extensions that start with “nautilus-,” but this is the most useful one, overall.

Clipboard Manager

A clipboard manager is extremely useful. The best one that I am aware of is Diodon. Others have had more success with ClipIt.

$ sudo apt-get install diodon $ sudo apt-get install diodon

or

$ sudo apt-get install clipit $ sudo apt-get install clipit

System Monitor

I keep a system monitor in the upper panel and configure it to display the CPU, RAM, network, and disk usage / transfers: System Load Indicator.

$ sudo apt-add-repository ppa:indicator-multiload/stable-daily $ sudo apt-get update $ sudo apt-get install indicator-multiload $ sudo apt-add-repository ppa:indicator-multiload/stable-daily $ sudo apt-get update $ sudo apt-get install indicator-multiload

Hardware Monitor

Hardware temperatures are displayed near the system load indicator, using Hardware Sensors Indicator.

Caffeine

When watching videos in a web browser, Ubuntu doesn’t automatically disable the screensaver or the power-saving feature that causes the monitor to turn off. This can be very annoying. Caffeine can detect some videos and automatically prevent the screen from turning black in the middle of a video. For videos that are not recognized, a click on the Caffeine icon at the top of the screen can prevent the monitor from going to sleep Newer versions do not support this feature (all full-screen videos will automatically trigger Caffeine) .

Note-taking software

There are many note-taking programs for Linux. I currently use Zim Wiki, which has a huge number of features, but an ugly user interface. I will continue to evaluate alternatives. For instance, Basket, Springseed, RedNotebook, NixNote, and Everpad seem interesting.

Photography

There are many applications for organizing and editing photos, but the best RAW image editor by far is LightZone, although UFRaw is better in some situations (e.g., when you want to subract a dark frame or correct for lens distortion).

Once the photos are “developed” and saved as TIFFs, I use GIMP to finish them off. I also use ImageMagick to do batch processing. Adobe Photoshop is rarely needed. However, the main reason I have a Windows virtual machine is because I need it for running a modern version of Photoshop a few times per year. Some older versions of Photoshop work well with Wine.

Videography

There is finally a professional-quality non-linear video editor that works natively in Linux! LightWorks may not be free, but it is a true professional editor. There are several other video editors for Linux (notably Kdenlive), but LightWorks is currently the best.

The user interface is not exactly intuitive, but after watching the tutorials on the LightWorks website, you will be able to edit videos very efficiently. In addition to the GUI-based tools, I use FFmpeg and melt (MLT) for command-line (and scripted) video editing.

There is no free software for Linux that can exactly replace Adobe After Effects, but Blender can do a decent job of compositing. Blender is primarily a high quality 3D rendering and animation application with the ability to do compositing and non-linear video editing. It is also scriptable using Python.

With a little coding effort, you can write software to do special-purpose compositing work that you need, but if you want a professional tool and you are willing to pay, there is always NUKE, by The Foundary.

Vector Graphics

I primarily use InkScape for creating and editing vector graphics. It’s a very capable editor.

Audio Capture and Editing

The best free audio recording and editing programs that I know of are Ardour and Audacity.

Screencasting

For recording the screen, I’ve had the most success with SimpleScreenRecorder. For monitoring the keys and mouse buttons that are pressed during screencasting, the best solution that I know of is key-mon.

Text Editors

There are probably hundreds of text editors for GNU/Linux. I always make sure that Vim is installed, for command line editing,

sudo apt-get install vim sudo apt-get install vim

IDEs

but when working in the GUI, Sublime Text is currently my favorite. Unfortunately, it’s not free (in any sense of the word). WebUpdate has PPAs for versions 2 and 3

When writing code, all you really need is a text editor, but it’s nice to have tools that are designed for the language and framework that you are using. Here are my current favorite IDEs:

For C and C++: Qt Creator and CLion

For Python: PyCharm

For JavaScript: WebStorm

For $$\rm\LaTeX$$: I am trying to choose between Kile and TeXMaker. I currently use Kile more, but that could change.

Mathematics

I currently use wxMaxima as my primary computer algebra system. It does not have as many features as the commercial alternatives, but it has been able to perform all of the tasks that I have asked it to perform.

Office Tools

I don’t need to use a traditional office suite very often, but when I do, I use the standard LibreOffice suite that comes with Ubuntu. The tool that I use most often is the spreadsheet.

Rather than using a word processor, I typically use $$\rm\LaTeX$$ or $$\rm Xe\LaTeX$$ to create documents. When I want to do something very quickly, I often use the LyX document processor instead of writing $$\rm\LaTeX$$ manually. On rare occasions when I use LibreOffice Writer, I will use the TexMaths plugin for math rendering, instead of using the standard equation editor because the quality is superior and it’s easier to just remember one math typesetting syntax.

The desktop publishing application, Scribus, can do more advanced work than LibreOffice Writer and it is easier than $$\rm\LaTeX$$ in many situations where appearance matters as much as content. Scribus allows the user to embed $$\rm\LaTeX$$ documents, which comes in handy if you want to include equations in a document. I haven’t used Scribus for anything, but I may re-implement my résumé with it eventually.

Non-GUI Tools

I install about a hundred non-gui tools that are not part of the standard installation. The most important ones that I can think of that have not already been mentioned are: ssh, rsync, gawk, and git (note: the ssh client may be installed by default, but the server is not).

sudo apt-get install openssh-* rsync gawk git-all sudo apt-get install openssh-* rsync gawk git-all

If pgrep and wget aren’t installed by default, they should also be added to that list.

Web Browsers

I use the latest versions of Mozilla Firefox and Google Chrome with a few extensions. AdBlock Plus is always the first extension that I install.

Video Players

As far as I know, VLC is the best video player available, in terms of the number of features it offers, but it tends to be a bit buggy. If you have an nVidia graphics card, mpv offers a much better experience. XBMC is also formidable, but it is better-suited for a media center PC than a regular desktop or laptop. MLT’s command line tool, melt, is also useful for viewing videos frame-by-frame or at different speeds, forward and in reverse.

Communication

Communications software has been shifting to web-based and web browser extension-based solutions for the past few years, so fewer people are using separate software applications to handle communications. Having said that, communications clients do still exist, so here’s a summary of what I know: Canonical has chosen the best e-mail client available; Mozilla Thunderbird is installed by default, so there’s no problem there. The Linux version of Skype worked very well the last time I used it, so that’s also a good option. The Empathy instant messaging client was also decent the last time I tried it, but that has been a while. I haven’t used instant messaging other than the messaging on Facebook for several years, so I cannot comment on the current status of the software. A few years ago, Pidgin was better than Empathy, but things may have changed.

An Administrative Tip

You can make a list of all packages that are installed on your system, using the command

$ dpkg --get-selections | grep -v deinstall > output-file $ dpkg --get-selections | grep -v deinstall > output-file

The output file then contains one line for each package that is installed. For example,

acpi-support install acpid install adduser install alsa-base install alsa-utils install anacron install . . . . . . zim install zip install zlib1g:amd64 install zlib1g:i386 install zlib1g-dev:amd64 install acpi-support install acpid install adduser install alsa-base install alsa-utils install anacron install . . . . . . zim install zip install zlib1g:amd64 install zlib1g:i386 install zlib1g-dev:amd64 install

This is a great way to document the software that is currently installed on your system, but it’s also possible to use the output like this:

$ sudo dpkg --set-selections < output-file $ sudo dpkg --set-selections < output-file

This sets all selections so you can install all of the software on a different machine or on the same machine after doing fresh install of Ubuntu. All of your PPAs have to be enabled before running this command, of course. You can go one step further by identifying the differences between your customized system and a default installation. Suppose ‘custom’ is the list of packages on your customized system and ‘default’ is the list from a freshly-installed Ubuntu system. Then, the difference between the two is:

$ diff --suppress-common-lines custom default | awk '/</ {print $2, $3;}' > difference $ diff --suppress-common-lines custom default | awk '/</ {print $2, $3;}' > difference

Then you simply use the difference file instead of the full list when setting the selections. If you try to use this to upgrade to a newer version of the operating system, you should probably read through the file carefully.