3 .\" Copyright (c) 2010, 2011 Marco Peereboom <marco@peereboom.us>
4 .\" Copyright (c) 2011 Jason McIntyre <jmc@openbsd.org>
6 .\" Permission to use, copy, modify, and distribute this software for any
7 .\" purpose with or without fee is hereby granted, provided that the above
8 .\" copyright notice and this permission notice appear in all copies.
10 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23 .Nd lightweight web browser
29 .Op Fl s Ar session_name
34 is a minimalistic web browser that tries to stay out of the way so that
35 valuable screen real estate can be used for much more important stuff.
36 It has sane defaults and does not require one to learn a language to do any
38 It was written by hackers for hackers
39 and it strives to be small, compact, and fast.
42 is very simple in its use.
43 Most actions are initiated via key or mouse bindings.
44 Key bindings are based on those of the
47 giving web browsing a similar feel to navigating a text document.
50 section below documents the various defaults and possible customizations.
52 The options are as follows:
55 Specify an alternative configuration file.
57 Open a new tab in a running
59 for each specified URL.
64 Execute arbitrary command (see the
66 section below) in a running
68 instance. This option requires
70 to be enabled. Example run: xxxterm -e "tabnew openbsd.org"; xxxterm -e
71 tabclose; xxxterm -e wq.
74 .It Fl s Ar session_name
75 Open session that was saved with ":session save" command.
77 Disable visualization of tabs.
81 Display version and exit.
84 The following notation is used throughout this page:
86 .Bl -tag -width Ds -offset indent -compact
92 Meta 1 (sometimes marked Alt)
98 Meta 4 (sometimes marked Windows)
105 To browse to a specific address,
106 either use the mouse to click on the address bar
109 to shift the keyboard focus to the address bar.
110 The address is then entered manually.
112 The mouse can be used to navigate the page in the traditional manner,
113 or the keyboard can be used instead.
118 will scroll up and down the page.
121 either click on it or use the
125 assign numbers to each link on the page;
126 entering that number on the keyboard will prompt
131 provides many actions accessed via key or mouse bindings.
132 Most can be reprogrammed using a
134 entry in the configuration file.
135 Each keyboard shortcut requires exactly one entry in the configuration file.
136 A shortcut can have multiple entries in the configuration file.
137 The format of the keybinding entry is as follows:
139 .D1 keybinding = action,(!)keystroke(s)
141 For example, "keybinding = tabnew,C-t" where
147 GTK has some default keybindings for manipulating text inside input
148 fields, such as the URI or search entry widget, for example
150 deletes a word. To override these defaults prefix your key with an
151 exclamation mark, like this: "keybinding = tabclose,!C-w".
154 key word is special and is meant to reset the key binding list to the GTK+
156 This keyword should be the first
158 entry in the configuration file.
160 Shift should be used sparingly since it gets in the way of non-USA keyboards.
161 See the accompanying configuration file for examples.
163 The various bindings are documented below.
164 The relevant keybinding action is given afterwards, in parentheses.
166 These commands are used to search for text strings within a web page.
168 .Bl -tag -width Ds -offset indent -compact
173 Start a backwards search
176 Next item matching search
179 Previous item matching search
183 These commands are used to shift the focus of
185 from one area to another.
187 .Bl -tag -width Ds -offset indent -compact
192 Focus on search entry
196 These commands allow the user to map specific actions to specific keys.
197 It can be useful when the
201 .Bl -tag -width Ds -offset indent -compact
203 Alias for ":toplevel toggle"
208 Alias for ":open current-uri"
209 .Pq Cm promptopencurrent
214 Alias for ":tabnew current-uri"
215 .Pq Cm prompttabnewcurrent
217 .Ss Navigation Commands
218 These commands allow the user to navigate web pages and,
222 .Bl -tag -width "Space, C-f, PageDownXXX" -offset indent -compact
227 Reload page without using any cached data
229 .It Cm Backspace, M-Left
232 .It Cm S-BackSpace, M-Right
239 Previous line on page
247 .It Cm Space, C-f, PageDown
249 .Pq Cm scrollpagedown
261 .Pq Cm scrollfarright
281 Toggle Java Script enabled for FQDN
287 Toggle cookie enabled for FQDN
292 supports tabbed browsing.
293 That is, web pages may be opened in separate tabs,
294 allowing the user to quickly move from one page to another,
296 These commands then are used to create, destroy, and move between tabs.
298 .Bl -tag -width "C-plus, C-equalXXX" -offset indent -compact
300 Open new tab with the clicked link
302 Create new tab with focus in URL entry
311 Go to the previous tab
319 .Pq Cm tabnext [1..0]
321 Shrink font size by one point
323 .It Cm C-plus, C-equal
324 Grow font size by one point
327 .Ss Yanking and pasting
328 These commands copy and paste text to and from the clipboard.
330 .Bl -tag -width Ds -offset indent -compact
332 Paste the contents of the clipboard into the address bar
335 Paste the contents of the clipboard into a new tab
338 Yank the current URL into the clipboard
341 .Ss Hyperlink Following
342 This allows the user to follow hyperlinks
343 without using a mouse.
344 Enter the corresponding number to follow the link.
345 Alternatively one can type the name of the link and when there are no more
348 will follow the link.
350 .Bl -tag -width Ds -offset indent -compact
352 Highlight all links and prefix them with a number.
356 Commands to exit the browser.
358 .Bl -tag -width Ds -offset indent -compact
363 .Ss Low-Contrast Color Scheme
364 This command toggles the page's style between the default CSS and a
365 low-contrast color scheme with light grey text on a dark grey background.
367 .Bl -tag -width Ds -offset indent -compact
369 Toggle the current tab's style.
373 Command mode works in a similar fashion to the
376 it is entered by typing a colon and exited by typing Esc.
377 The commands and their descriptions are listed below.
378 .Bl -tag -width Ds -offset indent
379 .It Cm about , version
380 Show the "About" page.
382 Display CA certificates.
383 .It Cm cert , cert show
384 Download and display certificates of domain on tab.
386 Save certificate into a local store.
387 The next time the site is visited it is compared against the store.
388 If the certificate matches,
389 the address bar will be blue;
390 if it doesn't the bar will be red.
394 command is used to manipulate the cookie whitelist.
395 Used by itself it expands to
396 .Cm cookie show all .
398 Show cookie jar contents.
399 .It Cm cookie save, cookie save fqdn
400 Save the current fully qualified domain name (FQDN)
401 to the persistent whitelist.
403 the www.peereboom.us domain would result in saving .www.peereboom.us.
404 .It Cm cookie save domain
405 Save the top level domain name to the persistent whitelist.
407 the www.peereboom.us domain would result in saving .peereboom.us.
409 This action enables cookies if it is currently disabled for this entry.
410 .It Cm cookie show all
411 Show all persistent and session entries in the cookie whitelist.
412 .It Cm cookie show persistent
413 Show all persistent entries in the cookie whitelist.
414 .It Cm cookie show session
415 Show all session entries in the cookie whitelist.
416 .It Cm cookie toggle domain
417 Toggle cookie support for the current top level domain.
418 .It Cm cookie toggle, cookie toggle fqdn
419 Toggle cookie support for the current FQDN.
421 Show download manager.
425 Add the current page to favorites.
426 .It Cm fullscreen , f
427 Toggle hiding tabs and url entry toolbar.
428 .It Cm h , hist , history
437 command is used to manipulate the Java Script whitelist.
438 Used by itself it expands to
440 .It Cm js save, save fqdn
441 Saves the FQDN to the persistent whitelist.
443 the www.peereboom.us domain would result in saving .www.peereboom.us.
444 .It Cm js save domain
445 Saves the top level domain name to the persistent whitelist.
447 the www.peereboom.us domain would result in saving .peereboom.us.
449 This action enables Java Script if it is currently disabled for this entry.
451 Shows all persistent and session entries in the JS whitelist.
452 .It Cm js show persistent
453 Shows all persistent entries in the JS whitelist.
454 .It Cm js show session
455 Shows all session entries in the JS whitelist.
456 .It Cm js toggle, js toggle fqdn
457 Toggle Java Script execution for the current FQDN.
458 .It Cm js toggle domain
459 Toggle Java Script execution for the current top level domain.
460 .It Cm open , op , o URL
464 .It Cm qa , qall , quitall
468 Close current tab and quit
470 if it is the last tab.
474 and reload all current tabs.
475 .It Cm session , Cm session show
476 Display the current session name.
477 By default the session name is main_session.
478 To create a new session use the
481 A session is defined as the lifetime of the browser application.
482 .It Cm session delete <session_name>
483 Delete session session_name from persistent storage.
484 If session_name is the current session then the session will revert to
486 .It Cm session open <session_name>
487 Open session_name and close all currently open tabs.
488 Going forward this session is named session_name.
489 .It Cm session save <session_name>
490 Save current tabs to session_name session.
491 This will close the current session and going forward this session is named
494 Show blocked cookie statistics.
495 These statistics vary based on settings and are not persistent.
496 .It Cm statushide , statush
498 .It Cm statusshow , statuss
500 .It Cm tabclose , tabc
502 .It Cm tabhide , tabh
504 .It Cm tabnew , tabedit , tabe URL
505 Create new tab and optionally open provided URL.
506 .It Cm tabnext , tabn
508 .It Cm tabprevious , tabp
509 Go to the previous tab.
510 .It Cm tabshow , tabs
512 .It Cm toplevel , toplevel toggle
513 Toggle the top level domain name cookie and JS session whitelist.
514 This is to enable/disable short lived full site functionality without
515 permanently adding the top level domain to the persistent whitelist.
516 .It Cm urlhide , urlh
517 Hide url entry and tool bar.
518 .It Cm urlshow , urls
519 Show url entry and tool bar.
521 Save open tabs to current session.
522 The tabs will be restored next time
524 the session is opened.
525 See the session command for additional details.
527 Save open tabs and quit.
528 The tabs will be restored next time
530 the session is opened.
531 See the session command for additional details.
534 The about screens are internally generated web pages by
536 for user interaction.
537 These are entered in the address bar and the format is
539 where screen is the desired screen to display.
540 For example about:favorites.
541 Any about screen can be used as the home page as specified by
543 in the configuration file.
545 .Bl -tag -width "downloadsXXX" -offset indent -compact
547 show the about screen
551 show the cookie whitelist screen
553 show the cookiejar screen
555 show the downloads screen
557 show the favorites screen
559 show the help web page
561 show the history screen
563 show the Java Script whitelist screen
565 show the settings screen
567 show the statistics screen
570 This section descibes advanced usage settings.
571 Most users should use
575 and skip over this section.
578 has a number of whitelists to control blocking cookies and Java Script
579 execution for FQDNs or domains.
580 When properly enabled these whitelists require either the FQDN or top level
581 domain to exist in the whitelists in order to allow cookies to be stored or
582 Java Script to execute.
583 Both Java Script and cookies have two whitelists associated with them.
584 The whitelists are called session and persistent.
585 Items in the session whitelists are only allowed for the lifetime of the
588 Items in the persistent whitelists are stored on disk and are restored
591 Setting up the whitelists is a little tricky due to intricacies of WebKit.
592 In fact the semantics are different for cookies and Java Script.
594 Cookie whitelist requires the following configuration to be set:
596 .Bl -tag -width "enable_cookie_whitelistXXX" -offset indent -compact
597 .It Cm cookies_enabled
598 This is a WebKit setting and must be set to
601 in order to be able to use a
603 .It Cm enable_cookie_whitelist
604 This needs to be set to
606 to enable the cookie whitelist functionality.
608 These entries in the configuration file are the actual domains names in the
612 Java Script whitelist requires the following configuration to be set:
614 .Bl -tag -width "enable_js_whitelistXXX" -offset indent -compact
615 .It Cm enable_scripts
616 This is a WebKit setting and must be set to
619 in order to be able to use a
620 Java Script whitelist.
621 .It Cm enable_js_whitelist
622 This needs to be set to
624 to enable the Java Script whitelist functionality.
626 These entries in the configuration file are the actual domains names in the
627 Java Script whitelist.
632 section for additional configuration file entries and details
633 that alter runtime behavior.
635 .Bl -tag -width "/etc/xxxterm.confXXX" -compact
636 .It Pa ~/.xxxterm.conf
638 user specific settings.
645 tries to open the user specific file,
646 .Pa ~/.xxxterm.conf .
647 If that file is unavailable,
648 it then uses built-in defaults.
650 The format of the file is \*(Ltkeyword\*(Gt = \*(Ltsetting\*(Gt.
653 .Dl http_proxy = http://127.0.0.1:8080
655 Enabling or disabling an option is done by using 1 or 0 respectively.
657 The file supports the following keywords:
659 .Bl -tag -width "enable_cookie_whitelistXXX" -offset indent -compact
661 Defines an alias for a given URL, so that the URL is loaded when the alias is
662 entered in the address bar.
663 If the aliased URL includes a %s format specifier, then any argument given after
664 the alias on the address bar is substituted.
665 For example, if g,http://www.google.com/search?q=%s is defined as an alias,
666 then the URL http://www.google.com/search?q=foo is loaded when navigating to
668 .It Cm allow_volatile_cookies
669 If set cookies are stored in the session cache but will be discarded once
672 Unfortunately enabling this does allow for some limited tracking on the web.
674 When set a new tab is appended after the current tab instead of being appended
679 browser has 3 default operating modes:
687 mode the browser allows all cookies and Java Script as any other browser
689 This means that all cookies are saved to persistent storage and that all
692 On the other hand, using the
694 mode enables whitelists.
695 This requires the user to add all the required
700 If a domain does not appear in the whitelists
702 disallows cookies and Java Script execution.
706 mode the browse works just like
708 mode however the toolbar only has the backward, forward and home button.
710 This setting must be the first entry in
712 because it sets advanced settings that can be overridden later in the file.
713 See the default config file for more details.
715 This field delineates the cookie policy.
716 Possible values are: no3rdparty, reject 3rd party cookies.
717 accept, accept all cookies.
718 reject, reject all cookies.
720 This is a cookie whitelist item.
721 Use multiple times to add multiple entries.
722 Valid entries are for example *.moo.com and the equivalent .moo.com.
723 A fully qualified host is also valid and is for example www.moo.com.
724 .It Cm cookies_enabled
726 .It Cm ctrl_click_focus
727 Give focus in newly created tab instead of opening it in the background.
728 .It Cm default_font_size
729 Set the default browsing font size.
730 .It Cm default_zoom_level
731 Set the default browsing zoom level.
733 Locations where files are downloaded to.
734 This directory must exist and
736 validates that during startup.
737 .It Cm enable_cookie_whitelist
738 When enabled all cookies must be in the whitelist or they are rejected.
739 .It Cm enable_js_whitelist
740 When enabled all domains must be in the js whitelist in order to run Java Script.
744 .It Cm enable_plugins
746 .It Cm enable_scripts
749 When enabled the first instance of
751 will create a socket in the
754 Using the -n url option on subsequent
756 invocations will cause the specified URL to be loaded in a new tab.
757 Only a user with identical UID and GID can use this option.
758 .It Cm enable_spell_checking
759 Enables spell checking. Preferred languages can be set using
760 .Cm spell_check_languages
763 Enables a backward, forward, and stop button to the toolbar.
766 is set it'll enable an entry box for searches.
770 will try to guess if the string you entered, in the URI entry widget or
771 the command widget, is term you want to search for using search_string
773 If the string does not contain a dot nor a slash, is not a
774 path to a local file and does not resolves to an IP then it is assumed
777 Homepage in URL format.
779 Proxy server in URL format.
783 if it is specified as an environment variable.
784 It must be noted that one MUST use an IP address and not a FQDN.
786 If one desires to use a socks proxy then an intermediary tool must be used.
787 It has been reported that tsocks works with
790 Permits icon sizes to be changed if
793 Size 1 is small; 2 is normal; 3 through 6 are progressively larger.
795 This is a Java Script whitelist item.
798 for semantics and more details.
799 .It Cm max_connections
800 The maximum number of connections that
803 .It Cm max_host_connections
804 The maximum number of connections that
806 can open at once to a given host.
808 Sets an action for a specific or default MIME type.
809 For example, to download and view a pdf using kpdf set
810 .Pa mime_type = application/pdf,kpdf .
811 To set a default value use *, for example,
812 .Pa mime_type = video/*,mplayer .
813 Note that the action is only passed the URL and not all applications are
814 capable of dealing with a URL and therefore one might have to create a wrapper
815 script to download the content first. Alternatively one can add the
817 in front of the MIME type to indicate "download first".
819 .Pa mime_type = @application/pdf,xpdf .
822 is use the file will be downloaded to the
824 before the MIME handler is called.
825 .It Cm read_only_cookies
826 Mark cookies file read-only and discard all cookies once the session is
828 .It Cm refresh_interval
829 Refresh interval while in the download manager.
832 Directory that contains various
834 resources such as icons.
835 This is OS-specific and should be handled by the porter.
836 .It Cm save_global_history
837 If set the global history will be saved to
838 .Pa ~/.xxxterm/history
840 and restored at startup.
843 section above for how the global history is accessed.
844 Global history is not saved to disk by default.
845 .It Cm save_rejected_cookies
846 Saves rejected cookies in cookie format in {work_dir}/rejected.txt.
847 All cookies are saved and unlike a cookie jar they are never replaced.
848 Make sure there is enough disk space to enable this feature.
850 Default search engine string.
854 .It Cm session_autosave
855 Enable session auto-saving when changing state (e.g. adding or removing a tab).
856 The session name is what is currently in use and is described in the
861 .It Cm session_timeout
862 This value is the time that is added in seconds to a session cookie.
864 Enable or disable showing tabs.
866 Enable or disable showing the url and toolbar.
867 .It Cm show_statusbar
868 Enable or disable showing the status bar.
869 .It Cm single_instance
872 will be permitted to run.
873 If there is a URL specified it will be opened in a new tab in the already
877 .It Cm spell_check_languages
878 The languages to be used for spell checking, separated by commas. For example, en_US.
880 If set to a valid PEM file
881 all server certificates will be validated against it.
882 The URL bar will be colored green when the certificate is trusted
883 and yellow when untrusted.
887 is not set then the URL bar will color all HTTPS connections red.
888 .It Cm ssl_strict_certs
889 If this value is set connections to untrusted sites will be aborted.
890 This value is only used if
894 Set to override the default
898 Set the default height of the browser window.
900 Set the default width of the browser window.
902 Set the work directory where all
904 scratch files are stored.
910 was inspired by vimprobable2 and the bloat in other
917 .An Marco Peereboom Aq marco@peereboom.us ,
918 .An Stevan Andjelkovic Aq stevan@student.chalmers.se ,
919 .An Edd Barrett Aq vext01@gmail.com ,
921 .An Todd T. Fries Aq todd@fries.net .
924 .Cm save_global_history
927 is supposed to, in addition to restoring the global history, color the
928 visited links accordingly; however due to bug #51747 in WebKit this does