====== Uzbl Extension Manager ======
===== Description =====
A simple extension manager for Uzbl. This will open files with extension ".uzbl".
===== Scripts ====
==== download-dot-uzbl.sh ====
#!/bin/sh
# Some sites block the default wget --user-agent..
GET="wget --user-agent=Firefox"
url="$8"
http_proxy="$9"
export http_proxy
test "x$url" = "x" && { echo "you must supply a url! ($url)"; exit 1; }
# only changes the dir for the $get sub process
if echo "$url" | grep -E '^.*\.uzbl$' >/dev/null;
then
( tmp=$(mktemp); $GET "$url" -O $tmp; $XDG_DATA_HOME/uzbl/scripts/uzbl-install.sh $tmp )
fi
==== uzbl-install.sh ====
#!/bin/sh
if [ -z $@ ]
then
echo "Usage: uzbl-install *.uzbl.tar.gz"
exit
fi
for a in $@
do
TMP_DIRECTORY=$(mktemp -d)
#mkdir -p $TMP_DIRECTORY
case $(file -b --mime-type $a) in
application/x-gzip)
( tar xfz $a -C $TMP_DIRECTORY )
;;
application/
esac
NAME="$(cat $TMP_DIRECTORY/name)"
EXTENSION_DIRECTORY="$XDG_DATA_HOME/uzbl/extensions"
CONFIG_FILE="$XDG_CONFIG_HOME/uzbl/config"
mkdir -p $EXTENSION_DIRECTORY/$NAME
#cat $CONFIG_FILE > /tmp/uzbl-config
#cat $TMP_DIRECTORY/config | sed "s|$EXTENSION_DIRECTORY/$NAME|$TMP_DIRECTORY/scripts|g" >> /tmp/uzbl-config
#cat /tmp/uzbl-config | uzbl-core -c -
installed=0
if [ ! -z "$(grep "^$(cat $TMP_DIRECTORY/config | sed 's/\\/\\\\/g')$" $CONFIG_FILE)" ]
then
echo "Not appending to config file, extension appears to already be installed."
else
cat $TMP_DIRECTORY/config >> $CONFIG_FILE
fi
cp -r $TMP_DIRECTORY/* $EXTENSION_DIRECTORY/$NAME
for f in $(ls "$EXTENSION_DIRECTORY/$NAME/scripts")
do
sed -n -e "s|\$XDG_DATA_HOME/uzbl/scripts|$EXTENSION_DIRECTORY/$NAME/scripts|g" "$EXTENSION_DIRECTORY/$NAME/scripts/$f"
done
done
===== Installation =====
Copy both scripts to $XDG_DATA_HOME/uzbl/scripts/
Add this to your config file:
@on_event DOWNLOAD_REQUEST spawn $XDG_DATA_HOME/uzbl/scripts/download-dot-uzbl.sh %s \@proxy_url
===== Testing it =====
Some Uzbl extensions:
* http://matthew.comuf.com/uzbl/userscripts.uzbl
===== Making Uzbl Extensions =====
In the git repo there is a template Uzbl extension file, you can look there for more info.
Directory Structure:
* ./version -- Uzbl version to use with (in the format of "Commit: 1958b52d41cba96956dc1995660de49525ed1047") obtained via "uzbl-core -V"
* ./scripts/ -- directory of scripts used in the extension
* ./name -- name of the extension
* ./config -- line of the config used to install it