rosenrot-browser

A hackable browser based on Webkitgtk
Log | Files | Refs | README

commit 353d0ffad7c1810d2c5a87d73f6649bcbc55aad4
parent be043958f056264788cb92445890337b2674510c
Author: NunoSempere <nuno.sempere@protonmail.com>
Date:   Sun,  5 Feb 2023 03:21:30 +0100

feat: add plugin to customize css for individual websites...

and how to enable it.

Also tweak README.mds

Diffstat:
MREADME.md | 7-------
Mplugins/libre_redirect/README.md | 5++---
Mplugins/readability/README.md | 11++++++++---
Aplugins/style/README.md | 34++++++++++++++++++++++++++++++++++
Aplugins/style/recompute_STYLE_N.sh | 8++++++++
Aplugins/style/style.c | 29+++++++++++++++++++++++++++++
Aplugins/style/style.h | 8++++++++
Aplugins/style/style.js | 26++++++++++++++++++++++++++
Mrose.c | 10++++++++++
9 files changed, 125 insertions(+), 13 deletions(-)

diff --git a/README.md b/README.md @@ -18,10 +18,3 @@ Rose is released under own license, which grants the following permissions: - Distribution - Modification - Private use - -### To do - -- [x] Add open in new tab functionality -- [x] Test open in new tab functionality -- [x] Add styles tab -- [ ] Isolate plugins so that they aren't active by default diff --git a/plugins/libre_redirect/README.md b/plugins/libre_redirect/README.md @@ -6,7 +6,7 @@ To enable it: ## In build.sh -Uncomment this line: +In `build.sh`, uncomment this line: ``` REQS= #./plugins/*/*.c @@ -52,4 +52,4 @@ void redirect_if_annoying(WebKitWebView *view, const char *uri){ break; -``` -\ No newline at end of file +``` diff --git a/plugins/readability/README.md b/plugins/readability/README.md @@ -5,7 +5,13 @@ Taken from <https://raw.githubusercontent.com/ushnisha/readability-reader-webext ## To enable it -In rose.c uncomment: +In `build.sh`, uncomment this line: + +``` +REQS= #./plugins/*/*.c +``` + +In `rose.c` uncomment: ``` @@ -59,4 +65,4 @@ typedef enum { // { CTRL, KEY(p), prettify }, -``` -\ No newline at end of file +``` diff --git a/plugins/style/README.md b/plugins/style/README.md @@ -0,0 +1,34 @@ +## Customize css style for individual websites. + +- Replicates: <https://addons.mozilla.org/en-GB/firefox/addon/styl-us/>. +- The template is similar to the readability folder. + +## To enable it + +In `build.sh`, uncomment this line: + +``` +REQS= #./plugins/*/*.c +``` + +In `rose.c`, uncomment: + + +``` +// #include "plugins/style/style.h" + +... + + // Add custom style + /* + char* style_js = malloc(STYLE_N+1); + read_style_js(style_js); + webkit_web_view_run_javascript(notebook_get_webview(notebook), + style_js, + NULL, NULL, NULL); + free(style_js); + */ + +``` + +You will also want to customize the `style.c` file. diff --git a/plugins/style/recompute_STYLE_N.sh b/plugins/style/recompute_STYLE_N.sh @@ -0,0 +1,8 @@ +#!/bin/bash +function sedr(){ + find ./ -type f -exec sed -i -e "$1" {} \; +} ## e.g., sedr "s/target/replacement/g" + +STYLE_N=$(wc -c style.js | cut -d " " -f 1) +sedr "s/^#define STYLE_N .*/#define STYLE_N $STYLE_N + 1/g" + diff --git a/plugins/style/style.c b/plugins/style/style.c @@ -0,0 +1,29 @@ +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#define STYLE_N 794 + 1 + +void read_style_js(char* string){ + FILE *fp=fopen("/home/loki/Documents/core/software/fresh/C/rose-browser/rose-bud-personal/plugins/style/style.js", "r"); + if (!fp) { // fp is NULL, fopen failed + fprintf(stderr, "Failed to open file\n"); + string=NULL; + return; + } + int i=0; + int c; + while ((c = fgetc(fp)) != EOF){ + string[i++] = c; + } + string[i]='\0'; + fclose(fp); +} + +/* +int main(){ + char* readability_js = malloc(STYLE_N+1); + read_readability_js(readability_js); + printf("%s", readability_js); + free(readability_js); +} +*/ diff --git a/plugins/style/style.h b/plugins/style/style.h @@ -0,0 +1,8 @@ +#ifndef STYLE +#define STYLE + +#define STYLE_N 794 + 1 + +void read_style_js(char* string); + +#endif diff --git a/plugins/style/style.js b/plugins/style/style.js @@ -0,0 +1,26 @@ +// Replicates the Stylus app: <https://addons.mozilla.org/en-GB/firefox/addon/styl-us/> + +if (document.domain == "forum.effectivealtruism.org"){ + var styles = ` + .Layout-main { + margin-left: 100px; + } + .SingleColumnSection-root { + width: 1000px !important; + max-width: 1400px !important; + padding-left: 100px !important; + } + .NavigationStandalone-sidebar { + display: none; + } + .intercom-lightweight-app{ + display: none; + } + ` + var styleSheet = document.createElement('style') + styleSheet.innerText = styles + document.head.appendChild(styleSheet) + console.log('Style changed') +} + +document.body.style.visibility = "visible" diff --git a/rose.c b/rose.c @@ -14,6 +14,7 @@ #include "config.h" // #include "plugins/libre_redirect/libre_redirect.h" // #include "plugins/readability/readability.h" +// #include "plugins/style/style.h" #define CACHE \ "base-cache-directory", CACHE_DIR, \ @@ -106,6 +107,15 @@ void load_changed(WebKitWebView *self, WebKitLoadEvent load_event, GtkNotebook * break; case WEBKIT_LOAD_COMMITTED: // redirect_if_annoying(self, webkit_web_view_get_uri(self)); + // Add custom style + /* + char* style_js = malloc(STYLE_N+1); + read_style_js(style_js); + webkit_web_view_run_javascript(notebook_get_webview(notebook), + style_js, + NULL, NULL, NULL); + free(style_js); + */ break; case WEBKIT_LOAD_FINISHED: {