Skip to content

Selene Browser

kazah-png edited this page Jul 26, 2026 · 5 revisions

Selene — the NyxOS web browser

Selene is a web browser written as a kernel window (kernel/selene_win.c). It fetches real pages over HTTP and HTTPS, parses the HTML itself, lays it out as text with headings, lists, tables and inline images, and lets you follow links, submit forms, search the page, and keep several tabs open.

It is named after the moon, like the rest of NyxOS.

See also: Cryptography and TLS, Networking Stack, Image Decoders, GUI Subsystem, Desktop Applications

Opening it

  • Click the Selene desktop icon
  • Or run selene from the shell

The window has a toolbar (back button and URL box), a tab strip, the page view, and a status line.

What it does

Capability Detail
HTTP http_get(), which drives the network itself and runs DHCP first if there is no lease
HTTPS Full TLS 1.2 with certificate verification — see Cryptography and TLS
Streaming receive Pages larger than the record buffer load correctly
Links <a href> rendered coloured and underlined; relative and root-relative hrefs resolved against the current page
History 32-deep Back stack per tab
Tabs Up to 6 per window, with a [+] new-tab button
Forms GET and POST, application/x-www-form-urlencoded
Tables <table> laid out as aligned, bordered columns
Images PNG, BMP and GIF fetched, decoded and drawn inline
Find in page Ctrl+F, with match counting and navigation
Text structure Headings, paragraphs, lists and horizontal rules

Controls

Input Action
Type in the URL box, Enter Load the URL
Tab / Shift+Tab Move the selection between links and form fields
Enter Follow the selected link, submit the focused form, or load the URL bar if nothing is selected
Click Follow the link, or focus the field, under the cursor
Backspace Go back
Ctrl+F Open the find bar; type a query, and matches are counted and highlighted
Scroll / arrows Move through the page

Tab order runs through the URL bar, then the page's links and fields by position, then back to the URL bar — so a search box a few tabs into a page is reachable without the mouse.

Rendering

Selene is a text-layout browser, not a CSS engine. HTML is parsed directly:

  • <script> and <style> contents are dropped
  • Tags are stripped, common entities decoded, <title> extracted for the tab label
  • Block elements (<h1><h6>, <p>, <li>, <hr>) produce structure — headings stand out, lists are bulleted, rules are drawn
  • Text is word-wrapped to 86 columns
  • <table> cells are measured and drawn as aligned columns with borders
  • <img> renders as a framed box; once the image is fetched and decoded, the picture is drawn in place. An image that cannot be fetched or decoded keeps its box, showing the alt text or the filename

Images

Fetching every image on a page would make a page load feel broken, so loading is lazy and progressive: the text renders immediately and only the images you can actually see are downloaded, decoding into place as they arrive.

Limit Value
<img> elements tracked per page 128
Images fetched and decoded per page load 8
Per-image download buffer 512 KB

Decoding is handled by Image Decoders — PNG (via DEFLATE), BMP and GIF (via LZW).

Forms

<form action="/search" method="get">
  <input type="text" name="q">
  <input type="submit" value="Go">
</form>
Control kind Handling
text, search, email, url, password, tel, number Editable box, 22 columns wide
submit, <button> Submit button
hidden Carried into the submission, not shown

GET builds a query string onto the action URL; POST sends the encoded body with a Content-Length through tls_https_request(). formtest is the kernel-shell self-test for form parsing and URL building.

Limits

Setting Value
Rendered lines per page 1200
Line width 96 columns (wrapped at 86)
Links per page 240
Forms / fields per page 16 / 64
Tabs per window 6
Back history per tab 32

Beyond those: no JavaScript, no CSS, no video or audio, no cookies, no persistent cache.

History

Selene first fetched and rendered a real page in v5.9.44. Links and Back followed in v5.9.45, document structure in v5.9.47. HTTPS arrived in v5.9.56 on top of the TLS arc, then forms (v5.9.68v5.9.69), find-in-page (v5.9.75), image placeholders (v5.9.76), tables (v5.9.77), tabs (v5.9.78), and real inline images (v5.9.83v5.9.86). See Version History.

See also

External resources

Clone this wiki locally