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

Rose Browser

-

Minimal browser based on webkit2gtk

+## Rosebud -#### 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 +Personal tweaks for [rose](https://github.com/mini-rose/rose), a minimal browser based on webkit2gtk -### 📜 License -Rose is released under the [MIT license](https://github.com/mini-rose/rose/blob/master/license). +### 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: , , + +### 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 +#include + +/* 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: + * */ + +/* 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 } +}; +*/