mirror of
https://github.com/YGGverse/Yoda.git
synced 2025-01-23 17:44:13 +00:00
Yoda - Browser for Gemini protocol
GTK 4 / Libadwaita client written in Rust
Important
Project in development, for stable version use crates.io release!
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
Input11
Sensitive input
- Redirection
30
Temporary31
Permanent
- Temporary failure
40
Unspecified condition41
Server unavailable42
CGI error43
Proxy error44
Slow down
- Permanent failure
50
General51
Not found52
Gone53
Proxy request refused59
Bad request
- Client certificates
60
Certificate requested61
Certificate not authorized62
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 browserhistory:
- history browserdownload:
- save location to filesource:
- 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 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
- 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
Description
PHP-GTK Client for Gemini Protocol
altwebbrowsercomposergeminigemini-browsergemini-clientgemini-protocolgtkgtk3phpphp-cppphp-gtksmallwebyodayoda-browser
Readme
4.4 MiB
Languages
PHP
100%