65 lines
1.4 KiB
Text
65 lines
1.4 KiB
Text
|
(
|
||
|
title: "Gemview",
|
||
|
summary: Some("A browser widget in gtk4 for the smol internet"),
|
||
|
published: Some((
|
||
|
year: 2022,
|
||
|
month: 4,
|
||
|
day: 14,
|
||
|
hour: 16,
|
||
|
minute: 0,
|
||
|
second: 51,
|
||
|
)),
|
||
|
tags: [
|
||
|
"software",
|
||
|
"gemview",
|
||
|
"rust",
|
||
|
"gtk",
|
||
|
],
|
||
|
)
|
||
|
---
|
||
|
## Introduction
|
||
|
GemView is a gemini protocol browser widget for gtk+ (version 4) implemented in Rust.
|
||
|
## Features
|
||
|
* Browse and render gemini gemtext content
|
||
|
* Display plain text over gemini
|
||
|
* Display images over gemini
|
||
|
* Display text and images from `data://` url's
|
||
|
* Browse and render gopher maps, plain text and images over gopher
|
||
|
* Display finger protocol content
|
||
|
* Browse local files and directories via 'file://' url's
|
||
|
* Open http(s) links in a *normal* browser
|
||
|
* User customizable fonts
|
||
|
* User customizable colors (via CSS)
|
||
|
* Back/forward list
|
||
|
|
||
|
## Usage
|
||
|
Cargo.toml
|
||
|
```
|
||
|
[dependencies]
|
||
|
gemview = 0.2.0
|
||
|
|
||
|
[dependencies.gtk]
|
||
|
version = "~0.4"
|
||
|
package = "gtk4"
|
||
|
```
|
||
|
Rust source code
|
||
|
```Rust
|
||
|
use gemview::GemView;
|
||
|
use gtk::prelude::*;
|
||
|
|
||
|
fn main() {
|
||
|
let browser = GemView::default();
|
||
|
let scroller = gtk::builders::ScrolledWindowBuilder::new()
|
||
|
.child(&browser)
|
||
|
.hexpand(true)
|
||
|
.vexpand(true)
|
||
|
.build();
|
||
|
let window = gtk::builders::WindowBuilder::new()
|
||
|
.child(&scroller)
|
||
|
.title("GemView")
|
||
|
.build()
|
||
|
window.show();
|
||
|
browser.visit("gemini://gemini.circumlunar.space");
|
||
|
}
|
||
|
```
|