aboutsummaryrefslogtreecommitdiffstats
path: root/_config/uzbl
diff options
context:
space:
mode:
authorAaron LI <aaronly.me@outlook.com>2016-06-19 13:29:45 +0800
committerAaron LI <aaronly.me@outlook.com>2016-06-19 13:29:45 +0800
commitb956b888869d4541477843c5c32ed2fca3d59821 (patch)
treed621250f70f224a293c2fc717e03cd51a6950399 /_config/uzbl
parent889393d10e1f90130483988f656c193cf3cecfa2 (diff)
downloaddotfiles-b956b888869d4541477843c5c32ed2fca3d59821.tar.bz2
Add uzbl browser configuration file
Diffstat (limited to '_config/uzbl')
-rw-r--r--_config/uzbl/config552
1 files changed, 552 insertions, 0 deletions
diff --git a/_config/uzbl/config b/_config/uzbl/config
new file mode 100644
index 0000000..3197adc
--- /dev/null
+++ b/_config/uzbl/config
@@ -0,0 +1,552 @@
+#
+# ~/.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: #