| plugins | ||
| screenshots | ||
| user-scripts | ||
| .gitignore | ||
| config.h | ||
| license | ||
| makefile | ||
| README.md | ||
| rose | ||
| rose-mklink | ||
| rose.c | ||
| style.css | ||
Rosenrot
Rosenrot is a small browser forked from an earlier version of rose. It has some additional quality of life improvements tailored to my (@NunoSempere) tastes and setup, and detailed installation instructions for Ubuntu 20.04.
Installation
You can see detailed instructions here, for Ubuntu 20.04 in particular—though they should generalize easily to other distributions. Or a video installing rosenrot in a fresh Ubuntu 20.04 virtual machine here.
The general steps are to install dependencies, and then
make build
make install # or sudo make install
Usage
After building:
./rose
After installing:
rose
You can also create a rose.desktop file so that it will show up in your desktop environment. You can see this documented here.
Features
- Tabs, cookies, caching
 - Minimal ui, autohiding elements
 - ~464L core code (the rose.c file)
 - Customize appearance of the browser through css
 - Built-in rose-mklink script for in-shell static links
 - Optional adblocking through wyebadblock
 - Max number of tabs (by default 8), configurable.
 - Plugin system, seeded with:
- 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
 
 
You can see some screenshots in the screenshots folder.
Relationship with rose
- Rose is a minimal browser based on webkit2gtk. Previously, it described itself as aiming to be a "basement for creating your own browser using [the] gtk and webkit libraries".
 - Rosenrot is my (@NunoSempere's) 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.
 
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.
 
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.
 - The style.css usage isn't updated until installation. This is because by default rose uses the theme located in /usr/share/themes/rose/style.css, and that file isn't updated until make install.
 
To do
Quality of life:
- Add css for js alerts
- Add custom alert whose css can be customized
 - Debug problems, e.g., this version is non-blocking.
 
 - Figure out better way to have plugins
 - Double check newtab/next-tab behavior
 - Document creating new applications, e.g., as in Asana for Linux
 - Add list of similar projects: https://github.com/qutebrowser/qutebrowser#similar-projects
 
Maintenance
- Set 
webkit_web_context_set_sandbox_enabled, as recommended here - Use something other than Whatsapp as an example syslink.
 - Fix bug about distorted audio. Maybe related to this pipewire issue?
 - Upgrade to GTK-4 / Webkitgtk 6.0? Will take a fair amount of time, since these are not available on Ubuntu 20.04.
 
Previously done
- Add a shortcut for hiding the search tab. => Already exists: Ctrl+K
 - Find out what each of the css elements refers to. => done, see make inspect
 - Figure out if downloading files is doable. => it is
 - Look at using relative rather than absolute paths for configuration. => now makefile is a bit smarter
 - Streamline installation a bit
- Substitute paths in makefile
 - Create cache directory automatically
 
 - Add an installation video walkthrough. Done, here
 - Document 
stand_in.cbetter - 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.
 

