mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-03-31 16:45:27 +00:00
Browser for Gemini Protocol
https://crates.io/crates/Yoda
19001965browserclientflatpakgeminigemini-protocolggeminiggemtextgtklibadwaitamarkdownmaxmindnexnex-protocolrustsourceviewsqlitesyntecttitan
| bin | ||
| po | ||
| src | ||
| .gitignore | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
Yoda - Browser for Gemini protocol
C++ / GTK 4 implementation, see also PHP-GTK3 experimental branch
Important
Project in development!
Build
Linux
apt install git\
libglib2.0-dev\
libglibmm-2.68-dev\
libgtkmm-4.0-dev\
libpangomm-2.48-dev\
libsqlite3-dev
git clone https://github.com/YGGverse/Yoda.gitcd Yodagit checkout CPP-GTK4make
Update
git pullmake cleanmake
Localization
Official
Personal
apt install intltoolcd pointltool-update --pot
Development
Structure
Main application sources located at src/app folder, by following principles:
- Every file extends one of GTK 4 Widgets according to subject (e.g.
class Browser : public Gtk::ApplicationWindow) src/appdoes not contain other class types like models or libraries (another folders and namespaces atsrcroot are reserved for these needs)- Namespaces match filesystem path, where directory namespaces are lowercase
- Every file work with it own, 1th level child only, to prevent massive logic levels keeping in mind
- To access any children features, deeper or higher than 1th level of current class, use delegation methods (actions, getters and setters)
- One file - one class. If the file requires additional (GTK) component, this component should be placed at similar folder with same name as parent filename. So we have simple hierarchy navigation logic - from app to window, from window to it container, etc.
- At this moment, all constants named with uppercase, const everything that not mutable
#includeapplication.hppfiles in.cpp. For system libraries, use headers only. Do not place system dependencies in.cpp
Environment
pkg-config --cflags --libs gio-2.0\
glibmm-2.68\
gtkmm-4.0\
pangomm-2.48\
sqlite3
Contribution
cd Yodagit checkout CPP-GTK4git pullgit checkout -b 'contribution-name'