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?

Yes, I like it

For me (a geek), it sounds perfect (in fact, I remember hoping for this solution since a long time ago). The object oriented design is really nice in itself. It's not just _simple_, it's just more logical at places. For example Nautilus always saved it's geometry for folders, but [b]only if you opened them in a new window[/b]! That made absolutely not much sense and never helped me. With each window as a folder, it makes a LOT of sense however. Also it makes sense that every item is opened in a new window, whether it's an image, a textfile or a folder. Embedding everything just didn't feel right, especially when once again the image I wanted to view was shrinked to fit into my Nautilus window. :/ Unfortunately opening folders in the same window but not everything else didn't feel much more logical.

Another advantage is, that those windows without useless UI stuff save a lot of screen space and it also feels faster (I can't measure it, because we are talking about less than a second per window on my average P3-1000!). This is perfect for two use cases:

a) Opening a folder from the desktop and launching a file in it. Even if there is a folder in a folder, it still feels much more convenient and quick. It's not like I had most of my stuff into deeply nested hirarchies.

b) Opening two windows and do drag and drop operations between them (because much less screen space is wasted).

It is _not_ practical however to constantly switch between nested folders (like the example of the user who had all mp3s in music/artist/album/ and probably used Nautilus all the time to navigate to different folders) or to find files into deeply nested hirarchies. For those cases I clearly prefer the navigational view, so I could simply launch a navigation window from my panel for those tasks (like I always did in Windows). I see no reason why it should be important for me that clicking any folder on the desktop should launch a navigation window.

Seriously, I don't see why some people flame about it. The _only_ possibility you'd lose would be to doubleclick on any desktop folder and get a navigational UI (without using the context menu). That sounds like an extremely minor drawback to me, compared to the advantages.

I can't comment on how much easier or harder it would be for people to learn this concept and the differences (that's the job of experts anyway), but I can comment on it saying that [b]I[/b] am looking forward to it. It always feels good to me when the advantages of two different methods are combined, instead of making them strictly optional and forcing me to decide.