Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

motorboat - a tiny browser

I'd put a development update here but there's too much stuff to post. Cookies are slightly broken right now because of sloppy handling (multiple instances handling a non-relational database for the purpose of access spead) thanks to libsoup sucking at checking non-sql cookie jars; I'm beginning to rewrite the browser in C++ also due to an annoyance with the GObject model in C... might as well use C++ due to the fact that function objects (errr functors) are far more efficient in C++ compilers; and GObjects are basically a poor attempt at oop in C (oop can be done ok in c... this just looks ugly)

So yeah, essentially rewriting this whole thing in C++, when exams are done there will be an update out here probably with a nicer codebase

(Private browsing may also have an extra paranoia layer- potentially when doing IO with streambufs when available, the streambuffers will encrypt/decrypt on read/write so as to keep everything hidden including the temporary session.


motorboat is a small GTK+/Webkit browser written in C. It's based on suckless.org's surf, a simple, barebones browser; I took the liberty of adding what I wanted onto this frame; as I couldn't find a browser that suits me. The software is fully functional and very stable, but a bit niche.

Should compile easily on any *nix system with X, glib, and libwebkit-dev available, and should be pretty simple to port to Windows.
I'll consider doing the port myself if someone actually wants it.

Some of the "features" aren't non-standard in most browsers, but the main focus is keeping the browser very small, and easy to edit.

Features: (* implies inherited feature, all else are my additions)

-> Small footprint (49KiB dynamic executable, ~6mb static) * ---- Now some few (tens?) of KiB larger, added features - 2012-02-11
-> XEmbed support (can embed motorboat into another application - requires X11 - tabs can be implemented via tabbed) *
-> Switchable and extensible URI handler (can forward uri input to a specified address mode, switch with Alt-a/Alt-s), included modes are Search engine, Wikipedia, Dictionary, Wolfram Alpha, and Literal interpretation (in case the interpreter fucks something up in some rare case -- unlikely) Now integrated history and URI bar, separate search bar, (just different hotkey so technically same bar?), and real time history (not merely user submitted items)
-> Bookmarks+dmenu - simple pop up menu with pattern matching to find bookmark
-> History+dmenu - like bookmarks, but all of the URIs entered by the user. Note: History is not stored for every page visited, just for user entries. I may add full activity history eventually, but I've had no need yet. ---- See above regarding URI/History bar integration - think chrome's unibar - 2012-02-11
-> Webkit backend (Same rendering engine as Chromium, Safari, Android browser, etc) -- excellent standards compliance, works with pretty much everything *
-> general purpose prefix modifiers - configure in config.h prior to compilation. An example for loading a reddit subreddit is included (in url bar - Alt-g, "rdt: askreddit" will go to "http://www.reddit.com/r/askreddit/")


WIP/dev stuff (formerly coming soon):

-> Fixed a bug occuring when page finished loading; the status displayed 0%
-> private mode browsing, recent page caching
-> Added WebViewInspector (web developer element/page/whatever inspector, standard from webkit)
-> get some sleep
-> Userscript support ---- pretty much there just don't feel like writing parser for greasemonkey script metadata, might require my own header format for userscripts? Not unrealistic.
-> Native tabs (but it works perfectly in tabbed for now) ---- Working on integrating this and dmenu; likely will just tear out needed functions and strip the rest; I'd like to keep it one .c file and one config header, and <2000 loc, but I think that's more than realistic.
-> Spellcheck in text fields ---- This is technically implemented, but having some problems setting up gobjects and what the tits what's supposed to signal what, webkit has VERY poor documentation for some settings options

Source now defunct at that location, git/mercurial repo going up soon. available at:
http://socr.uwindsor.ca/~lukawskc/softc ... rboat.html


Might as well ignore this as well. A cleaned up version is coming once my testing branch is polished (man pages are not updated, small quirky issues to pick out (such as the tld matching algorithm which should not be linear in complexity, it makes for the occasional laggy skip))
Also required: dmenu
My slightly tweaked tabbed setup (recommended with motorboat for the sake of ease of use): tabbed-boat
Shell script to use tabbed-boat with motorboat: moboatt.sh
Original tabbed: tabbed


MIT/X11 Licence


//outdate also
This is not a crazy concept, however extremely useful and a little bit more work to implement in C.

Initial Mode:
GWQS9.png


Switch Mode to Wolfram:
LnmaJ.png

Type Query:
CzeW9.png

Results:
CzeW9.png

I'm looking for feedback on features, how they can be improved, collaboration if you've got an idea, or just ideas you'd like to see in general. This project is meant to be a learning experience.

Thanks and credit goes out to suckless software, myself, and M. Renaud.
 
Whoo! Fixed both segfault errors (there were two, one logical, and the other some xerror (found a solution on a mailinglist- essentially just make a handler for it so it ignores errors), so now children won't accidentally kill their parents while still initializing, and a few memory leaks, one that I believe caused WebKitWebView to sometimes hang on webkit_web_view_load_uri() requests, seemingly regardless of context or content of string, just poor tabs on memory caused this (and with these ones, as shaggy puts it, it wasn't me!), and another bug from a typo/mishandling of browser status that didn't handle the load statuses right on certain occasions (main fault).

motorboat is shaping up to be an ok browser.

SERIOUSLY REMEMBER TO TAKE OUT YOUR TRASH

Especially important when you use parts of someone elses' code.

Going to put up a public mercurial repo soon with werchg as a nice web view frontend; not a lot of updates have been put here as I've been focusing on fixing some larger bugs, and am working on migrating my repo from my friend's server's git repo to a mercurial repo on socr.uwindsor.ca.
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top