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

You just, still and maybe always try to split, to pro or con.

Why splitting oo from navigation model and just cutting down both principles? To explain:

I use Nautilus as a kind of Rapid Application Development Toolkit for massdata and media. I need nealy all of the modules though not all in every case. Sometimes I just use nautilus as a viewer or media player, sometimes I use it to configure or modify my system. Sometimes I browse through html pages and sort them by using the tree-view with files included besides the browser view. I would like to use nautilus for browsing my emails. I could not think of a more efficient way because nautilus has everything I need for this. It can handle multiple folders by nature and would just browse through them like on harddisk (mbox files are just files on harddisk). A module, an email-view, could give me some extras like filters.

To come to the point. I never saw a file browser in nautilus. It did not start that way. And I never saw an oo tool in it because I have no use of that. But: nautilus is that flexible that I was able to skip a handful of tools. I do not use the ugly control-center but nautilus. I do not use an external cd burner anymore but nautilus. I do not use crazy font tools anymore but nautilus. I do not use tools like xmms, gst-player or totem anymore but nautilus. I don't need the other tools anymore because nautilus is so awful better in doing that stuff. I would love to see it managing my emails. Really.

The point is not to oo or to navigate. This was never the question, ask eazel. The point is how to make use of nautilus. I do it several ways and would not like anyone touching any feature. Nevertheless I am ok with oo windows (pop ups I would call them because they are the same penetrant). If somebody wants to use them only he can do. I would just like to find a configuration dialog that allows me to put in the views into the window again.

Very important are tokens (window id's) that make it possible that the window manager remembers several nautilus sessions individually. This way I could start a nautilus oo window for just looking at new email, a nautilus tree-view for browsing through big folders (where I store stuff temporarily before I am clear about what to do with that) and a nautilus audio-view for playing my vorbis files.

You got it?

Don't split, don't counteract. Just start nautilus with an oo window and offer those who want it a configuration dialog for putting in all the stuff they need for that window. Then allow them to save this configuration a way that the user can start explicitely this window with this configuration and the window manager remembers all the rest like geometry and position for explicitely this window. Then, we all get happy because we all can still do what we already did with nautilus and can do it more explicit and in the result much better.

Going this way you can start with oo windows without negative effects for any user