{"id":913,"date":"2013-11-30T00:00:00","date_gmt":"2013-11-30T06:00:00","guid":{"rendered":"http:\/\/www.alandmoore.com\/blog\/?p=913"},"modified":"2013-11-30T00:16:49","modified_gmt":"2013-11-30T06:16:49","slug":"reviving-your-old-pc-with-linux-part-vi-building-your-own-lightweight-remix","status":"publish","type":"post","link":"https:\/\/alandmoore.com\/blog\/2013\/11\/30\/reviving-your-old-pc-with-linux-part-vi-building-your-own-lightweight-remix\/","title":{"rendered":"Reviving your old PC with Linux, Part VI: Building your own lightweight remix"},"content":{"rendered":"<p> In <a href=\"https:\/\/alandmoore.com\/blog2\/2011\/10\/12\/reviving-your-old-pc-with-linux-part-v-the-remixes\/\">the previous article of this series<\/a>, I covered a variety of &#8220;remix&#8221; distributions of Linux aimed at older computers, and posed the question &#8220;why not build our own&#8221;?  In this article, we&#8217;ll look at doing exactly that. <\/p>\n<p> Our goal will be to set up a basic desktop system, using only the necessary components, such that it will run reasonably well on a roughly ten-year-old computer. <\/p>\n<p><!--more--><\/p>\n<div id=\"outline-container-sec-1\" class=\"outline-2\">\n<h2 id=\"sec-1\">Respin?  We used to call that &#8220;installing&#8221;&#x2026;<\/h2>\n<div class=\"outline-text-2\" id=\"text-1\">\n<p> Yes, &#8220;back in the day&#8221; it was standard practice to install a minimal CLI Linux environment on a computer, then painstakingly build up the rest of the system one piece at a time.  Then along came installation wizards, Live CD&#8217;s, and fully-baked desktops that were ready-to-rock with zero tweaking; and admittedly, this is a great thing. <\/p>\n<p> Distros like Arch Linux have revived the venerable art of building a system from the ground-up; not only is this an educational approach, it&#8217;s also a winning strategy for working with older, slower hardware.  Many distributions are suited to this approach, including Arch, Slackware, Debian, and, yes, even Ubuntu<sup><a id=\"fnr.1\" name=\"fnr.1\" class=\"footref\" href=\"#fn.1\">1<\/a><\/sup>; but to keep things simple and short, we&#8217;ll be building with Debian stable. <\/p>\n<\/p><\/div>\n<\/p><\/div>\n<div id=\"outline-container-sec-2\" class=\"outline-2\">\n<h2 id=\"sec-2\">Following along at home<\/h2>\n<div class=\"outline-text-2\" id=\"text-2\">\n<p> If you&#8217;re following along at home, you&#8217;ll need the following items: <\/p>\n<ul class=\"org-ul\">\n<li>An <b>old computer<\/b>, preferably of late-Pentium III or later vintage, with at least 128 MB of RAM, a &gt;10GB HDD, and a working optical drive. <\/li>\n<li>A wired (ethernet) <b>Internet connection<\/b> with reasonable speed (i.e. not dialup) <\/li>\n<li>A Debian stable (version 7, at the time of writing) <a href=\"http:\/\/www.debian.org\/CD\/http-ftp\/\">installation CD<\/a>.  Either CD #1, the netinstall disc, or the &#8220;business card&#8221; disc will work here. <\/li>\n<li>A general idea of what you want your OS to look like and be capable of. <\/li>\n<li>A passing familiarity with <code>bash<\/code>, any console-based text editor (<code>nano<\/code>, <code>vim<\/code>, <code>emacs<\/code>, etc), and Debian&#8217;s <code>aptitude<\/code> package manager. <\/li>\n<\/ul>\n<p> Got all that?  Good; let&#8217;s get cracking! <\/p>\n<\/p><\/div>\n<\/p><\/div>\n<div id=\"outline-container-sec-3\" class=\"outline-2\">\n<h2 id=\"sec-3\">Let&#8217;s build it!<\/h2>\n<div class=\"outline-text-2\" id=\"text-3\"> <\/div>\n<div id=\"outline-container-sec-3-1\" class=\"outline-3\">\n<h3 id=\"sec-3-1\">Install the base system<\/h3>\n<div class=\"outline-text-3\" id=\"text-3-1\">\n<p> Rehashing the whole Debian install process would be a tedious exercise, especially when a quick search for &#8220;Debian installation&#8221; turns up many text and video resources for those who want some hand-holding.  I&#8217;ll make a couple of notes specific to our goals here, in the order you&#8217;ll encounter them: <\/p>\n<ul class=\"org-ul\">\n<li><b>Disk setup<\/b>: Pick &#8220;manual&#8221; when you get to disk setup, and consider the following:\n<ul class=\"org-ul\">\n<li>If the system&#8217;s HDD is 20 GB or less, don&#8217;t bother with multiple partitions or LVM; one big partition is fine. <\/li>\n<li>If it&#8217;s bigger than 20GB, maybe break it into root (&#8220;\/&#8221;) and <code>\/home<\/code>.  Depending on how much software you plan to install and the drive size, assign 6 to 20 GB to <code>\/<\/code> and the rest to <code>\/home<\/code>. <\/li>\n<li>Of course, you&#8217;ll need a swap partition.  Make it equal to the RAM size, but no more than 1 GB; honestly if the system is swapping more than that, you won&#8217;t want to use it anyway. <\/li>\n<li>Definitely <b>do not encrypt<\/b> your filesystems.  Too much CPU overhead. <\/li>\n<li><b>Ext3<\/b> is a safe choice for the filesystem.  <b>JFS<\/b> or <b>XFS<\/b> might do better<sup><a id=\"fnr.2\" name=\"fnr.2\" class=\"footref\" href=\"#fn.2\">2<\/a><\/sup>.  <b>Ext4<\/b> and <b>BTRFS<\/b> are aimed at modern hardware and really offer no advantage to the dusty old PC. <b>Ext2<\/b> is likely to corrupt if you have a power failure during a disk write (very possible with an old PC). <\/li>\n<li>When setting up your partitions, select &#8220;Mount options&#8221; and add the <code>noatime<\/code> flag to your partition(s) to save overhead on file reads.  If you don&#8217;t set this, the system has to update the access time metadata on files every time you read a file. <\/li>\n<li>Set the boot flag &#8220;on&#8221; for your &#8220;\/&#8221; partition.  Some older hardware requires this. <\/li>\n<\/ul>\n<\/li>\n<li><b>Software Installation<\/b>: When you get to the software installation screen:\n<ul class=\"org-ul\">\n<li>Make sure <b>Debian desktop environment<\/b> is <b>not<\/b> (as in <b>NOT<\/b>) selected.  We want to configure this manually. <\/li>\n<li>If you have a laptop, go ahead and select the <b>laptop<\/b> option. <\/li>\n<li>Un-select <b>print server<\/b> as well.  We&#8217;ll set this up manually if it&#8217;s needed. <\/li>\n<li>Basically, only <b>Standard system utilities<\/b> and possibly <b>laptop<\/b> should be selected. <\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p> When you&#8217;ve finished and rebooted, you should be looking at a terminal login prompt.  Login as root, run <code>aptitude update<\/code>, and let&#8217;s start building this thing! <\/p>\n<\/p><\/div>\n<\/p><\/div>\n<div id=\"outline-container-sec-3-2\" class=\"outline-3\">\n<h3 id=\"sec-3-2\">Sound system<\/h3>\n<div class=\"outline-text-3\" id=\"text-3-2\">\n<p> <b>ALSA<\/b> provides basic sound support for modern Linux systems.  If you want audio on your system, install the <code>alsa-base<\/code> package, which will give you sound card drivers and the basic sound framework.  You should also install the <code>alsa-utils<\/code> package, which provides a selection of command-line utilities for testing and configuring your system&#8217;s sound. <\/p>\n<p> ALSA by itself is probably adequate for a simple desktop that will occasionally play multimedia files; but plain ALSA tends to have trouble when mixing multiple audio sources (e.g., playing system alerts over a movie).  For this reason, you can optionally install a service that sits on top of ALSA and handles mixing sources and other high-level tasks.  Many such systems have come and gone, but <b>PulseAudio<\/b> seems to be the clear front-runner currently. The downside of PulseAudio is that it requires more resources and introduces yet another layer of complexity to the system. <\/p>\n<p> For a lightweight system, I&#8217;d recommend sticking with just ALSA unless you run into problems processing multiple audio sources. <\/p>\n<\/p><\/div>\n<\/p><\/div>\n<div id=\"outline-container-sec-3-3\" class=\"outline-3\">\n<h3 id=\"sec-3-3\">Peripheral support<\/h3>\n<div class=\"outline-text-3\" id=\"text-3-3\"> <\/div>\n<div id=\"outline-container-sec-3-3-1\" class=\"outline-4\">\n<h4 id=\"sec-3-3-1\">Printing<\/h4>\n<div class=\"outline-text-4\" id=\"text-3-3-1\">\n<p> <b>CUPS<\/b> (found, appropriately, in the <code>cups<\/code> package) is pretty much the de-facto standard printing system for modern Linux distros.  It comes at a cost in disk space and system resources, however, so only install it if you actually plan to do printing from your system.  Once installed, CUPS can easily be configured via its browser-based interface that will be running at <a href=\"http:\/\/localhost:631\">http:\/\/localhost:631<\/a>. <\/p>\n<p> Of course, actually configuring a printer will require that you have some drivers: <\/p>\n<ul class=\"org-ul\">\n<li>The <code>foomatic-filters<\/code> and <code>printer-drivers-gutenprint<\/code> packages provide drivers for a wide range of printer hardware <\/li>\n<li>If you have an HP printer, the <code>hplip<\/code> package provides drivers for various laser and inkjet printers. <\/li>\n<li>Some printer manufacturers (e.g. Brother, Canon) require you to install special binary packages to make the printer work.  Consult the manufacturer&#8217;s website<sup><a id=\"fnr.3\" name=\"fnr.3\" class=\"footref\" href=\"#fn.3\">3<\/a><\/sup> or your favorite search engine if you can&#8217;t get your printer working using the distro-provided drivers. <\/li>\n<\/ul>\n<p> If you have minimal printing needs, a postscript printer, and don&#8217;t want the bulk of CUPS, a lighter option is the <code>lpr<\/code> package, which provides the old BSD <b>LPR<\/b> print spooler. <\/p>\n<\/p><\/div>\n<\/p><\/div>\n<div id=\"outline-container-sec-3-3-2\" class=\"outline-4\">\n<h4 id=\"sec-3-3-2\">Scanning<\/h4>\n<div class=\"outline-text-4\" id=\"text-3-3-2\">\n<p> Scanning support on Linux comes from the <b>SANE<\/b> project, which can be installed with the <code>sane<\/code> package.  You&#8217;ll also want <code>sane-utils<\/code> for some command-line troubleshooting utilities and <code>xsane<\/code> for a rudimentary scanning GUI.  SANE is mostly self-configuring and drivers are included by default, so it shouldn&#8217;t require any special configuration if you&#8217;ve got a simple locally-connected (e.g. USB) scanner.  There are a few special cases: <\/p>\n<ul class=\"org-ul\">\n<li>For HP scanners, you might need <code>hplip<\/code> <\/li>\n<li>For other scanners, such as those from Canon or Brother, you may need a proprietary driver from the manufacturer. <\/li>\n<li>For scanners with built-in network scanning capabilities, you may need a special package to work with the scanner&#8217;s custom protocol. <\/li>\n<\/ul><\/div>\n<\/p><\/div>\n<div id=\"outline-container-sec-3-3-3\" class=\"outline-4\">\n<h4 id=\"sec-3-3-3\">WebCams<\/h4>\n<div class=\"outline-text-4\" id=\"text-3-3-3\">\n<p> Webcam support in Linux is pretty good these days, though with a really old PC performance may be choppy and limited to low resolutions.  Depending on what you want to do with your webcam, there are a few applications you might find handy: <\/p>\n<ul class=\"org-ul\">\n<li><code>guvcview<\/code> is a simple GUI for viewing and configuring your webcam. <\/li>\n<li><code>xawtv<\/code> is an even more bare-bones webcam viewer <\/li>\n<li><code>fswebcam<\/code> is a terminal application for grabbing an image from the webcam. <\/li>\n<li><code>motion<\/code> is a service that can turn your webcam into a security camera; it captures images and video whenever motion is detected. <\/li>\n<li>Many graphics\/video-oriented applications (<code>gimp<\/code>, <code>vlc<\/code>, etc) have built-in support for capturing from a webcam. <\/li>\n<\/ul><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div id=\"outline-container-sec-3-4\" class=\"outline-3\">\n<h3 id=\"sec-3-4\">Laptop considerations<\/h3>\n<div class=\"outline-text-3\" id=\"text-3-4\">\n<p> If you&#8217;re building your minimal system for a laptop, there are a few special considerations you&#8217;ll want to deal with.  Of course, these may apply to a desktop system too if you want to save power or use a wireless card. <\/p>\n<p> If you installed the <code>laptop<\/code> metapackage during installation, some (but not all) of these may already be installed. <\/p>\n<\/p><\/div>\n<div id=\"outline-container-sec-3-4-1\" class=\"outline-4\">\n<h4 id=\"sec-3-4-1\">Power management<\/h4>\n<div class=\"outline-text-4\" id=\"text-3-4-1\">\n<p> In theory, installing <code>acpi-support<\/code> and <code>acpid<\/code> on your laptop should work out all those pesky power managment issues like putting the laptop to sleep when you close the lid or turning down the screen brightness when you&#8217;re running on battery<sup><a id=\"fnr.4\" name=\"fnr.4\" class=\"footref\" href=\"#fn.4\">4<\/a><\/sup>.  Big desktop environments usually have built-in tools for setting up your power management, but in a minimal environment, you might want to install these tools: <\/p>\n<ul class=\"org-ul\">\n<li><code>pm-utils<\/code> is a package of command-line utilities for managing power on your system.  Among other things, it lets you suspend or hibernate your lappy from the command line. <\/li>\n<li><code>cpufreqd<\/code> is a service that can control the frequency of your CPU and step it down or up according to rules you define (e.g., &#8220;run at 1\/3 speed when I&#8217;m on battery and less than half charged.&#8221;) <\/li>\n<li><code>powertop<\/code> is a utility for monitoring the OS for big power-wasters.  It offers solutions to your more egregious uses of power, and is quite easy to use. <\/li>\n<li>depending on your laptop or video card model, there are a number of packages in the repository for enabling special keys, brightness control features, etc on specific hardware.  Might be worth a look. <\/li>\n<\/ul><\/div>\n<\/p><\/div>\n<div id=\"outline-container-sec-3-4-2\" class=\"outline-4\">\n<h4 id=\"sec-3-4-2\">Wireless<\/h4>\n<div class=\"outline-text-4\" id=\"text-3-4-2\">\n<p> If your wireless works out of the box with no fiddling, congratulate yourself and go buy a lottery ticket because <i>this is your lucky day!<\/i> <\/p>\n<p> More than likely, your wireless hardware is going to need a non-free firmware package installed before it will work.  Use the <code>lspci<\/code> command to identify the wireless hardware in the laptop; then enable the <b>non-free<\/b> Debian repository, and search for a firmware package for your wireless chipset (many of the more common ones are found in the <code>firmware-linux-nonfree<\/code> package).  If this (and  reboot) doesn&#8217;t do it, consult your favorite Debian forum. <\/p>\n<p> Connecting to wireless via the terminal isn&#8217;t fun<sup><a id=\"fnr.5\" name=\"fnr.5\" class=\"footref\" href=\"#fn.5\">5<\/a><\/sup>, especially if you&#8217;re accessing anything more modern than WEP security (and I sure hope you are).  Fortunately there are a number of minimal graphical tools for connecting to wireless networks that you can incorporate into your minimal environment: <\/p>\n<ul class=\"org-ul\">\n<li><code>network-manager-gtk<\/code> is a tray application that lets you control the NetworkManager service from a snappy little GTK GUI.  This one is my go-to if all else fails, as it pretty much always works.  It does require installing the NetworkManager service, which add complexity and resource usage to the system; but the worst con here is that (in my experience) it has perennial memory leak issues. <\/li>\n<li><code>wicd<\/code> is another option for simple systems.  It works pretty well most of the time, though I don&#8217;t much care for the interface. <\/li>\n<li><code>wifi-radar<\/code> worked well for me &#8220;back in the day&#8221;, and might be a good choice on your system.  I haven&#8217;t used it in a long time, though. <\/li>\n<\/ul><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div id=\"outline-container-sec-3-5\" class=\"outline-3\">\n<h3 id=\"sec-3-5\">The desktop and graphics<\/h3>\n<div class=\"outline-text-3\" id=\"text-3-5\">\n<p> So far, most of our choices have been between including functionality or leaving it out.  When we get to the graphics and desktop level, though, we start to have some real options that can make a considerable impact on the resource requirements, capabilities, and look &amp; feel of our system. <\/p>\n<\/p><\/div>\n<div id=\"outline-container-sec-3-5-1\" class=\"outline-4\">\n<h4 id=\"sec-3-5-1\">X11 server<\/h4>\n<div class=\"outline-text-4\" id=\"text-3-5-1\">\n<p> The X11 server is the low-level graphics system that essentially talks to the hardware and makes it possible to run graphical applications. <\/p>\n<p> <b>Xorg<\/b>, provided by the <code>xorg<\/code> metapackage, is the current default standard for most distributions, and provides fairly robust compatibility  and capabilities across a huge range of hardware.  It&#8217;s also a fairly heavy proposition for a 10+ year-old PC. <\/p>\n<p> A slightly lighter option is the <b>Xfbdev<\/b> X11 server, provided by the <code>xserver-xfbdev<\/code> package.  Getting it to work (especially in Debian) is a little tricky<sup><a id=\"fnr.6\" name=\"fnr.6\" class=\"footref\" href=\"#fn.6\">6<\/a><\/sup>, unfortunately, because it requires that you first enable <b>framebuffer<\/b> support<sup><a id=\"fnr.7\" name=\"fnr.7\" class=\"footref\" href=\"#fn.7\">7<\/a><\/sup> and then do a bit of monkeying around to configure your mouse, monitor, and so forth. <\/p>\n<p> There was once upon a time a project called <b>TinyX<\/b> which made a small, lightweight X server called <b>XVesa<\/b>; it&#8217;s no longer being developed, and not available in Debian, but some super-lightweight distributions still use it.  If you are up for an adventure, and really want to lower your resource usage, you can attempt to locate and compile this for Debian. <\/p>\n<p> Whichever server you use, a simple way to shave a bit of overhead from the graphics system is to lower the screen resolution and color depth.  Consult the xorg.conf man page for details on how to do this. <\/p>\n<\/p><\/div>\n<\/p><\/div>\n<div id=\"outline-container-sec-3-5-2\" class=\"outline-4\">\n<h4 id=\"sec-3-5-2\">Display manager<\/h4>\n<div class=\"outline-text-4\" id=\"text-3-5-2\">\n<p> The display manager has a few jobs on the system, but most of us know it as the program that creates the graphical login screen.  If you want a <i>really<\/i> light system, of course, you can forego the display manager altogether and just run <code>startx<\/code> from the terminal prompt.  For those who want a real login screen, there are a few lightweight options: <\/p>\n<ul class=\"org-ul\">\n<li><b>XDM<\/b> is simple, no-nonsense, feature-free, and ugly as sin.  Still, if all you care about is logging in to a desktop, it does the job, and without a lot of outside depenencies or tedious setup.  XDM is provided by the <code>xdm<\/code> package. <\/li>\n<li><b>WDM<\/b>, or the WINGs Display Manager, improves feature-wise on XDM with niceties like a session menu, actions menu, help.  It still looks a bit like 1998 warmed over, but it&#8217;s light on resources.  The <code>wdm<\/code> package provides this. <\/li>\n<li><b>LightDM<\/b> is a modern, themeable display manager with all the goodies you expect from a modern login screen.  While it was initially designed for use with Ubuntu&#8217;s Unity, it has no desktop-environment-specific dependencies and makes a good DM for any desktop.  The <code>lightdm<\/code> package provides it, and you&#8217;ll also need to choose a greeter package; go with <code>lightdm-gtk-greeter<\/code> as a good default. <\/li>\n<li><b>Slim<\/b> is a no-nonsense display manager with no desktop dependencies.  It&#8217; very popular on a lot of lightweight distros, but was removed from some past Debian releases for unsolvable security issues. <\/li>\n<li><b>NoDM<\/b> is not really a display manager, but a set of configurations that obviate the need for a display manager and take you straight to the desktop.  Use this if you don&#8217;t care about things like security or switching user accounts. <\/li>\n<\/ul>\n<p> <b>KDM<\/b> and <b>GDM<\/b> are the display managers associated with KDE and Gnome, respectively; I don&#8217;t recommend them on a lightweight system simply because they have too many dependencies with their associated desktop environments (neither of which are appropriate for an old PC). <\/p>\n<p> Finally, if you want something between a stark console login and a full-on X11 display manager, <b>qingy<\/b> is a framebuffer-based login that can fire up terminals or X sessions.  Configuring it requires working framebuffer support and a bit of init-system plumbing, but it&#8217;s a nice way to add a bit of sprucing to an old system while keeping startup minimal. <\/p>\n<\/p><\/div>\n<\/p><\/div>\n<div id=\"outline-container-sec-3-5-3\" class=\"outline-4\">\n<h4 id=\"sec-3-5-3\">Desktop environment<\/h4>\n<div class=\"outline-text-4\" id=\"text-3-5-3\">\n<p> And now, perhaps the most important decision:  the desktop environment.  Of course, if we&#8217;re aiming for lightweight, it is all to easy to suggest just installing <code>lxde<\/code> or <code>xfce4<\/code> for a reasonably light, ready-to-run desktop environment<sup><a id=\"fnr.8\" name=\"fnr.8\" class=\"footref\" href=\"#fn.8\">8<\/a><\/sup>.  But as long as we&#8217;re in the DIY groove, let&#8217;s piece together a simple desktop environment from parts. <\/p>\n<p> A desktop environment can contain any number of things, but at minimum we&#8217;ll need (1) a <b>window manager<\/b> to allow moving and resizing of application windows, (2) a <b>launcher<\/b> of some kind for running our software, (3) some kind of <b>task manager<\/b> functionality for viewing and switching between open windows, and possibly (4) a <b>file manager<\/b> to provide us with the capability for desktop icons.  There are any number of combinations of software we can do this with, so here are a few examples: <\/p>\n<\/p><\/div>\n<h5>Example 1: A classic windows-style desktop<\/h5>\n<div class=\"outline-text-5\" id=\"text-3-5-3-1\">\n<p> This desktop configuration hearkens back to the days of DOS-based Windows, and probably looks best on a convex CRT sitting next to a discolored beige box. <\/p>\n<ul class=\"org-ul\">\n<li>Install <code>jwm<\/code> and <code>rox-filer<\/code>.  JWM will provide window management and a panel for program launching and task management.  Rox-filer will give us a file browser as well as desktop icons. <\/li>\n<li>You also need the <code>menu<\/code> package if you want application menus generated automatically. <\/li>\n<li>At the command line, copy the default jwm config file from <code>\/etc\/jwm\/system.jwmrc<\/code> to <code>~\/.jwmrc<\/code>.  Open it in your text editor. <\/li>\n<li>You can edit this file to your heart&#8217;s content, but at minimum make the following adjustments:\n<ul class=\"org-ul\">\n<li>Find the entry for <code>&lt;FocusModel&gt;<\/code>.  Change it from &#8220;sloppy&#8221; to &#8220;click&#8221;. <\/li>\n<li>Find a <code>&lt;StartupCommand&gt;<\/code> entry in the file, and add the following line after it: <\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"org-src-container\">\n<pre class=\"brush: xml; light: true; title: ; notranslate\" title=\"\">\r\n&lt;StartupCommand&gt;rox-filer --pinboard=$USER&lt;\/StartupCommand&gt;\r\n<\/pre>\n<\/p><\/div>\n<p> Now run <code>startx<\/code> (or fire up your display manager and log in to the JWM session) and you&#8217;ll see a rather bland but serviceable desktop. You can, of course, set a desktop background; and with some liberal tweaking of <code>~\/.jwmrc<\/code> you can probably make this a decently attractive desktop which will feel familiar and comfortable to most long-time Windows users. <\/p>\n<div class=\"figure\">\n<p><img decoding=\"async\" src=\"https:\/\/alandmoore.com\/blog2\/wp-content\/uploads\/2013\/11\/wpid-tb-reviving6-desktop1.png\" alt=\"tb-reviving6-desktop1.png\" \/> <\/p>\n<p><span class=\"figure-number\">Figure 1:<\/span> My rather boring windows-esque desktop<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<h5>Example 2: A more modern take on the desktop<\/h5>\n<div class=\"outline-text-5\" id=\"text-3-5-3-2\">\n<p> This desktop will take some inspiration from the Mac desktop, while adding in some elements common to lightweight &#8220;Linux hacker&#8221; setups.  Openbox will manage our windows, while Tint2 will provide task management and WBar will be our main launcher.  PCManFM will draw our desktop icons. <\/p>\n<ul class=\"org-ul\">\n<li>Install <code>openbox<\/code>, <code>pcmanfm<\/code>, <code>wbar<\/code>, <code>tint2<\/code> and of course <code>menu<\/code>.  Note that pcmanfm will install a lot of dependencies, so if you want to keep your installation really small, you can use rox-filer as we did above. <\/li>\n<li>Create the directories <code>~\/.config\/openbox<\/code> and <code>~\/.config\/tint2<\/code>. <\/li>\n<li>Edit the file <code>~\/.config\/openbox\/autostart<\/code> and add the following lines: <\/li>\n<\/ul>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\npcmanfm --desktop &amp;\r\ntint2 &amp;\r\nwbar -above-desk &amp;\r\n<\/pre>\n<ul class=\"org-ul\">\n<li>Create a default tint2 configuration by copying <code>\/etc\/xdg\/tint2\/tint2rc<\/code> to <code>~\/.config\/tint2\/<\/code> <\/li>\n<li>Edit <code>~\/.config\/tint2\/tint2rc<\/code>.\n<ul class=\"org-ul\">\n<li>Look for the parameter &#8220;panel_position&#8221;.  Change &#8220;bottom&#8221; to &#8220;top&#8221;. <\/li>\n<li>Look for the parameter &#8220;wm_menu&#8221;.  Change &#8220;0&#8221; to &#8220;1&#8221;. <\/li>\n<\/ul>\n<\/li>\n<li>Create a default wbar configuration by copying <code>\/usr\/share\/wbar\/dot.wbar<\/code> to <code>~\/.wbar<\/code> <\/li>\n<li>Edit <code>~\/.wbar<\/code>\n<ul class=\"org-ul\">\n<li>As you can see, and hopefully infer from the contents of this file, wbar is statically-configured.  Each set of directives defines an icon that launches a command, with the first set configuring the bar itself. <\/li>\n<li>Right now we don&#8217;t have any applications installed, so none of the default ones will work.  Once you have applications installed, you&#8217;ll want to edit this file to add launchers for your applications to wbar. <\/li>\n<li>In case you can&#8217;t figure it out, &#8220;i:&#8221; should be a path to the launcher&#8217;s icon, &#8220;c:&#8221; should be the command that&#8217;s run, and &#8220;t:&#8221; is the text that&#8217;s shown when you hover the icon. <\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p> Launch startx or login via your display manager to &#8220;openbox session&#8221;<sup><a id=\"fnr.9\" name=\"fnr.9\" class=\"footref\" href=\"#fn.9\">9<\/a><\/sup>.  You should see a dark desktop that vaguely resembles OSX. <\/p>\n<div class=\"figure\">\n<p><img decoding=\"async\" src=\"https:\/\/alandmoore.com\/blog2\/wp-content\/uploads\/2013\/11\/wpid-tb-reviving6-desktop2.png\" alt=\"tb-reviving6-desktop2.png\" \/> <\/p>\n<p><span class=\"figure-number\">Figure 2:<\/span> My OSX-inspired desktop environment, after some tweaking.  Yeah.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<h5>More possibilities<\/h5>\n<div class=\"outline-text-5\" id=\"text-3-5-3-3\">\n<p> Obviously neither of those examples is going to win a (good) design award, but it should show you the kinds of things you can dig in and do with very little overhead if you hack together your own environment.  Of course you don&#8217;t have to take the creative route; plenty of lightweight window managers are perfectly serviceable all on their own if you don&#8217;t mind a little learning curve:  OpenBox, Awesome, WindowMaker, IceWM, i3, etc. <\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div id=\"outline-container-sec-3-6\" class=\"outline-3\">\n<h3 id=\"sec-3-6\">Applications<\/h3>\n<div class=\"outline-text-3\" id=\"text-3-6\">\n<p> Our snappy little environment wouldn&#8217;t be complete without some applications to run.  Now, what you plan to do with your dusty old computer is something you know better than I, and that will naturally dictate what you install.  Keep in mind that it takes more than a slimmed down OS to make video editing happen on a Pentium 3, so keep your expectations in check. <\/p>\n<p> But in case you&#8217;re scratching your head at this point wondering what to do with this revived relic, here are some suggestions on what to do and which applications to do it with. <\/p>\n<\/p><\/div>\n<div id=\"outline-container-sec-3-6-1\" class=\"outline-4\">\n<h4 id=\"sec-3-6-1\">Word processing<\/h4>\n<div class=\"outline-text-4\" id=\"text-3-6-1\">\n<p> For the 99.9% of us who aren&#8217;t MS Office power users, the word processing problem has basically been solved since the 1990s.  I mean, really, what do you want from a word processor: type words, change fonts, bold, italic, bullet lists, maybe a picture or a table.  It doesn&#8217;t take much. <\/p>\n<p> <b>LibreOffice<\/b> is not overly demanding by modern standards, but if your hardware struggles with it look no further than <b><a href=\"http:\/\/www.abisource.com\/\">AbiWord<\/a><\/b>.  Abiword is lightweight, mature, and capable of handling pretty much everything that the vast majority of us need from a word processor. <\/p>\n<p> If AbiWord is too heavy (Woof!  you have some old kit there&#x2026;), it might be time to hit the console with <a href=\"http:\/\/wordgrinder.sourceforge.net\/\">WordGrinder<\/a>, a minimal terminal-based word processor.  Or better yet, <a href=\"https:\/\/alandmoore.com\/blog2\/2012\/08\/08\/how-and-why-to-dump-your-word-processor\/\">dump the word processor altogether<\/a> in favor of a text editor and a simple markup language. <\/p>\n<\/p><\/div>\n<\/p><\/div>\n<div id=\"outline-container-sec-3-6-2\" class=\"outline-4\">\n<h4 id=\"sec-3-6-2\">Communicate<\/h4>\n<div class=\"outline-text-4\" id=\"text-3-6-2\">\n<p> Despite the rise of social media websites and mobile devices, <b>email<\/b>, <b>chat<\/b> and even the venerable <b>IRC<\/b> are still popular ways to communicate with other people.  Even a &#8220;Senior Citizen&#8221; PC can be put to work easily on these tasks: <\/p>\n<ul class=\"org-ul\">\n<li><b>Claws<\/b> is a popular lightweight email client, and features plugins for added functionality. If you need to go lighter, <b>alpine<\/b> is a super light terminal-based mail application that is nevertheless user-friendly (well, compared to &#8220;mail&#8221;). <\/li>\n<li><b>Pidgin<\/b> is a great instant messaging client that supports nearly all major IM services, and is suitable for even fairly old PC&#8217;s.  If the GUI is too heavy, there&#8217;s also a command-line front-end called <b>Finch<\/b>.  <b>Ayttm<\/b> is another option that is somewhat lighter than Pidgin.  Depending on which service you like to use, you might find a client specific to your IM provider that runs even lighter. <\/li>\n<li>IRC clients abound on Linux, from GUI apps like <b>XChat<\/b> and <b>Smuxi<\/b> to terminal-based clients like <b>Irssi<\/b> and <b>weechat<\/b>. <\/li>\n<\/ul><\/div>\n<\/p><\/div>\n<div id=\"outline-container-sec-3-6-3\" class=\"outline-4\">\n<h4 id=\"sec-3-6-3\">Light web browsing<\/h4>\n<div class=\"outline-text-4\" id=\"text-3-6-3\">\n<p> One really has to qualify &#8220;web browsing&#8221; these days, since it can mean anything from reading a wikipedia article to streaming DRM-encrypted HD video or playing <a href=\"https:\/\/developer.mozilla.org\/en-US\/demos\/detail\/bananabread\">WebGL-accelerated shooter games<\/a>.  The web is quickly becoming something that can push your system to the limits, so while a slim OS and lightweight browser might enable you to look up holiday recipes or read the headlines, it isn&#8217;t going to lay the entirety of the modern WWW at the feet of your ten-year-old clunker. <\/p>\n<p> To find out what your hardware <i>can<\/i> do, <b>Midori<\/b> is probably a good place to start; it&#8217;s light, simple to use, and based on the WebKit rendering engine of Safari\/Chrome fame.  If you prefer more of a &#8220;hacker feel&#8221; (and less browser chrome &#x2013; which is nice on a low-res screen), <b>Uzbl<\/b> or <b>LuaKit<\/b> both provide a customizable, minimalist browser experience based around the same WebKit engine. <\/p>\n<p> For the truly ancient piece of equipment, where <i>any<\/i> access to the web would be nice, <b>links2<\/b> is probably the most usable text-mode browser.  It even has an optional switch to enable graphics, which works in either an X11 session or on a framebuffer-enabled terminal.  It&#8217;s limited support for CSS and JavaScript makes it only marginally useful on some websites, but it&#8217;s fast and responsive even on Pentium-II-era computers. <\/p>\n<\/p><\/div>\n<\/p><\/div>\n<div id=\"outline-container-sec-3-6-4\" class=\"outline-4\">\n<h4 id=\"sec-3-6-4\">Learn to Program<\/h4>\n<div class=\"outline-text-4\" id=\"text-3-6-4\">\n<p> For those interested in technology, one of the best parts of Linux is ready access to a wide range of programming environments, compilers, and other software development tools.  It doesn&#8217;t take a powerful computer to get started in programming. <\/p>\n<p> You&#8217;ll want to find an editor, and while I would heartily recommend <b>Emacs<\/b> or possibly <b>Vim<\/b> (which are still used to this day by millions of programmers), those who want a more conventional interface might do well with <b>Geany<\/b>. <\/p>\n<p> Once you&#8217;ve got an editor, pick a language:  C, C++, Python, Ruby, Java, PHP, ASM, Lua, Lisp, Perl, and pretty much any other programming language you&#8217;ve heard of<sup><a id=\"fnr.10\" name=\"fnr.10\" class=\"footref\" href=\"#fn.10\">10<\/a><\/sup> are readily available from your distribution&#8217;s repositories.  Debian&#8217;s repos even feature a few programming books that you can install for offline-reading, such as &#8220;The Ruby Book&#8221; or &#8220;Dive Into Python&#8221;. <\/p>\n<\/p><\/div>\n<\/p><\/div>\n<div id=\"outline-container-sec-3-6-5\" class=\"outline-4\">\n<h4 id=\"sec-3-6-5\">Games!<\/h4>\n<div class=\"outline-text-4\" id=\"text-3-6-5\">\n<p> For some people, the word &#8220;games&#8221; is defined as &#8220;A piece of software that costs at least $50, requires at least a $300 video card, a Steam account, and the fastest Internet connection on Earth; which fills my screen with high-definition images of zombies being exploded with unrealistic weapons by equally unrealistically proportioned women&#8221;.  If this is you&#x2026; you can skip this section. <\/p>\n<p> If you&#8217;re still reading, it turns out that computers have been capable of providing humans with mild amusement for several decades, and much of the software involved is still around and requires no more computing power than it did during its heyday.  Most distributions&#8217; repositories (including Debian&#8217;s) have a sizable games section, filled with 80&#8217;s-style text adventures, card games, arcade-style games, role-playing adventures, puzzles, educational games, and other such things that run fine on the last decade&#8217;s PC. <\/p>\n<p> If that ancient box of yours came with some DOS titles, you can take advantage of them using <b>DOSBox<\/b>, which (in my experience, anyway) will pretty reliably run any game designed for DOS, even on an old PC (<i>Oregon Trail<\/i> FTW!). <\/p>\n<\/p><\/div>\n<\/p><\/div>\n<div id=\"outline-container-sec-3-6-6\" class=\"outline-4\">\n<h4 id=\"sec-3-6-6\">Music<\/h4>\n<div class=\"outline-text-4\" id=\"text-3-6-6\">\n<p> If your music collection lives in iTunes, you&#8217;re probably out of luck here.  But if you&#8217;ve got them in non-DRM files, good old CD&#8217;s, or just prefer the unpredictability of free Internet radio, your old box can be a music machine. <\/p>\n<p> <b>VLC<\/b> is pretty much my go-to media player for any system; it plays anything, and has a variety of user interfaces (GUI, command-line, or web) to scale to any system.  You might find <b>mplayer<\/b> or <b>xmms<\/b> to be a little lighter in some cases. <\/p>\n<p> If you like <a href=\"http:\/\/pandora.com\">Pandora<\/a>, <b>Pithos<\/b> (GUI) or <b>pianobar<\/b> (terminal) are super-lightweight ways to listen without having to deal with a Flash-based website. <\/p>\n<p> If you want to go totally terminal, <b>MOC<\/b> and <b>cmus<\/b> are friendly ncurses-style music players. <\/p>\n<\/p><\/div>\n<\/p><\/div>\n<div id=\"outline-container-sec-3-6-7\" class=\"outline-4\">\n<h4 id=\"sec-3-6-7\">Something else?<\/h4>\n<div class=\"outline-text-4\" id=\"text-3-6-7\">\n<p> I&#8217;ve touched on some of the common things people do with computers, but there are so many little oddball programs and utilities to be found in the repositories of your favorite Linux distro; tools for chemistry, astronomy, amateur radio, genealogy, Bible study, electronics, personal finance, home design, and tons of other things you can do with a computer.  Sure, you can load these on your main PC, but sometimes it&#8217;s helpful to have a dedicated computer<sup><a id=\"fnr.11\" name=\"fnr.11\" class=\"footref\" href=\"#fn.11\">11<\/a><\/sup> to help you focus on a task. <\/p>\n<p> Spend some time exploring the repositories for these gems; who knows? you might start a new hobby or make a scientific breakthrough! <\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div id=\"outline-container-sec-4\" class=\"outline-2\">\n<h2 id=\"sec-4\">And that&#8217;s all he wrote, friends!<\/h2>\n<div class=\"outline-text-2\" id=\"text-4\">\n<p> This article wraps up my series on reviving your old PC with Linux.  After reading through this series you should have a good idea of the sort of computer you can install Linux on, the sort of Linux you can install, and the sort of things you can do with it once you do.  Hopefully you have gained an appreciation for the sheer breadth of possibilities the world of Open Source Software has to offer your old hardware; and maybe &#x2013; just maybe &#x2013; you&#8217;ll keep that old beige box out of the landfill<sup><a id=\"fnr.12\" name=\"fnr.12\" class=\"footref\" href=\"#fn.12\">12<\/a><\/sup> for a few more years. <\/p>\n<\/p><\/div>\n<\/p><\/div>\n<div id=\"footnotes\">\n<h2 class=\"footnotes\">Footnotes: <\/h2>\n<div id=\"text-footnotes\">\n<div class=\"footdef\"><sup><a id=\"fn.1\" name=\"fn.1\" class=\"footnum\" href=\"#fnr.1\">1<\/a><\/sup> <\/p>\n<p>There are <a href=\"https:\/\/help.ubuntu.com\/community\/Installation\/MinimalCD\">&#8220;minimal install&#8221; images<\/a> available for Ubuntu, which give you something similar to a base Debian installation.<\/p>\n<\/div>\n<div class=\"footdef\"><sup><a id=\"fn.2\" name=\"fn.2\" class=\"footnum\" href=\"#fnr.2\">2<\/a><\/sup> <\/p>\n<p>The debate about which filesystem performs best is rather more complex than one might wish, and it&#8217;s hard to point to a clear winner for performance.  It comes down to nitty-gritty details like average file size, read vs. write operations, kernel parameters, etc.  I don&#8217;t think you can go wrong with Ext3, in any case.<\/p>\n<\/div>\n<div class=\"footdef\"><sup><a id=\"fn.3\" name=\"fn.3\" class=\"footnum\" href=\"#fnr.3\">3<\/a><\/sup> <\/p>\n<p><b>Hint:<\/b> The European and Asian divisions of some manufacturers tend to be more Linux-friendly than the USA\/North American divisions.<\/p>\n<\/div>\n<div class=\"footdef\"><sup><a id=\"fn.4\" name=\"fn.4\" class=\"footnum\" href=\"#fnr.4\">4<\/a><\/sup> <\/p>\n<p>In actual fact, ACPI is a mess and for many systems you&#8217;ll need to tweak these things a bit.  I&#8217;ll leave that as an exercise for the reader.<\/p>\n<\/div>\n<div class=\"footdef\"><sup><a id=\"fn.5\" name=\"fn.5\" class=\"footnum\" href=\"#fnr.5\">5<\/a><\/sup> <\/p>\n<p>If your box is going to connect to one WIFI network and that&#8217;s it, configuring <code>wpasupplicant<\/code> isn&#8217;t <i>that<\/i> bad.  But if you&#8217;re always &#8220;on the go&#8221; with your system, you&#8217;re not going to want to muck about with that every time.<\/p>\n<\/div>\n<div class=\"footdef\"><sup><a id=\"fn.6\" name=\"fn.6\" class=\"footnum\" href=\"#fnr.6\">6<\/a><\/sup> <\/p>\n<p>In all honesty, I&#8217;ve never gotten it successfully working on Debian.<\/p>\n<\/div>\n<div class=\"footdef\"><sup><a id=\"fn.7\" name=\"fn.7\" class=\"footnum\" href=\"#fnr.7\">7<\/a><\/sup> <\/p>\n<p>If you&#8217;re lucky, this is as simple as installing the <code>v86d<\/code> package, adding &#8220;uvesafb&#8221; to <code>\/etc\/modules<\/code>, and rebooting.  Many older video cards are very hit-and-miss when it comes to framebuffer support, unfortunately.<\/p>\n<\/div>\n<div class=\"footdef\"><sup><a id=\"fn.8\" name=\"fn.8\" class=\"footnum\" href=\"#fnr.8\">8<\/a><\/sup> <\/p>\n<p>If you want to use one of these but keep it light, install with the <code>--no-recommends<\/code> switch.  This will avoid pulling in a lot of stuff you already opted to skip.<\/p>\n<\/div>\n<div class=\"footdef\"><sup><a id=\"fn.9\" name=\"fn.9\" class=\"footnum\" href=\"#fnr.9\">9<\/a><\/sup> <\/p>\n<p>Openbox has two executables:  openbox, and openbox-session.  If you use the former, none of your startup scripts will be launched, so you&#8217;ll get no panel, desktkop, or wbar.  You need to make sure openbox-session is being launched.<\/p>\n<\/div>\n<div class=\"footdef\"><sup><a id=\"fn.10\" name=\"fn.10\" class=\"footnum\" href=\"#fnr.10\">10<\/a><\/sup> <\/p>\n<p>exceptions include a few proprietary languages from certain small (as in <b>micro<\/b>) <b>soft<\/b> ware companies that you didn&#8217;t want to learn anyway.<\/p>\n<\/div>\n<div class=\"footdef\"><sup><a id=\"fn.11\" name=\"fn.11\" class=\"footnum\" href=\"#fnr.11\">11<\/a><\/sup> <\/p>\n<p>Read: a computer incapable of accessing Netflix, YouTube, Hulu, or your PC games collection&#x2026;<\/p>\n<\/div>\n<div class=\"footdef\"><sup><a id=\"fn.12\" name=\"fn.12\" class=\"footnum\" href=\"#fnr.12\">12<\/a><\/sup> <\/p>\n<p>Ok, you should be <i>recycling<\/i> old computer hardware when you get rid of it, because those motherboards can leak some nasty stuff when they decompose.  But you get my point.<\/p>\n<\/div><\/div>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Part 6 of the series on reviving your old pc<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,21,5],"tags":[15,20,22,14,19,13,18],"class_list":["post-913","post","type-post","status-publish","format-standard","hentry","category-floss","category-old-computers-technology","category-technology","tag-debian","tag-how-to","tag-instructional","tag-linux","tag-old-computers","tag-pointless-geekery","tag-series"],"_links":{"self":[{"href":"https:\/\/alandmoore.com\/blog\/wp-json\/wp\/v2\/posts\/913","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alandmoore.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alandmoore.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alandmoore.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alandmoore.com\/blog\/wp-json\/wp\/v2\/comments?post=913"}],"version-history":[{"count":4,"href":"https:\/\/alandmoore.com\/blog\/wp-json\/wp\/v2\/posts\/913\/revisions"}],"predecessor-version":[{"id":921,"href":"https:\/\/alandmoore.com\/blog\/wp-json\/wp\/v2\/posts\/913\/revisions\/921"}],"wp:attachment":[{"href":"https:\/\/alandmoore.com\/blog\/wp-json\/wp\/v2\/media?parent=913"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alandmoore.com\/blog\/wp-json\/wp\/v2\/categories?post=913"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alandmoore.com\/blog\/wp-json\/wp\/v2\/tags?post=913"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}