(
    title: "Eva",
    summary: Some("A nice graphical browser for the smol internet"),
    published: Some((
        year: 2022,
        month: 4,
        day: 14,
        hour: 15,
        minute: 39,
        second: 12,
    )),
    tags: [
        "software",
        "eva",
        "rust",
        "gtk",
    ],
)
---
## Introduction
Eva is a gemini protocol browser written in Rust using the gtk+ toolkit. Eva is focused on delivering a simple yet powerful interface and clear, readable and beautiful page rendering. It has no designs on being the most fully featured Gemini browser, but instead wants to be the most polished native Gtk+ Gemini client that stays out of the user's way.

Eva's gemtext rendering has been designed to be clean yet visually appealing, using modern css styling to visually separate elements such as block quotes and preformatted sections, using colored cards with rounded edges and box shadows. The default color scheme has been chosen to provide great readability, while giving the user a great deal of control over appearance.

Eva is currently alpha quality software and is under heavy development. Some features are not yet implemented and there may be bugs. However, rest assured that when Eva sees an official release it will be a polished user experience.
## Features
* tabbed interface
* bookmarks
* user configurable keyboard shortcuts
* user controlled styling
* back-forward list
### Gemini protocol
* Render gmi pages
* Display text
* Display images
* View gemtext source
* Send user input
* Downloads
* Save content
### Gopher protocol
* Render gophermaps
* Display text
* Display images
* Downloads
* Save content
### Finger protocol
### Data url's
* Display text
* Render gemtext
* Display images
* Save content

## Keybindings
> Note: See KEYS.md for information on changing keybindings
```
| Key           | Action            |
| ------------- | ----------------- |
| Ctrl/T        | New tab           |
| Ctrl/N        | New window        |
| Ctrl/W        | Close tab         |
| Ctrl/Q        | Close window      |
| Ctrl/R        | Reload page       |
| Alt/Home      | Go to homepage    |
| Alt/Left      | Go back           |
| Alt/Right     | Go next           |
| Ctrl/PageDown | Next tab          |
| Ctrl/PageUp   | Previous tab      |
| Alt/[1-9]     | nth tab           |
| Ctrl/Shift/O  | Open bookmarks    |
| Ctrl/D        | Bookmark page     |
| Ctrl/H        | Open History      |
| Ctrl/S        | Save Page         |
| Ctrl/Shift/P  | Open preferences  |
| Ctrl/Shift/A  | Open about dialog |
```
## Installing
### Arch Linux
Install the eva-browser package from the aur. Alternatively, beginning with the 0.3.0 release, releases on Codeberg and Github include an Arch PKGBUILD file.
### FreeBSD
Beginning with the 0.3.0 release, there is a binary package for FreeBSD 13 and the x86_64 architecture included in the releases on Codeberg and Github.
### All others
See the Building section below.

## Building
> Note: Some kind of Unix is assumed for the following directions. The code is designed to be cross platform and -may- run on MacOs and Windows, but both are untested.
Make sure that you have all gtk+ version 4 libraries and headers installed.
```
# clone the source
git clone https://codeberg.org/jeang3nie/eva.git
cd eva
cargo build --release
# To gather all release files into target/dist
cargo xtask dist
```
