Re: moving windows from an extension (also: mutter debug output)



On Sat, Jun 4, 2011 at 3:54 PM, Jasper St. Pierre <jstpierre mecheye net> wrote:
>
>
> On Sat, Jun 4, 2011 at 1:33 AM, Tim Cuthbertson <tim gfxmonk net> wrote:
>>
>> I'm writing a tiling window manager extension
>> (https://github.com/gfxmonk/shellshape), which obviously involves my
>> extension being responsible for placing / resizing windows and telling
>> mutter about the new positions.
>>
>> I'm using what seem like the obvious methods to do so:
>>  - MetaWindow.resize(true, w,h)
>>  - MetaWindow.move_frame(true, x, y)
>>
>> And that's pretty much it. That seems to work reasonably well for many
>> windows, but there seem to be a lot of windows that will snap back to
>> their previous windows sizes and ignore my extension. Notably chrome,
>> firefox and nautilus (whenever you navigate somewhere else nautilus
>> snaps back, the others do it seemingly at random).
>
> I think I'd have to inspect your extension closely, but the stuff at GitHub
> looks to be just an HTML demo for http://gfxmonk.github.com/shellshape/

Sorry, I forgot I hadn't pushed since I started the actual shell
extension stuff. I originally mocked up a window manager with jquery
for speedy turnaround (reloading a html page instead of restarting the
shell). It's not very organised, but I've now pushed the master
branch. The stuff that deals with mutter should be confined to:
https://github.com/gfxmonk/shellshape/blob/master/real_mutter.js
(down the bottom of that file is where the movement / resizing happens)

Looking at that myself again now, I've just realised that I was
setting the user_action flag to false, so that could well be why
mutter is no maintaining the size. I just tried setting it to true,
and that seems to have fixed the problem I was having.

>> Firstly, can anyone suggest the proper way of *really* moving /
>> resizing a window? Are these methods not sufficient? Do I need to call
>> a method to "bake" the new position as the new position, rather than
>> an intermediate position you might see while the user is dragging it?
>>
>> Secondly, there are a lot of mutter debug topics. Any idea how they
>> can be selectively enabled? I figured out how to turn everything on at
>> once with `imports.gi.Meta.set_verbose(true);`, but that's an obscene
>> amount of output across all topics.
>
> Meta.add_verbose_topic(Meta.DebugTopic.WINDOW_STATE);

Thanks very much :)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]