14 releases (7 breaking)

new 0.9.1 Dec 11, 2024
0.8.1 Nov 23, 2024

#46 in Network programming

Download history 108/week @ 2024-09-15 103/week @ 2024-09-22 208/week @ 2024-09-29 242/week @ 2024-10-06 236/week @ 2024-10-13 9/week @ 2024-10-20 226/week @ 2024-10-27 297/week @ 2024-11-03 28/week @ 2024-11-10 165/week @ 2024-11-17 82/week @ 2024-11-24 136/week @ 2024-12-01

1,283 downloads per month

MIT license

415KB
10K SLoC

Yoda - Browser for Gemini protocol

GTK 4 / Libadwaita client written in Rust

[!IMPORTANT] Project in development!

image

Features

Interface

  • Multi-tab
  • Hotkeys
  • Bookmarks
  • Build-in multimedia support
  • Certificates
  • Downloads
  • History
  • Proxy
  • Session
    • Window
      • Size
      • Tabs
        • Pin
        • Page
          • Content (cache)
          • Meta
            • Title
          • Navigation
            • Request
            • History
  • User settings

Protocols

  • Gemini
    • Status code
      • Success
        • 20
      • Input
        • 10 Input
        • 11 Sensitive input
      • Redirection
        • 30 Temporary
        • 31 Permanent
      • Temporary failure
        • 40 Unspecified condition
        • 41 Server unavailable
        • 42 CGI error
        • 43 Proxy error
        • 44 Slow down
      • Permanent failure
        • 50 General
        • 51 Not found
        • 52 Gone
        • 53 Proxy request refused
        • 59 Bad request
      • Client certificates
        • 60 Certificate requested
        • 61 Certificate not authorized
        • 62 Certificate not valid
    • Gemtext (by ggemtext)
      • Code (inline/multiline)
        • Inline
        • Multiline
          • Alt
        • Syntax highlight* (by syntect)
        • Terminal emulation* (by ansi-parser)
          • foreground
          • background
          • intensity
          • italic
          • underline
          • blink
          • reversed
          • hidden
          • strikethrough
      • Header
        • H1
        • H2
        • H3
      • Link
        • Address
        • Date
        • Alt
      • List
      • Quote
    • Gemfeed
    • Titan
  • NEX - useful for networks with build-in encryption (e.g. Yggdrasil)
  • Localhost
    • file:// - local file browser
  • Request prefix
    • about:
      • config - low-level key/value settings editor
    • download: - save location to file
    • source: - source viewer (by sourceview5)

Media types

Text

  • text/gemini
  • text/plain

Images

  • image/gif
  • image/jpeg
  • image/png
  • image/webp
  • image/svg+xml

Audio

  • audio/flac
  • audio/mpeg
  • audio/ogg

Video

Build

Linux

Requirements

  • Cairo 1.18
  • GdkPixBuf 2.42
  • Glib 2.80
  • Gtk 4.14
  • GtkSourceView 5.14
  • Libadwaita 1.5 (Ubuntu 24.04+)

Debian

sudo apt install git curl build-essential\
                 libgtk-4-dev libgtksourceview-5-dev libadwaita-1-dev\
                 libsqlite3-dev libssl-dev

Fedora

sudo dnf install git curl gcc\
                 gtk4-devel gtksourceview5-devel libadwaita-devel\
                 sqlite-devel openssl-devel

Rust

Use rustup installer to setup latest Rust compiler and Cargo package manager:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Install

Stable

cargo install Yoda
  • run Yoda

Repository

git clone https://github.com/YGGverse/Yoda.git
cd Yoda
cargo build
  • cargo run

Development

Contribution

  • Before commit, please make sure:
    • new branch created for every new PR git checkout -b 'contribution-name'
    • new code follows common rustfmt style cargo fmt --check
    • run cargo clippy for final optimization

Contributors

wakatime StandWithUkraine

Releases

  • Package version in repository increase after crates.io release
  • Until DB migration not implemented, application will create new profile on CARGO_PKG_VERSION_MAJOR.CARGO_PKG_VERSION_MINOR change

See also

Dependencies

~52MB
~1M SLoC