Randomly, when I have a litte time to, I’m trying to take a look about how the a11y support could be added to gnome-shell, and decide if Cally fits here.
So the first think to do is check the current status. After some stupid mistakes from my side (as trying to compile GnomeShell using the normal moduleset, instead of doing as the guide says), I was able to compile GnomeShell and get it running. Using the nested X server I got the next errors:
(mutter:24120): atk-bridge-WARNING **: AT_SPI_REGISTRY was not started at session startup.
(mutter:24120): atk-bridge-WARNING **: IOR not set.
(mutter:24120): atk-bridge-WARNING **: Could not locate registry
This means that I was not able to load the atk-bridge using the nested server, so I used the replace option. Not a big issue right now, as gnome-shell is going really slow there, but I would like to use that on real development. Any quick ideas?
Ok, let’s go with the replace option, running Accerciser. What we get? Here a screenshoot:
I suppose that this gnomeshell-taskpanel came from gnome- shell ;), but we can see that just under mutter there isn’t any child. So, how to interact with this “Activities” button just on the top-left corner of the window?
Well, probably now I should have started to look at the mutter+gnome-shell code trying to analyze all their parts, but before that, I wanted to test a quick hack. Basically, see what happens if we just load Cally instead of GAIL. This can’t be done using the GTK_MODULES env (so don’t forget to clean it), as it is required to be done after init Clutter, and as there is no general way to do that on Clutter, this is required to made by hand. And by hand I mean modify directly Mutter, with a hackish patch.
Wow, wow. This is working, it doesn’t crash, both modules are loaded. Let’s test Accerciser. What we get? All the applications frozen. Hmm, well, this isn’t exactly what we wanted, but probably has sense. Probably Accerciser uses all the fancy AtkUtil methods related to event listeners, not implemented yet.
Well, no problem at all, I can return to the old times, and use dogtail. The good news is that now I’m able to see things under mutter application, and get their objects. For example the “Activities” button just in the top left corner. And click it! As easy as the screenshot shows:
Ok, so I’m writing on the python terminal, and getting the objects, and I click on “Activities”. What happens? That all are moved to another view (probally called activities view or something like that). See a example:
Of course, I lost the focus on the terminal, so I can’t just type again “activities.click()” ir order to go back to the previous view. Since the POV of the automatic testing this is not a issue. For example, this little dogtail test works without problem. It clicks the activities button, and after two seconds, it click it again, so the view goes back to the normal one, no problem. But from the “classic a11y” POV this could be a issue. Although normally I don’t use AT apps like Orca, I always think that if I’m able to control a app just with the python terminal and dogtail stuff, any AT app could do that (this is not 100% true, I know). Here I found that this wouldn’t be as easy.
Anyway, this is not only about the AT apps. For example, in order to take the screenshot, I just clicked the “Impr Pant” so the save screenshot dialog appear. But of course, on one of the working areas. These working areas minimized at that moment, so to interact to that I needed to click on the working area and so on. IMHO, this is confusing, but after all, gnome-shell is just on development, but this leads if we need a app on the top of that view…
Well, and now the next steps should be do a real work instead of just change the module to load. About that, probably one of the other big issues is that we will need to manage a mixed environment GAIL-Cally, so I need to check how to do that. Other thing to review is just print all the things currently exposed (just mutter.dump()) and see if we miss something.