Since this is the last SoC progress report, I've decided to make a not-so-small text explaining the current state of my project. If you don't want to read it, skip to the end, there is a smaller version there.
- Toolkit (gtk+) issues:
- Getting the events:
- Works with my patch, but not the way I want. I don't like using strcmp() everytime I get an event to discover which device generated it. Also, I should review my patch before submitting to the gtk+ guys.
- Menu Widget:
- Stopped working on it. Things recently changed in MPX, and we're also having a problem with grabs. I've talked to Peter Hutterer (who is responsible for MPX) and this problem is still to be solved in MPX, so I decided to wait.
- Coldplugging:
- Works.
- There are issues when there are more mice than keyboards, but they're not bugs, just doubts about how should metacity behave.
- Hotplugging:
- Not implemented.
- Hotplugging doesn't seem to be working for me with MPX (I think I'm doing something wrong). But assuming that MPX works correctly, it should be easy to implement.
- ClientPointer changing:
- Works.
- Device pairing:
- The internal part works (metacity recognizes and works correctly with pairs).
- I'm not happy with the way it is working when there is more than one keyboard associated with a mouse. I'll change this.
- Letting the client change the pairs wasn't implemented yet, but this is also easy.
- Access control lists managing:
- Works.
- Xi events:
- Works: we're completelly using Xi events.
- There is a problem getting events when clients do implicit grabs. This is the same problem I described in "Menu Widget"
- Multiple focus:
- Works.
- I'm not happy with the way it works when there are more keyboards than pointers. I'll change this.
- There is the implicit grab problem mentioned two times already, and because of it, you can only change focus using the window frame for applications that do implicit grabs on the mouse.
- Multiple window operations (dragging/resizing, etc):
- Being implemented.
- I have a patch in my local branch and I'm fixing the bugs before committing I was planning to commit this before SoC final timeline, but things got bigger than I thought.
- The WM menu:
- Explained already: having problems with implicit grabs. (And I also found a bug today, which will be fixed in the next commit, along with the multiple operation stuff).
- The code itself:
- Even if it works, I'm not happy with some function prototypes, variable names and the way I broke metacity's layers. This will be changed (takes time...).
- Still need to remove the "--enable-mpx" and make it the only possible option.
- The guide to other WM maintainers:
- Works: doing the final adjusts. It is already at http://www.inf.ufpr.br/prz05/mpx_wm.pdf , and as I change it I'll update the link. Thanks to Elijah for the great help on this document!
- Other documentation:
- Works. See http://live.gnome.org/Metacity/Mpx. Will probably put parts of this text there.
So, in summary:
- Toolkit:
- Events: works.
- Menu: has problems.
- Coldplugging:
- Works.
- Hotplugging:
- Not implemented.
- ClientPointer changing:
- Works.
- Device pairing:
- Internal parts: works.
- User interface: not implemented.
- Access Control Lists:
- Works.
- Xi Events:
- Works.
- Multiple focus:
- Works.
- Multiple operations:
- Being implemented.
- The WM menu:
- Has problems.
- Guide to other WM maintainers:
- Works.
- How-to:
- Works.
So, what's the plan now?
I'll keep developing the project until I implement everything, then I'll start maintaining it and see what happens when people start using X.org 7.4. I'll also try to help with the other stuff that need MPX integration: the toolkit and the panel.
My thoughts about SoC and GNOME:
Thank you very much for everything!! I really enjoyed being one of the GNOME's summer of code students! Now I know a lot more about the GNOME community and I'll try help it become even better. Thank you very much!
And, of course, I'd like to send some special thaks to my mentor, Elijah Newren!
Cheers,
Paulo.