Go to file
2023-05-13 00:07:20 -04:00
plugins tweak: update simply translate endpoint 2023-05-07 11:53:51 -04:00
screenshots tweak: add another screenshot 2023-05-13 00:07:20 -04: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 feat: make search bar gigantic, document GTK inspect. 2023-05-08 22:48:22 -04:00
README.md tweak: add another screenshot 2023-05-13 00:07:20 -04:00
rose feat: make search bar gigantic, document GTK inspect. 2023-05-08 22:48:22 -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 make tabs larger, document. 2023-05-08 23:02:33 -04:00

Rosenrot

Rosenrot is a small browser forked from an earlier version of rose, with some additional quality of life improvements tailored to my (@NunoSempere) tastes and setup, and with detailed installation instructions for Ubuntu 20.04.

Installation

You can see 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.

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
  • 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 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.
  • 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
  • Figure out better way to have plugins
  • Double check newtab/next-tab behavior
  • Document creating new applications, e.g., as in Asana for Linux

Maintenance

  • 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?
  • 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

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