Skip to content

YGGverse/Yoda

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Yoda - Browser for Gemini protocol

GTK 4 / Libadwaita client written in Rust

Important

Project in development!

image

Features

Interface

  • Multi-tab
  • Hotkeys
  • Bookmarks
    • Browser window
    • Recent bookmarks list
  • Build-in multimedia support
  • Certificates
    • Generate new identity
    • Select for path
    • Export to PEM
    • Import from PEM
    • Delete
  • Downloads
    • Browser window
    • Save page as file
    • Unsupported content type downloads
  • History
    • Browser window
    • Page navigation
    • Recently visited
    • Recently closed
  • 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
    • Binary data (file uploads)
    • Text input
  • 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
    • bookmarks: - bookmarks browser
    • history: - history browser
    • 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 Dependencies crates.io

Requirements

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

Debian

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

Fedora

sudo dnf install git curl gcc\
                 gtk4-devel gtksourceview5-devel glib2-devel libadwaita-devel libspelling-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

Localization

UI localization planed as Crowdin repository, but it is not implemented yet.

To install new spell dictionaries in Fedora, use sudo dnf install hunspell-CODE

  • just replace CODE with the locale code you want

Releases

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

See also