An HTML + Markdown viewer for iced
Render rich text in your iced app at lightning-fast speeds using plain HTML or Markdown!
- Create a [
MarkState] and store it in your application state.
use frostmark::MarkState;
let text = "Hello from **markdown** and <b>HTML</b>!";
let state = MarkState::with_html_and_markdown(text);
// or if you just want HTML
let state = MarkState::with_html(text);
// put this in your App struct- In your
viewfunction use a [MarkWidget].
iced::widget::container( // just an example
MarkWidget::new(&self.mark_state)
)
.padding(10)You can find runnable examples here
Click to expand a full example
use frostmark::{MarkState, MarkWidget};
use iced::{widget, Element, Task};
#[derive(Debug, Clone)]
enum Message {}
struct App {
state: MarkState,
}
impl App {
fn update(&mut self, _: Message) -> Task<Message> {
Task::none()
}
fn view(&self) -> Element<'_, Message> {
widget::container(MarkWidget::new(&self.state))
.padding(10)
.into()
}
}
fn main() {
iced::application(
|| App { state: MarkState::with_html_and_markdown(YOUR_TEXT) },
App::update,
App::view
).run().unwrap();
}
const YOUR_TEXT: &str = "Hello from **markdown** and <b>HTML</b>!";Note: Markdown support is optional and you can disable the markdown
feature to have more lightweight, HTML-only support.
Markdown (if present) is converted to HTML using comrak.
HTML is parsed using html5ever,
from the Servo project.
The resulting DOM is rendered directly to iced widgets using a custom renderer.
All enabled by default
markdown: Adds markdown support alongside HTML. Disable this if you want HTML-only support, or a lighter program.- Built-in iced features (can be disabled if you wish)
iced-wgpu: wgpu rendering backendiced-tiny-skia: tiny-skia rendering backendiced-tokio: tokio async runtimeiced-windowing: x11 and wayland backends
- Support for more elements (eg: superscript)
- Fix
<ruby>edge cases - (Maybe) support for CSS?
| Version | iced | MSRV |
|---|---|---|
| 0.3 | 0.14 | 1.88 |
| 0.2 | 0.13 | 1.82 |
| 0.1 | 0.13 | 1.82 |
This library is experimental. Bug reports and pull requests are welcome; contributions are appreciated!
- Mrmayman - Creator
- mariinkys - Tables, other changes
- Drodofsky - Ruby text support
- ruguysgoingtrickortreating - Updated to iced 0.14
License: Dual licensed under MIT and Apache 2.0.
