Hi all. Here's my GSOC proposal.
Short description: This proposal is for working on integrating a web browser component within XBMC.
Summary: A lot of media content is made available through websites such as youtube.com and ustream.tv. There are also services such as Amazon video and Vudu which have their own websites where users can view their media content. Adding a web browser component to XBMC would make for a great feature in order to have access to all this media content via XBMC.
How will I achieve this: QtWebkit will be used to provide the web browser. QtWebkit (through the Qt framework) provides a widget that can be rendered inside a 3D texture. This will be needed in order to embed the web browser within XBMC.
Benefits: Any user who has ever wanted to view content on websites such as youtube.com or Amazon video through XBMC will benefit. Aside from media content, users will be able to access any website they wish through the use of the XBMC Media Center.
Goals: The first goal would be to have a basic browser component running within XBMC. This basic browser will have minimal functionality (i.e. functionality for going to the home page, stop, refresh, back, forward, the address bar, and a go functionality). Only one page would be viewable at a time and it will be more suited for use with a keyboard and mouse. The second goal will be usability refinements for the web browser. In particular, the usability refinements for the second goal is, navigation of a web page with a minimal input device (i.e. "tabbing" up, down, left, and right through web elements with a standard TV remote). The second goal will also include the ability to have multiple pages loaded and navigable (a sort of "tabbed" browser for XBMC).
What does it touch in XBMC: The Qt framework needs to be initiated via the main thread so there needs to be some code in main() or in the CApplication class which maintains an instance of Qt's QApplication class. Also, some way to process events for the Qt framework needs to be done, so there will be some code in CApplication::Process() that does just that. It will need things such as translations, icons, configuration settings. Also, layout information needs to be added to the confluence skin package.
Requirements: C++, advanced knowledge of the XBMC codebase, and general knowledge in working with Qt widgets is required.
How long have you been writing software for work/fun?
For over 5 years now, for both work and fun.
amejia
Team-XBMC Developer Posts: 111 Joined: Dec 2008 Reputation: 0 |
2012-04-05 15:39
Post: #1
|
| find quote |
TheMonkeyKing
Junior Member Joined: Mar 2012 Reputation: 0 |
2012-04-05 16:30
Post: #2
Would it be best to make this a plug-in/add-on? (If there is a distinction between the two post-Eden, please let me know. If not, the XBMC team should decide they're all plug-ins or add-ons and stick with it.)
Pros: - Development cycles for both the plug-in and Core do not have to be in sync, otherwise each is dependent on the other for pushing out gold code. - As a plug-in, users can decide whether or not to use it. - Different uses, opinions, semantics, designs can and will change over the years and sometimes even between master builds. By not tying this to core, other styles of web viewing can be possible without worry of incompatible code (Could a Silverlight browser add-on conflict with this core product? Perhaps.) - Easier customization. Cons: - Separate install from core. No "out-of-the-box" experience. |
| find quote |
maruchan
Fan Posts: 308 Joined: Feb 2009 Reputation: 0 |
2012-04-05 16:55
Post: #3
This would be great, especially if addons could use HTML(5?) for their interfaces. However, historically, the devs have been apprehensive to include a browser due to the amount of dependencies it would add.
|
| find quote |
amejia
Team-XBMC Developer Posts: 111 Joined: Dec 2008 Reputation: 0 |
2012-04-05 18:52
Post: #4
Yes, it would be ideal to make this an addon. I would probably look into making this an addon as a third sub goal for this GSOC task.
|
| find quote |
amejia
Team-XBMC Developer Posts: 111 Joined: Dec 2008 Reputation: 0 |
2012-04-05 19:00
Post: #5
Here's a visual. This is the web browser component I worked on around this time two years ago. At the time I was experimenting with a fork of qtwebkit called llqtwebkit, so what you see is using llqtwebkit. However, it is certainly possible to embed a web browser into XBMC by just using vanilla qt and qtwebkit, which is what I intend to do.
|
| find quote |
TheMonkeyKing
Junior Member Joined: Mar 2012 Reputation: 0 |
2012-04-05 20:24
Post: #6
Great! If I may throw a couple of requests your way then...
- Start browser in fullscreen - Use either a hover or key press to reveal a close window icon or Use a key press to close the window I ask because my own tests with browsers other than IE with XBMCflix (Netflix add-on) is aimed at achieving a multimedia experience without exposing the user to the web browser construct. I mean that someone using XBMC wants more of the video, music and games experiences than they do with applications and windows. A person who uses a laptop or desktop computer for things other than XBMC expects to see windowed environments with multiple windows (or browser tabs) open on their desktop. So if you can make the browser more about the content than the container, I think it'll fit nicely in an XBMC environment. To me that means at launch from XBMC, the browser opens full screen. Also instead of a URL bar at the top of the browser, I see a function key or key presses (Ctrl+Q?) that opens a transparent window on top of the browser window that works as the URL bar or acts as a pull down or pull up menu. That way you can close or open it without a window resize. |
| find quote |
RockerC
Senior Member Posts: 154 Joined: May 2011 Reputation: 3 |
2012-04-06 17:30
Post: #7
An integrated web browser would be great as it could enable addon web based DRM applications such as Netflix or other Silverlight and Flash based addons, such as Boxee does.
But why add dependency on Qt framework? Why not just use a pure version of WebKit or something with less dependencies? And could the layout engine be abstracted so that you could later replace it with Gecko or whatever without too much work? Depending on Qt from the start might prevent that? |
| find quote |
amejia
Team-XBMC Developer Posts: 111 Joined: Dec 2008 Reputation: 0 |
2012-04-06 20:40
Post: #8
@TheMonkeyKing The general usability of the web browser will definitely be considered. Of course, certain ways of using a web browser through a big screen tv via a remote have to be addressed.
|
| find quote |
amejia
Team-XBMC Developer Posts: 111 Joined: Dec 2008 Reputation: 0 |
2012-04-06 20:48
Post: #9
@RockerC Using webkit requires the use of some kind of widget library. The "pure webkit" so to speak uses gtk+. There is qtwebkit, and there is a list of other ports of webkit. Choosing one over another requires more or less the same number of dependencies. Using gecko follows a similar situation where you need make use of some kind of widget library.
|
| find quote |
RockerC
Senior Member Posts: 154 Joined: May 2011 Reputation: 3 |
2012-04-06 21:25
Post: #10
(2012-04-06 20:48)amejia Wrote: @RockerC Using webkit requires the use of some kind of widget library. The "pure webkit" so to speak uses gtk+. There is qtwebkit, and there is a list of other ports of webkit. Choosing one over another requires more or less the same number of dependencies. Using gecko follows a similar situation where you need make use of some kind of widget library.Should it not be XBMC's own GUI library that will be acting as the widget toolkit here? How else could the web browser be fully integrated into XBMC for embedded addons, and not just for browsing the web classic style? How does Boxee do it with its web based apps? Boxee too uses WebKit for apps but how can it integrate more than as just a classic web browser? |
| find quote |

Search
Help