Adds the default Lino user interface based on ExtJS.

It is being automatically included by every Lino application unless you disable it (e.g. by overriding your get_apps_modifiers or your get_installed_apps method).

When your Lino application uses the ExtJS user interface, then you may need a commercial license from Sencha. Summary without warranty of correctness: you need a commercial license if (1) your application is not available under the GPL and (2) your site is used by other people than the empoyees of the company who is the copyright holder of your application.


Summary from <>:


Defines the ExtRenderer class.

(This module's source code is available here.)


Plugin(site, app_label, app_name, ...)

Extends lino.core.plugin.Plugin.

class lino.modlib.extjs.Plugin(site, app_label, app_name, app_module, needed_by)

Bases: lino.core.plugin.Plugin

Extends lino.core.plugin.Plugin.

enter_submits_form = False

Whether the ENTER key (or CTRL+ENTER when in a textarea field) should submit the form.

The default is False. For sites that were in production before October 2015, we recommend to explain to the users that a simple ENTER no longer submits a form, and that Ctrl-S is the preferred keyboard shortcut for submitting a form. Alternatively for backwards compatibility you can set it to True using something like this:

def setup_plugins(self):
    super(Site, self).setup_plugins()
    if self.is_installed('extjs'):

When you set this to True linoweb.js adds a special mapping for ENTER. The problem then is that the ENTER key won't work in a plain textarea field because we didn't find a way to restore the default behaviour.

use_statusbar = False

Whether to use a status bar to display certain messages to the user. Default is False since currently this is not really useful.

media_name = 'ext-3.3.1'

The URL from where to include the ExtJS library files.

The default value points to the extjs-public repository and thus requires the clients to have an internet connection. This relieves newcomers from the burden of having to specify a download location in their

On a production site you'll probably want to download and serve these files yourself by setting this to None and setting extjs_root (or a symbolic link "extjs" in your media directory) to point to the local directory where ExtJS 3.3.1 is installed).

autorefresh_seconds = 0

Number of seconds to wait between two refreshes when autorefresh is activated. Default is 60. Set this to 0 in order to deactivate the autorefresh button.

media_root = None

Path to the ExtJS root directory. Only used when media_base_url is None, and when the media directory has no symbolic link named extjs pointing to the ExtJS root directory.