New Places Panel
The Places panel in KIO used notably in the file dialogs and Dolphin is lacking several features that are often requested.
With XDG Desktop Portals letting applications request the KDE file dialog, the pressure of developing a shared format (user-places.xbel
is afaik only implemented by KDE?) is a lot lower, and we could think of going our own way catering for the use cases that we deem important.
Collapsible groups
Groups can be hidden but only entirely through the context menu. It would be nice to have an expand/collapse button to easily do that like a tree view allows, with the ability to hide it entirely kept as a more obscured option. Using a QTreeView
as a base might be worth exploring, with the groups as root nodes. This should also fix various usability issues (in e.g. selection and context menu) with the current pseudo groups that are technically part of the delegate below them. The places panel is doing a lot of custom painting already, so making a tree view look like not a tree sounds doable?
Custom groups
Allow adding arbitrary groups, particularly in conjunction with easily collapsible groups could unlock people adding various project-specific folders without the places panel becoming a cluttered mess.
Re-arranging groups
When we have custom groups, we should of course also allow re-arranging groups.
Additionally, it would be cool if we could assign “generated” places entries (network shares, removable media) to a group at will. They will be created in their respective group by default but could be moved to a different group, if wanted.
Per-activity places
The elephant in the room, showing places or entire groups based on the current activity.
Plug-ins or DBus API
There are various “external” sources that feed places into the places panel.
- Bluedevil adds Bluetooth devices
- KDE Connect adds KDE Connect paired devices
They currently edit the bookmarks file to add and remove devices as they come and go. This can be messsy and leads to excessive writes and potentially stale entries in the database.
Instead, there should be an API that lets components add dynamic/transient places entries with the places panel only responsible for remembering custom settings for an entry (forcefully hidden, group assignment, etc).
Once such an infrastructure is in place, additional logic that currently resides in the model could be moved elsewhere, such as displaying tags, baloosearch/history entries, removable storage, heck, even the trash full vs. empty state could be handled by some kded thing adding a trash entry dynamically.
This would also allow more producers of places entries, such as KIO Gdrive adding an entry for shared cloud storage automatically, or auto-discovered network shares. Or perhaps recently visited locations, etc.
On the subject of API, a way to add custom context menu entries (e.g. the “Partition Manager” entry for devices, or “Ring Phone” or “Send File” for KDE Connect devices) would be lovely. There’s also https://csorianognome.wordpress.com/2015/07/07/cloud-providers/ which we should investigate.
Miscellaneous
- Some form of KIO-Fuse integration? If the consumer doesn’t support the given protocol, it could transparently redirect to a KIO fuse mount.