- Rust 100%
| resources | new tab button from the overview | |
| src | Downloads! | |
| .gitignore | initial commit | |
| Cargo.lock | cleanup + better url validation | |
| Cargo.toml | Downloads! | |
| README.md | Update README.md | |
Pages
Browse web pages.
A WebKitGTK/gtk4/libadwaita browser written in Rust. Designed to be
- Stupid simple
- Free of tech bullshitTM, forever (e.g. "AI")
- Lightweight, with extensions support
- Customisable
...aka, a browser made for normal people, out of spite.
Disclaimer!
I did not plan this thing out! This is my first time with WebKitGTK, GTK4, and libadwaita, so please be patient! The code might be far from perfect and it requires a bit of refactoring (see below)
Contributions!
Sure! Keep in mind:
- Please space out your commits! I get overwhelmed by a lot of changed stuff and seeing your thought process actually helps a lot!
- As mentioned earlier if you use AI stuff anywhere in your PR it's getting rejected. Please don't use it. I know the tools are one thing but using any implementation (Claude, ChatGPT, Copilot, etc...) is a political statement that means you support undervaluing labour, stealing and reselling work, late stage capitalism, fascists, oh my! So please don't. (also you would waste my time with bad code. keep it stupid simple!!)
Bug reports!
Please! Do keep in mind that I'm not in control of the rendering engine (which does surprisingly a lot of things), so your issue might be marked as a wontfix because... I literally can't fix it without forking WebKitGTK. (An example is SVG favicons, which for some reason won't even load, and it's WebKitGTK that handles loading those.)
Building
- I have webkitgtk6, gtk4, and libadwaita installed on my system. You might need that to build this, but I haven't tried building Pages without it.
- Also make sure you have Rust installed, of course... You can get it here
- Just
cargo run. yay :3
TODO
Stuff I'm working on right now
- Switch main.ui to GTK blueprints (whatever that means. have a look at other projects that use it like Geopard to get the feel for how to use it)
- Also break up main.ui
- Write a template for each tab, that contains (a) a webview (b) a search bar
- Rewrite creating new webview tabs, events
- Hook up search bar events
- Yeahhhh profit yeahhhhhh
Browser basics
- remember history <- history file
- ctrl+shift+t to open last tab <- closed tabs into a queue
- can reopen tabs when it gets closed and reopened <- save file
- downloads
- ctrl+f or forward slash search
- fuck it. write my own webkit-independent search engine that optionally uses regular expressions
- shift+enter to go back
- up/down arrows being disabled if you can't go up/down
- escape key to exit search
- search settings
- report number of searches
- make the search bar red if it errors out
- Make the (hamburger) menu actually do things
Later
- extensions -- goal: get ublock origin running!
- config
Questions I ask myself frequently
Why not Epiphany? These look similar...
Epiphany is kind of weird and also written in C. I don't like C. I don't like its memory leaks either. But I'll give it to them, it's a pretty, er... pretty browser. What Epiphany also doesn't have is first-class extensions support. It's been put on the backburner. I think that here, I want to give Pages better extensions support. I just... I just can't browse without uBlock these days.
Why not LuaKit, or some other WebKitGTK browser?
They're nice! I love the Vim keybinds! I might add a toggle somewhere in Pages for that, as long as it doesn't complicate its code too much. The problem is, for like, normal people, it's a confusing mess. Also no extensions support, ad blocking is a bit complicated, configuration has some wacky documentation... Oh! Also almost every other WebKitGTK browser is inspired by LuaKit, so this covers almost all of them.
icon credits to go @pquirrel