{"id":15,"date":"2026-09-16T23:59:47","date_gmt":"2026-09-16T21:59:47","guid":{"rendered":"https:\/\/linuxundich.de\/en\/?p=15"},"modified":"2026-10-03T16:58:33","modified_gmt":"2026-10-03T14:58:33","slug":"tfm-a-modern-file-manager-for-the-terminal","status":"publish","type":"post","link":"https:\/\/linuxundich.de\/en\/gnu-linux\/tfm-a-modern-file-manager-for-the-terminal\/","title":{"rendered":"Tfm: A modern file manager for the terminal"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">While browsing the web recently, I stumbled across <code>tfm<\/code>. This terminal file manager wants to take its cues for operation less from classic command-line tools and more from graphical file managers like Dolphin or Nautilus. If you like working directly in the terminal anyway, this is a really interesting find.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Among other things, tfm comes with a sidebar, tabs, a dual-pane view, and file previews. The usual file operations like copying, moving, renaming, and deleting are on board as well. What&#8217;s interesting: you don&#8217;t have to work exclusively with the keyboard. Tfm also supports the mouse, so you can select, move, and rename files by drag and drop, for example.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That way, tfm combines typical features of graphical file managers with the terminal environment. If you spend a lot of time there anyway, you can manage files and directories without opening a separate graphical app.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ac1772912ccb&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ac1772912ccb\" class=\"wp-block-image wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/09\/tfm-archlinux-01.webp\" alt=\"tfm right after launch on Arch Linux, with the sidebar and file view. The interface is reminiscent of classic graphical file managers.\" style=\"width:100%\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">tfm right after launch on Arch Linux, with the sidebar and file view. The interface is reminiscent of classic graphical file managers.<\/figcaption><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ac177291307d&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ac177291307d\" class=\"wp-block-image wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/09\/tfm-archlinux-02.webp\" alt=\"You can open the settings with Esc. There you can adjust various options and the look of tfm.\" style=\"width:100%\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">You can open the settings with Esc. There you can adjust various options and the look of tfm.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Installing from the AUR<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You can find Tfm in the AUR (Arch User Repository). If you use an AUR helper like <code>yay<\/code>, you can install the binary version right away. On Arch Linux, this command is all you need:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ yay -S tfm-tui-bin<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">After that, start the file manager with:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ tfm<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If you use a different distribution, the <a href=\"https:\/\/github.com\/clarkarch\/tfm-tui\">project page<\/a> has instructions for the install script provided there. With it, you install the current version independently of your distribution&#8217;s packages.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Nerd Fonts for the icons<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For tfm to show folders and files with the intended icons, you need a <a href=\"https:\/\/www.nerdfonts.com\/\">Nerd Font<\/a>. These fonts come with additional characters and icons that terminal apps use to display folders, files, and other elements.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For this article, I&#8217;m using the Hack Nerd Font. On Arch Linux, the font is available directly in the official repositories and can be installed with <code>pacman<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo pacman -S ttf-hack-nerd<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For tfm to display the icons correctly, the Hack Nerd Font only has to be installed on your system. You don&#8217;t need to select the font in your terminal for that. You normally don&#8217;t need to refresh the font cache manually for a package from the Arch repositories either.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Beta with a few rough edges<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tfm is still in beta, and you&#8217;ll notice it most in how icons are displayed. In my tests, the Nerd Font symbols didn&#8217;t show up reliably on every start. Folders and other elements sometimes appear without the icons they&#8217;re supposed to have.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Restarting tfm or the terminal usually fixes it. What stands out: the icons come back on the next start even without any changes to the font cache, so the problems can&#8217;t be blamed solely on a broken installation of the font.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ac1772913955&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ac1772913955\" class=\"wp-block-image wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/09\/tfm-archlinux-03.webp\" alt=\"tfm in dual-pane mode with two file panes. The view makes it easier to work with files and directories side by side.\" style=\"width:100%\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">tfm in dual-pane mode with two file panes. The view makes it easier to work with files and directories side by side.<\/figcaption><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ac1772913d18&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ac1772913d18\" class=\"wp-block-image wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/09\/tfm-archlinux-04.webp\" alt=\"The preview shows text and image files right inside tfm. For image thumbnails, though, you need a terminal with the Kitty Graphics Protocol.\" style=\"width:100%\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">The preview shows text and image files right inside tfm. For image thumbnails, though, you need a terminal with the Kitty Graphics Protocol.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">For graphical image previews, tfm needs a terminal that supports the Kitty Graphics Protocol. On Linux, Ghostty is a good choice, for example, and its Linux interface is built on GTK4. Gnome Terminal can&#8217;t offer this feature, because the underlying VTE library doesn&#8217;t support the Kitty Graphics Protocol.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The rest of the interface isn&#8217;t yet as stable or consistent as what you&#8217;re used to from established file managers, either. If you try tfm, start with files that don&#8217;t matter, and don&#8217;t trust important data to such young software on its own.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The most important keyboard shortcuts<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Despite the mouse support, the keyboard plays an important role in tfm. You&#8217;ll find the most important commands in the following overview:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Shortcut<\/th><th>Function<\/th><\/tr><\/thead><tbody><tr><td><code>Esc<\/code><\/td><td>Open menu<\/td><\/tr><tr><td><code>Enter<\/code><\/td><td>Open file or folder<\/td><\/tr><tr><td><code>Backspace<\/code><\/td><td>Go up one directory level<\/td><\/tr><tr><td><code>F2<\/code><\/td><td>Rename file or folder<\/td><\/tr><tr><td><code>Tab<\/code><\/td><td>Switch between the two file panes<\/td><\/tr><tr><td><code>F5<\/code><\/td><td>Copy selection to the other pane<\/td><\/tr><tr><td><code>F6<\/code><\/td><td>Move selection to the other pane<\/td><\/tr><tr><td><code>Strg<\/code>+<code>C<\/code> \/ <code>Strg<\/code>+<code>X<\/code> \/ <code>Strg<\/code>+<code>V<\/code><\/td><td>Copy \/ Cut \/ Paste<\/td><\/tr><tr><td><code>Strg<\/code>+<code>D<\/code><\/td><td>Duplicate selection<\/td><\/tr><tr><td><code>Entf<\/code><\/td><td>Move selection to the trash<\/td><\/tr><tr><td><code>Strg<\/code>+<code>Z<\/code> \/ <code>Strg<\/code>+<code>Y<\/code><\/td><td>Undo \/ Redo<\/td><\/tr><tr><td><code>Strg<\/code>+<code>T<\/code> \/ <code>Strg<\/code>+<code>W<\/code><\/td><td>Open \/ close tab<\/td><\/tr><tr><td><code>Strg<\/code>+<code>Tab<\/code><\/td><td>Switch between tabs<\/td><\/tr><tr><td><code>Alt<\/code>+<code>Enter<\/code><\/td><td>Show properties<\/td><\/tr><tr><td><code>Strg<\/code>+<code>H<\/code><\/td><td>Show hidden files<\/td><\/tr><tr><td><code>Strg<\/code>+<code>L<\/code><\/td><td>Open path bar<\/td><\/tr><tr><td><code>Strg<\/code>+<code>G<\/code><\/td><td>Switch between list and grid view<\/td><\/tr><tr><td><code>F9<\/code><\/td><td>Show or hide preview<\/td><\/tr><tr><td><code>F4<\/code><\/td><td>Open terminal in the current directory<\/td><\/tr><tr><td><code>Strg<\/code>+<code>Umschalt<\/code>+<code>S<\/code><\/td><td>Connect to a server<\/td><\/tr><tr><td><code>Strg<\/code>+<code>Q<\/code><\/td><td>Quit tfm<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">All in all, tfm is a likable find for me, especially for anyone who spends all day in the terminal anyway. The sidebar, tabs, dual-pane view, preview and mouse control add a level of comfort you normally don&#8217;t get on the command line. If you like, you can even switch on animations \u2013 a <a href=\"https:\/\/www.reddit.com\/r\/tui\/comments\/1wh46e9\/beta_release_tfm_terminal_file_manager_for_linux\/\">video on Reddit<\/a> shows what that looks like.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Keep the quirks of the beta phase in mind, though, above all the icon rendering and the interface, which isn&#8217;t quite polished yet. I&#8217;ll keep following the development, and right now I&#8217;d mainly recommend tfm for trying it out \u2013 preferably with non-critical files until the software has matured a bit.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>tfm brings a sidebar, tabs, dual-pane view and mouse support to the terminal \u2013 a file manager for everyone who prefers to work there anyway. It still has a few small beta quirks, but it&#8217;s already worth a look.<\/p>\n","protected":false},"author":2,"featured_media":14,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"lui_source_id":45658,"lui_source_hash":"676497986be07f0109beadcd9abc656373ce230539dfefd71411083cacf20893","lui_source_translated":"2026-10-03","lui_source_reviewed":true,"lui_via_url":"","lui_via_label":"","lui_source_url":"","lui_source_label":"","footnotes":""},"categories":[2],"tags":[],"class_list":["post-15","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gnu-linux"],"_links":{"self":[{"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/posts\/15","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/comments?post=15"}],"version-history":[{"count":1,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/posts\/15\/revisions"}],"predecessor-version":[{"id":46,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/posts\/15\/revisions\/46"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/media\/14"}],"wp:attachment":[{"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/media?parent=15"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/categories?post=15"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/tags?post=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}