From 353d0ffad7c1810d2c5a87d73f6649bcbc55aad4 Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Sun, 5 Feb 2023 03:21:30 +0100 Subject: [PATCH] feat: add plugin to customize css for individual websites... and how to enable it. Also tweak README.mds --- README.md | 7 ------ plugins/libre_redirect/README.md | 4 ++-- plugins/readability/README.md | 10 +++++++-- plugins/style/README.md | 34 ++++++++++++++++++++++++++++++ plugins/style/recompute_STYLE_N.sh | 8 +++++++ plugins/style/style.c | 29 +++++++++++++++++++++++++ plugins/style/style.h | 8 +++++++ plugins/style/style.js | 26 +++++++++++++++++++++++ rose.c | 10 +++++++++ 9 files changed, 125 insertions(+), 11 deletions(-) create mode 100644 plugins/style/README.md create mode 100755 plugins/style/recompute_STYLE_N.sh create mode 100644 plugins/style/style.c create mode 100644 plugins/style/style.h create mode 100644 plugins/style/style.js diff --git a/README.md b/README.md index 241effa..4359611 100644 --- 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 index 01add9c..7b32370 100644 --- 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 index dc9b217..d6c0fe2 100644 --- a/plugins/readability/README.md +++ b/plugins/readability/README.md @@ -5,7 +5,13 @@ Taken from . +- 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 new file mode 100755 index 0000000..906aad8 --- /dev/null +++ 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 new file mode 100644 index 0000000..dc2da8a --- /dev/null +++ b/plugins/style/style.c @@ -0,0 +1,29 @@ +#include +#include +#include +#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 new file mode 100644 index 0000000..20a684b --- /dev/null +++ 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 new file mode 100644 index 0000000..01524d0 --- /dev/null +++ b/plugins/style/style.js @@ -0,0 +1,26 @@ +// Replicates the Stylus app: + +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 index 4f551ae..fd9f67f 100644 --- 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: {