© Manish Jain 2018
Manish JainBeginning Modern Unix https://doi.org/10.1007/978-1-4842-3528-7_7

7. The Best of the Graphical Unix

Manish Jain1 
(1)
Jaipur, Rajasthan, India
 

Not to run afoul of Darwin’s theory of survival of the fittest, nerds needed to evolve and adapt—which is just what has happened. In the 1970s and 80s, nerds used the keyboard. Nowadays most of them can also use the mouse.

As a well-architectured operating system with immense flexibility and stability, Unix has always been iconic for its role as a server. But that was not going to be enough for the 21st Century, when it had to reach out to the masses with an interface that was, in its ease of use, a match for the brilliant underlying systems-level programming. If there is one thing that today unites all of Unix and GNU’s Not Unix, it would the graphics system: X or X.org. The X window system is what makes Unix user-friendly.

X is almost entirely a user-space system. The only bits that get hosted in kernel-space are the drivers: for the graphics chip and for console devices.

7.1 X Is a Client-Server System

People sometimes get dazzled with the use of terms like client and server, mistaking them as highly technical jargon of the geek world. But that is not true.

A server is just some computer program that can act as a servant (the not-so-insulting term is daemon). A client is a computer program that asks the server to do a job for it. The requested job must be of a kind the server is known to be capable of; otherwise, the situation becomes akin to asking the laundry-man to cook your food.

The term server, as is usually clear from the context, can mean one of two things: the computer program (service) running as a daemon, or the computer hosting the concerned service. Likewise for client. That situation is akin to using “laundry” to refer to the dirty-linen-washing service, or to refer to the honorable establishment that washes your dirty linen (in other words, hosts the dirty-linen-washing service).

If you ask Thunderbird to pop off all your Hotmail email, you are using Thunderbird as an email client to collect mail from the Hotmail machine (server) that runs multiple services—collecting your email; storing the email as long as needed; and then relaying the email to Thunderbird. The club of all those associated services running together is designated the Hotmail server.

You might at this stage like to note a couple of things:
  • The address of the Hotmail machine (or any server) must be known in advance and must remain static. Otherwise, the client has no way of contacting the server.

  • There is no such thing as a machine that’s a 100% forever-and-pure server. If a machine is set up to be a mail server, there might be other jobs (e.g., printing) it needs some other machine to do for it. So the mail server could itself be the client of a print server, which might in turn be the client of a database server.

When the X window system (in short, X or X.org) was created, there were two options for its architecture. One was the model Microsoft used later in Windows—a kernel-level graphics subsystem that applications could use via an API (Application Programming Interface). Since Unix has been increasingly modular in its implementation—particularly since the time around 1990 when GNU took over the mantle from AT&T—a client-server model was deemed more suitable for a GNU implementation. The client-server model also fits in well with the need for distributed computing, which was a rage in the days when the architecture of X was being sculpted.

In the X system, the X server listens to some reserved sockets. Applications communicate with the X server over those sockets. This framework allows the X server to run on one machine, and X clients to run anywhere on the intranet. That does not often happen, but is possible with the architecture—actually, during the 80s and 90s, it was regular for companies to run the X server on one machine, with X clients hooked in via the intranet.

You might have already noticed that your Unix shell, when in X mode, exports a variable $DISPLAY, the value of which often is :0. That simply is a shorthand for 127.0.0.1:0.0—in TCP/IP networking, 127.0.0.1 is always your local host and 0:0 is the socket. If X applications on your system were to need services of a remote X server, it would be a simple matter of fixing the IP address.

7.2 Desktop Environments

Although there is only one X server (which earlier went under the moniker XFree86), there is a plethora of desktop environments to choose from. Each of them is a collection of sub-services that tell the X server, for example, how to treat your keyboard or mouse input; what fonts to use where; what should window buttons (such as Close and Maximize) look like; and many other such things: menus, panels, wallpaper, widget style, and window background color.

The two desktops that have been around the longest are GNOME and KDE, both of them have about two decades in the business. Some other good desktops have emerged of late: Xfce, Cinnamon, and Mate. The last two are GNOME forks. GNOME itself has been struggling of late with issues that seem perpetual.

For completeness and sheer number of features, KDE would be hard to beat. Among GNU desktops, KDE also happens to resemble most closely the Windows 2000/XP interface, and further happens to be my preferred desktop—which will inevitably taint some of the remaining discussion in this chapter. KDE is resource-intensive—you should have at least a 2GHz processor and 4GB of RAM for a smooth desktop experience. On the plus side, KDE is bug-free—my grandmother says so.

No discussion of current Unix desktops would be complete without a peek at the beautiful as well as functional Cinnamon desktop environment , a Linux Mint specialty.

Figure 7-1 provides a scent of Cinnamon.
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig1_HTML.jpg
Figure 7-1

The Cinnamon desktop environment

If you are relatively new to Unix and have not settled on a desktop, my suggestion would be to first try KDE under FreeBSD, and Cinnamon under Linux.

If you need a leaner desktop, you can dabble with Mate or Xfce—neither of which is as resource-hungry. Beyond that, it would largely be personal preference—Unix gurus are often addicted to tiling window managers, which we’ll take a look at shortly.

Whichever desktop you use, you can rest assured of a few things:
  • You can install and use any of the widely used X applications: Firefox, Chromium, Thunderbird, SMPlayer, XMMS, LibreOffice, and Pidgin.

  • Each desktop environment automatically bundles useful utilities: A file manager, a calculator, a ZIP frontend, and a text editor.

  • You can install any of the utilities of another desktop environment under yours: So a KDE user can install GNOME’s gedit text editor, and a GNOME user can install KDE’s PDF viewer Okular.

The last item in the preceding list perhaps needs a bit of elaboration. Each desktop environment packages basic runtime functionality into a few modules of their own. Under KDE4, for example, those modules are the packages named kdelibs, kde-baseapps, and kde-runtime. With the base packages installed, you can install utilities from that desktop environment. Since modern package managers are clever systems, installing a desktop’s utilities automatically installs its base packages first.

A crucial ingredient in the desktop environment mix is the window manager (wm for short). Each desktop has its own window manager: kwin under KDE, metacity under GNOME, and xfwm under Xfce. The wm is the component of a desktop that manages windows and virtual desktops. It draws a window’s borders and title bars, and provides buttons for common window operations: move, maximize, minimize, and close. While you can largely ignore the wm when using a desktop environment, it is good to know that some window managers can run independently.

7.3 Window Managers

If you have an old PC with limited hardware, you would want to consider running a window manager, not a complete desktop. A window manager has the streamlined task of simply managing how you interact with your application windows without all of the extra bloat of a desktop environment. Window managers are usually quite customizable and—in principle—do one job only: manage your windows, which means they move/resize/close any application windows.

Because the window manager implements a minimalist philosophy, using a window manager lets your old/limited hardware remain speedy and functional. There are quite a few window managers that can work standalone: Awesome, Enlightenment, Fluxbox, and FVWM. They differ a lot in functionality and capabilities—Enlightenment, sized roughly a couple of dozen megabytes, is at one end of the spectrum where it can almost qualify as a desktop environment in its own right; Awesome and Fluxbox weigh in under 1MB each.

Note

A nice Unix utility is scrot, which is a screenshot capture from the command line. scrot -d 5 scr.png will grab the desktop after five seconds in the file scr.png. scrot -d 5 -q 100 scr.png additionally forces 100 % quality (default is 75).

A purely functional, tiling window manager is Awesome , which uses tiles of xterm windows (launched via right-click). The scrot’ed Figure 7-2 is really Awesome.
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig2_HTML.jpg
Figure 7-2

Being functional with Awesome

Each xterm window (four in the northwest section of Figure 7-2) is launched via right-clicking and choosing Open Terminal. The windows are neatly stacked by the Awesome window manager.

You can, of course, use the xterm windows to bring up more applications, the placement of which is not tiled. As you can see in Figure 7-2, I opened three additional windows (deliberately moved to the right, and also resized with mouse right-click-and-drag in the window’s title bar): Chromium, X Calculator, and X Calendar.

Awesome works incredibly well. It’s highly customizable and has a tiny memory footprint. To run Awesome, execute awesome from your normal user account’s ~/.xinitrc:

exec  /path/to/awesome
# If ~/.xinitrc does not exist, first create it with your text editor

With the .xinitrc in place, just run the command startx (as the normal user).

Note

Unix package names are usually (but not strictly always) all lowercase. So the package name for Awesome is awesome.

FreeBSD is working on a BSD-centric desktop Lumina that promises to be the ultimate go-between: a desktop environment with the resource-footprint of a window manager. Lumina is already at the finishing stages, producing the alternate desktop on my box.

In its current state, Lumina is not a full-fledged desktop. It’s more of a window manager with part of the entourage of associated utilities that make up a desktop—some of them available (file manager, for instance); some of them not yet available (keyboard/mouse configuration applet, for instance).

Lumina does furnish a handsome outlook; see Figure 7-3.
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig3_HTML.jpg
Figure 7-3

Lumina: The FreeBSD desktop

The startup script for Lumina is start-lumina-desktop, which you can execute (exec) from ~/.xinitrc as a normal user.

7.4 Starting X and the Desktop Environment

Under Linux, this section is of little use—the installation procedure sets up X and the desktop to be kicked off at boot time. Everything happens automatically thereafter.

Under FreeBSD, you have to manually install the xorg meta-package and then the meta-package for your desktop environment (e.g., kde, gnome3, or xfce).

Each desktop environment installs under /usr/local/bin/ a wrapper script that can be used to launch the desktop.
  • GNOME: /usr/local/bin/gnome-session

  • KDE: /usr/local/bin/startkde

  • Xfce: /usr/local/bin/startxfce

As a normal user (not as root, as a matter of fact), you cannot execute the wrapper script directly. Instead, what you have to do is create a ~/.xinitrc file, which contains just one line:

exec <wrapper>   # <wrapper> is a placeholder for the path of the wrapper script

That done, you can use the command startx to start your desktop. The wrapper will first start the X server in the background, and then your desktop environment which is hooked into the X server.

The root user may decide to start X at boot time automatically. For GNOME and KDE, this is straightforward: just enable the associated and built-in login manager (also known as the display manager) in /etc/rc.conf:

gnome_enable="YES"       # starts GDM
kdm4_enable="YES"       # starts KDM

Desktops that do not have a built-in login manager—Xfce for instance—can use the services of a generic login manager like XDM, SLiM, or LightDM.

Under FreeBSD, most display managers and desktop environments currently need the following services to be enabled as well in /etc/rc.conf:

hald_enable="YES"
dbus_enable="YES"

7.5 Applications in the Desktop Environment

The rest of this chapter is a discussion of commonly used desktop applications. From hereon, the term desktop environment is used to mean whatever graphical environment the reader is using. This could be as big as the KDE desktop environment, or as small as the Awesome window manager. It is assumed that the reader can perform common operations in a graphical environment.

7.5.1 Terminal Emulators

Since console-mode usage of a Unix box allows multiple terminals (which you can open with ../images/459162_1_En_7_Chapter/459162_1_En_7_Figa_HTML.gif and so on), you would dearly like to have them in X sessions too. That is not just possible, it is the de facto norm: Unix programmers typically need X for opening up a large number of terminal emulator windows.

Each desktop environment has a pre-packaged terminal emulator: for example, GNOME has gnome-terminal, KDE has Konsole, and MATE has mate-terminal.

The most generic (i.e., not associated with any desktop environment) X terminal emulator is xterm, which has significantly fewer features and often gets packaged into the base X.org distribution.

All X terminal emulators, including xterm, offer support for colored output. You can customize the colors using the menus (non-xterm emulators), or using command-line arguments with xterm:

xterm -title "Terminal" -bg black -fg grey

To copy text from an xterm window (or any terminal application window), you need to select that text by clicking and dragging it using the mouse’s left button. The text automatically gets copied. You can paste that text later with a middle-click (or wheel-down), into xterm itself or a text editor.

This method of yanking text works in pure console mode too (when there is no X).

Note

All X clients (not just terminal emulators) implement text yanking: copy-by-highlighting (with mouse) and paste-with-middle-click.

Make sure you try out yank-copy and yank-paste in a terminal window (or in a text editor). It is a very useful technique to remember.

Once you have become familiar with yanking, you can take your skills up a notch by remembering additional tricks:
  • Left double-click on a word: the word is selected

  • Left triple-click on a line: the whole line is selected

  • Left single-click on a position, right single-click on another position: the range between those positions is selected, and it can span multiple lines

The yanking procedure is distinct from traditional copy-and-paste, which can be implemented only in non-xterm windows with right-click operations or keyboard shortcuts. Those shortcuts—specific for terminal emulator applications—are as follows:
../images/459162_1_En_7_Chapter/459162_1_En_7_Figb_HTML.png
For other X applications (those that are not terminal emulators), the keyboard shortcuts are the long-respected text manipulation techniques that were (and still are) followed in Microsoft Windows too, and are recapped here for convenient reference:
../images/459162_1_En_7_Chapter/459162_1_En_7_Figc_HTML.png

You might have already guessed that since yanking and traditional copy-and-paste work differently (as well as independently), they use their own separate buffers inside main memory. If you yank-copy, you cannot traditional-paste, and if you traditional-copy, you cannot yank-paste.

7.5.2 Web Browsers

The two most heavily-used web browsers in the GNU world are, quite unsurprisingly, Mozilla Firefox and Google’s Chromium. Both are equally good, but Firefox always seems a touch more stable under Unix.

Whichever of the two you use, do not forget the add-on LastPass. LastPass takes care of the excruciating need to save all your web login credentials (i.e., passwords), and then fill them out when the time arrives, which is about a few dozen times every day. LastPass also has one feature that not many people use or are even aware of—it is a brilliant form-filler, although it takes a bit of time to set it up to work in that role.LastPass also has one feature that not many people use or are even aware of - it is a brilliant form-filler, although it takes a bit of time to set it up to work in that role. Figure 7-4 below shows a LastPass form-fill profile named vb being a) created; b) activated; and c) utilized to fill up a couple of form entries - Contact::Email address and Custom Fields::Password.
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig4_HTML.jpg
Figure 7-4

Using LastPass as form filler

Both Firefox and Chromium have internal sync capabilities that let you save and sync passwords. But if you use LastPass, you have the additional capability to sync from Firefox to Chromium, and the other way round.

LastPass had an associate add-on XMarks, which would let you store and then sync your bookmarks, the heart of the web-browsing experience, with the XMarks server.

Late-breaking news on the XMarks front suggests that add-on is being discontinued, so you have to use your browser’s internal sync functions for syncing bookmarks.

One Firefox nicety is that you can download the .xpi add-on files from the Mozilla website to store them locally. Another nicety is an extension that its rival Chromium lacks—the add-on InformEnter. If you use InformEnter, you likely will soon get hooked to the convenience it offers for filling in forms with just a right-click. Under FreeBSD, you can install InformEnter not as an add-on, but as the package xpi-informenter.

Which brings me to ESR—Extended Service Releases—that Mozilla offers for Firefox. A few Firefox add-ons, for a variety of reasons, are banished from regular releases, one of the condemned ones being InformEnter. To install such add-ons, you need to use the ESR version of Firefox, typically with the key xpinstall.signatures.required set to false in Firefox’s registry, which you can open by typing about:config into the address bar.

Open-source Chromium—which forms the base of the closed-source Chrome browser with some additional, minor features and a different license—is definitely a good choice for folks who use Google Hangouts for video chat. Unlike Firefox, Chromium installs extensions without a restart. You can access your Chromium extensions via the URL chrome://extensions/ and Chromium settings via chrome://settings/.

If neither Firefox nor Chromium suits you, there is Opera, which has a smaller bunch of die-hard fans. Opera does not have the same razzmatazz of themes and add-ons though. But it has good speed and stability. FreeBSD users can additionally install the package opera-linuxplugins, which gets access to natively-Linux plugins, chiefly Adobe Flash and Acrobat Reader.

All the browsers above innately support JavaScript and HTML5 (the latest version of HTML with its own alternative Flash technology), besides a wide variety of multimedia content that can be played in the browser.

7.5.3 Email Clients

Just as a web browser has to understand many protocols (HTTP, HTTPS, and FTP, for example), an email client has to negotiate a couple—one for outgoing emails, one for incoming:
  • SMTP (Simple Mail Transfer Protocol) sends out messages from your email client using a remote server (e.g., Hotmail).

  • POP3 (Post Office Protocol) lets you retrieve your email from a remote server, which typically—but not necessarily—deletes the email that has been popped.

The alternative to POP3+SMTP is IMAP4 (Internet Message Access Protocol), a newer mail protocol that can handle both send and receive functions. Whether using POP3 or IMAP4, the client always hands over outgoing mail to the SMTP server.

The three protocols understood by the email client have to be implemented at the server. So Hotmail is not one, but actually three, servers—SMTP, POP3, and IMAP4. To configure an email account in the client, you must have the SMTP server address and the address for the service you will use to fetch email: POP3 or IMAP4.

It will be good to note the behavior of an IMAP4 account, which quite correctly is given the nickname “remote folders”. The initial folder layout in an IMAP4 account—as shown by the email client—is just a mirror of the layout at the server. Any operations then performed in the email client are actually executed at the server. So if you create a subfolder called JohnDoe in your Inbox and then move all messages from [email protected] to Inbox/JohnDoe/ in your email client, those actions will be executed first at the server.

Among email clients, Mozilla Thunderbird is the leviathan. Like its cousin Firefox, it uses the Mozilla add-ons infrastructure. One such add-on is Lightening, an integrated calendar that often gets bundled into a standard Thunderbird installation.

Thunderbird supports every single standard mail protocol and email function. One particularly useful function is message filtering. If the user chooses to, Thunderbird can set up rule-based filters to move incoming/outgoing messages into some other folder(s), or even trash them. The filters work in automatic as well as manual mode.Figure 7-5 below shows a filter named amazon being setup to move all messages from ship-[email protected] and [email protected] from Inbox to a folder named amazon.
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig5_HTML.jpg
Figure 7-5

Thunderbird mail filters

Thunderbird is not alone in its league, by any means. In fact, there is an equally good full-fledged client that has many devotees both under Unix and Windows: Sylpheed. Like Thunderbird, Sylpheed has its own address book, message filtering support, and can work together with spam/junk markers.

Another full-fledged client is Evolution, which has a clean-looking interface and its own calendar. Among X email programs, Evolution—originally created at Novell—is the oldest one and has a dedicated bunch of followers. When used alongside the evolution-ews package, Evolution can also connect to Microsoft Exchange servers.

There are lightweight email clients too. I would not like to bother with yet another list, but the one lightweight client I do recommend to readers to try is Geary. Among Unix applications I have seen, Geary has the most visually stunning interface.

Geary has much of the functionality of Thunderbird , but nowhere near all: it cannot, for example, filter messages (yet) based on user-defined rules. Since Geary—which has been written in a new programming language Vala—is still relatively an infant, we can expect the infant to cut a tooth every once in a while.

I would be disappointing you if I were to leave you without a peek at the Geary interface. Figure 7-6 provides a glimpse.
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig6_HTML.jpg
Figure 7-6

The Geary email client

Since Geary tries to be lightweight, it relies on the system for external functions like spell-checking. If spell-checking is not working in your Geary installation, your box might be missing one or both of these packages:

en-aspell; en-hunspell

Geary also has a dependency on an external package that does not get installed by itself, gnome-keyring, which stores all your passwords. After installing Geary, it is a good idea to install gnome-keyring too.

7.5.4 Accessing and Downloading Remote Data

For data that lies in FTP or SMB (Samba) shares, you can always use command-line tools. But I often find it more convenient to use graphical tools.

KDE provides the Net Attach tool KNetAttach (under my box it’s /usr/local/lib/kde4/libexec/knetattach) which makes that very simple—and the tool remembers its usage history, complete with logon credentials. Not surprisingly, KNetAttach opens the remote directory in KDE’s file manager Dolphin.

Figure 7-7 is a patchwork screenshot of opening the Heanet FTP directory /pub/cygwin/x86_64/release/ hosted at ftp.heanet.ie (anonymous FTP service) with just a couple of clicks, with KNetAttach and Dolphin working in cahoots.
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig7_HTML.jpg
Figure 7-7

KDE network folder attachment wizard

If a network attachment tool is not available under your desktop environment, it’s not a serious problem—you can open FTP/SMB shares in your web browser too. Browsers understand those protocols.

For downloading large files from the web (via HTTP/HTTPS or FTP), you want to stick with the command-line tool wget. That is supremely reliable, and it offers support for continuing partial downloads. It is the most complete download manager.

Quite a lot of the data that is available for download on the web nowadays is via the BitTorrent protocol.

Downloading via BitTorrent is a two-step process. First you get the .torrent file, which has the description (metadata) of the big file it would download. Once you have the .torrent file, you feed to it a BitTorrent client, which goes ahead and performs the actual download to your box.

We’ll first deal with BitTorrent clients, which there are quite a few. Two of the full-fledged variety are Transmission and qBitTorrent. Both provide support for BitTorrent techniques like DHT (Dynamic Host Tracking) and Magnet links (support for opening .torrent files with a double-click in your X file manager).

Transmission has support for scripting too. This Transmission script writes out a message upon completion of each download and moves the download to the $HOME/tor directory.

#!/bin/sh
DEST=$HOME/tor
# set DEST above to the path of an existing, writeable directory
[ -n "$DEST" ] || { echo "$DEST is null !" 1>&2; exit 1; }
[ -d "$DEST" ] || { echo "$DEST not a directory !" 1>&2; exit 1; }
[ -w "$DEST" ] || { echo "$DEST not writeable !" 1>&2; exit 1; }
echo "From ${TR_TORRENT_DIR}:
Completed    TR_TORRENT_NAME=${TR_TORRENT_NAME} (TR_TORRENT_ID=${TR_TORRENT_ID})" >> $HOME/tor-messages
mv "${TR_TORRENT_NAME}" "$DEST"
exit $?

Save this as posttor.sh. Then set the executable bit for the script with:

chmod +x posttor.sh

In the Transmission window, open the dialog for download preferences (choose Edit ➤ Preferences ➤ Downloading).

Check the box for Call Script When Torrent Is Completed, and then browse to locate posttor.sh.

The following shell variables are filled by Transmission automatically each time the posttor.sh script is invoked:
  • $TR_TORRENT_DIR is the path of the downloads directory in your filesystem.

  • $TR_TORRENT_NAME is the name of the download.

  • $TR_TORRENT_ID is the original serial number allotted to $TR_TORRENT_NAME in your Transmission queue.

If you need to download via BitTorrent on the command line, that is eminently possible and the easiest way to do that is with ctorrent. I will leave command-line BitTorrent download to you to play with, as and when you find the time and the appetite.

An interesting go-between BitTorrent client is the “no X” version of qBitTorrent, called qbittorrent-nox, which is fired up on the command line and then uses a web interface for further interaction with the user.

qbittorrent-nox (issued in a terminal window) runs a web service on the port 8080 accessible as the user admin and the default password adminadmin.

Figure 7-8 shows the terminal interaction on the left, and a web browser window opened at the qBitTorrent admin site on the right, with an ISO download just flagged off.
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig8_HTML.jpg
Figure 7-8

The qBitTorrent web interface

We’ll now take up the question of how to get the .torrent files, which we should have taken up in the first place, but I decided to delay for a good reason. In some countries, downloading via BitTorrent is legally frowned upon and could get you into trouble. If you decide to download via BitTorrent, it is at your own discretion.

We’ll take our torrent download site as Pirate Bay ( www.thepiratebay.org/ ), but you can adjust that as needed.

In most locations, you should be able to open Pirate Bay (or whatever is your download site) in your web browser.

Pirate Bay itself faced a legal (and existential) crisis a few years back in its host country Sweden, until it managed to convince Swedish legal authorities that nothing it was doing contravened Swedish law. But some countries—UK and India, for example—keep in place (on-and-off) legal challenges that prevent you from accessing sites like Pirate Bay in a web browser.

For such locations, you have to use a modified version of Firefox that can circumvent the sniffers. That version is called the Tor browser . You can download Tor at https://www.torproject.org/download/download-easy.html.en .

At the time of this writing, Tor was natively available for Linux, while a FreeBSD port is under development. For the moment and until the port becomes available, FreeBSD users can run a Linux virtual machine that can do the job needed. We’ll broach this subject in-depth in Chapter 9 (Virtualization).

Downloading with Tor is as easy as downloading with your web browser. Tor ultimately is just a portable version of a popular web browser (Firefox). The only problem could be that Magnet links don’t work—which is not such a serious problem. You can simply right-click to copy the location, and then open that location as a download target in your BitTorrent client. Transmission does that automatically once you have copied the URL.

Tor downloads work on a packet-based approach. A large file is typically broken into a large numbers (millions) of packets hosted by multiple hosts on the web (seeds and peers). When you fetch a large file via BitTorrent, it is possible that a few thousand hosts sent you the packets—you as the downloader never control where the packets get picked from.

Using the Tor browser might not be enough to keep the “legal” hounds out of your backyard. Occasionally, you might even need VPN (Virtual Private Networking) to convince others to keep away from prying on your download agenda. Setting up VPN is a fairly technical business, and we will keep it out of the scope of this book.

7.5.5 Playing Multimedia Content

Playing multimedia content is usually not a legal concern—or so we must hope.

Audio waves are best played under X with XMMS, which has—among many other features—a graphic equalizer. Figure 7-9 below bears testimony to those goodies. A couple of good alternatives are Sonata, which uses the MPD (Music Player Daemon) application to play audio, and Audacious, which has a library organization that can be managed with the filesystem.
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig9_HTML.jpg
Figure 7-9

The XMMS audio player

Playing audio files—but not audio+video files—is possible without X too. Still under the XMMS umbrella, you can get the package xmms-curses to play audio files in console mode. There are a few options that I would not like to go ignored: cmus, mp3blaster, and mpg123. That last one even has an equalizer that you can tweak and use in pure text mode. It has a successor too: madplay.

Now onto the video section. All video players under Unix offer the great facility of system-managed codec setup. I have never faced a situation under FreeBSD or Linux where a file could not be played because of a missing-codec issue. Most codecs get installed when the system is set up: gstreamer ffmpeg contains all popular codecs. When you install a video player, the package contains any additional codecs needed.

Video support under GNU has always been remarkably touché.

Still in its early days, Linux scored a direct hit under the Hollywood banner with the smash hit Titanic (1997), which turned the haunting voice of Sissel Kyrkjebo into every lover’s inspiration worldwide and was rendered using Linux. Figure 7-10 freeze-frames the moment.
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig10_HTML.jpg
Figure 7-10

Linux for lovers (Titanic, 1997)

You can read more about the Titanic story at this URL:

http://www.linuxjournal.com/article/2494

As for video players, there is a whole gang of them. We focus on three widely used ones: MPlayer, Videolan (VLC), and Xine.

7.5.5.1 The mplayer Cult

The mplayer application is not really a player. It is a video-rendering engine that’s used by a family of mplayer-based frontends: SMPlayer and GMPlayer.

I use the SMPlayer frontend, which offers support for using other video-rendering engines too, mpv for instance. Using SMPlayer is as easy as it could possibly get—SMPlayer has the simplest user interface (UI) among all video players. If mplayer’s volume is not loud enough for you, try a mixer application like aumix.

Figure 7-11 shows often-used keyboard shortcuts on the left and a snapshot of SMPlayer’s ultra-simplistic UI on the right.
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig11_HTML.jpg
Figure 7-11

Getting across closed-source (Midnight Express, 1978)

7.5.5.2 VideoLAN/VLC

VideoLAN is probably the most complete video player ever developed. It even plays the VOB files in video DVDs with perfect smoothness. An additional nicety is a built-in pre-amplifier, which can jack up the media’s audio volume a fair bit.

While using VideoLAN client is as easy as using any X application, there is one problem users often face: when you set the equalizer bands in VLC to custom values, those settings do not get saved when VLC is shut down. The rest of this subsection deals with making VLC equalizer settings persistent.

The first thing you need to do is open the Equalizer dialog (choose Tools ➤ Effects and Filters). Now tweak the bands to suit your auditory senses. Refer to Figure 7-12.
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig12_HTML.jpg
Figure 7-12

VLC equalizer gains

For simplicity, we have tweaked the custom values to end with .0, which can be ignored. Save the gains in a text file, which—for Figure 7-12—must hold the text: 3 12 0 0 -8 -8 -8 -3 -3 -3 -1.

The left-most number (3 in our tweaked settings) is for the pre-amplifier gain, and the remaining ten correspond to the equalizer bands.

Once you have saved the gains in a text file, close the Equalizer dialog.

Choose Tools ➤ Preferences.

Change the Show Settings layout (bottom-left corner) from Simple to All and THEN Navigate to Audio ➤ Filters and ensure that the box for Equalizer with 10 bands is ticked.

Expand Filters and click on Equalizer. Paste the bands gain settings in the text box to the right of Bands gain (circled in Figure 7-13).
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig13_HTML.jpg
Figure 7-13

VLC bands settings

Finally, click Save at the bottom. The next time you start VideoLAN , your saved settings will be used for equalizer gains.

7.5.5.3 Xine

One of the X applications with a very different look and feel is Xine, the interface of which has become pretty famous in itself as the Xine UI.

Figure 7-14 shows the Xine UI.
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig14_HTML.jpg
Figure 7-14

The widget toolbox that underpins the unique Xine UI

Figure 7-14 is a frame of the ill-fated bus 2525 a few seconds after the last time it stopped at any bus stop. You perhaps already know the movie name.

That screenshot also shows the Xine UI in action. The centerpiece of the Xine UI is the widget-toolbox (shown at the top in the image). You can hide it whenever you don’t need it, and then when you need it again, just right-click and select Show Controls (or press ../images/459162_1_En_7_Chapter/459162_1_En_7_Figd_HTML.gif).

Xine has support for VOB files too: this screenshot was taken with a VOB file.

Besides its UI, Xine flaunts another peculiarity: it is a Unix-only program, not available under Windows.

7.5.6 Paint Programs

Painting under GNU in the early days was performed by three applications still in use: XPaint, XFig, and Gimp. Gimp is the powerhouse that can do anything that any other paint program can do. On the flip side, Gimp has a learning curve of its own.

Perhaps the most widely used paint program today is Pinta, which is a queer fish in the Unix world. Despite being a Unix application, it uses the Microsoft .NET framework for its build. That might make it sound like Pinta runs under Windows only. But the truth is the other way round: Unix has ported the .NET framework too, letting applications that use the .NET framework run as Unix applications. In case you are curious, the ET port to Unix is named Mono.

With FreeBSD, there is yet another kink: Pinta has to run as a Windows application under the Windows emulation subsystem (Wine). This is so because a native port or package for Pinta is not available. We’ll look at Pinta installation under FreeBSD in the next chapter when we set up Wine.

KDE, as always, has a few applications of its own. The two entries relevant to the realm of paint are KolourPaint and Krita, which have pretty much the same capabilities as Pinta.

No discussion about Unix paint programs would be complete without a mention of Inkscape. Inkscape can do everything that other paint programs can do, and a few things that most other paint programs cannot do.

One fairly unique Inkscape ability is to render calligraphic strokes, like the freeform arrows and the glyphs shown in Figure 7-15.
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig15_HTML.jpg
Figure 7-15

Inkscape calligraphic strokes

Another fantastic Inkscape ability is to draw straight lines with arrowheads at either of or both endpoints. See Figure 7-16 for what is often desired.
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig16_HTML.jpg
Figure 7-16

Inkscape arrow-headed lines

Drawing arrow-headed lines is an often-needed skill, and folks keep searching for how to do this on the web. So we’ll take up a small Inkscape exercise specifically for this.
  1. 1.

    Open a new blank document in Inkscape.

     
  2. 2.

    Press ../images/459162_1_En_7_Chapter/459162_1_En_7_Fige_HTML.gif to select the line-drawing tool.

     
  3. 3.

    Click in the document to start a line and drag with the mouse to the right until the ending point. Be careful not to move the mouse at the point of release. Then double-click to tell Inkscape that the line has been finalized. Otherwise, Inkscape will try the extend the curve as a set of connected lines.

     
  4. 4.

    Press ../images/459162_1_En_7_Chapter/459162_1_En_7_Figf_HTML.gif to bring up the Fill-and-Stroke dialog and open the right-most Stroke Style tab.

     
  5. 5.

    Set the line width. For starters, a 2mm thickness should be good enough.

     
  6. 6.

    Click the left Marker drop-down, and select an arrowhead.

     
  7. 7.

    Click the right Marker drop-down, and select an arrowhead.

     

Your arrowhead line is ready. You can save it in any of the popular graphics formats, although Inkscape’s preferred format is Scalable Vector Graphics.

For still more painting, you could try the powerhouse Gimp. That suite has capabilities similar to what you get with Adobe Photoshop under a Mac.

7.5.7 LibreOffice : The New and Better Office

One of the great additions to the Unix world of late has been LibreOffice, the emergence and evolution of which has essentially eclipsed Microsoft’s cash cow.

From a puritan viewpoint, the Office situation is a bit of a riddle. Unix approves just one kind of document for communication, which is the revered plain text. So why exactly has so much effort gone into the creation of LibreOffice?

There are multiple reasons:
  • Folks migrating to Unix from Windows have a fair bit of their old data in formatted text documents created with Microsoft Office. It would be a buzz-killer if they were to lose the ability to open those documents.

  • LibreOffice gives the Unix world a chance to beckon with confidence that we can do better than what Microsoft did, inside Microsoft’s own backyard—and for free. To put the icing on the cake, LibreOffice can open even those old documents that Microsoft Office once created and that Microsoft Office now refuses to open.

  • Typesetting documents with LaTex can be too much of an ask when you need to quickly create something as trivial as a one-page letter or report.

So while your ultimate goal for future would be plain-text-only (with formatted text restricted to PDF rendered with LaTex), you can take your time adapting to the Unix way of life with the ease of opening old Office documents with LibreOffice.

I will generally presume that you can work with Office and therefore LibreOffice applications. But there is one tool that Office users often ignore: macros for repetitive tasks. LibreOffice Writer has great support for macros that work in pretty much the same spirit we saw in Chapter 1 with the Vim and Joe text editors.

One fantastic utility that comes with LibreOffice is unoconv. This utility is a Swiss Army knife for dealing with Microsoft Word and LibreOffice Writer documents on the command line. It can freely convert among all supported formats—DOC[X], RTF, ODT, PDF, and TXT. You need to install unoconv separately once LibreOffice itself has been installed.

LibreOffice is not just the writer application—Calc is the spreadsheet solution; Base is the database application; Impress is for presentation slides; and Draw is a very handy paint program. That I suppose is pretty much all that you could ask of a full-fledged Office suite.

I would like to note about LibreOffice Draw that it has the very useful add-on ability of being able to spell check a PDF document. It can also, like Inkscape, draw arrowhead lines, with significantly less fuss too.

7.5.8 PDF Viewers

In the Unix world, the standard document type for formatted text is the Portable Document Format, engineered principally at Adobe Systems. Microsoft’s DOC ideas are seriously frowned upon—with good reason. While you can continue to use Office or LibreOffice products as you transition fully to Unix, your final aim should be to whittle down to just two document types:
  • Plain text. This is what you want to use 99% of the time.

  • PDF. This is what you use when working on a professional publication. This is also increasingly becoming the default format expected to be fed to the printer for any printouts.

Although there are quite a few PDF viewer programs under Unix now, the only ones I can readily recommend to the reader are Xpdf and Okular, a KDE application that can work under any desktop environment.

Okular is a complete PDF viewer with an interface that is easy-to-use and highly functional. A couple of useful Okular features are:
  • Bookmarks: These let you navigate a large PDF file with ease.

  • Review mode: The Review mode is Okular’s ability to to annotate a PDF. So if you want to quickly insert a comment in the PDF somewhere, use the Review mode, triggered by
    ../images/459162_1_En_7_Chapter/459162_1_En_7_Figh_HTML.png
    .

There are a couple of features as yet missing in Okular.

One is a hook into the spell checker. To spell check a PDF, you can use LibreOffice Draw—which was noted in the previous section.

Another function not yet implemented in Okular is comparing two PDF documents. That job can be done by DiffPDF (diffpdf), a handy utility that you can read about at http://www.qtrac.eu/diffpdf-foss.html . While that URL indicates that diffpdf has been superseded by a commercial version, it happily continues to be available as a port under FreeBSD (/usr/ports/graphics/diffpdf).

An associate PDF viewer is Xpdf, which is blazing fast and thus can be used for slideshows, and which comes with the utility pdftotext for converting PDF to plain text. Xpdf shares a fantastic feature with Okular—both applications can pick up any changes in the background (triggered, for example, by recompiling LaTex sources) and reload a PDF file in real time with no user intervention.

7.5.9 PDF Creation

The other half of the PDF story is how to create a PDF. For quick PDF generation, LibreOffice Writer is a good solution.

For professional publications that need proper typesetting, you will need a more elaborate setup, with LaTex in the backend. One cog in the LaTex wheel is pdflatex, which can use the LaTex engine to compile a PDF on-the-fly. Although LaTex is not difficult to learn or use, it has a stiff learning curve—but then online documentation is available in the tons, and is always accessible easily through your best friend, Google.

The next battle in the PDF realm might be encryption and decryption with a password. There are quite a few of tools that do the job: mupdf, pdftk, and qpdf.

qpdf is more widely available, and probably is a touch easier to use. So that’s what we will document.

To encrypt with the password abc123 and 128-bit strength, you can use:

qpdf --encrypt --options "abc123" 128 -- input.pdf encrypted.pdf

The user who receives the encrypted PDF can decrypt:

qpdf --password="abc123" --decrypt encrypted.pdf output.pdf

Essentially, the file input.pdf at the sender’s end becomes output.pdf at the end of the receiver.

There are still more PDF tools. You might like to extract the images in a PDF—which is done with pdfimages, a part of the poppler-utils package on my system. Then someday sooner or later, you would feel like grepping for some text in your PDF files. A pdfgrep is available.

This seems to be going overboard, but there is something in the nature of sed too: PDFedit. I should warn you that this tool is highly rough at the edges: it may do a good job, or it may do a bad job, or it may fail entirely, or it may just core dump. This application is not a command but a bunch of them, a few of them mentioned here:

add_image
add_text
replace_text

For example, to replace the text abc with xyz in myfile.pdf, you can use:

replace_text --file=myfile.pdf --what=abc --with=xyz

If it works for you, that’s your good luck.

7.5.10 CD/DVD Writing Frontends

I usually prefer to do things from the command line. But for burning stuff to CDs and DVDs, my preference is the other way round—do it from a graphical frontend, at least when one is available.

CD/DVD writing frontends afford a happy convenience: verifying that the optical medium was burnt correctly. This, for some reason, is not possible with the cdrecord command as yet.

The two chief CD/DVD writing frontends are Brasero and K3b. I will focus on K3b, the KDE application that comes with my desktop.

K3b can burn audio CDs and data CD/DVDs. When used to write data, K3b becomes your frontend not just to cdrecord, but mkisofs too. This adds to the convenience. You can simply open a new data project and drag-and-drop data to be burnt into the compilation.

When you burn the CD/DVD, you can optionally have verification results delivered to you in a message box.

While Linux sets up K3b to work out of the box, FreeBSD needs the root user to open access to the /dev/cd*, /dev/pass*, and /dev/xpt* device nodes.

This is straightforward.
  1. 1.

    First make sure your normal user account is added to the group operator. For this, you can use this command:

    pw groupmod operator -m <normal>
    # <normal> is a placeholder for your normal user account
     
  2. 2.

    Then append the following lines to /etc/devfs.conf:

    Own   /dev/pass0   root:operator  # % This configuration is for: %
    perm  /dev/pass0   0664           # % CD/DVD drive + 1 hard disk %
                                      # If you have 2 hard-disks,
    Own   /dev/pass1   root:operator  # repeat the 2 lines above to
    perm  /dev/pass1   0664           # add settings for /dev/pass2
    Own   /dev/cd0     root:operator
    perm  /dev/cd0     0664
    Own   /dev/xpt0    root:operator
    perm  /dev/xpt0    0664
     

To get this to work as intended, you can either reboot (preferred, because a system group modification is involved) or restart the devfs service:

/etc/rc.d/devfs restart  -OR-  service  devfs  restart

7.5.11 Internet Messaging and Chat Clients

The easiest-to-use chat application under X is Pidgin. Pidgin works with a variety of protocols, AIM and ICQ included. But the one used most frequently nowadays is XMPP, which hooks up with Google accounts.

To set up an XMPP (Google) chat account under Pidgin, you will likely need to authenticate Pidgin in your Google account settings. For that, you must sign in to your Google account in your web browser and open the account settings. Then you need to enable Pidgin among the applications that can access your account.

The easy way to do that is to attempt to create an account in Pidgin. This would fire up notifications into your Google account settings panel about an application requesting authentication access. You might also get an email from Google about this.

This is how you fill the Pidgin account details.

First initiate addition of an XMPP account.

Then, presuming your Gmail address is [email protected], fill the account details, as shown in Figure 7-17.
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig17_HTML.jpg
Figure 7-17

Pidgin account setup with XMPP

Once you click the Add button, Pidgin would likely report failure. You need to log in to your Google account settings panel and enable Pidgin.

If you cannot find the link for enabling Pidgin access, you can use the hack of turning on Allow Less Secure Apps in your Google account settings—this is as per your own discretion.

Once Pidgin has been granted access, you can chat with other Google users in your Buddy List.

Pidgin supports voice and video-chat too, but this is currently limited to the XMPP protocol.

If you need to video-chat with some other protocol, you can try Empathy, which supports a few more protocols like SIP and MSN.

The pinnacle among video-conferencing and video-bridging solutions is perhaps the Java application Jitsi, which supports almost every popular protocol for video-chat.

Using video-chat under FreeBSD requires you to enable the webcamd daemon. As root, you can add this to /etc/rc.conf:

webcamd_enable="YES"

You can then, still as root , start the service immediately:

service webcamd start

7.5.12 Multimedia Editing Software

Multimedia editing under Unix has become increasingly mainstream, but it will be a while before the top Hollywood production houses start trusting Linux as a mainline for video-rendering and soundtrack-recording. There’s a tankful of functionality being served by commercial applications that will first need to be rendered in Linux in toto. Linux still has a lead—FreeBSD is a non-player in those circles as yet.

But you can turn your Unix box into a personal multimedia studio, although this is fairly niche subject and I will have to leave it with just an introductory word.

The two primary applications you can work with are Audacity and Handbrake. Audacity is an audio editor suite while Handbrake is a video encoding application. While both applications are available under all Linux distros as well as FreeBSD, Parrot Linux (Studio) bundles them in the distribution.

I have used both of these programs myself with ease as a novice—Audacity to extract a clip of movie soundtrack and remove noise from the clip, and Handbrake to re-encode a .MP4 file in .AVI format.

I presume that, if you are interested in multimedia editing, the combination of Audacity and Handbrake should give you a good platform for a homemade studio. You might also like to try out Avidemux, a video editor.

One great addition of late to the Unix multimedia family that I must not forget to mention is Blender, one of the most sophisticated animation, 3D modeling, and gaming suites in the business today. Blender is big-and-complex software, with a Python API and with a user manual that you can contribute to online.

Figure 7-18 shows a dazzling screenshot of the Blender interface, with two 3D objects (cubes) created as linked entities.
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig18_HTML.jpg
Figure 7-18

Blender cubes

7.5.13 Fun Stuff: Games and Blogging

Games had traditionally not been a high priority in the Unix world. This is one area where Unix still lags behind Windows. Things are looking up though. Beginning with Windows 8, Microsoft has started losing its foothold in the gaming sector—with Linux increasingly taking command of the center stage. Valve Corporation—the makers of the Steam gaming platform—made it clear that Linux will here onward be a mainstream distribution outlet for its games. It even has created its own Linux distro, aptly named SteamOS.

Among the current genre of games, chess works best. If you are a chess player, you might like to install the XBoard frontend—with many engines available in the backend—crafty, fairymax, and phalanx.Figure 7-19 below uses XBoard analysis and the XBoard-quintessence interface Xaw to step back into 1956, when Robert James (Bobby) Fischer proved he could play chess with the move 17...Be6 in what is fondly remembered as The Game of the Century by everyone, except the unfortunate opponent, David Byrne.
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig19_HTML.jpg
Figure 7-19

Xboard: The Move of the Century

There are a few others, mostly under the GNOME umbrella: Sudoku, Solitaire/Freecell (in the suite AisleRiot), and Minesweeper are the ones I can suggest.

Emlith, Yutaka Emura’s Tetris implementation—sometimes considered the best Tetris game ever created—works like a charm under the 32-bit version of Wine (Windows emulation).

Being a Tetris player myself, I would like to pay homage to Emlith with a screenshot, shown in Figure 7-20.
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig20_HTML.jpg
Figure 7-20

The Tetris game Emlith running under 32-bit Wine

A few shooting games work too: Quake 4, DooM 3, and Jedi Knight. But they often require significant backstage work and often need an emulation layer.

Don’t look for anything much beyond this right now—until Steam actually goes full steam ahead, which luckily is already happening.

As for blogging, there is a cute, little application that has popped up on the radar called Choqok. This buddy can tweet for you, complete with attachment. All you need is a good Twitter handle.

Figure 7-21 is a testimony to Choqok’s talents.
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig21_HTML.jpg
Figure 7-21

Tweeting with Choqok

Not to disappoint you with his (or her?) looks, Choqok comes with an adorable icon reminiscent of Angry Birds: ../images/459162_1_En_7_Chapter/459162_1_En_7_Figg_HTML.gif.

7.5.14 The Question of a Graphical Integrated Development Environment

Everyone fresh into the Unix bloodstream, at some point or other, feels like posing the question of an Integrated Development Environment, much in the lineage of Visual Studio under Microsoft Windows.

Everyone is given the answer: it is not possible under Unix. Because Unix is vast and supremely modular, integrating all necessary tools under a single umbrella is not possible. In fact, for a developer, Unix is the IDE. You can use a text editor of your choice with syntax highlighting support to write your code and compile your code with the right tool: gcc, valac, javac, or perhaps something else.

About the closest thing to what could be called IDE is Geany. Geany supports a plethora of languages—C, C++, Java, Latex, Vala, Go, Haskell, Lua, Lisp, and SQL. It was used to write the LATEX source code for this book.

Geany has buttons to set, and then fire up, the build functions—this works for small projects. When your project grows big, you’ll need to write your own makefile.

A very nice Geany plug-in is the Scope Debugger (which is distinct from the Debugger plug-in). The Scope Debugger lets you set breakpoints and debug from the Geany interface itself—harnessing much of the power of the Visual Studio IDE.

Unfortunately, at the time of this writing, because of a bug in the glib library, using Scope freezes Geany. But a workaround is reportedly ready for shipment soon.

Figure 7-22 is an image of Geany with the Scope plugin in action. This is an image of Geany plus Scope working on wget's C code—contributed by Scope’s maintainer, Dimitar Zhekov, who had a version of glib that still works with Scope.
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig22_HTML.jpg
Figure 7-22

Using the Scope Debugger in Geany

You can hope the glib-bug problem has been solved by the time you are reading this, and that you can use Geany and its Scope Debugger plug-in readily.

For full-fledged debugging, you would like to be conversant with the command-line tool gdb. The gdb debugger has an X frontend that works very well——it’s called DDD (Data Display Debugger).

Figure 7-23 is a screenshot of ddd breaking into a block of C++ code.
../images/459162_1_En_7_Chapter/459162_1_En_7_Fig23_HTML.jpg
Figure 7-23

Debugging with ddd

Ultimately, you must remember that Unix development is a command-line process. The text editor and the shell are what you need to develop, not an all-serving powerbroker that mistakenly goes under the brand name IDE. Any X interface you get is actually a frontend for what can be done on the command line.

7.6 Summary

There was a time when there was a bedeviling dearth of applications under Unix. Programmers preferred to develop applications for DOS and its successor, Windows, which had a wider outreach among users.

Ever since the mantle passed from AT&T to GNU (which broke away from the spirit of commercial Unix with its crafty and recursive acronym—GNU’s Not Unix), that scenario has been changing for the better. For any serious application development nowadays, the platform of first choice for the programming community is either Linux or FreeBSD.

The only applications nowadays available under Windows are those that are ported from the world of Unix. And that story will continue.

To make it easier for programmers to develop graphical applications under Unix, a whole—and very impressive—range of toolkits is now available, most prominently GTK and Qt. Transmission, the BitTorrent client, is a GTK application, while HPLIP (the HP Linux Imaging and Printing suite) has been created with Qt. Actually, the whole of GNOME is GTK, and the whole of KDE is Qt.

A new set of programming languages (Vala for instance) have emerged too. These languages make it very easy to develop X applications. We will write some rudimentary GUI applications with Vala in the final chapter of this book.

In short, the graphical outlook of Unix has never been any better than it is right now—and it will get even better in the days to come.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.218.137.93