Nobody wanted to do it. Nobody missed a compact list view in Files, still codenamed nautilus, but much more stupid than its classic GNOME 2 version. If they did, they didn’t complain. If they did complain, the retards at GNOME ignored such requests. “Less is always more, and be grateful that GNOME’s file manager is still able to show something.” Whoever took inspiration from the castrated version of Nautilus—mostly those who wrote in Rust COSMIC’s file manager, or those who wrote the Deepin File Manager—never felt that only two views—an icon view and a detailed list view—aren’t enough. How do those people manage folders with hundreds or thousands of files? I suppose they don’t.
So I fucking did it. The process is now called Human-Directed Agentic Engineering (HDAE), so it’s a noble one, right? Agents are just agents, and the boss takes the laurels (or the shaming and bullying). This way:
Bringing back the classic multi-column Compact List view (present in GNOME 2 Nautilus, Caja, Thunar, Dolphin, PCManFM/PCManFM-Qt) to modern GNOME Files (GTK4 Nautilus) with variable-width columns, smart filename shortening, and status bar.
The Compact view you, as a naïve GNOME user, didn’t know you needed! 👇
You cannot see many files in the List view, can you? 👇
The Icon view works well with short file names, but it is not a universal fix! 👇
1. Rationale
What kind of listing do you get in a terminal when you execute ls? Think about it! Now think one more time. Why can’t you get the same view in GNOME’s Files?
Why is GNOME’s file manager the only major file manager to lack a compact list view, when such a view was present in the original Nautilus in GNOME 2, is still present in Caja, its successor, and is also one of the standard views in Thunar, Dolphin, PCManFM and PCManFM-Qt?
Note that even the file manager in Windows 3.0 had a compact view! 🤪 Yes, it did. With the 8.3 character limit and same-width columns, it was easy to implement. What it lacked was an icons or thumbnails view. All it had were the compact and detailed views.
Less is more, unless it insults my intelligence. Besides, users of Caja, Thunar, Dolphin, PCManFM and PCManFM-Qt can have something that the users of Files (still nautilus under the hood) cannot have, and they are supposed to be happy?!
They are not entirely alone. Users of cosmic-files and dde-file-manager can only use the same two views, and only those two. How pathetic!
Typical GNOME users certainly don’t have the same workflow that I do. They might not need to see many files at once. They literally cannot use GNOME’s file manager the way I use Thunar and Windows Explorer, which is:
70% of the time in a Compact List view
20% of the time in a Detailed List view
10% of the time in an Icon View
They don’t manage folders with thousands of ePub or MP3 files, or hundreds of MP4/MKV files. Good for them. They have a simple life. They should be using a Mac.
But look, if they had a compact list view, they could see the entire /etc directory at once!
This is obviously not mandatory, but it can be accomplished with nautilus-compact-list!
2. What it is
In a nutshell:
📝 nautilus-compact-list is a standalone, lightweight, in-process nautilus-python extension that integrates a full-featured Compact List view into Nautilus. It requires zero binary patches to Nautilus or GNOME, integrates seamlessly into the GTK4 widget hierarchy, and synchronizes dynamically with Nautilus’s internal styling.
📢 This is vibe coding, or, as Gregory Kurtzer likes to call it, Human-Directed Agentic Engineering (HDAE). 🙄
What inspired me wasn’t the “My Computer” view, which is a Windows thing that I don’t miss under Linux. It was its newest feature, the Column View, still in beta. This is literally an implementation of Miller columns and must have been requested by macOS users, because the concept has been around since NeXTSTEP.
In Linux, FSViewer had it in WindowMaker, and Pantheon Files (the Elementary OS file manager) also has it.
Another set of Nautilus-Extensions includes nautilus-column-browser, a “Miller-columns (macOS Finder style) folder browser,” but I didn’t try it. And nobody added a Compact view!
So I passed a zipped version of nautilus-my-computer to Gemini 4 Argon, and told it to sketch a skeleton of a similar extension that would add a third, Compact view, to Files/Nautilus. I had to do so in a browser because I can’t use Argon in Antigravity IDE or CLI. At the “High” thinking level, and for a request like this, I can ask Argon exactly 3 questions in 5 hours.
It produced a 73.5 MiB PLAN.md that included 10 Python files, a .gschema.xml, a Makefile, an install.sh, a pyproject.toml, an SVG, and instructions for the next agent on how to make it a working project.
The next agent was Gemini 3.8 Flash High in Antigravity IDE. It never reached my quota, so it was cheap, but mediocre. But Argon already included a lot of irrational thinking in its skeleton, so I had to iterate a lot, and I mean a lot, especially as Flash also proved capable of creating new bugs and regressions in the process of fixing existing ones. As I was used to, Flash often missed obvious aspects (obvious to a human) or offered intricate solutions instead of simple ones. Human-Directed Agentic Engineering is an art that requires patience and perseverance.
When I was satisfied with the results, I decided to publish the project on GitHub.
3. Key features
📝 I tested this extension on Debian 13.7 GNOME, Debian 13.7 XFCE with nautilus added, Ubuntu 26.04.1, Ubuntu 26.10, Fedora Workstation 45, Fedora KDE Plasma Desktop 45 with nautilus added. It should work with any recent version of GNOME. Only the file manager is actually required 🙄
Top 10 relevant features:
Multi-column flow layout: Items flow vertically from top to bottom within columns and wrap from left to right. Horizontal scrolling is translated from vertical mouse-wheel events.
Variable-width columns: Each column auto-sizes to fit its longest entry rather than forcing a uniform grid width, preserving precious horizontal space, with the exception of the last column shown on screen, which in most cases overflows.
As-needed scrolling: Clicking on a partially visible file name in the rightmost column on screen will scroll the view only as needed for that file name to be fully visible.
Adjustable maximum column width: By default, displayed file names are limited to a maximum of 50 characters, but this limit can be adjusted by right-clicking in an empty space and selecting “Set Max Column Width…” (or its localized translation) and entering a different value.
Smart suffix-aware filename shortening: Long filenames exceeding the maximum column width limit are shortened intelligently. Suffixes like copy counters, numeric dates, and extensions are preserved while shortening the stem. Hovering over any shortened filename displays the full unshortened name in a tooltip.
Independent icon zoom: Similar to the native Icon and List views, the Compact view supports zooming of the icons, which impacts the rows’ spacing. This view supports 3 zoom levels, matching the List view. The zoom levels remain distinct for each view.
Headerbar view switcher: To be able to switch between the Icon, List, and Compact views, this extension injects a toggle button directly into Nautilus’s view-switcher container, forming an integrated 3-way segmented button group: Icon, List, Compact.
Same selections and actions as the native views: Selections and actions, using the mouse or the keyboard, work as they would in an Icon or List view.
Bottom status bar: Similar to Thunar’s visual metaphor, the Compact view displays real-time directory and selection statistics, localized by the system, not by the extension.
Enhanced functionality when used outside a full GNOME desktop: When Nautilus (Files) is installed on a system that only includes another desktop environment, right-clicking in an Icon or a List view doesn’t display the “Open in Terminal” / “Open in a Console” menu (or their localized versions). However, in Compact view, you’ll see the respective menu option, which opens the default terminal app for the currently active desktop environment!
📝 The context menu items added by this extension have translations for a good number of major languages in i18n.py, using a localization catalog that prevents the complication of using .po files.
4. Installation
💬 Grab the latest .deb or .rpm package from GitHub Releases and install it.
Advanced users can install this extension from source. They can also build packages locally.
No, I don’t care about Arch and NixOS.
📢 To load this extension and show the extra view button, all Files instances need to be restarted! I personally don’t trust nautilus -q, so I’d rather do killall nautilus instead.
The previous screenshots were from Ubuntu, which provides the most usable GNOME customization out of the box (minimize, maximize, and close buttons, the left-side dock, and more), but let’s have other examples, too.
Fedora 45, 125% desktop scaling:
Debian 13, 125% desktop scaling, in French:
5. Advanced configuration
Settings can be customized via the GUI, GNOME GSettings CLI, or direct JSON configuration.
i. Via the context menu (GUI)
As previously noted, right-click on any empty area inside the Compact view and choose Set Max Column Width… to open an interactive configuration dialog.
ii. Via GSettings CLI
# Set maximum column width in characters (15-200, default: 50)
gsettings set io.github.nautilus-compact-list max-column-width-chars 60
# Set shortening mode ('smart-suffix' or 'middle')
gsettings set io.github.nautilus-compact-list shortening-mode 'middle'
# Set icon size (16, 32, or 64)
gsettings set io.github.nautilus-compact-list icon-size 32
This is particularly useful if you hate my smart-suffix mode!
iii. Fallback JSON configuration
If GSettings schemas are not compiled in your local environment, settings are automatically managed in ~/.config/nautilus-compact-list/settings.json.
As I said, you don’t need the entire GNOME to run nautilus!
6. Architecture
For an AI-generated explanation of the runtime widget injection and other mechanisms, see ARCHITECTURE.md.
This blog uses technologies like cookies to store and/or access device information. Consenting to these technologies will allow us to process data such as browsing behavior or unique IDs on this site. Not consenting or withdrawing consent will adversely affect certain features and functions.
Functional
Always active
The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferences
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistics
The technical storage or access that is used exclusively for statistical purposes.The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
Leave a Reply