static char *cookiefile = "~/.surf/cookies.txt";
/* Webkit default features */
+/* Highest priority value will be used.
+ * Default parameters are priority 0
+ * Per-uri parameters are priority 1
+ * Command parameters are priority 2
+ */
static Parameter defconfig[ParameterLast] = {
- SETB(AcceleratedCanvas, 1),
- SETB(AccessMicrophone, 0),
- SETB(AccessWebcam, 0),
- SETB(Certificate, 0),
- SETB(CaretBrowsing, 0),
- SETV(CookiePolicies, "@Aa"),
- SETV(DefaultCharset, "UTF-8"),
- SETB(DiskCache, 1),
- SETB(DNSPrefetch, 0),
- SETB(FileURLsCrossAccess,0),
- SETI(FontSize, 12),
- SETB(FrameFlattening, 0),
- SETB(Geolocation, 0),
- SETB(HideBackground, 0),
- SETB(Inspector, 0),
- SETB(Java, 1),
- SETB(JavaScript, 1),
- SETB(KioskMode, 0),
- SETB(LoadImages, 1),
- SETB(MediaManualPlay, 0),
- SETB(Plugins, 1),
- SETV(PreferredLanguages, ((char *[]){ NULL })),
- SETB(RunInFullscreen, 0),
- SETB(ScrollBars, 1),
- SETB(ShowIndicators, 1),
- SETB(SiteQuirks, 1),
- SETB(SmoothScrolling, 0),
- SETB(SpellChecking, 0),
- SETV(SpellLanguages, ((char *[]){ "en_US", NULL })),
- SETB(StrictTLS, 1),
- SETB(Style, 1),
- SETF(ZoomLevel, 1.0),
+ /* parameter Arg value priority */
+ [AcceleratedCanvas] = { { .i = 1 }, },
+ [AccessMicrophone] = { { .i = 0 }, },
+ [AccessWebcam] = { { .i = 0 }, },
+ [Certificate] = { { .i = 0 }, },
+ [CaretBrowsing] = { { .i = 0 }, },
+ [CookiePolicies] = { { .v = "@Aa" }, },
+ [DefaultCharset] = { { .v = "UTF-8" }, },
+ [DiskCache] = { { .i = 1 }, },
+ [DNSPrefetch] = { { .i = 0 }, },
+ [FileURLsCrossAccess] = { { .i = 0 }, },
+ [FontSize] = { { .i = 12 }, },
+ [FrameFlattening] = { { .i = 0 }, },
+ [Geolocation] = { { .i = 0 }, },
+ [HideBackground] = { { .i = 0 }, },
+ [Inspector] = { { .i = 0 }, },
+ [Java] = { { .i = 1 }, },
+ [JavaScript] = { { .i = 1 }, },
+ [KioskMode] = { { .i = 0 }, },
+ [LoadImages] = { { .i = 1 }, },
+ [MediaManualPlay] = { { .i = 1 }, },
+ [Plugins] = { { .i = 1 }, },
+ [PreferredLanguages] = { { .v = (char *[]){ NULL } }, },
+ [RunInFullscreen] = { { .i = 0 }, },
+ [ScrollBars] = { { .i = 1 }, },
+ [ShowIndicators] = { { .i = 1 }, },
+ [SiteQuirks] = { { .i = 1 }, },
+ [SmoothScrolling] = { { .i = 0 }, },
+ [SpellChecking] = { { .i = 0 }, },
+ [SpellLanguages] = { { .v = ((char *[]){ "en_US", NULL }) }, },
+ [StrictTLS] = { { .i = 1 }, },
+ [Style] = { { .i = 1 }, },
+ [WebGL] = { { .i = 0 }, },
+ [ZoomLevel] = { { .f = 1.0 }, },
};
static UriParameters uriparams[] = {
{ "(://|\\.)suckless\\.org(/|$)", {
- FSETB(JavaScript, 0),
- FSETB(Plugins, 0),
+ [JavaScript] = { { .i = 0 }, 1 },
+ [Plugins] = { { .i = 0 }, 1 },
}, },
};
#define SETPROP(r, s, p) { \
.v = (const char *[]){ "/bin/sh", "-c", \
"prop=\"$(printf '%b' \"$(xprop -id $1 $2 " \
- "| sed \"s/^$2(STRING) = //;s/^\\\"\\(.*\\)\\\"$/\\1/\")\" " \
- "| dmenu -p \"$4\" -w $1)\" && xprop -id $1 -f $3 8s -set $3 \"$prop\"", \
+ "| sed \"s/^$2(STRING) = //;s/^\\\"\\(.*\\)\\\"$/\\1/\" && cat ~/.surf/bookmarks)\" " \
+ "| dmenu -l 10 -p \"$4\" -w $1)\" && " \
+ "xprop -id $1 -f $3 8s -set $3 \"$prop\"", \
"surf-setprop", winid, r, s, p, NULL \
} \
}
} \
}
+/* BM_ADD(readprop) */
+#define BM_ADD(r) {\
+ .v = (const char *[]){ "/bin/sh", "-c", \
+ "(echo $(xprop -id $0 $1) | cut -d '\"' -f2 " \
+ "| sed 's/.*https*:\\/\\/\\(www\\.\\)\\?//' && cat ~/.surf/bookmarks) " \
+ "| awk '!seen[$0]++' > ~/.surf/bookmarks.tmp && " \
+ "mv ~/.surf/bookmarks.tmp ~/.surf/bookmarks", \
+ winid, r, NULL \
+ } \
+}
+
/* styles */
/*
* The iteration will stop at the first match, beginning at the beginning of
{ MODKEY, GDK_KEY_g, spawn, SETPROP("_SURF_URI", "_SURF_GO", PROMPT_GO) },
{ MODKEY, GDK_KEY_f, spawn, SETPROP("_SURF_FIND", "_SURF_FIND", PROMPT_FIND) },
{ MODKEY, GDK_KEY_slash, spawn, SETPROP("_SURF_FIND", "_SURF_FIND", PROMPT_FIND) },
+ { MODKEY, GDK_KEY_m, spawn, BM_ADD("_SURF_URI") },
{ 0, GDK_KEY_Escape, stop, { 0 } },
{ MODKEY, GDK_KEY_c, stop, { 0 } },
{ MODKEY, GDK_KEY_l, navigate, { .i = +1 } },
{ MODKEY, GDK_KEY_h, navigate, { .i = -1 } },
- /* Currently we have to use scrolling steps that WebKit2GTK+ gives us
- * d: step down, u: step up, r: step right, l:step left
- * D: page down, U: page up */
- { MODKEY, GDK_KEY_j, scroll, { .i = 'd' } },
- { MODKEY, GDK_KEY_k, scroll, { .i = 'u' } },
- { MODKEY, GDK_KEY_b, scroll, { .i = 'U' } },
- { MODKEY, GDK_KEY_space, scroll, { .i = 'D' } },
- { MODKEY, GDK_KEY_i, scroll, { .i = 'r' } },
- { MODKEY, GDK_KEY_u, scroll, { .i = 'l' } },
+ /* vertical and horizontal scrolling, in viewport percentage */
+ { MODKEY, GDK_KEY_j, scrollv, { .i = +10 } },
+ { MODKEY, GDK_KEY_k, scrollv, { .i = -10 } },
+ { MODKEY, GDK_KEY_space, scrollv, { .i = +50 } },
+ { MODKEY, GDK_KEY_b, scrollv, { .i = -50 } },
+ { MODKEY, GDK_KEY_i, scrollh, { .i = +10 } },
+ { MODKEY, GDK_KEY_u, scrollh, { .i = -10 } },
{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_j, zoom, { .i = -1 } },
{ OnAny, 0, 9, clicknavigate, { .i = +1 }, 1 },
{ OnMedia, MODKEY, 1, clickexternplayer, { 0 }, 1 },
};
+
+#define HOMEPAGE "https://danieliu.xyz/"