[webkit-dev] Curses port?

Alp Toker alp at nuanti.com
Sun Jan 19 11:18:59 PST 2014

On 19/01/2014 18:51, Shea Levy wrote:
> Hi Alp,
> On Sun, Jan 19, 2014 at 06:43:10PM +0000, Alp Toker wrote:
>> On 19/01/2014 18:34, Shea Levy wrote:
>>> Hi all,
>>> I'd like to have a browser that can be used from the terminal but
>>> actually supports modern HTML, js, etc. to the extent that is reasonable
>>> for a console. It seems no such browser currently exists, so I was
>>> thinking about trying to port webkit to use a curses backend. Is such a
>>> thing a reasonable project? Ideally I'd just be able to plug some
>>> rendering logic on top of an unmodified webkit core...
>> HI Shea,
>> It is possible as a full-blown port, but moreover would be straightforward
>> to get done using just the standard API and DOM binding of any existing port
>> that supports operation without an on-screen view.
> Ah, great! Can you give me a pointer to how to get started with such
> existing ports? Particularly interested in running on Linux,

A simple implementation would use the ordinary ordinary load 
WebView/WebFrame resource load functions (load_uri), then access the DOM 
(get_dom_document) and iterate through nodes, converting them to text 
and hyperlinks to be represented in your curses UI. Hook into ordinary 
DOM mutation events to update the text UI if the port doesn't have more 
suitable callbacks.

If you want something like classic 'lynx' you're basically already there 
at that point. If you want to get layout like 'w3m' that's obviously 
more work but you can still get there using layout positions from the DOM.

The best way to think about this assuming you're more familiar with web 
programming is "How would I implement this in JavaScript using the W3 
DOM?" -- then port the logic to native code.

> ideally without bringing in dependencies on gtk or qt.

As for dependencies, it's a cost/benefit weigh-off and the cost of 
maintaining a port is very high.

There's very little runtime overhead to having something like GTK+ in 
the background, or even Mac WebView with a hidden view. There are also 
some out-of-tree ports focusing on headless operation -- I'm sure 
someone will be able to advise if you go that route.


>> Alp.
> Cheers,
> Shea
>>> Cheers,
>>> Shea Levy
>>> _______________________________________________
>>> webkit-dev mailing list
>>> webkit-dev at lists.webkit.org
>>> https://lists.webkit.org/mailman/listinfo/webkit-dev
>> -- 
>> http://www.nuanti.com
>> the browser experts

the browser experts

More information about the webkit-dev mailing list