config.def.h - surf - Surf web browser.
(HTM) git clone git://r-36.net/surf
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
config.def.h (9673B)
---
1 /* Welcome to Surf! */
2
3 /* Path configuration */
4 static char *scriptfile = "~/.surf/script.js";
5 static char *styledir = "~/.surf/styles/";
6 static char *cachefolder = "~/.surf/cache/";
7 static char *dbfolder = "~/.surf/databases/";
8
9 /* visual options */
10 static Bool kioskmode = FALSE; /* Ignore shortcuts */
11 static Bool showindicators = TRUE; /* Show indicators in window title */
12 static Bool zoomto96dpi = TRUE; /* Zoom pages to always emulate 96dpi */
13 static Bool runinfullscreen = FALSE; /* Run in fullscreen mode by default */
14 static Bool accelrendering = TRUE; /* Allow accelerated compositing of
15 * the page, using the GPU, if available. */
16
17 static char *defaultencoding = "utf-8"; /* Default encoding for files. */
18 static guint defaultfontsize = 12; /* Default font size */
19 static guint defaultmonofontsize = 10; /* Default monospace font size */
20 static gfloat zoomlevel = 1.0; /* Default zoom level */
21
22 /* Soup default features */
23 static char *cookiefile = "~/.surf/cookies.txt";
24 static char *cookiepolicies = "Aa@"; /* A: accept all; a: accept nothing,
25 @: accept all except third party */
26 static char *cafile = "/etc/ssl/certs/ca-certificates.crt";
27 static Bool strictssl = TRUE; /* strict means if untrusted SSL/TLS
28 * connections should be refused. */
29 static time_t sessiontime = 3600;
30 static Bool enablediskcache = TRUE;
31 static int diskcachebytes = 5 * 1024 * 1024;
32 #define uafile "~/.surf/useragents.txt"
33
34 /* Webkit default features */
35 static Bool enablescrollbars = TRUE;
36 static Bool enablespatialbrowsing = TRUE;
37 static Bool enablespellchecking = FALSE;
38 static Bool enableplugins = TRUE;
39 static Bool enablepagecache = TRUE; /* Enable cache of pages in current
40 * history. This will save memory
41 * if you do not have any. */
42 static Bool privatebrowsing = FALSE; /* Set default value for private
43 * browsing. */
44 static Bool enablescripts = TRUE;
45 static Bool enableinspector = TRUE;
46 static Bool enablestyle = TRUE;
47 static Bool enablehtml5db = TRUE;
48 static Bool enablehtml5local = TRUE;
49 static Bool enablejava = FALSE; /* Toggle if <applet> is allowed. */
50 static Bool enablemediastream = FALSE; /* Allow access to local video
51 * and audio input devices. */
52 static Bool enablemediasource = FALSE; /* Allow JS to generate media
53 * streams. */
54 static Bool enablewebaudio = FALSE; /* Allow JS to generate wav
55 * streams. */
56 static Bool inlineplayback = TRUE; /* Toggle if media should be played
57 * inline. */
58 static Bool inlinegestures = TRUE; /* Toggle if media playbeck
59 * requires some click to start. */
60 static Bool enablewebgl = TRUE;
61 static Bool dnsprefetching = FALSE; /* DNS prefetching is insecure,
62 * so disabled. */
63 static Bool offlineappcache = FALSE; /* Allow offline web application
64 * cache? NO! */
65 static Bool loadimages = TRUE;
66 static Bool hidebackground = FALSE;
67 static Bool allowgeolocation = TRUE;
68 static Bool insecureresources = FALSE; /* Whether to allow to load
69 * non-HTTPS resources in HTTPS pages. */
70
71 /*
72 * Now on TV: »What is the best User-Agent for me?«
73 * Result: None.
74 */
75 char *useragent = " ";
76 /*
77 * These are for the case some incompetent »web programmer« decided for you
78 * what is best for you.
79 */
80 /*
81 static char *useragent = "Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) "
82 "Gecko/41.0 Firefox/41.0";
83 static char *useragent = "Mozilla/5.0 (X11; Linux x86_64) "
84 "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.19 "
85 "Safari/537.36";
86 static char *useragent = "Mozilla/5.0 (X11; U; Unix; en-US) "
87 "AppleWebKit/537.15 (KHTML, like Gecko) Chrome/24.0.1295.0 "
88 "Safari/537.15 Surf/"VERSION;
89 */
90
91 /* custom http headers */
92 static HttpHeader customheaders[] = {
93 /* key, value */
94 /* Do-Not-Track. Haha! */
95 { "DNT", "1" },
96 /* We are a damn US imperialist. Change to cn, once Chinese communism
97 * has won.*/
98 { "Accept-Language", "en-US,en;q=0.5" },
99 { "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" },
100 { "Accept-Encoding", "gzip, deflate" },
101 /* We are ready for TLS. Is it still secure? */
102 { "Upgrade-Insecure-Requests", "1" },
103 };
104
105 #define PROMPT_GOTO "Go To"
106 #define PROMPT_FIND "Find"
107 #define PROMPT_SLASH "/"
108 #define PROMPT_UA "Set User-Agent"
109
110 /* Set the property of surf using the old value. */
111 #define SETPROP(p, q, prompt) { \
112 .v = (char *[]){ "/bin/sh", "-c", \
113 "prop=\"`xprop -id $2 $0 " \
114 "| sed \"s/^$0([A-Z0-9_]*) = \\(\\\\\"\\?\\)\\(.*\\)\\1$/\\2/\" " \
115 "| xargs -0 printf %b | dmenu -p \"$3\"`\" &&" \
116 "xprop -id $2 -f $1 8u -set $1 \"$prop\"", \
117 p, q, winid, prompt, NULL \
118 } \
119 }
120
121 /*
122 * Set the property of surf using the old value and values supplied from a
123 * file.
124 */
125 #define SETPROPFROMFILE(p, q, prompt, file) { \
126 .v = (char *[]){ "/bin/bash", "-c", \
127 "prop=\"`{ xprop -id $2 $0 " \
128 "| sed \"s/^$0([0-9A-Z_]*) = \\(\\\\\"\\?\\)\\(.*\\)\\1$/\\2/\" " \
129 "| xargs -0 printf %b; " \
130 " [ -e $(eval echo $4) ] && cat $(eval echo $4); } " \
131 "| dmenu -p \"$3\"`\" &&" \
132 "xprop -id $2 -f $1 8u -set $1 \"$prop\"", \
133 p, q, winid, prompt, file, NULL \
134 } \
135 }
136
137 /* DOWNLOAD(URI, referer) */
138 #define DOWNLOAD(d, r) { \
139 .v = (char *[]){ "/bin/sh", "-c", \
140 "/bin/sh -c \"download '$1' '$2' '$3' '$0'\"", \
141 d, useragent, r, cookiefile, NULL \
142 } \
143 }
144
145 /* PLUMB(URI) */
146 /* This called when some URI which does not begin with "about:",
147 * "http://" or "https://" should be opened.
148 */
149 #define PLUMB(u) {\
150 .v = (char *[]){ "/bin/sh", "-c", \
151 "plumb \"$0\"", u, NULL \
152 } \
153 }
154
155 /* styles */
156 /*
157 * The iteration will stop at the first match, beginning at the beginning of
158 * the list.
159 */
160 static SiteStyle styles[] = {
161 /* regexp file in $styledir */
162 { ".*", "default.css" },
163 };
164
165 #define MODKEY GDK_CONTROL_MASK
166
167 /* hotkeys */
168 /*
169 * If you use anything else but MODKEY and GDK_SHIFT_MASK, don't forget to
170 * edit the CLEANMASK() macro.
171 */
172 static Key keys[] = {
173 /* modifier keyval function arg Focus */
174 { MODKEY|GDK_SHIFT_MASK,GDK_r, reload, { .b = TRUE } },
175 { MODKEY, GDK_r, reload, { .b = FALSE } },
176 { MODKEY|GDK_SHIFT_MASK,GDK_p, print, { 0 } },
177
178 { MODKEY, GDK_p, clipboard, { .b = TRUE } },
179 { MODKEY, GDK_y, clipboard, { .b = FALSE } },
180
181 { MODKEY|GDK_SHIFT_MASK,GDK_j, zoom, { .i = -1 } },
182 { MODKEY|GDK_SHIFT_MASK,GDK_k, zoom, { .i = +1 } },
183 { MODKEY|GDK_SHIFT_MASK,GDK_q, zoom, { .i = 0 } },
184 { MODKEY, GDK_minus, zoom, { .i = -1 } },
185 { MODKEY, GDK_plus, zoom, { .i = +1 } },
186
187 { MODKEY|GDK_SHIFT_MASK,GDK_l, toggleinsecurecontent, { 0 } },
188 { MODKEY, GDK_l, navigate, { .i = +1 } },
189 { MODKEY, GDK_h, navigate, { .i = -1 } },
190
191 { MODKEY, GDK_j, scroll_v, { .i = +1 } },
192 { MODKEY, GDK_k, scroll_v, { .i = -1 } },
193 { MODKEY, GDK_b, scroll_v, { .i = -10000 } },
194 { MODKEY, GDK_space, scroll_v, { .i = +10000 } },
195 { MODKEY, GDK_i, scroll_h, { .i = +1 } },
196 { MODKEY, GDK_u, scroll_h, { .i = -1 } },
197
198 { 0, GDK_F11, fullscreen, { 0 } },
199 { 0, GDK_Escape, stop, { 0 } },
200 { MODKEY, GDK_o, source, { 0 } },
201 { MODKEY|GDK_SHIFT_MASK,GDK_o, inspector, { 0 } },
202
203 { MODKEY, GDK_g, spawn, SETPROP("_SURF_URI", "_SURF_GO", PROMPT_GOTO) },
204 { MODKEY, GDK_f, spawn, SETPROP("_SURF_FIND", "_SURF_FIND", PROMPT_FIND) },
205 { MODKEY, GDK_slash, spawn, SETPROP("_SURF_FIND", "_SURF_FIND", PROMPT_SLASH) },
206 { MODKEY, GDK_a, spawn, SETPROPFROMFILE("_SURF_UA", "_SURF_UA", PROMPT_UA, uafile) },
207
208 { MODKEY, GDK_n, find, { .b = TRUE } },
209 { MODKEY|GDK_SHIFT_MASK,GDK_n, find, { .b = FALSE } },
210
211 { MODKEY|GDK_SHIFT_MASK,GDK_c, toggle, { .v = "enable-caret-browsing" } },
212 { MODKEY|GDK_SHIFT_MASK,GDK_i, toggle, { .v = "auto-load-images" } },
213 { MODKEY|GDK_SHIFT_MASK,GDK_s, toggle, { .v = "enable-scripts" } },
214 { MODKEY|GDK_SHIFT_MASK,GDK_v, toggle, { .v = "enable-plugins" } },
215 { MODKEY|GDK_SHIFT_MASK,GDK_t, togglesoup, { .v = "ssl-strict" } },
216 { MODKEY|GDK_SHIFT_MASK,GDK_w, toggle, { .v = "enable-private-browsing" } },
217 { MODKEY|GDK_SHIFT_MASK,GDK_a, togglecookiepolicy, { 0 } },
218 { MODKEY|GDK_SHIFT_MASK,GDK_m, togglestyle, { 0 } },
219 { MODKEY|GDK_SHIFT_MASK,GDK_b, togglescrollbars, { 0 } },
220 { MODKEY|GDK_SHIFT_MASK,GDK_g, togglegeolocation, { 0 } },
221 { MODKEY|GDK_SHIFT_MASK,GDK_y, toggleproxy, { 0 } },
222 };
223
224 /* button definitions */
225 /* click can be ClkDoc, ClkLink, ClkImg, ClkMedia, ClkSel, ClkEdit, ClkAny */
226 static Button buttons[] = {
227 /* click event mask button function argument */
228 { ClkLink, 0, 2, linkopenembed, { 0 } },
229 { ClkLink, MODKEY, 2, linkopen, { 0 } },
230 { ClkLink, MODKEY, 1, linkopen, { 0 } },
231 { ClkAny, 0, 8, navigate, { .i = -1 } },
232 { ClkAny, 0, 9, navigate, { .i = +1 } },
233 };
234