yggverse / yoda
PHP-GTK Client for Gemini Protocol
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 17
Watchers: 4
Forks: 0
Open Issues: 7
Language:Rust
Type:project
pkg:composer/yggverse/yoda
Requires
- yggverse/gemini: ^1.0
- yggverse/gemtext: ^1.0
- yggverse/net: ^1.8
- yggverse/nex: ^1.1
This package is auto-updated.
Last update: 2025-10-19 19:44:13 UTC
README
GTK 4 / Libadwaita client written in Rust
Important
Project in development, for stable version use release!
Features
Interface
- Multi-tab
- Hotkeys
- Bookmarks
- Build-in multimedia support
- Certificates
- Server
- The TOFU validation
- Client
- Generate new identity
- Select for path
- Export to PEM
- Import from PEM
- Delete
- Server
- Custom search providers
- Downloads
- Browser window
- Save page as file
- Unsupported content type downloads
- History
- Recently visited
- Recently closed
- Proxy (by SimpleProxyResolver)
- Multiple regex rules by the priority
- Custom ignored hosts
- UI indication with the accent colors
- Session
- Window
- Size
- Tabs
- Pin
- Page
- Content (cache)
- Meta
- Title
- Navigation
- Request
- History
- Window
- User settings
Protocols
- Gemini
- Status code
- Success
-
20
-
- Input
-
10Input -
11Sensitive input
-
- Redirection
-
30Temporary -
31Permanent
-
- Temporary failure
-
40Unspecified condition -
41Server unavailable -
42CGI error -
43Proxy error -
44Slow down
-
- Permanent failure
-
50General -
51Not found -
52Gone -
53Proxy request refused -
59Bad request
-
- Client certificates
-
60Certificate requested -
61Certificate not authorized -
62Certificate not valid
-
- Success
- 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
- strikethrough
- Header
- H1
- H2
- H3
- Link
- Address
- Date
- Alt
- List
- Quote
- Code (inline/multiline)
- Gemfeed
- by headers
- by links
- by content hash*
- Titan
- Binary data (file uploads)
- Text input
- Header options
- MIME
- Token
- Status code
- NEX - useful for networks with build-in encryption (e.g. Yggdrasil or Mycelium)
- System
-
file://- local files browser
-
- Request prefix
-
download:- save location to file -
source:- source viewer (by sourceview5)
-
Media types
Text
-
text/gemini -
text/plain -
text/nex
Images
-
image/gif -
image/jpeg -
image/png -
image/webp -
image/svg+xml
Audio
-
audio/flac -
audio/mpeg -
audio/ogg
Video
Build
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 --release
- run
target/release/Yoda
Flatpak
git clone https://github.com/YGGverse/Yoda.git
cd Yoda
flatpak-builder --force-clean build\
--install-deps-from=flathub\
--install --repo=repo --user\
io.github.yggverse.Yoda.yaml
- launch:
flatpak run io.github.yggverse.Yoda - bundle:
flatpak build-bundle repo Yoda.flatpak io.github.yggverse.Yoda
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 clippyfor final optimization
- new branch created for every new PR
Contributors
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
CODEwith the locale code you want
Geo-location
To enable geo-location features, get official IP database from MaxMind
then copy following files into the config folder (available from menu)
GeoLite2-Country.mmdbGeoLite2-City.mmdb(not implemented yet)
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_MINORchange
See also
- ggemtext - Glib-oriented Gemtext API
- ggemini - Glib-oriented client for Gemini protocol