aboutsummaryrefslogtreecommitdiffhomepage
path: root/examples
diff options
context:
space:
mode:
authorGravatar Brendan Taylor <whateley@gmail.com>2010-10-11 12:24:33 -0600
committerGravatar Brendan Taylor <whateley@gmail.com>2010-10-11 12:24:33 -0600
commit667a68033ce72dd6b852954315f0457983f95b1b (patch)
treeb6be080e4f30ed492b0957f6a17040634f3a61e4 /examples
parentda00b8c3c8b65b826b91d67d5ddbe5cc07c9ebdf (diff)
parent400b23552e7a4e8f1219c677dc491f35e22d335a (diff)
Merge remote branch 'mathstuf/dev/cleanup-scripts' into HEAD
Conflicts: (bashisms) examples/data/scripts/formfiller.sh examples/data/scripts/insert_bookmark.sh examples/data/scripts/instance-select-wmii.sh
Diffstat (limited to 'examples')
-rw-r--r--examples/config/config11
-rwxr-xr-xexamples/data/scripts/auth.py68
-rwxr-xr-xexamples/data/scripts/download.sh22
-rw-r--r--examples/data/scripts/follow.js48
-rwxr-xr-xexamples/data/scripts/formfiller.sh124
-rwxr-xr-xexamples/data/scripts/history.sh8
-rwxr-xr-xexamples/data/scripts/insert_bookmark.sh15
-rwxr-xr-xexamples/data/scripts/instance-select-wmii.sh72
-rwxr-xr-xexamples/data/scripts/load_url_from_bookmarks.sh29
-rwxr-xr-xexamples/data/scripts/load_url_from_history.sh35
-rwxr-xr-xexamples/data/scripts/session.sh103
-rw-r--r--examples/data/scripts/util/dmenu.sh103
-rw-r--r--examples/data/scripts/util/editor.sh15
-rw-r--r--examples/data/scripts/util/uzbl-args.sh17
-rw-r--r--examples/data/scripts/util/uzbl-dir.sh19
-rw-r--r--examples/data/scripts/util/uzbl-window.sh17
16 files changed, 427 insertions, 279 deletions
diff --git a/examples/config/config b/examples/config/config
index 68c171d..ef5c122 100644
--- a/examples/config/config
+++ b/examples/config/config
@@ -34,7 +34,8 @@ set set_mode = set mode =
set set_status = set status_message =
# Spawn path shortcuts. In spawn the first dir+path match is used in "dir1:dir2:dir3:executable"
-set scripts_dir = $XDG_DATA_HOME/uzbl:@prefix/share/uzbl/examples/data:scripts
+set scripts_dir = $XDG_DATA_HOME/uzbl:@prefix/share/uzbl/examples/data:scripts
+set scripts_util_dir = @scripts_dir/util
# === Hardcoded handlers =====================================================
@@ -372,13 +373,13 @@ set stack = @mode_config stack
@insert modcmd_updates = 0
# Multi-stage-binding mode config.
-@stack keycmd_events = 1
-@stack modcmd_updates = 1
-@stack forward_keys = 0
@stack keycmd_style = foreground="red"
-@stack prompt_style = foreground="#888" weight="light"
@stack status_background = #202020
@stack mode_indicator = Bnd
+@stack prompt_style = foreground="#888" weight="light"
+@stack keycmd_events = 1
+@stack modcmd_updates = 1
+@stack forward_keys = 0
set default_mode = command
diff --git a/examples/data/scripts/auth.py b/examples/data/scripts/auth.py
index 4feb90b..9c1b4fc 100755
--- a/examples/data/scripts/auth.py
+++ b/examples/data/scripts/auth.py
@@ -4,50 +4,50 @@ import gtk
import sys
def responseToDialog(entry, dialog, response):
- dialog.response(response)
+ dialog.response(response)
def getText(authInfo, authHost, authRealm):
- dialog = gtk.MessageDialog(
- None,
- gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
- gtk.MESSAGE_QUESTION,
- gtk.BUTTONS_OK_CANCEL,
- None)
- dialog.set_markup('%s at %s' % (authRealm, authHost))
+ dialog = gtk.MessageDialog(
+ None,
+ gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
+ gtk.MESSAGE_QUESTION,
+ gtk.BUTTONS_OK_CANCEL,
+ None)
+ dialog.set_markup('%s at %s' % (authRealm, authHost))
- login = gtk.Entry()
- password = gtk.Entry()
- password.set_visibility(False)
+ login = gtk.Entry()
+ password = gtk.Entry()
+ password.set_visibility(False)
- login.connect("activate", responseToDialog, dialog, gtk.RESPONSE_OK)
- password.connect("activate", responseToDialog, dialog, gtk.RESPONSE_OK)
+ login.connect("activate", responseToDialog, dialog, gtk.RESPONSE_OK)
+ password.connect("activate", responseToDialog, dialog, gtk.RESPONSE_OK)
- hbox = gtk.HBox();
+ hbox = gtk.HBox();
- vbox_entries = gtk.VBox();
- vbox_labels = gtk.VBox();
+ vbox_entries = gtk.VBox();
+ vbox_labels = gtk.VBox();
- vbox_labels.pack_start(gtk.Label("Login:"), False, 5, 5)
- vbox_labels.pack_end(gtk.Label("Password:"), False, 5, 5)
+ vbox_labels.pack_start(gtk.Label("Login:"), False, 5, 5)
+ vbox_labels.pack_end(gtk.Label("Password:"), False, 5, 5)
- vbox_entries.pack_start(login)
- vbox_entries.pack_end(password)
+ vbox_entries.pack_start(login)
+ vbox_entries.pack_end(password)
- dialog.format_secondary_markup("Please enter username and password:")
- hbox.pack_start(vbox_labels, True, True, 0)
- hbox.pack_end(vbox_entries, True, True, 0)
+ dialog.format_secondary_markup("Please enter username and password:")
+ hbox.pack_start(vbox_labels, True, True, 0)
+ hbox.pack_end(vbox_entries, True, True, 0)
- dialog.vbox.pack_start(hbox)
- dialog.show_all()
- rv = dialog.run()
+ dialog.vbox.pack_start(hbox)
+ dialog.show_all()
+ rv = dialog.run()
- output = login.get_text() + "\n" + password.get_text()
- dialog.destroy()
- return rv, output
+ output = login.get_text() + "\n" + password.get_text()
+ dialog.destroy()
+ return rv, output
if __name__ == '__main__':
- rv, output = getText(sys.argv[8], sys.argv[9], sys.argv[10])
- if (rv == gtk.RESPONSE_OK):
- print output;
- else:
- exit(1)
+ rv, output = getText(sys.argv[8], sys.argv[9], sys.argv[10])
+ if (rv == gtk.RESPONSE_OK):
+ print output;
+ else:
+ exit(1)
diff --git a/examples/data/scripts/download.sh b/examples/data/scripts/download.sh
index f6d34e9..7375535 100755
--- a/examples/data/scripts/download.sh
+++ b/examples/data/scripts/download.sh
@@ -2,21 +2,25 @@
# just an example of how you could handle your downloads
# try some pattern matching on the uri to determine what we should do
+source $UZBL_UTIL_DIR/uzbl-args.sh
+source $UZBL_UTIL_DIR/uzbl-dir.sh
+
# Some sites block the default wget --user-agent..
-GET="wget --user-agent=Firefox --content-disposition --load-cookies=$XDG_DATA_HOME/uzbl/cookies.txt"
+GET="wget --user-agent=Firefox --content-disposition --load-cookies=$UZBL_COOKIE_JAR"
-dest="$HOME"
-url="$8"
+url="$1"
-http_proxy="$9"
+http_proxy="$2"
export http_proxy
-test "x$url" = "x" && { echo "you must supply a url! ($url)"; exit 1; }
+if [ -z "$url" ]; then
+ echo "you must supply a url! ($url)"
+ exit 1
+fi
# only changes the dir for the $get sub process
-if echo "$url" | grep -E '.*\.torrent' >/dev/null;
-then
- ( cd "$dest"; $GET "$url")
+if echo "$url" | grep -E '.*\.torrent' >/dev/null; then
+ ( cd "$UZBL_DOWNLOAD_DIR"; $GET "$url")
else
- ( cd "$dest"; $GET "$url")
+ ( cd "$UZBL_DOWNLOAD_DIR"; $GET "$url")
fi
diff --git a/examples/data/scripts/follow.js b/examples/data/scripts/follow.js
index 77c40cd..eacd52f 100644
--- a/examples/data/scripts/follow.js
+++ b/examples/data/scripts/follow.js
@@ -202,38 +202,38 @@ function reDrawHints(elems, chars) {
// pass: number of keys
// returns: key length
function labelLength(n) {
- var oldn = n;
- var keylen = 0;
- if(n < 2) {
- return 1;
- }
- n -= 1; // our highest key will be n-1
- while(n) {
- keylen += 1;
- n = Math.floor(n / charset.length);
- }
- return keylen;
+ var oldn = n;
+ var keylen = 0;
+ if(n < 2) {
+ return 1;
+ }
+ n -= 1; // our highest key will be n-1
+ while(n) {
+ keylen += 1;
+ n = Math.floor(n / charset.length);
+ }
+ return keylen;
}
// pass: number
// returns: label
function intToLabel(n) {
- var label = '';
- do {
- label = charset.charAt(n % charset.length) + label;
- n = Math.floor(n / charset.length);
- } while(n);
- return label;
+ var label = '';
+ do {
+ label = charset.charAt(n % charset.length) + label;
+ n = Math.floor(n / charset.length);
+ } while(n);
+ return label;
}
// pass: label
// returns: number
function labelToInt(label) {
- var n = 0;
- var i;
- for(i = 0; i < label.length; ++i) {
- n *= charset.length;
- n += charset.indexOf(label[i]);
- }
- return n;
+ var n = 0;
+ var i;
+ for(i = 0; i < label.length; ++i) {
+ n *= charset.length;
+ n += charset.indexOf(label[i]);
+ }
+ return n;
}
//Put it all together
function followLinks(follow) {
diff --git a/examples/data/scripts/formfiller.sh b/examples/data/scripts/formfiller.sh
index deccea2..6982f9a 100755
--- a/examples/data/scripts/formfiller.sh
+++ b/examples/data/scripts/formfiller.sh
@@ -2,12 +2,12 @@
#
# Enhanced html form (eg for logins) filler (and manager) for uzbl.
#
-# uses settings files like: $keydir/<domain>
+# uses settings files like: $UZBL_FORMS_DIR/<domain>
# files contain lines like: !profile=<profile_name>
# <fieldname>(fieldtype): <value>
-# profile_name should be replaced with a name that will tell sth about that
+# profile_name should be replaced with a name that will tell sth about that
# profile
-# fieldtype can be checkbox, text or password, textarea - only for information
+# fieldtype can be checkbox, text or password, textarea - only for information
# pupropse (auto-generated) - don't change that
#
# Texteares: for textareas edited text can be now splitted into more lines.
@@ -37,63 +37,31 @@
# something else (or empty): if file not available: new, otherwise load.
#
-# config dmenu colors and prompt
-NB="#0f0f0f"
-NF="#4e7093"
-SB="#003d7c"
-SF="#3a9bff"
+DMENU_ARGS="-i"
+DMENU_SCHEMA="formfiller"
+DMENU_LINES="3"
+DMENU_PROMPT="Choose profile"
+DMENU_OPTIONS="vertical resize"
-if [ "`dmenu --help 2>&1| grep lines`x" != "x" ]
-then
- LINES=" -l 3 "
-else
- LINES=""
-fi
+source $UZBL_UTIL_DIR/dmenu.sh
+source $UZBL_UTIL_DIR/editor.sh
+source $UZBL_UTIL_DIR/uzbl-args.sh
+source $UZBL_UTIL_DIR/uzbl-dir.sh
-PROMPT="Choose profile"
RAND=$(dd if=/dev/urandom count=1 2> /dev/null | cksum | cut -c 1-5)
MODELINE="> vim:ft=formfiller"
-keydir=${XDG_DATA_HOME:-$HOME/.local/share}/uzbl/dforms
+[ -d "$(dirname $UZBL_FORMS_DIR)" ] || exit 1
+[ -d $UZBL_FORMS_DIR ] || mkdir $UZBL_FORMS_DIR || exit 1
-[ -d "`dirname $keydir`" ] || exit 1
-[ -d "$keydir" ] || mkdir "$keydir"
-
-editor="${VISUAL}"
-if [ -z "${editor}" ]; then
- if [ -z "${EDITOR}" ]; then
- editor='xterm -e vim'
- else
- editor="xterm -e ${EDITOR}"
- fi
-fi
-
-config=$1;
-shift
-pid=$1;
-shift
-xid=$1;
-shift
-fifo=$1;
-shift
-socket=$1;
-shift
-url=$1;
-shift
-title=$1;
-shift
action=$1
-[ -d $keydir ] || mkdir $keydir || exit 1
-
-domain=$(echo $url | sed 's/\(http\|https\):\/\/\([^\/]\+\)\/.*/\2/')
+domain=$(echo $UZBL_URL | sed 's/\(http\|https\):\/\/\([^\/]\+\)\/.*/\2/')
-if [ "$action" != 'edit' -a "$action" != 'new' -a "$action" != 'load' -a "$action" != 'add' -a "$action" != 'once' ]
-then
+if [ "$action" != 'edit' -a "$action" != 'new' -a "$action" != 'load' -a "$action" != 'add' -a "$action" != 'once' ]; then
action="new"
- [ -e "$keydir/$domain" ] && action="load"
-elif [ "$action" = 'edit' ] && [ ! -e "$keydir/$domain" ]
-then
+ [ -e "$UZBL_FORMS_DIR/$domain" ] && action="load"
+elif [ "$action" = 'edit' ] && [ ! -e "$UZBL_FORMS_DIR/$domain" ]; then
action="new"
fi
@@ -153,41 +121,38 @@ insertFunction="function insert(fname, ftype, fvalue, fchecked) { \
} \
}; "
-if [ "$action" = 'load' ]
-then
- [ -e $keydir/$domain ] || exit 2
- if [ `cat $keydir/$domain|grep "!profile"|wc -l` -gt 1 ]
- then
- menu=`cat $keydir/$domain| \
- sed -n 's/^!profile=\([^[:blank:]]\+\)/\1/p'`
- option=`printf "$menu"| dmenu ${LINES} -nb "${NB}" -nf "${NF}" -sb "${SB}" -sf "${SF}" -p "${PROMPT}"`
+if [ "$action" = 'load' ]; then
+ [ -e $UZBL_FORMS_DIR/$domain ] || exit 2
+ if [ $(cat $UZBL_FORMS_DIR/$domain | grep "!profile" | wc -l) -gt 1 ]; then
+ menu=$(cat $UZBL_FORMS_DIR/$domain | \
+ sed -n 's/^!profile=\([^[:blank:]]\+\)/\1/p')
+ option=$(printf "$menu" | $DMENU)
fi
# Remove comments
sed '/^>/d' -i $tmpfile
- sed 's/^\([^{]\+\){\([^}]*\)}(\(radio\|checkbox\)):\(off\|no\|false\|unchecked\|0\|$\)/\1{\2}(\3):0/I;s/^\([^{]\+\){\([^}]*\)}(\(radio\|checkbox\)):[^0]\+/\1{\2}(\3):1/I' -i $keydir/$domain
- fields=`cat $keydir/$domain | \
+ sed 's/^\([^{]\+\){\([^}]*\)}(\(radio\|checkbox\)):\(off\|no\|false\|unchecked\|0\|$\)/\1{\2}(\3):0/I;s/^\([^{]\+\){\([^}]*\)}(\(radio\|checkbox\)):[^0]\+/\1{\2}(\3):1/I' -i $UZBL_FORMS_DIR/$domain
+ fields=$(cat $UZBL_FORMS_DIR/$domain | \
sed -n "/^!profile=${option}/,/^!profile=/p" | \
sed '/^!profile=/d' | \
sed 's/^\([^(]\+(\)\(radio\|checkbox\|text\|search\|textarea\|password\)):/%{>\1\2):<}%/' | \
sed 's/^\(.\+\)$/<{br}>\1/' | \
tr -d '\n' | \
- sed 's/<{br}>%{>\([^(]\+(\)\(radio\|checkbox\|text\|search\|textarea\|password\)):<}%/\\n\1\2):/g'`
+ sed 's/<{br}>%{>\([^(]\+(\)\(radio\|checkbox\|text\|search\|textarea\|password\)):<}%/\\n\1\2):/g')
printf '%s\n' "${fields}" | \
sed -n -e "s/\([^(]\+\)(\(password\|text\|search\|textarea\)\+):[ ]*\(.\+\)/js $insertFunction; insert('\1', '\2', '\3', 0);/p" | \
- sed -e 's/@/\\@/g;s/<{br}>/\\\\n/g' > $fifo
+ sed -e 's/@/\\@/g;s/<{br}>/\\\\n/g' | socat - unix-connect:$UZBL_SOCKET
printf '%s\n' "${fields}" | \
sed -n -e "s/\([^{]\+\){\([^}]*\)}(\(radio\|checkbox\)):[ ]*\(.\+\)/js $insertFunction; insert('\1', '\3', '\2', \4);/p" | \
- sed -e 's/@/\\@/g' > $fifo
-elif [ "$action" = "once" ]
-then
- tmpfile=`mktemp`
+ sed -e 's/@/\\@/g' | socat - unix-connect:$UZBL_SOCKET
+elif [ "$action" = "once" ]; then
+ tmpfile=$(mktemp)
printf 'js %s dump(); \n' "$dumpFunction" | \
- socat - unix-connect:$socket | \
+ socat - unix-connect:$UZBL_SOCKET | \
sed -n '/^[^(]\+([^)]\+):/p' > $tmpfile
echo "$MODELINE" >> $tmpfile
- ${editor} $tmpfile
+ $UZBL_EDITOR $tmpfile
[ -e $tmpfile ] || exit 2
@@ -195,23 +160,22 @@ then
sed '/^>/d' -i $tmpfile
sed 's/^\([^{]\+\){\([^}]*\)}(\(radio\|checkbox\)):\(off\|no\|false\|unchecked\|0\|$\)/\1{\2}(\3):0/I;s/^\([^{]\+\){\([^}]*\)}(\(radio\|checkbox\)):[^0]\+/\1{\2}(\3):1/I' -i $tmpfile
- fields=`cat $tmpfile | \
+ fields=$(cat $tmpfile | \
sed 's/^\([^(]\+(\)\(radio\|checkbox\|text\|search\|textarea\|password\)):/%{>\1\2):<}%/' | \
sed 's/^\(.\+\)$/<{br}>\1/' | \
tr -d '\n' | \
- sed 's/<{br}>%{>\([^(]\+(\)\(radio\|checkbox\|text\|search\|textarea\|password\)):<}%/\\n\1\2):/g'`
+ sed 's/<{br}>%{>\([^(]\+(\)\(radio\|checkbox\|text\|search\|textarea\|password\)):<}%/\\n\1\2):/g')
printf '%s\n' "${fields}" | \
sed -n -e "s/\([^(]\+\)(\(password\|text\|search\|textarea\)\+):[ ]*\(.\+\)/js $insertFunction; insert('\1', '\2', '\3', 0);/p" | \
- sed -e 's/@/\\@/g;s/<{br}>/\\\\n/g' > $fifo
+ sed -e 's/@/\\@/g;s/<{br}>/\\\\n/g' | socat - unix-connect:$UZBL_SOCKET
printf '%s\n' "${fields}" | \
sed -n -e "s/\([^{]\+\){\([^}]*\)}(\(radio\|checkbox\)):[ ]*\(.\+\)/js $insertFunction; insert('\1', '\3', '\2', \4);/p" | \
- sed -e 's/@/\\@/g' > $fifo
+ sed -e 's/@/\\@/g' | socat - unix-connect:$UZBL_SOCKET
rm -f $tmpfile
else
- if [ "$action" = 'new' -o "$action" = 'add' ]
- then
- [ "$action" = 'new' ] && echo "$MODELINE" > $keydir/$domain
- echo "!profile=NAME_THIS_PROFILE$RAND" >> $keydir/$domain
+ if [ "$action" = 'new' -o "$action" = 'add' ]; then
+ [ "$action" = 'new' ] && echo "$MODELINE" > $UZBL_FORMS_DIR/$domain
+ echo "!profile=NAME_THIS_PROFILE$RAND" >> $UZBL_FORMS_DIR/$domain
#
# 2. and 3. line (tr -d and sed) are because, on gmail login for example,
# <input > tag is splited into lines
@@ -229,11 +193,11 @@ else
# passwd(password):
#
printf 'js %s dump(); \n' "$dumpFunction" | \
- socat - unix-connect:$socket | \
- sed -n '/^[^(]\+([^)]\+):/p' >> $keydir/$domain
+ socat - unix-connect:$UZBL_SOCKET | \
+ sed -n '/^[^(]\+([^)]\+):/p' >> $UZBL_FORMS_DIR/$domain
fi
- [ -e "$keydir/$domain" ] || exit 3 #this should never happen, but you never know.
- $editor "$keydir/$domain" #TODO: if user aborts save in editor, the file is already overwritten
+ [ -e "$UZBL_FORMS_DIR/$domain" ] || exit 3 #this should never happen, but you never know.
+ $UZBL_EDITOR "$UZBL_FORMS_DIR/$domain" #TODO: if user aborts save in editor, the file is already overwritten
fi
# vim:fileencoding=utf-8:sw=4
diff --git a/examples/data/scripts/history.sh b/examples/data/scripts/history.sh
index 7c83aa6..b91d415 100755
--- a/examples/data/scripts/history.sh
+++ b/examples/data/scripts/history.sh
@@ -1,5 +1,7 @@
#!/bin/sh
-file=${XDG_DATA_HOME:-$HOME/.local/share}/uzbl/history
-[ -d `dirname $file` ] || exit 1
-echo `date +'%Y-%m-%d %H:%M:%S'`" $6 $7" >> $file
+source $UZBL_UTIL_DIR/uzbl-dir.sh
+
+[ -w "$UZBL_HISTORY_FILE" ] || exit 1
+
+echo $(date +'%Y-%m-%d %H:%M:%S')" $6 $7" >> $UZBL_HISTORY_FILE
diff --git a/examples/data/scripts/insert_bookmark.sh b/examples/data/scripts/insert_bookmark.sh
index 2ec5975..acef37e 100755
--- a/examples/data/scripts/insert_bookmark.sh
+++ b/examples/data/scripts/insert_bookmark.sh
@@ -1,18 +1,19 @@
#!/bin/sh
-[ -d "${XDG_DATA_HOME:-$HOME/.local/share}/uzbl" ] || exit 1
-file=${XDG_DATA_HOME:-$HOME/.local/share}/uzbl/bookmarks
+source $UZBL_UTIL_DIR/uzbl-dir.sh
+
+[ -d "$UZBL_DATA_DIR" ] || exit 1
+[ -w "$UZBL_BOOKMARKS_FILE" ] || exit 1
which zenity 2>&1 >/dev/null || exit 2
-url=$6
# replace tabs, they are pointless in titles and we want to use tabs as delimiter.
-title=$(echo "$7" | sed 's/\t/ /')
-entry=`zenity --entry --text="Add bookmark. add tags after the '\t', separated by spaces" --entry-text="$url $title\t"`
+title=$(echo "$UZBL_TITLE" | sed 's/\t/ /')
+entry=$(zenity --entry --text="Add bookmark. add tags after the '\t', separated by spaces" --entry-text="$UZBL_URL $title\t")
exitstatus=$?
if [ $exitstatus -ne 0 ]; then exit $exitstatus; fi
-url=`echo $entry | awk '{print $1}'`
+url=$(echo $entry | awk '{print $1}')
# TODO: check if already exists, if so, and tags are different: ask if you want to replace tags
echo "$entry" >/dev/null #for some reason we need this.. don't ask me why
-printf "$entry\n" >> $file
+printf "$entry\n" >> $UZBL_BOOKMARKS_FILE
true
diff --git a/examples/data/scripts/instance-select-wmii.sh b/examples/data/scripts/instance-select-wmii.sh
index 64b859e..e70a143 100755
--- a/examples/data/scripts/instance-select-wmii.sh
+++ b/examples/data/scripts/instance-select-wmii.sh
@@ -11,44 +11,38 @@
# See http://www.uzbl.org/wiki/wmii for more info
# $1 must be one of 'list', 'next', 'prev'
-COLORS=" -nb #303030 -nf khaki -sb #CCFFAA -sf #303030"
+DMENU_SCHEME="wmii"
-if dmenu --help 2>&1 | grep -q '\[-rs\] \[-ni\] \[-nl\] \[-xs\]'
-then
- DMENU="dmenu -i -xs -rs -l 10" # vertical patch
-else
- DMENU="dmenu -i"
-fi
+source $UZBL_UTIL_DIR/dmenu.sh
-if [ "$1" = 'list' ]
-then
- list=
- # get window id's of uzbl clients. we could also get the label in one shot but it's pretty tricky
- for i in $(wmiir read /tag/sel/index | grep uzbl |cut -d ' ' -f2)
- do
- label=$(wmiir read /client/$i/label)
- list="$list$i : $label\n"
- done
- window=$(printf "$list\n" | $DMENU $COLORS | cut -d ' ' -f1)
- wmiir xwrite /tag/sel/ctl "select client $window"
-elif [ "$1" = 'next' ]
-then
- current=$(wmiir read /client/sel/ctl | head -n 1)
- # find the next uzbl window and focus it
- next=$(wmiir read /tag/sel/index | grep -A 10000 " $current " | grep -m 1 uzbl | cut -d ' ' -f2)
- if [ x"$next" != "x" ]
- then
- wmiir xwrite /tag/sel/ctl "select client $next"
- fi
-elif [ "$1" = 'prev' ]
-then
- current=$(wmiir read /client/sel/ctl | head -n 1)
- prev=$(wmiir read /tag/sel/index | grep -B 10000 " $current " | tac | grep -m 1 uzbl | cut -d ' ' -f2)
- if [ x"$prev" != "x" ]
- then
- wmiir xwrite /tag/sel/ctl "select client $prev"
- fi
-else
- echo "\$1 not valid" >&2
- exit 2
-fi
+case "$1" in
+ "list" )
+ list=
+ # get window id's of uzbl clients. we could also get the label in one shot but it's pretty tricky
+ for i in $(wmiir read /tag/sel/index | grep uzbl |cut -d ' ' -f2); do
+ label=$(wmiir read /client/$i/label)
+ list="$list$i : $label\n"
+ done
+ window=$(printf "$list\n" | $DMENU | cut -d ' ' -f1)
+ wmiir xwrite /tag/sel/ctl "select client $window"
+ ;;
+ "next" )
+ current=$(wmiir read /client/sel/ctl | head -n 1)
+ # find the next uzbl window and focus it
+ next=$(wmiir read /tag/sel/index | grep -A 10000 " $current " | grep -m 1 uzbl | cut -d ' ' -f2)
+ if [ -n "$next" ]; then
+ wmiir xwrite /tag/sel/ctl "select client $next"
+ fi
+ ;;
+ "prev" )
+ current=$(wmiir read /client/sel/ctl | head -n 1)
+ prev=$(wmiir read /tag/sel/index | grep -B 10000 " $current " | tac | grep -m 1 uzbl | cut -d ' ' -f2)
+ if [ -n "$prev" ]; then
+ wmiir xwrite /tag/sel/ctl "select client $prev"
+ fi
+ ;;
+ * )
+ echo "$1 not valid" >&2
+ exit 2
+ ;;
+esac
diff --git a/examples/data/scripts/load_url_from_bookmarks.sh b/examples/data/scripts/load_url_from_bookmarks.sh
index cb13420..564c3f8 100755
--- a/examples/data/scripts/load_url_from_bookmarks.sh
+++ b/examples/data/scripts/load_url_from_bookmarks.sh
@@ -2,19 +2,22 @@
#NOTE: it's the job of the script that inserts bookmarks to make sure there are no dupes.
-file=${XDG_DATA_HOME:-$HOME/.local/share}/uzbl/bookmarks
-[ -r "$file" ] || exit
-COLORS=" -nb #303030 -nf khaki -sb #CCFFAA -sf #303030"
-if dmenu --help 2>&1 | grep -q '\[-rs\] \[-ni\] \[-nl\] \[-xs\]'
-then
- DMENU="dmenu -i -xs -rs -l 10" # vertical patch
- # show tags as well
- goto=`$DMENU $COLORS < $file | awk '{print $1}'`
+DMENU_SCHEME="bookmarks"
+DMENU_OPTIONS="xmms vertical resize"
+
+source $UZBL_UTIL_DIR/dmenu.sh
+source $UZBL_UTIL_DIR/uzbl-args.sh
+source $UZBL_UTIL_DIR/uzbl-dir.sh
+
+[ -r "$UZBL_BOOKMARKS_FILE" ] || exit 1
+
+if [ -z "$DMENU_HAS_VERTICAL" ]; then
+ # because they are all after each other, just show the url, not their tags.
+ goto=$(awk '{print $1}' $UZBL_BOOKMARKS_FILE | $DMENU)
else
- DMENU="dmenu -i"
- # because they are all after each other, just show the url, not their tags.
- goto=`awk '{print $1}' $file | $DMENU $COLORS`
+ # show tags as well
+ goto=$($DMENU < $UZBL_BOOKMARKS_FILE | awk '{print $1}')
fi
-#[ -n "$goto" ] && echo "uri $goto" > $4
-[ -n "$goto" ] && echo "uri $goto" | socat - unix-connect:$5
+#[ -n "$goto" ] && echo "uri $goto" > $UZBL_FIFO
+[ -n "$goto" ] && echo "uri $goto" | socat - unix-connect:$UZBL_SOCKET
diff --git a/examples/data/scripts/load_url_from_history.sh b/examples/data/scripts/load_url_from_history.sh
index 62e02ac..d094625 100755
--- a/examples/data/scripts/load_url_from_history.sh
+++ b/examples/data/scripts/load_url_from_history.sh
@@ -1,24 +1,25 @@
#!/bin/sh
-history_file=${XDG_DATA_HOME:-$HOME/.local/share}/uzbl/history
-[ -r "$history_file" ] || exit 1
+DMENU_SCHEME="history"
+DMENU_OPTIONS="xmms vertical resize"
+
+source $UZBL_UTIL_DIR/dmenu.sh
+source $UZBL_UTIL_DIR/uzbl-args.sh
+source $UZBL_UTIL_DIR/uzbl-dir.sh
+
+[ -r "$UZBL_HISTORY_FILE" ] || exit 1
# choose from all entries, sorted and uniqued
-# goto=`awk '{print $3}' $history_file | sort -u | dmenu -i`
-COLORS=" -nb #303030 -nf khaki -sb #CCFFAA -sf #303030"
-if dmenu --help 2>&1 | grep -q '\[-rs\] \[-ni\] \[-nl\] \[-xs\]';
-then
- DMENU="dmenu -i -xs -rs -l 10" # vertical patch
- # choose an item in reverse order, showing also the date and page titles
- # pick the last field from the first 3 fields. this way you can pick a url (prefixed with date & time) or type just a new url.
- goto=`tac $history_file | $DMENU $COLORS | cut -d ' ' -f -3 | awk '{print $NF}'`
+# goto=$(awk '{print $3}' $history_file | sort -u | dmenu -i)
+if [ -z "$DMENU_HAS_VERTICAL" ]; then
+ current=$(tail -n 1 $UZBL_HISTORY_FILE | awk '{print $3}');
+ goto=$((echo $current; awk '{print $3}' $UZBL_HISTORY_FILE | grep -v "^$current\$" \
+ | sort -u) | $DMENU)
else
- DMENU="dmenu -i"
- # choose from all entries (no date or title), the first one being current url, and after that all others, sorted and uniqued, in ascending order
- current=`tail -n 1 $history_file | awk '{print $3}'`;
- goto=`(echo $current; awk '{print $3}' $history_file | grep -v "^$current\$" \
- | sort -u) | $DMENU $COLORS`
+ # choose an item in reverse order, showing also the date and page titles
+ # pick the last field from the first 3 fields. this way you can pick a url (prefixed with date & time) or type just a new url.
+ goto=$(tac $UZBL_HISTORY_FILE | $DMENU | cut -d ' ' -f -3 | awk '{print $NF}')
fi
-[ -n "$goto" ] && echo "uri $goto" > $4
-#[ -n "$goto" ] && echo "uri $goto" | socat - unix-connect:$5
+#[ -n "$goto" ] && echo "uri $goto" > $UZBL_FIFO
+[ -n "$goto" ] && echo "uri $goto" | socat - unix-connect:$UZBL_SOCKET
diff --git a/examples/data/scripts/session.sh b/examples/data/scripts/session.sh
index 1059b5e..89eeb7a 100755
--- a/examples/data/scripts/session.sh
+++ b/examples/data/scripts/session.sh
@@ -8,55 +8,62 @@
# and doesn't need to be called manually at any point.
# Add a line like 'bind quit = /path/to/session.sh endsession' to your config
-[ -d ${XDG_DATA_HOME:-$HOME/.local/share}/uzbl ] || exit 1
-scriptfile=$0 # this script
-sessionfile=${XDG_DATA_HOME:-$HOME/.local/share}/uzbl/browser-session # the file in which the "session" (i.e. urls) are stored
-configfile=${XDG_DATA_HOME:-$HOME/.local/share}/uzbl/config # uzbl configuration file
-UZBL="uzbl-browser -c $configfile" # add custom flags and whatever here.
-
-fifodir=/tmp # remember to change this if you instructed uzbl to put its fifos elsewhere
-thisfifo="$4"
-act="$8"
-url="$6"
-
-if [ "$act." = "." ]; then
- act="$1"
-fi
+source $UZBL_UTIL_DIR/uzbl-args.sh
+source $UZBL_UTIL_DIR/uzbl-dir.sh
+
+[ -d $UZBL_DATA_DIR ] || exit 1
+
+scriptfile=$0 # this script
+UZBL="uzbl-browser -c $UZBL_CONFIG_FILE" # add custom flags and whatever here.
+
+act="$1"
+# Test if we were run alone or from uzbl
+if [ -z "$UZBL_SOCKET" ]; then
+ # Take the old config
+ act="$UZBL_CONFIG"
+fi
case $act in
- "launch" )
- urls=`cat $sessionfile`
- if [ "$urls." = "." ]; then
- $UZBL
- else
- for url in $urls; do
- $UZBL --uri "$url" &
- done
- fi
- exit 0
- ;;
-
- "endinstance" )
- if [ "$url" != "(null)" ]; then
- echo "$url" >> $sessionfile;
- fi
- echo "exit" > "$thisfifo"
- ;;
-
- "endsession" )
- mv "$sessionfile" "$sessionfile~"
- for fifo in $fifodir/uzbl_fifo_*; do
- if [ "$fifo" != "$thisfifo" ]; then
- echo "spawn $scriptfile endinstance" > "$fifo"
- fi
- done
- echo "spawn $scriptfile endinstance" > "$thisfifo"
- ;;
-
- * ) echo "session manager: bad action"
- echo "Usage: $scriptfile [COMMAND] where commands are:"
- echo " launch - Restore a saved session or start a new one"
- echo " endsession - Quit the running session. Must be called from uzbl"
- ;;
+ "launch" )
+ urls=$(cat $UZBL_SESSION_FILE)
+ if [ -z "$urls" ]; then
+ $UZBL
+ else
+ for url in $urls; do
+ $UZBL --uri "$url" &
+ disown
+ done
+ fi
+ exit 0
+ ;;
+
+ "endinstance" )
+ if [ -z "$UZBL_SOCKET" ]; then
+ echo "session manager: endinstance must be called from uzbl"
+ exit 1
+ fi
+ if [ ! "$UZBL_URL" = "(null)" ]; then
+ echo "$UZBL_URL" >> $UZBL_SESSION_FILE
+ fi
+ echo "exit" | socat - unix-connect:$UZBL_SOCKET
+ ;;
+
+ "endsession" )
+ mv "$UZBL_SESSION_FILE" "$UZBL_SESSION_FILE~"
+ for sock in $UZBL_SOCKET_DIR/uzbl_fifo_*; do
+ if [ "$sock" != "$UZBL_SOCKET" ]; then
+ echo "spawn $scriptfile endinstance" | socat - unix-connect:$socket
+ fi
+ done
+ echo "spawn $scriptfile endinstance" | socat - unix-connect:$UZBL_SOCKET
+ ;;
+
+ * )
+ echo "session manager: bad action"
+ echo "Usage: $scriptfile [COMMAND] where commands are:"
+ echo " launch - Restore a saved session or start a new one"
+ echo " endinstance - Quit the current instance. Must be called from uzbl"
+ echo " endsession - Quit the running session."
+ ;;
esac
diff --git a/examples/data/scripts/util/dmenu.sh b/examples/data/scripts/util/dmenu.sh
new file mode 100644
index 0000000..757e5cd
--- /dev/null
+++ b/examples/data/scripts/util/dmenu.sh
@@ -0,0 +1,103 @@
+#!/bin/sh
+# dmenu setup
+
+case "$DMENU_SCHEME" in
+ # wmii
+ "wmii" )
+ NB="#303030"
+ NF="khaki"
+ SB="#ccffaa"
+ SF="#303030"
+ ;;
+ # Formfiller
+ "formfiller" )
+ NB="#0f0f0f"
+ NF="4e7093"
+ SB="#003d7c"
+ SF="#3a9bff"
+ ;;
+ # Bookmarks
+ "bookmarks" )
+ NB="#303030"
+ NF="khaki"
+ SB="#ccffaa"
+ SF="#303030"
+ ;;
+ # History
+ "history" )
+ NB="#303030"
+ NF="khaki"
+ SB="#ccffaa"
+ SF="#303030"
+ ;;
+ # Default
+ * )
+ NB="#303030"
+ NF="khaki"
+ SB="#ccffaa"
+ SF="#303030"
+ ;;
+esac
+
+DMENU_COLORS="-nb $NB -nf $NF -sb $SB -sf $SF"
+
+# Default arguments
+if [ -z "$DMENU_ARGS" ]; then
+ DMENU_ARGS="-i"
+fi
+
+# Set the font if wanted
+if [ -n "$DMENU_FONT" ]; then
+ DMENU_ARGS="$DMENU_ARGS -fn $DMENU_FONT"
+fi
+
+# Set the prompt if wanted
+if [ -n "$DMENU_PROMPT" ]; then
+ DMENU_ARGS="$DMENU_ARGS -p $DMENU_PROMPT"
+fi
+
+# Detect the xmms patch
+if dmenu --help 2>&1 | grep -q '\[-xs\]'; then
+ DMENU_XMMS_ARGS="-xs"
+ DMENU_HAS_XMMS=1
+
+ if echo $DMENU_OPTIONS | grep -q -w 'xmms'; then
+ DMENU_ARGS="$DMENU_ARGS $DMENU_XMMS_ARGS"
+ fi
+fi
+
+# Detect the vertical patch
+if dmenu --help 2>&1 | grep -q '\[-l <lines>\]'; then
+ # Default to 10 lines
+ if [ -z "$DMENU_LINES" ]; then
+ DMENU_LINES=10
+ fi
+
+ DMENU_VERTICAL_ARGS="-l $DMENU_LINES"
+ DMENU_HAS_VERTICAL=1
+
+ # Detect the resize patch
+ if dmenu --help 2>&1 | grep -q '\[-rs\]'; then
+ DMENU_RESIZE_ARGS="-rs"
+ DMENU_HAS_RESIZE=1
+ fi
+
+ if echo $DMENU_OPTIONS | grep -q -w 'vertical'; then
+ DMENU_ARGS="$DMENU_ARGS $DMENU_VERTICAL_ARGS"
+
+ if echo $DMENU_OPTIONS | grep -q -w 'resize'; then
+ DMENU_ARGS="$DMENU_ARGS $DMENU_RESIZE_ARGS"
+ fi
+ fi
+fi
+
+# Detect placement patch
+if dmenu --help 2>&1 | grep -q '\[-x <xoffset>\]'; then
+ DMENU_PLACE_X="-x"
+ DMENU_PLACE_Y="-y"
+ DMENU_PLACE_WIDTH="-w"
+ DMENU_PLACE_HEIGHT="-h"
+ DMENU_HAS_PLACEMENT=1
+fi
+
+DMENU="dmenu $DMENU_ARGS $DMENU_COLORS"
diff --git a/examples/data/scripts/util/editor.sh b/examples/data/scripts/util/editor.sh
new file mode 100644
index 0000000..1969769
--- /dev/null
+++ b/examples/data/scripts/util/editor.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+# Editor selection
+
+if [ -z "$VTERM" ]; then
+ VTERM="xterm"
+fi
+
+UZBL_EDITOR="$VISUAL"
+if [ -z "$UZBL_EDITOR" ]; then
+ if [ -z "$EDITOR" ]; then
+ UZBL_EDITOR="$VTERM -e vim"
+ else
+ UZBL_EDITOR="$VTERM -e $EDITOR"
+ fi
+fi
diff --git a/examples/data/scripts/util/uzbl-args.sh b/examples/data/scripts/util/uzbl-args.sh
new file mode 100644
index 0000000..7a3dbe5
--- /dev/null
+++ b/examples/data/scripts/util/uzbl-args.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+# Arguments from uzbl
+
+UZBL_CONFIG=$1
+shift
+UZBL_PID=$1
+shift
+UZBL_XID=$1
+shift
+UZBL_FIFO=$1
+shift
+UZBL_SOCKET=$1
+shift
+UZBL_URL=$1
+shift
+UZBL_TITLE=$1
+shift
diff --git a/examples/data/scripts/util/uzbl-dir.sh b/examples/data/scripts/util/uzbl-dir.sh
new file mode 100644
index 0000000..bb56954
--- /dev/null
+++ b/examples/data/scripts/util/uzbl-dir.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+# Common directories and files used in scripts
+
+# Common things first
+UZBL_DATA_DIR=${XDG_DATA_HOME:-$HOME/.local/share}/uzbl
+UZBL_CONFIG_DIR=${XDG_CONFIG_DIR:-$HOME/.config}/uzbl
+UZBL_FIFO_DIR=/tmp
+UZBL_SOCKET_DIR=/tmp
+
+# Directories
+UZBL_DOWNLOAD_DIR=${XDG_DOWNLOAD_DIR:-$HOME}
+UZBL_FORMS_DIR=$UZBL_DATA_DIR/dforms
+
+# Data files
+UZBL_CONFIG_FILE=$UZBL_CONFIG_DIR/config
+UZBL_COOKIE_FILE=$UZBL_DATA_DIR/cookies.txt
+UZBL_BOOKMARKS_FILE=$UZBL_DATA_DIR/bookmarks
+UZBL_HISTORY_FILE=$UZBL_DATA_DIR/history
+UZBL_SESSION_FILE=$UZBL_DATA_DIR/browser-session
diff --git a/examples/data/scripts/util/uzbl-window.sh b/examples/data/scripts/util/uzbl-window.sh
new file mode 100644
index 0000000..b2771e4
--- /dev/null
+++ b/examples/data/scripts/util/uzbl-window.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+# uzbl window detection
+
+if [ -z "$UZBL_XID" ]; then
+ echo "Error: UZBL_XID not set"
+ echo "Please source uzbl-args.sh first"
+ exit 1
+fi
+
+UZBL_WIN_POS=$(xwininfo -id $UZBL_XID | \
+ sed -ne 's/Corners:[ ]*[+-]\([0-9]*\)[+-]\([0-9]*\).*$/\1 \2/p')
+UZBL_WIN_SIZE=$(xwininfo -id $UZBL_XID | \
+ sed -ne 's/-geometry[ ]*\([0-9]*\)x\([0-9]*\).*$/\1 \2/p')
+UZBL_WIN_POS_X=$(echo $UZBL_WIN_POS | cut -d\ -f1)
+UZBL_WIN_POS_Y=$(echo $UZBL_WIN_POS | cut -d\ -f2)
+UZBL_WIN_WIDTH=$(echo $UZBL_WIN_SIZE | cut -d\ -f1)
+UZBL_WIN_HEIGHT=$(echo $UZBL_WIN_SIZE | cut -d\ -f2)