aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bash_aliases1
-rw-r--r--config/uzbl/config457
2 files changed, 257 insertions, 201 deletions
diff --git a/bash_aliases b/bash_aliases
index 3b2446f..f0ac53e 100644
--- a/bash_aliases
+++ b/bash_aliases
@@ -89,6 +89,7 @@ alias ftpumount='umount /home/vasko/ftp'
alias desk='cd ~/Desktop'
alias cbb='cat /proc/acpi/bbswitch'
alias vimrc='vi ~/.vimrc'
+alias uzblrc='vi ~/.config/uzbl/config'
alias aliases='vi ~/.bash_aliases'
alias solarize='~/.solarized/solarize'
alias rat='vim ~/.ratpoison/ratpoisonrc.conf'
diff --git a/config/uzbl/config b/config/uzbl/config
index c39c50c..e7735de 100644
--- a/config/uzbl/config
+++ b/config/uzbl/config
@@ -1,78 +1,74 @@
# Example uzbl config. All settings are optional. You can use uzbl without
# any config at all (but it won't do much).
+
# === Core settings ==========================================================
# Polipo proxy for caching
set proxy_url = http://127.0.0.1:8123
# common directory locations
-set prefix = @(echo $PREFIX)@
-set data_home = @(echo $XDG_DATA_HOME)@
-set cache_home = @(echo $XDG_CACHE_HOME)@
-set config_home = @(echo $XDG_CONFIG_HOME)@
+set prefix @(echo $UZBL_PREFIX)@
+set data_home @(echo $XDG_DATA_HOME/uzbl)@
+set cache_home @(echo $XDG_CACHE_HOME/uzbl)@
+set config_home @(echo $XDG_CONFIG_HOME/uzbl)@
+set local_storage_path @data_home/databases/
# colors
-set color1 = @(source ~/.colors; echo $COLOR1)@
-set color2 = @(source ~/.colors; echo $COLOR2)@
-set color3 = @(source ~/.colors; echo $COLOR3)@
-set color4 = @(source ~/.colors; echo $COLOR4)@
-set color5 = @(source ~/.colors; echo $COLOR5)@
-set color6 = @(source ~/.colors; echo $COLOR6)@
-set color7 = @(source ~/.colors; echo $COLOR7)@
-set color8 = @(source ~/.colors; echo $COLOR8)@
-set color9 = @(source ~/.colors; echo $COLOR9)@
-set color10 = @(source ~/.colors; echo $COLOR10)@
-set color11 = @(source ~/.colors; echo $COLOR11)@
-set color12 = @(source ~/.colors; echo $COLOR12)@
-set color13 = @(source ~/.colors; echo $COLOR13)@
-set color14 = @(source ~/.colors; echo $COLOR14)@
-set color15 = @(source ~/.colors; echo $COLOR15)@
+set color1 @(source ~/.colors; echo $COLOR1)@
+set color2 @(source ~/.colors; echo $COLOR2)@
+set color3 @(source ~/.colors; echo $COLOR3)@
+set color4 @(source ~/.colors; echo $COLOR4)@
+set color5 @(source ~/.colors; echo $COLOR5)@
+set color6 @(source ~/.colors; echo $COLOR6)@
+set color7 @(source ~/.colors; echo $COLOR7)@
+set color8 @(source ~/.colors; echo $COLOR8)@
+set color9 @(source ~/.colors; echo $COLOR9)@
+set color10 @(source ~/.colors; echo $COLOR10)@
+set color11 @(source ~/.colors; echo $COLOR11)@
+set color12 @(source ~/.colors; echo $COLOR12)@
+set color13 @(source ~/.colors; echo $COLOR13)@
+set color14 @(source ~/.colors; echo $COLOR14)@
+set color15 @(source ~/.colors; echo $COLOR15)@
# Interface paths.
-set fifo_dir = /tmp
-set socket_dir = /tmp
-
-set shell_cmd = sh -c
+set comm_dir @([ -n "$XDG_RUNTIME_DIR" ] && echo "$XDG_RUNTIME_DIR/uzbl" || echo "/tmp/uzbl-$USER")@
+set fifo_dir @comm_dir
+set socket_dir @comm_dir
# === General config aliases =================================================
-# Config related events (use the request function):
-# request MODE_CONFIG <mode> <key> = <value>
-set mode_config = request MODE_CONFIG
-# request ON_EVENT <EVENT_NAME> <command>
-set on_event = request ON_EVENT
-# request ON_SET <key/glob> <command>
-set on_set = request ON_SET
-# request MODMAP <From> <To>
-set modmap = request MODMAP
-# request IGNORE_KEY <glob>
-set ignore_key = request IGNORE_KEY
-# request TOGGLE_MODES <mode1> <mode2> ... <moden>
-set toggle_modes = request TOGGLE_MODES
-
-set set_mode = set mode =
-set set_status = set status_message =
+# Config related events (use the event function):
+# event MODE_CONFIG <mode> <key> = <value>
+set mode_config event MODE_CONFIG
+# event ON_EVENT <EVENT_NAME> <command>
+set on_event event ON_EVENT
+# event ON_SET <key/glob> <command>
+set on_set event ON_SET
+# event MODMAP <From> <To>
+set modmap event MODMAP
+# event IGNORE_KEY <glob>
+set ignore_key event IGNORE_KEY
+
+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 = @data_home/uzbl/scripts:@prefix/share/uzbl/examples/data:scripts
+set scripts_dir @data_home:@prefix/share/uzbl/examples/data:scripts
# === Hardcoded handlers =====================================================
-# These handlers can't be moved to the new event system yet as we don't
-# support events that can wait for a response from a script.
-set scheme_handler = sync_spawn @scripts_dir/scheme.py
-#set request_handler = sync_spawn @scripts_dir/request.py
-set authentication_handler = sync_spawn @scripts_dir/auth.py
-set download_handler = sync_spawn /home/vasko/.config/uzbl/scripts/download.sh
-#set download_handler = sync_spawn @scripts_dir/download.sh
+set navigation_handler spawn_sync @scripts_dir/scheme.py
+#set request_handler spawn_sync @scripts_dir/request.py
+set authentication_handler spawn_sync @scripts_dir/auth.py
+set download_handler spawn_sync @scripts_dir/download.sh
# === Dynamic event handlers =================================================
# What to do when a website wants to open a new window:
# Open link in new window
-@on_event NEW_WINDOW sh 'uzbl-browser ${1:+-u "$1"}' %r
+@on_event NEW_WINDOW spawn_sh 'uzbl-browser ${0:+-u "$0"}' %r
# Open in current window (also see the REQ_NEW_WINDOW event handler below)
#@on_event NEW_WINDOW uri %s
# Open in new tab. Other options are NEW_TAB_NEXT, NEW_BG_TAB and NEW_BG_TAB_NEXT.
@@ -81,7 +77,7 @@ set download_handler = sync_spawn /home/vasko/.config/uzbl/scripts/download.s
# What to do when the user requests a new window:
# If your the NEW_WINDOW handler opens the uri in the current window, you'll
# probably want to change this handler to open a new window or tab.
-@on_event REQ_NEW_WINDOW event NEW_WINDOW %s
+@on_event REQ_NEW_WINDOW event @- if (@embedded) "NEW_TAB"; else "NEW_WINDOW" -@ %s
# Load start handler
@on_event LOAD_START @set_status <span foreground="khaki">wait</span>
@@ -89,95 +85,108 @@ set download_handler = sync_spawn /home/vasko/.config/uzbl/scripts/download.s
@on_event LOAD_START @set_mode
# Load commit handlers
-@on_event LOAD_COMMIT @set_status <span foreground="@color2">recv</span>
+@on_event LOAD_COMMIT @set_status <span foreground="green">recv</span>
- # add some javascript to the page for other 'js' and 'script' commands to access later.
-@on_event LOAD_COMMIT js uzbl = {};
-@on_event LOAD_COMMIT script @scripts_dir/formfiller.js
-@on_event LOAD_COMMIT script @scripts_dir/follow.js
-#@on_event LOAD_COMMIT script /home/vasko/.config/uzbl/scripts/privacy.js
+# add some javascript to the page for other 'js' commands to access later.
+@on_event LOAD_COMMIT js page string 'uzbl = {}'
+@on_event LOAD_COMMIT js page file @scripts_dir/formfiller.js
+@on_event LOAD_COMMIT js page file @scripts_dir/follow.js
+@on_event LOAD_COMMIT js page file @scripts_dir/go_input.js
+@on_event LOAD_COMMIT js page file @scripts_dir/navigation.js
# Userscripts/per-site-settings. See the script and the example configuration for details
-#@on_event LOAD_COMMIT spawn @scripts_dir/per-site-settings.py @data_home/uzbl/per-site-settings
+#@on_event LOAD_COMMIT spawn @scripts_dir/per-site-settings.py @data_home/per-site-settings
# Load finish handlers
@on_event LOAD_FINISH @set_status <span foreground="gold">done</span>
@on_event LOAD_FINISH spawn @scripts_dir/history.sh
# Switch to insert mode if a (editable) html form is clicked
-@on_event FOCUS_ELEMENT sh 'if [ "$1" = INPUT -o "$1" = TEXTAREA -o "$1" = SELECT ]; then echo "@set_mode insert" > $UZBL_FIFO; fi' %s
+@on_event FORM_ACTIVE @set_mode insert
+# Switch to insert mode if a (editable) html form gains focus
+@on_event FOCUS_ELEMENT spawn_sh 'if [ "$0" = INPUT -o "$0" = TEXTAREA -o "$0" = SELECT ]; then echo "@set_mode insert" > $UZBL_FIFO; fi' %s
# Switch to command mode if anything else is clicked
@on_event ROOT_ACTIVE @set_mode command
+# Clear input when the page or an element gains focus.
+@on_event ROOT_ACTIVE event KEYCMD_CLEAR
+@on_event FOCUS_ELEMENT event KEYCMD_CLEAR
+
+@on_event AUTHENTICATE spawn @scripts_dir/auth.py "%1" "%2" "%3"
# Example CONFIG_CHANGED event handler
#@on_event CONFIG_CHANGED print Config changed: %1 = %2
# Scroll percentage calculation
-@on_event SCROLL_VERT set scroll_message = \@<(function(curr, min, max, size){if(max == size) return '--'; var p=(curr/(max - size)); return Math.round(10000*p)/100;})(%1,%2,%3,%4)>\@%
+@on_event SCROLL_VERT set scroll_message \@<(function(curr, min, max, size){if(max == size) return '--'; var p=(curr/(max - size)); return Math.round(10000*p)/100;})(%1,%2,%3,%4)>\@%
# === Behaviour and appearance ===============================================
# Custom CSS can be defined here, including link follower hint styles
-set stylesheet_uri = file://@config_home/uzbl/style.css
+set stylesheet_uri file://@config_home/style.css
-set show_status = 0
-set status_top = 0
-set status_background = #1c1c1c
+# If WebKits builtin authentication dialog should be used, if enabling remember
+# to disable external authentication handlers
+set enable_builtin_auth 0
-set modcmd_style = weight="bold" foreground="@color13"
-set keycmd_style = weight="light" foreground="@color13"
-set prompt_style = foreground="@color2"
-set cursor_style = underline="single"
-set completion_style = foreground="@color2"
-set hint_style = weight="bold"
+set show_status 1
+set status_top 0
+set status_background #303030
-set mode_section = <span background="khaki" foreground="black">[\@[\@mode_indicator]\@]</span>
-set keycmd_section = [<span \@prompt_style>\@[\@keycmd_prompt]\@</span><span \@modcmd_style>\@modcmd</span><span \@keycmd_style>\@keycmd</span><span \@completion_style>\@completion_list</span>]
-set progress_section = <span foreground="@color6">\@[\@progress.output]\@</span>
-set scroll_section = <span foreground="@color7">\@[\@scroll_message]\@</span>
-set uri_section = <span foreground="@color5">\@[\@uri]\@</span>
-set name_section = <span foreground="@color8">\@[\@NAME]\@</span>
-set status_section = <span foreground="@color4">\@status_message</span>
-set selected_section = <span foreground="@color3">\@[\@SELECTED_URI]\@</span>
+set modcmd_style weight="bold" foreground="red"
+set keycmd_style weight="light" foreground="red"
+set prompt_style foreground="grey"
+set cursor_style underline="single"
+set completion_style foreground="green"
+set hint_style weight="bold"
-set download_section = <span foreground="white">\@downloads</span>
+set mode_section <span background="black" foreground="@color11">[\@[\@mode_indicator]\@]</span>
+set keycmd_section [<span \@prompt_style>\@[\@keycmd_prompt]\@</span><span \@modcmd_style>\@modcmd</span><span \@keycmd_style>\@keycmd</span><span \@completion_style>\@completion_list</span>]
+set progress_section <span foreground="@color2">\@[\@progress.output]\@</span>
+set scroll_section <span foreground="@color14">\@[\@scroll_message]\@</span>
+set uri_section <span foreground="\@< if(\@frozen) "@color4"; else "@color5"; >\@">\@[\@uri]\@</span>
+set name_section <span foreground="@color7">\@[\@NAME]\@</span>
+set status_section <span foreground="@color8">\@status_message</span>
+set selected_section <span foreground="@color9">\@[\@SELECTED_URI]\@</span>
-set status_format = <span font_family="monospace">@mode_section @keycmd_section @progress_section @name_section @status_section @scroll_section @selected_section @download_section</span>
-set status_format_right = <span font_family="monospace"><span foreground="#666">uri:</span> @uri_section</span>
+set download_section <span foreground="white">\@downloads</span>
-set title_format_long = \@keycmd_prompt \@raw_modcmd \@raw_keycmd \@TITLE - Uzbl browser <\@NAME> \@SELECTED_URI
+set status_format <span font_family="monospace">@mode_section @keycmd_section @progress_section @name_section @status_section @scroll_section @selected_section @download_section</span>
+set status_format_right <span font_family="monospace"><span foreground="#666">uri:</span> @uri_section</span>
+
+set title_format_long \@keycmd_prompt \@raw_modcmd \@raw_keycmd \@TITLE - Uzbl browser <\@NAME> \@SELECTED_URI
# Progress bar config
# %d = done, %p = pending %c = percent done, %i = int done, %s = spinner,
# %t = percent pending, %o = int pending, %r = sprite scroll
-set progress.width = 8
-set progress.format = [%d>%p]%c
-set progress.done = =
-set progress.pending =
+set progress.width 8
+set progress.format [%d>%p]%c
+set progress.done =
+set progress.pending
# === Useragent setup ========================================================
-#set useragent = Uzbl (Webkit @{WEBKIT_MAJOR}.@{WEBKIT_MINOR}) (@(+uname -sm)@ [@ARCH_UZBL])
+#set useragent Uzbl (Webkit @{WEBKIT_MAJOR}.@{WEBKIT_MINOR}) (@(+uname -sm)@ [@ARCH_UZBL])
set useragent = Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5
-#set useragent = Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101 Firefox/31.0
-# === Configure cookie blacklist ========================================================
+# === Configure cookie blacklist =============================================
+
+set cookie_policy always
# Accept 'session cookies' from uzbl.org (when you have a whitelist all other cookies are dropped)
-#request WHITELIST_COOKIE domain 'uzbl.org$' expires '^$'
+#event WHITELIST_COOKIE domain '(^|\.)uzbl\.org$' expires '^$'
-# Drop google analytics tracking cookies (applied after whitelists if any)
-#request BLACKLIST_COOKIE name '^__utm.$'
+# Drop google analytics tracking cookies (applied after whitelists, if any)
+#event BLACKLIST_COOKIE name '^__utm.$'
-# === SSL related configuration ==============================================
+# === Javascript configuration ==============================================
-# Set it to certificates store of your distribution, or your own CAfile.
-set ssl_ca_file = /etc/ssl/certs/ca-certificates.crt
-set ssl_verify = 1
-# Command to toggle ssl_verify value:
-@cbind !ssl = chain 'toggle ssl_verify' 'reload'
-# Example SSL error handler:
-@on_event LOAD_ERROR js var patt=new RegExp('SSL handshake failed'); if (patt.test('%3')) {alert ('%3');}
+# Turn off javascript support
+# set enable_scripts 0
+
+# === Proxy configuration ===================================================
+
+# Direct uzbl at a proxy service (ex. privoxy)
+# set proxy_url http://localhost:8118
# === Key binding configuration ==============================================
# --- Internal modmapping and ignoring ---------------------------------------
@@ -185,7 +194,7 @@ set ssl_verify = 1
#modmap <From> <To>
@modmap <Control> <Ctrl>
@modmap <ISO_Left_Tab> <Shift-Tab>
-#@modmap <space> <Space>
+@modmap <space> <Space>
@modmap <KP_Enter> <Enter>
#ignore_key <glob>
@@ -196,29 +205,29 @@ set ssl_verify = 1
# --- Bind aliases -----------------------------------------------------------
-# request BIND <bind cmd> = <command>
-set bind = request MODE_BIND global
+# event BIND <bind cmd> = <command>
+set bind event MODE_BIND global
-# request MODE_BIND <mode> <bind cmd> = <command>
-set mode_bind = request MODE_BIND
+# event MODE_BIND <mode> <bind cmd> = <command>
+set mode_bind event MODE_BIND
# Insert mode binding alias
-set ibind = @mode_bind insert
+set ibind @mode_bind insert
# Command mode binding alias
-set cbind = @mode_bind command
+set cbind @mode_bind command
# Non-insert mode bindings alias (ebind for edit-bind).
-set ebind = @mode_bind global,-insert
+set ebind @mode_bind global,-insert
# --- Global & keycmd editing binds ------------------------------------------
# Resets keycmd and returns to default mode.
@on_event ESCAPE @set_mode
@on_event ESCAPE event KEYCMD_CLEAR
-@on_event ESCAPE js uzbl.follow.clearHints()
-@on_event ESCAPE search_clear
-@on_event ESCAPE js window.getSelection().removeAllRanges()
+@on_event ESCAPE js page string uzbl.follow.clearHints()
+@on_event ESCAPE search clear
+@on_event ESCAPE js page string window.getSelection().removeAllRanges()
@bind <Escape> = event ESCAPE
@bind <Ctrl>[ = event ESCAPE
@@ -249,7 +258,7 @@ set ebind = @mode_bind global,-insert
# --- Mouse bindings ---------------------------------------------------------
# Middle click open in new window
-@bind <Button2> = sh 'if [ "$1" ]; then echo "event REQ_NEW_WINDOW $1" > "$UZBL_FIFO"; else echo "uri $(xclip -o | sed s/\\\@/%40/g)" > "$UZBL_FIFO"; fi' '\@SELECTED_URI'
+@bind <Button2> = spawn_sh 'if [ "$0" ]; then echo "event REQ_NEW_WINDOW $0" > "$UZBL_FIFO"; else echo "uri $(xclip -o | sed s/\\\@/%40/g)" > "$UZBL_FIFO"; fi' '\@SELECTED_URI'
# --- Keyboard bindings ------------------------------------------------------
@@ -261,85 +270,90 @@ set ebind = @mode_bind global,-insert
#@cbind w = event REQ_NEW_WINDOW
@cbind w<wiki:>_ = spawn /home/vasko/.config/uzbl/scripts/gowiki.pl %s
@cbind W<wiki:>_ = spawn /home/vasko/.config/uzbl/scripts/gowikio.pl %s
+@cbind a<Archwiki:>_ = uri http://wiki.archlinux.org/index.php/Special:Search?search=\@<encodeURIComponent(%r)>\@&go=Go
+
+
# Page movement binds
@cbind j = scroll vertical 20
@cbind k = scroll vertical -20
-@cbind h = scroll horizontal -20
-@cbind l = scroll horizontal 20
+@cbind H = scroll horizontal -20
+@cbind L = scroll horizontal 20
@cbind <Page_Up> = scroll vertical -100%
@cbind <Page_Down> = scroll vertical 100%
@cbind <Ctrl>f = scroll vertical 100%
@cbind <Ctrl>b = scroll vertical -100%
@cbind e = scroll vertical -50%
@cbind s = scroll vertical 50%
-@cbind gg = scroll vertical begin
-@cbind G = scroll vertical end
+@cbind << = scroll vertical begin
+@cbind >> = scroll vertical end
@cbind <Home> = scroll vertical begin
@cbind <End> = scroll vertical end
@cbind ^ = scroll horizontal begin
@cbind $ = scroll horizontal end
-#@cbind <Space> = scroll vertical end
+@cbind <Space> = scroll vertical end
@cbind G<Go To:>_ = scroll vertical %r!
+# The first '_' is literal, so type '_G' to trigger this binding.
@cbind _G<Go To:>_ = scroll horizontal %r!
+# Frozen binding
+@cbind <Shift><Ctrl>F = toggle frozen
+
# Navigation binds
@cbind b = back
@cbind m = forward
+@cbind gb = uri \@< encodeURI(uzbl.navigation.prev()) >\@
+@cbind gf = uri \@< encodeURI(uzbl.navigation.next()) >\@
@cbind S = stop
-@cbind r = reload
-@cbind R = reload_ign_cache
+@cbind r = reload cached
+@cbind R = reload full
# Zoom binds
-@cbind = = zoom_in
-@cbind - = zoom_out
-#3@cbind T = toggle zoom_type
-@cbind 1 = set zoom_level = 1.0
-@cbind 2 = set zoom_level = 2.0
+@cbind + = zoom in
+@cbind - = zoom out
+@cbind T = toggle zoom_type
+@cbind 1 = set zoom_level 1.0
+@cbind 2 = set zoom_level 2.0
# Appearance binds
#@cbind t = toggle show_status
-@cbind t<new:>_ = spawn /home/vasko/.config/uzbl/scripts/gonew.pl %s
-
# Page searching binds
-@cbind /* = search %s
-@cbind ?* = search_reverse %s
+@cbind /* = search find %s
+@cbind ?* = search rfind %s
# Jump to next and previous items
-@cbind n = search
-@cbind N = search_reverse
+@cbind n = search find
+@cbind N = search rfind
# Print pages to a printer
-@cbind <Ctrl>p = hardcopy
+@cbind <Ctrl>p = hardcopy page
# Web searching binds
-@cbind d<Search:>_ = uri https://encrypted.google.com/search?q=\@<encodeURIComponent(%r)>\@&hl=en
-#@cbind dg<DuckDuckGo:>_ = uri http://duckduckgo.com/?q=%s
-@cbind a<Archwiki:>_ = uri https://wiki.archlinux.org/index.php/Special:Search?search=\@<encodeURIComponent(%r)>\@&go=Go
-@cbind T<TSH:>_ = uri http://torrentshack.me/torrents.php?searchstr=\@<encodeURIComponent(%r)>\@&go=Go
-@cbind \\wiki<Wikipedia:>_ = uri https://en.wikipedia.org/w/index.php?title=Special:Search&search=\@<encodeURIComponent(%r)>\@&go=Go
+@cbind gg<Google:>_ = uri http://www.google.com/search?q=\@<encodeURIComponent(%r)>\@
+#@cbind ddg<DuckDuckGo:>_ = uri http://duckduckgo.com/?q=%s
+@cbind \\awiki<Archwiki:>_ = uri http://wiki.archlinux.org/index.php/Special:Search?search=\@<encodeURIComponent(%r)>\@&go=Go
+@cbind \\wiki<Wikipedia:>_ = uri http://en.wikipedia.org/w/index.php?title=Special:Search&search=\@<encodeURIComponent(%r)>\@&go=Go
# Handy binds
# Set function shortcut
-#@cbind s<var:>_<value:>_ = set %1 = %2
+#@cbind s<var:>_<value:>_ = set %1 %2
# Exit binding
@cbind ZZ = exit
-@cbind :wq = exit
-@cbind :_ = %s
# Dump config to stdout
-@cbind !dump = sh 'echo dump_config > "$UZBL_FIFO"'
+@cbind !dump = spawn_sh 'echo dump_config > "$UZBL_FIFO"'
# Reload all variables in the config
-@cbind !reload = sh "sed '/^# === Post-load misc commands/,$d' \"$UZBL_CONFIG\" | grep '^set ' > \"$UZBL_FIFO\""
+@cbind !reload = spawn_sh "sed '/^# === Post-load misc commands/,$d' \"$UZBL_CONFIG\" | grep '^set ' > \"$UZBL_FIFO\""
# Use socat to directly inject commands into uzbl-core and view events
# raised by uzbl-core:
-@cbind <Ctrl><Mod1>t = sh 'xterm -e "socat unix-connect:\"$UZBL_SOCKET\" -"'
-#@cbind <Ctrl><Mod1>t = sh 'urxvt -e socat unix-connect:"$UZBL_SOCKET" -'
+@cbind <Ctrl><Mod1>t = spawn_sh 'xterm -e "socat unix-connect:\"$UZBL_SOCKET\" -"'
+#@cbind <Ctrl><Mod1>t = spawn_sh 'urxvt -e socat unix-connect:"$UZBL_SOCKET" -'
# Uri opening prompts
#@cbind o<uri:>_ = uri %s
@cbind o<goto:>_ = spawn /home/vasko/.config/uzbl/scripts/goto.pl %s
-#@cbind o _ = spawn /home/vasko/.config/uzbl/scripts/goto.js '%s'
+@cbind t<tab:>_ = spawn /home/vasko/.config/uzbl/scripts/gonew.pl %s
+
# Or have it load the current uri into the keycmd for editing
@cbind O<uri:\@uri>_ = uri %s
@@ -361,24 +375,28 @@ set ebind = @mode_bind global,-insert
@cbind zS = event REQ_NEW_WINDOW \@(echo "$UZBL_URI" | sed -e 's/^http:/https:/')\@
# Yanking & pasting binds
-@cbind yu = sh 'echo -n "$UZBL_URI" | xclip'
-@cbind yU = sh 'echo -n "$1" | xclip' '\@SELECTED_URI'
-@cbind yy = sh 'echo -n "$UZBL_TITLE" | xclip'
+@cbind yu = spawn_sh 'echo -n "$UZBL_URI" | xclip'
+@cbind yU = spawn_sh 'echo -n "$0" | xclip' '\@SELECTED_URI'
+@cbind yy = spawn_sh 'echo -n "$UZBL_TITLE" | xclip'
@cbind ys = spawn @scripts_dir/follow.sh \@< uzbl.follow.followSelection('returnuri') >\@ clipboard
+# Selection bindings
+@cbind <Ctrl>a = js (function () { var r = document.createRange(), s = window.getSelection(); r.selectNodeContents(document); s.removeAllRanges(); s.addRange(r); })();
+@cbind <Ctrl>c = sh 'echo '\@< window.getSelection().toString().replace(/'/g, "\\'"); >\@' | xclip -selection clipboard -i'
+
# Clone current window
@cbind c = event REQ_NEW_WINDOW \@uri
# Go the page from primary selection
-@cbind p = sh 'echo "uri $(xclip -o | sed s/\\\@/%40/g)" > "$UZBL_FIFO"'
+@cbind p = spawn_sh 'echo "uri $(xclip -o | sed s/\\\@/%40/g)" > "$UZBL_FIFO"'
# Go to the page in clipboard
-@cbind P = sh 'echo "uri $(xclip -selection clipboard -o | sed s/\\\@/%40/g)" > "$UZBL_FIFO"'
+@cbind P = spawn_sh 'echo "uri $(xclip -selection clipboard -o | sed s/\\\@/%40/g)" > "$UZBL_FIFO"'
# Start a new uzbl instance from the page in primary selection
-@cbind 'p = sh 'echo "event REQ_NEW_WINDOW $(xclip -o)" > "$UZBL_FIFO"'
+@cbind 'p = spawn_sh 'echo "event REQ_NEW_WINDOW $(xclip -o)" > "$UZBL_FIFO"'
# paste primary selection into keycmd at the cursor position
-@bind <Shift><Insert> = sh 'echo "event INJECT_KEYCMD $(xclip -o | sed s/\\\@/%40/g)" > "$UZBL_FIFO"'
+@bind <Shift><Insert> = spawn_sh 'echo "event INJECT_KEYCMD $(xclip -o | sed s/\\\@/%40/g)" > "$UZBL_FIFO"'
# Bookmark inserting binds
-@cbind <Ctrl>m<tags:>_ = sh 'echo "$UZBL_URI $1" >> "$XDG_DATA_HOME"/uzbl/bookmarks' '%s'
+@cbind <Ctrl>m<tags:>_ = spawn_sh 'echo "$UZBL_URI $0" >> "@data_home/bookmarks"' '%s'
# Or use a script to insert a bookmark.
@cbind M = spawn @scripts_dir/insert_bookmark.sh
@@ -392,48 +410,66 @@ set ebind = @mode_bind global,-insert
# Link following (similar to vimperator and konqueror)
# Set custom keys you wish to use for navigation. Some common examples:
-set follow_hint_keys = 0123456789
-#set follow_hint_keys = qwerty
-#set follow_hint_keys = asdfghjkl;
-#set follow_hint_keys = thsnd-rcgmvwb/;789aefijkopquxyz234
-
-@cbind <space>* = spawn @scripts_dir/follow.sh \@< uzbl.follow("\@follow_hint_keys", "%s", 'click') >\@
-@cbind f* = spawn @scripts_dir/follow.sh \@< uzbl.follow("\@follow_hint_keys", "%s", 'click') >\@
-@cbind F* = spawn @scripts_dir/follow.sh \@< uzbl.follow("\@follow_hint_keys", "%s", 'newwindow') >\@
-#@cbind gL* = spawn @scripts_dir/follow.sh \@< uzbl.follow("\@follow_hint_keys", "%s", 'returnuri') >\@ set
-@cbind gl* = spawn @scripts_dir/follow.sh \@< uzbl.follow("\@follow_hint_keys", "%s", 'returnuri') >\@ clipboard
+set follow_hint_keys 0123456789
+#set follow_hint_keys qwerty
+#set follow_hint_keys asdfghjkl;
+#set follow_hint_keys thsnd-rcgmvwb/;789aefijkopquxyz234
+
+# follow links
+# The structure for these calls is to call a shell script (follow.sh) with the
+# output of some JavaScript code (follow.js) which gets a URI from the page to
+# act on. The first argument to followLinks() is the list of characters to use
+# for labelling links, the second is the currently entered keys, and the third
+# is the 'mode' to use. The modes are 'click', 'newwindow', and 'returnuri'.
+# The 'click' and 'newwindow' modes are handled in follow.js completely. When
+# using 'returnuri' the second argument to follow.sh is the action to use for
+# the URI. Currently implemented are 'set' (uses the 'uri' command),
+# 'newwindow' (uses the REQ_NEW_WINDOW event), and 'clipboard' (copies the URI
+# to the clipboard).
+
+# follow hint keys:
+# fl -> emulate a click on the link
+# Fl -> open in a new window
+# fL -> take the url and navigate directly to it
+# FL -> copy the url to the clipboard
+@cbind f* = spawn @scripts_dir/follow.sh \@< uzbl.follow.followLinks("\@follow_hint_keys", "%s", 'click') >\@
+@cbind F* = spawn @scripts_dir/follow.sh \@< uzbl.follow.followLinks("\@follow_hint_keys", "%s", 'newwindow') >\@
+#@cbind fL* = spawn @scripts_dir/follow.sh \@< uzbl.follow.followLinks("\@follow_hint_keys", "%s", 'returnuri') >\@ set
+#@cbind FL* = spawn @scripts_dir/follow.sh \@< uzbl.follow.followLinks("\@follow_hint_keys", "%s", 'returnuri') >\@ clipboard
@cbind gi = spawn @scripts_dir/go_input.sh
-#@cbind fs = spawn @scripts_dir/follow.sh \@< uzbl.follow.followSelection('returnuri') >\@ set
-#@cbind fS = spawn @scripts_dir/follow.sh \@< uzbl.follow.followSelection('click') >\@
-#@cbind Fs = spawn @scripts_dir/follow.sh \@< uzbl.follow.followSelection('newwindow') >\@
+# follow selected link:
+# fs -> emulate a click on the link
+# Fs -> open in a new window
+# fS -> take the url and navigate directly to it
+# FS -> copy the url to the clipboard
+@cbind d = spawn @scripts_dir/follow.sh \@< uzbl.follow.followSelection('click') >\@
+@cbind D = spawn @scripts_dir/follow.sh \@< uzbl.follow.followSelection('newwindow') >\@
+#@cbind Fs = spawn @scripts_dir/follow.sh \@< uzbl.follow.followSelection('returnuri') >\@ set
#@cbind FS = spawn @scripts_dir/follow.sh \@< uzbl.follow.followSelection('returnuri') >\@ clipboard
#
-#@cbind ft* = spawn @scripts_dir/follow.sh \@< uzbl.follow.followTextContent("%s", 'returnuri') >\@ set
-#@cbind fT* = spawn @scripts_dir/follow.sh \@< uzbl.follow.followTextContent("%s", 'click') >\@
-#@cbind Ft* = spawn @scripts_dir/follow.sh \@< uzbl.follow.followTextContent("%s", 'newwindow') >\@
+# follow by link text (i.e., <a>foo</a> is selected with "ftfoo" or "'foo")
+# ft -> emulate a click on the link
+# Ft -> open in a new window
+# fT -> take the url and navigate directly to it
+# FT -> copy the url to the clipboard
+#@cbind ft* = spawn @scripts_dir/follow.sh \@< uzbl.follow.followTextContent("%s", 'click') >\@
+#@cbind fT* = spawn @scripts_dir/follow.sh \@< uzbl.follow.followTextContent("%s", 'newwindow') >\@
+#@cbind Ft* = spawn @scripts_dir/follow.sh \@< uzbl.follow.followTextContent("%s", 'returnuri') >\@ set
#@cbind FT* = spawn @scripts_dir/follow.sh \@< uzbl.follow.followTextContent("%s", 'returnuri') >\@ clipboard
-@cbind '* = spawn @scripts_dir/follow.sh \@< uzbl.follow.followTextContent("%s", 'click') >\@
-
# Form filler binds
# This script allows you to configure (per domain) values to fill in form
# fields (eg login information) and to fill in these values automatically.
# This implementation allows you to save multiple profiles for each form
# (think about multiple accounts on some website).
-set formfiller = spawn @scripts_dir/formfiller.sh
+set formfiller spawn @scripts_dir/formfiller.sh
@cbind ze = @formfiller edit
@cbind zn = @formfiller new
@cbind zl = @formfiller load
@cbind zo = @formfiller once
-# --- Uzbl tabbed binds ------------------------------------------------------
-
-# Tab opening
-@cbind gn = event NEW_TAB
-@cbind gN = event NEW_TAB_NEXT
-#@cbind go<uri:>_ = event NEW_TAB %s
-#@cbind gO<uri:>_ = event NEW_TAB_NEXT %s
+# === Short Cuts =============================================================
@cbind gop = uri https://sites.google.com/a/skola.malmo.se/ib12-physics-hl/
@cbind gob = uri https://sites.google.com/a/skola.malmo.se/ib12slbio/
@cbind goc = uri https://sites.google.com/a/skola.malmo.se/hl-chemistry-ib12/
@@ -447,21 +483,34 @@ set formfiller = spawn @scripts_dir/formfiller.sh
@cbind gof = uri https://www.facebook.com/
@cbind go9 = uri https://www.9gag.com/
-# Closing / resting
+
+
+# --- Uzbl tabbed binds ------------------------------------------------------
+
+# Tab opening
+@cbind gn = event NEW_TAB
+@cbind gN = event NEW_TAB_NEXT
+#@cbind go<uri:>_ = event NEW_TAB %s
+#@cbind gO<uri:>_ = event NEW_TAB_NEXT %s
+
+# Closing / resetting
@cbind x = exit
@cbind gQ = event CLEAN_TABS
# Tab navigating
@cbind g< = event FIRST_TAB
@cbind g> = event LAST_TAB
-@cbind gt = event NEXT_TAB
-@cbind gT = event PREV_TAB
+@cbind l = event NEXT_TAB
+@cbind h = event PREV_TAB
@cbind gi<index:>_ = event GOTO_TAB %s
+@cbind <Ctrl><Left> = event MOVE_CURRENT_TAB_LEFT
+@cbind <Ctrl><Right> = event MOVE_CURRENT_TAB_RIGHT
+@cbind gm<index:>_ = event MOVE_CURRENT_TAB %s
# Preset loading
-set preset = event PRESET_TABS
+set preset event PRESET_TABS
@cbind gs<preset save:>_ = @preset save %s
-#@cbind glo<preset load:>_ = @preset load %s
+@cbind glo<preset load:>_ = @preset load %s
@cbind gd<preset del:>_ = @preset del %s
# This doesn't work right now.
#@cbind gli = @preset list
@@ -469,31 +518,31 @@ set preset = event PRESET_TABS
# === Context menu items =====================================================
# Default context menu
-menu_add Google = set uri = http://google.com
-menu_add Go Home = set uri = http://uzbl.org
-menu_separator separator_1
-menu_add Quit uzbl = exit
+menu add link Google "uri http://google.com"
+menu add link "Go Home" "uri http://uzbl.org"
+menu add_separator separator_1
+menu add link "Quit uzbl" exit
# Link context menu
-menu_link_add Print Link = print \@SELECTED_URI
+menu add link "Print Link" "print \@SELECTED_URI"
# === Mode configuration =====================================================
# Define some mode specific uzbl configurations.
-set command = @mode_config command
-set insert = @mode_config insert
-set stack = @mode_config stack
+set command @mode_config command
+set insert @mode_config insert
+set stack @mode_config stack
# Command mode config.
@command keycmd_style = foreground="@color13"
-@command status_background = #1c1c1c
+@command status_background = #202020
@command mode_indicator = Cmd
@command keycmd_events = 1
@command forward_keys = 0
@command modcmd_updates = 1
# Insert mode config.
-@insert status_background = #1c1c1c
+@insert status_background = #303030
@insert mode_indicator = Ins
@insert forward_keys = 1
@insert keycmd_events = 0
@@ -501,24 +550,30 @@ set stack = @mode_config stack
# Multi-stage-binding mode config.
@stack keycmd_style = foreground="@color13"
-@stack status_background = #1c1c1c
+@stack status_background = #202020
@stack mode_indicator = Bnd
-@stack prompt_style = foreground="#888" weight="light"
+@stack prompt_style = foreground="@color12" weight="light"
@stack keycmd_events = 1
@stack modcmd_updates = 1
@stack forward_keys = 0
-set default_mode = command
+set default_mode command
+
+# === SSL related configuration ==============================================
+
+# Set it to certificates store of your distribution, or your own CAfile.
+set ssl_ca_file /etc/ssl/certs/ca-certificates.crt
+set ssl_policy fail
+# Command to toggle ssl_policy value:
+@cbind !ssl = chain 'toggle ssl_policy fail ignore' 'reload'
+# Example SSL error handler:
+@on_event LOAD_ERROR js page string 'if (/SSL handshake failed/.test("%3")) {alert ("%3");}'
# === Post-load misc commands ================================================
-sync_spawn_exec @scripts_dir/load_cookies.sh
-sync_spawn_exec @scripts_dir/load_cookies.sh @data_home/uzbl/session-cookies.txt
+spawn_sync_exec @scripts_dir/load_cookies.sh
+spawn_sync_exec @scripts_dir/load_cookies.sh @data_home/session-cookies.txt
# Set the "home" page.
-set uri = uzbl.org/doesitwork/@COMMIT
+uri uzbl.org/doesitwork/@COMMIT
# vim: set fdm=syntax:
-
-# Autozoom
-#@on_event GEOMETRY_CHANGED script ~/.config/uzbl/scripts/dynzoom.py
-