GNOME Bugzilla – Bug 95273
moving windows as wireframes would improve performance on remote displays
Last modified: 2004-12-22 21:47:04 UTC
When running Metacity via remote display (as is common on multi-user
systems such as a SunRay server), moving a window causes a lot of X
traffic, and is therefore very CPU intensive.
It would be nice to offer a setting which would just move a wireframe
of the window while the user has the mouse button depressed, only
actually moving the window after the user has chosen the new location.
If we could somehow automatically detect remote/slow displays and
switch to wireframe, I'd be a lot more open to doing that.
*** This bug has been marked as a duplicate of 92618 ***
Bob Doolittle, who leads Sun's SunRay effort had the following
comments about this bug. Obviously SunRay architecture makes
heavy use of remote displays. In my discussions with him he
has stated that no reliable technology currently exists for
"automatically" detecting slow displays.
--Bob's comments follow--
I'm having difficulty seeing how 95273 is a duplicate of this
bug. This bug says that it is the app's fault for the bad behavior
during resize. 95273 is about moves, not resizes, and most apps
won't need to do anything in this case. 95273 is saying that if
the display is remote the large volume of X traffic during an opaque
window move is undesirable. In fact, many users don't want opaque
moves because they want to see what is under the window while it is
moving. I've worked with X for 16 years and I've never come across
a window manager that didn't allow users to choose an option to
display wireframe during window moves. I don't see how we can say
this is too hard to do when every other window manager does it, nor
do I see how we can say we won't offer it for the same reason. Many
users prefer this behavior even with a local framebuffer.
In 95273 the suggestion is that it would be nicer to detect low
bandwidth. How would you propose this would be done, in the
(aside: did you mean to reopen the bug this was a dup of, instead of
There's a limited set of features that exist purely as a compromise
for "classic X" users (sloppy focus, autoraise, etc.) but this set has
to be limited. When you guys switched to metacity I went through the
dtwm man page for you and drew the line between things in the set of
"classic X compromise" features and things out, so you'd go into this
with eyes open; we can certainly rethink the line somewhat, but you
shouldn't expect a dramatic change in its general location. The
argument "some users prefer or have used on some other system option
XYZ" unfortunately justifies about 400 preferences, metacity has only
about 15 preferences, and needs to stay in that range. I think I've
been pretty fair about making this clear up front. My belief is that
if people want twm behavior, or fvwm2 behavior, they should run those
Anyway, point being, I'm not very receptive to "other X WMs or
operating systems have had this and people got used to it" as an
argument. Metacity is an exercise in providing a more
modern UI. And in any case I don't have time to add or maintain
the 400 preferences, I only have time to babysit single
In short, don't use this argument. ;-) I just get really wordy in
explaining why I don't like it. This is the base philosophy of what
metacity is, and if we change that there's really no point in
metacity vs. other WMs out there that I don't have to maintain myself.
That said, there's a performance issue to address on SunRay.
I don't think we should cave and say wireframe is the only
solution right away, but I won't rule it out.
One thing we can try is that the opaque move/resize is currently
rate-limited for number of updates; the allowed rate can be tweaked.
I would like to have better data on how slow a computer, or network
link, has to be for this to be a problem. And is it a problem
only on push-pixels style network links a la SunRay/VNC, or does it
work fine if the remote display is actually an X display.
If the problem is pushing pixels, I would expect the outline-mode XOR
hack to push the same pixels that opaque move/resize does; why
doesn't it? Or is the performance bottleneck in actually
drawing lines and such to the framebuffer? If so for SunRay that
should be on the server, not the client, if I understand
what a SunRay is.
I would also like some idea of whether "problem" means
"somewhat slow, but one can get over it" or "really unusable."
Frankly if SunRay can't handle this and at least be usable, I'm
surprised GNOME as a whole is even remotely usable. And it sure
seems like move/resize would be lost in the noise for the
load average on the server; what percentage of the time
that a person is logged in do they spend move/resizing?
Preferences are bad solutions to performance problems. They should not
be the first place we turn. Understand the problem,
and try to really fix it, for everyone, out of the box...
One obvious solution is to offer _only_ wireframe mode,
though I think that has a significant negative usability impact.
I'm also wary of the point in #92618, that this preferences workaround
means many people never fix their apps (or their windowing system),
resulting in poor usability.
BTW my favorite object lesson in this area is nautilus.
nautilus 1.0 had a _ton_ of config options for various performance
tradeoffs, and the nautilus developers spent time
writing the "fast" and "slow" codepaths, and making it possible
to dynamically switch between them. This made nautilus much
larger, and much buggier, and added months of development work.
Then Alex came along and just optimized the "slow and attractive"
codepath to be as fast as the "fast" codepath over a couple of weeks.
Doh. He proceeded to delete enormous hunks of useless code and remove
all the config options.
move/resize is somewhat harder since some of the increased load
will be coming from "whatever app is underneath what's being
move/resized" - but we should at least check whether 80% of the
problem is just nautilus redrawing the desktop, or something
*** Bug 96182 has been marked as a duplicate of this bug. ***
Havoc, you should stop thinking 'Peoples only using
Gnome applications with 2Ghz Redhat pc on their desk".
You can't expect to solve this problem by optimizing
Nautilus or Gnome in general. There are plenty of
non Gnome progams out there and performances over
remote display will always be slow (at least for
peoples without a quick-ass connection).
Unless you find a way do improve the X protocol (and
all other remote display protocol) and to make it
available worldwide within a month, the only viable
alternative is to reduce the number of redraw requests.
Now let's really feed the troll:
And, please do not tell people with practical problems
that they are free to use another wm. What you are
telling is in fact that peoples without a 2Ghz
Redhat pc on their desk are not real users (!) and
do not interest you.
By the way, I though that the idea behind metacity was to
have a lightweight wm. Without wirefame move/resize it
becomes a big piece of bloat for us, non real users.
For non opaque move/resive, you have achieved what you are
criticizing about the old Nautilus: a fancy and bloated
Somehow, I also understand your position. You try to limit
the functionnalities in order to keep the UI and the code
as simple as possible. I have to admit that metacity
features are usually well designed and that the code is
But systematicaly refusing new features because they would
require a new config option is as bad as systematically adding
new features in Sawfish. If you don't change your position
on the config options, I wouldn't be surprised to see a
fork of metacity soon. As I mentionned before, your code is
so clean that it it would be easy for any (non-real) programmer
to fork and to start adding new features.
Note, I did NOT say no to the wireframe. You didn't read what I said.
I said we need to analyze the real performance problems first,
understand exactly what they are, and come to the conclusion that
wireframe is the best/only solution, or at least all we can think of.
Which has NOT been done.
For all we know, the resize problems are all the fault of nautilus,
or all the fault of the bug about slow pixmap themes, or caused
by the damage region pushing pixels on a SunRay which would be
unchanged by wireframe. For all we know we could fix it using rate
limiting or other methods. The nautilus example is a *strong* argument
for optimize first, add extra codepaths later. For all I know,
we call XSync() 600 times per second during opaque resize
and that's the problem.
Convincing me to add wireframe is about *providing these facts* not
about rants. Rants just make me annoyed that people can't be bothered
to justify their proposals or fix problems properly so they force
said fixage on the user.
And for the record, the opaque resize is *fine* on my 233 or 300 Mhz
piece of junk laptop. We aren't talking 2Ghz here. We're talking
total piece of junk laptop.
All I ever ask on a preference (or any feature) is *a compelling
argument*. Bust out the evidence. Bust out the pros and cons of
If you don't have that to offer, get off my bugzilla reports.
> Note, I did NOT say no to the wireframe. You didn't read
> what I said.
You did not say no but I have a 'deja vu' feeling that you
are trying to trying to escape the wireframe mode by all
means. By blaming
> For all we know, the resize problems are all the fault
> of nautilus, or all the fault of the bug about slow
> pixmap themes.
No! You are still focussing on Nautilus. Any application
can be slow to resize over a remote display. I am not
using Nautilus but I also want faster display for example,
for Mozilla or the gimp. We are talking here about a factor
in term of redraw time between solid and wireframe. Even
an Xterm can be slow to resize with a bad network connection.
> For all we know we could fix it using rate limiting or
> other methods
Having a wireframe does not mean that you cannot also improve
the opaque mode.
> Convincing me to add wireframe is about *providing these facts* not
> about rants. Rants just make me annoyed that people can't be
> bothered to justify their proposals or fix problems properly so
> they force said fixage on the user.
(1) Redraw events can expensive.
(2) The window manager has no way to know how much time a
redraw event will take. As single redraw of 10x10 pixels
> We aren't talking 2Ghz here.
The troll was really too big :-)
Arghhh! I hate the tab key in Mozilla!
(2-suite) A single redraw in an unknown application may
take a few seconds.
(3) a wireframe move/resize do not have to send redraw events.
I think that wireframe are implemented by grabing the
display and using XOR lines.
(4) an opaque move/resize has to send at least a few redraw
Now, if having a new configuration for wireframe/opaque is
really what is bothering you then I may have a idea.
Implement a single configuration to specify the efficiency
of the display. The possible levels could be something like:
Each feature with a potential impact on the performances would
be disabled under a certain level. For example
- Opaque move/resize would be replaced by wireframe
at level <= 'slow'
- Gradients in themes could be replaced by plain
colors at level "very slow'.
- Animations in themes (If you implement some)
would be enabled at level >= "fast"
A few comments.
1. I'd like to point out that bug 95802 discusses that metacity
spends a lot of time resizing pixmaps when resizing windows.
This would obviously be completely avoided by moving as wireframe.
2. On the render@XFree86.Org mailing list I noticed Owen Taylor
said the following in response to a person who mentioned that
applications writers don't generally write their apps to be able
to repaint in 10-20ms (the amount of time mouse move events
happen during a typical window resize event in X):
If you imagine something like an opaque resize of a text widget,
you can see why 10-20ms can be very demanding ... resizing a
window 1 pixel wider might involve a complete relayout of a
megabyte of text.
Now, by using techniques like incremental layout, you can hide
that relayout time, but that requires complex application design
and a high level of sophistication.
I do not consider your first point to be critical because
peoples with real performance issues can always choose
a metacity theme without pixmaps. Repainting the applications
is the real problem here and there is not a lot we can do
to improve existing applications.
Note that most metacity themes use gradients. To my knownledge
X11 do not provide any gradient primitives (in RENDER maybe?)
so they are probably rendered offscreen in a pixmap/pixbuf.
On my corporate network I have installed a modified version of
'Atlanta' in which the title gradient is replaced by a solid box.
I was hoping to find a nice solution with the svg library but
the rendering can only be done offscreen in a pixbuf (the
documentation for the svg library is almost inexistant so I may
have missed something)
Disclaimer : I was asked to implement this to try improving perceived
performance on Sunray systems. So don't shoot me for this patch ;)
Here is some related information :
Have a look at
for a discussion about this somewhat related subject.
Some work could be done it checking timestamps and discarding some of
But the main problem with remote X is that window that have a complex
rendering routines will always lag for the mouse/keyboard move-resize
as you have :
- WM move-resize window (worst case move of 1 pixel)
- APP recalculate layout (could be few seconds for complex word
processing apps or image rendering)
then push pixels (which are almost the same) this is the killer for
remote X (one idea would be to compress
the pixel pushed better...).
Also note that each time it loops the lag will be worse as the
previous resize/move event won't have had
time to be processed by the app, resulting in a messed up display for
few seconds even after the resize finished.
So you could say all the application should be smarter and do
efficient redraw but this is
just no feasible (because of work involved and access limitation to
At the moment I only see two ways of improving this :-
- wireframe move/resize ( almost no pixel pushed (except from size popup))
- screenshot resize (e.g. take a screenshot of the app or draw an
opaque colored rectangle on top of the
app (hide app) and resize this placebo instead of the real app).
The second option is just a more sophiticated wireframe move/resize
implementation which would be slower anyway.
The attached patch sets the wireframe move/resize gconf key to false
Created attachment 11936 [details] [review]
If you apply a patch that adds a preference in sun-patches, please
name the gconf key /apps/metacity/sun_extensions/whatever, or I
reserve the right to, say, create my own preference with the same name
as yours and different semantics. ;-)
The patch has some formatting issues:
void foo ()
What proprietary (or Sun-developed or GNOME-developed) apps are
causing the problem, and how much of a problem are they causing?
Any apps I can try out myself?
Doesn't wireframe still push pixels on SunRay?
> Any apps I can try out myself?
Find a remote display with a ping > 15ms. Then I guess that
opaque move/resize is a problem for almost X11 applications
known by men.
If you don't have access to a remote display then take
a program like mozilla and disable the acceleration of your
> Doesn't wireframe still push pixels on SunRay?
I hope for Sun that a SunRay is capable of XORing
a few dozen rectangles each second :-)
> I hope for Sun that a SunRay is capable of XORing
> a few dozen rectangles each second :-)
As I understand it, SunRay isn't an X terminal, it's a remote
framebuffer device. i.e. it pushes the whole damage region,
not a DrawRectangle request.
Interesting! I couldn't find any relevant technical
information about the technology on the Sun web site.
I will have a closer look to this beast.
btw the patch works fine on my local desktop (I still
have to test it with a remote display)
I have 2 remarks:
(1) The patch should grab the screen because the
frame leaves some dirty traces when the background
is modified between 2 consecutive XOR rectangles.
(2) The wireframe is not very visible.
In sawfish and fvwm2, the wireframe is a regular 3x3 grid.
I also remember a wm using a single rectangle composed of
large dashed lines. The pattern was animated to create a
'marching ants effect' link the selections in Gimp. Nice
but probably more expensive than the 3x3 grid.
If the SunRay is not efficient to update large empty
rectangles then you try to could draw only the corners.
Havoc. Do you plan to integrate this patch?
If you do not like this new key, could you make it
available using another method (env var, compilation
btw. do you know when can we expect the next metacity release?
> Havoc. Do you plan to integrate this patch?
I don't know. Probably something like it eventually.
I'm not happy about it though and I'm disappointed people
aren't willing to work to come up with a better answer.
> If you do not like this new key, could you make it
> available using another method (env var, compilation
> option, ...)?
If it exists I have no problem with it being a gconf key.
My point about sun_extensions is just that I don't want
gconf keys in my namespace that I don't know about, that's
bad in the same way that adding vendor-specific API to GTK would be bad.
> btw. do you know when can we expect the next metacity release?
I just put out a release the other day.
> I'm not happy about it though and I'm disappointed people
> aren't willing to work to come up with a better answer.
I do not see what your problem is with wireframe. This is
simple and efficient. Drawing a few rectangles cost almost
nothing in term of cpu, graphic and network resources.
You can always try to optimize it but there is almost nothing
to gain (and there is no real point to try). Of course,
this is graphically uggly but we the primary goal of using
wireframe is efficiency.
That does not mean that opaque move/resize cannot be optimized
but in the worst cases, we are talking here about a efficiency
factor of maybe 100 to 1000 between the 2 methods. Even if you
optimize opaque moves/resizes by a factor 10 then this is still
far from being acceptable and some peoples will prefer wireframe.
As mentionned in some comments above, the only relistic way
to achieve a real breakthrough in opaque move/resize would
be to rewrite all applications or to change the X protocol.
And to conclude this part I want to remind you that this
bug is not about optimizing opaque move/resize. This bug
is about optimizing move/resize on remote display.
Wireframe does that very well.
> My point about sun_extensions is just that I don't want
> gconf keys in my namespace that I don't know about, that's
> bad in the same way that adding vendor-specific API to GTK
> would be bad.
Humm. If they provide a patch then they expect it to be included
in the main development tree. In that case, this patch and the key
are not anymore a vendor specific extension. But I agree with
your point of view for patches that would be not integrated in
the main dev tree (or patches that would be integrated but
would not be compiled in by default)
> I just put out a release the other day.
>If you apply a patch that adds a preference in sun-patches, please
>name the gconf key /apps/metacity/sun_extensions/whatever, or I
>reserve the right to, say, create my own preference with the same name
>as yours and different semantics. ;-)
Understood :), This patch is only meant for Sun's performance test atm
not for delivery. I only thought people could be interested to
have a look (I guess I was wrong).
I'll make the appropriate changes hopefully next week
(indentation and gconf key naming) and attach it.
>> Havoc. Do you plan to integrate this patch?
>I don't know. Probably something like it eventually.
>I'm not happy about it though and I'm disappointed people
>aren't willing to work to come up with a better answer.
This is part of the Sun performance team work atm, they just
wanted to have the possibility to test an alternative soluation at
the same time I believe.
>As I understand it, SunRay isn't an X terminal, it's a remote
>framebuffer device. i.e. it pushes the whole damage region,
>not a DrawRectangle request.
I guess this will be part of the tests the performance team will run.
[once again please don't shoot the messager]
Bob Doolittle from the SunRay team had this comment in order to
help everyone understand how SunRay's work...
> If you'd like to correct people about the basic capabilities of
> Sun Ray, you might point them to
> This is a somewhat out-of-date description of the basic rendering
> architecture and primitives of Sun Ray. As described
> in this paper the basic primatives are SET, BITMAP, FILL, COPY,
> and CSCS (basically a highly compressed pixmap set operation
> useful for real-world images (such as video)). In this paper
> Brian calls the protocol "SLIM". We refer to it as "ALP" -
> Appliance Link Protocol. Just in case you hear the acronym in
> future :-).
I think the problems associated with opaque resizing are not
really a window manager issue, but an ICCCM/XEvent protocol issue.
Havoc is right that opaque resizing shouldn't be disabled just
because some apps or situations don't work with it. Instead, we
need to fix those situations.
Most of the rendering issues should be handled by the application,
but I think it would be good if there were a way to distinguish
an "active" resize event versus a final resize. This would enable
applications to skip certain complex rendering parts until the
resize is complete (i.e. the main display in a complex 3D app).
Applications could also ignore a resize if it comes too soon, but
still respond quickly to the final resize event.
Personally, I prefer not to use opaque resizing, and think it should
be an option. But, for it to be an option, we have to make sure
opaque resize works.
Created attachment 12321 [details]
additional info about the need for wireframe resizing
Excuse him. This is his 1st post in buzilla :-)
This is the message he attached:
I would like to briefly jump into the discussion here and
point out that the application that Stephane C. has trouble
with is commercial software for developing silicon chips.
This tool can potentially draw an awful lot of graphical
elements (the chip layout) which easily takes several
seconds over a LAN network, and can take a lot longer. It
also wants to redraw the window contents when it is resized.
You can understand that it quickly becomes unusable if during
the resize it has to refresh several times. We really like to
use Gnome+metacity as our desktop, but it should not slow down
our work. And unfortunately we have no alternative for the
software we're using ...
Attached is an updated patch which implement wireframe move/resize
as requested by Havoc, which creates a new namespace for the gconf
key wireframe_move_resize in /apps/metacity/sun_extensions
Created attachment 12540 [details] [review]
Tom O'Neill from the Sun WanRay team (a team that focuses on running
remote displays over slow-speed bandwidth connections, such as 56k
or 380k) pointed out that wireframe moves speeds dragging a window
across an RGB image (e.g., a JPEG on Netscape).
Also, the general reaction at Sun is that moving/resizing windows
with wireframe makes Gnome much snappier, and most users end up
turning on this feature.
We are currently working to generate some statistics that show
more measurably what performance improvements are gained by
Jumping late into this Discussion but I hope it's not too late. I was
searching the whole time for this feature, and I think thoug it
needn't to be in the gneral preferences setting. It would be ok for
all, that it is just a gconf key. The unexperienced user will not
stumble over the setting not knowing what is meant by it. And the
expierenced user has yet the power to turn it on.
Really, I have 900Mhz and had always in favor of performance turned
this feature on in Gnome-1.4.
BTW, I have metacity-2.4.8 installed and can not find the
I would be really thankfull if this feature would be implemented
Would someone mind updating this patch for 2.4.34? I can't apply it to
this version, which AFAIK is the latest. Thanks a lot.
Lack of wireframe resizing/moving made me swithch to KDE right away
when I first installed RH 8.0, a slow desktop is the worst I can
imagine.. I'd be much happier with wireframe only.
Will wireframe eventually be implemeted ?
Added PATCH keyword.
Adding string keyword.
Unfortunately, it looks like this is a genuine problem that we can't
solve without adding a preference. What I'd really like to see is
some technique that would allow us to benchmark a server as we start
up, but I don't think that it's practical.
I think that with this issue the preference is the best way to deal
Suppose that box/"wireframe" was the default and someone offered a
patch to metacity to do opaque moving. What would we say? Would it
pass the no-crackrock test?
Arguments for implementing opaque moves:
* Less surprising than wireframe-move for someone who has never moved
a wireframe before. (strong)
* Pretty on very fast-updating hardware. (very weak)
* One can visually align a window based on its content. (weak,
Args for "keeping" the box-moving:
* At least as fast as opaque, and often much, much faster. (strong)
* Not surprising after the first experience of moving. (weak)
I would probaby reject a opaque-movement patch as eye-candy. The
surprise factor will only be relevant once, but the speed improvements
of wireframe-movements will pay off many, many times per session.
I don't have numbers to support my assertion that wireframe movement
is faster than opaque. I do know that it's one of the first things I
turn off in any windowing environment I use, because it's noticably
slower. Moving windows is not real work; it's a distraction from the
reason you're really at a computer, so we are _much_ more sensitive to
perceived slowness in fixing when the desktop metaphor starts to wear
thin and we have to shuffle windows around. When you have to switch
contexts to window-management mode, even an extra 1/10th of a second
of watching useless animation is irritating because your brain really
wants to get back to the previous context.
Wireframe implementation ideas:
How might we minimize the movement-metaphor breakage and keep the
wireframe visually associated with the window? I'd connect the
corners of the wireframe with the corners of the source window
position, so it's more obvious what one is moving and where. Perhaps
it would be better to make the connecting lines appear only if the
window is being moved more than some distance, like half of the
window's width or height.
In case my position was vague, I advocate _removing_ the opaque
move/resize altogether and replacing it with wireframe movement with
source window hints. I don't think anyone needs opaque movement, or
an option for it.
The argument for opaque is direct manipulation: you're manipulating
the object on the screen. Wireframe means you can't see the window
contents as you resize, so if you're say resizing to be able to see
all of a document, you can't tell whether you're getting the right
size. And there's a mental abstraction to compute to connect the
wireframe with the window it replaced.
OS X I'm pretty sure has opaque resize only, and Windows XP defaults
to it. Both of those systems are based on significant user testing,
and both are fast enough.
Note also that a slightly post-GNOME-2.2 nautilus will be much faster
at drawing areas of the desktop background that don't have icons on
them, which impacts overall system load while resizing.
The opaque is fast enough on my 266 mhz laptop. Also, CVS version of
metacity was easily made faster by Soeren as soon as he did some
profiling; and we have an outstanding GTK patch to make it smoother.
Those are fixes we already have ready to go for GNOME 2.4.
I would expect that with more profiling and thought there are a number
of additional speedups possible.
Another thing we can still do is implement double buffering in the X
server that spans both frame and client to avoid the tearing/flicker
effect as you opaque resize.
Honestly though I think my big hangup here is that I just don't see
the speed problem on my system. I don't know if it's because I use a
simple WM and GTK theme, or because I use a simple desktop background,
or what. My computers are not especially high-powered or fast, but
if I resize a window it tracks the mouse with no significant lag.
If I had a better understanding of when it was slow or why or what
code was slow, it would be easier to address the issue.
It would be interesting to analyze opaque resize using the tools from:
I'm running RH8/9/rawhide on AMD 1600-1800+ with
radeon7000/radeon7500/mga200 video cards and window moving/resizing is
way too slow on all those systems with Metacity.
Earlier RedHat used Sawfish which was like from other planet when it
comes to performance.
Opaque drawing is just waste of (cpu)time for me.
Perhaps with the mail from Alan C, you can understand ......
But i hope no more :-(
Rationale makes changes, whining does not.
I tried opaque resize on a SunRay thin client at GUADEC - not slow.
Not slow on 266mhz laptop. Windows XP defaults to opaque. OS X only
I'm thinking of adding the wireframe because it's in two vendor
patches anyway, and because some proprietary apps can't handle
opaque resize properly.
But blowing things out of proportion is just silly.
Created attachment 18554 [details] [review]
Proposed patch for "reduced resources" mode
Hello Havoc and everyone,
I want to thank you Havoc for addressing this issue (slow redraw for
opaque resize for certain apps). We have seen this problem at my
company (Aeluros) where we design chips using Cadence's Analog Artist.
Specifically when we try to resize certain windows (usually fairly
complex signal graphs) it takes on the order of seconds for the window
The system we are using is 1.666GHz Athlon, Nvidia GEForce2, 512MB
RAM, RH9. The application is purely local (i.e. network traffic is
not the bottleneck).
One of your suggestions--using another window manager--is our
temporary solution; we use fvwm2 as well as gnome currently. The
designers would prefer to have a pure gnome environment but are okay
with switching between fvwm2 & gnome/metacity.
We would like Cadence to address the issue but we doubt that will
happen in the foreseeable future; Cadence tends to be on the trailing
edge (e.g. they only officially support redhat 7.2 and 7.3). And
Linux is new for them (they run on Solaris, HPUX, and AIX).
Which is why I (and the designers here) are grateful that you are
addressing it; we'd rather run on linux than solaris, rather gnome
Right, the argument that finally convinced me we needed to do this
was the large number of proprietary apps that just fall over if they
get a lot of configure events. Cadence, Landmark, all kinds of things.
Hopefully the default of opaque will be enough to get the apps
I did it as a reduced_resources = true flag though because I think
there may be nicer visual effects than wireframe that get the same
advantages, perhaps just blanking out the application contents, but
still displaying the window manager frame, or something like that.
Someone told me that Windows could do this, don't know if it's true.
Also this lets us load other kinds of performance-related tweaks onto
a single setting.
The wireframe stuff does indeed make a big mess all over the source
code, and has some minor not-quite-rightness (the wireframe doesn't
obey window size constraints for example), so I don't love the patch
but it's workable.
The patch is based on Erwann's patch so he gets a lot of the credit.
obviously this is a 2.6 patch.
I have very serious reservations about introducing a
move/resize/whatever method that doesn't obey size and position
constraints. This should definitely not appear in a stable metacity
unless this is fixed.
I do like the idea of perhaps showing only the window frame -- this
avoids the problems with craptastic apps while also not creating the
weirdness of wireframe mode. We should experiment with that.
Right, it's a GNOME 2.6 patch. Thus the branch. ;-)
I will probably land it in Red Hat before that though.
The window resizing still obeys constraints, just the wireframe feedback
doesn't. So your window doesn't end up exactly where the wireframe
indicates. This is sufficiently painful to fix, and the Sun patch has
the same bug, that I'm awfully inclined to just not care.
I'm all for experimenting with less-sucky approaches,
as the wireframe is so early-90s looking.
The basic problem with the constraints stuff is that even if you
hide the app window, you can't send it configure events, because
I'm sure these busted apps aren't sophisticated about whether
they're actually visible during the resize. I'm very reluctant to
extend hacks deep into all the window resize and constraint code
to handle the window not actually being resized...
Created attachment 18722 [details] [review]
Backport to GNOME 2.2
*** Bug 119554 has been marked as a duplicate of this bug. ***
*** Bug 119607 has been marked as a duplicate of this bug. ***
punting to 2.5 branch
*** Bug 121177 has been marked as a duplicate of this bug. ***
*** Bug 122896 has been marked as a duplicate of this bug. ***
This is just a matter of merging back the branch (I think the attached
patch has all the branch changes, so could just apply the attached
patch). Can do as soon as we have an unstable branch.
I use GNOME-2.4/metacity-2.6.1. I assumed the option to enable
wireframe would be in this version of metacity. I searched for it via
the gconf editor, but to no avail. I've also asked several individuals
on the gnome IRC channel and again noone could help me with it. I'd
like to know if this option is available for this version of metacity
and if so, where I can enable this feature.
sure; just apply the "proposed patch for "reduced resources" mode"
patch to metacity source and compile it.
Patch applied to HEAD, will be in GNOME 2.6
*** Bug 134656 has been marked as a duplicate of this bug. ***