#
# ~/.config/uzbl/config
#
# Credits:
# [1] VimFx: https://addons.mozilla.org/en-US/firefox/addon/vimfx/
#     For some of the keybindings.
#
# Aaron LI
# Created: 2016-04-10
#

# Example uzbl config. All settings are optional. You can use uzbl without
# any config at all (but it won't do much).

# === Core settings ==========================================================

# common directory locations
set prefix      @(echo $UZBL_PREFIX)@
set data_home   @(echo $XDG_DATA_HOME/uzbl)@
set data_dirs   @(echo $(echo ${XDG_DATA_DIRS}|sed 's%:%/uzbl:%g')/uzbl)@
set cache_home  @(echo $XDG_CACHE_HOME/uzbl)@
set config_home @(echo $XDG_CONFIG_HOME/uzbl)@
set local_storage_path @data_home/databases/

# Interface paths.
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 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:@data_dirs:@prefix/share/uzbl/examples/data:scripts

# Search case-insensitive by default
search option case_insensitive

# === Hardcoded handlers =====================================================

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     spawn_sh 'uzbl-browser ${0:-"$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.
#@on_event   NEW_WINDOW     event NEW_TAB %s
@on_event   NEW_WINDOW     event NEW_TAB_NEXT %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 @- if (@embedded) "NEW_TAB"; else "NEW_WINDOW" -@ %s

# Load start handler
@on_event   LOAD_START     @set_status <span foreground="khaki">wait</span>
# Reset the keycmd on navigation
@on_event   LOAD_START     @set_mode

# Load commit handlers
@on_event   LOAD_COMMIT    @set_status <span foreground="green">recv</span>

# 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/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   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

# 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)>\@%

# === Behaviour and appearance ===============================================

# Custom CSS can be defined here, including link follower hint styles
css add file://@config_home/style.css

set forward_keys      0

set show_status       1
set status_top        0
set status_background #303030

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 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="#606060">\@[\@progress.output]\@</span>
set scroll_section    <span foreground="#606060">\@[\@scroll_message]\@</span>
set uri_section       <span foreground="\@< if(\@frozen) "#00BFFF"; else "#99FF66"; >\@">\@[\@uri]\@</span>
set name_section      <span foreground="khaki">\@[\@NAME]\@</span>
set status_section    <span foreground="orange">\@status_message</span>
set selected_section  <span foreground="#606060">\@[\@SELECTED_URI]\@</span>

set download_section  <span foreground="white">\@downloads</span>
set proxy_section     <span foreground="cyan">\@[\@proxy_url]\@</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 status_format_right <span font_family="monospace"><span foreground="#666">proxy:</span> @proxy_section <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

# === Useragent setup ========================================================

set useragent Mozilla/5.0 (X11; @(+uname -sm)@) AppleWebKit/602.1 (KHTML; like Gecko) Uzbl/@COMMIT

# === Configure cookie blacklist =============================================

set cookie_policy always

# Accept 'session cookies' from uzbl.org (when you have a whitelist all other cookies are dropped)
#event WHITELIST_COOKIE domain '(^|\.)uzbl\.org$' expires '^$'

# Drop google analytics tracking cookies (applied after whitelists, if any)
#event BLACKLIST_COOKIE name '^__utm.$'

# === Javascript configuration  ==============================================

# Turn off javascript support
# set enable_scripts 0

# === Key binding configuration ==============================================
# --- Internal modmapping and ignoring ---------------------------------------

#modmap <From>          <To>
@modmap <Control>       <Ctrl>
@modmap <ISO_Left_Tab>  <Shift-Tab>
@modmap <KP_Enter>      <Enter>
@modmap " "             <Space>

#ignore_key <glob>
@ignore_key <ISO_*>
@ignore_key <Shift>
@ignore_key <Multi_key>
@ignore_key <Mod2>

# --- Bind aliases -----------------------------------------------------------

# event MODE_BIND <mode> <bind cmd> = <command>
set mode_bind event MODE_BIND

# event BIND <bind cmd> = <command>
set bind      @mode_bind global

# Insert mode binding alias
set ibind     @mode_bind insert

# Command mode binding alias
set cbind     @mode_bind command

# Non-insert mode bindings alias (ebind for edit-bind).
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 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

# Commands for editing and traversing the keycmd.
@ebind  <Return>     = event KEYCMD_EXEC_CURRENT
@ebind  <Home>       = event SET_CURSOR_POS 0
@ebind  <End>        = event SET_CURSOR_POS -1
@ebind  <Left>       = event SET_CURSOR_POS -
@ebind  <Right>      = event SET_CURSOR_POS +
@ebind  <BackSpace>  = event KEYCMD_BACKSPACE
@ebind  <Delete>     = event KEYCMD_DELETE
@ebind  <Tab>        = event START_COMPLETION
# Readline-ish bindings.
@ebind  <Ctrl>w      = event KEYCMD_STRIP_WORD \ -./&?=
@ebind  <Ctrl>u      = event SET_KEYCMD
@ebind  <Ctrl>a      = event SET_CURSOR_POS 0
@ebind  <Ctrl>e      = event SET_CURSOR_POS -1

@ebind <Up>          = event HISTORY_PREV
@ebind <Down>        = event HISTORY_NEXT
@ebind <Ctrl>r<search:>_ = event HISTORY_SEARCH %s
set history_disable_easter_egg 1
# Keycmd injection/append examples.
#@ebind  <Ctrl>su = event INJECT_KEYCMD \@uri
#@ebind  <Ctrl>st = event INJECT_KEYCMD \@title
#@ebind  <Ctrl>du = event APPEND_KEYCMD \@uri
#@ebind  <Ctrl>dt = event APPEND_KEYCMD \@title

# --- Mouse bindings ---------------------------------------------------------

# Middle click open in new window
@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 ------------------------------------------------------

# With this command you can enter in any command at runtime when prefixed with
# a colon.
@cbind    :_        = %s

# open a new window or a new tab (see the on_event NEW_WINDOW settings above)
@cbind  w            = event REQ_NEW_WINDOW

# Page movement binds
#@cbind  j            = scroll vertical 20
#@cbind  k            = scroll vertical -20
#@cbind  h            = scroll horizontal -20
#@cbind  l            = scroll horizontal 20
@cbind  j            = scroll vertical 50
@cbind  k            = scroll vertical -50
@cbind  h            = scroll horizontal -50
@cbind  l            = scroll horizontal 50
@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  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 100%
#@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  H   = back
@cbind  L   = forward
@cbind  gb  = uri \@< encodeURI(uzbl.navigation.prev()) >\@
@cbind  gf  = uri \@< encodeURI(uzbl.navigation.next()) >\@
@cbind  S   = stop
@cbind  r   = reload cached
@cbind  R   = reload full

# Zoom binds
@cbind  +   = zoom in
@cbind  -   = zoom out
@cbind  T   = toggle zoom_text_only
@cbind  1   = set zoom_level 1.0
@cbind  2   = set zoom_level 2.0

# Appearance binds
#@cbind  t   = toggle show_status
@cbind  z   = toggle show_status

# Page searching binds
@cbind  /*                           = search find %s
@cbind  <Ctrl>/<search:>_            = search find %s
@cbind  ?*                           = search rfind %s
@cbind  <Ctrl>?<'reverse search':>_  = search rfind %s
# Jump to next and previous items
@cbind  n   = search next
@cbind  N   = search prev

# Print pages to a printer
@cbind  <Ctrl>p = hardcopy page

# Web searching binds
@cbind  gG<Google:>_         = uri https://www.google.com/search?q=\@<encodeURIComponent(%r)>\@
@cbind  gD<DuckDuckGo:>_     = uri https://duckduckgo.com/?q=%s
@cbind  gW<Wikipedia:>_      = uri https://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
# Exit binding
@cbind  ZZ                 = exit
# Dump config to stdout
@cbind  !dump              = spawn_sh 'echo dump_config > "$UZBL_FIFO"'
# Reload all variables in the config
@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  = 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
# Or have it load the current uri into the keycmd for editing
@cbind  O<uri:\@uri>_  = uri %s

# Mode setting binds
@cbind  i        = @set_mode insert
@bind   <Ctrl>i  = @set_mode insert

# Hard-bound bookmarks
@cbind  gh  = uri http://www.uzbl.org

# New window binds
@cbind  gw  = event REQ_NEW_WINDOW

# SSL-ify bindings
@cbind  zs  = uri \@(echo "$UZBL_URI" | sed -e 's/^http:/https:/')\@
@cbind  zS  = event REQ_NEW_WINDOW \@(echo "$UZBL_URI" | sed -e 's/^http:/https:/')\@

# Yanking & pasting binds
@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   = spawn_sh 'echo "uri $(xclip -o | sed s/\\\@/%40/g)" > "$UZBL_FIFO"'
# Go to the page in clipboard
@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"  = spawn_sh 'echo "event REQ_NEW_WINDOW $(xclip -o)" > "$UZBL_FIFO"'
# paste primary selection into keycmd at the cursor position
@bind <Shift><Insert> = spawn_sh 'echo "event INJECT_KEYCMD $(xclip -o | sed s/\\\@/%40/g)" > "$UZBL_FIFO"'

# Bookmark inserting binds
@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

# Bookmark/history loading
@cbind  U  = spawn @scripts_dir/load_url_from_history.sh
@cbind  u  = spawn @scripts_dir/load_url_from_bookmarks.sh

# Temporary bookmarks
@cbind  <Ctrl>d  = spawn @scripts_dir/insert_temp.sh
@cbind  D        = spawn @scripts_dir/load_url_from_temps.sh

# 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

# 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  fl*  = spawn @scripts_dir/follow.sh \@< uzbl.follow.followLinks("\@follow_hint_keys", "%s", 'click') >\@
@cbind  Fl*  = spawn @scripts_dir/follow.sh \@< uzbl.follow.followLinks("\@follow_hint_keys", "%s", 'newwindow') >\@ 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  fi   = spawn @scripts_dir/go_input.sh

# follow selected link:
# NOTE "selected" refers to marked text (e.g. via mouse or search), not by simply "tabbing" to a certain 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  fs  = spawn @scripts_dir/follow.sh \@< uzbl.follow.followSelection('click') >\@
@cbind  fS  = spawn @scripts_dir/follow.sh \@< uzbl.follow.followSelection('newwindow') >\@ 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

# 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') >\@ 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

# 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
@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  t               = event NEW_TAB
@cbind  T               = event NEW_TAB_NEXT
@cbind  go<uri:>_       = event NEW_TAB %s
@cbind  gO<uri:>_       = event NEW_TAB_NEXT %s

# Closing / resetting
@cbind  gC              = exit
@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  J               = event NEXT_TAB
@cbind  K               = 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
@cbind  gs<"preset save":>_   = @preset save %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

# === Context menu items =====================================================

# Default context menu
menu add link Google "uri https://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 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

# Command mode config.
@command  keycmd_style        foreground="red"
@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   #303030
@insert   mode_indicator      Ins
@insert   forward_keys        1
@insert   keycmd_events       0
@insert   modcmd_updates      0

# Multi-stage-binding mode config.
@stack    keycmd_style        foreground="red"
@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

# === SSL related configuration ==============================================

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 ================================================
spawn_sync_exec @scripts_dir/load_cookies.sh
spawn_sync_exec @scripts_dir/load_cookies.sh @(echo "${UZBL_SESSION_COOKIE_FILE:-@data_home/session-cookies.txt}")@

# Set the "home" page.
#uri uzbl.org/doesitwork/@COMMIT


# vim: set ts=8 sw=4 tw=0 fenc=utf-8 ft=conf: #