yggverse/yoda
Composer 安装命令:
composer create-project yggverse/yoda
包简介
PHP-GTK Client for Gemini Protocol
README 文档
README
Privacy-oriented GTK 4 / Libadwaita client written in Rust.
The term Privacy-oriented means that Yoda complies to the Gemini protocol specification and excludes third-party connections, that making it safe to use in combination with I2P. It also includes useful tools, such as connection details, optional DNS/Geo-IP features, flexible proxy configuration for use with modern IPv6 mesh networks like Yggdrasil, Mycelium, CJDNS, and others.
Yoda browser is primarily designed by and for experienced network users who care about their fingerprints and prefer to control every action manually. It does not preload tab content on app opening, does not run any background connections, does not incorporate web-like media preloading without user initiation, and does not automatically check for updates, even from 'official' servers. Additionally, it prevents auto-follow external redirection by default and requires manual confirmation, which is currently not clearly specified.
The Gemini protocol was designed as a minimalistic, tracking-resistant alternative to the Web, and Yoda embraces this philosophy by providing a straightforward graphical user interface (GUI) that is partially inspired by the Firefox UI, making it intuitively comfortable for regular users.
Important
Project in development, for stable version use checkpoint releases!
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/markdown -
text/nex -
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+(Ubuntu24.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
yggverse/yoda 适用场景与选型建议
yggverse/yoda 是一款 基于 Rust 开发的 Composer 扩展包,目前已累计 0 次下载、GitHub Stars 达 20, 最近一次更新时间为 2024 年 04 月 09 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「client」 「browser」 「php-gtk」 「gtk」 「Gemini」 「gtk3」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 yggverse/yoda 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 yggverse/yoda 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 yggverse/yoda 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Give your JS App some Backbone with Models, Views, Collections, and Events.
Instrument headless chrome/chromium instances from php5.6
Selenium4 (WebDriver) driver for Mink framework
Mock PSR-18 HTTP client
Asynchronous MQTT client built on React
Clusteer is a Puppeteer wrapper written for PHP, with the super-power of parallelizing pages across multiple browser instances.
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 20
- 点击次数: 23
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-04-09