preferences, sessions, etc. notes


Trying to systematically think through what work needs doing on
session management, GConf, control panels, etc.

Here are some notes, all questions so far. Comments much appreciated.


Things users might want to do
 (pure speculation)

 - have state specific to a display (monitor/mouse/keyboard
   combination, i.e. typically a single physical computer)
 - explicitly create a set of apps that normally launch when they log
 - have these apps they saved come up at a specific size/position 
 - be able to log out, and log in again, automatically/implicitly
   restoring the apps they had open on logout
 - have apps restore their size/position each time they are launched,
   a la MacOS (different from restoring size/pos of a particular
   instance, as with session management)
 - temporarily log out, let someone else log in, then go back 
   to their session (as with Windows XP)

A sampling of preferences, settings, state, whatever

panel - 
  - animation speed for hiding
  - tile style
  - size of icons in menus
  - menu contents
  - keybindings
properties of specific panels - 
  - panel type
  - size
nautilus - 
  - icon/list view
  - fonts to use 
  - open files in new window vs same window
  - window contents (toolbar, sidebar)
  - manage the desktop
  - single vs. double click
  - home URL
  - search engine URL
  - news panels

gedit - 
  - show statusbar
  - toolbar style
  - font, colors
  - print setup (word wrap, banner, line numbers, paper size)

generic properties of any app's current state - 
  - number and type of open windows
  - window size/position 
  - window desktop
  - documents opened in each window

desktop-wide preferences/state - 
  - theme
  - background/wallpaper
  - default font
  - mouse acceleration
  - key repeat rate
  - screensaver
  - favorites/bookmarks
  - recently-used documents

Current infrastructure

Session management: we have a unique identifier for each application
instance, which allows apps to save per-instance state. Also, a
mechanism for window managers to save application window state.  Could
trivially add an ID for a global named session, allowing us to save
per-session state. (But importantly, in the current codebase, you
can't store per-session state; only
per-instance-of-an-app-that-is-in-a-session state. A subtle
distinction, but it means that currently a global setting like
background color can't be per-session. We'd need a trivial SM protocol
extension for this.)

GConf: Stores preferences in a global process-transparent way.

gnome_config_*: Stores simple text files.

bonobo-config: stores key-value pairs in a variety of locations
including GConf or text files.

Archiver: stores XML files with date-stamped dumps of current state,
and can stuff the snapshot from any date back into the config
system. (right?)


What do users really want to do?

What should the UI for doing that look like?

How do we reliably and consistently implement it across the desktop?

How do we do this while still providing the admin benefits of GConf?

Can we divide the list of sample prefs/state given above into some
sort of categories? Do we treat some of them differently?

Did we answer any of the above questions with something overengineered
or overcomplicated?

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]