= Commands

== Normal commands
.Quick reference
[options="header",width="75%",cols="25%,75%"]
|==============
|Command|Description
|<<adblock-update,adblock-update>>|Update the adblock block lists.
|<<back,back>>|Go back in the history of the current tab.
|<<bind,bind>>|Bind a key to a command.
|<<cancel-download,cancel-download>>|Cancel the first/[count]th download.
|<<close,close>>|Close the current window.
|<<download,download>>|Download a given URL, given as string.
|<<download-page,download-page>>|Download the current page.
|<<forward,forward>>|Go forward in the history of the current tab.
|<<help,help>>|Show help about a command or setting.
|<<hint,hint>>|Start hinting.
|<<home,home>>|Open main startpage in current tab.
|<<inspector,inspector>>|Toggle the web inspector.
|<<later,later>>|Execute a command after some time.
|<<navigate,navigate>>|Open typical prev/next links or navigate using the URL path.
|<<open,open>>|Open a URL in the current/[count]th tab.
|<<paste,paste>>|Open a page from the clipboard.
|<<print,print>>|Print the current/[count]th tab.
|<<quickmark-add,quickmark-add>>|Add a new quickmark.
|<<quickmark-load,quickmark-load>>|Load a quickmark.
|<<quickmark-save,quickmark-save>>|Save the current page as a quickmark.
|<<quit,quit>>|Quit qutebrowser.
|<<reload,reload>>|Reload the current/[count]th tab.
|<<repeat,repeat>>|Repeat a given command.
|<<report,report>>|Report a bug in qutebrowser.
|<<restart,restart>>|Restart qutebrowser while keeping existing tabs open.
|<<run-userscript,run-userscript>>|Run an userscript given as argument.
|<<save,save>>|Save the config file.
|<<set,set>>|Set an option.
|<<set-cmd-text,set-cmd-text>>|Preset the statusbar to some text.
|<<spawn,spawn>>|Spawn a command in a shell.
|<<stop,stop>>|Stop loading in the current/[count]th tab.
|<<tab-clone,tab-clone>>|Duplicate the current tab.
|<<tab-close,tab-close>>|Close the current/[count]th tab.
|<<tab-focus,tab-focus>>|Select the tab given as argument/[count].
|<<tab-move,tab-move>>|Move the current tab.
|<<tab-next,tab-next>>|Switch to the next tab, or switch [count] tabs forward.
|<<tab-only,tab-only>>|Close all tabs except for the current one.
|<<tab-prev,tab-prev>>|Switch to the previous tab, or switch [count] tabs back.
|<<unbind,unbind>>|Unbind a keychain.
|<<undo,undo>>|Re-open a closed tab (optionally skipping [count] closed tabs).
|<<view-source,view-source>>|Show the source of the current page.
|<<yank,yank>>|Yank the current URL/title to the clipboard or primary selection.
|<<zoom,zoom>>|Set the zoom level for the current tab.
|<<zoom-in,zoom-in>>|Increase the zoom level for the current tab.
|<<zoom-out,zoom-out>>|Decrease the zoom level for the current tab.
|==============
[[adblock-update]]
=== adblock-update
Update the adblock block lists.

[[back]]
=== back
Syntax: +:back [*--tab*] [*--bg*] [*--window*]+

Go back in the history of the current tab.

==== optional arguments
* +*-t*+, +*--tab*+: Go back in a new tab.
* +*-b*+, +*--bg*+: Go back in a background tab.
* +*-w*+, +*--window*+: Go back in a new window.

==== count
How many pages to go back.

[[bind]]
=== bind
Syntax: +:bind [*--mode* 'MODE'] 'key' 'command' ['command' ...]+

Bind a key to a command.

==== positional arguments
* +'key'+: The keychain or special key (inside `<...>`) to bind.
* +'command'+: The command to execute, with optional args.

==== optional arguments
* +*-m*+, +*--mode*+: A comma-separated list of modes to bind the key in (default: `normal`).


[[cancel-download]]
=== cancel-download
Cancel the first/[count]th download.

==== count
The index of the download to cancel.

[[close]]
=== close
Close the current window.

[[download]]
=== download
Syntax: +:download 'url' ['dest']+

Download a given URL, given as string.

==== positional arguments
* +'url'+: The URL to download
* +'dest'+: The file path to write the download to to ask.

[[download-page]]
=== download-page
Download the current page.

[[forward]]
=== forward
Syntax: +:forward [*--tab*] [*--bg*] [*--window*]+

Go forward in the history of the current tab.

==== optional arguments
* +*-t*+, +*--tab*+: Go forward in a new tab.
* +*-b*+, +*--bg*+: Go forward in a background tab.
* +*-w*+, +*--window*+: Go forward in a new window.

==== count
How many pages to go forward.

[[help]]
=== help
Syntax: +:help [*--tab*] [*--bg*] [*--window*] ['topic']+

Show help about a command or setting.

==== positional arguments
* +'topic'+: The topic to show help for. 

 - :__command__ for commands.
 - __section__\->__option__ for settings.


==== optional arguments
* +*-t*+, +*--tab*+: Open in a new tab.
* +*-b*+, +*--bg*+: Open in a background tab.
* +*-w*+, +*--window*+: Open in a new window.

[[hint]]
=== hint
Syntax: +:hint ['group'] ['target'] ['args' ['args' ...]]+

Start hinting.

==== positional arguments
* +'group'+: The hinting mode to use. 

 - `all`: All clickable elements.
 - `links`: Only links.
 - `images`: Only images.
 


* +'target'+: What to do with the selected element. 

 - `normal`: Open the link in the current tab.
 - `tab`: Open the link in a new tab.
 - `tab-bg`: Open the link in a new background tab.
 - `window`: Open the link in a new window.
 - `hover` : Hover over the link.
 - `yank`: Yank the link to the clipboard.
 - `yank-primary`: Yank the link to the primary selection.
 - `fill`: Fill the commandline with the command given as
 argument.
 - `rapid`: Open the link in a new tab and stay in hinting mode.
 - `rapid-win`: Open the link in a new window and stay in
 hinting mode.
 - `download`: Download the link.
 - `userscript`: Call an userscript with `$QUTE_URL` set to the
 link.
 - `spawn`: Spawn a command.
 


* +'args'+: Arguments for spawn/userscript/fill. 

 - With `spawn`: The executable and arguments to spawn.
 `{hint-url}` will get replaced by the selected
 URL.
 - With `userscript`: The userscript to execute.
 - With `fill`: The command to fill the statusbar with.
 `{hint-url}` will get replaced by the selected
 URL.


[[home]]
=== home
Open main startpage in current tab.

[[inspector]]
=== inspector
Toggle the web inspector.

[[later]]
=== later
Syntax: +:later 'ms' 'command' ['command' ...]+

Execute a command after some time.

==== positional arguments
* +'ms'+: How many milliseconds to wait.
* +'command'+: The command to run, with optional args.

[[navigate]]
=== navigate
Syntax: +:navigate [*--tab*] [*--bg*] [*--window*] 'where'+

Open typical prev/next links or navigate using the URL path.

This tries to automatically click on typical _Previous Page_ or _Next Page_ links using some heuristics. Alternatively it can navigate by changing the current URL.

==== positional arguments
* +'where'+: What to open. 

 - `prev`: Open a _previous_ link.
 - `next`: Open a _next_ link.
 - `up`: Go up a level in the current URL.
 - `increment`: Increment the last number in the URL.
 - `decrement`: Decrement the last number in the URL.
 



==== optional arguments
* +*-t*+, +*--tab*+: Open in a new tab.
* +*-b*+, +*--bg*+: Open in a background tab.
* +*-w*+, +*--window*+: Open in a new window.

[[open]]
=== open
Syntax: +:open [*--bg*] [*--tab*] [*--window*] 'url'+

Open a URL in the current/[count]th tab.

==== positional arguments
* +'url'+: The URL to open.

==== optional arguments
* +*-b*+, +*--bg*+: Open in a new background tab.
* +*-t*+, +*--tab*+: Open in a new tab.
* +*-w*+, +*--window*+: Open in a new window.

==== count
The tab index to open the URL in.

[[paste]]
=== paste
Syntax: +:paste [*--sel*] [*--tab*] [*--bg*] [*--window*]+

Open a page from the clipboard.

==== optional arguments
* +*-s*+, +*--sel*+: Use the primary selection instead of the clipboard.
* +*-t*+, +*--tab*+: Open in a new tab.
* +*-b*+, +*--bg*+: Open in a background tab.
* +*-w*+, +*--window*+: Open in new window.

[[print]]
=== print
Syntax: +:print [*--preview*]+

Print the current/[count]th tab.

==== optional arguments
* +*-p*+, +*--preview*+: Show preview instead of printing.

==== count
The tab index to print.

[[quickmark-add]]
=== quickmark-add
Syntax: +:quickmark-add 'url' 'name'+

Add a new quickmark.

==== positional arguments
* +'url'+: The url to add as quickmark.
* +'name'+: The name for the new quickmark.

[[quickmark-load]]
=== quickmark-load
Syntax: +:quickmark-load [*--tab*] [*--bg*] [*--window*] 'name'+

Load a quickmark.

==== positional arguments
* +'name'+: The name of the quickmark to load.

==== optional arguments
* +*-t*+, +*--tab*+: Load the quickmark in a new tab.
* +*-b*+, +*--bg*+: Load the quickmark in a new background tab.
* +*-w*+, +*--window*+: Load the quickmark in a new window.

[[quickmark-save]]
=== quickmark-save
Save the current page as a quickmark.

[[quit]]
=== quit
Quit qutebrowser.

[[reload]]
=== reload
Reload the current/[count]th tab.

==== count
The tab index to reload.

[[repeat]]
=== repeat
Syntax: +:repeat 'times' 'command' ['command' ...]+

Repeat a given command.

==== positional arguments
* +'times'+: How many times to repeat.
* +'command'+: The command to run, with optional args.

[[report]]
=== report
Report a bug in qutebrowser.

[[restart]]
=== restart
Restart qutebrowser while keeping existing tabs open.

[[run-userscript]]
=== run-userscript
Syntax: +:run-userscript 'cmd' ['args' ['args' ...]]+

Run an userscript given as argument.

==== positional arguments
* +'cmd'+: The userscript to run.
* +'args'+: Arguments to pass to the userscript.

[[save]]
=== save
Save the config file.

[[set]]
=== set
Syntax: +:set [*--temp*] 'section' 'option' ['value']+

Set an option.

If the option name ends with '?', the value of the option is shown instead.

==== positional arguments
* +'section'+: The section where the option is in.
* +'option'+: The name of the option.
* +'value'+: The value to set.

==== optional arguments
* +*-t*+, +*--temp*+: Set value temporarily.

[[set-cmd-text]]
=== set-cmd-text
Syntax: +:set-cmd-text 'text'+

Preset the statusbar to some text.

==== positional arguments
* +'text'+: The commandline to set.

[[spawn]]
=== spawn
Syntax: +:spawn 'args' ['args' ...]+

Spawn a command in a shell.

Note the {url} variable which gets replaced by the current URL might be useful here.

==== positional arguments
* +'args'+: The commandline to execute.

[[stop]]
=== stop
Stop loading in the current/[count]th tab.

==== count
The tab index to stop.

[[tab-clone]]
=== tab-clone
Syntax: +:tab-clone [*--bg*] [*--window*]+

Duplicate the current tab.

==== optional arguments
* +*-b*+, +*--bg*+: Open in a background tab.
* +*-w*+, +*--window*+: Open in a new window.

[[tab-close]]
=== tab-close
Syntax: +:tab-close [*--left*] [*--right*] [*--opposite*]+

Close the current/[count]th tab.

==== optional arguments
* +*-l*+, +*--left*+: Force selecting the tab to the left of the current tab.
* +*-r*+, +*--right*+: Force selecting the tab to the right of the current tab.
* +*-o*+, +*--opposite*+: Force selecting the tab in the oppsite direction of what's configured in 'tabs->select-on-remove'.


==== count
The tab index to close

[[tab-focus]]
=== tab-focus
Syntax: +:tab-focus ['index']+

Select the tab given as argument/[count].

==== positional arguments
* +'index'+: The tab index to focus, starting with 1. The special value `last` focuses the last focused tab.


==== count
The tab index to focus, starting with 1.

[[tab-move]]
=== tab-move
Syntax: +:tab-move ['direction']+

Move the current tab.

==== positional arguments
* +'direction'+: `+` or `-` for relative moving, not given for absolute moving.


==== count
If moving absolutely: New position (default: 0) If moving relatively: Offset.


[[tab-next]]
=== tab-next
Switch to the next tab, or switch [count] tabs forward.

==== count
How many tabs to switch forward.

[[tab-only]]
=== tab-only
Syntax: +:tab-only [*--left*] [*--right*]+

Close all tabs except for the current one.

==== optional arguments
* +*-l*+, +*--left*+: Keep tabs to the left of the current.
* +*-r*+, +*--right*+: Keep tabs to the right of the current.

[[tab-prev]]
=== tab-prev
Switch to the previous tab, or switch [count] tabs back.

==== count
How many tabs to switch back.

[[unbind]]
=== unbind
Syntax: +:unbind 'key' ['mode']+

Unbind a keychain.

==== positional arguments
* +'key'+: The keychain or special key (inside <...>) to unbind.
* +'mode'+: A comma-separated list of modes to unbind the key in (default: `normal`).


[[undo]]
=== undo
Re-open a closed tab (optionally skipping [count] closed tabs).

[[view-source]]
=== view-source
Show the source of the current page.

[[yank]]
=== yank
Syntax: +:yank [*--title*] [*--sel*]+

Yank the current URL/title to the clipboard or primary selection.

==== optional arguments
* +*-t*+, +*--title*+: Yank the title instead of the URL.
* +*-s*+, +*--sel*+: Use the primary selection instead of the clipboard.

[[zoom]]
=== zoom
Syntax: +:zoom ['zoom']+

Set the zoom level for the current tab.

The zoom can be given as argument or as [count]. If neither of both is given, the zoom is set to 100%.

==== positional arguments
* +'zoom'+: The zoom percentage to set.

==== count
The zoom percentage to set.

[[zoom-in]]
=== zoom-in
Increase the zoom level for the current tab.

==== count
How many steps to zoom in.

[[zoom-out]]
=== zoom-out
Decrease the zoom level for the current tab.

==== count
How many steps to zoom out.


== Hidden commands
.Quick reference
[options="header",width="75%",cols="25%,75%"]
|==============
|Command|Description
|<<command-accept,command-accept>>|Execute the command currently in the commandline.
|<<command-history-next,command-history-next>>|Go forward in the commandline history.
|<<command-history-prev,command-history-prev>>|Go back in the commandline history.
|<<completion-item-next,completion-item-next>>|Select the next completion item.
|<<completion-item-prev,completion-item-prev>>|Select the previous completion item.
|<<enter-mode,enter-mode>>|Enter a key mode.
|<<follow-hint,follow-hint>>|Follow the currently selected hint.
|<<leave-mode,leave-mode>>|Leave the mode we're currently in.
|<<open-editor,open-editor>>|Open an external editor with the currently selected form field.
|<<prompt-accept,prompt-accept>>|Accept the current prompt.
|<<prompt-no,prompt-no>>|Answer no to a yes/no prompt.
|<<prompt-yes,prompt-yes>>|Answer yes to a yes/no prompt.
|<<rl-backward-char,rl-backward-char>>|Move back a character.
|<<rl-backward-delete-char,rl-backward-delete-char>>|Delete the character before the cursor.
|<<rl-backward-word,rl-backward-word>>|Move back to the start of the current or previous word.
|<<rl-beginning-of-line,rl-beginning-of-line>>|Move to the start of the line.
|<<rl-delete-char,rl-delete-char>>|Delete the character after the cursor.
|<<rl-end-of-line,rl-end-of-line>>|Move to the end of the line.
|<<rl-forward-char,rl-forward-char>>|Move forward a character.
|<<rl-forward-word,rl-forward-word>>|Move forward to the end of the next word.
|<<rl-kill-line,rl-kill-line>>|Remove chars from the cursor to the end of the line.
|<<rl-kill-word,rl-kill-word>>|Remove chars from the cursor to the end of the current word.
|<<rl-unix-line-discard,rl-unix-line-discard>>|Remove chars backward from the cursor to the beginning of the line.
|<<rl-unix-word-rubout,rl-unix-word-rubout>>|Remove chars from the cursor to the beginning of the word.
|<<rl-yank,rl-yank>>|Paste the most recently deleted text.
|<<scroll,scroll>>|Scroll the current tab by 'count * dx/dy'.
|<<scroll-page,scroll-page>>|Scroll the frame page-wise.
|<<scroll-perc,scroll-perc>>|Scroll to a specific percentage of the page.
|<<search-next,search-next>>|Continue the search to the ([count]th) next term.
|<<search-prev,search-prev>>|Continue the search to the ([count]th) previous term.
|==============
[[command-accept]]
=== command-accept
Execute the command currently in the commandline.

[[command-history-next]]
=== command-history-next
Go forward in the commandline history.

[[command-history-prev]]
=== command-history-prev
Go back in the commandline history.

[[completion-item-next]]
=== completion-item-next
Select the next completion item.

[[completion-item-prev]]
=== completion-item-prev
Select the previous completion item.

[[enter-mode]]
=== enter-mode
Syntax: +:enter-mode 'mode'+

Enter a key mode.

==== positional arguments
* +'mode'+: The mode to enter.

[[follow-hint]]
=== follow-hint
Follow the currently selected hint.

[[leave-mode]]
=== leave-mode
Leave the mode we're currently in.

[[open-editor]]
=== open-editor
Open an external editor with the currently selected form field.

The editor which should be launched can be configured via the `general -> editor` config option.

[[prompt-accept]]
=== prompt-accept
Accept the current prompt.

[[prompt-no]]
=== prompt-no
Answer no to a yes/no prompt.

[[prompt-yes]]
=== prompt-yes
Answer yes to a yes/no prompt.

[[rl-backward-char]]
=== rl-backward-char
Move back a character.

This acts like readline's backward-char.

[[rl-backward-delete-char]]
=== rl-backward-delete-char
Delete the character before the cursor.

This acts like readline's backward-delete-char.

[[rl-backward-word]]
=== rl-backward-word
Move back to the start of the current or previous word.

This acts like readline's backward-word.

[[rl-beginning-of-line]]
=== rl-beginning-of-line
Move to the start of the line.

This acts like readline's beginning-of-line.

[[rl-delete-char]]
=== rl-delete-char
Delete the character after the cursor.

This acts like readline's delete-char.

[[rl-end-of-line]]
=== rl-end-of-line
Move to the end of the line.

This acts like readline's end-of-line.

[[rl-forward-char]]
=== rl-forward-char
Move forward a character.

This acts like readline's forward-char.

[[rl-forward-word]]
=== rl-forward-word
Move forward to the end of the next word.

This acts like readline's forward-word.

[[rl-kill-line]]
=== rl-kill-line
Remove chars from the cursor to the end of the line.

This acts like readline's kill-line.

[[rl-kill-word]]
=== rl-kill-word
Remove chars from the cursor to the end of the current word.

This acts like readline's kill-word.

[[rl-unix-line-discard]]
=== rl-unix-line-discard
Remove chars backward from the cursor to the beginning of the line.

This acts like readline's unix-line-discard.

[[rl-unix-word-rubout]]
=== rl-unix-word-rubout
Remove chars from the cursor to the beginning of the word.

This acts like readline's unix-word-rubout.

[[rl-yank]]
=== rl-yank
Paste the most recently deleted text.

This acts like readline's yank.

[[scroll]]
=== scroll
Syntax: +:scroll 'dx' 'dy'+

Scroll the current tab by 'count * dx/dy'.

==== positional arguments
* +'dx'+: How much to scroll in x-direction.
* +'dy'+: How much to scroll in x-direction.

==== count
multiplier

[[scroll-page]]
=== scroll-page
Syntax: +:scroll-page 'x' 'y'+

Scroll the frame page-wise.

==== positional arguments
* +'x'+: How many pages to scroll to the right.
* +'y'+: How many pages to scroll down.

==== count
multiplier

[[scroll-perc]]
=== scroll-perc
Syntax: +:scroll-perc [*--horizontal*] ['perc']+

Scroll to a specific percentage of the page.

The percentage can be given either as argument or as count. If no percentage is given, the page is scrolled to the end.

==== positional arguments
* +'perc'+: Percentage to scroll.

==== optional arguments
* +*-x*+, +*--horizontal*+: Scroll horizontally instead of vertically.

==== count
Percentage to scroll.

[[search-next]]
=== search-next
Continue the search to the ([count]th) next term.

==== count
How many elements to ignore.

[[search-prev]]
=== search-prev
Continue the search to the ([count]th) previous term.

==== count
How many elements to ignore.


== Debugging commands
These commands are mainly intended for debugging. They are hidden if qutebrowser was started without the `--debug`-flag.

.Quick reference
[options="header",width="75%",cols="25%,75%"]
|==============
|Command|Description
|<<debug-all-objects,debug-all-objects>>|Print a list of  all objects to the debug log.
|<<debug-cache-stats,debug-cache-stats>>|Print LRU cache stats.
|<<debug-console,debug-console>>|Show the debugging console.
|<<debug-crash,debug-crash>>|Crash for debugging purposes.
|<<debug-pyeval,debug-pyeval>>|Evaluate a python string and display the results as a webpage.
|==============
[[debug-all-objects]]
=== debug-all-objects
Print a list of  all objects to the debug log.

[[debug-cache-stats]]
=== debug-cache-stats
Print LRU cache stats.

[[debug-console]]
=== debug-console
Show the debugging console.

[[debug-crash]]
=== debug-crash
Syntax: +:debug-crash ['typ']+

Crash for debugging purposes.

==== positional arguments
* +'typ'+: either 'exception' or 'segfault'.

[[debug-pyeval]]
=== debug-pyeval
Syntax: +:debug-pyeval 's'+

Evaluate a python string and display the results as a webpage.

==== positional arguments
* +'s'+: The string to evaluate.

