On Thu, Apr 26, 2012 at 11:00 AM, Giovanni Campagna <[email protected]> wrote: > Il 26 aprile 2012 16:53, Jasper St. Pierre <[email protected]> ha scritto: >> On Thu, Apr 26, 2012 at 6:55 AM, Amy Chan <[email protected]> >> wrote: >>> Thank you. I looked into libwnck which does all this stuff from python (now >>> there's an example of what I wish clutter >>> had):http://developer.gnome.org/libwnck/stable/WnckWindow.html >>> >>> After a bit of experimenting, it turns out in python I can simply do: >>> >>> import wnck >>> wnck.screen_get_default().get_active_window().make_above() >>> >>> and that's done! >>> >>> So while I wait for the meta_window_set_xxxx stuff to eventually be exposed >>> to the JS interface, I may experiment with somehow calling a python script >>> from within JS to do that bit of functionality (I recall seeing this done in >>> another extension - will have to look it up). >>> >>> Or even better, since wnck seems to use the whole gobject introspection >>> thing, maybe it has JS bindings I can somehow get? >> >> const Wnck = imports.gi.Wnck; >> Wnck.Screen.get_default().get_active_window().make_above(); >> >> I wonder if we should use more wnck. mutter already depends upon it. > > Mutter depends on libwnck? That's strange.
For the alt-tab popup (and maybe other places). I don't know why, but it does: http://git.gnome.org/browse/mutter/tree/src/ui/tabpopup.c#n846 > Anyway, using libwnck means going to X, changing some property there, > waiting for an XEvent, and then invoking the appropriate meta_* > function, incurring on a lot of overhead. The advantage of being in > the same process as the WM means we can avoid all that. Fair enough. Again, mutter doesn't really have a sane API (it's a semi-private half-duplicated libwnck), and I'm not sure if making it available is worth the effort. > Giovanni > >>> cheers, >>> Amy >>> >>> >>> On 24/04/12 13:23, Jasper St. Pierre wrote: >>>> >>>> On Mon, Apr 23, 2012 at 11:11 PM, Amy C<[email protected]> >>>> wrote: >>>>> >>>>> Hi all, >>>>> >>>>> As part of teaching myself how to make gnome shell extensions, I >>>>> decided to just add an item to the menu of the panel's title bar that >>>>> allows the user to select options like always on top/always on this >>>>> workspace. >>>>> >>>>> I notice in the mutter API there is a meta_window_set_above in >>>>> window.c but this doesn't seem to be exposed to the JS interface. >>>>> Through a bit of trial and error I also seem to be able to call >>>>> window.set_property('above',true) but this function appears to do >>>>> nothing (there is a 'title' property I tested on and using >>>>> set_property on this also seems to do nothing). >>>> >>>> >>>> Ugh. All the MetaWindow properties are all read-only. It seems they >>>> were only added for the notifies. >>>> >>>> Yeah. metacity was originally designed as a process, not a library, so >>>> it doesn't really do things the way it should. I'm working on making >>>> metacity/mutter less of a program with an API and more like a library, >>>> because that's what it should be. >>>> >>>>> I could simulate (e.g.) always in this workspace by listening to a >>>>> workspace changed event and moving the relevant window, but this would >>>>> not be a "true" implementation in that the window manager still thinks >>>>> that window.is_on_all_workspaces is false (as I don't seem to be able >>>>> to set it). >>>>> >>>>> So, does anyone know: >>>>> - an alternate way to set these window properties (properly, as in the >>>>> window manager knows about it) in a gnome shell extension? >>>> >>>> >>>> There might be some X window properties you can set (but I doubt it, >>>> and you probably can't do it from JS) >>>> >>>>> - how to tell whether a likely function in a c file (e.g. >>>>> meta_window_set_above) has been exported to the JS interface? >>>> >>>> >>>> Check out /usr/share/gir-1.0/Meta-1.0.gir >>>> >>>>> - how to expose a method from the C interface to the JS interface? >>>> >>>> >>>> You have to submit a patch to the C code, and wait a release cycle. >>>> Unfortunate, I know. >>>> >>>>> cheers! >>>>> _______________________________________________ >>>>> gnome-shell-list mailing list >>>>> [email protected] >>>>> http://mail.gnome.org/mailman/listinfo/gnome-shell-list >>>> >>>> >>>> >>>> >>> >> >> >> >> -- >> Jasper >> _______________________________________________ >> gnome-shell-list mailing list >> [email protected] >> http://mail.gnome.org/mailman/listinfo/gnome-shell-list -- Jasper _______________________________________________ gnome-shell-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/gnome-shell-list
