summaryrefslogtreecommitdiffstats
path: root/kdesktop/DESIGN
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commit4aed2c8219774f5d797760606b8489a92ddc5163 (patch)
tree3f8c130f7d269626bf6a9447407ef6c35954426a /kdesktop/DESIGN
downloadtdebase-4aed2c8219774f5d797760606b8489a92ddc5163.tar.gz
tdebase-4aed2c8219774f5d797760606b8489a92ddc5163.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kdesktop/DESIGN')
-rw-r--r--kdesktop/DESIGN94
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, faure@kde.org
+ Martin R. Jones, mjones@kde.org (screensaver)
+ Geert Jansen, g.t.jansen@stud.tue.nl (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)
+