The Shōko browser
Go to file
Yuki 28df600466 ftp: do not log + gzip:`isloaded 2023-10-20 01:41:54 -04:00
Media ftp: do not log + gzip:`isloaded 2023-10-20 01:41:54 -04:00
Protocols ftp: do not log + gzip:`isloaded 2023-10-20 01:41:54 -04:00
Resources Add Roboto 2023-10-03 15:52:26 -04:00
.gitignore First commit 2023-10-02 14:49:24 -04:00
Gui.cs Add gopher, finger and some gemini extensions 2023-10-12 14:29:32 -04:00
LICENSE First commit 2023-10-02 14:49:24 -04:00
MainUI.cs Use .Loaded / FileProto / Monospace / add flags 2023-10-08 14:09:54 -04:00
Program.cs Use .Loaded / FileProto / Monospace / add flags 2023-10-08 14:09:54 -04:00
README.md Add gopher, finger and some gemini extensions 2023-10-12 14:29:32 -04:00
Tab.cs Async support 2023-10-20 00:59:28 -04:00
Telemetry.cs First commit 2023-10-02 14:49:24 -04:00
shoko.csproj Forgot to add the nuget packages 2023-10-09 01:36:04 -04:00

README.md

Shōko

Shōko (硝子) is a browser and file viewer written in C#, supporting many protocols, schemes, and media types. It is designed to be simple and very extensible.

Shōko, at first, is aimed primarily at the small and experimental web. It probably won't support the entire HTML5 spec anytime soon, yet it aims to support protocols and formats your average web browser won't even dare to support natively. Gemini, Gopher, Markdown, JPEG XL, name it.

Features

  • Supports protocols and schemes such as: file, http(s), ftp(s), data, gemini, gopher, finger
  • Supports media types such as: plain text, images, Gemtext markup

How it works

Step 1: Parse the URL Step 2: Find a suitable protocol handler based on the URL scheme Step 3: Protocol handler returns a Stream and a media type Step 4: Find a suitable media handler based on the media type Step 5: Render!

C#'s class inheritance, together with annotations and reflections, makes it easy to add and register new protocol and media handlers.