Presentation

Broot can also act as client or server, which lets you

  • control broot from another process
  • query the state of broot from another process

Example use cases:

  • synchronize broot with another program (shell, editor, etc.), both ways
  • have a viewer automatically display the file selected in broot
  • have broot automatically show the content of a directory focused in another program

Note: This feature is only available on unix like systems today because the current implementation is based on unix sockets.

Usage

3 launch arguments are involved:

  • --listen <instance_name> : listen on a specific socket
  • --send <instance_name>: send the command(s) to the given server and quit
  • --get-root: ask the server for its current root (in the active panel)

For example if you start broot with

br --listen my_broot

broot will run normally but will also listen to commands sent from elsewhere (using linux sockets).

Now that the “server” is running, try launching a command from another terminal:

br --send my_broot -c "img;:parent;:focus"

this will make the running “server” search for something like “img” and focus its parent.

If you run

br --send my_broot --get-root

then the server’s current root is printed on stdout.

If you pass neither the --get-root nor the --cmd (shortened in -c) argument, then the server is told to focus the current directory or the path given as argument.

Hooks

zsh

chpwd(){ ( broot --send global_file_viewer "$PWD" & ) > /dev/null 2>&1 }