Go to file
2023-10-06 15:45:47 +01:00
plugins formatting pass 2023-10-06 15:45:47 +01:00
screenshots tweak: add another screenshot 2023-05-13 00:07:20 -04:00
user-scripts small tweaks 2023-06-26 11:26:53 +01:00
.gitignore start keeping track of rose binary 2023-05-03 22:22:55 -04:00
config.h formatting pass 2023-10-06 15:45:47 +01:00
license chore: more upkeep. In particular, document wyebadblock better 2023-03-28 11:32:47 -06:00
makefile feat: add uft-8 encoding as default setting 2023-10-06 15:44:26 +01:00
README.md Add clang-tidy linting, callable with make lint. 2023-08-19 19:37:30 +02:00
rose feat: add uft-8 encoding as default setting 2023-10-06 15:44:26 +01:00
rose-mklink Revert "tweak: move things around" 2023-03-28 11:19:11 -06:00
rose.c formatting pass 2023-10-06 15:45:47 +01:00
style.css Revert "css tweaks; to be reverted" 2023-05-15 12:11:34 -04:00

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.

General:

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

About my own system:

  • Doesn't work with when Spanish is selected as the language, for some reason => Previously misdiagnosed. The real issue was that it freezes when interacting with Espanso substitutions, which I had set-up automatically on my machine when using words containing an ñ, like my own name, Nuño.
  • 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.

To do

Quality of life:

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