A clean rewrite of the Filer for helloSystem (but not limited to it), inspired by John Siracusa's descriptions of "Spatial Orientation" and the Spatial Classic Finder (Video).
To try it out, run the latest experimental helloSystem ISO build and press the "V" key for verbose boot (this will cause this new, work-in-progress Filer to be loaded).
- No GLib dependency
- No libfm dependency
- Minimal dependencies other than Qt
- No inherited code
- Uses launch "database"
- Runs on FreeBSD (developed for helloSystem) and on Linux (occasionally tested on Lubutnu)
Other file managers | Filer | DONE |
---|---|---|
Do not natively support .app bundles, .AppDir and .AppImage formats |
Natively supports .app bundles, .AppDir and .AppImage formats |
DONE |
Do not show the correct icons for Windows applications | Shows the correct icons for Windows applications | DONE using icoextract (must be installed) |
Use XDG standards that have prevented *nix desktops from working well for all too long | Engineered from first principles to be a great desktop file manager | WIP |
Assume applications are at fixed locations, e.g., in /usr/bin |
Assumes applications can be anywhere including external disks and file shares, and can be freely moved around | WIP based on launch "database" |
Show icons for files based on their MIME type | Show icons for files based on the application that opens them | DONE based on launch "database" |
Do not allow individual files of the same MIME type to be opened with different applications | Allows individual files of the same MIME type to be opened with different applications (using the can-open extended attribute) |
DONE by launch |
Do not persist window location and size for each window | Persists window location and size for each window | DONE |
Do not persist the view type for each window | Persists the view type for each window | DONE |
Do not persist icon coordinates in windows | Persists icon coordinates in windows | WIP using coordinates extended attribute |
Do not persist the size of each icon | Persists the size of each icon | For consideration |
Cannot use copy and pasted icons for documents and folders | Can use copy and pasted icons for documents and folders | DONE using user-icon extended attribute holding a base64 encoded PNG |
Open files with whatever application if there is more than one that can handle a file | Asks the user which application to use if there is more than one that can handle a file | DONE by launch |
Do not know which application created a file | Knows which application created a file and by default opens it with that application | TODO; how? Using DTrace or similar? |
Do not allow drag-and-drop of files onto applications | Allows drag-and-drop of files onto applications | DONE |
No animation when applications, documents, or folders are opened | Animation when applications, documents, or folders are opened | DONE (using QTimeLine Property Animation) |
Opened applications, documents, and folders are not shown as open | Opened applications, documents, and folders are shown as open | DONE for folders, TODO for the other types |
Use technical jargon like "executables", "files", "directories", "properties", "wallpaper" | Uses familiar desktop terminology like "applications", "documents", "folders", "info", "desktop picture" | DONE |
Do not show volumes (disks) on the desktop | Shows volumes (disks) on the desktop | DONE |
Cannot eject disks by dragging them to the Trash | Ejects disks by dragging them to the Trash | DONE |
Use controls designed for mobile devices like | Only uses controls designed for the desktop (e.g., real checkboxes like | DONE |
When you double click an application and it fails to run, nothing happens because the error goes to /dev/stderr , which is invisible |
When you double click an application and it fails to run, the error is shown in a dialog on the screen | DONE via launch |
Are not optimized for managing and launching applications | Is optimized for managing and launching applications | DONE |
Cannot rename disks | Can rename disks | DONE via renamedisk helper command line tool |
Do not have spring-loaded folders | Has spring-loaded folders | DONE |
Use Gtk-centric dependencies like Glib, Gdk, Gio, polkit | Does not use Gtk-centric dependencies | DONE |
Refuse to copy/move/delete items which the user doesn't have access to | Asks user for root password to copy/move/delete items which the user doesn't have access to | DONE for copy/move, TODO for delete |
Use weird locations like computer:// and network:// that are nowhere in the filesystem |
Uses proper paths in the filesystem for everything | DONE |
My conclusion is that most "desktop environments" are made by people who don't actually love the desktop. Or else, those basic things would work.
https://probonopd.github.io/Filer/annotated.html
Q: Can this run on Linux?
A: It does build and it can run, but in order to give the full experience, you might want to consider using helloSystem, which comes with additional tools and careful preconfiguration to make Filer work as intended.