diff --git a/ChangeLog b/ChangeLog index 6b2f15e01..0ca192400 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2002-02-10 Havoc Pennington + + * src/tools/Makefile.am (EXTRA_DIST): add $(icon_DATA) + + * configure.in: 2.3.55 + + * HACKING: update + + * README: update + 2002-02-09 Havoc Pennington * src/theme.c (meta_theme_set_current): add a newline to an error diff --git a/HACKING b/HACKING index 864b18803..013a386ca 100644 --- a/HACKING +++ b/HACKING @@ -8,8 +8,19 @@ It runs metacity in an Xnest. e.g.: CLIENTS=3 ./run-metacity.sh or DEBUG=memprof ./run-metacity.sh +or + DEBUG_TEST=1 ./run-metacity-sh or whatever. +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. + src/window.c is where all the guts of the window manager live. This is basically the only remotely scary file. @@ -29,6 +40,10 @@ 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. +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. + 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 diff --git a/NEWS b/NEWS index e69de29bb..346403453 100644 --- a/NEWS +++ b/NEWS @@ -0,0 +1 @@ +See README. \ No newline at end of file diff --git a/README b/README index 653f0f9ce..197421b98 100644 --- a/README +++ b/README @@ -3,16 +3,14 @@ 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 +The first release of Metacity was version 2.3. Metacity has no need for your petty hangups about version numbers. COMPILING METACITY === -You need GTK+ 1.3.x (to become 2.0), at least version 1.3.9. At the -moment CVS HEAD works, but that can change. Metacity is a fairly -trivial 6000-line C program, so once you get GTK+ built it should be -no problem to build Metacity. +You need GTK+ 1.3.x (to become 2.0), at least version 1.3.13. At the +moment CVS HEAD works, but that can change. There are SRPMs and sometimes RPMs on the ftp site, but you'd be pretty lucky to get them to work for now, since they are often out of @@ -39,17 +37,29 @@ METACITY FEATURES - Uses GTK+ 2.0 for drawing window frames. This means colors, fonts, etc. come from GTK+ theme. - - There are 6 workspaces. + - Has a simple theme system and a couple of extra themes come with it. + Change themes via gconf-editor or gconftool: + gconftool-2 --type=string --set /apps/metacity/general/theme Crux + gconftool-2 --type=string --set /apps/metacity/general/theme Gorilla + gconftool-2 --type=string --set /apps/metacity/general/theme Atlanta + + - Change number of workspaces via gconf-editor or gconftool: + gconftool-2 --type=int --set /apps/metacity/general/num_workspaces 5 + + - Change focus mode: + gconftool-2 --type=string --set /apps/metacity/general/focus_mode mouse + gconftool-2 --type=string --set /apps/metacity/general/focus_mode sloppy + gconftool-2 --type=string --set /apps/metacity/general/focus_mode click - 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 - Alt-Left Arrow previous workspace - Alt-Right Arrow next workspace - Ctrl-Alt-D minimize/unminimize all, to show desktop + 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 + Ctrl-Alt-Left Arrow previous workspace + Ctrl-Alt-Right Arrow next workspace + Ctrl-Alt-D minimize/unminimize all, to show desktop - Window keybindings: Alt-space window menu @@ -63,7 +73,7 @@ METACITY FEATURES Shift to snap to edges. Choose Resize from menu, and nothing happens yet, but - eventually I might implement something. + eventually I might implement something. - Window mouse bindings: @@ -78,9 +88,6 @@ METACITY FEATURES 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. @@ -100,23 +107,19 @@ METACITY FEATURES be respawned. It theoretically restores sizes/positions/workspace for session-aware applications. - - Here is an example of how you can configure the Metacity - window border appearance in ~/.gtkrc-2.0: + - Here is an example of how you can configure GTK colors/fonts + for metacity windows only, 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. + window borders are a widget called MetaFrames. Metacity-specific styles can also be included in any GTK+ theme. @@ -136,24 +139,24 @@ METACITY FEATURES - if you have the proper X setup, set the GDK_USE_XFT=1 environment variable to get antialiased window titles. + - considers the panel when placing windows and maximizing + them. + 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. + - Some of the default keybindings (notable Alt+number) are total + crackrock. + - The only way to unminimize at the moment is to use the Alt+Tab - move-between-windows feature. - (If you had a WM-spec-compliant tasklist, it would work - for unminimization also.) - (Or you can use "test-wnck" from the libwnck CVS module to - unminimize, but it's not much of a UI ;-) + move-between-windows feature, or to run the GNOME 2 panel + and tasklist. - Metacity uses the new window manager spec, but only random bits of the old GNOME spec. It correctly advertises exactly which parts of @@ -165,7 +168,8 @@ METACITY BUGS, NON-FEATURES, AND CAVEATS 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. + Upshot: GNOME 1.x 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. @@ -173,7 +177,7 @@ METACITY BUGS, NON-FEATURES, AND CAVEATS instead of Alt as the main keybinding shortcut, if super/hyper exist, and then keyboards with a windows key can use that for WM functions and Alt for application shortcuts. - We'd fall back to Alt if no other suitable modifier existed. + We'd fall back to Alt if no other suitable modifier existed. - I haven't even read the ICCCM section about colormaps. So if you have an 8-bit display you are basically screwed. @@ -189,23 +193,12 @@ METACITY BUGS, NON-FEATURES, AND CAVEATS (Configurable placement algorithms are stupid though, don't send me patches for any bogus ones. Let's just pick a good one.) - - 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. - - - Should support click-to-focus as an option. - - Should Metacity support flipping in right-to-left locales? I don't know what window managers look like in a right-to-left locale. I assume the window titles should be right-justified; should the window controls also be flipped? - - Need keyboard shortcuts for focusing dock windows (though since - current GNOME panel has no useful keynav, this doesn't get you far - at the moment). + - Need keyboard shortcuts for focusing dock windows. - Resize menu item doesn't do anything. It's intended to enter resize-with-the-keyboard mode, similar to Move menu item. @@ -279,11 +272,6 @@ A: If it makes sense to turn on unconditionally, Just be prepared to hear the above objections if your patch adds some crack-ridden configuration option. -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: This is not the current plan, though of course I'm happy to see the @@ -301,12 +289,6 @@ A: Metacity is in no way funded, endorsed, or encouraged by Red Hat, of window managers for Linux" an urgent problem. Just a wild guess though. -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: Why does Metacity remember the workspace/position of some apps but not others? @@ -353,11 +335,8 @@ A: I could conceivably be convinced to use viewports _instead_ of 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. +A: Originally the answer was no. Sadly the answer is now yes. + Still, it's only 12,000 lines of code. Q: How can you claim that you are anti-crack, while still writing a window manager? diff --git a/configure.in b/configure.in index 30222f924..19e6e9488 100644 --- a/configure.in +++ b/configure.in @@ -2,7 +2,7 @@ AC_INIT(src/display.c) AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(metacity, 2.3.34) +AM_INIT_AUTOMAKE(metacity, 2.3.55) # Honor aclocal flags ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS" @@ -84,7 +84,7 @@ ALL_LINGUAS="da es gl lv ms no pt ru sk sv tr uk" AM_GLIB_GNU_GETTEXT ## here we get the flags we'll actually use -PKG_CHECK_MODULES(METACITY, gtk+-2.0 >= 1.3.13 gconf-2.0 >= 1.1.5) +PKG_CHECK_MODULES(METACITY, gtk+-2.0 >= 1.3.13 gconf-2.0 >= 1.1.7) PKG_CHECK_MODULES(METACITY_MESSAGE, gtk+-2.0 >= 1.3.13) PKG_CHECK_MODULES(METACITY_WINDOW_DEMO, gtk+-2.0 >= 1.3.13) diff --git a/po/ms.po b/po/ms.po index e31394350..52942f9f5 100644 --- a/po/ms.po +++ b/po/ms.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: Metacity 2.3.x\n" -"POT-Creation-Date: 2002-02-11 01:01+0800\n" +"POT-Creation-Date: 2002-02-08 01:59-0500\n" "PO-Revision-Date: 2002-02-11 01:01+0800\n" "Last-Translator: Hasbullah Bin Pit \n" "Language-Team: Projek Gabai (Bahasa Melayu) " msgid "Unknown element %s" msgstr "Unsur yang tidak dikenali %s" -#: src/theme.c:378 +#: src/theme.c:348 +msgid "top" +msgstr "" + +#: src/theme.c:350 +msgid "bottom" +msgstr "" + +#: src/theme.c:352 +msgid "left" +msgstr "" + +#: src/theme.c:354 +msgid "right" +msgstr "" + +#: src/theme.c:368 #, c-format -msgid "Coordinate expression contains character '%c' which is not allowed" +msgid "frame geometry does not specify \"%s\" dimension" +msgstr "" + +#: src/theme.c:387 +#, c-format +msgid "frame geometry does not specify dimension \"%s\" for border \"%s\"" +msgstr "" + +#: src/theme.c:738 +msgid "Gradients should have at least two colors" +msgstr "" + +#: src/theme.c:828 +#, c-format +msgid "" +"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] " +"where NORMAL is the state; could not parse \"%s\"" +msgstr "" + +#: src/theme.c:842 +#, c-format +msgid "" +"GTK color specification must have a close bracket after the state, e.g. gtk:" +"fg[NORMAL] where NORMAL is the state; could not parse \"%s\"" +msgstr "" + +#: src/theme.c:853 +#, c-format +msgid "Did not understand state \"%s\" in color specification" +msgstr "" + +#: src/theme.c:866 +#, c-format +msgid "Did not understand color component \"%s\" in color specification" +msgstr "" + +#: src/theme.c:896 +#, c-format +msgid "" +"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the " +"format" +msgstr "" + +#: src/theme.c:907 +#, c-format +msgid "Could not parse alpha value \"%s\" in blended color" +msgstr "" + +#: src/theme.c:917 +#, c-format +msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0" +msgstr "" + +#: src/theme.c:956 +#, fuzzy, c-format +msgid "Could not parse color \"%s\"" +msgstr "Tak dapat mencipta direktori %s: %s\n" + +#: src/theme.c:1206 +#, fuzzy, c-format +msgid "Coordinate expression contains character '%s' which is not allowed" msgstr "Penyataan kordinat mengandungi aksara '%c' yang tidak diizinkan" -#: src/theme.c:405 +#: src/theme.c:1233 #, c-format msgid "" "Coordinate expression contains floating point number '%s' which could not be " @@ -342,40 +310,47 @@ msgstr "" "Penyataan koordinat mengandungi nombor titik apungan '%s' yang tak dpaat " "dihantar" -#: src/theme.c:419 +#: src/theme.c:1247 #, c-format msgid "Coordinate expression contains integer '%s' which could not be parsed" msgstr "Penyataan kordinat mengandungi integer '%s' yang tak boleh dihantar" -#: src/theme.c:524 +#: src/theme.c:1314 +#, fuzzy, c-format +msgid "" +"Coordinate expression contained unknown operator at the start of this text: " +"\"%s\"" +msgstr "Penyataan kordinat mempunyai pembolehubah tidak diketahui \"%s\"" + +#: src/theme.c:1371 msgid "Coordinate expression was empty or not understood" msgstr "Penyataan kordinat kosong dan tidak difahami" -#: src/theme.c:663 src/theme.c:673 src/theme.c:698 +#: src/theme.c:1510 src/theme.c:1520 src/theme.c:1554 msgid "Coordinate expression results in division by zero" msgstr "Penyataan kordinat dibahagi sifar" -#: src/theme.c:706 +#: src/theme.c:1562 msgid "" "Coordinate expression tries to use mod operator on a floating-point number" msgstr "" "Penyatana kordinat cuba menggunakan operator mod pada nombor titik apungan" -#: src/theme.c:754 -#, c-format +#: src/theme.c:1619 +#, fuzzy, c-format msgid "" -"Coordinate expression has an operator \"%c\" where an operand was expected" +"Coordinate expression has an operator \"%s\" where an operand was expected" msgstr "Penyataan kordinat mempunyai operator \"%c\" dimana operand diperlukan" -#: src/theme.c:763 +#: src/theme.c:1628 msgid "Coordinate expression had an operand where an operator was expected" msgstr "Penyataan kordinat mempunyai operand dimana operator diperlukan" -#: src/theme.c:771 +#: src/theme.c:1636 msgid "Coordinate expression ended with an operator instead of an operand" msgstr "Penyataan kordinat ditamatkan dengan operator selain daripada operand" -#: src/theme.c:781 +#: src/theme.c:1646 #, c-format msgid "" "Coordinate expression has operator \"%c\" following operator \"%c\" with no " @@ -384,7 +359,7 @@ msgstr "" "Penyataan kordinat mempunyai operator \"%c\" selepas operator \"%c\" tanpa " "operand diantaranya" -#: src/theme.c:883 +#: src/theme.c:1765 msgid "" "Coordinate expression parser overflowed its buffer, this is really a " "Metacity bug, but are you sure you need a huge expression like that?" @@ -392,44 +367,95 @@ msgstr "" "Penghantar penyataan kordinat telah overflow buffernya, ini memang pepijat " "metacity, tetapi anda pasti memerlukan penyataan yang besar sebegitu?" -#: src/theme.c:912 +#: src/theme.c:1794 msgid "Coordinate expression had a close parenthesis with no open parenthesis" msgstr "Penyataan kordinat mempunyai penutup kurungan tanpa pembuka kurungan" -#: src/theme.c:927 -#, c-format -msgid "Coordinate expression had unknown variable \"%s\"" +#: src/theme.c:1857 +#, fuzzy, c-format +msgid "Coordinate expression had unknown variable or constant \"%s\"" msgstr "Penyataan kordinat mempunyai pembolehubah tidak diketahui \"%s\"" -#: src/theme.c:984 +#: src/theme.c:1914 msgid "Coordinate expression had an open parenthesis with no close parenthesis" msgstr "\"Penyataan kordinat mempunyai membuka kurungan tanpa penutup kurungan" -#: src/theme.c:995 +#: src/theme.c:1925 msgid "Coordinate expression doesn't seem to have any operators or operands" msgstr "Penyataan kordinat tidak mempunyai operator atau operand" -#: src/theme.c:1163 src/theme.c:1187 src/theme.c:1209 +#: src/theme.c:2169 src/theme.c:2191 src/theme.c:2212 #, c-format msgid "Theme contained an expression \"%s\" that resulted in an error: %s\n" msgstr "Tema mengandungi penyataan \"%s\" yang menyebabkan ralat: %s\n" -#. someone is on crack -#: src/window.c:3411 -#, c-format -msgid "Window %s sets max width %d less than min width %d, disabling resize\n" -msgstr "" -"Tetingkap %s menetapkan lebar max %d kurang daripasa lebar min, mematikan " -"ubahsaiz\n" - -#. another cracksmoker -#: src/window.c:3421 +#: src/theme.c:3376 #, c-format msgid "" -"Window %s sets max height %d less than min height %d, disabling resize\n" +"