This commit is contained in:
rhp 2001-07-28 05:37:57 +00:00
parent b88cece213
commit 857757b221

78
README
View File

@ -60,8 +60,8 @@ METACITY FEATURES
If you hold down Alt and click inside a window, it will move the If you hold down Alt and click inside a window, it will move the
window (buttons 1 and 2) or show menu (button 3). window (buttons 1 and 2) or show menu (button 3).
If you pick up a window with button 1 and then switch desktops If you pick up a window with button 1 and then switch workspaces
the window will come with you to the new desktop, this is the window will come with you to the new workspace, this is
a feature copied from Enlightenment. a feature copied from Enlightenment.
If you hold down Shift while moving a window, the window snaps If you hold down Shift while moving a window, the window snaps
@ -130,6 +130,10 @@ METACITY BUGS, NON-FEATURES, AND CAVEATS
- Metacity turns off its keybindings for Emacs, because I use - Metacity turns off its keybindings for Emacs, because I use
Alt-space in Emacs, and getting a window menu annoys me. Alt-space in Emacs, and getting a window menu annoys me.
This is a broken feature. My planned fix is to use super/hyper
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.
- Cycling windows with Alt-Tab is flickery, AFAIK because - Cycling windows with Alt-Tab is flickery, AFAIK because
Metacity passes the entire window stack to XRestackWindows() Metacity passes the entire window stack to XRestackWindows()
@ -140,9 +144,6 @@ METACITY BUGS, NON-FEATURES, AND CAVEATS
- Various operations, such as minimize, maximize, etc., should - Various operations, such as minimize, maximize, etc., should
have simple animations to make them clearer to users. 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 - I haven't even read the ICCCM section about colormaps. So if you
have an 8-bit display you are basically screwed. have an 8-bit display you are basically screwed.
@ -156,7 +157,7 @@ METACITY BUGS, NON-FEATURES, AND CAVEATS
- Window placement is always cascade for now; I want to implement - Window placement is always cascade for now; I want to implement
"first fit, falling back to cascade if no fit." "first fit, falling back to cascade if no fit."
(Configurable placement algorithms are stupid though, don't (Configurable placement algorithms are stupid though, don't
send me patches for any bogus ones.) send me patches for any bogus ones. Let's just pick a good one.)
- Maximization and movement constraints do not take the - Maximization and movement constraints do not take the
GNOME panel into account. Most of the code already handles GNOME panel into account. Most of the code already handles
@ -165,12 +166,21 @@ METACITY BUGS, NON-FEATURES, AND CAVEATS
Metacity needs to keep this area up-to-date using the hints the Metacity needs to keep this area up-to-date using the hints the
panel sets. panel sets.
- Should really support click-to-focus as an option. - Should support click-to-focus as an option.
- Windows has a neat way of implementing Alt-Tab for - Windows has a neat way of implementing Alt-Tab for
window cycling that I would like to copy. (The little window cycling that I would like to copy. (The little
popup window thing.) popup window thing.)
- People seem to like shortcuts using arrow keys for moving
between workspaces. My only question here is that I'm not sure
what the spatial relationship between workspaces is.
(Are they in a grid, or a horizontal row, or what.)
I think we may need a window manager spec extension to
share this information between the WM and the pager.
We could add left/right arrow and pretend they're in
a row for the short term though.
- Should Metacity support flipping in right-to-left locales? - Should Metacity support flipping in right-to-left locales?
I don't know what window managers look like in a right-to-left I don't know what window managers look like in a right-to-left
locale. I assume the window titles should be right-justified; locale. I assume the window titles should be right-justified;
@ -230,11 +240,10 @@ A: You don't, until GConf 2 is relatively easy to compile and I feel
Q: Will Metacity be part of GNOME? Q: Will Metacity be part of GNOME?
A: If Metacity is ever better than the other options, and the GNOME A: This is not the current plan, though of course I'm happy to see the
Project so chooses. But Metacity may continue to suck forever code used by anyone who's interested. Metacity may continue to suck
because I might get tired of working on it; or Metacity's feature forever because I might get tired of working on it; or Metacity's
set might not make sense for GNOME. Who knows. I'm not worrying feature set might not make sense for GNOME. Who knows.
about this, and you shouldn't either.
For now Metacity is my toy hobby project that I work on when I feel For now Metacity is my toy hobby project that I work on when I feel
like it. like it.
@ -245,6 +254,51 @@ A: Because XMMS is broken and is trying to move itself. Metacity
does not tolerate insolent windows who believe they can does not tolerate insolent windows who believe they can
self-manage. Use Alt-button1 to move XMMS using Metacity. self-manage. Use Alt-button1 to move XMMS using Metacity.
Q: Why does Metacity remember the workspace/position of some apps
but not others?
A: Metacity only stores sizes/positions for apps that are session
managed. As far as I can determine, there is no way to attempt
to remember workspace/position for non-session-aware apps without
causing a lot of weird effects.
The reason is that you don't know which non-SM-aware apps were
launched by the session. When you initially log in, Metacity sees a
bunch of new windows appear. But it can't distinguish between
windows that were stored in your session, or windows you just
launched after logging in. If Metacity tried to guess that a window
was from the session, it could e.g. maximize a dialog, or put a
window you just launched on another desktop or in a weird
place. And in fact I see a lot of bugs like this in window managers
that try to handle non-session-aware apps.
However, for session-aware apps, Metacity can tell that the
application instance is from the session and thus restore it
reliably, assuming the app properly restores the windows it had
open on session save.
So the correct way to fix the situation is to make apps
session-aware. libSM has come with X for years, it's very
standardized, it's shared by GNOME and KDE - even twm is
session-aware. So anyone who won't take a patch to add SM is more
archaic than twm - and you should flame them. ;-)
Docs on session management:
ftp://ftp.x.org/pub/R6.4/xc/doc/hardcopy/SM/xsmp.PS.gz
ftp://ftp.x.org:21/pub/R6.4/xc/doc/hardcopy/SM/SMlib.PS.gz
See also the ICCCM section on SM. For GNOME apps, use
the GnomeClient object. For a simple coding example using
libSM directly, twm/session.c in the twm source code is
pretty easy to understand.
Q: How about adding viewports in addition to workspaces?
A: I could conceivably be convinced to use viewports _instead_ of
workspaces, though currently I'm not thinking that. But I don't
think it makes any sense to have both; it's just confusing. They
are functionally equivalent.
Q: Did you spend a lot of time on this? Q: Did you spend a lot of time on this?
A: Metacity is about 6000 lines of code, which took a few weekends and A: Metacity is about 6000 lines of code, which took a few weekends and