PHP-GTK Client for Gemini Protocol
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
yggverse 5d8c036957 set default message for CertificateRequest status code 2 weeks ago
src set default message for CertificateRequest status code 2 weeks ago
.gitignore initial commit 3 months ago
Cargo.toml implement gemini certificate generation helper 2 weeks ago
LICENSE initial commit 3 months ago
README.md add 61, 62 status codes handle, show server-side message on failure 2 weeks ago
rustfmt.toml init rustfmt.toml 3 months ago

README.md

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
        • Terminal emulation*
        • Syntax highlight*
      • Header
        • H1
        • H2
        • H3
      • Link
        • Address
        • Date
        • Alt
      • List
      • Quote
    • Gemfeed
    • Titan
  • NEX - useful for networks with build-in encryption (e.g. Yggdrasil)
  • file:// - localhost browser
  • config:// - low-level key/value settings editor

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

Requirements

  • Cairo 1.16
  • GDK PixBuf 2.42
  • Gio 2.82
  • Glib 2.56
  • GTK 4.16
  • Libadwaita 1.6

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

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

Debian

todo

Fedora

sudo dnf install git gcc\
                 cairo-devel glib2-devel gtk4-devel libadwaita-devel pango-devel\
                 sqlite-devel

Install

Stable

cargo install Yoda

Repository

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

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