Yoda - Browser for Gemini protocol
GTK 4 / Libadwaita client written in Rust
Important
Project in development!
- 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
- Window
- User settings
- 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
-
- 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
- hidden
- strikethrough
- Header
- H1
- H2
- H3
- Link
- Address
- Date
- Alt
- List
- Quote
- Code (inline/multiline)
- Gemfeed
- Status code
- 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)
-
-
text/gemini
-
text/plain
-
image/gif
-
image/jpeg
-
image/png
-
image/webp
-
image/svg+xml
-
audio/flac
-
audio/mpeg
-
audio/ogg
- Cairo
1.18
- GdkPixBuf
2.42
- Glib
2.80
- Gtk
4.14
- GtkSourceView
5.14
- libadwaita
1.5
(Ubuntu 24.04+) - libspelling
0.1
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
sudo dnf install git curl gcc\
gtk4-devel gtksourceview5-devel glib2-devel libadwaita-devel libspelling-devel\
sqlite-devel openssl-devel
Use rustup installer to setup latest Rust compiler and Cargo package manager:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
cargo install Yoda
- run
Yoda
git clone https://github.com/YGGverse/Yoda.git
cd Yoda
cargo build
cargo run
- 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
- new branch created for every new PR
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
- 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
- ggemtext - Glib-oriented Gemtext API
- ggemini - Glib-oriented client for Gemini protocol