Qtonium

6 views
Skip to first unread message

Alon Zakai

unread,
Dec 4, 2009, 6:26:09 AM12/4/09
to kyor...@googlegroups.com
We just added web browser integration, and thought it might be useful to others, so here it is as a separate project: Qtonium (the name obviously being inspired by Awesomium and Berkelium ;)

Code: http://code.google.com/p/qtonium/
Silly screenshot: http://qtonium.googlecode.com/files/screenshot_331346.jpg

This is really a very simple approach to embedding a web browser: It is done entirely in Python, using Qt. It can show multiple separate web browsers with good performance. Other details: Mouse clicks work, but seem to be very slightly 'off' in their position. Key presses are sent but currently don't work for some reason. Tested on Linux, but should work on any platform.

Code is triple-licensed under: Apache 2.0, GPL 3+, AGPL3+.

- kripken


Ryan McDougall

unread,
Dec 4, 2009, 8:24:04 AM12/4/09
to kyor...@googlegroups.com, realxt...@googlegroups.com
Excellent! We should totally pick this up!

Cheers,

Henrik Bennetsen

unread,
Dec 4, 2009, 1:21:16 PM12/4/09
to kyor...@googlegroups.com
Very cool :)




--
Henrik Bennetsen
Associate Director
Stanford Humanities Lab
Stanford University

Wallenberg Hall, 450 Serra Mall
Building 160, Stanford University
Stanford, CA 94305-2055, USA

benn...@gmail.com
Cell: +1 415.418.4042
Fax: +1 650.725.0192

Alon Zakai

unread,
Dec 5, 2009, 3:40:35 AM12/5/09
to kyor...@googlegroups.com, realxt...@googlegroups.com


On Sat, Dec 5, 2009 at 12:05 AM, Toni Alatalo <ant...@kyperjokki.fi> wrote:
Btw, we have working in-world / on-object-as-texture interactive qt
canvases in Naali trunk, as of last week. IIRC mouse clicks etc work ok.
And have been using qt webviews on 2d surfaces since the beginning
basically, for login ui.


Oh, interesting.

Well, one difference from how I am guessing you use Qt here is that Qtonium is designed as a plugin. In particular, that makes it

1) Convenient to use in a non-Qt app (like the Syntensity client), and

2) Possible to run each web browser in a separate process, kind of like Chrome, for security and stability purposes. This isn't implemented yet in Qtonium, but it would be trivial to add, given the architecture (although it would naturally have a performance penalty - just like Chrome).


Btw, I am considering expanding Qtonium into a general framework for media plugins (like playing video, etc. - already have a proof of concept, http://www.youtube.com/watch?v=pue-wRGa6yU ). I guess similar to how web browsers have plugins and how I presume the new SL media framework is (but Qtonium is written in Python, is much simpler, and is permissively licensed).

 
BTW the Qt integration we are using is PythonQt, which is different from
PyQt and PySide. I haven't yet looked into the interoperabilities of
those, but the APIs are of course now very far off (the basic diff is
that PythonQt is bsd-like, for embedding in c++ qt apps, whereas PyQt
(gpl) and PySide (new bsd-like rewrite of PyQt by Nokia) are for making
full qt applications in Python (instead of using c++ necessarily).

It seems that Qtonium is PyQt, so perhaps the time to study
interoperability comes soon. It might be also possible to use PyQt in
Naali when GPL is suitable, we haven't tested that (have just used PyQt
for separate apps, like when developing the webdav inventory module that
is in use in Naali via PythonQt now).


If I am not mistaken, PythonQt has only partial functionality compared to PyQt/PySide, because you can't access member functions. So it wouldn't work for something like Qtonium (we need those member functions for offscreen rendering etc.).

But PyQt and PySide should be exchangeable, at least when PySide is ready, I think I have heard. So at that point there would be an LGPL option. Although I don't think the GPL should be an issue here, given the plugin nature of Qtonium. (In any case, just to be polite to PyQt I also added the GPL as one of the licenses of Qtonium. That's why there are 3.)

- kripken

Ryan McDougall

unread,
Dec 7, 2009, 2:39:41 AM12/7/09
to kyor...@googlegroups.com, realxt...@googlegroups.com
On Sat, Dec 5, 2009 at 10:40 AM, Alon Zakai <al...@syntensity.com> wrote:
>
>
> On Sat, Dec 5, 2009 at 12:05 AM, Toni Alatalo <ant...@kyperjokki.fi> wrote:
>>
>> Btw, we have working in-world / on-object-as-texture interactive qt
>> canvases in Naali trunk, as of last week. IIRC mouse clicks etc work ok.
>> And have been using qt webviews on 2d surfaces since the beginning
>> basically, for login ui.
>
>
> Oh, interesting.
>
> Well, one difference from how I am guessing you use Qt here is that Qtonium
> is designed as a plugin. In particular, that makes it
>
> 1) Convenient to use in a non-Qt app (like the Syntensity client), and
>
> 2) Possible to run each web browser in a separate process, kind of like
> Chrome, for security and stability purposes. This isn't implemented yet in
> Qtonium, but it would be trivial to add, given the architecture (although it
> would naturally have a performance penalty - just like Chrome).
>
>
> Btw, I am considering expanding Qtonium into a general framework for media
> plugins (like playing video, etc. - already have a proof of concept,
> http://www.youtube.com/watch?v=pue-wRGa6yU ). I guess similar to how web
> browsers have plugins and how I presume the new SL media framework is (but
> Qtonium is written in Python, is much simpler, and is permissively
> licensed).

How does the plugin loading work? Are they QtPlugins?

Cheers,

>>
>> BTW the Qt integration we are using is PythonQt, which is different from
>> PyQt and PySide. I haven't yet looked into the interoperabilities of
>> those, but the APIs are of course now very far off (the basic diff is
>> that PythonQt is bsd-like, for embedding in c++ qt apps, whereas PyQt
>> (gpl) and PySide (new bsd-like rewrite of PyQt by Nokia) are for making
>> full qt applications in Python (instead of using c++ necessarily).
>>
>> It seems that Qtonium is PyQt, so perhaps the time to study
>> interoperability comes soon. It might be also possible to use PyQt in
>> Naali when GPL is suitable, we haven't tested that (have just used PyQt
>> for separate apps, like when developing the webdav inventory module that
>> is in use in Naali via PythonQt now).
>
>
> If I am not mistaken, PythonQt has only partial functionality compared to
> PyQt/PySide, because you can't access member functions. So it wouldn't work
> for something like Qtonium (we need those member functions for offscreen
> rendering etc.).
>
> But PyQt and PySide should be exchangeable, at least when PySide is ready, I
> think I have heard. So at that point there would be an LGPL option. Although
> I don't think the GPL should be an issue here, given the plugin nature of
> Qtonium. (In any case, just to be polite to PyQt I also added the GPL as one
> of the licenses of Qtonium. That's why there are 3.)
>
> - kripken
>
> --
> http://groups.google.com/group/kyoryoku

Alon Zakai

unread,
Dec 7, 2009, 3:55:26 AM12/7/09
to kyor...@googlegroups.com


On Mon, Dec 7, 2009 at 9:39 AM, Ryan McDougall <semp...@gmail.com> wrote:
On Sat, Dec 5, 2009 at 10:40 AM, Alon Zakai <al...@syntensity.com> wrote:
>
>
> On Sat, Dec 5, 2009 at 12:05 AM, Toni Alatalo <ant...@kyperjokki.fi> wrote:
>>
>> Btw, we have working in-world / on-object-as-texture interactive qt
>> canvases in Naali trunk, as of last week. IIRC mouse clicks etc work ok.
>> And have been using qt webviews on 2d surfaces since the beginning
>> basically, for login ui.
>
>
> Oh, interesting.
>
> Well, one difference from how I am guessing you use Qt here is that Qtonium
> is designed as a plugin. In particular, that makes it
>
> 1) Convenient to use in a non-Qt app (like the Syntensity client), and
>
> 2) Possible to run each web browser in a separate process, kind of like
> Chrome, for security and stability purposes. This isn't implemented yet in
> Qtonium, but it would be trivial to add, given the architecture (although it
> would naturally have a performance penalty - just like Chrome).
>
>
> Btw, I am considering expanding Qtonium into a general framework for media
> plugins (like playing video, etc. - already have a proof of concept,
> http://www.youtube.com/watch?v=pue-wRGa6yU ). I guess similar to how web
> browsers have plugins and how I presume the new SL media framework is (but
> Qtonium is written in Python, is much simpler, and is permissively
> licensed).

How does the plugin loading work? Are they QtPlugins?



No, the plugin system is pure Python and is not intended to have any other dependencies.

It's really just a simple approach to making it easy to load and communicate with plugins, including the main features relevant to a virtual world.

- kripken

Reply all
Reply to author
Forward
0 new messages