On Thu, 2009-12-03 at 09:58 +0100, Alexander Larsson wrote:

> I don't have a finished design here, just throwing out the idea so we
> can think about it. One approach would be a shelf area, somewhat like
> embedding a nautilus view in the shell. Another way to do it would be
> more like the old-school gnome panel drawers, or the stacks in OSX
> dock.
> 
> It all depends on what we want to do with it. Stacks/drawers/piles are
> a
> way to keep a reference to a file (or set of files) that you can
> easily
> access (since its accessible from the always visible panel), however
> its
> more limited in how you can use the reference (possible operations:
> open
> it, move/copy it somewhere, remove from stack, dnd to application,
> open
> containing folder).
> 
> A shelf area has a lot more features, being a file manager view. On
> the
> other hand it takes a lot more screen space when active. Thus covering
> other applications when showed.

Been thinking about this more. One interesting question is what kind of
location a stack/drawer/whatever is. Is it a location where you store
files, or is it a set of references (links/aliases/etc) to a set of
files.

I played around a bit with stacks in OSX. A stack there is a storage
unit. In fact you create a stack by creating a directory somewhere and
dragging the directory to the dock. The directory stays where you
created it (well, you can move it around and it'll be tracked), but its
also availible as a button on the doc that shows the content of the
folder.

An alternative approach would be that you create a stack as an abstract
thing and then put files in it, leaving the files in their old places
but also appearing in the stack. Kinda like the results of a search.
Such an approach should probably use a different look and behavior than
a folder to emphasize that it doesn't actually store the files, but just
references them.

Having the stack be a storage makes it less confusing as to where the
files are stored, as there are no aliasing and files only appear in one
place in the UI. Its also easier to implement in terms of maintaining
the stack contents as changes happen in the filesystem. It also means
you don't accidentally delete files from a stack without you knowing its
in some stack.

However, there are several problems with it too:

You risk deleting the files when you get rid of stacks or things in the
stack because you're not aware that this is the sole representation of
the file.

You can't put (i.e. move) system or read-only shared files in a stack,
as you can't move them there. You can copy them there, but then you
don't get further updates to the file in question. 

You can only put each file in one stack.

You can't use the stack as a temporary location (shelf) for files when
e.g. moving them between different directories using the file manager.
Or rather, it works but it causes you to have to move the file twice,
which is problematic if the file is on a different mount than the stack
folder (especially if the mount is remote).

Most of this can be avoided by the user manually putting links to things
in the stack instead of actual files. However this seems like putting
the onus on the user to make the system usable.

Since we're sort of merging files with other kinds of entities (like
applications) in the rest of the UI we should probably allow these
things in the UI too. This would be easier to do if the stack contents
were not tightly bound to a folder and its files. (Its doable with
desktop file links and some magic, but that doesn't seem right.)

I guess the main question is what kind of usecases we see for this and
which we want to support. One major goal is to replace the desktop and
integrate it into the shell. The desktop has a bunch or uses:

1) Its a place where you can keep around the files you're currently
   working on, for easy access and visibility while you're working on
   them.
2) A default scratch area for creating/saving files that are either
   temporary or created in an unstructured fashion before being filed
   away in some longterm location. (As opposed to figuring out the 
   archiving location before actually starting to work, or having 
   temporary files mixed up with "stored" files.)
3) Its got a trashcan that is "always" visible (if not covered)
   that can be used as a DnD target for various operations
4) Its got shortcuts to currently mounted volumes and the standard FS
   locations.
   These can be used as dnd target, but are really mostly used as
   shortcuts to open the locations, since they only point to the root
   of each volume.
5) Its a place where you can put application launchers and uri shortcuts
   (also not a goal from our side, the panel is where that was supposed
    to happen, but in practice its what many do, maybe inherited from
    windows)
6) Its a storage location 
   (This is not something we intend it to be used as, but its what
    happen in practice with things being downloaded and saved on the
    desktop and then left there, making it less useful)

I think gnome-shell already does 4 and 5 pretty well, and 6 is not
really interesting as a goal. That leaves 1 to 3.

1 sort of implies having a set of links to files stored elsewhere, while
2 is more of a storage location. For 2, the alternative to having this
on the desktop or as a container embedded in the panel is to launch the
file manager in e.g. the home directory for this. Although that makes
such an operation several step longer, and mixes up temporary files with
the other files in the home directory.

-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 Alexander Larsson                                            Red Hat, Inc 
       al...@redhat.com            alexander.lars...@gmail.com 
He's a lounge-singing alcoholic farmboy fleeing from a secret government 
programme. She's a bloodthirsty bisexual mercenary with the power to see 
death. They fight crime! 

-- 
nautilus-list mailing list
nautilus-list@gnome.org
http://mail.gnome.org/mailman/listinfo/nautilus-list

Reply via email to