]> Dogcows Code - chaz/openbox/commitdiff
this file is so old it's scary
authorMikael Magnusson <mikachu@comhem.se>
Sat, 27 Mar 2004 21:21:09 +0000 (21:21 +0000)
committerMikael Magnusson <mikachu@comhem.se>
Sat, 27 Mar 2004 21:21:09 +0000 (21:21 +0000)
DESIGN/thoughts [deleted file]

diff --git a/DESIGN/thoughts b/DESIGN/thoughts
deleted file mode 100644 (file)
index b7de0ad..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-goals:
-openbox3 is supposed to be a wm shell, in that it offers a window management
-  core, and you are able to make it look however you want by writing theme
-  engines.
-
-versioning:
-im kinda thinking of openbox3 as being a product on its own, and then future
-additions to it going as 3.x, instead of the crazy fast number system we've
-adhered to so far. openbox4 would be an entirely new product as well. Maybe not
-to the extent that 3 will be, but significantly different. If we ever even got
-to that point, 3.x could live forever! :)
-
-source heirarchy:
-openbox3/
-  rules/        architechture/platform specific Makefile rules
-  po/           translations into every language known to man, even klingon!
-  libob3/       classes which wrap obtool functionality, this is our toolkit (builds a separate .la)
-  src/          the window manager
-  util/                utility classes/functions (Rect, itostring, etc)
-  engines/      abstract interface and common code for the engines
-    simple/     initial testbed. renders a simple hardcoded decroation style
-    blackbox/   renders blackbox themes (bsetroot/bsetbg in here? no. fuck that)
-    gl/         renders insane gl themes
-    pixmap/     renders some sort of pixmap themes. a less generic name might
-                be nice. (?)
-    sawfish/    renders sawfish themes (?)
-  gfxcore/      base gfx stuff for all to use (BColor, etc)
-    gl/         code for drawing gl stuff
-    pixmap/     code for drawing pixmaps
-
-coding practices:
- braces for if's/etc's shall go like this:
-     if () {
-     }
-   but, braces for funtions/classes/structs shall go like this:
-     class foo
-     {
-     }
-   and
-     void func()
-     {
-     }
- thou shalt not 'cvs commit' without reading your 'cvs diff' first
- indentation: 2 spaces (NO TABS). just like the ob2 format.
- use const everywhere. pass pointer variables to functions as const.
- we will be using doxygen to build documentation for the source code. *every*
-   function must have a doxygen comment for it.
-
-misc:
- the libob external header(s) and the engine interface header need to be
-   installed to the system include/ dir
- make sure that obtools can render things with the current engine!
- im going to write our own configure script! see if that works out. It will use
-   the rules directory to support all these fun platforms.
- use GNU gettext for translation/nls support. See:
-   http://www.gnu.org/manual/gettext/html_chapter/gettext_10.html#SEC141
- for its config, it will use $prefix/share/openbox/rc3 and ~/.openbox/rc3
- unsigned is the DEVIL. we will use signed variables EVERYWHERE. Xlib
-   unsigned's should be converted to a signed long. If int isn't big enough
-   for your data, than use a long.
-
-src:
- everything will be event based. When you tell ob3 to add a workspace, it will
-   simply send the client message the same way an external app does. This way
-   there is only 1 code path for any process, not one for internally and one
-   for externally generated actions.
- fuck workspace classes. all windows will exist in a screen list, and any per-
-   workspace processing can be done by checking each window's workspace()
-   value.
- in each screen, have a list of the windows on the currently visible workspace.
-   This is updated when the workspace changes, or when windows are moved
-   between workspaces.
- do we provide a callback interface from the plugins for when they catch mouse
-   input on the decorations? we should make some way to make mouse input std
-   across engines
- dockapp support as good as wmaker
- click-drag menus like wmaker/pwm/etc
- allow for 'session management' of a sort. let the wm remember a window's
-   position/size/other attributes if they are saved by the user (window menu
-   or something). this is especially important for dockapps to be cool
- on shutdown, first try to close each window with a normal close message. there
-   should be a timeout for this, and then kill it hard after the timeout/with a
-   dialog/whatever. This should be a separate option from normal exit, and
-   it should not do this from catching a signal.
- for FocusIn/Out and Enter/LeaveNotify events, dont act on them immediately.
-   Rather, save which window's focused/entered until the queue is empty, then
-   if the focused/entered window has changed, act on it. This will be mad fast.
-   Do the same for changing workspaces.
- keybindings. inside. final. god damn. i dont need 2 copies of the window
-   manager running, one just grabbing keys.
- mouse gestures!
- resizing modes (support one of these)
-   old style like now but without the server grab
-   old style like now but creating windows which show the bars so no grab is
-     needed
-   opaque mode
-   opaque mode where the frame resizes, and the client is resized aferwards (i
-     dont like this)
- menus should have a most-recently or most-frequently chosen items section.
-
-engines:
- each engine builds as a separate .so library. they are opened by the src/ and
-   libob/ code.
- engines will be passed any number of screens, and must deal with them all with
-   a single instance.
- engines must get events for most everything so they can be cool
- you can run a different engine on each screen (most people wont want GL on
-   their second screen without accel!)
- engines are responsible for creating all of the appropriate decor windows
- engines must tell the wm how big the decorations are at all times and keep it
-   updated for things like gravity.
- all engines will have to inherit from an abstract interface defined in the
-   engines/ dir. there will be 2 abstact interfaces. the "lower power" mode,
-   and the "full power mode". The engines must each inherit from both
-   interfaces for the window manager and obtools to work.
- normally, an engine would setup the root window, window borders, timers, etc
-   for everything involved in decorating windows. But also, it needs to be able
-   to run in a slimmed mode that mostly consists of paintSurface() (the same
-   way the menus are painted probably!). This would then be used by client
-   apps like obtoolbar. These 2 modes are the "low power" and "full power"
-   interfaces described above.
-
-tool engine:
- FillSurface
- DrawBitmap (button pictures, such as X)
-
-main engine:
- DecorateWindow
- etc :)
This page took 0.024373 seconds and 4 git commands to generate.