Goals for first release
MVP basic
-
Showing icons -
Cut/copy/paste -
Open Desktop in file manager (workarounds almost everything) -
Open multiple files not allowed -
DnD reordering -
App launch support -
Monitoring -
Basic background work for multimonitor support
MVP medium
-
Change background -
Rename -
Undo/Redo -
Move to trash -
New folder -
DnD Shell move operation -
Desktop files launch support -
Menu actions state sync
MVP full
-
Multimonitor working well -
Icon size setting -
Desktop files visual support? - Decided to go with it, since decompressing is not possible in the desktop and the names are not going to be mangled it's probably enough to not trigger the CVE... -
Trash -
Properties window
Possible future features
-
Thumbnailing? -
Partitions?
Technical approach:
- Cut/copy/paste -> clipboard for copy/paste from Nautilus and Shell, dbus for move (so there is undo/redo). Copy & paste into Shell would need special handling for undo/redo. Copy cannot be done over dbus as it would require Nautilus to be ran as a service to been what was copied.
- Open in file manager -> gio.appcontext or dbus FileManager API
- App launch support -> gio.appcontext
- Desktop files launch support -> This requires manual handling by parsing the data.
- DnD Shell move operation -> DBuS
- Partitions + trash -> Actual desktop file in desktop folder. We should consider not have it and expect people to do file management inside the file manager.
No goals
These are features that Nautilus desktop had and that I recommend to not implement them, the result of those were a quite clunky experience and the code was horrendous by nature.
- Individual size handler for icons. The famous "stretch icon"
- Free layout. This would imply also:
- Reordering
- Collision handling
- Granulated layout (so icons can be reordered in a non-perfect grid, which was a "feature").
- Granulated layout. This is, a grid that is not a grid, yay. I have no idea how to explain it better... sure it was a mess though. In nautilus was the option "snap to grid" iirc.
Edited by Carlos Soriano