Since this page was getting so long, I decided to break it into three. Please update any referring links accordingly.
My original plan was to run as many cross-platform applications on Windows as I could, so I could eventually run the same applications on Linux, Reactos and other operating systems. Unfortunately, this isn't as easy to do as it sounds. Attempting to run a newer operating system on a low resource computer such as my Sony laptop, one becomes severely limited in the applications the machine can execute in a timely and useful manner. I started a search for lightweight, fast-loading and possibly still portable applications to replace some of the applications I had working on more modern machines. I was surprised by just how difficult that search would be.
From my experiences with building Open Source applications (typically ported from Linux) on my Windows machine, I know building many of these programs is no easy issue. While Unix was originally built on the concept of do one small job well, many of the applications today are built on a chain of libraries that have to be compiled and installed properly and with the correct versions or they absolutely won't build. One of the things I like about using low resource machines is that there's a necessity to some degree to return to the original Unix concept to do each job with efficient, well-designed software. However, when you're switching over from your favorite applications on another machine, you're going to want the same programs or similar, user-friendly replacements. This page chronicles my luck in locating replacements for some of my favorite applications and what cross-platform applications run well on low resource machines.
I can break the uses of my computer into 3 major categories: writing, creating and playing multimedia, programming. An older laptop combined with a more modern operating system is probably not the best choice of a platform to do many of these types of jobs with. However, since my laptop previously ran multimedia applications under Windows 98 and ME and had the room and the speed to get the job done, I decided I was going to forge ahead and try to get as much as I could running on an up-to-date Open Source operating system. I also specifically looked for lightweight applications that would run cross-platform even on non Open Source systems such as Windows. The idea is not to be tied to any one operating system in order to get a task done effectively.
I have not included links to sites to download many of the programs I'm recommending. The main reason is that links change often, making it hard to keep up with them. If you're looking for these programs, first check if they're available with the disk or media your installed your Open Source operating system from or at a repository for your distribution. Next, check Sourceforge. Many of the applications are available there. GUI libraries such as fltk, lesstif, sdl, fox toolkit, gtk and qt have links to applications that make use of their interfaces at their web sites. Check these web sites for links to some of the applications mentioned or for other suggestions. Finally, some of the programs I'll mention were located by looking up software suggestions found in forums using a search engine or simply using a search engine and checking for an application that meets certain criteria.
To try out the applications, if they don't come as executables available for Windows or packages ready for your particular Open Source distribution, you can build from source code. You'll need to decompress and extract any compressed or archived files with tools like 7zip, p7zip, gzip, bzip2, tar and explodepkg. For users on POSIX compatible operating systems, check your system's man pages on these tools for more details. You'll also find documentation for many of these programs on the Internet. Most applications build with the commands ./configure, make, make install. Windows users can try these commands with mingw and msys. BSD users may need to use gmake in place of make. FreeBSD has its own make utility. To use the GNU version of the make utility that most applications are designed to work with, you need to specify gmake instead. Most applications come with README and INSTALL files which usually detail if any specialized compiling and building procedures are needed.
If you have trouble building (compiler errors), check if there is a patch available or if other users have listed similar problems and have a fix or work-around. The Debian package and FreeBSD ports sites are good locations to find patches. You can check my patches for changes I needed to make to get some of these programs running. Also, be sure to check the web site where you downloaded the program and in some cases, sites related to the program's GUI, such as the fltk web site wiki. When I got stuck, I used a search engine to see if users received similar errors and what work-arounds they recommended. This was extremely helpful in getting some of the programs to build successfully.
Some of the basics when getting started on any system will be compression and decompression utilities to access applications that are saved in a compressed format. I like Info-zip's zip and unzip utilities. They're command line tools, but they work on a wide variety of platforms. 7zip gives a GUI front end to compression. I believe 7zip only works on Windows. However, there is a command line version of 7zip that works on Linux and Windows called p7zip. Other standard command line tools of this nature are bzip2, gzip, lzma, tar.
I use grep for searching files both on Windows and Linux. You can find a Windows port that includes a -d feature to search directories. On POSIX compatible systems, most grep utilities have the -r feature which can do this. For a search and replace tool, gsar is a promising command line program that can do the job. There's a copy of it at Sourceforge in the gnuwin32 project. The source compiles on Linux as well as on Windows. There's a Windows executable for download too.
I use hjsplit on Windows for all my file splitting. I found a command line version that's compatible called lxsplit. It's available at Sourceforge and works on Linux. It should probably work on Windows and FreeDOS as well.
One of the first things I wanted to get running on my laptop was Dosbox. If Dosbox worked, that would immediately increase the number of applications I could run. While you can still usually run DOS programs fine on Windows, some may no longer work on your Windows system either. Dosbox runs on Windows, Linux, FreeBSD (and even FreeDOS) and can keep your DOS programs running even when your modern operating system is unable to still run them on its own. You can use Dosbox to run DOS applications such as WordPerfect or Word. These are both high powered word processing systems that can format publications for print. Yet, both probably take up less space and resources than more modern word processing alternatives because they were written for machines that just did haven't the capabilities they do today. I find the DOS version of WordPerfect in Dosbox works better than the version that was written specifically for Linux and it's easier to set up and run too. There are other free DOS word processing utilities that should work as well in Dosbox. If you're trying to print in Dosbox, print to a file in Postscript format and then bring up the file outside of Dosbox using ghostview or a similar tool to print. There's also a patch/variant of Dosbox that allows printing through a serial port. Besides word processing applications, you can also find some interesting graphics applications in DOS such as pictview. You can run some music applications that no longer work outside of Dosbox because they're designed for older sound hardware such as a specific Soundblaster card. Check out some sites that still have DOS software and you should find plenty of legacy applications to choose from and try out on Dosbox. Not everything will work, but there's a large array of programs that do.
I don't want to rehash the information already available at my Recipes for Music on your PC page. I will mention that the absolute essentials for music on my machine are abc2midi, abcm2ps, timidity and if possible, audacity or a decent wave file editor. The first 3 run on practically any machine. There's even an older version of Timidity that runs on FreeDOS. Audacity is resource intensive. If you just need the sound recording feature, look into sox, flrec (GUI front end for sox recording using FLTK on Linux) and gramofile. Some lighter wave editing alternatives are ecasound and snd which can be run from the command line. Snd also has a graphical interface. Other possible alternatives are mhwaveedit and sweep, ecawave and xwave. If you're going to record while simultaneously playing audio files, you really need the hardware to do so. You're looking at turning your PC into a digital audio workstation (DAW). Along with your computer system, you'll need an audio card (not to be confused with a sound card) or enough processing power to run a program like winjack or jack. (Audacity has functionality to record while playing built in too.)
Basic music creation is covered by the abc notation utilities. You'll probably want midicomp as well to edit midi files in text format. Timidity can play midi and midi Karaoke files. It can generate wave files from your midi files so that you can record them to a CD. I also recently found out that it can play mod files. Audacity can play most other sound file formats such as wave. However, if you want to play audio files in ac3 format, you'll want to look into a multimedia player. Audacity is a full-fledged sound recording tool and audio editor. I also like MilkyTracker for mod file playback. It is the best sounding mod player I've heard on a PC, although Timidity is quite good too. MilkyTracker can be used to create your own music too. For music normalization and getting rid of pops and clicks, check out gramofile and normalize. Gramofile was designed to help convert records to digital format and provides recording tools. Sox is a great tool for converting sound formats and can record, play and create sounds. On Posix systems, I found the aumix and umix programs very useful for raising or lowering audio volume .
For Windows users, I want to mention Media Player Classic (which plays video and ac3 files as well as audio) and the real alternative player and quick time alternative player which make use of it.
Again, I don't want to go over what I've covered in my Recipes for Video on your PC page. If you want to create DVDs strictly with only Open Source resources, at a bare minimum, you'll need tools for the following. You need a program to copy and demux files from a DVD created by a stand alone DVD recorder. You'll need a basic editing program. You'll need an authoring program and you'll need something to write the DVD ISO file to an actual DVD. For copying files and demuxing, the one Open Source cross-platform program I know of is vstrip. For DVD authoring, all the Open Source tools I've seen make use of the command line tool dvdauthor. The only cross-platform GUI authoring tool I've found is DVDStyler. If you find others, I'd be interested in hearing about it. I've found mpeg2schnitt invaluable on Windows for basic MPEG2 clipping and editing. It's also great for locating where to place chapter marks which you may want to know later on when you get to the authoring stage. While mpeg2schnitt is Open Source, unfortunately, it's Windows specific. Having searched the list of DVD tools for Linux at the VideoHelp web site, I did find a possible replacement that is Linux specific. It was the only program of its kind that compiled on my DeLi Linux machine. It's called gopchop. You may be able to write DVDs directly from your authoring tool, but I prefer to check ISO files in a multimedia player like vlc or mplayer first. Once you're happy with your authored ISO file, you can write it to a disk using cdrtools. Programs like XCDRoast (or K3B if you have the machine power) on Posix compatible machines or Infrarecorder, cdrtfe or ableburn on Windows give you a nice GUI front end to get the job done.
For audio video playback, there are four alternatives I like. I use both vlc and mplayer on Windows. The program mencoder which comes with mplayer is a very useful tool for converting between file formats such as MPEG to AVI and back. These tools are available on most Posix compatible operating systems as well. There's even a command line version of mplayer that works on FreeDOS. I've tried out flxine which is a FTLK front end for the xine media library and Goggles which is a Fox Toolkit front end for the Ogle DVD player. There is a port of xine to Windows, but I haven't had too much luck using it with my particular video card. Same goes for the Cygwin version of xine.
Another route for getting video to your computer is to record it directly to your hard drive (rather than have an external recorder). You'll need some kind of external hardware such as a specialized video card or device connected via USB or firewire that will let you record video input to your computer directly to your hard drive. Personally, I don't use this technique, but you can try Kino on Linux or VirtualDubMod or VirtualVCR on Windows for this purpose. VirtualDubMod is a variant of VirtualDub that includes support for opening/editing files in MPEG format. I find this ability convenient and therefore prefer it to VirtualDub. However, VirtualDub seems to be more actively supported than VirtualDubMod. Unfortunately, none of the variants of VirtualDub seem to have support for writing MPEG files at this point.
I'm still looking into locating Open Source DVD backup tools similar to DVD Rebuilder (a Windows program). If you want to backup videos you already own (as the disks can go bad and become worthless) or you've recorded video files on your hard drive too large to fit on your DVD, you'll need a tool of this kind. So far, most of the programs that do this on Linux need desktop libraries. Some of them use a command line tool called transcode which I've had no luck getting to build on DeLi Linux and I haven't found a port of for Windows. I did notice some programs use a command line tool called vamps. I managed to get vamps to build on Linux and Windows. Will have to see if it's useable on its own or if there's a nice cross-platform front end for it. Another option, if you've created a DVD ISO that's too large to fit on your DVD disk is to leave parts out with a tool like VobBlanker. Haven't found a working tool like VobBlanker for Linux yet though. A last option is to cut large files into more manageable sizes with something like gopchop or mpeg2schnitt and then author, create menus and put together several DVDs from one video with DVDStyler.
I wanted to find a way to convert MPEG2 audio (ac3) files to WAV and back. I used Besweet on Windows, but it's not Open Source and it's not portable. Another popular alternative is ffmpeg (which mencoder uses in some cases). It can convert between different audio file types. However, it has some deficiencies when converting certain types of files. So, aften and a52dec are probably the best choices to look into for this type of audio conversion. Aften comes with choice of GUI front end on Windows machines.
The main Open Source program most people recommend for graphics editing in place of a program like Photoshop is Gimp. I really don't find Gimp as useful to me as Photoshop. In fact, I hardly ever use Gimp. The only feature I really use and have found very user friendly is its ability to apply effects to text and create graphics from that. Gimp will run on a low end system, but it's pretty resource intensive and uses up a lot of disk space. I wanted to find some smaller alternatives. The name that came up most when looking for low resource graphics programs was mtpaint. At first, I thought it might be a paint program alternative, but it has bitmap graphics editing features like a photo editor as well. It even has support for animated GIFs and screen shots. Another lightweight editing alternative is nathive. For something even lighter, take a look at flphoto. It's written using the FLTK GUI libraries. I like the red eye feature and the file size clipping capabilities. I use I.mage on Windows. I like its ability to easily edit at the pixel level. However, it doesn't appear to run as well on Linux as on Windows at least not for me. I'd like to get a build from source on FreeBSD, but haven't had any luck at this so far. If anyone gets the source code to compile successful, please let me know. Another graphics editing program I've seen recommended for Linux is fotoxx. I'm still looking for a decent replacement for the color utility Photoshop and the freeware 2 Pic program offer. They let you see various color tints on the same photo and pick the one you like best. If you've found an Open Source graphics program with similar functionality, please let me know.
Other alternatives to Gimp are Cinepaint, Imagemagick and Graphicsmagick. I believe Cinepaint was, at one time, a fork of Gimp. It is going in an interesting new direction using FLTK in the Glasgow version as its front end. This could make it a helpful, lightweight alternative for graphics editing. The project porting Cinepaint from GTK to FLTK is still in the developmental stage though. It may be difficult to find executables or even latest source outside of Sourceforge's cvs system. Imagemagick and Graphicsmagick are both very powerful graphics editing and format conversion tools. Graphicsmagick is a fork of Imagemagick that aimed for stability. The biggest difference between the two that I see is that Graphicsmagick tries to use one program as an interface and Imagemagick uses several. Both are command line tools and other graphics programs often use one of these tools on the back end. You really don't need both on your machine, so pick one that works best with the other applications on your system. I did a search on front ends specifically designed for Imagemagick, but did not turn up anything really useful. If anyone finds anything other than the display program that comes with Imagemagick, I'd be interested to hear about it.
There are several graphics programs that provide a thumbnail and large picture view of your graphics files. I'm not a big fan of this type of application, but judging by the number of implementations I've seen, others are. On POSIX systems, there are gpicview, gtksee, xzgv, xfi, geeqie (lastest fork of GQview), viewnior. All of these are somewhat lightweight and don't require any special desktop libraries (just GTK and/or X Windows libraries). I've managed to get Viewnior to build on FreeBSD, but had to remove a few things from the configure file and install by hand. For Windows, there's a port of GQview called gqview-win. The flphoto program also presents graphics in this type of format and works on Linux and Windows. One quick note about GQview. It offers the option to call other graphics programs, so you can use it as a front end to other graphics editing tools like Imagemagick, flphoto and mtpaint.
For a quick graphics viewer, I happen to like picaxo. It works on Linux and FreeBSD using the SDL library and there's a Cygwin port of the program for Windows. Other graphics programs for Linux (and FreeBSD) I'd like to mention are feh, scrot and gozer. They're lightweight graphics tools built on imlib2. The feh program lets you change the look of your desktop's background as well as letting you view graphics. The other two programs are for screen capture and text to graphics conversion. If you want to view graphics outside of X Windows on a POSIX compliant machine, so far the only real option I've been able to get working on my machine is zgv. It's definitely worth trying out as a quick command line viewer on systems that support the libsvga library.
For taking screenshots, Fox Toolkit comes with a program called Shutterbug. Also, scrot, Imagemagick's import and mtpaint offer that feature. If you want some serious desktop video capturing, check out Camstudio on Windows. I'm still looking for a similar program for Linux, but xvidcap seems to be one alternative on some versions of Linux. The recordmydesktop program may be another option worth trying. You can also script Imagemagick's import to take successive screen shots and use Imagemagick to convert that into a movie if you're dealing with a low resource computer that can't handle more standard applications to do this.
I'm still looking for an icon editor that can handle transparent backgrounds. I use OpenWatcom's Image Editor on Windows. There's a port of OpenWatcom to Linux, but I couldn't find a working version of the Image Editor on Linux. You may also be interested in command line tools like giftrans, icobundle, pngcrush and netpbm. If you want a command line tool for creating animated GIFs, check out gifsicle.
I've covered bitmap graphics, but what about vector graphics editors? There are basically two major formats, the xfig style format which has been around a long time on Linux and the SVG format which is a vector format created by the W3C for use with applications such as web browsers. If you want a lightweight xfig style editor on a system that supports X Windows, check out figurine at Sourceforge. On Windows, the only option I've seen is Winfig. For SVG, sodipodi and inkscape are both cross-platform editors. I've read that sodipodi is a lighter application than inkscape, so it may make a good choice.
Another interesting set of graphics applications converts files to graphics drawings in Postscript, SWF or other formats. I've tried GLE, libswf and xml2swf. GLE is a nice tool for drawing graphs and charts. Other cross-platform format conversion programs that may be of interest are a2ps and enscript (available at Sourceforge as part of gnuwin32 project) which convert text or other input to Postscript output.
I find less a great tool for viewing files from the command line quickly or searching for a string in a particular file. You can also pipe the output of a program to less and use less to page through it similar to more. Unlike more, you can page up and down with less. It can also be used as an alternate pager for man pages. I've recently found out about lesspipe which creates a bash script to work with less. It'll add functionality to less such as viewing what files are in an archive or viewing any readable text in an executable. It can make use of other tools like xpdf to display text representation for files of a more graphical nature like PDFs, postscript files and some graphics formats.
Once you create Postscript, PDF or other files for viewing and output to a printer, you'll probably want a good program to view them with. Ghostscript is probably the most well known Open Source Postscript tool. There are AFPL and GNU GPL licensed versions. I tend to use the GNU version if possible. Ghostscript can convert Postscript to PDF format and back again. It can also be used for viewing Postscript and PDF files directly if you don't mind a lot of command line typing or setting up scripts for it. Ghostview was the original Postscript viewer with Ghostscript. There are several options now. Gsview works with Ghostscript on Windows, but it also works on Linux and other systems. Later versions display an advertisement asking if you want to register and pay for the software or not. There's a variant of Ghostview on Linux and BSD called gv which can display both Postscript and PDF files. You need a version of Ghostscript that's compatible with X Windows to use it. For PDF viewing on Windows, there's an Open Source program called Sumatra. There's even a portable apps version available for it. I've read that xpdf on POSIX systems was the first Open Source third party alternative for a PDF reader. It became the basis of several other PDF viewers, including Sumatra. The rendering part of the code was used to create the Poppler library which many other Open Source PDF viewer applications use. The xpdf viewer makes use of the X Windows and lesstif GUI libraries. There are xpdf command line utilities as well which can do things like convert a PDF to text output. There are ports of the xpdf command line tools to Windows in the gnuwin32 archive. There are even ports to DOS. Another Linux option that works with GTK+ 2 is ePDFView. I've been pretty happy using gv on Linux and would recommend giving Sumatra a try on Windows if you want a strictly Open Source solution. I also recently heard about Evince which is also GTK+ 2 based PDF viewer that uses Poppler. It's cross-platform and works on both POSIX and Windows systems. If you want PDFs embedded in a Firefox browser, you can use Evince with a Firefox plugin.
A friend sent me some graphics in cbr format. Hadn't even heard of cbr format before that, but it seems it's a series of graphics files in a zipped (cbz) or with cbr files, the rar'd format. I've read that it's become common for presenting comic book like material. (Check archive.org for several Open Source and public domain comic book files.) I looked all over for a viewer that would handle this format and run on DeLi Linux without needing a bunch of screen and desktop libraries to do it and couldn't find one. I even try scanreader based on qiv which works only with X Windows, but neither program compiled on my machine using DeLi Linux. I finally decided to try the format out on Windows and while looking for viewers that would run on Windows, I ran across Comical at Sourceforge. Of the various viewers I tried on Windows, I liked the look of it the most. Plus it wasn't an interpreted program, so it could run faster than viewers designed using an interpreted language. Comical works on top of wxWidgets and after I installed wxWidgets 2.6 on DeLi Linux to get DVDStyler running, I thought I might as well make use of the GUI library. I had no problem getting Comical running on DeLi Linux and viewing cbz files with it. Most versions of Linux come with a later version of wxWidgets which may present some problems when trying to build Comical. I have some patches I wrote just to get it up and working with a later version of wxWidgets. I contacted the author of the project and a new update for this program is supposed to be in the works. Hopefully it'll fix some of the library issues that have cropped up since the last update of the program. In the meantime, there are patches available from various distributions to work around the issues. If you want a fast, cross-platform cbz viewer, this is the best choice I've found so far.
I use less for quick file viewing, but when I need to do some quick command line file editing, I need a good text editor. Emacs and vi are classics found on most operating systems, but I like something a little more user-friendly. I started using pico which is the editor that came with the pine e-mail software. Due to licensing issues with pine, a program based on pico with Open Source licensing was created. It was called nano. Unlike pico, it included the ability to edit more than one file at once. However, I often find it easier to just edit one file at a time with this particular editor. A version of pico under a new Open Source license is now available with alpine too. If you need a quick command line editor without starting X Windows, nano is great for the job. It works on Windows, FreeDOS and many other operating systems too. (Pico does too.)
One thing I absolutely have to have on my computer to get any work done is a decent programming editor. I've used different editors over the years, but when I find one I like, I usually stick with it for a while. I've gotten so used to certain key combinations with certain editors, that for me to switch editors, I need to find one that has good key mapping functionality. My current favorite programming editor is SciTE. I used PFE before that, but it was not Open Source, so once it was no longer being regularly updated, any little bugs in it could not be fixed. SciTE has been able to do everything I did with PFE and more. This was one of the programs I had to have working on an Open Source operating system or I'd be wasting too much time trying to switch my laptop over to the operating system. Luckily, I was able to get it to compile and build on the POSIX systems I've tried although I did have some issues which I've mentioned on my patches page.
I pretty much use SciTE for everything from quick edits of files on the command line to all my basic editing needs to typing up documents that will eventually be formatted for printing in a full-fledged word processor. You can run SciTE from the command line in Windows as long as it's in your environment path. On Linux and FreeBSD, I put together a shell (named scite, placed in /usr/local/bin) and use it to run SciTE more easily from the command line in an X terminal window:
#!/bin/bash /usr/local/SciTE $1 $2 $3 $4 $5 $6 $7 $8 $9 &
I've customized my version of SciTE quite a bit. It can call ABC notation programs or context help. It runs various lua scripts for special functions. I also have api files for certain programming languages that work in conjunction with SciTE. There are lots of extras for programming languages, but one piece that I felt was missing was more support for working with documents (similar to a word processor). SciTE already understands output in the format of compiler errors from gnu and mingw compiler suites (as well as some other popular compilers and tools). I thought that might be a good way to further extend SciTE's functionality. So, after searching for various options for a spell checker, I finally added one myself using this method. You can check out the code for it and other techniques to spell check or work with documents at my page on SciTE Tips.
The final piece of the text editing puzzle is a full-fledged word-processor. If you're going to print a publication such as a 'zine or want to do any kind of specialized print formatting (disk covers, greeting cards, flyers), you really need a good word processor. I've really become partial to WordPerfect over the years and won't even use other commercial word processors in place of it, so it's hard to find a decent Open Source equivalent. There are cross-platform Open Source alternatives, such as Open Office, Abiword, Lyx and Scribus. However, I have not been able to make the switch to any of them. I have found myself starting to use Open Office's ability on Windows to create a document and print it as a fax. Both Open Office and Abiword can open Word documents (that editors sometimes send me). Now I don't have to write back and tell editors to send documents in another format, but I do still write back and tell them their format is not portable and I do not have Word on my home computer. I've found Open Office more user friendly, but Abiword has some nice features such as spelling and grammar check ability, plus it's more lightweight than Open Office. I know a 'zine editor who uses Lyx to format her 'zine publications, so I know Lyx is up to the job. Believe it or not, I've found it easier to install and get Lyx working on Windows than Linux. Most of the major word processors running on X Windows make use of some desktop libraries which proves to be an issue if you're limited in hard drive space and other resources. One other lightweight office suite option I've heard of, but haven't had time to try out on Linux yet is Siag Office.
There is another option for word processing when your end goal is to produce a decent output for the printer. The option is exemplified by a program like Lyx where you have an editor on the front end and formatting libraries or programs on the back end such as Latex. As I mentioned, Lyx is pretty resource intensive. So is Latex on its own. It takes up quite a lot of drive space. However, if one could find the right formatting language (similar to Latex) which would do the job and not take up too many resources, you could use your favorite text editor as a word processor as well. A couple of text formatting alternatives to Latex are groff and Yodl. The ideal to me would be an XML based formatting markup system that can be converted into formats like Postscript and PDF. Docbook and DITA are both XML systems that are supposed to be useable for creating books. Even OpenOffice's Open Document format is an archive of XML based files. The main problem with the XML standards I've seen so far is that there aren't a lot of tools to use to go from the XML format to the desired output format. There are tools for XSL FO that use XSLT on XML for conversion to other formats. However, the only Open Source applications I could find for that method were Java based and I wanted something that would run faster than Java and wouldn't require a virtual machine on my system to work. I also find many of the XML book standards overly complex. Docbook and even DITA contain hundreds of XML tags. Memorizing and using them by hand in a text editor could take a while.
I considered creating the documents in HTML in my text editor (or you could use a GUI HTML editor like Kompozer). Then, I could use a decent web browser to print the documents. There are a couple of drawbacks to this approach. HTML is not a typesetting language. It's supposed to be viewable on a wide variety of operating systems and browser programs and to hopefully degrade gracefully when a browser doesn't support a particular feature. It's not meant to place objects in exact locations on screen (or printer). Still, if one is using CSS and working with the same browser so that it renders the same way when you print it, creating documents in HTML could be an option. However, finding a lightweight browser that can still handle CSS and a recent version of XHTML or HTML, could be harder than trying to find a lightweight word processor. If you want the latest CSS media features such as counters and targets to references page numbers and create indexes with, you'll have even less luck. Further processing, such as a HTML to Postscript program like the Perl html2ps script, might be one way to get around the browser option. However, CSS support is not very complete in any of the script programs I've tried. Wkhtmltopdf is another promising option and it now works without X Windows running, but does still require several libraries and dependencies to work including qt and webkit. There are also programs like a2ps and enscript which convert certain document formats to Postscript. SciTE currently uses a2ps to print documents on Linux and I read of at least one SciTE user who had substituted enscript for a2ps when printing. SciTe can output documents to some other formats such as PDF. Lua scripts are available to allow SciTE to output a document to ODT (Open Document) and provide more options as well. By the way, once you get a file to postscript or PDF, it's fairly easy to switch between the two using ghostscript to convert formats.
For now, I'm sort of cheating. While I have a cross-platform solution, it's not Open Source. I've just stuck with my favorite application WordPerfect whenever I need serious document formatting and/or translating to Postscript. The DOS version works just fine in Dosbox or on most versions of Windows. As a matter of fact, it works better than the free Linux version that is available. I would definitely be interested to hear if there are other low resource options for word processing that could be used in formatting and producing publications. If anyone finds a good method of going from XML (XHTML and CSS or any other XML variant) to Postscript and or PDF, please let me know.
While I may not have been able to find a good Open Source word processor that I liked, there are plenty of great tools to work along with any word processor or editor to help you create better documents. Diction and Style are two such tools that let you check your document for things beyond just spelling. There's a copy of them at the gnuwin32 project at Sourceforge among other places. The version there compiles on Windows and Linux. The wc program (word count) is another handy tool. Most Linux distributions include this. There's a copy with msys too. Plus, you'll find various variants and code examples for it on the Internet.
I use my DOS WordPerfect dictionary more outside of the editor than inside, especially when I want to look up the spelling of a word phonetically. I've come across a really nice Open Source alternative for word lookup. It's called StarDict. It not only provides the ability to find words in a dictionary, but can also be used as a thesaurus or encyclopedia or language translation tool depending on the dictionary files you select to use with it. StarDict is available in a variety of versions. There's the current one that works on Windows or Linux with Gnome libraries. It can be configured when you build it to work with GTK+ 2 only and avoid using any Gnome libraries. There's an older portable apps version available at Sourceforge which I use on Windows. There's even a lighter weight command line version called sdcv. It still requires GTK+ 2, but compiles on both Windows and Linux. You can find dictionaries at the StarDict project on Sourceforge and even at the xdxf project. I really like the idea of the xdxf project to provide dictionaries in XML format and to be able to convert to various dictionary formats such as the one StarDict uses. However, I've had very little luck in getting the xdxf conversion tool to build. StarDict does come with a nice command line conversion tool of its own though. You can create dictionaries in a tabbed format or in Babylon format and convert them to Stardict format. That means you can create your own custom dictionary files. I've tried this trick to create a simplified style manual in Babylon format and to convert it to StarDict format. I'd love to find a rhyming dictionary for StarDict as well. If anyone comes across such a dictionary (already in StarDict format) or a word list for rhymes that can be converted to a Babylon format, please let me know.
I usually use grep to find a string in a file. You can also use grep -r on a POSIX system to have it search subdirectories. To find a filename with a certain string, there are several alternatives, but, on Linux, I just use something like find / | grep string. For those who like a GUI interface when finding a string, check out searchmonkey. I saw it recommended by several people discussing lightweight application alternatives. It's not that small, but doesn't require special libraries either (beyond the GTK+ 2 screen library). It builds and works on Linux, FreeBSD, Cygwin and Windows.
I find a decent file downloading program invaluable, especially if you're downloading big files from the Internet on a slow connection and get cut off in the middle. A decent downloading tool can not only speed download times, but also start up where it left off if it's interrupted during a download. I've used several freeware applications on Windows. The alt.comp.freeware site usually has some great recommendations in this area. However, I wanted an Open Source download program. The one I'd heard about on Linux was prozilla and it compiled fine with no issues on DeLi Linux. I tried some others after that on DeLi Linux and none of them compiled successfully. There is a GUI front end for prozilla written in fltk. However, with this plus, you also notice the drawback of this program. It hasn't been maintained in a while. I needed to make some modifications to the front end to get it to compile with the latest version of fltk. I usually prefer more actively supported programs, but as long as it builds and it gets the job done, I always have the source tinker with if I need to. There is another command line option that looks like it's more actively maintained. It's called aria2 and may also be worth checking out.
The other file downloading program I find invaluable on Windows is httrack. This program is useful if you want to download several files from a web site or back-up a web site you're developing from the Internet to your local computer. Luckily, this program is cross-platform portable and it compiled fine on my machine with DeLi Linux. The Windows version provides a GUI, but the Linux version appears to be command line only. I did notice a curses front end someone had created for it though.
I like lynx and sometimes use it on Windows to check my web pages, but the version that came with DeLi Linux 0.7.2 seemed very buggy. I downloaded a program called links and built it (with no problems). It's a lot like lynx. It also has a command line option of -g that will let it show graphics. There's also a version of links for Windows. If you want an enhanced version of lynx, check it out.
Firefox is pretty much the de facto standard browser for Open Source at this time. However, it does not run well on low resource systems. There are lighter alternatives, but many are hard to compile or have other drawbacks. A couple of lightweight browser alternatives that stand out are dillo and Opera. Opera is a great alternative that runs reasonable well on older machines. The major negative to it is that it is not Open Source. Dillo uses the FLTK 2 GUI framework. It's good on low resource machines and doesn't need a lot of libraries to build it, but it has no support for modern web pages that use features like Javascript or viewing secure sites and may not fully support CSS.
I've been using Foxmail for years on Windows. It's lightweight, easy to use. The only drawback, it's not Open Source. I set out to find an Open Source alternative. It was not as easy an endeavour as I would have thought. I've heard a lot of recommendations for Thunderbird, so I downloaded and attempted to switch over to a portable apps version of the program. I didn't like the interface as much as Foxmail. I didn't find it as user friendly and the search feature didn't seem as nice. I also couldn't tell if my messages were going out in ASCII format like I wanted or in HTML. If you want an e-mail program that can create HTML formatted messages, then Thunderbird becomes a good option. However, for a lightweight, low resource replacement to Foxmail, it wasn't working. I briefly checked out Claws-Mail which is an extended version of Sylpheed, thinking that anything with extensions and added features had to be better than the original. However, I finally ended up trying Sylpheed which is what most light Linux distributions recommend (and for good reason). I was impressed by the developer's philosophy when designing this project. The purpose was not to use a lot of plug-ins and add a lot of features that would require rebuilding to get them working. That meant any additional functionality had to be added with external programs, but that works well with the Unix philosophy of getting small programs that each do one job well. The author also did a fine job of making sure the program was well-tested and debugged on Windows and Linux. The only drawback I found was that I had trouble mapping multiple e-mail addresses to the correct, separate file locations (e-mail boxes), but I think it can be done once you get the hang of the settings for the program. Another function I find annoying is that I have to click on an e-mail before it comes up. I can't just scroll through to it. All in all, this is the closest Open Source alternative I've been able to find for Foxmail. It is much bigger than Foxmail, but it contains some extra features like optional access to Usenet newsgroups and the ability to convert mail to and from formats like those used by Thunderbird. You can even use your favorite editor program when creating/editing e-mail messages.
Another e-mail client that I've used in the past on various Freenets is pine. The Open Source version is available as alpine and it compiles and builds well and supports a variety of platforms. The user interface isn't quite as fancy as a full-fledged GUI. I believe it's written in curses. I've read that it also provides Usenet newsgroup access. If it's not too hard too configure, it should make a fine e-mail client option.
If you want to read Usenet Newsgroups, you'll need a reader. As I mentioned, some of the e-mail programs come with this functionality. However, their options are usually not as advanced as those of a stand-alone newsreader. One stand-alone cross-platform option is tin. There's a port using Cygwin available for Windows and it runs on Linux, FreeBSD and Unix variants. Similar to pine for e-mail, tin was one newsreader option that various Freenets offered. Like alpine (pine), it's fairly easy to use. It also has a curses interface. If your e-mail client isn't what you want in a newgroup reader or you don't want to mix your e-mails and your newsgroups, tin is certainly worth checking out.
Many newer, high powered browsers offer built in or add on RSS reader options. For instance, Firefox has the Sage add on. However, as I noted, low resource systems may have trouble running high powered browsers. So I went looking for a stand alone, low resource solution. I checked for command line and curses based RSS reader tools. Many tools were built in interpreted languages and I wanted to avoid them due to speed issues. I found some curses RSS readers, but many were no longer actively supported. I was able to get nrss to compile and build on DeLi Linux. It needs wget and curl, which most Linux distributions probably already have. The program uses ncurses and is not actively developed but is still somewhat supported by its developer. It can handle Atom 1.0 as well as RSS 2.0 formats. It builds on Linux, but wasn't designed for other systems like Windows. Some other curses options are newsbeuter and snownews.
Trillian was a great solution for a chat program on Windows. It handled not only irc, but different types of chat options like MSN and AIM. It was nice having all the protocol options in one program, especially when your friends insist on using a particular protocol and won't settle for just basic irc. I started looking for Open Source alternatives to Trillian and did not find as many options as I would have liked, especially for low resource systems. I checked portable apps and found two chat clients, Miranda and Pidgin. Of the two, Pidgin is cross-platform, but it takes a lot of hard drive space, crashes immediately and will not run at all on DeLi Linux and always crashes and will not run certain protocols even on my Windows machine. I've found Miranda far more stable on Windows and it does everything I need in a chat program. It's currently what I use for chat on Windows. I haven't found a version of it for Linux though. Some of the smaller Linux distributions use ayttm for the same purpose. Ayttm also has a Windows port which makes it an interesting cross-platform option. However, the Windows port at Sourceforge doesn't appear to have been updated in a while. If anyone has other Open Source chat clients they'd like to recommend, please share the information.
If you can't find an all in one program that suits your needs, you can look at programs that offer less protocols, but are more efficient on low resource systems. The same developers that created dmenu and dwm have a minimalist irc client called irc it (ii). They've also created another minimalist irc client called sic. Another program for low resource systems is naim. It uses a ncurses interface and provides AIM, IRC and a few other chat options. Another option that might be worth checking out is Irssi which works on Linux and FreeBSD, but has a more limited version for Windows too. It can be used for IRC connections or in conjunction with another program, BitlBee. BitlBee is an application that reaches other chat networks through an IRC client.
I wanted an option to replace the old Windows (3.1) calendar program on Linux and FreeBSD. I like the way it showed the month, any special activities for a day and set alarms to remind me of them. I tried xcalendar that works with X Windows. It was very similar to the calendar program, but I found it hard to tell if anything special was slated for a day without clicking on the day. If you'd like something similar but with more features, check out plan. It's another X Windows program. It can also be used in a server mode to keep track of calendar events for multiple users. One more option for alerting of special events is the command line program remind. I tried fltdj which is a program called The Daily Journal and uses fltk for a screen library. Looks very promising as a calendar and reminder program. It works well on Linux and FreeBSD. It can also be built on Windows using msys and runs fine as long as you set an environment variable for it.
I tried lcal and pcal. They're command line programs that output to Postscript. These make nice printed calendars. The documentation with pcal mentions some other features, like adding personal notes to the calendar or even setting alarms with cron and some scripts. This might just be the alternative I'm looking for to my calendar program. Both also compile and build on Windows and DOS.
There is a curses based program called calcurse that provides a calendar and place for notes and todo list. It outputs to a format useable by pcal.
If you need a todo list program, hyperlist builds on POSIX systems. It also lets you add date related information to your list. It uses the SDL libraries. There's a Windows executable if you want to try it out there as well.
Some interesting programs in this category which compile satisfactorily on a low resource Linux system such as DeLi Linux are xearth and sunclock 1.5. I'm still checking if there are any other interesting astronomy programs that don't require a lot of libraries to build. The command line program hebcal builds fine on Linux and can give you time of sunset in your area. The program starplot 0.95.3 lets you view locations of stars relative to each other and uses a GTK+ 2 interface. I haven't tried using it on Windows, but it does compile on Windows as well as POSIX systems if you apply a few patches. I also found gstar which uses a command line program and puts a GTK+ 1 front end on it. If you don't want to use GTK+ 1 for any reason, you can still use the command line piece, starchart. There's a later version of starchart at Sourceforge as well. There is also a way to get Gstar to build against GTK+ 2. Was able to get a version of it using GTK+ 2 libraries up and running under Windows within msys. Gstar is a nice little program that shows star charts in Postscript. Haven't figured out how to tell what constellations are currently in my evening sky from any of these yet though. If anyone knows of a way to do that with these or other light programs, please let me know.
One other program that looks nice on the desktop and that compiles and runs fine on FreeBSD, Linux and Cygwin is xfireworks. The xfireworks program really isn't chart related, it's not even useful, but it's definitely one of those programs that make it worthwhile turning the laptop on and running FreeBSD on it. It's just nice to look at.
I finally found my aquarium! After searching for fishy samples that work with SDL or OpenGL and trying to compile every C or C++ program that related to aquariums, I have a solution. It's also a cross-platform solution. I located some very nice fish aquarium examples written in Javascript. One of the examples I found was JavaScript Aquarium, an entry in a 20 Line Javascript Competition. Another was voa (virtual online aquarium) at Sourceforge. As long as you can find a working browser that can handle Javascript for your operating system, you can find some nice Javascript applications to round out your software collection. By the way, xfishtank works on FreeBSD as well, but I like this one better.
Speaking of fishy programs, I got wmfishtime to build and work. It shows a clock and some fish and is a dockable app. There are some applications that display (or can be set to hide and display) in the Fluxbox slit (along any side of the desktop). Doesn't look like it's easy to turn these dockable apps off once they're running (unless you use a program like lxtask), and some of them just don't work on DeLi Linux with uclibc or build on some systems because the code is incompatible or out-of-date, but a few of them, like this one, are pretty nice. There are some patches to wmfishtime at the Debian site that switch it from GTK+ 1 to GTK+2 libraries and give a digital clock option.
If you use Windows, you're usually not faced with the question of what window manager or file manager or shell programs you want to use. You usually use what comes with Windows and any customization is basically done on screen colors and default fonts. On the other hand, Linux gives you tons of choices for options like these. Personally, I'm not thrilled with either extreme. I'll go through some options for low resource systems on Linux (which cuts down choices) and I'll even mention a few extra options for Windows which most Windows users probably have not tried. Picking the right window and file managers on a low resource POSIX system can make a huge difference in responsiveness of the machine.
If you're going to do anything GUI based on Linux or FreeBSD, you'll usually have an X Server running. There are X Servers for Windows that run natively (like Xming) or with Cygwin, but I don't really know of that many Windows users that bother to use one. Once you have the X server set up, you can pick a windows manager for it. When it comes to a lightweight window manager, the one that seems to be the most often mentioned is Fluxbox. It also comes with a lot of low resource distributions. The more I look at Fluxbox, the more I like it. It's highly customizable through files in your home directory under the hidden .fluxbox subdirectory. You can change the menus, add shortcut keys or pass configuration information when calling a program. I changed my call to urxvt so I could set up the colors and scroll bar and text buffering size the way I prefer it. I also added shortcut keys to do a snapshot when I press PrintScreen and to toggle hiding and showing applications when I press the Windows and D keys.
I've been experimenting with Openbox as well, which is another Blackbox derivative. I'm really having trouble deciding between Fluxbox and Openbox. Both allow you to set up the menu to call other windows managers in order to switch to them. So, you can easily switch back and forth between Fluxbox and Openbox. I find editing Fluxbox configuration files less error-prone than Openbox ones. However, Openbox seems to adhere more to standards including using XML for configuration settings. Openbox lets you switch between applications using the alt-tab key by default, but does not include a panel that lists all the open applications (for clicking to activate). You can use any third party panel software you like with Openbox though. Tint 2 is one good substitute you can try out. There are two key differences between these windows managers for me. Openbox does a better job of drawing the menu. It works better with mouse and key press combinations and the screen redraws cleanly after the menu is dismissed. Fluxbox takes less memory on my machine. I've been reading that Openbox is more lightweight, but my tests using conky, lxtask and other programs to check RAM in use show Fluxbox uses about 1 megabyte less. If you need to add a panel program and other custom applications to Openbox, it can take up even more. If you're going to run Openbox, check out the obconf program to configure background colors and other basic settings.
If you want the screen to redraw cleanly using either Openbox or Fluxbox, you need another program to help you out. With Fluxbox, you can use feh. It also lets you display custom backgrounds on your main window for a variety of window managers. With Openbox, you can find xsetroot and hsetroot available for FreeBSD machines. Either of these two programs will work with Fluxbox as well.
Of the other lightweight windows managers I've read about, another promising option appears to be dwm. It's a tiling Window manager (although it also has floating and monocle modes). You can change the default settings straight in the C code, which is nice for a programmer. There are also several examples of customized versions of dwm available online. One strange thing I've noticed with dwm on FreeBSD happens when I run it with conky. Conky indicates I'm using up a lot of memory. It may be the combination of dwm with conky. I don't see the issue when I use top to display system information instead of conky.
Windows users shouldn't feel completely left out when it comes to file managers. You can check out Blackbox (which Fluxbox originally derived from) on Windows. There are also ports of dwm to Windows. One uses autohotkey.
I really don't use file managers much. I tend to prefer typing commands to get around or copy files from the command line both on Windows and Linux. There are two places where I find a file manager may come in handy though. When running multimedia files such as music or graphics, I like to be able to navigate to a directory with those files, click on them and have them play or display with a particular program based on their file extensions. I also like to be able to compare two directories and copy files from one to another to get them in sync. A tool like dirmatch (DOS) or wmatch (Windows) works well, but with POSIX systems, I've yet to find a good replacement for these programs. A nice two pane file manager with a copy command may help fill this gap.
Some of the file manager options I've looked at are Worker, Xfe, mc and vifm. Worker takes a while to get the hang of, but is highly customizable. Using the afvs library, you can add the ability to look into compressed files. It doesn't support .tlz format (tar with lzma compression) yet though and I haven't been able to contact the person maintaining the library to check into adding support in some way. Xfe will seem very familiar if you're used to working with Windows Explorer on the Windows platform. It uses the Fox Toolkit libraries, so you'll need that installed if you want Xfe working. I had trouble compiling some of the later versions, but .99 built. Some Linux repositories do have later versions working though. Xfe will let you customize your view so you can have two panes or a directory tree and a listing of your files. Fox Toolkit also comes with a cross platform file manager called PathFinder. Midnight Commander (mc) works on Linux, plus there's a port to Windows. There's even been a patch to view .tlz files made for it. A similar alternative, vifm, may not have all the features of mc, but it does scroll easier when trying to compare two directories in two different panes. It also attempts to make key commands work similar to commands in vi. Looking for alternatives that would run using the GTK+ 2 GUI libraries, I found more than one that could handle a two pane display, including emelfm2 and Gentoo (not to be confused with the Linux operating system also by that name) which is very similar to Worker.
Another interesting option adds functionality to the shell program rather than creating a separate file manager. The scrolling of the two panes works much better than the file managers I've tried and it's highly customizable, but doesn't appear easy to set up. If you're curious check out bash_commander which is an extension to the standard bash shell. It certainly looks promising.
I've yet to find a file manager that does everything I want. If you have other suggestions that can handle the two types of tasks I need, they would also be appreciated. I have been looking into using a menu, like dmenu or 9menu in combination with a script to display all files of a certain type in a directory and launch applications related to them. Openbox also supports scriptable menus and provides another option. I'm still searching for a good, cross platform compatible menu tool. I can also get a decent directory difference listing using scripts and diffh with some other tools (on Windows or Linux). However, that only shows directory differences. It doesn't allow for easy copying of files from one directory to the next. One would still need to go back to the file manager, a menu program scripted to copy files or use the command line copy and/or move commands to put two directories in sync after finding the differences between them. I also noticed, it's hard to view the output on diffh without a decent browser. So far, Opera is the most lightweight browser I've found that does a good job of displaying the output. Firefox and IE also work fine, but take more resources. Another option for a low resource system might be to use a decent HTML to Postscript converter and view the differences with ghostscript instead of a browser.
While I've written some interesting scripts for running multimedia files with dmenu, I wanted a possibly cross-platform solution and definitely a non-X Windows solution. So at the moment, I'm experimenting with writing menu systems with bash scripts and dialog. It compiles using curses on a variety of systems, including Windows and can be run in console mode. There's even an X version of dialog, if you want the X look and feel while running in X Windows. Latest patched version of dialog appears to be available from the Ubuntu site. FreeBSD has a freedialog version with a more user friendly licensing scheme. I've also been experimenting with espeak and flite (festival lite). I'd love to try to get either of them working in conjunction with the dialog menus. It might be a nice option for a visually impaired user as well. If anyone knows of some good ways to do that, I'd love to hear about it.
If you want a small desktop style program to run with Fluxbox (or another window manager), you may want to check out fxdesktop. It also makes use of the Fox Toolkit library. It built with no issues, but to run it, you need to open a terminal in your windows manager and type the following:
export "FOX_DESKTOP_WM=fluxbox" fxdesktop
If you're not using fluxbox, substitute your windows manager. I don't like much on my screen, but this makes an interesting addition.
I should also mention the LXDE (Lightweight X11 Desktop Environment) project. It's designed to use OpenBox, but many of the lightweight tools will work well in a variety of windows manager. I particularly like lxtask. It's similar to the Windows task manager. You can kill applications with it. If you're tired of a dockable app that's running, use this tool to stop the program. It also shows RAM usage. The lxappearance program lets you edit the look and feel of GTK 2 programs. There are other interesting lightweight programs as well. You can run the LXDE programs you want as needed and leave out the ones you don't need.
DeLi comes with rxvt, mxrvt (similar to aterm or rxvt but multi-tabbed) and xterm. I checked a web site that compared terminal programs and the ones it most recommended for low memory machines were rxvt, wterm and eterm. It also mentioned that xterm can be among the slowest terminal programs. I started using the rxvt program after that. You can customize the look of it further via the command line and through settings in certain files. When I read that some terminal programs let you run multiple instances and share resources, I thought that would be just the thing for a low resource machine. Some of the terminal programs that fit in that category are sakura (which might also have some extra support for cut and paste), lxterminal and rxvt-unicode. Upon reading further, rxvt-unicode was purported to use the least as far as libraries to get it up and running. My latest terminal program of choice is now rxvt-unicode. Run urxvtd -q -f -o once and then any time you need a terminal, run urxvtc. You can use very similar command line settings for rxvt and urxvtc to customize the look and feel.
While Windows users don't usually have to worry about working with terminal programs, it's useful for people who like to work with a keyboard to have a good command line interface. If you'd like some options to the standard Windows command prompt, check out msys available from the mingw compiler project at Sourceforge and Powershell available from the Microsoft web site. You can even run DOS commands in Dosbox (both on Windows and Linux) if you prefer working in DOS. Djgpp has a DOS version of Bash available too.
On Windows and DOS, I usually the standard DOS commands and batch files. Microsoft came up with Powershell to handle serious scripting, but there's already a perfectly good cross-platform option available with Bash. It may not be installed by default on some systems, but you can use it on Linux, BSD machines, and on Windows with Cygwin and msys and for DOS with djgpp. I've also been investigating Javascript as a server side and shell scripting option. I feel very comfortable with its syntax. The one drawback is that there really isn't yet a highly recognized standard for server or shell extensions. The language itself is pretty well standardized and has a standards group for language additions. At this point, I personally like the v8cgi extensions and am hoping to use it in some of my cross-platform projects for shell scripting. As I mentioned above, dialog is available on most systems to give scripts a graphical interface. Dialog works in console mode. There's also Xdialog on Posix machines and Zenity on Posix and Win32 machines for a more standard GUI look.
I ran across a nice command line menu tool at the same site where you'll find dwm. It's called dmenu. It took me a while to figure out how to use it, but you can check the script files that come with it for some good examples that can give you a jump start. It looks like a good alternative to the Fluxbox menu system. I was even able to create a menu with dmenu that called other dmenu listings displaying application names for each category of programs I wanted to run. If you like using a command line over a mouse, this a good option.
One thing terminal programs don't seem to handle well is cut and paste especially between themselves and other types of applications. It's difficult to move information between a terminal program, such as urxvt, and any other program, such as my favorite text editor SciTE. Was hoping to set the Fluxbox keymapping to call some buffer program on Control-C and Control-V keys, but that didn't work out well. I did finally find a solution, not the one I wanted, but a workable one. Ran across mention that Puppy Linux had solved the buffer issue between applications (edit menu and mouse highlighting) and terminals (mouse highlighting) using a program called autocutsel. I tried several buffer clipping programs, but autocutsel really does want I need. You can add it to your Fluxbox init file before startup. I also found the program xclipboard very handy to use along with autocutsel and cutting and pasting.
There are several ways to break up applications. I've used functional categories above, such as writing, multimedia and so on. Another way to examine them is by what libraries they require to run. While this probably doesn't matter much on Windows where you're used to having a program install with everything it needs to work, it can be highly useful on a low resource POSIX machine or even on a portable drive device like a USB flash drive. Planning what shared libraries you need and can reuse on your machine can help save resources. GUI libraries can be one of the worst resource hogs, so I thought I'd share some information on some of the GUI libraries out there and mention some of the programs that work with each. Many GUI libraries also have more comprehensive listings of applications you can use with them at their web sites.
I use PDCurses whenever I need a curses library on Windows (or DOS). It compiles and builds on Linux as well using X Windows. There's also a new version for SDL. I think it looks a little nicer than the X version. Most Linux applications that use curses for a screen library usually use ncurses. I can't help wondering if any of them will compile with PDCurses instead though. Timidity is one program that has a curses interface (along with other interfaces) on both Linux and Windows. I've run across quite a few programs that work using the curses library to draw on the screen. These include lynx, mc, nano, naim, gramofile, nrss (Linux only), umix (POSIX only), pwsafe (or PasswordSafe for a Windows version), alpine (with pico) and tin.
FLTK is a lightweight cross-platform GUI library. I wanted to get FLTK 1.9.1 working to try out some applications like Cinepaint, prozgui and flxine which use that library. It took a little fixing on DeLi Linux, but compiles and builds fine on Windows, FreeBSD and most other versions of Linux. I tried out the programs flxine-0.6.1, fldiff-1.1, flphoto-1.3.1, mfm-0.4, prozgui-2.0.2, fltdj 0.7, flrec 0.12, xdiskusage 1.48 and tux_todo and they run nicely using FLTK. Although, I recently tried rebuilding mfm, a lightweight file manager, on another distribution of Linux and it had some issues. Either it doesn't like my hard drives formatted for Reiser or I'm missing some screen fonts it really wants to use. Be sure to check the FLTK examples directory. You'll find some nice programs there like blocks, checkers and sudoku. I really like the look and functionality of the FLTK programs I managed to get working with version 1.9.1, but I couldn't help thinking a lot more great programs might be available if there weren't so many forks of this library and if the API was a little more stable. There's now a 1.10.1 version that replaces 1.9.1, but I haven't tried rebuilding programs with it yet. You'll need FLTK 2 for dillo. At one point cinepaint was going to use FLTK 2, but it looks like they're using 1.10.1 now. Of course, FLTK 2 is not backward compatible with 1.9.1 (or even 1.10.1). It also looks like development on FLTK 2 has stalled because efforts are now going to version 1.3 (also not backward compatible) which provides Unicode support (which version 1.10.1 does not have). One nice feature of FLTK is that it is cross-platform portable. I was able to get flphoto, fldiff, fltdj plus all the library demo programs working on Windows as well. Cinepaint is available on Windows and Posix machines too.
Since I was sure I wanted to use Dosbox and it requires SDL, I definitely wanted this library on my computer. There are a lot of programs that will build with SDL. I was hoping to find some more general purpose or utility programs, but there doesn't seem to be a lot of them for this library. It's used more for graphics and entertainment applications. SDL works with a variety of operating systems and compilers including djgpp for DOS 32 bit applications. Dosbox, picaxo, hyperlist, photocrop 0.2, xtopng 0.3 and PDCurses work fine with it. There's a nice screen program called stars that displays stars on the screen. TuxPaint uses SDL plus some helper SDL libraries like SDL_Pango and SDL_ttf. There's even a library called TinySDGL that uses SDL and is based on TinyGL. It emulates parts of the Mesa or OpenGL libraries. I wonder if it could be used on low resource systems in place of OpenGL or Mesa? If you have other suggestions, please let me know.
I attempted building SDL on FreeBSD using various console libraries so that I could run SDL applications outside of X Windows. I tried building SDL with VGL and libsvga. There's also the directfb option, but on FreeBSD it uses SDL to build, so it's probably a recursive waste of time. I had no luck getting SDL based applications to run without X Windows, even when I tried changing the SDL environment variable setting for SDL_VIDEODRIVER. I attempted to debug the issue further on the SDL mailing list, but didn't get anywhere. If someone knows the trick to running SDL applications without X Windows on FreeBSD or Linux, I'd be very interested in hearing about it.
Fox Toolkit comes with some smaller Linux distributions, so you may not have to install it. It has a lot of good example programs with it like shutterbug (a screen capture program), adie (an editor) and Pathfinder (a file manager). The library is cross-platform, so all the example programs run on Linux and Windows. Programs that use this GUI library on Linux and FreeBSD include xfe (another nice file manager), goggles (ogle DVD player front end), fxdesktop and rezound.
There are programs that work with lesstif or X Windows directly and don't require large GUI libraries to build. Some lesstif and X Windows programs include aumix (also available using curses), sunclock, snd, plan, xearth, xclipboard, xpdf, gv, mgv, xwave, xfireworks, xfishtank. Worker is supposed to only require X Windows to run. Timidity has an X Windows compile option. The XAW option (X with Athena Widgets) of Timidity gives you even more functionality. You probably won't get any of these to work on Windows unless you want to install Cygwin and an X server though.
A lot of my favorite programs should compile on Linux with wxWidgets (and GTK). These includes Audacity, Filezilla and DVDStyler. I went ahead and added yet another screen library to my growing list in order to try to get some of my favorite applications to work. I just had to have my DVDStyler program. On DeLi Linux I ran version 2.6 of wxWidgets since I was having trouble building the latest version. You may have to use older versions of a program if you're using an older version of the library. The good news is that version 1.4 of DVDStyler (my favorite version) runs with version 2.6 of wxWidgets. Absolute Linux came with version 2.8.7 installed. The bad news is DVDStyler 1.4 does not run with it. You'll need a later version. DVDStyler changed from the style of vector graphics it was using and switched from netpbm to the wxSVG library. Unfortunately, that means any setup files you created with 1.4 or earlier versions are not compatible with later versions. I also had to do some fixes to Comical to get it to work with 2.8.7. FreeBSD has the annoying option of having half the programs I use with this library built with the Unicode version and half without. I decided to use the Unicode version on my system. That means if I want to use all my favorite WXWidgets based programs, I have to rebuild from source (and scratch) the ones that have ports created to the non-Unicode version. It would have been nice if the ports had an option to choose which library you wanted, but I don't see that available.
The wxWidgets library is a cross-platform GUI library. It also runs on Windows and you don't need the extra GTK layer there. So far, on Windows and POSIX platforms I've been able to get various versions of Audacity, Filezilla, DVDStyler and Comical to run. Audacity and Filezilla are not lightweight applications, but they can be very useful if they perform decently on your system. I'd still like to find alternatives to some of these that work with the other screen libraries already installed. Suggestions for smaller more efficient programs that would make good replacements are very welcome.
I had not intended to add this GUI library to my machine. I'd intended to use GTK instead, since you can usually find a GTK equivalent application for any application you like on Qt. However, if I want to try to run Opera (the lightest weight browser I could find with Javascript and CSS functionality), it comes by default. I didn't install full Qt libraries, just the minimum libraries needed by FreeBSD to run Opera. However, since the files were taking up space on my machine, I figured I might as well make use of them by installing some applications that would work with them. One interesting program that uses the same version of the Qt library on FreeBSD is tipograf. It's a GUI front-end for a2ps. There's also MyPasswordSafe which is supposed to be compatible with pwsafe and Windows PasswordSafe. Another program is ecawave. It's no longer being actively maintained, but it's a lightweight audio editor.
The last GUI library I'll mention is GTK. It's also cross-platform portable. In order for Gimp to work properly on Windows, GTK was ported right along with it. There are tons of programs that work with the GTK libraries. Some older ones use the GTK+ 1 versions of the libraries which have a different API than the later GTK+ 2 versions. However, most programs that are currently being maintained have updated to the GTK+ 2 libraries. There are also some tricks to gain some backward compatibility when attempting to build GTK+ 1 applications with GTK+ 2. GTK isn't small (especially the later versions), but since so many programs run using it, most Linux distributions install it or give you an option to. You can set up or change themes with this GUI library to make your GTK+ 2 programs have a preferred look and feel on your machine. Both switch2 (gtk-theme-switch 2) and gtkchtheme let you change theme preferences and set up your system. Some of the programs that work with GTK on POSIX systems are XCDRoast (older versions worked with lesstif), Asunder, Gentoo (file manager), any of the wxWidgets based applications, gopchop, ePDFView, mhwaveedit, sweep, nathive. Some cross-platform GTK+ 2 applications are sdcv, stardict, SciTE, Sylpheed, sodipodi, mtpaint, searchmonkey, evince.
If you'd like to contact me with any suggestions for applications or settings or any fixes for information on this page or my Open Source OS on a Laptop page or any other tips on working with Open Source, my e-mail address is below. If you have questions of your own and are using Linux or a BSD system, I do recommend you check any forums there may be for the distribution you're running. It's been very useful for me so far to do so. Also, check your favorite search engines if you need more help. Please do share any suggestions for light or useful applications if you have any. I'll be updating these pages to share with interested readers as I learn more information.