-
-
Notifications
You must be signed in to change notification settings - Fork 5
Selene 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
- Click the Selene desktop icon
- Or run
selenefrom the shell
The window has a toolbar (back button and URL box), a tab strip, the page view, and a status line.
| 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 |
| 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.
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 thealttext or the filename
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).
<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.
| 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.
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.68–v5.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.83–v5.9.86). See Version History.
- Cryptography and TLS - the HTTPS layer
-
Image Decoders - how
<img>becomes pixels - Networking Stack - the HTTP client underneath
- GUI Subsystem - the window it runs in
- HTML Living Standard - WHATWG
- RFC 9110 - HTTP Semantics - IETF
- URL Living Standard - WHATWG
NyxOS v6.4.363 · GPL v2 · GitHub · uselessalter on Discord · nyxos@inbox.lv
NyxOS Wiki
Getting started
Kernel
Storage & network
Graphics & apps
Userspace
HOWTO
- HOWTO-Add-a-system-call
- HOWTO-Write-a-userspace-program
- HOWTO-Add-a-shell-command
- HOWTO-Add-a-GUI-application
Reference
- Syscall-Reference
- Command-Reference
- Hardware-Reference
- Format-Reference
- Kernel-Data-Structures
- Source-Tree-Reference
Project