aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNunoSempere <nuno.sempere@protonmail.com>2023-02-07 14:28:21 +0100
committerNunoSempere <nuno.sempere@protonmail.com>2023-02-07 14:28:21 +0100
commitd1439d16f599804a3777bb8137a27b582610937a (patch)
tree9da98aedb86f8a3ac6867cd22bf7ef84dec011a3
parentb50d30851b844b74dbd9e03dd9de8d0fa5b0a9f8 (diff)
tweak: continue personal development from master.
-rw-r--r--.gitignore2
-rw-r--r--README.md56
-rw-r--r--config.h110
3 files changed, 154 insertions, 14 deletions
diff --git a/.gitignore b/.gitignore
index 0652ac8..a72bfe9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,3 @@
rose
-config.h
+# config.h
.clang-format
diff --git a/README.md b/README.md
index 3ea547d..8dfcb12 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,43 @@
-<h3 align=center> Rose Browser</h3>
-<h4 align=center>Minimal browser based on webkit2gtk</h4>
-
-#### Features
- - tabs, cookies, caching
- - minimal ui, autohiding elements
- - ~400L code base
- - custom gtk and websites css
- - hackable without any knowledge
- - builtin rose-mklink script for in-shell static links
-
-### 📜 License
-Rose is released under the [MIT license](https://github.com/mini-rose/rose/blob/master/license).
+## Rosebud
+
+Personal tweaks for [rose](https://github.com/mini-rose/rose), a minimal browser based on webkit2gtk
+
+### Features
+
+- tabs, cookies, caching
+- minimal ui, autohiding elements
+- ~400L code base (edit: no longer)
+- custom gtk and websites css
+- hackable without any knowledge
+- builtin rose-mklink script for in-shell static links
+- A few quality of life improvements.
+
+### 👐 Contribute
+
+This is my personal version. Contribute upstream to [github.com/mini-rose/rose](https://github.com/mini-rose/) instead.
+
+### To do
+
+- [ ] Figure out better way to have plugins
+- [ ] Launch with more than one tab from command line
+- [ ] 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.
+
+Done:
+
+- [x] Figure out merge with upstream
+- [x] String substitution on uri in order to redirect to better frontends.
+- [x] Present "standard" browser keybindings as an alternative.
+- [x] Fix zoom in new tab
+- [x] Reader mode
+- [x] Add reader mode to config.def.
+- [x] Make tab bar slightly prettier.
+- [x] 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: <https://docs.gtk.org/gobject/func.signal_connect.html>, <https://webkitgtk.org/reference/webkit2gtk/2.37.90/signal.AutomationSession.create-web-view.html>, <https://webkitgtk.org/reference/webkit2gtk/2.26.0/WebKitWebView.html#WebKitWebView-create> <https://stackoverflow.com/questions/40180757/webkit2gtk-get-new-window-link>
+
+### Known bugs
+
+- [ ] Doesn't work with when Spanish is selected as the language, for some reason.
diff --git a/config.h b/config.h
new file mode 100644
index 0000000..ae87a76
--- /dev/null
+++ b/config.h
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2022 Nuño Sempere.
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and any associated documentation
+ * files to modify, copy, merge, publish, distribute and/or
+ * sublicense copies of this sotware for their own use.
+ * This code does not come with any warranty.
+ *
+ */
+
+#include <gdk/gdkkeysyms.h>
+#include <stdbool.h>
+
+/* See more:
+ * https://webkitgtk.org/reference/webkit2gtk/stable/class.Settings.html */
+#define WEBKIT \
+ "enable-back-forward-navigation-gestures", true, "enable-developer-extras", true, \
+ "enable-smooth-scrolling", false
+
+#define GTK "gtk-application-prefer-dark-theme", false, "gtk-enable-animations", false
+#define ROSE_HOMEPAGE true
+#define HOME ROSE_HOMEPAGE ? "file:///home/loki/Documents/core/software/fresh/C/rose-browser/rose-bud-personal/user-scripts/ubuntu-20.04/rose-images/rose-homepage.png" : "https://lite.duckduckgo.com/html"
+#define SEARCH "https://lite.duckduckgo.com/html/?q=%s"
+#define CACHE_DIR "/home/loki/.cache/rose"
+
+#define WIDTH 1920
+#define HEIGHT 1080
+#define KEY(x) GDK_KEY_##x
+#define ZOOM 1.4 /* Starting zoom level.*/
+#define ZOOM_VAL .1 /* Zooming value in zoomin/zoomout functions */
+#define BG_COLOR "#FEFEFE" /* "FEFEFE", "#1E1E2E" */
+#define DEBUG false
+
+typedef enum {
+ goback,
+ goforward,
+ refresh,
+ refresh_force,
+ back_to_home,
+ toggle_fullscreen,
+ zoomin,
+ zoomout,
+ zoom_reset,
+ next_tab,
+ prev_tab,
+ close_tab,
+ show_searchbar,
+ show_finder,
+ finder_next,
+ finder_prev,
+ new_tab,
+ prettify,
+ hide_bar
+} func;
+
+#define SFT 1 << 0
+#define CTRL 1 << 2
+#define ALT 1 << 3
+
+static struct {
+ unsigned mod;
+ unsigned key;
+ func id;
+} keys[] = {
+ { CTRL, KEY(h), goback },
+ { CTRL, KEY(j), goforward },
+ { CTRL, KEY(r), refresh },
+ { CTRL | SFT, KEY(R), refresh_force },
+ { CTRL | SFT, KEY(H), back_to_home },
+ { CTRL, KEY(equal), zoomin },
+ { CTRL, KEY(minus), zoomout },
+ { CTRL, KEY(0), zoom_reset },
+ { CTRL, KEY(Page_Up), prev_tab },
+ { CTRL, KEY(Page_Down), next_tab },
+ { CTRL, KEY(t), next_tab },
+ { CTRL, KEY(w), close_tab },
+ { 0x0, KEY(F11), toggle_fullscreen },
+ { CTRL, KEY(l), show_searchbar },
+ { CTRL, KEY(k), hide_bar },
+ { CTRL, KEY(f), show_finder },
+ { CTRL, KEY(n), finder_next },
+ { CTRL | SFT, KEY(N), finder_prev },
+ { CTRL, KEY(p), prettify }
+};
+/* ^ For controls more akin to normal browsers */
+/* Reference for the key shorthand:
+ * <https://gitlab.gnome.org/GNOME/gtk/-/blob/main/gdk/gdkkeysyms.h> */
+
+/* Old controls: {
+ { CTRL, KEY(h), goback },
+ { CTRL, KEY(l), goforward },
+ { CTRL, KEY(r), refresh },
+ { CTRL | SFT, KEY(R), refresh_force },
+ { CTRL | SFT, KEY(H), back_to_home },
+ { CTRL, KEY(equal), zoomin },
+ { CTRL, KEY(minus), zoomout },
+ { CTRL, KEY(0), zoom_reset },
+ { ALT, KEY(h), prev_tab },
+ { CTRL, KEY(k), hide_searchbar },
+ { ALT, KEY(l), next_tab },
+ { CTRL, KEY(w), close_tab },
+ { 0x0, KEY(F11), toggle_fullscreen },
+ { CTRL, KEY(e), show_searchbar },
+ { CTRL, KEY(f), show_finder },
+ { CTRL, KEY(n), finder_next },
+ { CTRL | SFT, KEY(N), finder_prev },
+ { CTRL, KEY(p), prettify }
+};
+*/