You are using an obsolete web browser, or you have the page styles (CSS) disabled. You'll be able to access this site, but only a visually simplified version.

WebKit + D-Bus -> Instant Chrome-like browser [continued]

OK, it is now safe to write this post. The April 1st has passed, and now all of us (except the Onion news authors, obviously) are returning to the every-day reality.

Unfortunately, I don’t have enough time lately to do anything serious, so I’ve tackled the multi-process web browser that I have mentioned last time.

It received some standard web-browsing features such as loading a page when you type the address in the address bar, and similar :)

But that’s not the reason behind writing this this post. You know how Firefox and Konqueror ask you whether you want to restore your last session after a crash? Well, it is a good feature, but I’ve got one even better.

Webbie Notifications

When a site makes an illegal move, and induces a crash in QtWebKit, instead of crashing the whole application (like in most other browsers), it only closes the tab it belongs to. OK, that’s not new. The new thing is that I’ve ported a notification system that I made some time ago for another application, so that when a tab is lost, it can be recovered very easily – just click ‘Reopen’ (see the screenshot).

I haven’t used KDE‘s system wide notifications since I wanted to make them local (there’s no point in bogging the system notifications with things like these).

The next step will be to implement more advanced, but still standard browsing features. The smart address bar will be one of the first. It could probably end up in Konqueror and Rekonq eventually. (Nepomuk tags for bookmarks…)

Share and Enjoy:
  • FSDaily
  • Slashdot
  • Digg
  • del.icio.us
  • Identi.ca
  • Twitter
  • Technorati
  • Reddit
  • LinkedIn
  • Netvibes
  • StumbleUpon
  • Facebook
  • Add to favorites
  • email

29 Comments

  1. Wow, this rocks! Please keep on working on this. KDE still needs a great stand-alone browser.

    Comment by Chris — 3 April 2009 @ 12:01 Reply to this comment

  2. Hm, isn’t there a way to get this improvements into konqueror?

    Comment by beat wolf — 3 April 2009 @ 12:03 Reply to this comment

  3. Pretty interesting which particular site crashed the tab. :)

    Comment by Gordon Schulz — 3 April 2009 @ 12:12 Reply to this comment

  4. Wouldn’t it be interesting to integrate these features directly into rekonq?

    Comment by Bastien — 3 April 2009 @ 12:18 Reply to this comment

  5. @Chris: Well, I don’t really have the time to develop a fully-featured web browser, so I’ll try to make everything easy to understand (so that anyone could develop) and reusable (in Konq and Rekonq)

    @beat wolf: It would be possible, but not easy. It was last time mentioned – making multi-process KParts is not an easy job.

    @Gordon Schulz: Well, to be honest it didn’t crash the tab, I killed it manually. :) (the reason why it was gnome was that it was the easiest to type :) – just renamed kde to gnome)

    Comment by Ivan Čukić — 3 April 2009 @ 12:18 Reply to this comment

  6. @Bastien:
    1. It wouldn’t be an easy task (aka I have no time to study the Arora/Rekonq code)
    2. Rekonq is not in KDE’s SVN yet

    Comment by Ivan Čukić — 3 April 2009 @ 12:25 Reply to this comment

  7. well, very good job …

    when can I expect it in kde SVN?

    Comment by smihael.blogspot.com/ — 3 April 2009 @ 12:43 Reply to this comment

  8. Rather than bugging the user with information about a page she isn’t viewing it might be better to only display the restart dialog when the user opens the crashed tab …then again if the page is doing something such that it is able to crash perhaps the user would be interested to know that it has terminated.

    Comment by maninalift — 3 April 2009 @ 13:02 Reply to this comment

  9. There are toolbars for each tab or one toolbar for all tabs (modified when the focused tab change) ?

    If components are differents, would not it be easier to put tabs in kwin?

    Comment by Megabigbug — 3 April 2009 @ 13:12 Reply to this comment

  10. @smihael.blogspot.com/: I’m not sure, but it will be soon

    @maninalift: I’m not sure, I would like to know when the page fails, even if I am not currently looking at it…

    @Megabigbug: First of all, KWin has no support for tabs. And the other thing is that some UI parts are in the main application, and some are in the embedded one.

    Comment by Ivan Čukić — 3 April 2009 @ 14:21 Reply to this comment

  11. I wanna test it, where can I get it and how do I install it?

    Comment by Dean — 3 April 2009 @ 15:02 Reply to this comment

  12. “First of all, KWin has no support for tabs.”
    I know :(
    Don’t you think it would be useful ?

    “And the other thing is that some UI parts are in the main application, and some are in the embedded one.”

    I am curious, can you tell me more ?
    Menus, Tabwidget, your crash manager are in the main application.
    Toolbars and Webkit component are in the embedded applications.

    You are doing a great job with your proof of concept.

    My comment was aimed to raise important questions about kde. Why all applications must implement tabs feature ? why they must implement a crash manager ?

    Comment by Megabigbug — 3 April 2009 @ 15:15 Reply to this comment

  13. great idea! great work! Thanks for all (just an ex Lancelot) but for all kde’s world it would be a good think if this feature is hack in Rekonq that is a very young but grown-well project.
    One great webkit browser for a great kde!
    Sorry for my aggressive word but I don’ t speak a very good English so this is just simplest way to say what I think.

    Comment by megomeg — 3 April 2009 @ 15:22 Reply to this comment

  14. @Dean: It will be available later.

    @Megabigbug: The KWin tabs could be useful, but it is not really relevant
    to this.

    You guessed it right as far as the current separation is concerned. Later, it may change. Most importantly, the heavy stuff such as the future “smart bar” will have to be in the main application. (at least the data models ans that sort of stuff)

    KDE apps have one common crash handler – Dr. Konqi. So, there is no need for implementing it in all applications.

    The thing that differs in this case is that this should appear (to the user) as a tab-closed event rather than a crash.

    @megomeg: Thanks. As for Rekonq, see above.

    Comment by Ivan Čukić — 3 April 2009 @ 16:13 Reply to this comment

  15. Thank you for these clarifications :)

    I have a last question: is it possible to X-embed 1 program in 2 programs ?

    Comment by Megabigbug — 3 April 2009 @ 16:46 Reply to this comment

  16. @Megabigbug: No, unfortunately, it is not possible. Cheers!

    Comment by Ivan Čukić — 3 April 2009 @ 16:51 Reply to this comment

  17. Great Work!

    I can’t wait to install it on my archlinux, please release the code =)

    Comment by QUASAR — 3 April 2009 @ 22:51 Reply to this comment

  18. Hi, I like the idea a lot :)

    Sorry for the OT and the coding question, but how did you implement the notification icon on the menubar? I’d like to have a couple clickable buttons in the menubar space :)

    Comment by Valerio — 4 April 2009 @ 02:00 Reply to this comment

  19. @QUASAR: As with everything else, just be patient.

    @Valerio: Just set the parent widget of the button(s) to be the menubar. Then installEventFilter on the main window and manually relayout the buttons on size change. (You could put the buttons inside a QFrame so that you only need to move the frame, and not each button)

    Comment by Ivan Čukić — 4 April 2009 @ 09:44 Reply to this comment

  20. I think there are two things that KDE needs : 1. A browser (i use konqueror but i’d like webkit) 2. Media Player

    Great work. Keep going !

    Comment by Dimitris — 4 April 2009 @ 14:30 Reply to this comment

  21. @Dimitris: You can use Konq with WebKit – the WebKit KPart is stable enough.

    Comment by Ivan Čukić — 4 April 2009 @ 15:39 Reply to this comment

  22. I’ll try to implement this killer feature in rekonq for the next release (after..the next). In the next release (first stable, perhaps) I promise I’ll move code to KDE svn. I have just some gitsvn related troubles..

    Comment by Andrea Diamantini — 4 April 2009 @ 15:59 Reply to this comment

  23. Ivan, please give us a good qt browser…konqueror sucks, FF is ugly… ;)

    Comment by Punky — 12 April 2009 @ 11:37 Reply to this comment

  24. Can you release its source code? I was waiting for its source code for 1 year. Please give us your amazing source code.
    Chromium is based in Gtk and the others browsers sucks.

    Comment by Luis Iván — 28 December 2009 @ 17:07 Reply to this comment

  25. As I said, this was a proof of concept for the multi-process browser behaviour – it was far from a complete browser.

    If you want a Qt browser, use rekonq (or whatever its final name will be). It has the /multiprocessness/ in its roadmap.

    Cheerio!

    Comment by Ivan Čukić — 28 December 2009 @ 22:09 Reply to this comment

  26. I known this browser is simply and incomplete, but I want its source code because I like the concept of transmite data over DBus with an unified GUI.
    Can you release its source code please?

    Comment by Luis Iván — 30 December 2009 @ 10:48 Reply to this comment

  27. Ok, if that is the case, you can find the (temporary) link to the source code in your inbox.

    And, with the risk of repeating myself, its sole purpose is to be a proof of concept and not to be used as a real application. (you can’t even put http://www.google.com, but you must type it as http://...)

    Cheerio!

    Comment by Ivan Čukić — 30 December 2009 @ 11:26 Reply to this comment

  28. Ok! The code is amazing, I am going to learn a lot of Qt, DBus and XEmbed with this code! Thanks :)

    Comment by Luis Iván — 30 December 2009 @ 19:06 Reply to this comment

  29. You’re welcome. I hope it’ll be helpful!

    Comment by Ivan Čukić — 30 December 2009 @ 19:40 Reply to this comment

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.