Go to file
2023-05-05 19:42:19 -04:00
plugins tweak: try ignoring twitter 2023-05-05 19:42:19 -04:00
screenshots Revert "tweak: move things around" 2023-03-28 11:19:11 -06:00
user-scripts tweak: try ignoring twitter 2023-05-05 19:42:19 -04:00
.gitignore start keeping track of rose binary 2023-05-03 22:22:55 -04:00
config.h tweak: savepoint 2023-04-29 18:33:09 -04:00
license chore: more upkeep. In particular, document wyebadblock better 2023-03-28 11:32:47 -06:00
makefile document bug fix after breaking library installation paths on my machine 2023-05-03 22:14:46 -04:00
README.md readme clarification 2023-05-03 22:22:38 -04:00
rose start keeping track of rose binary 2023-05-03 22:22:55 -04:00
rose-mklink Revert "tweak: move things around" 2023-03-28 11:19:11 -06:00
rose.c fixes: fix bugs found when running in a virtual machine 2023-03-28 13:25:32 -06:00
style.css Revert "tweak: move things around" 2023-03-28 11:19:11 -06:00

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 cruft that I like, like a "readability" plugin that simplifies annoying websites like Matt Levine's Money Stuff newsletter.
  • 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.
    • Useful for opening links in new tab when clicking on them and selecting that option
    • And for actually opening links with the href new_tab option.
    • Links: 1, 2, 3, 4

Known bugs

  • 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 put export 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.