3.14. builtin-templates

ln_manager provides some built-in process templaes which can be used in config files:

3.14.1. internal notebook template

this can be used to start a python notebook like its done when pressing one of the “open notebook”-button on the ln_manager-UI (e.g. for processes, within the topic inspector, or when double clicking a service name).

it can be used like this:

process my notebook
use_template: internal notebook template("%(CURDIR)/my_notebook.nb.py", "some title")
node: localhost

this will start a notebook-UI on the manager host. The built-in template uses forward_x11_to_gui so manager-started notebook windows target the active GUI context, including a web UI user’s private X display.

see also instance-notebook_process_template.

3.14.2. internal scope template

this will start a scope-UI subscribing to a specified topic and plotting a specified field versus time.

it can be used like this:

process my topic1 scope
use_template: internal scope template("topic1", "field1")
node: localhost

this will start a scope-UI on the manager host. The built-in template uses forward_x11_to_gui so manager-started scope windows target the active GUI context, including a web UI user’s private X display. it will subscribe to topic topic1 and plot values of field1.

see also instance-scope_process_template.

3.14.3. internal vncserver template

this is used by the web UI to start a private VNC-backed X server for one authenticated web-UI user. It accepts three parameters:

use_template: internal vncserver template("alice", "90", "5990")

The default command searches Xvnc and Xtigervnc in the manager environment and starts the first one found roughly like this:

Xvnc :90 -rfbport 5990 -localhost -SecurityTypes None \
  -AlwaysShared -UseBlacklist=0 -geometry 1280x900 -depth 24 -ac

Before starting Xvnc, the template checks ~/.vnc/xstartup for the user running the VNC server process. If that file already exists, ln_manager leaves it untouched and runs it inside the private X display. If it does not exist, ln_manager looks for a lightweight window manager in this order: metacity, xfwm4, openbox, mutter, i3. The first one found is written into a generated ~/.vnc/xstartup template. If no window manager is found, the VNC server process fails with a message explaining which packages or customization points to use.

The VNC port listens only on localhost. Browser clients reach it through the authenticated ln_manager web port and the built-in noVNC bridge, so the default template does not configure a VNC password. The template marks the process ready when TigerVNC reports Listening for VNC connections and disables TigerVNC’s automatic authentication blacklist with -UseBlacklist=0.

The template uses start_in_shell and passes the manager’s PATH so the shell can find Xvnc or Xtigervnc and the window-manager candidates.

The generated ~/.vnc/xstartup is created on the host where the VNC server process runs. With the built-in template this is the manager host. If a custom vncserver_process_template moves the VNC server to another host, configure ~/.vnc/xstartup on that host too, or make sure the relevant home directory is on a shared filesystem.

Additional arguments appended to the template command with command+: are appended to the shell command after the default Xvnc arguments. This can be useful for temporary debugging, for example command+:  -verbose -Log *:stderr:100.

3.14.4. internal configured vncserver template

this wraps built-in-internal vncserver template for a configured VNC display. It accepts the user-facing VNC session name, the X11 display number, and the VNC TCP port:

process remote xvnc desktop
use_template: internal configured vncserver template("remote Xvnc desktop", "80", "5980")
node: vnc_node

The wrapper starts the same TigerVNC Xvnc process as internal vncserver template and also sets vnc_session, vnc_port, and vnc_display. It is separate from internal vncserver template so the private per-web-user VNC displays do not appear as configured VNC sessions.

see also instance-vncserver_process_template.