= 24 File Managers: QtFM

QtFM is a simple file manager that aims to provide the basic features of file management through a fast and intuitive interface.
It's available for Linux, BSD, and macOS.

QtFM, as its name suggests, uses the Qt (canonically pronounced "cute") programming toolkit.
I've worked with the Qt toolkit both in C++ and Python, and using it is always a pleasure.
It's cross-platform, it's got multiple levels of useful abstraction so developers don't have to interact directly with vendor-specific SDKs, and it's highly configurable.
From a user's perspective, it's a "natural" and fast experience, whether you're on the latest hardware or on an https://opensource.com/article/22/10/obsolete-computer-linux-opportunity[old computer].

== Using QtFM

There's not much to QtFM.
It focuses on being exactly what its name claims: a file manager (FM) for Qt.
The layout is what you probably expect from a file manager: a list of common places and devices on the left, a list of files on the right.

image:qtfm.webp[The QtFM has a familiar layout for anyone who's used a file manager in the past decade.]

It's got just four menus.

* *File*: Create a new file or folder, open a new tab or window, or exit the application.
* *Edit*: Copy, paste, move to trash, or create a new bookmark in the left panel.
* *View*: Toggle between the list and icon views, adjust the layout.
* *Help*: Licensing information, and links to online documentation.

Interacting with QtFM is largely the same experience you're probably used to with any standard-issue file manager.
You can click around to navigate, open files in its default application, drag-and-drop files and folders, copy and paste files and folders, launch applications, and whatever else you do when you're interacting with the contents of your computer.
It's familiar, so there's basically no learning curve and no unpleasant surprises.

There are, however, several pleasant surprises.
Here are three of my favorites.

== 1. Put a command into a contextual menu

With QtFM, you can add any command you can run in a terminal to the right-click contextual menu.
For instance, suppose you want an option to convert an image into the https://opensource.com/article/20/4/webp-image-compression[webp format] to the right-click menu.
There's no complex framework or scripting language to learn, you don't need to develop a plugin.
You can do it in just 3 steps:

1. Go to the *Edit* menu and select *Settings*
2. Click on the *Custom actions tab*
3. Click the *Add* button and enter the command you want to run, using `%f` for the source file and `%n` for the new file

image:qtfm-custom-action.webp[You can add any command as a custom action in QtFM.]

The action now appears in your QtFM contextual menu.

== 2. Flexible layout

One of the built-in features of the Qt toolkit is that many of its components are ("widgets") detachable.
QtFM takes advantage of this and allows you to unlock its layout from the *View* menu.
Once unlocked, you can drag toolbars and side panels, anchoring them in new positions around your window.
I was able to combine the menu bar, navigation toolbar, and the URI field into a unified panel, and I placed a file tree on the right side of the window for convenience.

image:qtfm-layout-unlock.webp[You can configure the layout of QtFM.]

This requires no special knowledge of application design or even configuration.
You just unlock, drag and drop, and lock.

== 3. Tabbed view

Many Linux file managers offer tabs the same way as most web browsers do.
It's a simple interface trick that lets you keep several locations handy.
I don't know whether it actually saves time, but I always feel like it does.
QtFM offers tabs, too, and there are two things I particularly enjoy about the way it implements them.

First of all, the tabs are at the bottom of the window by default (you can change that in *Settings*.)
Because I tend to read from left to right and top to bottom, I usually prefer to have "extra" information at the bottom and right ends of a window.
Of course, what constitutes "extra" information varies from user to user, so I don't blame any developer for placing widgets and panels in places I wouldn't put widgets and panels.
It's nice, though, when a developer accidentally agrees with my preferences.

Secondly, the tabs are responsive.
You can drag a file or folder from one tab into another just by hovering over your target tab.
It feels as natural as dragging and dropping from one window to another.

== Install QtFM

On Linux, your distribution may package QtFM in its software repository.
If so, you can use your package manager to install.
For example, on Debian and Debian-based systems:

[source,bash]
----
$ sudo apt install qtfm
----

If your distribution doesn't offer QtFM, you may find a package for it on its https://qtfm.eu/[website], or you can download the source code from its https://github.com/rodlie/qtfm/[Git repository].