Skip to content

feat: Column View - #2005

Draft
MikhailValerie wants to merge 12 commits into
pop-os:masterfrom
MikhailValerie:feature/555
Draft

feat: Column View#2005
MikhailValerie wants to merge 12 commits into
pop-os:masterfrom
MikhailValerie:feature/555

Conversation

@MikhailValerie

Copy link
Copy Markdown

Enabled Column View as a third view option to List View and Grid View, providing a traditional sideways-scrolling compact view of items. Items are sorted column-then-row which is different from the standard row-then-column sorting, but goes with the alternate scrolling direction.
image

Switching View

The "View" menu now shows three view options sorted correctly. The keyboard shortcut for Column View is [Ctrl] + [3].
image

More Items

This view is much more compact, allowing one to view 1,000% more items than the list view and about 25% more than grid view on a Full HD monitor when comparing the "compact" spacing. The Column View is much more readable at these scales than the Grid View.

image

Item Names

The item widths have been set to be wide enough to show most common file names without issues and still be legible when applying ellipsis to the middle of long filenames. More items an fit in with a shorter name, but then they become harder to read.

Dependencies

This is reliant on #1993 being pulled first.

Reasons for Draft

There are a few reasons why this is not ready to merge yet:

  1. I need to rebase this PR (and the dependencies) on the latest master - there are some i18n conflicts
  2. Scrolling vertically does not move the horizontal scrollbar, and I think it should;
  3. Performance issues - my testing folder of 15,400 items is significantly more performant than the original views despite showing more items, but I'd like to improve things further - more visible items has a bigger impact;
  4. This is a big PR - I'd like to break it (and the dependency PR) into smaller chunks easier to review; and
  5. To solicit feedback on the concept and direction before finalisation.

Relates to: #555


  • [ ☑️ ] I have disclosed use of any AI generated code in my commit messages.
    • If you are using an LLM, and do not fully understand the changes it is making to the code base, do not create a PR.
    • In our experience, AI generated code often results in overly complex code that lacks enough context for a proper fix or feature inclusion. This results in considerably longer code reviews. Due to this, AI authored or partially authored PRs may be closed without comment.
  • [ ☑️ ] I understand these changes in full and will be able to respond to review comments.
  • [ ☑️ ] My change is accurately described in the commit message.
  • [ ☑️ ] My contribution is tested and working as described.
  • [ ☑️ ] I have read the Developer Certificate of Origin and certify my contribution under its conditions.

@HuckleHubbing

Copy link
Copy Markdown

Looks great so far! Thank you for putting this together.

The only additional suggestion I have on this is related the width. Looks like it truncates, via ellipses, anything longer than about 24 characters. My personal preference is to show the full name, regardless of length—or at least have an option to.

I forget if this shortening is common behavior in other file managers that have it, like Nemo, but in Thunar the column is extended to the length of the longest name. Whereas the other columns stay as narrow as the names in the other columns allow. I suspect the dynamic column widths is tougher.

In order of preference:

  1. Dynamic column widths to show the full name, regardless of length.
  2. The way you've drafted it with a set column width and truncating names when needed.
  3. All the columns expand to the longest name. This latter option was done by one file manager I used briefly and I hated that.

Of course, if time and effort are of no concern and freely available, having an option in the settings for the 1st or 2nd choice would be ideal.

MikhailValerie and others added 11 commits August 27, 2026 22:01
…re and better indicate cut & hidden items

+ The icon and name are now both within the one button element
+ Hover now uses the accent colour with translucency
+ Selections now use the accent colour with translucency as the background
+ Cut elements are now better indicated with a thin outline and mild translucency
+ Hidden items are now visibily different with mild translucency on the text colour.  The icon colour won't apply until SVG icons are used
+ The button style has been refactored to be easier to maintain
+ There are now readability checks for item text colour, swapping out if neccessary
+ Better support for extreme custom accent colours like black / white
+ Click-n-drag in 'empty' space now prefers select over move
+ Set min width for grid view elements, even as the icons get smaller, to prefer label readability
+ Fixed  padding for icon in list view when selected/highlighted
+ Tweaked transparancy for selected and highlighted elements
+ Use named colours for WHITE and BLACK
+ Fixed positioning of on-hover tooltip
+ Reduced translucency for Gallery View
+ Updated Gallery View item structure to more closly match List Items
+ Fixed text colour for Grid View items
+ Fixed right-most spacing for Grid View by accommodating for the grid spacing when calculating column spacing width
+ New Column View option (Ctrl + 3)
+ Re-ordered the application View menu options for Views
+ Added icon handler for Column View
+ Ellipsis long file names for Column View
+ Invert row / columns when building Column View
+ Fix padding around icons for Column View
+ Scroll horizontally, not vertically for Column View

Still to come:
+ TODO: Fixe padding when changing viewport width
+ TODO: Fix showing list items when changing viewport width
+ TODO: Scroll wheel to scroll horizontal scrollbar
+ TODO: Code cleanup
+ Fixed padding when changing viewport width

Still to come:
+ INCOMPLETE: Fix showing list items when changing viewport width
+ INCOMPLETE: Scroll wheel to scroll horizontal scrollbar
+ TODO: Fix size/position of Empty folder view
+ TODO: Code cleanup
+ INCOMPLETE: Scroll wheel to scroll horizontal scrollbar
+ TODO: Code cleanup
+ Reduced width of Column View items slightly
@bobcat141

Copy link
Copy Markdown

I think it looks really neat!

I'd propose a middle ground between the OP and @HuckleHubbing and suggest the width of a grid item to be able to expand to accommodate a longer file name but be limited to the size of the parent view.

Dolphin, for example, lets the item be larger than the width of the parent view and it doesn't make for the best experience:

  • You have to scroll a lot more in-between columns with the mouse.
  • Using the arrow keys to navigate can also be a bit jumpy.

Both behaviors can be seen in the following video:

Recording of Dolphin when filenames don't fit the window
recording.mp4

But regardless of how this ends up being implemented, I think it will be a great addition to the file manager!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants