mirror of https://github.com/YGGverse/Yoda.git
phpcomposergemini-protocolgeminismallwebaltwebgtk3browsergtkphp-gtkgemini-clientyoda-browserphp-cppgemini-browseryoda
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.
1.5 KiB
1.5 KiB
Yoda - Browser for Gemini protocol
Rust / GTK 4 implementation
[!IMPORTANT] Project in development!
Install
Stable
cargo install Yoda
Repository
git clone https://github.com/YGGverse/Yoda.git
cd Yoda
git checkout Rust-GTK4
cargo run
Development
This guide in process
Modules
browser
- Composition pattern, using standard
mod.rs
model - One mod = one widget. Create new mod for new widget implementation
- The codebase of module must be as minimal as possible: separate different tasks to sub-modules
- Every module must:
- access 1 level of child API, never parents (e.g.
super
) - implement only one
struct
(same as one file for one class)struct
is public, where members - private
- contain
struct
implementation:- at least one constructor that must return:
- raw
struct
(new() -> Self
) without cover to any kind of smartstd
orglib
pointers - ownership to new object created
- raw
- one public link getter for privately constructed widget (
widget -> &Gtk
)
- at least one constructor that must return:
- access 1 level of child API, never parents (e.g.
Contribution
- before commit, make sure:
- new branch created for every new PR
git checkout -b 'contribution-name'
- new code follows common rustfmt style
cargo fmt --check
- new branch created for every new PR