Skip navigation.

Nautilus 2.6 - We're going all spatial

Nautilus
Nautilus

During the nautilus 2.4 cycle there was some discussion on
nautilus-list about the "Object Oriented" metaphor vs. the "Navigation
Metaphor". That thread started at
http://mail.gnome.org/archives/nautilus-list/2002-September/msg00093.html
(read that mail if you need an introduction to the OO and Navigation
metaphors).
Our general opinion coming out of that thread was that the Object
Oriented metaphor was probably easier to learn, and built a stronger
conceptual model for users, but that the convenience benefits of a
navigation window outweighed those.For the 2.6 cycle, the nautilus crew is trying out a new UI that
should give us the best of both worlds. The idea is present an object
oriented UI from the desktop, but to allow users to open navigation
windows if they prefer them. This means that opening a folder from
the desktop will give you an object window. Opening folders from
object windows will give you new object windows. You can right click
on a folder from an object window and select "Navigate Folder"[1], and
get a normal nautilus window.

I want to emphasize that we are not removing the navigation window.
People who use this window and like it can continue to. This is also
not a first step toward removing the navigation window. The
navigation window is a central part of nautilus, and will not be
removed. We think that splitting the object-oriented bits of nautilus
into their own world will let us make the navigator act more like you
expect it to.

This interface is partially inspired by the interface described in
http://arstechnica.com/paedia/f/finder/finder-1.html . Interested
parties should read that before getting involved in the discussion.

For this UI to succeed, we need to iron out all of the details. We'd
like people to pound on the object ui and take notes on the things
that bother them. After you've done this for awhile, we'd like to see
your comments on nautilus-list@gnome.org. You can get it from the
nautilus-spatial-playground branch of nautilus.

I'll be following this mail up with a more detailed list of the work
that's been done and needs to be done.

Thanks,
- The nautilus crew

[1] In the branch right now, this is Open With -> Navigation Window,
but that will be changed.

Details

I just committed the start of the spatial UI stuff to the
nautilus-spatial-playground branch. It'd be nice if people could
pound on it for a little bit.

What has changed from a UI perspective:

* Object windows are created by default from the desktop. Navigation
windows can be opened from the menus. Right now all that is
implemented is Open With -> Navigation Window, but a "New Navigation
Window" entry in the desktop context menu could pretty easily be
created.

* Object windows are one-window-per-location. They do not have the
following UI:
- Search UI
- Back and Forward
- Bookmarks menu
- Toolbars
- Side pane

* Navigation windows are basically the same as they used to be, but
they don't save their geometry anymore.

* The default window size is much smaller. This was to make the
default object window size sane, and I just haven't gotten to
fixing it for nav windows.

Unfinished UI:

* I didn't finish porting the view as combo in the location bar.

* The "New Window" stuff isn't in the desktop context menu or the
file menu.

* Lots of little bits - these things all need to be collected.

Some open UI questions:

* I moved "Open in New Window" to "Open With -> Navigation Window". I
thought that this might reinforce the idea of the browser as a
separate app. Any thoughts?

* Some ideas for differentiating the navigation window:
- give it a constant, special icon rather than the icon of the
contents
- put a "- Nautilus" (or whatever) string after the current
directory (or whatever the hig suggests for this sort of thing).

Implementation Notes:

* Unfinished parts are tagged with #if NEW_UI_COMPLETE.

* NautilusWindow has been split into a NautilusWindow base class,
a NautilusObjectWindow subclass, and a NautilusNavigationWindow
subclass. NautilusDesktopWindow now derives from
NautilusObjectWindow.

* NautilusNavigationMenu merges a new xml file into the same ui
component. This lets us keep separate files that use the same
verbs.

* I sort of abused the open_location_* functions in the idl.
open_location_in_this_window -> "open location according to the
current window (new object window or this navigation window"
open_location_prefer_existing -> "open location in new object
window"
open_location_in_new_window -> "open location in new navigation
window".

* nautilus-window-menus is pretty well separated between the different
subclasses, but nautilus-window-manage-views is still very tied
together - a lot of the nav stuff needs to be built in there.

* Some stuff is blocking on the views being able to find out what kind
of
window they're sitting in.

Some open implementation questions:

* How do we want to change the idl? Should we just stick with
abusing the open_location_* rather than trying to change things?
(it's worth noting that the old semantics of those functions
don't make much sense now).

* How do we want views to figure out what kind of window they're in?
Ambient property for the control? idl extension?

* Is it worth the bother of trying to cleanly subclass the navigation
parts of manage-views?

Re: Nautilus 2.6 - We're going all spatial

I definately think this is a good idea, providing the object/spatial metaphor is done right. By default it should be "seperate windows for each folder", and those that don't like a folder opening a new window, should have an option that disables this, but the contents of each window/folder should be preserved, with the difference being that the window location and size would be global when opening a folder into the same window.

I definately think that the "active folders"/"smart folders" option is a good one (possibly use imon to keep the contents in sync with the file system as a background process to avoid new searches), as well as the "Shelf". I would like to see the "User's Home" icon renamed to "My Documents" to be more familiar to users of "other operating systems". Other desktop icons would be the Trash, Shelf (which should integrate with the clipboard as well), and the Printer, and the Start Here icon (which should be renamed as well), and some form of Network Neighborhood.

I also think that you should be able to place the equivalent of a panel in each folder view. Drag+drop with the existing panel and file system should work like the existing panel. You should be able to remove the global panel as well if you like. I definately see this as a good thing. Open your folder of images and see all your graphics programs as quick-click icons and things of that sort, and be able to start them and drag to them right in the window. And not just a configurable toolbar - vertical placement, auto-hide into the window, drawers, and applets should all work like the panel.

The Shelf should get its own icon so you can drag to it, or drop the whole shelf into a window - and it should change to show that there are files on the shelf. This could be an excellent tool, especially if you can drop the shelf onto a server in the network neighborhood to upload the files!

I think the seperate browser and object views is a bad idea. If you want forward and back buttons, you should be able to add them to a panel of the folder, with the option to make changes to a panel global, and new subfolders should "inherit" the panel of the parent folder, but allow local changes - possibly a copy-on-write if regular inheritance won't work (although inheritance would be best to optionally allow changes to the parent to carry to the child).

I see the "browser" and list views and mp3 views and such being just special "views" of the object you are looking at. Open the icon to view it, and nautilus allows different views, period. Some files would naturally open an application as the default view, but I don't see a reason to confuse issues with two interfaces - just select the view you want for each folder. The "tree view" capability or 3-pane browser or whatever can be different views as well, although those don't quit fit the interface, and it would act like the "open folder in existing window" option if you turn something like that on.

Also, if there was some sort of "configurable view" that would allow scripting or external data sources .. possibly an extension of the "Smart Folders" idea, where data sources could be queried, views configured and extra controls added (to panels, etc), I think we could get something very much like a personal all-graphical WIKI built into the file system. With enough bonobo for editing components piece-meal and conglomerate views, active folders with your contect information pulled from evolution, and auto-linking and such for quick data, we can start pulling away from the /directories/and/files approach and start seeing the computer as views on information, with files and folders existing in the spatial area existing as neighbors with printers, trash cans, and whatever views on your personal data you can come up with using the active folder idea, the shelf, and personalized "panels" with each view.

Comments? crcrthought AT yahoo DOT com