All of the following has not been implemented. It's just my design goals. -- CP HTML, XML, CSS and ECMASCRIPT PARSERS ===================================== The idea with the parsers is to implement (at least) one for each version of each DTD or language version, and implement them as dynamically loadable modules ('plugins'). The user can then select which parser(s) should be used in the parsing of Web pages, or can have the browser choose at parse-time (using cues provided in the document). This way, the browser is extensible and can shed unneeded memory (i.e., no need to load support for ECMAScript if the user doesn't want it). Ultimately, I'd like for developers to be able to write parsers in any of several languages. I intend to write one for strict HTML 4.0 and one for CSS 1 in Perl. I do not intend to touch ECMAScript/JavaScript, because I think it sucks. Someone else can do that. :) CACHEING/OFFLINE BROWSING ========================= Every document a user downloads will be written to a file (~/.gzilla/cache//). (Maybe it should be gzipped for space saving?) Furthermore, the output of the parser will be written to another file (~/.gzilla/cache//..out) to speed up display of pages the user has already seen. Downloading an entire site or part of a site will be implemented as a special case of the integrated command shell (described below). INTEGRATED COMMAND SHELL ======================== The 'address bar', the area where users type in URLs to be downloaded and displayed, will actually be a miniature command shell, with 'gzilla' implicit at the beginning. From here, users will have the ability to invoke any of Gzilla's command line options (described below), as well as access to external programs via piping and redirection. Examples: http://www.example.net/somefile.html | grep blarg > ~/blarg-results -dump http://www.example.net/somefile.html > ~/example-dump ftp://metalab.unc.edu/pub/Linux/kernel/patch.gz | gunzip - > \ /usr/src/linux/patch http://www.example.net/somefile.html --no-css --use- ... Thus all the Unix goodies become available from within Gzilla, and you can do a lot of work without ever switching to a terminal window or mousing around for menu choices (e.g., redirection to a file is essentially 'Save As...'). Without file redirection, STDOUT is the browser window. In all cases, files are cached as described above. The wildcard characters expand as normal when in the context of regular text, but file output(s) is/are written to the proper cache file and not displayed on STDOUT. Thus http://www.example.net/*.*htm* Writes all the files ending in .*htm* to the cache (e.g., for later offline browsing). However, in the case of a lone wildcard, as in http://www.example.net/* http://www.example.net/section2/* the entire site below the directory the * is in will be downloaded (the entire site, and all of section 2, respectively). Note that this is not the same behavior exhibited by the standard Unix shells. COMMAND LINE OPTIONS ==================== Where command line options conflict with default or ser-defined preferences, they take precedence. -h, --help Display command line options. -d, --dump As in Lynx. --no-css, --use-css Do (not) use Cascading Style Sheets, if present in the document. --no-ECMAScript, --use-ECMAScript Do (not) use ECMAScript/JavaScript, if present in the document. --use- Parse the document with the given parser (overriding document's cues). This could give weird results. :) -n, --new-window[name] Open URL in a new window (with optional [name]). --open-in Open URL in named window. If does not exist, it is created. GRAPHICAL INTERFACE (MENUS, BUTTONS) ==================================== MENUS Gzilla New Window CTRL+N Open... CTRL+O Preferences... CTRL+F Close Window CTRL+W --- Exit Gzilla CTRL+X Document Save (As)... CTRL+S View Source CTRL+V Copy Text CTRL+C Select All CTRL+A Find Text... CTRL+F Print CTRL+P Browse Back ALT+LEFT Forward ATL+RIGHT Reload CTRL+R Stop Loading ESC Home CTRL+H Bookmarks CTRL+B --- [linear history] Bookmarks Add Bookmark CTRL+A --- [bookmarks] Help Gzilla Home Gzilla Manual # file:/path/to/manpage | groff -man :) BUTTONS Back one step/back in history Forward one step/forward in history Reload Stop Loading Home Bookmarks Raph's old stuff * Better bookmark support, and improve bookmark file format and parsing. [CP: Maybe use Randy's bm2html, or the like?] * make autoconf find gtk libraries. * implement ftp methods for bytesink