1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
|
==========
lariza
==========
A simple web browser using GTK+ 2, GLib and WebKitGTK+.
Features:
- A WebKit viewport
- An input box to change the URI or to search the current page
- Built-in launching of suckless' tabbed
- Built-in adblock
- Built-in download manager
- Optimized hotkeys: Left hand on keyboard, right hand on mouse
- Keyword based searching: Opening "wi foo" will search wikipedia
- Global content zoom
- View source mode
- Cooperative instances using FIFOs
- Support for Flash and Java
==============
About the name
==============
"lariza" stems from a german sentence:
Alle anderen waren mir zu anstrengend.
l a r i z a
That phrase basically means: "It was too tiresome to deal with any other
browser." I couldn't find a simple browser that does just what I need.
Most of them are utterly bloated, others lack essential functions. Thus,
I was forced to write scripts and tools and stuff to deal with these
issues. That is what was tiresome. I don't want to work around bugs or
nonsensical behavior anymore.
So, I wrote my own browser^W WebKit GUI. WebKit does all the dirty work.
================================
What lariza is and what it's not
================================
lariza does what I need. It won't do other things. I'm open for pull
requests but please don't be upset if I turn them down -- which might
happen if it's a feature that I simply don't need.
Especially, it's very likely that lariza will never have a "follow
mode" like dwb, luakit or others have. I've used these browsers for
quite some time and I've also used Firefox extensions that add a "follow
mode". The point is, "follow mode" doesn't work anymore. This was a good
thing ten years ago. Today, a lot of websites make heavy use of
JavaScript or hovering. You NEED some kind of pointing device. I found
using "follow mode" to be very frustrating today, because you still have
to reach for the mouse all the time. So, you might as well just optimize
your mousing workflow.
lariza does not compete with powerful browsers like dwb or luakit, nor
with monstrous applications like Firefox or Chromium. lariza won't have
persistent storage, nor a plugin system, nor cloud sync, nor bookmarks.
lariza tries not to exceed 1000 lines of code.
That being said, this kind of minimalism is not for everyone. If you're
looking for more features (and a more open feature policy), then you
might want to check out okraits' fork:
https://github.com/okraits/lariza/
========================
Using lariza with tabbed
========================
By default, lariza automatically launches an instance of suckless'
tabbed.
You can turn this feature off (see command line arguments) or you can
specify a command line argument to embed lariza in an arbitrary
container (XEMBED). Note that lariza will also automatically embed new
windows in the same container.
When using the automatically launched tabbed instance, you can't use
tabbed's Ctrl + Shift + Return hotkey. This is because tabbed is
launched with "-d", so it knows nothing about lariza. However, lariza
provides its own hotkey to launch a new window which will be embedded in
the same instance of tabbed.
=======
Hotkeys
=======
Main windows
When the WebKit viewport is focused:
Mod1 + q
Close the current window.
Mod1 + w
Go to your "homepage". See the environment variable
$LARIZA_HOME_URI.
Mod1 + e
Open a new window.
Mod1 + s
Toggles "view source mode". This will display the web pages
source code. Note that the page will be reloaded (which is
annoying but WebKit enforces this).
Mod1 + r
Reload the current page.
Mod1 + d
Open the download manager.
Mod1 + l
Focus the location bar.
Mod1 + k
Focus the location bar and set its text to "/", allowing you
to easily initiate a search.
Mod1 + 2 or Mod1 + n
Repeat the last search (forward).
Mod1 + 3
Repeat the last search (backward).
Escape
Stop loading.
Middle mouse
Open the link under the pointer in a new window.
Backward / forward (mouse keys 8 and 9)
Does the obvious.
Mod1 + Wheel up or Ctrl + Wheel up
Increase zoom level of the current page.
Mod1 + Wheel down or Ctrl + Wheel down
Decrase zoom level of the current page.
When the location bar is focused:
Mod1 + q
Close the current window.
Mod1 + d
Open the download manager.
Mod1 + r
Reload the current page.
Mod1 + k
Reset the content of the location bar to "/".
Escape
Reset the content of the location bar to the current URI.
Return
"Commit", i.e. begin searching, do a keyword based search or
open the URI.
Download manager
Mod1 + d
Close the download manager (downloads are not aborted).
======================
Command line arguments
======================
Usage:
lariza [OPTION]... [URI]...
In addition to the standard arguments of GTK+ 2, lariza knows about the
following options:
-e <wid>
Embeds the main window and all newly created windows in the
window specified by <wid>. The download manager is always a
"popup".
-r
Print all navigation requests on STDERR.
-C
Disables cooperative instances.
-T
Disables automatic launching of suckless' tabbed.
After these options there can be any number of URIs. If no URIs are
given, $LARIZA_HOME_URI will be opened.
=====================
Environment variables
=====================
In addition to the standard variables of GTK+ 2, lariza knows about the
following environment variables:
LARIZA_ACCEPTED_LANGUAGE
In HTTP requests, WebKit sets the "Accepted-Language" header to
this value. Defaults to "en-US".
LARIZA_DOWNLOAD_DIR
All downloads are automatically stored in this directory.
Defaults to "/tmp".
LARIZA_FIFO_SUFFIX
Cooperative instances are implemented using a named pipe in the
file system. The name of this pipe usually is (at least on
modern systems following XDG "standards"):
/var/run/user/$UID/lariza.fifo-$LARIZA_FIFO_SUFFIX
$UID is the id of your user. $LARIZA_FIFO_SUFFIX defaults to
"main". If you change this variable, you can launch several
independent cooperative instances of lariza.
LARIZA_HOME_URI
This URI will be opened by pressing the appropriate hotkeys
("homepage" or "new window") and if no URIs are specified on the
command line. Defaults to "about:blank".
LARIZA_USER_AGENT
Lariza will identify itself with this string. See source code
for the default value.
LARIZA_ZOOM
Zoom level for WebKit viewports. Defaults to 1.0.
=======
Adblock
=======
lariza has built-in adblock functionality. In each line of
~/.config/lariza/adblock.black
you can store a regular expression. These expressions match
case-insensitive and partially, i.e. ".*foo.*" is the same as ".*FOO.*"
and you can use anchors like "^https?://...".
Lines starting with "#" are ignored.
=======================
Keyword based searching
=======================
In this file, you can configure keywords and the associated URIs:
~/.config/lariza/keywordsearch
Each line has to look like this:
wi https://en.wikipedia.org/w/index.php?title=Special:Search&search=%s
"wi" is the keyword, so when opening "wi foo", lariza will search in
Wikipedia. Note the "%s" at the end of the URI: This is where your
search term will be placed.
Lines starting with "#" are ignored.
================
Download manager
================
Open the download manager using the appropriate hotkey. A new window
listing your downloads will appear. Clicking on an item will remove it
from the list and -- if needed -- cancel the download.
There's no file manager integration (I don't use one), nor does lariza
delete, overwrite or resume downloads. If a file already exists, it
won't be touched. Instead, the new file name will have a suffix such as
".1", ".2", ".3" and so on.
====================
WebKit local storage
====================
WebKit does create files in your $XDG_* directories, i.e. ~/.local/share
or ~/.cache. It's up to you what you want to do with this junk. I remove
it regularly when no WebKit browser is running. Another option would be
to change the $XDG_* variables.
I have explicitly not turned off the local storage feature in WebKit
because I don't know if this breaks web applications.
============
Dependencies
============
lariza needs the following Arch Linux packages:
- gtk2
- webkitgtk2
==========
Literature
==========
API references:
- http://webkitgtk.org/reference/webkitgtk/stable/index.html
- https://developer.gnome.org/gtk2/stable/index.html
- https://developer.gnome.org/glib/stable/index.html
Regular expressions supported by GRegex, you can use these in your
adblock patterns:
- https://developer.gnome.org/glib/stable/glib-regex-syntax.html
|