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?

Window management will be the key

I can certainly see the merits of this (consistency of where the windows appear will be vital), but I never really warmed to these interfaces due to the sheer clutter they tended to create. On Windows you ended up with 20 different folder windows, and an unmanageable taskbar (so don't try using that to access all those different windows) because every taskbar button was compressed to a slim unlabelled thing so as to be able to fit everything on that bar. The end result is that you quickly gave up trying to get by that way. Easier to just bounce around a single view window via the tree.

To put it in the terms similar to the Ars Technica article, if you want to look at a bunch of seperate pieces of paper you spread them out on your desk. If you want to look at 1000 bits of paper you put them in chapters in a book with contents and index pages.

Which is not to say the spatial concept won't work, merely that you need a good way to manage access to all those seperate windows that will be created.

I always liked multiple/virtual desktops because that gave you a spatial way to organise a lot of different windows. Could you tie that to the spatial file manager concept? That is, when you say you expect a directory window to remember where it was - does that include which desktop it was on? That has serious advantages - but then you want multiple desktops that work elegantly (enlightenment always had the best AFAIAC - multiple floating virtual desktops, with a powerful pager to manipulate windows with) otherwise it will just be a mess.

And is there anything wrong with using a window with the directory heirarchy (think of it as the index, as in a book) as your means to manage spring loaded folders rather than a dock?

Leland McInnes