PHP-GTK Client for Gemini Protocol
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.8 KiB

3 months ago
# Yoda - Browser for [Gemini protocol](https://geminiprotocol.net)
3 months ago
Rust / GTK 4 implementation
3 months ago
> [!IMPORTANT]
> Project in development!
3 months ago
>
## Install
3 months ago
### Stable
``` bash
cargo install Yoda
```
3 months ago
### Repository
3 months ago
``` bash
git clone https://github.com/YGGverse/Yoda.git
cd Yoda
git checkout Rust-GTK4
3 months ago
cargo run
3 months ago
```
3 months ago
## Development
2 months ago
Guide and protocol draft
3 months ago
2 months ago
### `browser`
3 months ago
2 months ago
#### Filesystem
3 months ago
2 months ago
* Use [modern path pattern](https://doc.rust-lang.org/edition-guide/rust-2018/path-changes.html#no-more-modrs)
* One module implements one GTK widget, it may include additional helper files in same location (like template, CSS or DB API)
2 months ago
* For children widget - create children module, located according to hierarchy
2 months ago
#### Codebase
* The codebase must be as minimal as possible, separate:
2 months ago
* different tasks
* massive structures
* structures with implementation
3 months ago
* Every module must:
2 months ago
* encapsulate it members: compose childs and stay composable for parents
* access 1 level of childs, never parents (e.g. through `super`)
3 months ago
* implement only one `struct` (same as one file for one class)
2 months ago
* implementable `struct` is public, where members - private
2 months ago
* contain main `struct` implementation:
3 months ago
* at least one constructor that must return:
2 months ago
* unwrapped main `Self` structure
* granted ownership for new object created
* public link getter for privately constructed widget
3 months ago
3 months ago
### Contribution
* before commit, make sure:
* new branch created for every new PR `git checkout -b 'contribution-name'`
* new code follows common [rustfmt](https://rust-lang.github.io/rustfmt/) style `cargo fmt --check`
3 months ago
## See also
3 months ago
* [CPP-GTK4](https://github.com/YGGverse/Yoda/tree/CPP-GTK4) - C++ / GTK 4 implementation
* [PHP-GTK3](https://github.com/YGGverse/Yoda/tree/PHP-GTK3) - PHP / GTK 3 experimental branch