diff options
Diffstat (limited to 'kdesktop/DESIGN')
-rw-r--r-- | kdesktop/DESIGN | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/kdesktop/DESIGN b/kdesktop/DESIGN new file mode 100644 index 000000000..e2a6a2b8b --- /dev/null +++ b/kdesktop/DESIGN @@ -0,0 +1,94 @@ +KDesktop Design Document + +Author : + David Faure, [email protected] + Martin R. Jones, [email protected] (screensaver) + Geert Jansen, [email protected] (background code) + +Last modified: 24 Oct 1999 + +Overall design of KDesktop : +============================= + +KDesktop is the program that handles the desktop icons, +the popup menus for the desktop, the mac menubar, and the +screensaver system. + +Files : +======= + +main.* : main +desktop.* : the icon container for the desktop icons +krootwm.* : right and middle mouse button popup menus, Mac menubar +bg*.*: Background renderer/manager. + +icons.* : old code, not used anymore. + We need to borrow ideas from it for positioning icons after a DnD + (in kiconcontainer so that it works with konqueror as well) + - well, only if we want dropped icons to remain where they have been + dropped :) + We also need to store the desktop icons position, like was done in kfm. + and we need to do it for konqy as well. + +KDesktopIface* : DCOP interface for kdesktop, used by kfmclient + +lock* : screen saver/locker + +Libs used by KDesktop +====================== + +kdecore, kdeui, kfile - usual stuff :) +libkio - I/O stuff, mimetypes, services, registry +libkonq - properties dialog, templates ("new") menu, dir lister, settings + +Screensaver +=========== + +The screensaver now works in a similar way to xscreensaver, i.e. a driver +(kdesktop) provides the timeout, locking, and blanking functionality, but +does no actual drawing. A separate stand-alone program capable of +drawing on a supplied window is used to do the actual fancy graphics. +xscreensaver's "hacks" will work with the KDE screensaver engine. + +This makes adding new screensavers trivial, and means one less process that +must always be running (compared to KDE 1.x). + +The screensaver is controlled via DCOP: + +KScreensaverIface::configure() Reloads the screensaver config from desktoprc. +KScreensaverIface::lock() Locks the screen immediately. +KScreensaverIface::save() Saves the screen immediately. +KScreensaverIface::isEnabled() returns true if the screensaver is enabled. +KScreensaverIface::isBlanked() returns true if the screen is currently blank. + +Backgrounds +=========== + +The new background code is in bgrender.cpp and bgmanager.cpp. Some features: + +* Support for xearth like programs. +* Can export a pixmap of the desktop background for pseudo transparency. + +Multiple monitors +================= +Two monitors showing different things (not a mirror-setup) can be configured +in X to either use one X screen, or 2 X screens. Difference is that if I +drag a window from one monitor to the other the application gets asked to +repaint itself on a 2 screen setup and a simple move of the window will be +done in memory (by XFree) if you have a 1 screen setup. + +Monitors example: + +----+ +-----+ 2 monitors, with same resolution to keep it simple. + | | | | + +----+ +-----+ + +In case of 1 screen (xinerama) + +------------+ + | + desktopGeometry == screenGeometry == 3200 x 1200 + +------------+ + +In case of 2 screen (multihead) + +----+ +-----+ + | | | | desktopGeometry = 3200 x 1200 + +----+ +-----+ screenGeometry = 1600 x 1200 (for each monitor) + |