Merge remote-tracking branch 'origin/master' into layout

This commit is contained in:
Bruno Oliveira 2015-04-05 12:27:55 -03:00
commit 3864eff0be
5 changed files with 1125 additions and 1029 deletions

View File

@ -7,7 +7,7 @@
|<<general-ignore-case,ignore-case>>|Whether to find text on a page case-insensitively. |<<general-ignore-case,ignore-case>>|Whether to find text on a page case-insensitively.
|<<general-wrap-search,wrap-search>>|Whether to wrap finding text to the top when arriving at the end. |<<general-wrap-search,wrap-search>>|Whether to wrap finding text to the top when arriving at the end.
|<<general-startpage,startpage>>|The default page(s) to open at the start, separated by commas. |<<general-startpage,startpage>>|The default page(s) to open at the start, separated by commas.
|<<general-default-page,default-page>>|The page to open if :open -t/-b/-w is used without URL. |<<general-default-page,default-page>>|The page to open if :open -t/-b/-w is used without URL. Use `about:blank` for a blank page.
|<<general-auto-search,auto-search>>|Whether to start a search when something else than a URL is entered. |<<general-auto-search,auto-search>>|Whether to start a search when something else than a URL is entered.
|<<general-auto-save-config,auto-save-config>>|Whether to save the config automatically on quit. |<<general-auto-save-config,auto-save-config>>|Whether to save the config automatically on quit.
|<<general-auto-save-interval,auto-save-interval>>|How often (in milliseconds) to auto-save config/cookies/etc. |<<general-auto-save-interval,auto-save-interval>>|How often (in milliseconds) to auto-save config/cookies/etc.
@ -114,8 +114,8 @@
|============== |==============
|Setting|Description |Setting|Description
|<<storage-download-directory,download-directory>>|The directory to save downloads to. An empty value selects a sensible os-specific default. Will expand environment variables. |<<storage-download-directory,download-directory>>|The directory to save downloads to. An empty value selects a sensible os-specific default. Will expand environment variables.
|<<storage-maximum-pages-in-cache,maximum-pages-in-cache>>|The maximum number of pages to hold in the memory page cache. |<<storage-maximum-pages-in-cache,maximum-pages-in-cache>>|The maximum number of pages to hold in the global memory page cache.
|<<storage-object-cache-capacities,object-cache-capacities>>|The capacities for the memory cache for dead objects such as stylesheets or scripts. Syntax: cacheMinDeadCapacity, cacheMaxDead, totalCapacity. |<<storage-object-cache-capacities,object-cache-capacities>>|The capacities for the global memory cache for dead objects such as stylesheets or scripts. Syntax: cacheMinDeadCapacity, cacheMaxDead, totalCapacity.
|<<storage-offline-storage-default-quota,offline-storage-default-quota>>|Default quota for new offline storage databases. |<<storage-offline-storage-default-quota,offline-storage-default-quota>>|Default quota for new offline storage databases.
|<<storage-offline-web-application-cache-quota,offline-web-application-cache-quota>>|Quota for the offline web application cache. |<<storage-offline-web-application-cache-quota,offline-web-application-cache-quota>>|Quota for the offline web application cache.
|<<storage-offline-storage-database,offline-storage-database>>|Whether support for the HTML 5 offline storage feature is enabled. |<<storage-offline-storage-database,offline-storage-database>>|Whether support for the HTML 5 offline storage feature is enabled.
@ -269,7 +269,7 @@ Default: +pass:[https://www.duckduckgo.com]+
[[general-default-page]] [[general-default-page]]
=== default-page === default-page
The page to open if :open -t/-b/-w is used without URL. The page to open if :open -t/-b/-w is used without URL. Use `about:blank` for a blank page.
Default: +pass:[${startpage}]+ Default: +pass:[${startpage}]+
@ -990,7 +990,7 @@ Default: empty
[[storage-maximum-pages-in-cache]] [[storage-maximum-pages-in-cache]]
=== maximum-pages-in-cache === maximum-pages-in-cache
The maximum number of pages to hold in the memory page cache. The maximum number of pages to hold in the global memory page cache.
The Page Cache allows for a nicer user experience when navigating forth or back to pages in the forward/back history, by pausing and resuming up to _n_ pages. The Page Cache allows for a nicer user experience when navigating forth or back to pages in the forward/back history, by pausing and resuming up to _n_ pages.
@ -1000,7 +1000,7 @@ Default: empty
[[storage-object-cache-capacities]] [[storage-object-cache-capacities]]
=== object-cache-capacities === object-cache-capacities
The capacities for the memory cache for dead objects such as stylesheets or scripts. Syntax: cacheMinDeadCapacity, cacheMaxDead, totalCapacity. The capacities for the global memory cache for dead objects such as stylesheets or scripts. Syntax: cacheMinDeadCapacity, cacheMaxDead, totalCapacity.
The _cacheMinDeadCapacity_ specifies the minimum number of bytes that dead objects should consume when the cache is under pressure. The _cacheMinDeadCapacity_ specifies the minimum number of bytes that dead objects should consume when the cache is under pressure.

View File

@ -13,7 +13,7 @@
height="640" height="640"
id="svg2" id="svg2"
sodipodi:version="0.32" sodipodi:version="0.32"
inkscape:version="0.48.5 r10040" inkscape:version="0.91 r13725"
version="1.0" version="1.0"
sodipodi:docname="cheatsheet.svg" sodipodi:docname="cheatsheet.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape" inkscape:output_extension="org.inkscape.output.svg.inkscape"
@ -32,21 +32,22 @@
objecttolerance="10" objecttolerance="10"
inkscape:pageopacity="0.0" inkscape:pageopacity="0.0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:zoom="1.2432572" inkscape:zoom="0.8791156"
inkscape:cx="510.06077" inkscape:cx="327.65084"
inkscape:cy="514.90115" inkscape:cy="233.0095"
inkscape:document-units="px" inkscape:document-units="px"
inkscape:current-layer="layer1" inkscape:current-layer="layer1"
width="1024px" width="1024px"
height="640px" height="640px"
showgrid="false" showgrid="false"
inkscape:window-width="1024" inkscape:window-width="1366"
inkscape:window-height="723" inkscape:window-height="768"
inkscape:window-x="0" inkscape:window-x="0"
inkscape:window-y="0" inkscape:window-y="0"
showguides="true" showguides="true"
inkscape:guide-bbox="true" inkscape:guide-bbox="true"
inkscape:window-maximized="1"> inkscape:window-maximized="0"
inkscape:snap-text-baseline="true">
<inkscape:grid <inkscape:grid
id="GridFromPre046Settings" id="GridFromPre046Settings"
type="xygrid" type="xygrid"
@ -1454,23 +1455,27 @@
x="714.29938" x="714.29938"
y="108.87096">)</tspan></text> y="108.87096">)</tspan></text>
<rect <rect
ry="4.3646927" ry="3.3457608"
y="363.55695" y="363.19348"
x="238.30771" x="238.30771"
height="58.443066" height="44.799603"
width="361.69229" width="361.69229"
id="rect5017" id="rect5017"
style="font-size:18px;fill:#babdb6;fill-opacity:1;stroke:none" /> style="font-size:18px;fill:#babdb6;fill-opacity:1;stroke:none" />
<g
id="g4061"
transform="translate(0,-6.7232151)">
<text <text
xml:space="preserve" id="text5021"
style="font-size:13px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono"
x="245.32532"
y="395.78867" y="395.78867"
id="text5021"><tspan
sodipodi:role="line"
id="tspan5023"
x="245.32532" x="245.32532"
y="395.78867">Space</tspan></text> style="font-style:normal;font-weight:normal;font-size:13px;font-family:'DejaVu Sans Mono';fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
y="395.78867"
x="245.32532"
id="tspan5023"
sodipodi:role="line">Space</tspan></text>
</g>
<text <text
id="text6971" id="text6971"
y="317.98907" y="317.98907"
@ -2624,8 +2629,8 @@
<flowRoot <flowRoot
xml:space="preserve" xml:space="preserve"
id="flowRoot5691" id="flowRoot5691"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
transform="translate(0,-14.539167)"><flowRegion transform="translate(0,-38.539167)"><flowRegion
id="flowRegion5693"><rect id="flowRegion5693"><rect
id="rect5695" id="rect5695"
width="322.5" width="322.5"
@ -2634,8 +2639,8 @@
y="448.75" y="448.75"
style="fill:#000000" /></flowRegion><flowPara style="fill:#000000" /></flowRegion><flowPara
id="flowPara5697" id="flowPara5697"
style="font-size:10px;font-weight:bold;fill:#000000;-inkscape-font-specification:Sans Bold"><flowSpan style="font-weight:bold;font-size:10px;-inkscape-font-specification:'Sans Bold';fill:#000000"><flowSpan
style="font-weight:bold;fill:#ff0000;-inkscape-font-specification:Sans Bold" style="font-weight:bold;-inkscape-font-specification:'Sans Bold';fill:#ff0000"
id="flowSpan5705">(1)</flowSpan> copying/yanking:</flowPara><flowPara id="flowSpan5705">(1)</flowSpan> copying/yanking:</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara5701">yy - copy/yank URL</flowPara><flowPara id="flowPara5701">yy - copy/yank URL</flowPara><flowPara
@ -2647,10 +2652,10 @@
id="flowPara5709">yT - copy title to selection</flowPara><flowPara id="flowPara5709">yT - copy title to selection</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara5711" /></flowRoot> <flowRoot id="flowPara5711" /></flowRoot> <flowRoot
transform="translate(0.713591,62.823906)" transform="translate(0.713591,38.823906)"
xml:space="preserve" xml:space="preserve"
id="flowRoot5691-0" id="flowRoot5691-0"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><flowRegion style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"><flowRegion
id="flowRegion5693-7"><rect id="flowRegion5693-7"><rect
id="rect5695-0" id="rect5695-0"
width="322.5" width="322.5"
@ -2659,8 +2664,8 @@
y="448.75" y="448.75"
style="fill:#000000" /></flowRegion><flowPara style="fill:#000000" /></flowRegion><flowPara
id="flowPara5697-9" id="flowPara5697-9"
style="font-size:10px;font-weight:bold;fill:#000000;-inkscape-font-specification:Sans Bold"><flowSpan style="font-weight:bold;font-size:10px;-inkscape-font-specification:'Sans Bold';fill:#000000"><flowSpan
style="font-weight:bold;fill:#ff0000;-inkscape-font-specification:Sans Bold" style="font-weight:bold;-inkscape-font-specification:'Sans Bold';fill:#ff0000"
id="flowSpan5705-5">(2)</flowSpan> pasting:</flowPara><flowPara id="flowSpan5705-5">(2)</flowSpan> pasting:</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara5701-9">pp - open URL from clipboard</flowPara><flowPara id="flowPara5701-9">pp - open URL from clipboard</flowPara><flowPara
@ -2668,26 +2673,26 @@
id="flowPara5703-8">pP - open URL from selection</flowPara><flowPara id="flowPara5703-8">pP - open URL from selection</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara5707-0">Pp - like <flowSpan id="flowPara5707-0">Pp - like <flowSpan
style="font-style:italic;-inkscape-font-specification:Sans Italic" style="font-style:italic;-inkscape-font-specification:'Sans Italic'"
id="flowSpan6101">pp</flowSpan>, in new tab</flowPara><flowPara id="flowSpan6101">pp</flowSpan>, in new tab</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara5709-3">PP - like <flowSpan id="flowPara5709-3">PP - like <flowSpan
style="font-style:italic;-inkscape-font-specification:Sans Italic" style="font-style:italic;-inkscape-font-specification:'Sans Italic'"
id="flowSpan6103">pP</flowSpan>, in new tab</flowPara><flowPara id="flowSpan6103">pP</flowSpan>, in new tab</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara5763">wp - like <flowSpan id="flowPara5763">wp - like <flowSpan
style="font-style:italic;-inkscape-font-specification:Sans Italic" style="font-style:italic;-inkscape-font-specification:'Sans Italic'"
id="flowSpan6105">pp</flowSpan>, in new window</flowPara><flowPara id="flowSpan6105">pp</flowSpan>, in new window</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara5765">wP - like <flowSpan id="flowPara5765">wP - like <flowSpan
style="font-style:italic;-inkscape-font-specification:Sans Italic" style="font-style:italic;-inkscape-font-specification:'Sans Italic'"
id="flowSpan6107">pP</flowSpan>, in new window</flowPara><flowPara id="flowSpan6107">pP</flowSpan>, in new window</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara5711-1" /></flowRoot> <flowRoot id="flowPara5711-1" /></flowRoot> <flowRoot
transform="translate(171.2479,-14.539167)" transform="translate(171.2479,-38.539167)"
xml:space="preserve" xml:space="preserve"
id="flowRoot5691-0-9" id="flowRoot5691-0-9"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><flowRegion style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"><flowRegion
id="flowRegion5693-7-0"><rect id="flowRegion5693-7-0"><rect
id="rect5695-0-5" id="rect5695-0-5"
width="322.5" width="322.5"
@ -2695,9 +2700,9 @@
x="17.5" x="17.5"
y="448.75" y="448.75"
style="fill:#000000" /></flowRegion><flowPara style="fill:#000000" /></flowRegion><flowPara
style="font-size:10px;font-weight:bold;fill:#000000;-inkscape-font-specification:Sans Bold" style="font-weight:bold;font-size:10px;-inkscape-font-specification:'Sans Bold';fill:#000000"
id="flowPara5701-9-6"><flowSpan id="flowPara5701-9-6"><flowSpan
style="font-weight:bold;fill:#ff0000;-inkscape-font-specification:Sans Bold" style="font-weight:bold;-inkscape-font-specification:'Sans Bold';fill:#ff0000"
id="flowSpan5705-5-8">(3)</flowSpan> navigation:</flowPara><flowPara id="flowSpan5705-5-8">(3)</flowSpan> navigation:</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara5829">[[ - click &quot;previous&quot;-link on page</flowPara><flowPara id="flowPara5829">[[ - click &quot;previous&quot;-link on page</flowPara><flowPara
@ -2705,11 +2710,11 @@
id="flowPara5703-8-2">]] - click &quot;next&quot;-link on page</flowPara><flowPara id="flowPara5703-8-2">]] - click &quot;next&quot;-link on page</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara5707-0-7">{{ - like <flowSpan id="flowPara5707-0-7">{{ - like <flowSpan
style="font-style:italic;-inkscape-font-specification:Sans Italic" style="font-style:italic;-inkscape-font-specification:'Sans Italic'"
id="flowSpan6111">[[</flowSpan>, in new tab</flowPara><flowPara id="flowSpan6111">[[</flowSpan>, in new tab</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara5709-3-1">}} - like <flowSpan id="flowPara5709-3-1">}} - like <flowSpan
style="font-style:italic;-inkscape-font-specification:Sans Italic" style="font-style:italic;-inkscape-font-specification:'Sans Italic'"
id="flowSpan6109">]]</flowSpan>, in new tab</flowPara><flowPara id="flowSpan6109">]]</flowSpan>, in new tab</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara5835">&lt;Ctrl-A&gt; - increment no. in URL</flowPara><flowPara id="flowPara5835">&lt;Ctrl-A&gt; - increment no. in URL</flowPara><flowPara
@ -2769,10 +2774,10 @@
id="tspan4936-1-1-9-2" id="tspan4936-1-1-9-2"
style="font-size:8px;fill:#ff0000">(3)</tspan></text> style="font-size:8px;fill:#ff0000">(3)</tspan></text>
<flowRoot <flowRoot
transform="translate(169.83695,87.823906)" transform="translate(169.83695,63.823906)"
xml:space="preserve" xml:space="preserve"
id="flowRoot5691-4" id="flowRoot5691-4"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><flowRegion style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"><flowRegion
id="flowRegion5693-9"><rect id="flowRegion5693-9"><rect
id="rect5695-9" id="rect5695-9"
width="322.5" width="322.5"
@ -2781,8 +2786,8 @@
y="448.75" y="448.75"
style="fill:#000000" /></flowRegion><flowPara style="fill:#000000" /></flowRegion><flowPara
id="flowPara5697-3" id="flowPara5697-3"
style="font-size:10px;font-weight:bold;fill:#000000;-inkscape-font-specification:Sans Bold"><flowSpan style="font-weight:bold;font-size:10px;-inkscape-font-specification:'Sans Bold';fill:#000000"><flowSpan
style="font-weight:bold;fill:#ff0000;-inkscape-font-specification:Sans Bold" style="font-weight:bold;-inkscape-font-specification:'Sans Bold';fill:#ff0000"
id="flowSpan5705-0">(4)</flowSpan> scrolling:</flowPara><flowPara id="flowSpan5705-0">(4)</flowSpan> scrolling:</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara5701-8">&lt;Ctrl-F&gt; - page down</flowPara><flowPara id="flowPara5701-8">&lt;Ctrl-F&gt; - page down</flowPara><flowPara
@ -2792,59 +2797,59 @@
id="flowPara5962">&lt;Ctrl-D&gt; - half page down</flowPara><flowPara id="flowPara5962">&lt;Ctrl-D&gt; - half page down</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara5711-7">&lt;Ctrl-U&gt; - half page up</flowPara></flowRoot> <flowRoot id="flowPara5711-7">&lt;Ctrl-U&gt; - half page up</flowPara></flowRoot> <flowRoot
transform="translate(360.81663,-14.539167)" transform="translate(360.81663,-38.539167)"
xml:space="preserve" xml:space="preserve"
id="flowRoot5691-4-9" id="flowRoot5691-4-9"
style="font-size:40px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"><flowRegion style="font-style:normal;font-weight:bold;font-size:40px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"><flowRegion
id="flowRegion5693-9-1"><rect id="flowRegion5693-9-1"><rect
id="rect5695-9-8" id="rect5695-9-8"
width="322.5" width="322.5"
height="162.5" height="162.5"
x="17.5" x="17.5"
y="448.75" y="448.75"
style="font-weight:bold;fill:#000000;-inkscape-font-specification:Sans Bold" /></flowRegion><flowPara style="font-weight:bold;-inkscape-font-specification:'Sans Bold';fill:#000000" /></flowRegion><flowPara
style="font-size:10px;font-weight:bold;fill:#000000;-inkscape-font-specification:Sans Bold" style="font-weight:bold;font-size:10px;-inkscape-font-specification:'Sans Bold';fill:#000000"
id="flowPara4171">in prompt mode:</flowPara><flowPara id="flowPara4171">in prompt mode:</flowPara><flowPara
style="font-size:10px;font-weight:normal;fill:#000000;-inkscape-font-specification:Sans" style="font-weight:normal;font-size:10px;-inkscape-font-specification:Sans;fill:#000000"
id="flowPara4175">Enter - accept prompt</flowPara><flowPara id="flowPara4175">Enter - accept prompt</flowPara><flowPara
style="font-size:10px;font-weight:normal;fill:#000000;-inkscape-font-specification:Sans" style="font-weight:normal;font-size:10px;-inkscape-font-specification:Sans;fill:#000000"
id="flowPara4177">y - answer yes to prompt</flowPara><flowPara id="flowPara4177">y - answer yes to prompt</flowPara><flowPara
style="font-size:10px;font-weight:normal;fill:#000000;-inkscape-font-specification:Sans" style="font-weight:normal;font-size:10px;-inkscape-font-specification:Sans;fill:#000000"
id="flowPara4179">n - answer no to prompt</flowPara><flowPara id="flowPara4179">n - answer no to prompt</flowPara><flowPara
style="font-size:10px;font-weight:normal;fill:#000000;-inkscape-font-specification:Sans" style="font-weight:normal;font-size:10px;-inkscape-font-specification:Sans;fill:#000000"
id="flowPara6016" /></flowRoot> <flowRoot id="flowPara6016" /></flowRoot> <flowRoot
transform="translate(360.8264,40.645949)" transform="translate(360.8264,16.645949)"
xml:space="preserve" xml:space="preserve"
id="flowRoot5691-0-9-9" id="flowRoot5691-0-9-9"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"><flowRegion style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;-inkscape-font-specification:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"><flowRegion
id="flowRegion5693-7-0-2"><rect id="flowRegion5693-7-0-2"><rect
id="rect5695-0-5-6" id="rect5695-0-5-6"
width="322.5" width="322.5"
height="162.5" height="162.5"
x="17.5" x="17.5"
y="448.75" y="448.75"
style="font-style:normal;fill:#000000;-inkscape-font-specification:Sans" /></flowRegion><flowPara style="font-style:normal;-inkscape-font-specification:Sans;fill:#000000" /></flowRegion><flowPara
style="font-size:10px;font-style:normal;font-weight:bold;fill:#000000;-inkscape-font-specification:Sans Bold" style="font-style:normal;font-weight:bold;font-size:10px;-inkscape-font-specification:'Sans Bold';fill:#000000"
id="flowPara5701-9-6-8"><flowSpan id="flowPara5701-9-6-8"><flowSpan
style="font-style:normal;font-weight:bold;fill:#ff0000;-inkscape-font-specification:Sans Bold" style="font-style:normal;font-weight:bold;-inkscape-font-specification:'Sans Bold';fill:#ff0000"
id="flowSpan5705-5-8-3">(6)</flowSpan> opening:</flowPara><flowPara id="flowSpan5705-5-8-3">(6)</flowSpan> opening:</flowPara><flowPara
style="font-size:10px;font-style:normal;fill:#000000;-inkscape-font-specification:Sans" style="font-style:normal;font-size:10px;-inkscape-font-specification:Sans;fill:#000000"
id="flowPara5829-1">go - open based on cur. URL</flowPara><flowPara id="flowPara5829-1">go - open based on cur. URL</flowPara><flowPara
style="font-size:10px;font-style:normal;fill:#000000;-inkscape-font-specification:Sans" style="font-style:normal;font-size:10px;-inkscape-font-specification:Sans;fill:#000000"
id="flowPara5703-8-2-8">gO - like <flowSpan id="flowPara5703-8-2-8">gO - like <flowSpan
style="font-style:italic;-inkscape-font-specification:Sans Italic" style="font-style:italic;-inkscape-font-specification:'Sans Italic'"
id="flowSpan6132">go</flowSpan>, in new tab</flowPara><flowPara id="flowSpan6132">go</flowSpan>, in new tab</flowPara><flowPara
style="font-size:10px;font-style:normal;fill:#000000;-inkscape-font-specification:Sans" style="font-style:normal;font-size:10px;-inkscape-font-specification:Sans;fill:#000000"
id="flowPara3581">xO - like <flowSpan id="flowPara3581">xO - like <flowSpan
style="font-style:italic;-inkscape-font-specification:Sans Italic" style="font-style:italic;-inkscape-font-specification:'Sans Italic'"
id="flowSpan6134">go</flowSpan>, in bg. tab</flowPara><flowPara id="flowSpan6134">go</flowSpan>, in bg. tab</flowPara><flowPara
style="font-size:10px;font-style:normal;fill:#000000;-inkscape-font-specification:Sans" style="font-style:normal;font-size:10px;-inkscape-font-specification:Sans;fill:#000000"
id="flowPara5709-3-1-6">xo - open in background tab</flowPara><flowPara id="flowPara5709-3-1-6">xo - open in background tab</flowPara><flowPara
style="font-size:10px;font-style:normal;fill:#000000;-inkscape-font-specification:Sans" style="font-style:normal;font-size:10px;-inkscape-font-specification:Sans;fill:#000000"
id="flowPara5841-1">wo - open in new window</flowPara><flowPara id="flowPara5841-1">wo - open in new window</flowPara><flowPara
style="font-size:10px;font-style:normal;fill:#000000;-inkscape-font-specification:Sans" style="font-style:normal;font-size:10px;-inkscape-font-specification:Sans;fill:#000000"
id="flowPara5839-8" /><flowPara id="flowPara5839-8" /><flowPara
style="font-size:10px;font-style:normal;fill:#000000;-inkscape-font-specification:Sans" style="font-style:normal;font-size:10px;-inkscape-font-specification:Sans;fill:#000000"
id="flowPara5711-1-8-7" /></flowRoot> <text id="flowPara5711-1-8-7" /></flowRoot> <text
xml:space="preserve" xml:space="preserve"
style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:89.99999762%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:TlwgTypewriter" style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:89.99999762%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:TlwgTypewriter"
@ -2899,10 +2904,10 @@
id="tspan6219" id="tspan6219"
style="font-size:8px">mode</tspan></text> style="font-size:8px">mode</tspan></text>
<flowRoot <flowRoot
transform="translate(361.29883,121.78408)" transform="translate(361.29883,97.78408)"
xml:space="preserve" xml:space="preserve"
id="flowRoot5691-4-9-3" id="flowRoot5691-4-9-3"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><flowRegion style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"><flowRegion
id="flowRegion5693-9-1-7"><rect id="flowRegion5693-9-1-7"><rect
id="rect5695-9-8-7" id="rect5695-9-8-7"
width="322.5" width="322.5"
@ -2911,8 +2916,8 @@
y="448.75" y="448.75"
style="fill:#000000" /></flowRegion><flowPara style="fill:#000000" /></flowRegion><flowPara
id="flowPara5697-3-7-6" id="flowPara5697-3-7-6"
style="font-size:10px;font-weight:bold;fill:#000000;-inkscape-font-specification:Sans Bold"><flowSpan style="font-weight:bold;font-size:10px;-inkscape-font-specification:'Sans Bold';fill:#000000"><flowSpan
style="font-weight:bold;fill:#ff0000;-inkscape-font-specification:Sans Bold" style="font-weight:bold;-inkscape-font-specification:'Sans Bold';fill:#ff0000"
id="flowSpan5705-0-4-7">(7)</flowSpan> back/forward:</flowPara><flowPara id="flowSpan5705-0-4-7">(7)</flowSpan> back/forward:</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara5701-8-5-8"><flowSpan id="flowPara5701-8-5-8"><flowSpan
@ -2959,10 +2964,10 @@
style="font-size:8px;fill:#ff0000" style="font-size:8px;fill:#ff0000"
id="tspan3662">(9)</tspan></tspan></text> id="tspan3662">(9)</tspan></tspan></text>
<flowRoot <flowRoot
transform="translate(526.15723,-14.548933)" transform="translate(526.15723,-38.548933)"
xml:space="preserve" xml:space="preserve"
id="flowRoot5691-4-9-3-6" id="flowRoot5691-4-9-3-6"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><flowRegion style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"><flowRegion
id="flowRegion5693-9-1-7-3"><rect id="flowRegion5693-9-1-7-3"><rect
id="rect5695-9-8-7-7" id="rect5695-9-8-7-7"
width="322.5" width="322.5"
@ -2971,15 +2976,15 @@
y="448.75" y="448.75"
style="fill:#000000" /></flowRegion><flowPara style="fill:#000000" /></flowRegion><flowPara
id="flowPara5697-3-7-6-8" id="flowPara5697-3-7-6-8"
style="font-size:10px;font-weight:bold;fill:#ff0000;-inkscape-font-specification:Sans Bold">(8)</flowPara><flowPara style="font-weight:bold;font-size:10px;-inkscape-font-specification:'Sans Bold';fill:#ff0000">(8)</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara3626-7">prefix with w - in new window</flowPara><flowPara id="flowPara3626-7">prefix with w - in new window</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara3725" /></flowRoot> <flowRoot id="flowPara3725" /></flowRoot> <flowRoot
transform="translate(525.65723,34.440325)" transform="translate(525.65723,10.440325)"
xml:space="preserve" xml:space="preserve"
id="flowRoot5691-4-9-3-1" id="flowRoot5691-4-9-3-1"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><flowRegion style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"><flowRegion
id="flowRegion5693-9-1-7-1"><rect id="flowRegion5693-9-1-7-1"><rect
id="rect5695-9-8-7-5" id="rect5695-9-8-7-5"
width="322.5" width="322.5"
@ -2988,8 +2993,8 @@
y="448.75" y="448.75"
style="fill:#000000" /></flowRegion><flowPara style="fill:#000000" /></flowRegion><flowPara
id="flowPara5697-3-7-6-1" id="flowPara5697-3-7-6-1"
style="font-size:10px;font-weight:bold;fill:#000000;-inkscape-font-specification:Sans Bold"><flowSpan style="font-weight:bold;font-size:10px;-inkscape-font-specification:'Sans Bold';fill:#000000"><flowSpan
style="font-weight:bold;fill:#ff0000;-inkscape-font-specification:Sans Bold" style="font-weight:bold;-inkscape-font-specification:'Sans Bold';fill:#ff0000"
id="flowSpan5705-0-4-7-6">(9)</flowSpan> extended hint mode:</flowPara><flowPara id="flowSpan5705-0-4-7-6">(9)</flowSpan> extended hint mode:</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara3626-73">;b - open hint in background tab</flowPara><flowPara id="flowPara3626-73">;b - open hint in background tab</flowPara><flowPara
@ -3003,7 +3008,7 @@
id="flowPara3794">;o - put hinted URL in cmd. line</flowPara><flowPara id="flowPara3794">;o - put hinted URL in cmd. line</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara3796">;O - like <flowSpan id="flowPara3796">;O - like <flowSpan
style="font-style:italic;-inkscape-font-specification:Sans Italic" style="font-style:italic;-inkscape-font-specification:'Sans Italic'"
id="flowSpan3798">;o</flowSpan>, in new tab</flowPara><flowPara id="flowSpan3798">;o</flowSpan>, in new tab</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara3800">;y - yank hinted URL to clipboard</flowPara><flowPara id="flowPara3800">;y - yank hinted URL to clipboard</flowPara><flowPara
@ -3013,24 +3018,24 @@
id="flowPara3804">;r - rapid hinting</flowPara><flowPara id="flowPara3804">;r - rapid hinting</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara3806">;R - like <flowSpan id="flowPara3806">;R - like <flowSpan
style="font-style:italic;-inkscape-font-specification:Sans Italic" style="font-style:italic;-inkscape-font-specification:'Sans Italic'"
id="flowSpan3810">;r</flowSpan>, in new window</flowPara><flowPara id="flowSpan3810">;r</flowSpan>, in new window</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara3808">;d - download hinted URL</flowPara></flowRoot> <flowRoot id="flowPara3808">;d - download hinted URL</flowPara></flowRoot> <flowRoot
transform="translate(706.84131,-14.539167)" transform="translate(706.84131,-38.539167)"
xml:space="preserve" xml:space="preserve"
id="flowRoot5691-4-9-3-6-1" id="flowRoot5691-4-9-3-6-1"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><flowRegion style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"><flowRegion
id="flowRegion5693-9-1-7-3-5"><rect id="flowRegion5693-9-1-7-3-5"><rect
id="rect5695-9-8-7-7-0" id="rect5695-9-8-7-7-0"
width="148.08141" width="154.90645"
height="203.19766" height="240.73535"
x="17.5" x="17.5"
y="448.75" y="448.75"
style="fill:#000000" /></flowRegion><flowPara style="fill:#000000" /></flowRegion><flowPara
id="flowPara5697-3-7-6-8-2" id="flowPara5697-3-7-6-8-2"
style="font-size:10px;font-weight:bold;fill:#000000;-inkscape-font-specification:Sans Bold"><flowSpan style="font-weight:bold;font-size:10px;-inkscape-font-specification:'Sans Bold';fill:#000000"><flowSpan
style="font-weight:bold;fill:#ff0000;-inkscape-font-specification:Sans Bold" style="font-weight:bold;-inkscape-font-specification:'Sans Bold';fill:#ff0000"
id="flowSpan3852">(10)</flowSpan> misc. commands:</flowPara><flowPara id="flowSpan3852">(10)</flowSpan> misc. commands:</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara3725-0"><flowSpan id="flowPara3725-0"><flowSpan
@ -3052,7 +3057,7 @@
id="flowPara3915">gu - navigate up in URL</flowPara><flowPara id="flowPara3915">gu - navigate up in URL</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara3917">gU - like <flowSpan id="flowPara3917">gU - like <flowSpan
style="font-style:italic;-inkscape-font-specification:Sans Italic" style="font-style:italic;-inkscape-font-specification:'Sans Italic'"
id="flowSpan3923">gu</flowSpan>, in new tab</flowPara><flowPara id="flowSpan3923">gu</flowSpan>, in new tab</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara3921">sf - save config</flowPara><flowPara id="flowPara3921">sf - save config</flowPara><flowPara
@ -3072,10 +3077,16 @@
id="flowPara4169"><flowSpan id="flowPara4169"><flowSpan
style="fill:#0000ff" style="fill:#0000ff"
id="flowSpan5438">ad</flowSpan> - cancel download</flowPara><flowPara id="flowSpan5438">ad</flowSpan> - cancel download</flowPara><flowPara
style="font-size:10px;fill:#000000"
id="flowPara4077">co - close other tabs</flowPara><flowPara
style="font-size:10px;fill:#000000"
id="flowPara4081">cd - clear downloads</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara3933" /><flowPara id="flowPara3933" /><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara3935" /></flowRoot> <text id="flowPara3935" /><flowPara
style="font-size:10px;fill:#000000"
id="flowPara4079" /></flowRoot> <text
sodipodi:linespacing="89.999998%" sodipodi:linespacing="89.999998%"
id="text9514-8-9-0-8" id="text9514-8-9-0-8"
y="204.26315" y="204.26315"
@ -3112,10 +3123,10 @@
id="tspan4936-1-1-9-59-5" id="tspan4936-1-1-9-59-5"
style="font-size:8px;fill:#ff0000">(10)</tspan></text> style="font-size:8px;fill:#ff0000">(10)</tspan></text>
<flowRoot <flowRoot
transform="translate(841.04351,-14.539167)" transform="translate(841.04351,-38.539167)"
xml:space="preserve" xml:space="preserve"
id="flowRoot5691-4-9-3-6-1-2" id="flowRoot5691-4-9-3-6-1-2"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><flowRegion style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"><flowRegion
id="flowRegion5693-9-1-7-3-5-2"><rect id="flowRegion5693-9-1-7-3-5-2"><rect
id="rect5695-9-8-7-7-0-9" id="rect5695-9-8-7-7-0-9"
width="328.31396" width="328.31396"
@ -3124,8 +3135,8 @@
y="448.75" y="448.75"
style="fill:#000000" /></flowRegion><flowPara style="fill:#000000" /></flowRegion><flowPara
id="flowPara5697-3-7-6-8-2-0" id="flowPara5697-3-7-6-8-2-0"
style="font-size:10px;font-weight:bold;fill:#000000;-inkscape-font-specification:Sans Bold"><flowSpan style="font-weight:bold;font-size:10px;-inkscape-font-specification:'Sans Bold';fill:#000000"><flowSpan
style="font-weight:bold;fill:#ff0000;-inkscape-font-specification:Sans Bold" style="font-weight:bold;-inkscape-font-specification:'Sans Bold';fill:#ff0000"
id="flowSpan3852-6">(11)</flowSpan> modifier commands:</flowPara><flowPara id="flowSpan3852-6">(11)</flowSpan> modifier commands:</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara3933-6">&lt;Alt-num&gt; - select tab</flowPara><flowPara id="flowPara3933-6">&lt;Alt-num&gt; - select tab</flowPara><flowPara
@ -3141,11 +3152,11 @@
id="flowPara4138">&lt;Ctrl-S&gt; - stop loading</flowPara><flowPara id="flowPara4138">&lt;Ctrl-S&gt; - stop loading</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara4140">&lt;Ctrl-Alt-P&gt; - print</flowPara><flowPara id="flowPara4140">&lt;Ctrl-Alt-P&gt; - print</flowPara><flowPara
style="font-size:10px;font-weight:bold;fill:#000000;-inkscape-font-specification:Sans Bold" style="font-weight:bold;font-size:10px;-inkscape-font-specification:'Sans Bold';fill:#000000"
id="flowPara4142">in insert mode:</flowPara><flowPara id="flowPara4142">in insert mode:</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara4144">&lt;Ctrl-E&gt; - open editor</flowPara><flowPara id="flowPara4144">&lt;Ctrl-E&gt; - open editor</flowPara><flowPara
style="font-size:10px;font-weight:bold;fill:#000000;-inkscape-font-specification:Sans Bold" style="font-weight:bold;font-size:10px;-inkscape-font-specification:'Sans Bold';fill:#000000"
id="flowPara4146">in command mode:</flowPara><flowPara id="flowPara4146">in command mode:</flowPara><flowPara
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara4148">&lt;Ctrl-P&gt; - prev. history item</flowPara><flowPara id="flowPara4148">&lt;Ctrl-P&gt; - prev. history item</flowPara><flowPara
@ -3154,126 +3165,142 @@
style="font-size:18px;fill:#eeeeec;fill-opacity:1;stroke:none" style="font-size:18px;fill:#eeeeec;fill-opacity:1;stroke:none"
id="rect3764-9" id="rect3764-9"
width="60" width="60"
height="60" height="45.993073"
x="168.32558" x="168.32558"
y="362" y="362"
ry="4.480969" /> ry="3.4348924" />
<rect <rect
style="font-size:18px;fill:#eeeeec;fill-opacity:1;stroke:none" style="font-size:18px;fill:#eeeeec;fill-opacity:1;stroke:none"
id="rect3764-9-3" id="rect3764-9-3"
width="60" width="60"
height="60" height="45.993073"
x="47.906979" x="47.906979"
y="362" y="362"
ry="4.480969" /> ry="3.4348924" />
<rect <rect
style="font-size:18px;fill:#eeeeec;fill-opacity:1;stroke:none" style="font-size:18px;fill:#eeeeec;fill-opacity:1;stroke:none"
id="rect3764-9-1" id="rect3764-9-1"
width="60" width="60"
height="60" height="45.993073"
x="613.81396" x="613.81396"
y="362" y="362"
ry="4.480969" /> ry="3.4348924" />
<rect <rect
style="font-size:18px;fill:#eeeeec;fill-opacity:1;stroke:none" style="font-size:18px;fill:#eeeeec;fill-opacity:1;stroke:none"
id="rect3764-9-7" id="rect3764-9-7"
width="60" width="60"
height="60" height="45.993073"
x="730.46509" x="730.46509"
y="362" y="362"
ry="4.480969" /> ry="3.4348924" />
<g
id="g4049"
transform="translate(1.3728676,-1.9658966)">
<text <text
id="text7358-8" xml:space="preserve"
y="395.78867" style="font-style:normal;font-weight:normal;font-size:12px;font-family:'DejaVu Sans Mono';fill:#000000;fill-opacity:1;stroke:none"
x="62.269463"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono"
xml:space="preserve"><tspan
y="395.78867"
x="62.269463" x="62.269463"
y="385.78867"
id="text7358-8"><tspan
style="font-size:12px;font-family:'DejaVu Sans Mono'"
sodipodi:role="line"
id="tspan7360-1" id="tspan7360-1"
sodipodi:role="line" x="62.269463"
style="font-size:12px;font-family:DejaVu Sans Mono">Ctrl</tspan></text> y="385.78867">Ctrl</tspan></text>
<text <text
id="text7358-8-3" xml:space="preserve"
y="395.78867" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8px;line-height:89.99999762%;font-family:TlwgTypewriter;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="745.17719" x="67.315361"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono" y="400.26315"
xml:space="preserve"><tspan
y="395.78867"
x="745.17719"
id="tspan7360-1-7"
sodipodi:role="line"
style="font-size:12px;font-family:DejaVu Sans Mono">Ctrl</tspan></text>
<text
id="text7358-8-3-8"
y="395.78867"
x="627.75677"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono"
xml:space="preserve"><tspan
y="395.78867"
x="627.75677"
id="tspan7360-1-7-0"
sodipodi:role="line"
style="font-size:12px;font-family:DejaVu Sans Mono">Alt</tspan></text>
<text
id="text7358-8-3-8-1"
y="395.78867"
x="186.34709"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono"
xml:space="preserve"><tspan
y="395.78867"
x="186.34709"
id="tspan7360-1-7-0-2"
sodipodi:role="line"
style="font-size:12px;font-family:DejaVu Sans Mono">Alt</tspan></text>
<text
sodipodi:linespacing="89.999998%"
id="text9514-8-9-0-8-4-0" id="text9514-8-9-0-8-4-0"
y="410.26315" sodipodi:linespacing="89.999998%"><tspan
x="67.315361" style="font-size:8px;fill:#ff0000"
style="font-size:8px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:89.99999762%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:TlwgTypewriter"
xml:space="preserve"><tspan
y="410.26315"
x="67.315361"
sodipodi:role="line"
id="tspan4936-1-1-9-59-8-3" id="tspan4936-1-1-9-59-8-3"
style="font-size:8px;fill:#ff0000">(11)</tspan></text> sodipodi:role="line"
x="67.315361"
y="400.26315">(11)</tspan></text>
</g>
<g
id="g4055"
transform="translate(1.6278992,-11.965897)">
<text <text
sodipodi:linespacing="89.999998%" xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:12px;font-family:'DejaVu Sans Mono';fill:#000000;fill-opacity:1;stroke:none"
x="186.34709"
y="395.78867"
id="text7358-8-3-8-1"><tspan
style="font-size:12px;font-family:'DejaVu Sans Mono'"
sodipodi:role="line"
id="tspan7360-1-7-0-2"
x="186.34709"
y="395.78867">Alt</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8px;line-height:89.99999762%;font-family:TlwgTypewriter;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="187.47893"
y="410.26315"
id="text9514-8-9-0-8-4-0-8" id="text9514-8-9-0-8-4-0-8"
y="410.26315" sodipodi:linespacing="89.999998%"><tspan
x="187.47893" style="font-size:8px;fill:#ff0000"
style="font-size:8px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:89.99999762%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:TlwgTypewriter"
xml:space="preserve"><tspan
y="410.26315"
x="187.47893"
sodipodi:role="line"
id="tspan4936-1-1-9-59-8-3-8" id="tspan4936-1-1-9-59-8-3-8"
style="font-size:8px;fill:#ff0000">(11)</tspan></text> sodipodi:role="line"
x="187.47893"
y="410.26315">(11)</tspan></text>
</g>
<g
id="g4065"
transform="translate(5.706604,-11.965897)">
<text <text
sodipodi:linespacing="89.999998%" xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:12px;font-family:'DejaVu Sans Mono';fill:#000000;fill-opacity:1;stroke:none"
x="627.75677"
y="395.78867"
id="text7358-8-3-8"><tspan
style="font-size:12px;font-family:'DejaVu Sans Mono'"
sodipodi:role="line"
id="tspan7360-1-7-0"
x="627.75677"
y="395.78867">Alt</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8px;line-height:89.99999762%;font-family:TlwgTypewriter;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="628.88861"
y="410.26315"
id="text9514-8-9-0-8-4-0-7" id="text9514-8-9-0-8-4-0-7"
y="410.26315" sodipodi:linespacing="89.999998%"><tspan
x="628.88861" style="font-size:8px;fill:#ff0000"
style="font-size:8px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:89.99999762%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:TlwgTypewriter"
xml:space="preserve"><tspan
y="410.26315"
x="628.88861"
sodipodi:role="line"
id="tspan4936-1-1-9-59-8-3-82" id="tspan4936-1-1-9-59-8-3-82"
style="font-size:8px;fill:#ff0000">(11)</tspan></text>
<text
sodipodi:linespacing="89.999998%"
id="text9514-8-9-0-8-4-0-3"
y="410.26315"
x="750.22308"
style="font-size:8px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:89.99999762%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:TlwgTypewriter"
xml:space="preserve"><tspan
y="410.26315"
x="750.22308"
sodipodi:role="line" sodipodi:role="line"
x="628.88861"
y="410.26315">(11)</tspan></text>
</g>
<g
id="g4071"
transform="translate(1.0232544,-11.965897)">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:12px;font-family:'DejaVu Sans Mono';fill:#000000;fill-opacity:1;stroke:none"
x="745.17719"
y="395.78867"
id="text7358-8-3"><tspan
style="font-size:12px;font-family:'DejaVu Sans Mono'"
sodipodi:role="line"
id="tspan7360-1-7"
x="745.17719"
y="395.78867">Ctrl</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8px;line-height:89.99999762%;font-family:TlwgTypewriter;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="750.22308"
y="410.26315"
id="text9514-8-9-0-8-4-0-3"
sodipodi:linespacing="89.999998%"><tspan
style="font-size:8px;fill:#ff0000"
id="tspan4936-1-1-9-59-8-3-4" id="tspan4936-1-1-9-59-8-3-4"
style="font-size:8px;fill:#ff0000">(11)</tspan></text> sodipodi:role="line"
x="750.22308"
y="410.26315">(11)</tspan></text>
</g>
<text <text
xml:space="preserve" xml:space="preserve"
style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:89.99999762%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:TlwgTypewriter" style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:89.99999762%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:TlwgTypewriter"
@ -3297,7 +3324,7 @@
style="font-size:8px">tab</tspan></text> style="font-size:8px">tab</tspan></text>
<text <text
xml:space="preserve" xml:space="preserve"
style="font-size:8px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:89.99999762%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:TlwgTypewriter" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8px;line-height:89.99999762%;font-family:TlwgTypewriter;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
x="267.67316" x="267.67316"
y="326.20523" y="326.20523"
id="text10547-23-6-7" id="text10547-23-6-7"
@ -3313,11 +3340,11 @@
sodipodi:role="line" sodipodi:role="line"
x="267.67316" x="267.67316"
y="340.60522" y="340.60522"
id="tspan5327">other</tspan><tspan id="tspan10562-12-5-98">other tabs</tspan><tspan
sodipodi:role="line" sodipodi:role="line"
x="267.67316" x="267.67316"
y="347.80524" y="347.80524"
id="tspan10562-12-5-98">tabs</tspan></text> id="tspan4045">cd: clea</tspan></text>
<text <text
sodipodi:linespacing="89.999998%" sodipodi:linespacing="89.999998%"
id="text10564-6-7-8-0" id="text10564-6-7-8-0"
@ -3398,10 +3425,10 @@
id="tspan4936-1-1-9-59-5-6" id="tspan4936-1-1-9-59-5-6"
style="font-size:8px;fill:#ff0000">(10)</tspan></text> style="font-size:8px;fill:#ff0000">(10)</tspan></text>
<flowRoot <flowRoot
transform="translate(838.55559,158.52236)" transform="translate(838.55559,134.52236)"
xml:space="preserve" xml:space="preserve"
id="flowRoot5691-4-9-3-6-6" id="flowRoot5691-4-9-3-6-6"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><flowRegion style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"><flowRegion
id="flowRegion5693-9-1-7-3-8"><rect id="flowRegion5693-9-1-7-3-8"><rect
id="rect5695-9-8-7-7-6" id="rect5695-9-8-7-7-6"
width="322.5" width="322.5"
@ -3412,7 +3439,7 @@
style="font-size:10px;fill:#000000" style="font-size:10px;fill:#000000"
id="flowPara3626-7-0"><flowSpan id="flowPara3626-7-0"><flowSpan
id="flowSpan5520" id="flowSpan5520"
style="font-size:10px;font-weight:bold;fill:#0000ff;-inkscape-font-specification:Sans Bold">blue keys </flowSpan><flowSpan style="font-weight:bold;font-size:10px;-inkscape-font-specification:'Sans Bold';fill:#0000ff">blue keys </flowSpan><flowSpan
style="fill:#0000ff" style="fill:#0000ff"
id="flowSpan5528">can be</flowSpan></flowPara><flowPara id="flowSpan5528">can be</flowSpan></flowPara><flowPara
style="font-size:10px;fill:#0000ff" style="font-size:10px;fill:#0000ff"

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 137 KiB

View File

@ -44,7 +44,7 @@ from qutebrowser.utils.usertypes import Completion
class change_filter: # pylint: disable=invalid-name class change_filter: # pylint: disable=invalid-name
"""Decorator to register a new command handler. """Decorator to filter calls based on a config section/option matching.
This could also be a function, but as a class (with a "wrong" name) it's This could also be a function, but as a class (with a "wrong" name) it's
much cleaner to implement. much cleaner to implement.
@ -60,7 +60,8 @@ class change_filter: # pylint: disable=invalid-name
Gets called on parse-time with the decorator arguments. Gets called on parse-time with the decorator arguments.
Args: Args:
See class attributes. sectname: The section to be filtered.
optname: The option to be filtered.
""" """
if sectname not in configdata.DATA: if sectname not in configdata.DATA:
raise configexc.NoSectionError(sectname) raise configexc.NoSectionError(sectname)
@ -70,7 +71,7 @@ class change_filter: # pylint: disable=invalid-name
self._optname = optname self._optname = optname
def __call__(self, func): def __call__(self, func):
"""Register the command before running the function. """Filter calls to the decorated function.
Gets called when a function should be decorated. Gets called when a function should be decorated.
@ -281,7 +282,7 @@ class ConfigManager(QObject):
def __init__(self, configdir, fname, relaxed=False, parent=None): def __init__(self, configdir, fname, relaxed=False, parent=None):
super().__init__(parent) super().__init__(parent)
self._initialized = False self._initialized = False
self.sections = configdata.DATA self.sections = configdata.data()
self._interpolation = configparser.ExtendedInterpolation() self._interpolation = configparser.ExtendedInterpolation()
self._proxies = {} self._proxies = {}
for sectname in self.sections.keys(): for sectname in self.sections.keys():

View File

@ -23,7 +23,8 @@ Module attributes:
FIRST_COMMENT: The initial comment header to place in the config. FIRST_COMMENT: The initial comment header to place in the config.
SECTION_DESC: A dictionary with descriptions for sections. SECTION_DESC: A dictionary with descriptions for sections.
DATA: The config defaults, an OrderedDict of sections. DATA: A global read-only copy of the default config, an OrderedDict of
sections.
""" """
import sys import sys
@ -117,7 +118,13 @@ SECTION_DESC = {
DEFAULT_FONT_SIZE = '10pt' if sys.platform == 'darwin' else '8pt' DEFAULT_FONT_SIZE = '10pt' if sys.platform == 'darwin' else '8pt'
DATA = collections.OrderedDict([ def data(readonly=False):
"""Get the default config data.
Return:
A {name: section} OrderedDict.
"""
return collections.OrderedDict([
('general', sect.KeyValue( ('general', sect.KeyValue(
('ignore-case', ('ignore-case',
SettingValue(typ.IgnoreCase(), 'smart'), SettingValue(typ.IgnoreCase(), 'smart'),
@ -125,7 +132,8 @@ DATA = collections.OrderedDict([
('wrap-search', ('wrap-search',
SettingValue(typ.Bool(), 'true'), SettingValue(typ.Bool(), 'true'),
"Whether to wrap finding text to the top when arriving at the end."), "Whether to wrap finding text to the top when arriving at the "
"end."),
('startpage', ('startpage',
SettingValue(typ.List(), 'https://www.duckduckgo.com'), SettingValue(typ.List(), 'https://www.duckduckgo.com'),
@ -133,7 +141,8 @@ DATA = collections.OrderedDict([
('default-page', ('default-page',
SettingValue(typ.FuzzyUrl(), '${startpage}'), SettingValue(typ.FuzzyUrl(), '${startpage}'),
"The page to open if :open -t/-b/-w is used without URL."), "The page to open if :open -t/-b/-w is used without URL. Use "
"`about:blank` for a blank page."),
('auto-search', ('auto-search',
SettingValue(typ.AutoSearch(), 'naive'), SettingValue(typ.AutoSearch(), 'naive'),
@ -150,9 +159,10 @@ DATA = collections.OrderedDict([
('editor', ('editor',
SettingValue(typ.ShellCommand(placeholder=True), 'gvim -f "{}"'), SettingValue(typ.ShellCommand(placeholder=True), 'gvim -f "{}"'),
"The editor (and arguments) to use for the `open-editor` command.\n\n" "The editor (and arguments) to use for the `open-editor` "
"Use `{}` for the filename. The value gets split like in a shell, so " "command.\n\n"
"you can use `\"` or `'` to quote arguments."), "Use `{}` for the filename. The value gets split like in a "
"shell, so you can use `\"` or `'` to quote arguments."),
('editor-encoding', ('editor-encoding',
SettingValue(typ.Encoding(), 'utf-8'), SettingValue(typ.Encoding(), 'utf-8'),
@ -166,8 +176,8 @@ DATA = collections.OrderedDict([
('developer-extras', ('developer-extras',
SettingValue(typ.Bool(), 'false'), SettingValue(typ.Bool(), 'false'),
"Enable extra tools for Web developers.\n\n" "Enable extra tools for Web developers.\n\n"
"This needs to be enabled for `:inspector` to work and also adds an " "This needs to be enabled for `:inspector` to work and also adds "
"_Inspect_ entry to the context menu."), "an _Inspect_ entry to the context menu."),
('print-element-backgrounds', ('print-element-backgrounds',
SettingValue(typ.Bool(), 'true'), SettingValue(typ.Bool(), 'true'),
@ -176,11 +186,11 @@ DATA = collections.OrderedDict([
('xss-auditing', ('xss-auditing',
SettingValue(typ.Bool(), 'false'), SettingValue(typ.Bool(), 'false'),
"Whether load requests should be monitored for cross-site scripting " "Whether load requests should be monitored for cross-site "
"attempts.\n\n" "scripting attempts.\n\n"
"Suspicious scripts will be blocked and reported in the inspector's " "Suspicious scripts will be blocked and reported in the "
"JavaScript console. Enabling this feature might have an impact on " "inspector's JavaScript console. Enabling this feature might "
"performance."), "have an impact on performance."),
('site-specific-quirks', ('site-specific-quirks',
SettingValue(typ.Bool(), 'true'), SettingValue(typ.Bool(), 'true'),
@ -190,8 +200,8 @@ DATA = collections.OrderedDict([
SettingValue(typ.String(none_ok=True), ''), SettingValue(typ.String(none_ok=True), ''),
"Default encoding to use for websites.\n\n" "Default encoding to use for websites.\n\n"
"The encoding must be a string describing an encoding such as " "The encoding must be a string describing an encoding such as "
'_utf-8_, _iso-8859-1_, etc. If left empty a default value will be ' "_utf-8_, _iso-8859-1_, etc. If left empty a default value will "
"used."), "be used."),
('new-instance-open-target', ('new-instance-open-target',
SettingValue(typ.NewInstanceOpenTarget(), 'window'), SettingValue(typ.NewInstanceOpenTarget(), 'window'),
@ -205,13 +215,15 @@ DATA = collections.OrderedDict([
('save-session', ('save-session',
SettingValue(typ.Bool(), 'false'), SettingValue(typ.Bool(), 'false'),
"Whether to always save the open pages."), "Whether to always save the open pages."),
readonly=readonly
)), )),
('ui', sect.KeyValue( ('ui', sect.KeyValue(
('zoom-levels', ('zoom-levels',
SettingValue(typ.PercList(minval=0), SettingValue(typ.PercList(minval=0),
'25%,33%,50%,67%,75%,90%,100%,110%,125%,150%,175%,200%,' '25%,33%,50%,67%,75%,90%,100%,110%,125%,150%,175%,'
'250%,300%,400%,500%'), '200%,250%,300%,400%,500%'),
"The available zoom levels, separated by commas."), "The available zoom levels, separated by commas."),
('default-zoom', ('default-zoom',
@ -236,13 +248,14 @@ DATA = collections.OrderedDict([
('zoom-text-only', ('zoom-text-only',
SettingValue(typ.Bool(), 'false'), SettingValue(typ.Bool(), 'false'),
"Whether the zoom factor on a frame applies only to the text or to " "Whether the zoom factor on a frame applies only to the text or "
"all content."), "to all content."),
('frame-flattening', ('frame-flattening',
SettingValue(typ.Bool(), 'false'), SettingValue(typ.Bool(), 'false'),
"Whether to expand each subframe to its contents.\n\n" "Whether to expand each subframe to its contents.\n\n"
"This will flatten all the frames to become one scrollable page."), "This will flatten all the frames to become one scrollable "
"page."),
('user-stylesheet', ('user-stylesheet',
SettingValue(typ.UserStyleSheet(), SettingValue(typ.UserStyleSheet(),
@ -266,14 +279,16 @@ DATA = collections.OrderedDict([
SettingValue(typ.FormatString(fields=['perc', 'perc_raw', 'title', SettingValue(typ.FormatString(fields=['perc', 'perc_raw', 'title',
'title_sep', 'id']), 'title_sep', 'id']),
'{perc}{title}{title_sep}qutebrowser'), '{perc}{title}{title_sep}qutebrowser'),
"The format to use for the window title. The following placeholders " "The format to use for the window title. The following "
"are defined:\n\n" "placeholders are defined:\n\n"
"* `{perc}`: The percentage as a string like `[10%]`.\n" "* `{perc}`: The percentage as a string like `[10%]`.\n"
"* `{perc_raw}`: The raw percentage, e.g. `10`\n" "* `{perc_raw}`: The raw percentage, e.g. `10`\n"
"* `{title}`: The title of the current web page\n" "* `{title}`: The title of the current web page\n"
"* `{title_sep}`: The string ` - ` if a title is set, empty " "* `{title_sep}`: The string ` - ` if a title is set, empty "
"otherwise.\n" "otherwise.\n"
"* `{id}`: The internal window ID of this window."), "* `{id}`: The internal window ID of this window."),
readonly=readonly
)), )),
('network', sect.KeyValue( ('network', sect.KeyValue(
@ -292,8 +307,8 @@ DATA = collections.OrderedDict([
('proxy', ('proxy',
SettingValue(typ.Proxy(), 'system'), SettingValue(typ.Proxy(), 'system'),
"The proxy to use.\n\n" "The proxy to use.\n\n"
"In addition to the listed values, you can use a `socks://...` or " "In addition to the listed values, you can use a `socks://...` "
"`http://...` URL."), "or `http://...` URL."),
('proxy-dns-requests', ('proxy-dns-requests',
SettingValue(typ.Bool(), 'true'), SettingValue(typ.Bool(), 'true'),
@ -306,6 +321,8 @@ DATA = collections.OrderedDict([
('dns-prefetch', ('dns-prefetch',
SettingValue(typ.Bool(), 'true'), SettingValue(typ.Bool(), 'true'),
"Whether to try to pre-fetch DNS entries to speed up browsing."), "Whether to try to pre-fetch DNS entries to speed up browsing."),
readonly=readonly
)), )),
('completion', sect.KeyValue( ('completion', sect.KeyValue(
@ -322,7 +339,8 @@ DATA = collections.OrderedDict([
"Whether to show the autocompletion window."), "Whether to show the autocompletion window."),
('height', ('height',
SettingValue(typ.PercOrInt(minperc=0, maxperc=100, minint=1), '50%'), SettingValue(typ.PercOrInt(minperc=0, maxperc=100, minint=1),
'50%'),
"The height of the completion, in px or as percentage of the " "The height of the completion, in px or as percentage of the "
"window."), "window."),
@ -338,13 +356,15 @@ DATA = collections.OrderedDict([
('quick-complete', ('quick-complete',
SettingValue(typ.Bool(), 'true'), SettingValue(typ.Bool(), 'true'),
"Whether to move on to the next part when there's only one possible " "Whether to move on to the next part when there's only one "
"completion left."), "possible completion left."),
('shrink', ('shrink',
SettingValue(typ.Bool(), 'false'), SettingValue(typ.Bool(), 'false'),
"Whether to shrink the completion to be smaller than the configured " "Whether to shrink the completion to be smaller than the "
"size if there are no scrollbars."), "configured size if there are no scrollbars."),
readonly=readonly
)), )),
('input', sect.KeyValue( ('input', sect.KeyValue(
@ -363,12 +383,13 @@ DATA = collections.OrderedDict([
('auto-leave-insert-mode', ('auto-leave-insert-mode',
SettingValue(typ.Bool(), 'true'), SettingValue(typ.Bool(), 'true'),
"Whether to leave insert mode if a non-editable element is clicked."), "Whether to leave insert mode if a non-editable element is "
"clicked."),
('auto-insert-mode', ('auto-insert-mode',
SettingValue(typ.Bool(), 'false'), SettingValue(typ.Bool(), 'false'),
"Whether to automatically enter insert mode if an editable element " "Whether to automatically enter insert mode if an editable "
"is focused after page load."), "element is focused after page load."),
('forward-unbound-keys', ('forward-unbound-keys',
SettingValue(typ.ForwardUnboundKeys(), 'auto'), SettingValue(typ.ForwardUnboundKeys(), 'auto'),
@ -381,28 +402,32 @@ DATA = collections.OrderedDict([
"focusable elements in a Web page, such as hyperlinks and form " "focusable elements in a Web page, such as hyperlinks and form "
"controls, by using Left, Right, Up and Down arrow keys. For " "controls, by using Left, Right, Up and Down arrow keys. For "
"example, if a user presses the Right key, heuristics determine " "example, if a user presses the Right key, heuristics determine "
"whether there is an element he might be trying to reach towards the " "whether there is an element he might be trying to reach towards "
"right and which element he probably wants."), "the right and which element he probably wants."),
('links-included-in-focus-chain', ('links-included-in-focus-chain',
SettingValue(typ.Bool(), 'true'), SettingValue(typ.Bool(), 'true'),
"Whether hyperlinks should be included in the keyboard focus chain."), "Whether hyperlinks should be included in the keyboard focus "
"chain."),
('rocker-gestures', ('rocker-gestures',
SettingValue(typ.Bool(), 'false'), SettingValue(typ.Bool(), 'false'),
"Whether to enable Opera-like mouse rocker gestures. This disables " "Whether to enable Opera-like mouse rocker gestures. This "
"the context menu."), "disables the context menu."),
('mouse-zoom-divider', ('mouse-zoom-divider',
SettingValue(typ.Int(minval=1), '512'), SettingValue(typ.Int(minval=1), '512'),
"How much to divide the mouse wheel movements to translate them " "How much to divide the mouse wheel movements to translate them "
"into zoom increments."), "into zoom increments."),
readonly=readonly
)), )),
('tabs', sect.KeyValue( ('tabs', sect.KeyValue(
('background-tabs', ('background-tabs',
SettingValue(typ.Bool(), 'false'), SettingValue(typ.Bool(), 'false'),
"Whether to open new tabs (middleclick/ctrl+click) in background."), "Whether to open new tabs (middleclick/ctrl+click) in "
"background."),
('select-on-remove', ('select-on-remove',
SettingValue(typ.SelectOnRemove(), 'right'), SettingValue(typ.SelectOnRemove(), 'right'),
@ -449,9 +474,10 @@ DATA = collections.OrderedDict([
"Whether to show favicons in the tab bar."), "Whether to show favicons in the tab bar."),
('width', ('width',
SettingValue(typ.PercOrInt(minperc=0, maxperc=100, minint=1), '20%'), SettingValue(typ.PercOrInt(minperc=0, maxperc=100, minint=1),
"The width of the tab bar if it's vertical, in px or as percentage " '20%'),
"of the window."), "The width of the tab bar if it's vertical, in px or as "
"percentage of the window."),
('indicator-width', ('indicator-width',
SettingValue(typ.Int(minval=0), '3'), SettingValue(typ.Int(minval=0), '3'),
@ -466,9 +492,9 @@ DATA = collections.OrderedDict([
"Whether to open windows instead of tabs."), "Whether to open windows instead of tabs."),
('title-format', ('title-format',
SettingValue(typ.FormatString(fields=['perc', 'perc_raw', 'title', SettingValue(typ.FormatString(
'title_sep', 'index', 'id']), fields=['perc', 'perc_raw', 'title', 'title_sep', 'index',
'{index}: {title}'), 'id']), '{index}: {title}'),
"The format to use for the tab title. The following placeholders " "The format to use for the tab title. The following placeholders "
"are defined:\n\n" "are defined:\n\n"
"* `{perc}`: The percentage as a string like `[10%]`.\n" "* `{perc}`: The percentage as a string like `[10%]`.\n"
@ -478,32 +504,36 @@ DATA = collections.OrderedDict([
"otherwise.\n" "otherwise.\n"
"* `{index}`: The index of this tab.\n" "* `{index}`: The index of this tab.\n"
"* `{id}`: The internal tab ID of this tab."), "* `{id}`: The internal tab ID of this tab."),
readonly=readonly
)), )),
('storage', sect.KeyValue( ('storage', sect.KeyValue(
('download-directory', ('download-directory',
SettingValue(typ.Directory(none_ok=True), ''), SettingValue(typ.Directory(none_ok=True), ''),
"The directory to save downloads to. An empty value selects a " "The directory to save downloads to. An empty value selects a "
"sensible os-specific default. Will expand environment variables."), "sensible os-specific default. Will expand environment "
"variables."),
('maximum-pages-in-cache', ('maximum-pages-in-cache',
SettingValue( SettingValue(
typ.Int(none_ok=True, minval=0, maxval=MAXVALS['int']), ''), typ.Int(none_ok=True, minval=0, maxval=MAXVALS['int']), ''),
"The maximum number of pages to hold in the memory page cache.\n\n" "The maximum number of pages to hold in the global memory page "
"The Page Cache allows for a nicer user experience when navigating " "cache.\n\n"
"forth or back to pages in the forward/back history, by pausing and " "The Page Cache allows for a nicer user experience when "
"resuming up to _n_ pages.\n\n" "navigating forth or back to pages in the forward/back history, "
"by pausing and resuming up to _n_ pages.\n\n"
"For more information about the feature, please refer to: " "For more information about the feature, please refer to: "
"http://webkit.org/blog/427/webkit-page-cache-i-the-basics/"), "http://webkit.org/blog/427/webkit-page-cache-i-the-basics/"),
('object-cache-capacities', ('object-cache-capacities',
SettingValue( SettingValue(
typ.WebKitBytesList(length=3, maxsize=MAXVALS['int']), ''), typ.WebKitBytesList(length=3, maxsize=MAXVALS['int']), ''),
"The capacities for the memory cache for dead objects such as " "The capacities for the global memory cache for dead objects "
"stylesheets or scripts. Syntax: cacheMinDeadCapacity, cacheMaxDead, " "such as stylesheets or scripts. Syntax: cacheMinDeadCapacity, "
"totalCapacity.\n\n" "cacheMaxDead, totalCapacity.\n\n"
"The _cacheMinDeadCapacity_ specifies the minimum number of bytes " "The _cacheMinDeadCapacity_ specifies the minimum number of "
"that dead objects should consume when the cache is under " "bytes that dead objects should consume when the cache is under "
"pressure.\n\n" "pressure.\n\n"
"_cacheMaxDead_ is the maximum number of bytes that dead objects " "_cacheMaxDead_ is the maximum number of bytes that dead objects "
"should consume when the cache is *not* under pressure.\n\n" "should consume when the cache is *not* under pressure.\n\n"
@ -520,26 +550,31 @@ DATA = collections.OrderedDict([
('offline-storage-database', ('offline-storage-database',
SettingValue(typ.Bool(), 'true'), SettingValue(typ.Bool(), 'true'),
"Whether support for the HTML 5 offline storage feature is enabled."), "Whether support for the HTML 5 offline storage feature is "
"enabled."),
('offline-web-application-storage', ('offline-web-application-storage',
SettingValue(typ.Bool(), 'true'), SettingValue(typ.Bool(), 'true'),
"Whether support for the HTML 5 web application cache feature is " "Whether support for the HTML 5 web application cache feature is "
"enabled.\n\n" "enabled.\n\n"
"An application cache acts like an HTTP cache in some sense. For " "An application cache acts like an HTTP cache in some sense. For "
"documents that use the application cache via JavaScript, the loader " "documents that use the application cache via JavaScript, the "
"engine will first ask the application cache for the contents, " "loader engine will first ask the application cache for the "
"before hitting the network.\n\n" "contents, before hitting the network.\n\n"
"The feature is described in details at: " "The feature is described in details at: "
"http://dev.w3.org/html5/spec/Overview.html#appcache"), "http://dev.w3.org/html5/spec/Overview.html#appcache"),
('local-storage', ('local-storage',
SettingValue(typ.Bool(), 'true'), SettingValue(typ.Bool(), 'true'),
"Whether support for the HTML 5 local storage feature is enabled."), "Whether support for the HTML 5 local storage feature is "
"enabled."),
('cache-size', ('cache-size',
SettingValue(typ.Int(minval=0, maxval=MAXVALS['int64']), '52428800'), SettingValue(typ.Int(minval=0, maxval=MAXVALS['int64']),
'52428800'),
"Size of the HTTP network cache."), "Size of the HTTP network cache."),
readonly=readonly
)), )),
('content', sect.KeyValue( ('content', sect.KeyValue(
@ -554,8 +589,8 @@ DATA = collections.OrderedDict([
('allow-plugins', ('allow-plugins',
SettingValue(typ.Bool(), 'false'), SettingValue(typ.Bool(), 'false'),
"Enables or disables plugins in Web pages.\n\n" "Enables or disables plugins in Web pages.\n\n"
'Qt plugins with a mimetype such as "application/x-qt-plugin" are ' 'Qt plugins with a mimetype such as "application/x-qt-plugin" '
"not affected by this setting."), "are not affected by this setting."),
('geolocation', ('geolocation',
SettingValue(typ.NoAsk(), 'ask'), SettingValue(typ.NoAsk(), 'ask'),
@ -580,7 +615,8 @@ DATA = collections.OrderedDict([
('javascript-can-access-clipboard', ('javascript-can-access-clipboard',
SettingValue(typ.Bool(), 'false'), SettingValue(typ.Bool(), 'false'),
"Whether JavaScript programs can read or write to the clipboard."), "Whether JavaScript programs can read or write to the "
"clipboard."),
('ignore-javascript-prompt', ('ignore-javascript-prompt',
SettingValue(typ.Bool(), 'false'), SettingValue(typ.Bool(), 'false'),
@ -597,8 +633,8 @@ DATA = collections.OrderedDict([
('local-content-can-access-file-urls', ('local-content-can-access-file-urls',
SettingValue(typ.Bool(), 'true'), SettingValue(typ.Bool(), 'true'),
"Whether locally loaded documents are allowed to access other local " "Whether locally loaded documents are allowed to access other "
"urls."), "local urls."),
('cookies-accept', ('cookies-accept',
SettingValue(typ.AcceptCookies(), 'default'), SettingValue(typ.AcceptCookies(), 'default'),
@ -609,7 +645,8 @@ DATA = collections.OrderedDict([
"Whether to store cookies."), "Whether to store cookies."),
('host-block-lists', ('host-block-lists',
SettingValue(typ.UrlList(none_ok=True), SettingValue(
typ.UrlList(none_ok=True),
'http://www.malwaredomainlist.com/hostslist/hosts.txt,' 'http://www.malwaredomainlist.com/hostslist/hosts.txt,'
'http://someonewhocares.org/hosts/hosts,' 'http://someonewhocares.org/hosts/hosts,'
'http://winhelp2002.mvps.org/hosts.zip,' 'http://winhelp2002.mvps.org/hosts.zip,'
@ -620,12 +657,14 @@ DATA = collections.OrderedDict([
"The file can be in one of the following formats:\n\n" "The file can be in one of the following formats:\n\n"
"- An '/etc/hosts'-like file\n" "- An '/etc/hosts'-like file\n"
"- One host per line\n" "- One host per line\n"
"- A zip-file of any of the above, with either only one file, or a " "- A zip-file of any of the above, with either only one file, or "
"file named 'hosts' (with any extension)."), "a file named 'hosts' (with any extension)."),
('host-blocking-enabled', ('host-blocking-enabled',
SettingValue(typ.Bool(), 'true'), SettingValue(typ.Bool(), 'true'),
"Whether host blocking is enabled."), "Whether host blocking is enabled."),
readonly=readonly
)), )),
('hints', sect.KeyValue( ('hints', sect.KeyValue(
@ -672,15 +711,21 @@ DATA = collections.OrderedDict([
r'\bprev(ious)?\b,\bback\b,\bolder\b,\b[<←≪]\b,' r'\bprev(ious)?\b,\bback\b,\bolder\b,\b[<←≪]\b,'
r'\b(<<|«)\b'), r'\b(<<|«)\b'),
"A comma-separated list of regexes to use for 'prev' links."), "A comma-separated list of regexes to use for 'prev' links."),
readonly=readonly
)), )),
('searchengines', sect.ValueList( ('searchengines', sect.ValueList(
typ.SearchEngineName(), typ.SearchEngineUrl(), typ.SearchEngineName(), typ.SearchEngineUrl(),
('DEFAULT', 'https://duckduckgo.com/?q={}'), ('DEFAULT', 'https://duckduckgo.com/?q={}'),
readonly=readonly
)), )),
('aliases', sect.ValueList( ('aliases', sect.ValueList(
typ.String(forbidden=' '), typ.Command(), typ.String(forbidden=' '), typ.Command(),
readonly=readonly
)), )),
('colors', sect.KeyValue( ('colors', sect.KeyValue(
@ -726,8 +771,8 @@ DATA = collections.OrderedDict([
"Top border color of the completion widget category headers."), "Top border color of the completion widget category headers."),
('completion.item.selected.border.bottom', ('completion.item.selected.border.bottom',
SettingValue(typ.QssColor(), '${completion.item.selected.border.' SettingValue(
'top}'), typ.QssColor(), '${completion.item.selected.border.top}'),
"Bottom border color of the selected completion item."), "Bottom border color of the selected completion item."),
('completion.match.fg', ('completion.match.fg',
@ -782,7 +827,8 @@ DATA = collections.OrderedDict([
('statusbar.url.fg.hover', ('statusbar.url.fg.hover',
SettingValue(typ.QssColor(), 'aqua'), SettingValue(typ.QssColor(), 'aqua'),
"Foreground color of the URL in the statusbar for hovered links."), "Foreground color of the URL in the statusbar for hovered "
"links."),
('tabs.fg.odd', ('tabs.fg.odd',
SettingValue(typ.QtColor(), 'white'), SettingValue(typ.QtColor(), 'white'),
@ -837,7 +883,8 @@ DATA = collections.OrderedDict([
"Font color for the matched part of hints."), "Font color for the matched part of hints."),
('hints.bg', ('hints.bg',
SettingValue(typ.CssColor(), '-webkit-gradient(linear, left top, ' SettingValue(
typ.CssColor(), '-webkit-gradient(linear, left top, '
'left bottom, color-stop(0%,#FFF785), ' 'left bottom, color-stop(0%,#FFF785), '
'color-stop(100%,#FFC542))'), 'color-stop(100%,#FFC542))'),
"Background color for hints."), "Background color for hints."),
@ -865,14 +912,17 @@ DATA = collections.OrderedDict([
('downloads.bg.error', ('downloads.bg.error',
SettingValue(typ.QtColor(), 'red'), SettingValue(typ.QtColor(), 'red'),
"Background color for downloads with errors."), "Background color for downloads with errors."),
readonly=readonly
)), )),
('fonts', sect.KeyValue( ('fonts', sect.KeyValue(
('_monospace', ('_monospace',
SettingValue(typ.Font(), 'Terminus, Monospace, "DejaVu Sans Mono", ' SettingValue(typ.Font(), 'Terminus, Monospace, '
'Monaco, "Bitstream Vera Sans Mono", "Andale Mono", ' '"DejaVu Sans Mono", Monaco, '
'"Liberation Mono", "Courier New", Courier, monospace, ' '"Bitstream Vera Sans Mono", "Andale Mono", '
'Fixed, Consolas, Terminal'), '"Liberation Mono", "Courier New", Courier, '
'monospace, Fixed, Consolas, Terminal'),
"Default monospace fonts."), "Default monospace fonts."),
('completion', ('completion',
@ -931,7 +981,8 @@ DATA = collections.OrderedDict([
('web-size-minimum-logical', ('web-size-minimum-logical',
SettingValue( SettingValue(
typ.Int(none_ok=True, minval=1, maxval=MAXVALS['int']), ''), typ.Int(none_ok=True, minval=1, maxval=MAXVALS['int']), ''),
"The minimum logical font size that is applied when zooming out."), "The minimum logical font size that is applied when zooming "
"out."),
('web-size-default', ('web-size-default',
SettingValue( SettingValue(
@ -942,10 +993,15 @@ DATA = collections.OrderedDict([
SettingValue( SettingValue(
typ.Int(none_ok=True, minval=1, maxval=MAXVALS['int']), ''), typ.Int(none_ok=True, minval=1, maxval=MAXVALS['int']), ''),
"The default font size for fixed-pitch text."), "The default font size for fixed-pitch text."),
readonly=readonly
)), )),
]) ])
DATA = data(readonly=True)
KEY_FIRST_COMMENT = """ KEY_FIRST_COMMENT = """
# vim: ft=conf # vim: ft=conf
# #
@ -1115,6 +1171,7 @@ KEY_DATA = collections.OrderedDict([
('inspector', ['wi']), ('inspector', ['wi']),
('download', ['gd']), ('download', ['gd']),
('download-cancel', ['ad']), ('download-cancel', ['ad']),
('download-remove --all', ['cd']),
('view-source', ['gf']), ('view-source', ['gf']),
('tab-focus last', ['<Ctrl-Tab>']), ('tab-focus last', ['<Ctrl-Tab>']),
('enter-mode passthrough', ['<Ctrl-V>']), ('enter-mode passthrough', ['<Ctrl-V>']),

View File

@ -29,6 +29,7 @@ class Section:
"""Base class for KeyValue/ValueList sections. """Base class for KeyValue/ValueList sections.
Attributes: Attributes:
_readonly: Whether this section is read-only.
values: An OrderedDict with key as index and value as value. values: An OrderedDict with key as index and value as value.
key: string key: string
value: SettingValue value: SettingValue
@ -38,6 +39,7 @@ class Section:
def __init__(self): def __init__(self):
self.values = None self.values = None
self.descriptions = {} self.descriptions = {}
self._readonly = False
def __getitem__(self, key): def __getitem__(self, key):
"""Get the value for key. """Get the value for key.
@ -99,13 +101,15 @@ class KeyValue(Section):
set of keys. set of keys.
""" """
def __init__(self, *defaults): def __init__(self, *defaults, readonly=False):
"""Constructor. """Constructor.
Args: Args:
*defaults: A (key, value, description) list of defaults. *defaults: A (key, value, description) list of defaults.
readonly: Whether this config is readonly.
""" """
super().__init__() super().__init__()
self._readonly = readonly
if not defaults: if not defaults:
return return
self.values = collections.OrderedDict() self.values = collections.OrderedDict()
@ -115,6 +119,8 @@ class KeyValue(Section):
self.descriptions[k] = desc self.descriptions[k] = desc
def setv(self, layer, key, value, interpolated): def setv(self, layer, key, value, interpolated):
if self._readonly:
raise ValueError("Trying to modify a read-only config!")
self.values[key].setv(layer, value, interpolated) self.values[key].setv(layer, value, interpolated)
def dump_userconfig(self): def dump_userconfig(self):
@ -143,17 +149,20 @@ class ValueList(Section):
keytype: The type to use for the key (only used for validating) keytype: The type to use for the key (only used for validating)
valtype: The type to use for the value. valtype: The type to use for the value.
_ordered_value_cache: A ChainMap-like OrderedDict of all values. _ordered_value_cache: A ChainMap-like OrderedDict of all values.
_readonly: Whether this section is read-only.
""" """
def __init__(self, keytype, valtype, *defaults): def __init__(self, keytype, valtype, *defaults, readonly=False):
"""Wrap types over default values. Take care when overriding this. """Wrap types over default values. Take care when overriding this.
Args: Args:
keytype: The type instance to be used for keys. keytype: The type instance to be used for keys.
valtype: The type instance to be used for values. valtype: The type instance to be used for values.
*defaults: A (key, value) list of default values. *defaults: A (key, value) list of default values.
readonly: Whether this config is readonly.
""" """
super().__init__() super().__init__()
self._readonly = readonly
self._ordered_value_cache = None self._ordered_value_cache = None
self.keytype = keytype self.keytype = keytype
self.valtype = valtype self.valtype = valtype
@ -182,6 +191,8 @@ class ValueList(Section):
return self._ordered_value_cache return self._ordered_value_cache
def setv(self, layer, key, value, interpolated): def setv(self, layer, key, value, interpolated):
if self._readonly:
raise ValueError("Trying to modify a read-only config!")
self.keytype.validate(key) self.keytype.validate(key)
if key in self.layers[layer]: if key in self.layers[layer]:
self.layers[layer][key].setv(layer, value, interpolated) self.layers[layer][key].setv(layer, value, interpolated)