2001-07-28 02:35:19 -04:00
|
|
|
|
2001-08-07 01:52:51 -04:00
|
|
|
Don't commit substantive code in here without asking me,
|
|
|
|
hp@redhat.com. Adding translations, no-brainer typo fixes, etc. is
|
|
|
|
fine.
|
|
|
|
|
2001-07-28 02:35:19 -04:00
|
|
|
The script src/run-metacity.sh is useful to hack on the window manager.
|
|
|
|
It runs metacity in an Xnest. e.g.:
|
|
|
|
CLIENTS=3 ./run-metacity.sh
|
|
|
|
or
|
|
|
|
DEBUG=memprof ./run-metacity.sh
|
2002-02-10 13:00:16 -05:00
|
|
|
or
|
|
|
|
DEBUG_TEST=1 ./run-metacity-sh
|
2001-07-28 02:35:19 -04:00
|
|
|
or whatever.
|
|
|
|
|
2002-02-10 13:00:16 -05:00
|
|
|
The tool metacity-message can be used as follows:
|
|
|
|
metacity-message reload-theme
|
|
|
|
metacity-message restart
|
|
|
|
metacity-message enable-keybindings
|
|
|
|
metacity-message disable-keybindings
|
|
|
|
|
|
|
|
metacity-window-demo is good for trying behavior of various kinds of window
|
|
|
|
without launching a full desktop.
|
|
|
|
|
2001-07-28 02:35:19 -04:00
|
|
|
src/window.c is where all the guts of the window manager live. This is
|
|
|
|
basically the only remotely scary file.
|
|
|
|
|
|
|
|
src/frames.c is the GtkWidget that handles drawing window frames.
|
|
|
|
|
|
|
|
src/core.h defines the interface used by the GTK portion of the window
|
|
|
|
manager to talk to the other portions. There's some cruft in here
|
|
|
|
that's unused, since nearly all window operations have moved out of
|
|
|
|
this file so frameless apps can have window operations.
|
|
|
|
|
|
|
|
src/ui.h defines the interface the plain Xlib portion of the window
|
|
|
|
manager uses to talk to the GTK portion.
|
|
|
|
|
|
|
|
Files that include gdk.h or gtk.h are not supposed to include
|
|
|
|
display.h or window.h or other core files.
|
|
|
|
|
|
|
|
Files in the core (display.[hc], window.[hc]) are not supposed to
|
|
|
|
include gdk.h or gtk.h.
|
|
|
|
|
2002-02-10 13:00:16 -05:00
|
|
|
src/theme.c and src/theme-parser.c have the theme system; this is
|
|
|
|
well-modularized from the rest of the code, since the theme viewer app
|
|
|
|
links to these files in addition to the WM itself.
|
|
|
|
|
2001-07-28 02:35:19 -04:00
|
|
|
When hacking, remember that you can have multiple screens. The code is
|
|
|
|
also written to support multiple displays, but this is useless, since
|
|
|
|
you can just run two copies of the WM. Also, an XKillClient() or
|
|
|
|
shutdown on any display causes Xlib to exit the app, so it would be
|
|
|
|
broken. So the multi-display thing is mostly just for code
|
|
|
|
cleanliness. Multi-screen on the other hand is important for some
|
|
|
|
people.
|
|
|
|
|
|
|
|
Remember that strings stored in X properties are not in UTF-8, and
|
|
|
|
they have to end up in UTF-8 before we try putting them through Pango.
|
|
|
|
|
|
|
|
If you make any X request involving a client window, you have to
|
|
|
|
meta_error_trap_push() around the call; this is not necessary for
|
|
|
|
X requests on the frame windows.
|
|
|
|
|
|
|
|
Remember that not all windows have frames, and window->frame can
|
|
|
|
be NULL.
|
|
|
|
|
|
|
|
The code could use cleanup in a lot of places, feel free to do so.
|
|
|
|
|
|
|
|
|