19 releases (7 breaking)
0.9.6 | Jan 12, 2025 |
---|---|
0.9.5 | Dec 26, 2024 |
0.8.1 | Nov 23, 2024 |
#20 in GUI
1,562 downloads per month
460KB
11K
SLoC
Yoda - Browser for Gemini protocol
GTK 4 / Libadwaita client written in Rust
[!IMPORTANT] Project in development!
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
- Window
- 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
-
- 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
- Titan
- Status code
- 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
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 libadwaita-1-dev libspelling-1-dev\
libsqlite3-dev libssl-dev
Fedora
sudo dnf install git curl gcc\
gtk4-devel gtksourceview5-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
- 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
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
- ggemtext - Glib-oriented Gemtext API
- ggemini - Glib-oriented client for Gemini protocol
Dependencies
~53MB
~1M SLoC