plugins | ||
screenshots | ||
user-scripts | ||
.gitignore | ||
config.h | ||
license | ||
makefile | ||
README.md | ||
rose | ||
rose-mklink | ||
rose.c | ||
style.css |
Rosenrot
A small browser forked from rose.
- Rose is a minimal browser based on webkit2gtk which aims to be a "basement for creating your own browser using [the] gtk and webkit libraries".
- Rosenrot is my fork from rose. It has accumulated quality of life features/cruft that I like, like a "readability" plugin that simplifies annoying websites like Matt Levine's Money Stuff newsletter. It also incorporates ad-blocking.
- Rosenrot is also a song by the German hardcore rock band Rammstein.
You can see some screenshots in the screenshots folder.
Features
- tabs, cookies, caching
- minimal ui, autohiding elements
- ~467L core code (the rose.c file)
- custom gtk and websites css
- builtin rose-mklink script for in-shell static links
- A few quality of life improvements.
- Optional adblocking through wyebadblock
- Plugin system:
- Libre redirect: Redirect annoying websites to open source frontends
- Readability: Strip webpages of unnecessary elements for ease of reading with a custom shortcut
- Custom style: Override the css of predetermined websites
- Stand in plugin: Mimick function definitions which do nothing for the above plugins so that they can be quickly removed
Installation
Install dependencies, then:
make build
make install # or sudo make install
You can also see more detailed instructions here, for Ubuntu 20.04 in particular—though they should generalize trivially. Or a video installing rosenrot in a fresh Ubuntu 20.04 virtual machine here.
👐 Contribute
- Contribute upstream to github.com/mini-rose/rose for core functionality changes.
- Contribute here for quality of life improvements, by sending a pull request on Github.
To do
- Look at using relative rather than absolute paths
- Add css for js alerts
- Figure out if downloading files is doable.
- Figure out better way to have plugins
- Double check newtab/next-tab behavior
- Find out what each of the css elements refers to.
- Use something other than Whatsapp as an example syslink.
- Set
webkit_web_context_set_sandbox_enabled
, as recommended here - Fix bug about distorted audio. Maybe related to this pipewire issue?
Done:
- Streamline installation a bit
- Substitute paths in makefile
- Create cache directory automatically
- Add an installation video walkthrough. Done, here
- Document
stand_in.c
better - Use a makefile.
- Add clean, uninstall to makefile
- Mask user agent
- Launch with more than one tab from command line
- Figure out merge with upstream
- String substitution on uri in order to redirect to better frontends.
- Present "standard" browser keybindings as an alternative.
- Fix zoom in new tab
- Reader mode
- Add reader mode to config.def.
- Make tab bar slightly prettier.
- Add "open in new window" functionality.
Cool things
I just found out that you can inspect a GTK application with the GTK explorer if you set a certain command-line variable. Try this with make inspect
.
Known bugs/gotchas.
- Doesn't work with when Spanish is selected as the language, for some reason.
- At some point, I tried to install libsoup-3 and borked some unknown installation option/paths. So now I need to run rose with
GIO_MODULE_DIR=/usr/lib/x86_64-linux-gnu/gio/modules/ /bin/rose
(or putexport GIO_MODULE_DIR=/usr/lib/x86_64-linux-gnu/gio/modules/
in my .bashrc). This won't affect new users though, just double checked on a fresh machine. - By default the searchbar is pretty gigantic. I've made this so because I'm a bit myopic, but also work with my laptop in a laptop stand. Anyways, if you are a more normal person you can change this in the style.css.