# 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.