browsh
Browse the web via text-based interface
TLDR
Start browsh
Start browsh in a specific webpage
Focus URL bar
Exit browsh
Display help
SYNOPSIS
browsh [OPTIONS] [URL]
PARAMETERS
-h, --help
Show help message and exit.
-v, --version
Show program's version number and exit.
-t, --text
Force text-only rendering, disabling images and multimedia content.
-c, --config <path>
Specify a custom configuration file path for Browsh.
--start-url <url>
Initial URL to open upon starting Browsh (can also be passed as a direct argument).
--firefox.path <path>
Specify the exact path to the Firefox binary used for the headless backend.
--firefox.port <port>
Define the port for connecting to the headless Firefox instance.
--firefox.args <args>
Pass additional, raw arguments directly to the Firefox headless process.
--firefox.no-sandbox
Disable the Firefox sandbox; use with extreme caution as it reduces security.
--debug
Enable verbose debug logging for the Browsh client process.
--http-proxy <proxy>
Specify the HTTP proxy server address (e.g., http://host:port).
--https-proxy <proxy>
Specify the HTTPS proxy server address.
--ftp-proxy <proxy>
Specify the FTP proxy server address.
--no-proxy
Disable proxy usage, overriding any environment variables.
--insecure
Allow insecure server connections and certificates when using SSL/TLS.
--keep-browser-alive
Keep the headless browser process running after the Browsh CLI exits.
--auto-quit-timeout <seconds>
Automatically quit Browsh after a specified period of inactivity.
DESCRIPTION
Browsh is a modern, fully-interactive, real-time terminal-based browser. It renders webpages directly in your command line interface (CLI), leveraging the power of a headless version of Firefox (or Chromium). Unlike older text-only browsers like Lynx or Links, Browsh aims to provide a near-graphical browsing experience within the terminal, supporting modern web technologies such as JavaScript, HTML5, CSS3, and even WebGL and video playback (though video support can be limited by terminal capabilities).
It functions by running a headless browser in the background and streaming its rendered output to the terminal, allowing users to interact with dynamic content, fill forms, and navigate complex websites. This makes Browsh exceptionally useful for remote SSH sessions, environments with limited bandwidth, or for users who prefer a keyboard-driven workflow and wish to avoid switching between GUI and TUI environments.
CAVEATS
Browsh requires a headless Firefox (or Chromium) instance to function, which can be resource-intensive compared to traditional text browsers. Full multimedia support (especially video) depends heavily on the terminal's capabilities and might not always work seamlessly. Using options like --firefox.no-sandbox can pose security risks and should only be used if absolutely necessary and understood. Performance can vary significantly based on the complexity of the webpage and the network connection.
INSTALLATION CONSIDERATIONS
Browsh typically requires two main components: the Browsh CLI client and a headless browser (e.g., Firefox). The browsh-install script is often recommended for installation, as it helps ensure the correct version of headless Firefox is available and properly configured on your system. Users should verify their system meets the dependencies for running headless Firefox efficiently.
KEYBINDINGS AND CONTROLS
Browsh uses a set of keyboard shortcuts for navigation and interaction, similar to other TUI applications. Common controls include: Arrow keys for scrolling; Tab and Shift+Tab for navigating interactive elements; Enter to follow links or activate elements; Ctrl+L to open the URL bar; Ctrl+W to close the current tab; Ctrl+Q or Ctrl+C to quit the application. A full list of keybindings can usually be accessed by pressing ? within Browsh or referring to its official documentation.
HISTORY
Browsh was created by Tye Sheridan and first released around 2018. Its development was driven by the need for a modern web browsing experience within the terminal, overcoming the limitations of older text-based browsers that struggled with JavaScript-heavy and dynamic websites. It leverages Go for its CLI client and WebExtensions for the bridge to the headless browser, making it a unique solution that brings the full power of a modern rendering engine to the command line, enabling complex web interactions without a graphical desktop environment.
SEE ALSO
lynx(1): Classic text-mode web browser., links(1): Text and graphical web browser with advanced features., w3m(1): Pager-like text browser with tables and frames support., curl(1): Tool to transfer data from or to a server, supporting various protocols., wget(1): Non-interactive network downloader., ssh(1): Secure Shell client for remote access (common use case for Browsh)., tmux(1): Terminal multiplexer (often used to manage Browsh sessions).