commit: be08c45a7e81177f79a3502da5d1d5038ce1bfec
parent: 79a7561a6dc4ac60f4b7bbd1067c3123c06eb599
author: Chris Noxz <chris@noxz.tech>
date: Sun, 12 Mar 2023 17:15:15 +0100
add adji under software
5 files changed, 453 insertions(+)
diff --git a/noxz.tech/software/adji/.assemble b/noxz.tech/software/adji/.assemble
@@ -0,0 +1 @@
+index.html
diff --git a/noxz.tech/software/adji/.buildignore b/noxz.tech/software/adji/.buildignore
diff --git a/noxz.tech/software/adji/.metadata b/noxz.tech/software/adji/.metadata
@@ -0,0 +1 @@
+.ds TITLE adji
diff --git a/noxz.tech/software/adji/index.www b/noxz.tech/software/adji/index.www
@@ -0,0 +1,448 @@
+adji is a recursive acronym for
+.I "Adji's a Decisive and Joyful Internet browser"
+
+adji is a simple, decisive and distraction free web browser using GTK+ 3, GLib
+and WebKit2GTK+. This web browser takes inspiration from other web browsers
+like
+.URL https://surf.suckless.org/ surf ,
+.URL https://www.uninformativ.de/git/lariza/file/README.html lariza
+and
+.URL https://fanglingsu.github.io/vimb/ vimb .
+
+
+.HnS 1
+Download
+.HnE
+
+.URL //noxz.tech/git/adji.git/archive/adji-0.1.9.tar.gz "adji 0.1.9"
+(33kb) (2023-03-09)
+
+.HnS 1
+Setting up an environment
+.HnE
+
+To optimize the usage of adji, it is recommended to configure certain
+environment variables, ideally by exporting them through your
+.ICD ~/.profile
+file.
+Here is an example of the variable values that I prefer:
+
+.CDS
+.COS
+# setup adji browser config
+export ADJI_DEFAULT_FONT="Source Code Pro"
+export ADJI_SERIF_FONT="Liberation Serif"
+export ADJI_SANS_SERIF_FONT="Liberation Sans"
+export ADJI_MONOSPACE_FONT="Source Code Pro"
+export ADJI_DEFAULT_FONT_SIZE="16"
+export ADJI_ACCEPTED_LANGUAGE="en_US"
+export ADJI_DOWNLOAD_DIR="$HOME/downloads"
+export ADJI_SE_URI_FORMAT="https://ddg.gg?q=%s"
+export ADJI_HISTORY_FILE="$XDG_CACHE_HOME/adji/history"
+export ADJI_STATE_FILE="$XDG_CACHE_HOME/adji/state"
+export ADJI_COOKIE_FILE="$XDG_CACHE_HOME/adji/cookies"
+.COE
+.CDE
+
+
+.HnS 1
+Manual
+.HnE
+
+.CDS
+.COS
+ADJI(1) General Commands Manual ADJI(1)
+
+NAME
+ adji - Adji's a Decisive and Joyful Internet browser
+
+SYNOPSIS
+ adji [-I] [URI...]
+
+DESCRIPTION
+ adji is a simple, decisive and distraction free web browser using GTK+
+ 3, GLib and WebKit2GTK+. This web browser takes inspiration from other
+ web browsers like surf(1), lariza(1) and vimb(1).
+
+OPTIONS
+ Along with the standard arguments for GTK+ 3 (see gtk-options(7)), adji
+ is equipped with the following options:
+
+ -I Implements an independent instance without any ipc
+ configuration.
+
+ If no URI are provided, the value of the enviornment variable
+ ADJI_HOME_URI will be opened which defaults to “about:blank”.
+ Otherwise, any number of URIs may follow these options.
+
+ENVIRONMENT
+ adji recognizes the following environment variables, in addition to the
+ standard variables of GTK+ 3:
+
+ ADJI_ACCEPTED_LANGUAGES
+ When sending an HTTP request, WebKit populates the “Accepted-
+ Language” header based on the provided list of languages, which
+ can be comma-separated (e.g. “en_US,en_AU”). If no languages are
+ specified, WebKit will use en_US as the default.
+
+ ADJI_COOKIE_FILE
+ By providing a path to a cookie file, adji will provide a method
+ of sharing cookies between sessions and instances.
+
+ ADJI_DEFAULT_FONT
+ Provides a method for specifying the default font inside the web
+ view of adji. If no default font is specified, WebKit will use
+ sans-serif as the default.
+
+ ADJI_DEFAULT_FONT_SIZE
+ Provides a method for specifying the default font size inside
+ the web view of adji. If no default font size is specified,
+ WebKit will use 16 as the default.
+
+ ADJI_DISABLE_AUTO_LOAD_IMAGES
+ For a faster, or perhaps a more secure way of browsing the web,
+ setting this variable provides a method of preventing images
+ from loading automatically.
+
+ ADJI_DOWNLOAD_DIR
+ This variable allows you to specify the directory to where all
+ downloads are stored according to your preference. By default
+ all downloads are stored at /var/tmp.
+
+ ADJI_ENABLE_CONSOLE_TO_STDOUT
+ Output that is printed to the web view console can be copied to
+ STDOUT setting this variable.
+
+ ADJI_ENABLE_SMOOTH_SCROLLING
+ By default adji disables the janky and annoying “smooth
+ scrolling”. If you for some reason like it, setting this
+ variable will enable it.
+
+ ADJI_FIFO_NAME
+ adji implements IPC configurations using named pipes in the file
+ system. According to XDG standards, the files for these named
+ pipes are stored as
+ /var/run/user/$UID/adji_$ADJI_FIFO_NAME.fifo.
+
+ The $UID refers to the id of the user running adji.
+ $ADJI_FIFO_NAME refers to the value of this variable, which
+ defaults to default. By specifying this variable, parallel IPC
+ configurations can be used. Be sure to also specify the
+ $ADJI_STATE_FILE accordingly. If you do not, the IPC instances
+ will conflict and overwrite the states of each other.
+
+ ADJI_HISTORY_FILE
+ When set, adji will store each visited URI to the file
+ specified.
+
+ ADJI_HOME_URI
+ The URI that will be opened in new tabs if nothing else is
+ specified. Defaults to about:blank.
+
+ ADJI_MONOSPACE_FONT
+ Provides a method for specifying the monospace font inside the
+ web view of adji. If no monospace font is specified, WebKit
+ will use monospace as the default.
+
+ ADJI_PROXY_IGNORE
+ When specifying a proxy URI, adji will send every HTTP requests
+ through that URI. To exclude traffic to certain hosts from being
+ sent through the specified proxy URI, this variable can be used
+ to provide a comma-separated list of hosts to be ignored (e.g.
+ “127.0.0.1,noxz.tech”).
+
+ ADJI_PROXY_URI
+ By specifying a proxy URI, adji will send every HTTP requests
+ through that URI. As an example a socks proxy for tor can be
+ specified in this way “socks://127.0.0.1:9050”.
+
+ ADJI_SANS_SERIF_FONT
+ Provides a method for specifying the sans-serif font inside the
+ web view of adji. If no sans-serif font is specified, WebKit
+ will use sans-serif as the default.
+
+ ADJI_SERIF_FONT
+ Provides a method for specifying the serif font inside the web
+ view of adji. If no serif font is specified, WebKit will use
+ serif as the default.
+
+ ADJI_SE_URI_FORMAT
+ If an entry cannot be resolved as either a URI or a file path, a
+ web search will be performed. To define the method of
+ perforating this web search, a format can be utilized in the
+ following manner, using http://ddg.gg as an example:
+ “https://ddg.gg?q=%s”. One, and only one, string reference (%s)
+ must be specified. The default value is https://ddg.gg?q=%s.
+
+ ADJI_STATE_FILE
+ By specifying a path to a state file, adji will save the state
+ of open tabs for next time the program is run. Each time a tab
+ is moved, updated or otherwise changed, the state of open tabs
+ will be saved as a list of URIs. It is important to avoid using
+ the same state file for multiple IPC configurations, as they
+ will conflict and overwrite each other.
+
+ ADJI_VERBOSE
+ If set, this feature is employed by we_redirect.so to verbosely
+ output to STDERR which redirections are being.
+
+ ADJI_USER_AGENT
+ By default, adji uses WebKit's default value for the user agent
+ string. This variable can be utilized to specify an alternative
+ user agent to the default one.
+
+ ADJI_ZOOM_LEVEL
+ This variable can be utilized to set the zoom level of WebKit's
+ viewports. The default value is 1.0.
+
+FILES
+ These paths will be constructed using XDG variables.
+
+ ~/.config/adji/redirect
+ Redirect rules used by we_redirect.so. See the WEB EXTENSION
+ section.
+
+ ~/.config/adji/exthandler
+ adji has a built-in mechanism for externally handling URIs. You
+ can use the file specified by the path to define how these URIs
+ should be handled in a customized manner. A system call passes
+ the URI as the first parameter.
+
+ ~/.config/adji/scripts
+ Directory to store user scripts (JavaScript).
+
+ ~/.config/adji/styles
+ Directory to store user style sheets (CSS).
+
+ ~/.config/adji/web_extensions
+ Directory where WebKit will search for web extensions.
+
+ ~/.cache/adji
+ ~/.cache/webkitgtk
+ ~/.local/share/webkitgtk
+ WebKitGTK will store its caches and local storage data in these
+ directories. It is recommended to periodically clean these
+ directories or mount them as some sort of volatile storage.
+
+USAGE
+ Entry
+ Entry refers to the entry/location/command bar at the bottom of the
+ window.
+
+ Mod1-h Navigate the caret to the left in the entry.
+
+ Mod1-l Navigate the caret to the right in the entry.
+
+ Enter/Return
+ The entered command or URI is resolved as appropriate. If no
+ resolution is found, the entry is reverted back to its original
+ value. Escape The entry is reverted back to its original value.
+
+ Tab bar
+ Button1
+ When a tab is clicked, the corresponding pair of web view and
+ entry will be made visible
+
+ Button2
+ Clicking on a tab using the scroll wheel will close the pair of
+ view and entry represented by that tab
+
+ Scroll wheel
+ While hovering over the tab bar, scrolling the scroll wheel will
+ allow you to move through tabs in the same direction as your
+ scroll.
+
+ Download bar
+ The download bar remains hidden until a download is initiated. As the
+ download progresses, the progress is shown and updated. Each download
+ is represented by a button that can be clicked. During an active
+ download, clicking the button will abort the download and remove the
+ button. Once the download is complete, the button will simply be
+ removed when clicked.
+
+ Web view
+ Escape Stops the web rendering.
+
+ Button2
+ Opens a hovered URI in a new tab.
+
+ Button8
+ Go back in history.
+
+ Button9
+ Go forward in history.
+
+ Mod1-[Scroll Wheel]
+ The zoom level of the current web view can be adjusted by
+ scrolling while holding down the Mod1 key.
+
+ Global keyboard commands
+ Mod1-Ctrl-Shift-j
+ Move the current tab to the left (further down in the stack)
+ within the tab bar.
+
+ Mod1-Ctrl-Shift-K
+ Move the current tab to the right (further up in the stack)
+ within the tab bar.
+
+ Mod1-Ctrl-j
+ Switch to the previous tab (the one to the left of the current
+ one).
+
+ Mod1-Ctrl-k
+ Switch to the next tab (the one to the right of the current
+ one).
+
+ Mod1-[1..n]
+ Switch to the nth tab.
+
+ Mod1-q Close the current tab.
+
+ Mod1-w Go the specified home page.
+
+ Mod1-t Open the specified home page within a new tab.
+
+ Mod1-r Reload the page, bypassing the cache.
+
+ Mod1-o Focus the entry bar for input.
+
+ Mod1-/ Initiate an in-page search.
+
+ Mod1-n Perform a forward search within the context of the in-page
+ search.
+
+ Mod1-Shift-n
+ Perform a backwards search within the context of the in-page
+ search.
+
+ Mod1-b Toggle the visibility of the tab bar.
+
+ Mod1-Shift-h
+ Go back in history.
+
+ Mod1-Shift-l
+ Go forward in history.
+
+ Mod1-s Toggle JavaScript functionality on or off.
+
+ Mod1-c Toggle the TLS error policy between fail or ignore.
+
+ Mod1-h Move/scroll towards the left on the page.
+
+ Mod1-l Move/scroll towards the right on the page.
+
+ Mod1-j Move/scroll towards the bottom of the page.
+
+ Mod1-k Move/scroll towards the top of the page.
+
+ Mod1-Shift-g
+ Go to the bottom of the page.
+
+ Mod1-g Go to the top of the page.
+
+ Mod1-p Open the print dialog.
+
+ Entry commands
+ Commands can be executed from the entry using a proceeding “:”. adji
+ accepts two types of commands.
+
+ q If applicable, the program saves its state before quitting.
+
+ / To initiate an in-page search for a specific phrase, such as
+ “banana”, you would enter the succeeding phrase in the format of
+ :/banana.
+
+ User scripts
+ Upon successful loading of a page, the directory ~/.config/adji/scripts
+ is scanned, and every file with the “.js” extension is executed as a
+ JavaScript file within the context of the loaded page.
+
+ User styles
+ Upon successful loading of a page, the directory ~/.config/adji/styles
+ is scanned, and every file with the “.css” extension is injected as a
+ style sheet within the context of the loaded page. These style sheets
+ can be utilized to customize the appearance of web pages according to
+ your preferences.
+
+WEB EXTENSION
+ we_redirect.so
+ To specify redirect rules in the redirect file, you should use
+ the following format: /pattern/destination/. Each rule should
+ be written on a single line, and an arbitrary separator should
+ be used to initialize each rule. This separator can be any
+ character except for the “#” symbol, which is used for line
+ comments. The pattern can be any regular expression pattern that
+ matches a URI request. The destination can be left empty, or it
+ can contain a replacement pattern that references regex groups
+ from the pattern. If the destination is empty, the request will
+ be terminated and act as a URI block.
+
+ Regular expressions in terms of syntax and semantics are akin to
+ Perl regular expressions.
+
+EXAMPLES
+ adji -I
+ This command launches an independent adji instance without any
+ IPC configuration. It will not load or save any states.
+ However, if certain environment variables like ADJI_HISTORY_FILE
+ and ADJI_COOKIE_FILE are defined, this instance will use them.
+ Therefore, it cannot be considered completely isolated.
+
+ To make such an instance more isolated the variables
+ ADJI_HISTORY_FILE, ADJI_COOKIE_FILE, XDG_CACHE_HOME, and
+ XDG_DATA_HOME should be set to the value “/dev/null” before
+ executing the command.
+
+ ADJI_PROXY_URI=socks://127.0.0.1:9050 adji -I
+ This command launches an independent adji instance without any
+ IPC configuration. It routes every HTTP request through a
+ designated proxy URI, specifically a tor socks proxy in this
+ case. It will not load or save any states.
+
+ However, to enhance privacy and isolation of this instance,
+ measures must be taken to prevent data leakage through cookies
+ or other sources. Additionally, consider using a more privacy-
+ focused web browser.
+
+KNOWN ISSUES
+ Double-clicking on a tab grabs the focus and prevents global key
+ commands from functioning. This issue could be addressed by focusing
+ the web view upon tab click events. However, as it is a minor problem
+ and only present in a mouse workflow, such a solution has not been
+ implemented.
+
+AUTHOR
+ Chris Noxz <chris@noxz.tech>
+
+COPYRIGHT
+ Copyright © 2023 Chris Noxz.
+
+ License: GPLv3+
+
+ GNU GPL version 3 or later
+ <https://www.gnu.org/licenses/licenses.html>.
+
+ This is free software: you are free to change and redistribute it.
+ There is NO WARRANTY, to the extent permitted by law.
+
+ adji-0.1.9 ADJI(1)
+.COE
+.CDE
+
+.HnS 1
+Installation
+.HnE
+
+Edit config.mk to match your local setup (adji is installed into the
+.I /usr/local
+namespace by default), then simply enter the following command to install (if
+necessary as root):
+
+.CDS
+.COS
+make clean install
+.COE
+.CDE
+
+get source
+.URL //noxz.tech/git/adji.git here .
diff --git a/noxz.tech/software/index.www b/noxz.tech/software/index.www
@@ -3,6 +3,9 @@ Read about programs I've written below. All source code is available
and also linked to from each software page respectively.
.DLS
+.LIURL adji adji
+Adji's a Decisive and Joyful Internet browser
+
.LIURL acst acst
tracks changes and corruption in files using xattr-based checksums.