diff options
Diffstat (limited to 'README')
-rw-r--r-- | README | 223 |
1 files changed, 223 insertions, 0 deletions
@@ -0,0 +1,223 @@ +Metacity is not a meta-City as in an urban center, but rather +Meta-ness as in the state of being meta. i.e. metacity : meta as +opacity : opaque. Also it may have something to do with the Meta key +on UNIX keyboards. + +The first release of Metacity is version 2.3. Metacity has no need for +your petty hangups about version numbers. + +METACITY FEATURES +=== + + - Boring window manager for the adult in you. Many window managers + are like Marshmallow Froot Loops; Metacity is like Cheerios. + + - Uses GTK+ 2.0 for drawing window frames. This means colors, fonts, + etc. come from GTK+ theme. + + - There are 6 workspaces. + + - Global keybindings: + Alt-F1 to Alt-F6 switch workspaces + Alt-1 to Alt-6 switch workspaces + Alt-Tab forward cycle window focus + Alt-Shift-Tab backward cycle focus + Alt-Escape focus previous window + + - Window keybindings: + Alt-space window menu + + Mnemonics work in the menu. That is, Alt-space then underlined + letter in the menu item works. + + Choose Move from menu, and arrow keys to move the window. + While moving, hold down Control to move slower, and + Shift to snap to edges. + Choose Resize from menu, and nothing happens yet, but + eventually I might implement something. + + - Window mouse bindings: + + Clicking anywhere on frame with button 1 will raise/focus window + + If you click a window control, such as the close button, then the + control will activate on button release if you are still over it + on release (as with most GUI toolkits) + + If you click and drag borders with button 1 it resizes the window + + If you click and drag the titlebar with button 1 it moves the + window. + + If you click anywhere on the frame with button 2 it moves the window, + without raising it. + + If you click anywhere on the frame with button 3 it shows the + window menu. + + If you hold down Alt and click inside a window, it will move the + window (buttons 1 and 2) or show menu (button 3). + + If you pick up a window with button 1 and then switch desktops + the window will come with you to the new desktop, this is + a feature copied from Enlightenment. + + - Session management: + + Metacity connects to the session manager and will set itself up + to be respawned. + + - Here is an example of how you can configure the Metacity + window border appearance in ~/.gtkrc-2.0: + + style "metacity-style" + { + font_name = "Sans 16" + MetaFrames::title_border = { 7, 7, 7, 7 } + MetaFrames::button_width = 25 + bg[NORMAL] = { 0.0, 0.0, 0.0 } + } + + class "MetaFrames" style "metacity-style" + + You get the idea. It is just your basic GTK+ rc file, the + window borders are a widget called MetaFrames, + look in frames.c:meta_frames_class_init() for all the style + properties that you can configure. + + - Metacity implements much of the new window manager spec from + freedesktop.org, and much of the ICCCM. But then there are + parts of each that it doesn't implement, just because I haven't + yet. + +METACITY BUGS, NON-FEATURES, AND CAVEATS +=== + + - Metacity creates a big file in your home directory called + ~/metacity.log with a bunch of debug spew. + + - If you want a number of workspaces which is not 6, you have to + edit screen.c and recompile. + + - If you want keybindings which are not the ones mentioned above + as features, you have to edit keybindings.c and recompile. + + - Metacity does not have any way to unminimize a window. So + clicking the minimize button is sort of a bad idea. + + - Metacity uses the new window manager spec, but only random bits + of the old GNOME spec. It correctly advertises exactly which + parts of the GNOME spec it supports, but it does not support + enough of it to make the GNOME task list and desk guide happy, + and they do not support the new spec. I don't want anyone to + spend time sending me patches to support the old GNOME spec; + instead, send patches to the task list and desk guide to support + the new spec. As far as I know, Metacity does support enough + of the new spec to allow a working tasklist and pager. + + Upshot: task list and desk guide DO NOT WORK with Metacity. + + - Metacity turns off its keybindings for Emacs, because I use + Alt-space in Emacs, and getting a window menu annoys me. + + - Cycling windows with Alt-Tab is flickery, AFAIK because + Metacity passes the entire window stack to XRestackWindows() + every time you restack. Instead it should probably only restack + windows that have changed their stacking with respect to one + another. + + - Various operations, such as minimize, maximize, etc., should + have simple animations to make them clearer to users. + + - Metacity registers with the session manager, but doesn't actually + remember window sizes and positions. + + - I haven't even read the ICCCM section about colormaps. So if you + have an 8-bit display you are basically screwed. + + - Metacity doesn't properly claim the window manager selection + as described in the ICCCM. But then, most other window managers + don't handle this correctly either. + + - I know there's at least one race condition involving rapidly + created and destroyed windows that will crash Metacity. + + - Window placement is always cascade for now; I want to implement + "first fit, falling back to cascade if no fit." + (Configurable placement algorithms are stupid though, don't + send me patches for any bogus ones.) + + - Maximization and movement constraints do not take the + GNOME panel into account. Most of the code already handles + this (using workspace->workarea in workspace.h), but + workspace->workarea isn't ever actually calculated. + Metacity needs to keep this area up-to-date using the hints the + panel sets. + +COMPILING METACITY +=== + +You need GTK+ 1.3.x (to become 2.0). See configure.in for the exact +version you need. Metacity is a fairly trivial 6000-line C program, so +once you get GTK+ built it should be no problem to build Metacity. + +REPORTING BUGS +=== + +Report new bugs to hp@redhat.com for now. Will switch to Bugzilla +sometime probably. + +FAQ +=== + +Q: Will you add my feature? + +A: Probably not, unless it makes sense to turn on by unconditionally, + or is genuinely a harmless preference that I would not + be embarrassed to put in a user-friendly configuration dialog. + + Metacity has a "no crackrock" policy, with some exceptions + I'm mildly embarrassed about. For example, multiple workspaces + probably constitute crackrock, they confuse most users + and really are not that useful if you have a decent tasklist and + so on. But I am too used to them to turn them off. + Sloppy focus is probably crackrock too. Oh, and my Alt-1 thru Alt-6 + keybindings are definitely on crack. + + But don't think unlimited crack is OK just because I slipped up a + little. No slippery slope here. + +Q: How do I add a configuration option? + +A: You don't, until GConf 2 is relatively easy to compile and I feel + like adding it as a dependency. + +Q: Will Metacity be part of GNOME? + +A: If Metacity is ever better than the other options, and the GNOME + Project so chooses. But Metacity may continue to suck forever + because I might get tired of it; or Metacity's conservative + nature might not make sense for the snazzy world of + GNOME. Who knows. I'm not worrying about this, and you shouldn't + either. + +Q: Why can't I move XMMS? + +A: Because XMMS is broken and is trying to move itself. Metacity + does not tolerate insolent windows who believe they can + self-manage. Use Alt-button1 to move XMMS using Metacity. + +Q: Did you spend a lot of time on this? + +A: Metacity is about 6000 lines of code, which took a few weekends and + evenings to write. If it ever becomes more polished it will + probably grow 2-3 more thousand lines of code and suck a few more + weekends of time. If I started adding all kinds of features and + crack-ridden configuration options, it might take more time than that. + +Q: How can you claim that you are anti-crack, while still + writing a window manager? + +A: I have no comment on that. + + |