FreeBSD Manual Pages
cha-config(5) Configuration of Chawan cha-config(5) Configuration of Chawan Chawan supports configuration of various options like keybindings, user stylesheets, site preferences, etc. The configuration format is simi- lar to toml, with the following exceptions: • Inline tables may span across multiple lines. • Regular tables ([table]) and inline tables (table = {}) have differ- ent semantics. The first is additive, meaning old values are not re- moved. The second is destructive, and clears all definitions in the table specified. • [[table-array]] is sugar for [table-array.n], where n is the number of declared table arrays. For example, you can declare anonymous siteconfs using the syntax [[siteconf]]. The canonical configuration file path is ~/.chawan/config.toml, but the search path accommodates XDG basedirs as well: 1. config file specified through -C switch -> use that 2. $CHA_DIR is set -> use $CHA_DIR/config.toml 3. $XDG_CONFIG_HOME is set -> use $XDG_CONFIG_HOME/chawan/config.toml 4. ~/.config/chawan/config.toml exists -> use that 5. ~/.chawan/config.toml exists -> use that Start Start-up options are to be placed in the [start] section. Following is a list of start-up options: Name Value Default Function -------------------------------------------------------------------------------------- visual-home url "about:chawan" Page opened when Chawan is called with the -V option and no other pages are passed as arguments. -------------------------------------------------------------------------------------- startup-script JavaScript "" Script Chawan runs on code start-up. Pages will not be loaded until this function exits. (Note however that asynchronous functions like setTimeout do not block loading.) -------------------------------------------------------------------------------------- headless boolean / false When set to true or "dump" "dump", the browser does not take input; instead, it prints a rendered version of all buffers in order, then exits. The dif- ference between true and "dump" is that true first waits for all scripts and net- work requests to run to completion, while "dump" does not. This means that true may never exit when scripting is enabled (e.g. if a script sets setInterval.) Piping cha to an external program or passing the -d switch has the same effect as setting this option to "dump". -------------------------------------------------------------------------------------- console-buffer boolean true Whether Chawan should open a console buffer in non-headless mode. Warning: this is only useful for debugging. Disabling this option without manually redi- recting standard error will result in error messages randomly ap- pearing on your screen. Buffer Buffer options are to be placed in the [buffer] section. These options are global to all buffers. For more granular filtering, use [[siteconf]]. Example: [buffer] # show images on all websites images = true # disable website CSS styling = false # You *can* set scripting to true here, but I strongly recommend using # [[siteconf]] to enable it on a per-site basis instead. Following is a list of buffer options: Name Value Default Function ----------------------------------------------------------------------------------- styling boolean true Enable/disable author style sheets. Note that disabling this does not affect user styles set in [css]. ----------------------------------------------------------------------------------- scripting boolean / false Enable/disable "app" JavaScript in all buffers. "app" also enables JavaScript APIs that can be used to fingerprint users (e.g. querying the window's size.) This may achieve better compatibility with websites that behave like applications, at the cost of reduced privacy. For security reasons, users are en- couraged to selec- tively enable JavaScript with [[siteconf]] instead of using this setting. ----------------------------------------------------------------------------------- images boolean false Enable/disable inline image display. ----------------------------------------------------------------------------------- cookie boolean / false Enable/disable cookies "save" on sites. If the string "save" is spec- ified, then cookies are also saved to ex- ternal.cookie-file. true still reads cook- ies.txt, but does not modify it. In Chawan, each website gets a separate cookie jar, so websites relying on cross-site cookies may not work as expected. You may use the [[siteconf]] "share-cookie-jar" setting to adjust this behavior for specific sites. ----------------------------------------------------------------------------------- ref- boolean false Enable/disable the erer-from "Referer" header. De- faults to false. For privacy reasons, users are encouraged to leave this option dis- abled, only enabling it for specific sites in [[siteconf]]. ----------------------------------------------------------------------------------- autofocus boolean false When set to true, ele- ments with an "autofo- cus" attribute are fo- cused on automatically after the buffer is loaded. If scripting is enabled, this also allows scripts to fo- cus on elements. ----------------------------------------------------------------------------------- meta-re- "never" / "al- "ask" Whether or not fresh ways" / "ask" http-equiv=refresh meta tags should be respected. "never" completely disables them, "always" auto- matically accepts all of them, "ask" brings up a pop-up menu. ----------------------------------------------------------------------------------- history boolean true Whether or not brows- ing history should be saved to the disk. ----------------------------------------------------------------------------------- mark-links boolean false Add numeric markers before links. In headless/dump mode, this also prints a list of URLs after the page. ----------------------------------------------------------------------------------- user-style string "" A user stylesheet ap- plied to all buffers. External stylesheets can be imported using the @import 'file.css'; syntax. Paths are relative to the configuration di- rectory. Nested @im- port is not supported yet. Search Search options are to be placed in the [search] section. Following is a list of search options: Name Value Default Function ----------------------------------------------------------------------------------- wrap boolean true Whether on-page searches should wrap around the document. ----------------------------------------------------------------------------------- ignore-case "auto" / "auto" When set to true, doc- boolean ument-wide searches are case-insensitive by default. When set to "auto", searches are only case-sensi- tive when the search term includes a capi- tal letter. Note: this can also be over- ridden inline in the search bar (vim-style), with the escape sequences \c (ignore case) and \C (strict case). See search mode for de- tails.) Encoding Encoding options are to be placed in the [encoding] section. Following is a list of encoding options: Name Value Default Function ------------------------------------------------------------------------------------ docu- array of ["utf-8", "sjis", List of character sets ment-charset charset label "euc-jp", "latin2"] for loading documents. strings All listed character sets are enumerated until the document has been decoded without errors. In HTML, meta tags and the BOM may override this with a different charset, so long as the specified charset can decode the document correctly. ------------------------------------------------------------------------------------ dis- string "auto" Character set for key- play-charset board input and dis- playing documents. Used in dump mode as well. (This means that e.g. cha -I EUC-JP -O UTF-8 a > b is roughly equivalent to iconv -f EUC-JP -t UTF-8.) External External options are to be placed in the [external] section. Following is a list of external options: Name Value Default Function ------------------------------------------------------------------------------------ tmpdir path {usually Directory used to save /tmp/cha-tmp-user} temporary files. ------------------------------------------------------------------------------------ editor shell command {usually $EDITOR} External editor com- mand. %s is substi- tuted for the file name, %d for the line number. ------------------------------------------------------------------------------------ mailcap array of paths {see mailcap docs} Search path for mail- cap files. (See cha-mailcap(5) for de- tails.) ------------------------------------------------------------------------------------ mime-types array of paths {see mime.types Search path for docs} mime.types files. (See cha-mime.types(5) for details.) ------------------------------------------------------------------------------------ auto-mail- path "auto.mailcap" Mailcap file for en- cap tries that are auto- matically executed. The "Open as" prompt also saves entries in this file. ------------------------------------------------------------------------------------ cgi-dir array of paths {see local CGI docs} Search path for local CGI scripts. (See cha-localcgi(5) for details.) ------------------------------------------------------------------------------------ urimethodmap array of paths {see urimethodmap Search path for docs} urimethodmap files. (See cha-urimethodmap(5) for details.) ------------------------------------------------------------------------------------ w3m-cgi-com- boolean false Enable local CGI com- pat patibility with w3m. In short, it redirects file:///cgi-bin/* and file:///$LIB/cgi-bin/* to cgi-bin:*. For further details, see cha-localcgi(5). ------------------------------------------------------------------------------------ download-dir path {same as tmpdir} Path to pre-fill for "Save to:" prompts. ------------------------------------------------------------------------------------ show-down- boolean true Whether the load-panel about:downloads should be shown after start- ing a download. ------------------------------------------------------------------------------------ copy-cmd shell command "xsel -bi" Command to use for "copy to clipboard" operations. ------------------------------------------------------------------------------------ paste-cmd shell command "xsel -bo" Command to use for "read from clipboard" operations. ------------------------------------------------------------------------------------ bookmark path "bookmark.md" Path to the book- mark.md file. (The file it points to should have a .md ex- tension, so that its type can be correctly deduced.) ------------------------------------------------------------------------------------ history-file path "history.uri" Path to the history file. ------------------------------------------------------------------------------------ history-size number 100 Maximum length of the history file. ------------------------------------------------------------------------------------ cookie-file path "cookies.txt" Path to the cookie file. The format is equivalent to curl's "cookies.txt" format, except that a "jar@" part is prepended for cookies that belong in a different jar than the domain. Cookies from this file are used if "buffer.cookie" (or its equivalent site- conf override) is set to true or "save". This means that true sets the cookie-file to a "read-only" mode. Input Input options are to be placed in the [input] section. Name Value Function ------------------------------------------------------------------------------------ vi-numeric-pre- boolean true Whether fix vi-style nu- meric pre- fixes to com- mands should be ac- cepted. Only ap- plies for key- bind- ings de- fined in [page]. ------------------------------------------------------------------------------------ use-mouse boolean true Whether Chawan is al- lowed to inter- cept mouse clicks. The cur- rent im- plemen- tation imitates w3m. Examples: [input] vi-numeric-prefix = true [page] # Here, the arrow function will be called with the vi numbered prefix if # one was input, and with no argument otherwise. # The numeric prefix can never be zero, so it is safe to test for undefined # using the ternary operator. G = 'n => n ? pager.gotoLine(n) : pager.cursorLastLine()' Network Network options are to be placed in the [network] section. Name Value Default Function ------------------------------------------------------------------------------------------ max-redi- number 10 Maximum number of rect redirections to fol- low. ------------------------------------------------------------------------------------------ max-net-con- number 12 Maximum number of si- nections multaneous network connections allowed in one buffer. Further connections are held back until the number returns below the threshold. ------------------------------------------------------------------------------------------ prepend-scheme string "https://" Prepend this to URLs passed to Chawan with- out a scheme. Note that local files (file: scheme) will always be checked first; only if this fails, Chawan will retry the request with prepend-scheme set as the scheme. ------------------------------------------------------------------------------------------ prepend-https boolean true Deprecated: use prepend-scheme in- stead. When set to false, Chawan will act as if prepend-scheme were set to "". ------------------------------------------------------------------------------------------ proxy URL unset Specify a proxy for all network requests Chawan makes. Cur- rently, the formats http://user:pass@do- main and socks5://user:pass@do- main are accepted. (Unlike in curl, socks5h is an alias of socks5, and DNS re- quests are always tun- neled.) Can be over- ridden by siteconf. ------------------------------------------------------------------------------------------ default-head- table {omitted} Specify a list of de- ers fault headers for all HTTP(S) network re- quests. Can be over- ridden by siteconf. ------------------------------------------------------------------------------------------ al- boolean false WARNING: think twice low-http-from-file before enabling this. Allows HTTP and HTTPS requests from the file: and stream: schemes. This is a very bad idea in gen- eral, because it al- lows local files to ping remote servers (a functionality commonly abused by HTML e-mails to track your mailbox activity.) On the other hand, it allows loading images in HTML e-mails if you don't care about the privacy implications. Display Display options are to be placed in the [display] section. Following is a list of display options: Name Value Default Function -------------------------------------------------------------------------------------- color-mode "monochrome" / "auto" Set the color mode. "ansi" / "auto" for automatic "eight-bit" / detection, "mono- "true-color" / chrome" for black on "auto" white, "ansi" for ansi colors, "eight-bit" for 256-color mode, and "true-color" for true colors. -------------------------------------------------------------------------------------- format-mode "auto" / "auto" Specifies output for- ["bold", matting modes. Ac- "italic", "un- cepts the string derline", "re- "auto" or an array of verse", specific attributes. "strike", An empty array ([]) "overline", disables formatting "blink"] completely. -------------------------------------------------------------------------------------- no-for- ["bold", "overline" Disable specific for- mat-mode "italic", "un- matting modes. derline", "re- verse", "strike", "overline", "blink"] -------------------------------------------------------------------------------------- image-mode "auto" / "auto" Specifies the image "none" / output mode. "sixel" "sixel" / uses sixels for out- "kitty" put, "kitty" uses the Kitty image display protocol, "none" dis- ables image display completely. "auto" tries to detect sixel or kitty support, and falls back to "none" when neither are available. This is the default setting, but you must also en- able buffer.images for images to work. -------------------------------------------------------------------------------------- sixel-col- "auto" / "auto" Only applies when dis- ors 2..65535 play.im- age-mode="sixel". Setting a number over- rides the number of sixel color registers reported by the termi- nal. -------------------------------------------------------------------------------------- alt-screen "auto" / "auto" Enable/disable the al- boolean ternative screen. -------------------------------------------------------------------------------------- high- color "cyan" Set the highlight light-color color. Both hex val- ues and CSS color names are accepted. -------------------------------------------------------------------------------------- high- boolean true Enable/disable high- light-marks lighting of marks. -------------------------------------------------------------------------------------- dou- boolean false Assume the terminal ble-width-am- displays characters in biguous the East Asian Ambigu- ous category as dou- ble-width characters. Useful when e.g. oc- cupies two cells. -------------------------------------------------------------------------------------- minimum-con- number 100 Specify the minimum trast difference between the luminance (Y) of the background and the foreground. -1 dis- ables this function (i.e. allows black letters on black back- ground, etc). -------------------------------------------------------------------------------------- force-clear boolean false Force the screen to be completely cleared every time it is re- drawn. -------------------------------------------------------------------------------------- set-title boolean true Set the terminal emu- lator's window title to that of the current page. -------------------------------------------------------------------------------------- default-back- "auto" / color "auto" Overrides the assumed ground-color background color of the terminal. "auto" leaves background color detection to Chawan. -------------------------------------------------------------------------------------- default-fore- "auto" / color "auto" Sets the assumed fore- ground-color ground color of the terminal. "auto" leaves foreground color detection to Chawan. -------------------------------------------------------------------------------------- query-da1 bool true Enable/disable query- ing Primary Device At- tributes, and with it, all "dynamic" terminal querying. Do not al- ter this value unless Chawan told you so; the output will look awful. -------------------------------------------------------------------------------------- columns, number 80, 24, 9, 18 Fallback values for lines, pix- the number of columns, els-per-col- lines, pixels per col- umn, pix- umn, and pixels per els-per-line line for the cases where it cannot be de- termined automati- cally. (For example, these values are used in dump mode.) -------------------------------------------------------------------------------------- force-columns, boolean false Force-set columns, force-lines, lines, pixels per col- force-pix- umn, or pixels per els-per-col- line to the fallback umn, values provided above. force-pix- els-per-line Protocol Protocol-related rules are to be placed in objects keyed as [proto- col.{protocol-name}]. e.g. FTP related rules are placed in in [proto- col.ftp]. Name Value Default Function ----------------------------------------------------------------------------------- form-re- "http" / "ftp" "http" Specify which protocol quest / "data" / to imitate when sub- "mailto" mitting forms to this protocol. Omnirule The omni-bar (by default opened with C-l) can be used to perform searches using omni-rules. These are to be specified as sub-keys to table [omnirule]. (The sub-key itself is ignored; you can use anything as long it doesn't conflict with other keys.) Examples: # Search using DuckDuckGo Lite. # (This rule is included in the default config, although C-k now invokes # Google search.) [omnirule.ddg] match = '^ddg:' substitute-url = '(x) => "https://lite.duckduckgo.com/lite/?kp=-1&kd=-1&q=" + encodeURIComponent(x.split(":").slice(1).join(":"))' # Search using Wikipedia, Firefox-style. # The [[omnirule]] syntax introduces an anonymous omnirule; it is # equivalent to the named one. [[omnirule]] match = '^@wikipedia' substitute-url = '(x) => "https://en.wikipedia.org/wiki/Special:Search?search=" + encodeURIComponent(x.replace(/@wikipedia/, ""))' Omnirule options: Name Value Function -------------------------------------------------------------------------------- match regex Regular expression used to match the input string. Note that websites passed as argu- ments are matched as well. Note: regexes are handled ac- cording to the match mode regex handling rules. -------------------------------------------------------------------------------- substitute-url JavaScript function A JavaScript function Chawan will pass the input string to. If a new string is returned, it will be parsed instead of the old one. Siteconf Configuration options can be specified for individual sites. Entries are to be specified as sub-keys to table [siteconf]. (The sub-key it- self is ignored; you can use anything as long it doesn't conflict with other keys.) Most siteconf options can also be specified globally; see the "over- rides" field. Examples: # Enable cookies on the orange website for log-in. [siteconf.hn] url = 'https://news\.ycombinator\.com/.*' cookie = true # Redirect npr.org to text.npr.org. [siteconf.npr] host = '(www\.)?npr\.org' rewrite-url = ''' (x) => { x.host = "text.npr.org"; const s = x.pathname.split('/'); x.pathname = s.at(s.length > 2 ? -2 : 1); /* No need to return; URL objects are passed by reference. */ } ''' # Allow cookie sharing on *sr.ht domains. [siteconf.sr-ht] host = '(.*\.)?sr\.ht' # either 'something.sr.ht' or 'sr.ht' cookie = true # enable cookies (read-only; use "save" to persist them) share-cookie-jar = 'sr.ht' # use the cookie jar of 'sr.ht' for all matched hosts # Use the "vector" skin on Wikipedia. # The [[siteconf]] syntax introduces an anonymous siteconf; it is # equivalent to the above ones. [[siteconf]] url = '^https?://[a-z]+\.wikipedia\.org/wiki/(?!.*useskin=.*)' rewrite-url = 'x => x.searchParams.append("useskin", "vector")' # Make imgur send us images. [siteconf.imgur] host = '(i\.)?imgur\.com' default-headers = { User-Agent = "Mozilla/5.0 chawan", Accept = "*/*", Accept-Encoding = "gzip, deflate", Accept-Language = "en;q=1.0", Pragma = "no-cache", Cache-Control = "no-cache" } Siteconf options: Name Value Overrides Function ----------------------------------------------------------------------------------------- url regex n/a Regular expression used to match the URL. Either this or the host option must be specified. Note: regexes are handled according to the match mode regex han- dling rules. ----------------------------------------------------------------------------------------- host regex n/a Regular expression used to match the host part of the URL (i.e. domain name/ip address.) Either this or the url op- tion must be speci- fied. Note: regexes are handled according to the match mode regex handling rules. ----------------------------------------------------------------------------------------- rewrite-url JavaScript n/a A JavaScript function function Chawan will pass the site's URL object to. If a new URL is re- turned, or the URL object is modified in any way, Chawan will transparently redi- rect the user to this new URL. ----------------------------------------------------------------------------------------- cookie boolean / buffer.cookie Whether loading (with "save" "save", also saving) cookies should be al- lowed for this URL. ----------------------------------------------------------------------------------------- share-cookie-jar host n/a Cookie jar to use for this domain. Useful for e.g. sharing cookies with subdo- mains. ----------------------------------------------------------------------------------------- referer-from boolean buffer.referer-from Whether or not we should send a Referer header when opening requests originating from this domain. Simplified example: if you click a link on a.com that refers to b.com, and ref- erer-from is true, b.com is sent "a.com" as the Referer header. ----------------------------------------------------------------------------------------- scripting boolean / buffer.scripting Enable/disable "app" JavaScript execution on this site. See buffer.scripting for details. ----------------------------------------------------------------------------------------- styling boolean buffer.styling Enable/disable author styles (CSS) on this site. ----------------------------------------------------------------------------------------- images boolean buffer.images Enable/disable image display on this site. ----------------------------------------------------------------------------------------- document-charset charset label encoding.docu- Specify the default string ment-charset encoding for this site. ----------------------------------------------------------------------------------------- stylesheet CSS n/a Specify an additional stylesheet user-stylesheet for this site. Other user-stylesheets are concatenated with this to get the final user stylesheet. Note: this setting is deprecated. Please use user-style in- stead. ----------------------------------------------------------------------------------------- proxy URL network.proxy Specify a proxy for network requests fetching contents of this buffer. ----------------------------------------------------------------------------------------- default-headers table network.default-headers Specify a list of de- fault headers for HTTP(S) network re- quests to this buffer. ----------------------------------------------------------------------------------------- inse- boolean n/a Defaults to false. cure-ssl-no-ver- When set to true, ify this disables peer and hostname verifi- cation for SSL keys on this site, like curl --insecure would. Please do not use this unless you are absolutely sure you know what you are doing. ----------------------------------------------------------------------------------------- autofocus boolean buffer.autofocus When set to true, el- ements with an "auto- focus" attribute are focused on automati- cally after the buffer is loaded. If scripting is enabled, this also allows scripts to focus on elements. ----------------------------------------------------------------------------------------- meta-refresh "never" / buffer.meta-refresh Whether or not "always" / http-equiv=refresh "ask" meta tags should be respected. "never" completely disables them, "always" auto- matically accepts all of them, "ask" brings up a pop-up menu. ----------------------------------------------------------------------------------------- history boolean buffer.history Whether or not brows- ing history should be saved to the disk for this URL. ----------------------------------------------------------------------------------------- mark-links boolean buffer.history Add numeric markers before links. ----------------------------------------------------------------------------------------- user-style string buffer.user-style Specify a user style sheet specific to the site. Please refer to buffer.user-style for details. Stylesheets The [css] section is deprecated, and will be removed in the future. Please use buffer.user-style instead. (user-style accepts inline styles by default, but can also include ex- ternal stylesheets using @import 'file.css';.) Keybindings Keybindings are to be placed in these sections: • for pager interaction: [page] • for line editing: [line] Keybindings are configured using the syntax '<keybinding>' = '<action>' Where <keybinding> is a combination of unicode characters with or with- out modifiers. Modifiers are the prefixes C- and M-, which add control or escape to the keybinding respectively (essentially making M- the same as C-[). Modifiers can be escaped with the \ sign. <action> is either a command defined in the [cmd] section, or a JavaScript expression. Here we only describe the pre-defined actions in the default config; for a description of the API, please see: The API documentation at cha-api(5). Examples: # show change URL when Control, Escape and j are pressed 'C-M-j' = 'cmd.pager.load' # go to the first line of the page when g is pressed twice without a preceding # number, or to the line when a preceding number is given. 'gg' = 'cmd.buffer.gotoLineOrStart' # JS functions and expressions are accepted too. Following replaces the # default search engine with DuckDuckGo Lite. # (See api.md for a list of available functions, and a discussion on how # to add your own "namespaced" commands like above.) 'C-k' = '() => pager.load("ddg:")' Pager actions Default key Name Function ----------------------------------------------------------------------------------------- q cmd.pager.quit Exit the browser. ----------------------------------------------------------------------------------------- C-z cmd.pager.sus- Temporarily suspend the pend browser Note: this also suspends e.g. buffer processes or CGI scripts. So if you are downloading something, that will be delayed until you restart the process. ----------------------------------------------------------------------------------------- C-l cmd.pager.load Open the current ad- dress in the URL bar. ----------------------------------------------------------------------------------------- C-k cmd.pager.web- Open the URL bar with Search an arbitrary search en- gine. At the moment, this is Google Search, but this may change in the future. ----------------------------------------------------------------------------------------- M-u cmd.pager.dupe- Duplicate the current Buffer buffer by loading its source to a new buffer. ----------------------------------------------------------------------------------------- U cmd.pager.re- Open a new buffer with loadBuffer the current buffer's URL, replacing the cur- rent buffer. ----------------------------------------------------------------------------------------- C-g cmd.pager.line- Display information Info about the current line on the status line. ----------------------------------------------------------------------------------------- \ cmd.pager.tog- If viewing an HTML gleSource buffer, open a new buffer with its source. Otherwise, open the current buffer's con- tents as HTML. ----------------------------------------------------------------------------------------- D cmd.pager.dis- Discard the current cardBuffer buffer, and move back to the previous/next buffer depending on what the previously viewed buffer was. ----------------------------------------------------------------------------------------- d,, d. cmd.pager.dis- Discard the current cardBufferPrev, buffer, and move back cmd.pager.dis- to the previous/next cardBufferNext buffer, or open the link under the cursor. ----------------------------------------------------------------------------------------- M-d cmd.pager.dis- Discard all child cardTree buffers of the current buffer. ----------------------------------------------------------------------------------------- ., ,, M-,, M-., M-/ cmd.pager.nextBuffer, Traverse the buffer cmd.pager.pre- tree. nextBuffer and vBuffer, prevBuffer are the most cmd.pager.pre- intuitive, traversing vSiblingBuffer, the tree as if it were cmd.pager.nextSi- a linked list. prevSi- blingBufer, blingBuffer and nextSi- cmd.pager.par- blingBuffer cycle entBuffer through the buffers opened from the same buffer. Finally, par- entBuffer always re- turns to the buffer the current buffer was opened from, even if e.g. the user returns and opens another page "in between". ----------------------------------------------------------------------------------------- M-c cmd.pager.enterCom- Directly enter a mand JavaScript command. Note that this inter- acts with the pager, not the website being displayed. ----------------------------------------------------------------------------------------- None cmd.pager.searchFor- Search for a string in ward, the current buffer, cmd.pager.searchBack- forwards or backwards. ward ----------------------------------------------------------------------------------------- /, ? cmd.pager.isearchFor- Incremental-search for ward, a string, highlighting cmd.pager.searchBack- the first result, for- ward wards or backwards. ----------------------------------------------------------------------------------------- n, N cmd.pager.searchNext, Jump to the nth (or if cmd.pager.searchPrev unspecified, first) next/previous search result. ----------------------------------------------------------------------------------------- c cmd.pager.peek Display a message of the current buffer's URL on the status line. ----------------------------------------------------------------------------------------- u cmd.pager.peekCursor Display a message of the URL or title under the cursor on the sta- tus line. Multiple calls allow cycling through the two. (i.e. by default, press u once -> title, press again -> URL) ----------------------------------------------------------------------------------------- su cmd.pager.showFul- Show the last alert in- lAlert side the line editor. You can also view pre- vious ones using C-p or C-n. ----------------------------------------------------------------------------------------- M-y cmd.pager.copyURL Copy the current buffer's URL to the system clipboard. ----------------------------------------------------------------------------------------- yu cmd.pager.copyCursor- Copy the link under the Link cursor to the system clipboard. ----------------------------------------------------------------------------------------- yI cmd.pager.copyCur- Copy the URL of the im- sorImage age under the cursor to the system clipboard. ----------------------------------------------------------------------------------------- M-p cmd.pager.gotoClip- Go to the URL currently boardURL on the clipboard. ----------------------------------------------------------------------------------------- M-b cmd.pager.openBook- Open the bookmark file. marks ----------------------------------------------------------------------------------------- M-a cmd.pager.addBookmark Add the current page to your bookmarks. Buffer actions Note: n in the following text refers to a number preceding the action. e.g. in 10gg, n = 10. If no preceding number is input, then it is left unspecified. Default key Name Function ------------------------------------------------------------------------------------------------ j, k cmd.buffer.cur- Move the cursor up- sorUp, wards/downwards by n cmd.buffer.cur- lines, or if n is un- sorDown specified, by 1. ------------------------------------------------------------------------------------------------ h, l cmd.buffer.cur- Move the cursor to the sorLeft, left/right by n cells, cmd.buffer.cur- or if n is unspecified, sorRight by 1. ------------------------------------------------------------------------------------------------ 0/Home cmd.buffer.cur- Move the cursor to the sorLineBegin first cell of the line. ------------------------------------------------------------------------------------------------ ^ cmd.buffer.cur- Move the cursor to the sorLine- first non-blank charac- TextStart ter of the line. ------------------------------------------------------------------------------------------------ $/End cmd.buffer.cur- Move the cursor to the sorLineEnd last cell of the line. ------------------------------------------------------------------------------------------------ w, W cmd.buffer.cur- Move the cursor to the sorNextWord, beginning of the next cmd.buffer.cur- word. sorNextViWord, cmd.buffer.cur- sorNextBigWord ------------------------------------------------------------------------------------------------ None cmd.buffer.cur- Move the cursor to the sorPrevWord, end of the previous cmd.buffer.cur- word. sorPrevViWord, cmd.buffer.cur- sorPrevBigWord ------------------------------------------------------------------------------------------------ e, E cmd.buffer.cur- Move the cursor to the sorWordEnd, end of the current cmd.buffer.cur- word, or if already sorViWordEnd, there, to the end of cmd.buffer.cur- the next word. sorBigWordEnd ------------------------------------------------------------------------------------------------ b, B cmd.buffer.cur- Move the cursor to the sorWordBegin, beginning of the cur- cmd.buffer.cur- rent word, or if al- sorViWordBegin, ready there, to the end cmd.buffer.cur- of the previous word. sorBigWordBegin ------------------------------------------------------------------------------------------------ [, ] cmd.buffer.cur- Move the cursor to the sorPrevLink, end/beginning of the cmd.buffer.cur- previous/next clickable sorNextLink element (e.g. link, in- put field, etc). ------------------------------------------------------------------------------------------------ {, } cmd.buffer.cur- Move the cursor to the sorPrevPara- end/beginning of the graph, nth previous/next para- cmd.buffer.cur- graph. sorNextPara- graph ------------------------------------------------------------------------------------------------ None cmd.buffer.cur- Move the cursor to the sorRevNthLink nth link of the docu- ment, counting back- wards from the docu- ment's last line. ------------------------------------------------------------------------------------------------ None cmd.buffer.cur- Move the cursor to the sorNthLink nth link of the docu- ment. ------------------------------------------------------------------------------------------------ C-b, C-f, zH, zL cmd.buffer.pageUp, Scroll cmd.buffer.page- up/down/left/right by n Down, pages, or if n is un- cmd.buffer.pageLeft, specified, by one page. cmd.buffer.pageRight ------------------------------------------------------------------------------------------------ C-u, C-d cmd.buffer.half- Scroll PageUp, up/down/left/right by n cmd.buffer.halfPage- half pages, or if n is Down, unspecified, by one cmd.buffer.half- page. PageLeft, cmd.buffer.half- PageUp ------------------------------------------------------------------------------------------------ K/C-y, J/C-e, zh, zl cmd.buffer.scrollUp, Scroll cmd.buffer.scroll- up/down/left/right by n Down, lines, or if n is un- cmd.buffer.scrol- specified, by one line. lLeft, cmd.buffer.scroll- Right ------------------------------------------------------------------------------------------------ Enter/Return cmd.buffer.click Click the HTML element currently under the cursor. ------------------------------------------------------------------------------------------------ I cmd.buffer.viewImage View the image cur- rently under the cursor in an external viewer. ------------------------------------------------------------------------------------------------ R cmd.buffer.reshape Reshape the current buffer (=render the current page anew.) Useful if the layout is not updating even though it should have. ------------------------------------------------------------------------------------------------ r cmd.buffer.redraw Redraw screen contents. Useful if something messed up the display. ------------------------------------------------------------------------------------------------ None (see gotoLineOrStart/End cmd.buffer.cursor- Move to the begin- instead) FirstLine, ning/end in the buffer. cmd.buffer.cursor- LastLine ------------------------------------------------------------------------------------------------ H cmd.buffer.cursorTop Move to the first line on the screen. (Equiv- alent to H in vi.) ------------------------------------------------------------------------------------------------ M cmd.buffer.cur- Move to the line in the sorMiddle middle of the screen. (Equivalent to M in vi.) ------------------------------------------------------------------------------------------------ L cmd.buffer.cursor- Move to the last line Bottom on the screen. (Equiv- alent to L in vi.) ------------------------------------------------------------------------------------------------ zt, z Return, zz, z., zb, z- cmd.buffer.raiseP- If n is specified, move age, cursor to line n. Then, cmd.buffer.raisePa- * raisePage scrolls geBegin, down so that the cursor cmd.buffer.center- is on the top line of Line, the screen. (vi z<CR>, cmd.buffer.center- vim zt.) * centerLine LineBegin, shifts the screen so cmd.buffer.lower- that the cursor is in Page, the middle of the cmd.buffer.lower- screen. (vi z., vim PageBegin zz.) * lowerPage scrolls up so that the cursor is on the bottom line of the screen. (vi z-, vim zb.) The -Begin variants also move the cursor to the line's first non-blank character, as the vari- ants originating from vi do. ------------------------------------------------------------------------------------------------ z+ cmd.buffer.nextPage- If n is specified, move Begin to the screen before the nth line and raise the page. Otherwise, go to the previous screen's last line and raise the page. ------------------------------------------------------------------------------------------------ z^ cmd.buffer.previous- If n is specified, move PageBegin to the screen before the nth line and raise the page. Otherwise, go to the previous screen's last line and raise the page. ------------------------------------------------------------------------------------------------ g0, gc, g$ cmd.buffer.cursor- Move to the first/mid- LeftEdge, dle/last column on the cmd.buffer.cur- screen. sorMiddleColumn, cmd.buffer.cursor- RightEdge ------------------------------------------------------------------------------------------------ None cmd.buffer.center- Center screen around Column the current column. (w3m Z.) ------------------------------------------------------------------------------------------------ gg, G cmd.buffer.gotoLine- If n is specified, jump OrStart, to line n. Otherwise, cmd.buffer.gotoLine- jump to the start/end OrEnd of the page. ------------------------------------------------------------------------------------------------ , None cmd.buffer.gotoColum- If nOrBegin, n cmd.buffer.gotoColum- is nOrEnd spec- i- fied, jump to col- umn n of the cur- rent line. Oth- er- wise, jump to the first/last col- umn. ------------------------------------------------------------------------------------------------ m cmd.buffer.mark Wait for a character x and then set a mark with the ID x. ------------------------------------------------------------------------------------------------ `, ' cmd.buffer.gotoMark, Wait for a character x cmd.buffer.gotoMarkY and then jump to the mark with the ID x (if it exists on the page). gotoMark sets both the X and Y positions; go- toMarkY only sets the Y position. ------------------------------------------------------------------------------------------------ : cmd.buffer.markURL Convert URL-like strings to anchors on the current page. ------------------------------------------------------------------------------------------------ s Return cmd.buffer.saveLink Save resource from the URL pointed to by the cursor to the disk. ------------------------------------------------------------------------------------------------ sS cmd.buffer.saveSource Save the source of the current buffer to the disk. ------------------------------------------------------------------------------------------------ sI cmd.buffer.saveImage Save the image cur- rently under the cur- sor. ------------------------------------------------------------------------------------------------ M-i cmd.buffer.toggleIm- Toggle display of im- ages ages in the current buffer. ------------------------------------------------------------------------------------------------ M-j cmd.buffer.toggle- Reload the current Scripting buffer with scripting enabled/disabled. ------------------------------------------------------------------------------------------------ M-k cmd.buffer.toggle- Reload the current Cookie buffer with cookies en- abled/disabled. Line-editing actions Default key Name Function ------------------------------------------------------------------------------------- Return cmd.line.sub- Submit the line. mit ------------------------------------------------------------------------------------- C-c cmd.line.can- Cancel the current op- cel eration. ------------------------------------------------------------------------------------- C-h, C-d cmd.line.back- Delete character before space, (backspace)/after cmd.line.delete (delete) the cursor. ------------------------------------------------------------------------------------- C-u, C-k cmd.line.clear, Delete text before cmd.line.kill (clear)/after (kill) the cursor. ------------------------------------------------------------------------------------- C-w, M-d cmd.line.clear- Delete word before Word, (clear)/after (kill) cmd.line.kill- the cursor. Word ------------------------------------------------------------------------------------- C-b, C-f cmd.line.back- Move cursor back- ward, ward/forward by one cmd.line.for- character. ward ------------------------------------------------------------------------------------- M-b, M-f cmd.line.pre- Move cursor to the pre- vWord, vious/next word by one cmd.line.nextWord character ------------------------------------------------------------------------------------- C-a/Home, C-e/End cmd.line.begin, Move cursor to the be- cmd.line.end ginning/end of the line. ------------------------------------------------------------------------------------- C-v cmd.line.escape Ignore keybindings for next character. ------------------------------------------------------------------------------------- C-p, C-n cmd.line.pre- Jump to the previ- vHist, ous/next history entry cmd.line.nextHist Note: to facilitate URL editing, the line editor has a different defin- ition of what a word is than the pager. For the line editor, a word is either a sequence of alphanumeric characters, or any single non-al- phanumeric character. (This means that e.g. https:// consists of four words: https, :, / and /.) # Control+A moves the cursor to the beginning of the line. 'C-a' = 'cmd.line.begin' # Escape+D deletes everything after the cursor until it reaches a word-breaking # character. 'M-d' = 'cmd.line.killWord' Appendix Regex handling Regular expressions are currently handled using the libregexp library from QuickJS. This means that all regular expressions work as in JavaScript. There are two different modes of regex preprocessing in Chawan: "search" mode and "match" mode. Match mode is used for configurations (meaning in all values in this document described as "regex"). Search mode is used for the on-page search function (using searchFor- ward/isearchForward etc.) Match mode Regular expressions are assumed to be exact matches, except when they start with a caret (^) sign or end with an unescaped dollar ($) sign. In other words, the following transformations occur: ^abcd -> ^abcd (no change, only beginning is matched) efgh$ -> efgh$ (no change, only end is matched) ^ijkl$ -> ^ijkl$ (no change, the entire line is matched) mnop -> ^mnop$ (changed to exact match, the entire line is matched) Match mode has no way to toggle JavaScript regex flags like i. Search mode For on-page search, the above transformations do not apply; the search /abcd searches for the string abcd inside all lines. Search mode also has some other convenience transformations (these do not work in match mode): • The string \c (backslash + lower-case c) inside a search-mode regex enables case-insensitive matching. • Conversely, \C (backslash + capital C) disables case-insensitive matching. (Useful if you have ignore-case set to true, which is the default.) • \< and \> is converted to \b (as in vi, grep, etc.) Like match mode, search mode operates on individual lines. This means that search patterns do not match text wrapped over multiple lines. Path handling Rules for path handling are similar to how the shell handles strings. • Tilde-expansion is used to determine the user's home directory. So e.g. ~/whatever works. • Environment variables can be used like $ENV_VAR. • Relative paths are relative to the Chawan configuration directory (i.e. $CHA_DIR). Some environment variables are also exported by Chawan: • $CHA_BIN_DIR: the directory which the cha binary resides in. Sym- bolic links are automatically resolved to determine this path. • $CHA_LIBEXEC_DIR: the directory for all executables Chawan uses for operation. By default, this is $CHA_BIN_DIR/../libexec/chawan. • $CHA_DIR: the configuration directory. (This can also be set by the user; see the top section for details. $CHA_CONFIG_DIR is a depre- cated alias for this.) Word types Word-based pager commands can operate with different definitions of words. Currently, these are: • w3m words • vi words • Big words w3m word A w3m word is a sequence of alphanumeric characters. Symbols are treated in the same way as whitespace. vi word A vi word is a sequence of characters in the same character category. Currently, character categories are alphanumeric characters, symbols, han letters, hiragana, katakana, and hangul. vi words may be separated by whitespace; however, vi words from sepa- rate categories do not have to be whitespace-separated. e.g. the fol- lowing character sequence contains two words: hello[]+{}@`! Big word A big word is a sequence of non-whitespace characters. It is essentially the same as a w3m word, but with symbols being de- fined as non-whitespace. See also cha(1) cha-api(7) cha-config(5)
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=cha-config&sektion=5&manpath=FreeBSD+Ports+15.0>
