diff options
author | NunoSempere <nuno.sempere@protonmail.com> | 2023-02-07 14:28:21 +0100 |
---|---|---|
committer | NunoSempere <nuno.sempere@protonmail.com> | 2023-02-07 14:28:21 +0100 |
commit | d1439d16f599804a3777bb8137a27b582610937a (patch) | |
tree | 9da98aedb86f8a3ac6867cd22bf7ef84dec011a3 | |
parent | b50d30851b844b74dbd9e03dd9de8d0fa5b0a9f8 (diff) |
tweak: continue personal development from master.
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | README.md | 56 | ||||
-rw-r--r-- | config.h | 110 |
3 files changed, 154 insertions, 14 deletions
@@ -1,3 +1,3 @@ rose -config.h +# config.h .clang-format @@ -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 } +}; +*/ |