noxz.tech/software/adji/index.www
1adji is a recursive acronym for
2.I "Adji's a Decisive and Joyful Internet browser"
3
4adji is a simple, decisive and distraction free web browser using GTK+ 3, GLib
5and WebKit2GTK+. This web browser takes inspiration from other web browsers
6like
7.URL https://surf.suckless.org/ surf ,
8.URL https://www.uninformativ.de/git/lariza/file/README.html lariza
9and
10.URL https://fanglingsu.github.io/vimb/ vimb .
11
12
13.HnS 1
14Download
15.HnE
16
17.URL //noxz.tech/git/adji.git/archive/adji-0.1.9.tar.gz "adji 0.1.9"
18(33kb) (2023-03-09)
19
20.HnS 1
21Setting up an environment
22.HnE
23
24To optimize the usage of adji, it is recommended to configure certain
25environment variables, ideally by exporting them through your
26.ICD ~/.profile
27file.
28Here is an example of the variable values that I prefer:
29
30.CDS
31.COS
32# setup adji browser config
33export ADJI_ACCEPTED_LANGUAGES="en_US"
34export ADJI_COOKIE_FILE="$XDG_CACHE_HOME/adji/cookies"
35export ADJI_DEFAULT_FONT="Source Code Pro"
36export ADJI_DEFAULT_FONT_SIZE="16"
37export ADJI_DOWNLOAD_DIR="$HOME/downloads"
38export ADJI_HISTORY_FILE="$XDG_CACHE_HOME/adji/history"
39export ADJI_MONOSPACE_FONT="Source Code Pro"
40export ADJI_SANS_SERIF_FONT="Liberation Sans"
41export ADJI_SERIF_FONT="Liberation Serif"
42export ADJI_SE_URI_FORMAT="https://ddg.gg?q=%s"
43export ADJI_STATE_FILE="$XDG_CACHE_HOME/adji/state"
44.COE
45.CDE
46
47
48.HnS 1
49Manual
50.HnE
51
52.CDS
53.COS
54ADJI(1) General Commands Manual ADJI(1)
55
56NAME
57 adji - Adji's a Decisive and Joyful Internet browser
58
59SYNOPSIS
60 adji [-I] [URI...]
61
62DESCRIPTION
63 adji is a simple, decisive and distraction free web browser using GTK+
64 3, GLib and WebKit2GTK+. This web browser takes inspiration from other
65 web browsers like surf(1), lariza(1) and vimb(1).
66
67OPTIONS
68 Along with the standard arguments for GTK+ 3 (see gtk-options(7)), adji
69 is equipped with the following options:
70
71 -I Implements an independent instance without any ipc
72 configuration.
73
74 If no URI are provided, the value of the enviornment variable
75 ADJI_HOME_URI will be opened which defaults to “about:blank”.
76 Otherwise, any number of URIs may follow these options.
77
78ENVIRONMENT
79 adji recognizes the following environment variables, in addition to the
80 standard variables of GTK+ 3:
81
82 ADJI_ACCEPTED_LANGUAGES
83 When sending an HTTP request, WebKit populates the “Accepted-
84 Language” header based on the provided list of languages, which
85 can be comma-separated (e.g. “en_US,en_AU”). If no languages are
86 specified, WebKit will use en_US as the default.
87
88 ADJI_COOKIE_FILE
89 By providing a path to a cookie file, adji will provide a method
90 of sharing cookies between sessions and instances.
91
92 ADJI_DEFAULT_FONT
93 Provides a method for specifying the default font inside the web
94 view of adji. If no default font is specified, WebKit will use
95 sans-serif as the default.
96
97 ADJI_DEFAULT_FONT_SIZE
98 Provides a method for specifying the default font size inside
99 the web view of adji. If no default font size is specified,
100 WebKit will use 16 as the default.
101
102 ADJI_DISABLE_AUTO_LOAD_IMAGES
103 For a faster, or perhaps a more secure way of browsing the web,
104 setting this variable provides a method of preventing images
105 from loading automatically.
106
107 ADJI_DOWNLOAD_DIR
108 This variable allows you to specify the directory to where all
109 downloads are stored according to your preference. By default
110 all downloads are stored at /var/tmp.
111
112 ADJI_ENABLE_CONSOLE_TO_STDOUT
113 Output that is printed to the web view console can be copied to
114 STDOUT setting this variable.
115
116 ADJI_ENABLE_SMOOTH_SCROLLING
117 By default adji disables the janky and annoying “smooth
118 scrolling”. If you for some reason like it, setting this
119 variable will enable it.
120
121 ADJI_FIFO_NAME
122 adji implements IPC configurations using named pipes in the file
123 system. According to XDG standards, the files for these named
124 pipes are stored as
125 /var/run/user/$UID/adji_$ADJI_FIFO_NAME.fifo.
126
127 The $UID refers to the id of the user running adji.
128 $ADJI_FIFO_NAME refers to the value of this variable, which
129 defaults to default. By specifying this variable, parallel IPC
130 configurations can be used. Be sure to also specify the
131 $ADJI_STATE_FILE accordingly. If you do not, the IPC instances
132 will conflict and overwrite the states of each other.
133
134 ADJI_HISTORY_FILE
135 When set, adji will store each visited URI to the file
136 specified.
137
138 ADJI_HOME_URI
139 The URI that will be opened in new tabs if nothing else is
140 specified. Defaults to about:blank.
141
142 ADJI_MONOSPACE_FONT
143 Provides a method for specifying the monospace font inside the
144 web view of adji. If no monospace font is specified, WebKit
145 will use monospace as the default.
146
147 ADJI_PROXY_IGNORE
148 When specifying a proxy URI, adji will send every HTTP requests
149 through that URI. To exclude traffic to certain hosts from being
150 sent through the specified proxy URI, this variable can be used
151 to provide a comma-separated list of hosts to be ignored (e.g.
152 “127.0.0.1,noxz.tech”).
153
154 ADJI_PROXY_URI
155 By specifying a proxy URI, adji will send every HTTP requests
156 through that URI. As an example a socks proxy for tor can be
157 specified in this way “socks://127.0.0.1:9050”.
158
159 ADJI_SANS_SERIF_FONT
160 Provides a method for specifying the sans-serif font inside the
161 web view of adji. If no sans-serif font is specified, WebKit
162 will use sans-serif as the default.
163
164 ADJI_SERIF_FONT
165 Provides a method for specifying the serif font inside the web
166 view of adji. If no serif font is specified, WebKit will use
167 serif as the default.
168
169 ADJI_SE_URI_FORMAT
170 If an entry cannot be resolved as either a URI or a file path, a
171 web search will be performed. To define the method of
172 perforating this web search, a format can be utilized in the
173 following manner, using http://ddg.gg as an example:
174 “https://ddg.gg?q=%s”. One, and only one, string reference (%s)
175 must be specified. The default value is https://ddg.gg?q=%s.
176
177 ADJI_STATE_FILE
178 By specifying a path to a state file, adji will save the state
179 of open tabs for next time the program is run. Each time a tab
180 is moved, updated or otherwise changed, the state of open tabs
181 will be saved as a list of URIs. It is important to avoid using
182 the same state file for multiple IPC configurations, as they
183 will conflict and overwrite each other.
184
185 ADJI_VERBOSE
186 If set, this feature is employed by we_redirect.so to verbosely
187 output to STDERR which redirections are being.
188
189 ADJI_USER_AGENT
190 By default, adji uses WebKit's default value for the user agent
191 string. This variable can be utilized to specify an alternative
192 user agent to the default one.
193
194 ADJI_ZOOM_LEVEL
195 This variable can be utilized to set the zoom level of WebKit's
196 viewports. The default value is 1.0.
197
198FILES
199 These paths will be constructed using XDG variables.
200
201 ~/.config/adji/redirect
202 Redirect rules used by we_redirect.so. See the WEB EXTENSION
203 section.
204
205 ~/.config/adji/exthandler
206 adji has a built-in mechanism for externally handling URIs. You
207 can use the file specified by the path to define how these URIs
208 should be handled in a customized manner. A system call passes
209 the URI as the first parameter.
210
211 ~/.config/adji/scripts
212 Directory to store user scripts (JavaScript).
213
214 ~/.config/adji/styles
215 Directory to store user style sheets (CSS).
216
217 ~/.config/adji/web_extensions
218 Directory where WebKit will search for web extensions.
219
220 ~/.cache/adji
221 ~/.cache/webkitgtk
222 ~/.local/share/webkitgtk
223 WebKitGTK will store its caches and local storage data in these
224 directories. It is recommended to periodically clean these
225 directories or mount them as some sort of volatile storage.
226
227USAGE
228 Entry
229 Entry refers to the entry/location/command bar at the bottom of the
230 window.
231
232 Mod1-h Navigate the caret to the left in the entry.
233
234 Mod1-l Navigate the caret to the right in the entry.
235
236 Enter/Return
237 The entered command or URI is resolved as appropriate. If no
238 resolution is found, the entry is reverted back to its original
239 value. Escape The entry is reverted back to its original value.
240
241 Tab bar
242 Button1
243 When a tab is clicked, the corresponding pair of web view and
244 entry will be made visible
245
246 Button2
247 Clicking on a tab using the scroll wheel will close the pair of
248 view and entry represented by that tab
249
250 Scroll wheel
251 While hovering over the tab bar, scrolling the scroll wheel will
252 allow you to move through tabs in the same direction as your
253 scroll.
254
255 Download bar
256 The download bar remains hidden until a download is initiated. As the
257 download progresses, the progress is shown and updated. Each download
258 is represented by a button that can be clicked. During an active
259 download, clicking the button will abort the download and remove the
260 button. Once the download is complete, the button will simply be
261 removed when clicked.
262
263 Web view
264 Escape Stops the web rendering.
265
266 Button2
267 Opens a hovered URI in a new tab.
268
269 Button8
270 Go back in history.
271
272 Button9
273 Go forward in history.
274
275 Mod1-[Scroll Wheel]
276 The zoom level of the current web view can be adjusted by
277 scrolling while holding down the Mod1 key.
278
279 Global keyboard commands
280 Mod1-Ctrl-Shift-j
281 Move the current tab to the left (further down in the stack)
282 within the tab bar.
283
284 Mod1-Ctrl-Shift-K
285 Move the current tab to the right (further up in the stack)
286 within the tab bar.
287
288 Mod1-Ctrl-j
289 Switch to the previous tab (the one to the left of the current
290 one).
291
292 Mod1-Ctrl-k
293 Switch to the next tab (the one to the right of the current
294 one).
295
296 Mod1-[1..n]
297 Switch to the nth tab.
298
299 Mod1-q Close the current tab.
300
301 Mod1-w Go the specified home page.
302
303 Mod1-t Open the specified home page within a new tab.
304
305 Mod1-r Reload the page, bypassing the cache.
306
307 Mod1-o Focus the entry bar for input.
308
309 Mod1-/ Initiate an in-page search.
310
311 Mod1-n Perform a forward search within the context of the in-page
312 search.
313
314 Mod1-Shift-n
315 Perform a backwards search within the context of the in-page
316 search.
317
318 Mod1-b Toggle the visibility of the tab bar.
319
320 Mod1-Shift-h
321 Go back in history.
322
323 Mod1-Shift-l
324 Go forward in history.
325
326 Mod1-s Toggle JavaScript functionality on or off.
327
328 Mod1-c Toggle the TLS error policy between fail or ignore.
329
330 Mod1-h Move/scroll towards the left on the page.
331
332 Mod1-l Move/scroll towards the right on the page.
333
334 Mod1-j Move/scroll towards the bottom of the page.
335
336 Mod1-k Move/scroll towards the top of the page.
337
338 Mod1-Shift-g
339 Go to the bottom of the page.
340
341 Mod1-g Go to the top of the page.
342
343 Mod1-p Open the print dialog.
344
345 Entry commands
346 Commands can be executed from the entry using a proceeding “:”. adji
347 accepts two types of commands.
348
349 q If applicable, the program saves its state before quitting.
350
351 / To initiate an in-page search for a specific phrase, such as
352 “banana”, you would enter the succeeding phrase in the format of
353 :/banana.
354
355 User scripts
356 Upon successful loading of a page, the directory ~/.config/adji/scripts
357 is scanned, and every file with the “.js” extension is executed as a
358 JavaScript file within the context of the loaded page.
359
360 User styles
361 Upon successful loading of a page, the directory ~/.config/adji/styles
362 is scanned, and every file with the “.css” extension is injected as a
363 style sheet within the context of the loaded page. These style sheets
364 can be utilized to customize the appearance of web pages according to
365 your preferences.
366
367WEB EXTENSION
368 we_redirect.so
369 To specify redirect rules in the redirect file, you should use
370 the following format: /pattern/destination/. Each rule should
371 be written on a single line, and an arbitrary separator should
372 be used to initialize each rule. This separator can be any
373 character except for the “#” symbol, which is used for line
374 comments. The pattern can be any regular expression pattern that
375 matches a URI request. The destination can be left empty, or it
376 can contain a replacement pattern that references regex groups
377 from the pattern. If the destination is empty, the request will
378 be terminated and act as a URI block.
379
380 Regular expressions in terms of syntax and semantics are akin to
381 Perl regular expressions.
382
383EXAMPLES
384 adji -I
385 This command launches an independent adji instance without any
386 IPC configuration. It will not load or save any states.
387 However, if certain environment variables like ADJI_HISTORY_FILE
388 and ADJI_COOKIE_FILE are defined, this instance will use them.
389 Therefore, it cannot be considered completely isolated.
390
391 To make such an instance more isolated the variables
392 ADJI_HISTORY_FILE, ADJI_COOKIE_FILE, XDG_CACHE_HOME, and
393 XDG_DATA_HOME should be set to the value “/dev/null” before
394 executing the command.
395
396 ADJI_PROXY_URI=socks://127.0.0.1:9050 adji -I
397 This command launches an independent adji instance without any
398 IPC configuration. It routes every HTTP request through a
399 designated proxy URI, specifically a tor socks proxy in this
400 case. It will not load or save any states.
401
402 However, to enhance privacy and isolation of this instance,
403 measures must be taken to prevent data leakage through cookies
404 or other sources. Additionally, consider using a more privacy-
405 focused web browser.
406
407KNOWN ISSUES
408 Double-clicking on a tab grabs the focus and prevents global key
409 commands from functioning. This issue could be addressed by focusing
410 the web view upon tab click events. However, as it is a minor problem
411 and only present in a mouse workflow, such a solution has not been
412 implemented.
413
414AUTHOR
415 Chris Noxz <chris@noxz.tech>
416
417COPYRIGHT
418 Copyright © 2023 Chris Noxz.
419
420 License: GPLv3+
421
422 GNU GPL version 3 or later
423 <https://www.gnu.org/licenses/licenses.html>.
424
425 This is free software: you are free to change and redistribute it.
426 There is NO WARRANTY, to the extent permitted by law.
427
428 adji-0.1.9 ADJI(1)
429.COE
430.CDE
431
432.HnS 1
433Installation
434.HnE
435
436Edit config.mk to match your local setup (adji is installed into the
437.I /usr/local
438namespace by default), then simply enter the following command to install (if
439necessary as root):
440
441.CDS
442.COS
443make clean install
444.COE
445.CDE
446
447get source
448.URL //noxz.tech/git/adji.git here .