Computers are fancy filing cabinets, full of virtual folders and files waiting to be referenced, cross-referenced, edited, updated, saved, copied, moved, renamed, and organized. In this article, we're taking a look at a file manager for your Linux system.
At the tail end of the Sun Microsystem days, there was something called the Java Desktop System, which was strangely not written in Java. Instead, it was a (according to sun.com at the time) "judicious selection of integrated and tuned desktop software, most based on open source and open standards." It was based on GNOME, with an office suite, email and calendaring apps, instant messaging, "and Java technology." I found myself musing about what it would take to create a desktop in Java. Objectively, a desktop doesn't actually consist of all that much. The general consensus seems to be that a desktop is made up of a panel, a system tray, an application menu, and a file manager.
It's an interesting thought exercise to imagine an actual Java desktop. Not enough to start an open source project with that as its aim, but enough for a quick web search for the necessary components. And as it turns out, someone has written and maintains a file manager in Java.
The Java file manager I found is called JFileProcessor, or JFP for short. It's a fascinating exercise not just in Java, but specifically in Groovy, a popular scripting language for Java.
As a file manager, JFileProcessor takes a minimal approach to both design and function. It lets you view, open, move, copy, cut, or delete files on your local system and on remote systems. It's not particularly customizable, it doesn't have extra features like split panels or movable panes. It's not built around any central theme aside from managing files. JFileProcessor is refreshing, in a way, because of its simplicity. This is a file manager, and that's all. And sometimes that's all you want in a file manager.
I've written about options to theme Java Swing before, and that technique is technically an option for this open source application. However, I think part of the charm of this application is what OpenSolaris called its "Blueprint" theme. It's a nostalgic look of Java, and I've enjoyed running it in its native GUI appearance as a callback to my OpenSolaris (now OpenIndiana) laptop.
Design aside, what really matters is user experience. JFileProcessor has just three buttons that you use on a daily basis: Up, back, and forward. They aren't bound to keyboard shortcuts, so you do have to click the buttons to navigate (or use the Tab key to select a button). I do a lot with keyboard shortcuts when using graphical applications, so this slowed me down a lot as I tried to navigate my system. However, there are times when I'm actually just lazily browsing files, and for that JFileProcessor worked exactly as I needed it.
There's a search component to JFileProcessor, too. As long as you set a reasonable starting folder, the search is quick and intelligent, allowing for both search globs and regex patterns. I used this feature regularly when searching for a specific e-book or comic archive or game rulebook, for instance, or any time that I had a rough idea that directory contained an item but couldn't be bothered to click all the way through to the destination. A quick search through the subdirectories inevitably returned the obvious result, and a double-click opened the file to whatever XDG preference I had set (Evince for PDFs, Foliate for eBooks, and so on.)
A right-click on any file or directory brings up a context menu. It's got most of the common tasks you'd expect: Copy, Cut, Paste, Delete, Rename, New. It's got some nice additions, too.
For instance, you can copy just the filename to your clipboard or save a path to a file. You can also run some scripts, including one to batch rename files, one to run a command on selected files, one to create a ZIP or TAR archive, and many more. And of course, there are several options for the coder, including opening a terminal at your current location and opening a new coding window.
I'm a real fan of Java. It's a clear language with sensible delimiters and a firm stance on cross-platform compatibility. I enjoy it as a language, and I love seeing what programmers create with it.
JFileProcessor is aptly named. It's an effective way to process files, in the sense that JFileProcessor gives you a simple window into the files of data on your system and allows you to interact with them, graphically, in the same way you're likely to interact with them from a terminal. It's not the most efficient file manager I've used, nor the one with the most features. However, it's a pleasant application that provides you with the basic tools you need for file management with a relatively small codebase that makes for some stellar afternoon reading.