diff options
author | Christian Poessinger <christian@poessinger.com> | 2020-08-12 23:04:06 +0200 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2020-08-12 23:04:06 +0200 |
commit | 8efb8ba1efa9d51ec376bac0bfcb48cf200447a9 (patch) | |
tree | c2cc9abcddee7bf5bdf829329d2c05f8a18e8b23 | |
parent | 21bc98f16110d0fa2d7d93409252da73f58878ed (diff) | |
parent | b5e0a1796cc7887245ae79c759f709e1705f5e93 (diff) | |
download | vyos-1x-8efb8ba1efa9d51ec376bac0bfcb48cf200447a9.tar.gz vyos-1x-8efb8ba1efa9d51ec376bac0bfcb48cf200447a9.zip |
Merge branch 'system-display' of https://github.com/fmertz/vyos-1x into t2564-lcd
* 'system-display' of https://github.com/fmertz/vyos-1x:
system display: T2564: Added test model
system display: T2564: Dictionary code update
system display: T2564: Conf files to /run
system display: T2564: Changed "duration" to "time"
system display: T2564: py code cleanup
system display: T2564: Replace "config (enabled|disabled)" with "display disabled"
system display: T2564: Lowercase model names
system display: T2564 Extend VyOS to support appliance LCDs
-rw-r--r-- | data/templates/system-display/LCDd.conf.tmpl | 1500 | ||||
-rw-r--r-- | data/templates/system-display/lcdproc.conf.tmpl | 173 | ||||
-rw-r--r-- | interface-definitions/system-display.xml.in | 235 | ||||
-rwxr-xr-x | src/conf_mode/system-display.py | 98 | ||||
-rw-r--r-- | src/systemd/LCDd@.service | 10 | ||||
-rw-r--r-- | src/systemd/lcdproc@.service | 10 |
6 files changed, 2026 insertions, 0 deletions
diff --git a/data/templates/system-display/LCDd.conf.tmpl b/data/templates/system-display/LCDd.conf.tmpl new file mode 100644 index 000000000..1dd646202 --- /dev/null +++ b/data/templates/system-display/LCDd.conf.tmpl @@ -0,0 +1,1500 @@ +### Autogenerted by system-display.py ## +# LCDd.conf -- configuration file for the LCDproc server daemon LCDd +# +# This file contains the configuration for the LCDd server. +# +# The format is ini-file-like. It is divided into sections that start at +# markers that look like [section]. Comments are all line-based comments, +# and are lines that start with '#' or ';'. +# +# The server has a 'central' section named [server]. For the menu there is +# a section called [menu]. Further each driver has a section which +# defines how the driver acts. +# +# The drivers are activated by specifying them in a driver= line in the +# server section, like: +# +# Driver=curses +# +# This tells LCDd to use the curses driver. +# The first driver that is loaded and is capable of output defines the +# size of the display. The default driver to use is curses. +# If the driver is specified using the -d <driver> command line option, +# the Driver= options in the config file are ignored. +# +# The drivers read their own options from the respective sections. + + + +## Server section with all kinds of settings for the LCDd server ## +[server] + +# Where can we find the driver modules ? +# IMPORTANT: Make sure to change this setting to reflect your +# specific setup! Otherwise LCDd won't be able to find +# the driver modules and will thus not be able to +# function properly. +# NOTE: Always place a slash as last character ! +DriverPath=/usr/lib/x86_64-linux-gnu/lcdproc/ + +# Tells the server to load the given drivers. Multiple lines can be given. +# The name of the driver is case sensitive and determines the section +# where to look for further configuration options of the specific driver +# as well as the name of the dynamic driver module to load at runtime. +# The latter one can be changed by giving a File= directive in the +# driver specific section. +# +# The following drivers are supported: +# bayrad, CFontz, CFontzPacket, curses, CwLnx, ea65, EyeboxOne, futaba, +# g15, glcd, glcdlib, glk, hd44780, icp_a106, imon, imonlcd,, IOWarrior, +# irman, joy, lb216, lcdm001, lcterm, linux_input, lirc, lis, MD8800, +# mdm166a, ms6931, mtc_s16209x, MtxOrb, mx5000, NoritakeVFD, +# Olimex_MOD_LCD1x9, picolcd, pyramid, rawserial, sdeclcd, sed1330, +# sed1520, serialPOS, serialVFD, shuttleVFD, sli, stv5730, svga, t6963, +# text, tyan, ula200, vlsys_m428, xosd, yard2LCD +{%- if model == 'sdec' %} +Driver=sdeclcd +{%- endif %} + +{%- if model == 'ezio' %} +Driver=hd44780 +{%- endif %} + +{%- if model == 'test' %} +Driver=CFontzPacket +{%- endif %} + +# Tells the driver to bind to the given interface. [default: 127.0.0.1] +#Bind=127.0.0.1 + +# Listen on this specified port. [default: 13666] +#Port=13666 + +# Sets the reporting level; defaults to warnings and errors only. +# [default: 2; legal: 0-5] +#ReportLevel=3 + +# Should we report to syslog instead of stderr? [default: no; legal: yes, no] +#ReportToSyslog=yes + +# User to run as. LCDd will drop its root privileges and run as this user +# instead. [default: nobody] +User=nobody + +# The server will stay in the foreground if set to yes. +# [default: no, legal: yes, no] +#Foreground=yes + +# Hello message: each entry represents a display line; default: builtin +Hello="{%- if hello %}{{ hello }}{%- else %}Welcome to VyOS{%- endif %}" + +# GoodBye message: each entry represents a display line; default: builtin +GoodBye="{%- if bye %}{{ bye }}{%- else %}Bye from VyOS{%- endif %}" + +# Sets the interval in microseconds for updating the display. +# [default: 125000 meaning 8Hz] +#FrameInterval=125000 + +# Sets the default time in seconds to displays a screen. [default: 4] +WaitTime={%- if time %}{{ time }}{%- else%}4{%- endif %} + +# If set to no, LCDd will start with screen rotation disabled. This has the +# same effect as if the ToggleRotateKey had been pressed. Rotation will start +# if the ToggleRotateKey is pressed. Note that this setting does not turn off +# priority sorting of screens. [default: on; legal: on, off] +#AutoRotate=off + +# If yes, the the serverscreen will be rotated as a usual info screen. If no, +# it will be a background screen, only visible when no other screens are +# active. The special value 'blank' is similar to no, but only a blank screen +# is displayed. [default: on; legal: on, off, blank] +ServerScreen=no + +# Set master backlight setting. If set to 'open' a client may control the +# backlight for its own screens (only). [default: open; legal: off, open, on] +#Backlight=open + +# Set master heartbeat setting. If set to 'open' a client may control the +# heartbeat for its own screens (only). [default: open; legal: off, open, on] +#Heartbeat=open + +# set title scrolling speed [default: 10; legal: 0-10] +#TitleSpeed=10 + +# The "...Key=" lines define what the server does with keypresses that +# don't go to any client. The ToggleRotateKey stops rotation of screens, while +# the PrevScreenKey and NextScreenKey go back / forward one screen (even if +# rotation is disabled. +# Assign the key string returned by the driver to the ...Key setting. These +# are the defaults: +ToggleRotateKey=Enter +PrevScreenKey=Left +NextScreenKey=Right +#ScrollUpKey=Up +#ScrollDownKey=Down + +## The menu section. The menu is an internal LCDproc client. ## +[menu] +# If true the server allows transitions between different client's menus +# [default: false; legal: true, false] +#PermissiveGoto=false + +# You can configure what keys the menu should use. Note that the MenuKey +# will be reserved exclusively, the others work in shared mode. + +# Up to six keys are supported. The MenuKey (to enter and exit the menu), the +# EnterKey (to select values) and at least one movement keys are required. +# These are the default key assignments: +MenuKey=Escape +EnterKey=Enter +UpKey=Up +DownKey=Down +#LeftKey=Left +#RightKey=Right + + +### Driver sections are below this line, in alphabetical order ### + + +## EMAC BayRAD driver ## +[bayrad] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the communication speed [default: 9600; legal: 1200, 2400, 9600, 19200] +Speed=9600 + + + +## CrystalFontz driver (for CF632 & CF634) ## +[CFontz] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyS0 +# Select the LCD size [default: 20x4] +Size=20x4 +# Set the initial contrast [default: 560; legal: 0 - 1000] +Contrast=350 +# Set the initial brightness [default: 1000; legal: 0 - 1000] +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=0 +# Set the communication speed [default: 9600; legal: 1200, 2400, 9600, 19200, +# 115200] +Speed=9600 +# Set the firmware version (New means >= 2.0) [default: no; legal: yes, no] +NewFirmware=no +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +# normally you shouldn't need this +Reboot=no + + + +## CrystalFontz packet driver (for CFA533, CFA631, CFA633 & CFA635) ## +[CFontzPacket] +{%- if model == 'test' %} +Model=533 +Device=/dev/serial/by-bus/usb0b1.1p1.0 +Contrast=350 +Brightness=1000 +OffBrightness=50 +Reboot=yes +USB=yes +{%- endif %} + + +## Curses driver ## +[curses] + +# color settings +# foreground color [default: blue] +Foreground=blue +# background color when "backlight" is off [default: cyan] +Background=cyan +# background color when "backlight" is on [default: red] +Backlight=red + +# display size [default: 20x4] +Size=20x2 + +# What position (X,Y) to start the left top corner at... +# Default: (7,7) +TopLeftX=7 +TopLeftY=7 + +# use ASC symbols for icons & bars [default: no; legal: yes, no] +UseACS=no + +# draw Border [default: yes; legal: yes, no] +DrawBorder=yes + + + +## Cwlinux driver ## +[CwLnx] + +# Select the LCD model [default: 12232; legal: 12232, 12832, 1602] +Model=12232 + +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyUSB0 + +# Select the LCD size. Default depends on model: +# 12232: 20x4 +# 12832: 21x4 +# 1602: 16x2 +Size=20x4 + +# Set the communication speed [default: 19200; legal: 9600, 19200] +Speed=19200 + +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +# normally you shouldn't need this +Reboot=no + +# If you have a keypad connected. Keypad layout is currently not +# configureable from the config file. +Keypad=yes + +# If you have a non-standard keypad you can associate any keystrings to keys. +# There are 6 input keys in the CwLnx hardware that generate characters +# from 'A' to 'F'. +# +# The following is the built-in default mapping hardcoded in the driver. +# You can leave those unchanged if you have a standard keypad. +# You can change it if you want to report other keystrings or have a non +# standard keypad. +# KeyMap_A=Up +# KeyMap_B=Down +# KeyMap_C=Left +# KeyMap_D=Right +# KeyMap_E=Enter +# KeyMap_F=Escape + +# keypad_test_mode permits one to test keypad assignment +# Default value is no +#keypad_test_mode=yes + + + +## ea65 driver for the display in AOpen XC Cube AV EA65 media barebones ## +[ea65] + +# Device is fixed /dev/ttyS1 +# Width and Height are fixed 9x1 + +# As the VFD is self luminescent we don't have a backlight +# But we can use the backlight functions to control the front LEDs +# Brightness 0 to 299 -> LEDs off +# Brightness 300 to 699 -> LEDs half bright +# Brightness 700 to 1000 -> LEDs full bright +Brightness=500 +# OffBrightness is the the value used for the 'backlight off' state +OffBrightness=0 + + + +## EyeboxOne driver ## +[EyeboxOne] + +# Select the output device to use [default: /dev/ttyS1] +# Device=/dev/cua01 +Device=/dev/ttyS1 + +# Set the display size [default: 20x4] +Size=20x4 + +# Switch on the backlight? [default: yes] +Backlight=yes + +# Switch on the cursor? [default: no] +Cursor=no + +# Set the communication speed [default: 19200; legal: 1200, 2400, 9600, 19200] +Speed=19200 + +# Enter Key is a \r character, so it's hardcoded in the driver +LeftKey=D +RightKey=C +UpKey=A +DownKey=B +EscapeKey=P + +# You can find out which key of your display sends which +# character by setting keypad_test_mode to yes and running +# LCDd. LCDd will output all characters it receives. +# Afterwards you can modify the settings above and set +# keypad_set_mode to no again. +keypad_test_mode=no + +## Futaba TOSD-5711BB VFD Driver ## +[futaba] + +## g15 driver for Logitech G15 Keyboard LCDs ## +[g15] + +# Display size (currently unused) +size=20x5 + + + +## glcd generic graphical display driver +[glcd] +# Select what type of connection. See documentation for types. +ConnectionType=t6963 + +# Width and height of the display in pixel. The supported sizes may depend on +# the ConnectionType. [default: 128x64; legal: 1x1 - 640x480] +#Size=128x64 + +# Width and height of a character cell in pixels. This value is only used if +# the driver has been compiled with FreeType and it is enabled. Otherwise the +# default 6x8 cell is used. +#CellSize=12x16 + +# If LCDproc has been compiled with FreeType 2 support this option can be used +# to turn if off intentionally. [default: yes; legal: yes, no] +#useFT2=no + +# Path to font file to use for FreeType rendering. This font must be monospace +# and should contain some special Unicode characters like arrows (Andale Mono +# is recommended and can be fetched at http://corefonts.sf.net). +#normal_font=/usr/local/lib/X11/fonts/TTF/andalemo.ttf + +# Some fonts miss the Unicode characters used to represent icons. In this case +# the built-in 5x8 font can used if this option is turned off. [default: yes; +# legal: yes, no] +#fontHasIcons=no + +# Set the initial contrast if supported by connection type. +# [default: 600; legal: 0 - 1000] +#Contrast=600 + +# Set brightness of the backlight if the backlight is switched 'on'. +# [default: 800; legal: 0 - 1000] +#Brightness=1000 + +# Set brightness of the backlight if the backlight is switched 'off'. Set this +# to zero to completely turn off the backlight. [default: 100; legal: 0 - 1000] +#OffBrightness=0 + +# Time (ms) from first key report to first repeat. Set to 0 to disable repeated +# key reports. [default: 500; legal: 0 - 3000] +#KeyRepeatDelay=500 + +# Time (ms) between repeated key reports. Ignored if KeyRepeatDelay is disabled +# (set to zero). [default: 300; legal: 0 - 3000] +#KeyRepeatInterval=300 + +# Assign key strings to keys. There may be up to 16 keys numbered 'A' to 'Z'. +# By default keys 'A' to 'F' are assigned Up, Down, Left, Right, Enter, Escape. +KeyMap_A=Up +KeyMap_B=Down +KeyMap_C=Enter +KeyMap_D=Escape + +# --- t6963 options --- + +# Parallel port to use [default: 0x378; legal: 0x200 - 0x400] +#Port=0x378 + +# Use LPT port in bi-directional mode. This should work on most LPT port +# and is required for proper timing! [default: yes; legal: yes, no] +#bidirectional=yes + +# Insert additional delays into reads / writes. [default: no; legal: yes, no] +#delayBus=no + +# --- serdisplib options --- + +# Name of the underlying serdisplib driver, e.g. ctinclud. See +# serdisplib documentation for details. +serdisp_name=t6963 + +# The display device to use, e.g. serraw:/dev/ttyS0, +# parport:/dev/parport0 or USB:07c0/1501. +serdisp_device=/dev/ppi0 + +# Options string to pass to serdisplib during initialization. Use +# this to set any display related options (e.g. wiring). The display size is +# always set based on the Size configured above! By default, no options are +# set. +# Important: The value must be quoted as it contains equal signs! +#serdisp_options="INVERT=1" + +# --- x11 options --- + +# PixelSize is size of each dot in pixels + a pixel gap. [default: 3+1] +#x11_PixelSize=3+1 + +# Colors are in RRGGBB format prefixed with "0x". +# PixelColor: The color of each dot at full contrast. [default: 0x000000] +#x11_PixelColor=0x000000 + +# BacklightColor: The color of the backlight as full brightness. +# [default: 0x80FF80] +#x11_BacklightColor=0x80FF80 + +# Border: Adds a border (empty space) around the LCD portion of X11 window. +# [default: 20] +#x11_Border=20 + +# Inverted: inverts the pixels [default: no; legal: yes, no] +#x11_Inverted=no + +# --- picolcdgfx options --- + +# Time in ms for usb_read to wait on a key press. [default: 125; legal: >0] +#picolcdgfx_KeyTimeout=125 + +# Inverted: Inverts the pixels. [default: no; legal: yes or no] +#picolcdgfx_Inverted=no + + + +## glcdlib meta driver for graphical LCDs ## +[glcdlib] + +## mandatory: + +# which graphical display supported by graphlcd-base to use [default: image] +# (see /etc/graphlcd.conf for possible drivers) +Driver=noritake800 + +# no=use graphlcd bitmap fonts (they have only one size / font file) +# yes=use fonts supported by FreeType2 (needs Freetype2 support in +# libglcdprocdriver and its dependants) +UseFT2=yes + +# text resolution in fixed width characters [default: 16x4] +# (if it won't fit according to available physical pixel resolution +# and the minimum available font face size in pixels, then +# 'DebugBorder' will automatically be turned on) +TextResolution=20x4 + +# path to font file to use +FontFile=/usr/share/fonts/corefonts/courbd.ttf + +## these only apply if UseFT2=yes: + +# character encoding to use +CharEncoding=iso8859-2 + +# minimum size in pixels in which fonts should be rendered +MinFontFaceSize=7x12 + +## optional: +Brightness=50 # Brightness (in %) if applicable +Contrast=50 # Contrast (in %) if applicable +Backlight=no # Backlight if applicable +UpsideDown=no # flip image upside down +Invert=no # invert light/dark pixels +ShowDebugFrame=no # turns on/off 1 pixel thick debugging + # border within the usable text area, + # for setting up TextResolution and + # MinFontFaceSize (if using FT2); +ShowBigBorder=no # border around the unused area +ShowThinBorder=yes # border around the unused area +PixelShiftX=0 +PixelShiftY=2 + + + +## Matrix Orbital GLK driver ## +[glk] + +# select the serial device to use [default: /dev/lcd] +Device=/dev/lcd + +# set the initial contrast value [default: 500; legal: 0 - 1000] +Contrast=500 + +# set the serial port speed [default: 19200; legal: 9600, 19200, 38400, 57600, 115200] +Speed=19200 + + + +## Hitachi HD44780 driver ## +[hd44780] +{%- if model == 'ezio' %} +ConnectionType=ezio +Device=/dev/ttyUSB0 +Keypad=yes +Size=16x2 +KeyMatrix_4_1=Enter +KeyMatrix_4_2=Up +KeyMatrix_4_3=Down +KeyMatrix_4_4=Escape +{%- endif %} + +# Select what type of connection. See documentation for available types. +#ConnectionType=4bit + +# Select model if have non-standard one which require extra initialization or handling or +# just want extra features it offers. +# Available: standard (default), extended, winstar_oled, pt6314_vfd +# - standard is default, use for LCDs not mentioned below. +# - extended, hd66712, ks0073: allows use 4-line "extended" mode, +# same as deprecated now option ExtendedMode=yes +# - winstar_oled, weh00xxyya: changes initialization for WINSTAR's WEH00xxyyA displays +# and allows handling brightness +# - pt6314_vfd: allows handling brightness on PTC's PT6314 VFDs +# +# This option should be independent of connection type. +#Model = standard + +# I/O address of the LPT port. Usual values are: 0x278, 0x378 and 0x3BC. +# For I2C connections this sets the slave address (usually 0x20). +#Port=0x378 + +# Device of the serial, I2C, or SPI interface [default: /dev/lcd] +#Device=/dev/ttyS0 + +# Bitrate of the serial port (0 for interface default) +#Speed=0 + +# If you have a keypad connected. +# You may also need to configure the keypad layout further on in this file. +#Keypad=no + +# Set the initial contrast (bwctusb, lcd2usb, and usb4all) +# [default: 800; legal: 0 - 1000] +#Contrast=0 + +# Set brightness of the backlight (lcd2usb and usb4all): +# Brightness is the brightness while the backlight is set to 'on'. +# [default: 800; legal: 0 - 1000] +#Brightness=1000 + +# OffBrightness is the brightness while the backlight is set to 'off'. +# [default: 300; legal: 0 - 1000] +#OffBrightness=0 + +# Specify if you have a switchable backlight and if yes, can select method for turning it on/off: +# +# - none - no switchable backlight is available. For compability also boolean +# 0, n, no, off and false are aliases. +# - external - use external pin or any other method defined with ConnectionType backlight +# handling. For backward compability also this value is chosen for boolean +# TRUE values: 1, y, yes, on and true. +# - internal - means that backlight is handled using internal commands according +# to selected display model (with Model option). Depending on model, +# Brightness and OffBrightness options can be taken into account. +# - internalCmds - means that commands for turning on and off backlight are given +# with extra options BacklightOnCmd and BacklightOffCmd, which would be treated +# as catch up (last resort) for other types of displays which have similar features. +# +# You can provide multiple occurences of this option to use more than one method. +# Default is model specific: Winstar OLED and PT6314 VFD enables internal backlight mode, +# for others it is set to none. +#Backlight = none + +# Commands for enabling internal backlight for use with Backlight=internalCmds. +# Up to 4 bytes can be encoded, as integer number in big-endian order. +# +# NOTE: this is advanced option, if command contains bits other than only brighness handling, +# they must be set accordingly to not disrupt display state. If for example 'FUNCTION SET' command +# is used for this purpose, bits of interface length (4-bit / 8-bit) must be set according to +# selected ConnectionType. +#BacklightCmdOn=0x1223 + +# Commands for disabling internal backlight for use with Backlight=internalCmds. +# Up to 4 bytes can be encoded, as integer number in big-endian order. +#BacklightCmdOff=0x1234 + + +# If you have the additional output port ("bargraph") and you want to +# be able to control it with the lcdproc OUTPUT command +#OutputPort=no + +# Specifies if the last line is pixel addressable (yes) or it controls an +# underline effect (no). [default: yes; legal: yes, no] +#Lastline=yes + +# Specifies the size of the LCD. +# In case of multiple combined displays, this should be the total size. +#Size=20x4 + +# For multiple combined displays: how many lines does each display have. +# Vspan=2,2 means both displays have 2 lines. +#vspan=2,2 + +# If you have an HD66712, a KS0073 or another controller with 'extended mode', +# set this flag to get into 4-line mode. On displays with just two lines, do +# not set this flag. +# As an additional restriction, controllers with and without extended mode +# AND 4 lines cannot be mixed for those connection types that support more +# than one display! +# NOTE: This option is deprecated in favour of choosing Model=extended option. +#ExtendedMode=yes + +# In extended mode, on some controllers like the ST7036 (in 3 line mode) +# the next line in DDRAM won't start 0x20 higher. [default: 0x20] +#LineAddress=0x10 + +# Character map to to map ISO-8859-1 to the LCD's character set +# [default: hd44780_default; legal: hd44780_default, hd44780_euro, ea_ks0073, +# sed1278f_0b, hd44780_koi8_r, hd44780_cp1251, hd44780_8859_5, upd16314, +# weh001602a_1] +# (hd44780_koi8_r, hd44780_cp1251, hd44780_8859_5, upd16314 and weh001602a_1 +# are possible if compiled with additional charmaps) +CharMap=hd44780_default + +# Font bank to be used for some displays such as the WINSTAR WEH001602A +# 0: English/Japanese (default) +# 1: Western Europe I +# 2: English/Rusian +# 3: Western Europe II +#FontBank=0 + +# If your display is slow and cannot keep up with the flow of data from +# LCDd, garbage can appear on the LCDd. Set this delay factor to 2 or 4 +# to increase the delays. Default: 1. +#DelayMult=2 + +# Some displays (e.g. vdr-wakeup) need a message from the driver to that it +# is still alive. When set to a value bigger then null the character in the +# upper left corner is updated every <KeepAliveDisplay> seconds. Default: 0. +#KeepAliveDisplay=0 + +# If you experience occasional garbage on your display you can use this +# option as workaround. If set to a value bigger than null it forces a +# full screen refresh <RefreshDiplay> seconds. Default: 0. +#RefreshDisplay=5 + +# You can reduce the inserted delays by setting this to false. +# On fast PCs it is possible your LCD does not respond correctly. +# Default: true. +#DelayBus=true + +# If you have a keypad you can assign keystrings to the keys. +# See documentation for used terms and how to wire it. +# For example to give directly connected key 4 the string "Enter", use: +# KeyDirect_4=Enter +# For matrix keys use the X and Y coordinates of the key: +# KeyMatrix_1_3=Enter +#KeyMatrix_4_1=Enter +#KeyMatrix_4_2=Up +#KeyMatrix_4_3=Down +#KeyMatrix_4_4=Escape + +## ICP Peripheral Comminication Protocol driver ## +# Supports A125 and A106 +# +# Short Press Select: Down +# Long Press Select: Up +# Short Press Enter: Enter +# Long Press Enter: Escape +# +[icp_a106] +Device=/dev/ttyS1 + +# Display dimensions +Size=20x2 + + +## Code Mercenaries IO-Warrior driver ## +[IOWarrior] + +# display dimensions +Size=20x4 + +# serial number. Must be exactly as listed by usbview +# (if not given, the 1st IOWarrior found gets used) +#SerialNumber=00000674 + +# If you have an HD66712, a KS0073 or another 'almost HD44780-compatible', +# set this flag to get into extended mode (4-line linear). +#ExtendedMode=yes + +# Specifies if the last line is pixel addressable (yes) or it controls an +# underline effect (no). [default: yes; legal: yes, no] +#Lastline=yes + + + +## Soundgraph/Ahanix/Silverstone/Uneed/Accent iMON driver ## +[imon] + +# select the device to use +Device=/dev/lcd0 + +# display dimensions +Size=16x2 + +# Character map to to map ISO-8859-1 to the displays character set. +# [default: none; legal: none, hd44780_euro, upd16314, hd44780_koi8_r, +# hd44780_cp1251, hd44780_8859_5 ] (upd16314, hd44780_koi8_r, +# hd44780_cp1251, hd44780_8859_5 are possible if compiled with additional +# charmaps) +CharMap=hd44780_euro + +## Soundgraph iMON LCD ## +[imonlcd] +# Specify which iMon protocol should be used +# [legal: 0, 1; default: 0] +# Choose 0 for 15c2:ffdc device, +# Choose 1 for 15c2:0038 device +Protocol=0 + +# Set the exit behavior [legal: 0-2; default: 1] +# 0 means leave shutdown message, +# 1 means show the big clock, +# 2 means blank device +#OnExit=2 + +# Select the output device to use [default: /dev/lcd0] +Device=/dev/lcd0 + +# Select the displays contrast [default: 200; legal: 0-1000] +Contrast=200 + +# Specify the size of the display in pixels [default: 96x16] +#Size=96x16 + +# Set the backlight state [default: on; legal: on, off] +#Backlight=on + +# Set the disc mode [legal: 0,1; default: 0] +# 0 => spin the "slim" disc - two disc segments, +# 1 => their complement spinning; +#DiscMode=0 + + + +## IrMan driver ## +[IrMan] +# in case of trouble with IrMan, try the Lirc emulator for IrMan + +# Select the input device to use +#Device=/dev/irman + +# Select the configuration file to use +#Config=/etc/irman.cfg + + + +## IRtrans driver ## +[irtrans] + +# Does the device have a backlight? [default: no; legal: yes, no] +#Backlight=no + +# IRTrans device to connect to [default: localhost] +#Hostname=localhost + +# display dimensions +Size=16x2 + + + +## Joystick driver ## +[joy] + +# Select the input device to use [default: /dev/js0] +Device=/dev/js0 + +# set the axis map +Map_Axis1neg=Left +Map_Axis1pos=Right +Map_Axis2neg=Up +Map_Axis2pos=Down + +# set the button map +Map_Button1=Enter +Map_Button2=Escape + + +## JW-002 driver ## +[jw002] + +# Select the output device to use [default: /dev/lcd] +#Device=/dev/ttyS0 + +# Set the display size [default: 24x8] +Size=24x8 + +# Optional X and Y offsets (in characters) to center a smaller display +# size on the full 24x8 panel +X_offset=0 +Y_offset=0 + +# Set the communication speed [default: 19200; legal: 1200, 2400, 9600, 19200] +Speed=19200 + +# Pick which font page to use [default: 0] +# Note that different fonts probably have their bargraph chars in different +# spots. For ROM-based fonts 0-3, those characters are already known. +Font=0 + +# The following table translates from jw002 key letters to logical key names. +# By default no keys are mapped, meaning the keypad is not used at all. +#KeyMap_I=Left +#KeyMap_J=Right +#KeyMap_H=Up +#KeyMap_K=Down +#KeyMap_L=Enter +#KeyMap_A=Escape +# See the [menu] section for an explanation of the key mappings + +# You can find out which key of your display sends which +# character by setting keypad_test_mode to yes and running +# LCDd. LCDd will output all characters it receives. +# Afterwards you can modify the settings above and set +# keypad_set_mode to no again. +keypad_test_mode=no + + +## LB216 driver ## +[lb216] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the initial brightness [default: 255; legal: 0 - 255] +Brightness=255 + +# Set the communication speed [default: 9600; legal: 2400, 9600] +Speed=9600 + +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +Reboot=no + + + +## LCDM001 driver ## +[lcdm001] + +Device=/dev/ttyS1 + +# keypad settings +# Keyname Function +# Normal context Menu context +# ------- -------------- ------------ +# PauseKey Pause/Continue Enter/select +# BackKey Back(Go to previous screen) Up/Left +# ForwardKey Forward(Go to next screen) Down/Right +# MainMenuKey Open main menu Exit/Cancel +PauseKey=LeftKey +BackKey=UpKey +ForwardKey=DownKey +MainMenuKey=RightKey + +# You can rearrange the settings here. +# If your device is broken, have a look at server/drivers/lcdm001.h + + + +## HNE LCTerm driver ## +[lcterm] +Device=/dev/ttyS1 +Size=16x2 + + +## Linux event device input driver ## +[linux_input] + +# Select the input device to use [default: /dev/input/event0]. This may be +# either an absolute path to the input node, starting with '/', or +# an input device name, e.g. "Logitech Gaming Keyboard Gaming Keys". +# Device=/dev/input/event0 + +# specify a non-default key map +#key=1,Escape +#key=28,Enter +#key=96,Enter +#key=105,Left +#key=106,Right +#key=103,Up +#key=108,Down + + +## LIRC input driver ## +[lirc] + +# Specify an alternative location of the lircrc file [default: ~/.lircrc] +#lircrc=/etc/lircrc.lcdproc + +# Must be the same as in your lircrc +#prog=lcdd + + + +## LIS MCE 2005 driver ## +[lis] + +# Set the initial brightness [default: 1000; legal: 0 - 1000] +# 0-250 = 25%, 251-500 = 50%, 501-750 = 75%, 751-1000 = 100% +#Brightness=1000 + +# Columns by lines [default: 20x2] +#Size=20x2 + +# USB Vendor ID [default: 0x0403] +# Change only if testing a compatible device. +#VendorID=0x0403 + +# USB Product ID [default: 0x6001] +# Change only if testing a compatible device. +#ProductID=0x6001 + +# Specifies if the last line is pixel addressable (yes) or it only controls an +# underline effect (no). [default: yes; legal: yes, no] +#Lastline=yes + + + +##The driver for the VFD of the Medion MD8800 PC ## +[MD8800] +# device to use [default: /dev/ttyS1] +#Device=/dev/ttyS1 + +# display size [default: 16x2] +#Size=16x2 + +# Set the initial brightness [default: 1000; legal: 0 - 1000] +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=50 + + + +## Futuba MDM166A Display +[mdm166a] +# Show self-running clock after LCDd shutdown +# Possible values: [default: no; legal: no, small, big] +Clock=big +# Dim display, no dimming gives full brightness [default: no, legal: yes, no] +Dimming=no +# Dim display in case LCDd is inactive [default: no, legal: yes, no] +OffDimming=yes + + + +## MSI MS-6931 driver for displays in 1HU servers ## +[ms6931] + +# device to use [default: /dev/ttyS1] +Device=/dev/ttyS1 + +# display size [default: 16x2] +#Size=16x2 + + + +## MTC-S16209x driver ## +[mtc_s16209x] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the initial brightness [default: 255; legal: 0 - 255] +Brightness=255 + +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +Reboot=no + + + +## Matrix Orbital driver ## +[MtxOrb] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyS0 + +# Set the display size [default: 20x4] +Size=20x4 + +# Set the display type [default: lcd; legal: lcd, lkd, vfd, vkd] +Type=lkd + +# Set the initial contrast [default: 480] +# NOTE: The driver will ignore this if the display +# is a vfd or vkd as they don't have this feature +Contrast=480 + +# Some old displays do not have an adjustable backlight but only can +# switch the backlight on/off. If you experience randomly appearing block +# characters, try setting this to false. [default: yes; legal: yes, no] +hasAdjustableBacklight=no + +# Set the initial brightness [default: 1000; legal: 0 - 1000] +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=0 + +# Set the communication speed [default: 19200; legal: 1200, 2400, 9600, 19200] +Speed=19200 + +# The following table translates from MtxOrb key letters to logical key names. +# By default no keys are mapped, meaning the keypad is not used at all. +#KeyMap_A=Left +#KeyMap_B=Right +#KeyMap_C=Up +#KeyMap_D=Down +#KeyMap_E=Enter +#KeyMap_F=Escape +# See the [menu] section for an explanation of the key mappings + +# You can find out which key of your display sends which +# character by setting keypad_test_mode to yes and running +# LCDd. LCDd will output all characters it receives. +# Afterwards you can modify the settings above and set +# keypad_set_mode to no again. +keypad_test_mode=no + + + +## mx5000 driver for LCD display on the Logitech MX5000 keyboard ## +[mx5000] + +# Select the output device to use [default: /dev/hiddev0] +Device = /dev/hiddev0 +# Time to wait in ms after the refresh screen has been sent [default: 1000] +WaitAfterRefresh = 1000 + + + +## Noritake VFD driver ## +[NoritakeVFD] +# device where the VFD is. Usual values are /dev/ttyS0 and /dev/ttyS1 +# [default: /dev/lcd] +Device=/dev/ttyS0 +# Specifies the size of the LCD. +Size=20x4 +# Set the initial brightness [default: 1000; legal: 0 - 1000] +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=50 +# set the serial port speed [default: 9600, legal: 1200, 2400, 9600, 19200, 115200] +Speed=9600 +# Set serial data parity [default: 0; legal: 0-2 ] +# Meaning: 0(=none), 1(=odd), 2(=even) +Parity=0 +# re-initialize the VFD [default: no; legal: yes, no] +Reboot=no + + + +## Olimex MOD-LCD1x9 driver ## +[Olimex_MOD_LCD1x9] + +# device file of the i2c controler +Device=/dev/i2c-0 + + +## Mini-box.com picoLCD (usblcd) driver ## +[picolcd] + +# KeyTimeout is only used if the picoLCD driver is built with libusb-0.1. When +# built with libusb-1.0 key and IR data is input asynchronously so there is no +# need to wait for the USB data. +# KeyTimeout is the time in ms that LCDd spends waiting for a key press before +# cycling through other duties. Higher values make LCDd use less CPU time and +# make key presses more detectable. Lower values make LCDd more responsive +# but a little prone to missing key presses. 500 (.5 second) is the default +# and a balanced value. [default: 500; legal: 0 - 1000] +KeyTimeout=500 + +# Key auto repeat is only available if the picoLCD driver is built with +# libusb-1.0. Use KeyRepeatDelay and KeyRepeatInterval to configure key auto +# repeat. +# +# Key auto repeat delay (time in ms from first key report to first repeat). Use +# zero to disable auto repeat. [default: 300; legal: 0 - 3000] +KeyRepeatDelay=300 + +# Key auto repeat interval (time in ms between repeat reports). Only used if +# KeyRepeatDelay is not zero. [default: 200; legal: 0 - 3000] +KeyRepeatInterval=200 + +# Sets the initial state of the backlight upon start-up. +# [default: on; legal: on, off] +#Backlight=on + +# Set the initial brightness [default: 1000; legal: 0 - 1000]. Works only +# with the 20x4 device +Brightness=1000 + +# Set the brightness while the backlight is 'off' [default: 0; legal: 0 - 1000]. +# Works only with the 20x4 device. +#OffBrightness=0 + +# Set the initial contrast [default: 1000; legal: 0 - 1000] +Contrast=1000 + +# Link the key lights to the backlight? [default: on; legal: on, off] +#LinkLights=off + +# Light the keys? [default: on; legal: on, off] +Keylights=on + +# If Keylights is on, the you can unlight specific keys below: +# Key0 is the directional pad. Key1 - Key5 correspond to the F1 - F5 keys. +# There is no LED for the +/- keys. This is a handy way to indicate to users +# which keys are disabled. [default: on; legal: on, off] +Key0Light=on +Key1Light=on +Key2Light=on +Key3Light=on +Key4Light=on +Key5Light=on + +# Host name or IP address of the LIRC instance that is to receive IR codes +# If not set, or set to an empty value, IR support is disabled. +#LircHost=127.0.0.1 + +# UDP port on which LIRC is listening [default: 8765; legal: 1 - 65535] +LircPort=8765 + +# UDP data time unit for LIRC [default: off; legal: on, off] +# On: times sent in microseconds (requires LIRC UDP driver that accepts this). +# Off: times sent in 'jiffies' (1/16384s) (supported by standard LIRC UDP driver). +LircTime_us=on + +# Threshold in microseconds of the gap that triggers flushing the IR data +# to lirc [default: 8000; legal: 1000 - ] +# If LircTime_us is on values greater than 32.767ms will disable the flush +# If LircTime_us is off values greater than 1.999938s will disable the flush +LircFlushThreshold=10000 + + + +## Pyramid LCD driver ## +[pyramid] + +# device to connect to [default: /dev/lcd] +Device=/dev/ttyUSB0 + + + +## rawserial driver ## +[rawserial] + +# Select the output device to use [default: /dev/cuaU0] +Device=/dev/ttyS0 + +# Serial port baudrate [default: 9600] +Speed=9600 + +# Specifies the size of the LCD. If this driver is loaded as a secondary driver +# it always adopts to the size of the primary driver. If loaded as the only +# (or primary) driver, the size can be set. [default: 40x4] +#Size=16x2 + +# How often to dump the LCD contents out the port, in Hertz (times per second) +# 1 = once per second, 4 is 4 times per second, 0.1 is once every 10 seconds. +# [default: 1; legal: 0.0005 - 10] +UpdateRate=1 + + + +## SDEC driver for Watchguard Firebox ## +[sdeclcd] +# No options + + +## Seiko Epson 1330 driver ## +[sed1330] + +# Port where the LPT is. Common values are 0x278, 0x378 and 0x3BC +Port=0x378 + +# Type of LCD module (legal: G321D, G121C, G242C, G191D, G2446, SP14Q002) +# Note: Currently only tested with G321D & SP14Q002. +Type=G321D + +# Width x Height of a character cell in pixels [legal: 6x7 - 8x16; default: 6x10] +CellSize=6x10 + +# Select what type of connection [legal: classic, bitshaker; default: classic] +ConnectionType=classic + + + +## Seiko Epson 1520 driver ## +[sed1520] + +# Port where the LPT is. Usual values are 0x278, 0x378 and 0x3BC +Port=0x378 + +# Select the interface type (wiring) for the display. Supported values are +# 68 for 68-style connection (RESET level high) and 80 for 80-style connection +# (RESET level low). [legal: 68, 80; default: 80] +InterfaceType=80 + +# On fast machines it may be necessary to slow down transfer to the display. +# If this value is set to zero, delay is disabled. Any value greater than +# zero slows down each write by one microsecond. [legal: 0-1000; default: 1] +DelayMult=0 + +# The original wiring used an inverter to drive the control lines. If you do +# not use an inverter set haveInverter to no. [default: yes; legal: yes, no] +HaveInverter=no + +# On some displays column data in memory is mapped to segment lines from right +# to left. This is called inverted mapping (not to be confused with +# 'haveInverter' from above). [default: no; legal: yes, no] +#InvertedMapping=yes + +# At least one display is reported (Everbouquet MG1203D) that requires sending +# three times 0xFF before a reset during initialization. +# [default: no; legal: yes, no] +#UseHardReset=yes + + +## serial POS display driver ## +[serialPOS] + +# Device to use in serial mode [default: /dev/ttyS0] +Device=/dev/ttyS0 + +# Specifies the size of the display in characters. [default: 16x2] +Size=16x2 + +# Specifies the cell size of each character cell on the display in characters. +# [default: 5x8] +Cellsize=5x8 + +# Specifies the number of custom characters supported by the display. +# [default: 0] +Custom_chars=0 + +# Set the communication protocol to use with the POS display. +# [default: AEDEX; legal: AEDEX, CD5220, Epson, Emax, LogicControls, Ultimate] +Type=AEDEX + +# communication baud rate with the display [default: 9600; legal: 1200, 2400, +# 4800, 9600, 19200, 115200] +Speed=9600 + + + +## Serial VFD driver ## +## Drives various (see below) serial 5x7dot VFD's. ## +[serialVFD] + +# Specifies the displaytype.[default: 0] +# 0 NEC (FIPC8367 based) VFDs. +# 1 KD Rev 2.1. +# 2 Noritake VFDs (*). +# 3 Futaba VFDs +# 4 IEE S03601-95B +# 5 IEE S03601-96-080 (*) +# 6 Futaba NA202SD08FA (allmost IEE compatible) +# 7 Samsung 20S207DA4 and 20S207DA6 +# 8 Nixdorf BA6x / VT100 +# (* most should work, not tested yet.) +Type=0 + +# "no" if display connected serial, "yes" if connected parallel. [default: no] +# I.e. serial by default +use_parallel=no + +# Number of Custom-Characters. default is display type dependent +#Custom-Characters=0 + +# Portaddress where the LPT is. Used in parallel mode only. Usual values are +# 0x278, 0x378 and 0x3BC. +Port=0x378 + +# Set parallel port timing delay (us). Used in parallel mode only. +# [default: 2; legal: 0 - 255] +#PortWait=2 + +# Device to use in serial mode. Usual values are /dev/ttyS0 and /dev/ttyS1 +Device=/dev/ttyS1 + +# Specifies the size of the VFD. +Size=20x2 + +# Set the initial brightness [default: 1000; legal: 0 - 1000] +# (4 steps 0-250, 251-500, 501-750, 751-1000) +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +# (4 steps 0-250, 251-500, 501-750, 751-1000) +OffBrightness=0 + +# set the serial port speed [default: 9600; legal: 1200, 2400, 9600, 19200, 115200] +Speed=9600 + +# enable ISO 8859 1 compatibility [default: yes; legal: yes, no] +#ISO_8859_1=yes + + + +## shuttleVFD driver ## +[shuttleVFD] +# No options + + + +## stv5730 driver ## +[stv5730] + +# Port the device is connected to [default: 0x378] +Port=0x378 + + +[SureElec] + +# Port the device is connected to (by default first USB serial port) +Device=/dev/ttyUSB0 + +# Edition level of the device (can be 1, 2 or 3) [default: 2] +#Edition=1 + +# set display size +# Note: The size can be obtained directly from device for edition 2 & 3. +#Size=16x2 + +# Set the initial contrast [default: 480; legal: 0 - 1000] +#Contrast=200 + +# Set the initial brightness [default: 480; legal: 1 - 1000] +#Brightness=480 + +# Set the initial off-brightness [default: 100; legal: 1 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +#OffBrightness=100 + + +## SVGAlib driver ## +[svga] + +# svgalib mode to use [default: G320x240x256 ] +# legal values are supported svgalib modes +#Mode=G640x480x256 + +# set display size [default: 20x4] +Size=20x4 + +# Set the initial contrast [default: 500; legal: 0 - 1000] +# Can be set but does not change anything internally +Contrast=500 + +# Set the initial brightness [default: 1000; legal: 1 - 1000] +Brightness=1000 + +# Set the initial off-brightness [default: 500; legal: 1 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=500 + + + +## Text driver ## +[text] +# Set the display size [default: 20x4] +Size=20x4 + + + +## Toshiba T6963 driver ## +[t6963] + +# set display size in pixels [default: 128x64] +Size=128x64 + +# port to use [default: 0x378; legal: 0x200 - 0x400] +Port=0x378 + +# Use LPT port in bi-directional mode. This should work on most LPT port and +# is required for proper timing! [default: yes; legal: yes, no] +#bidirectional=yes + +# Insert additional delays into reads / writes. [default: no; legal: yes, no] +#delayBus=no + +# Clear graphic memory on start-up. [default: no; legal: yes, no] +#ClearGraphic=no + + + +## Tyan Barebones LCD driver (GS10 & GS12 series) ## +[tyan] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the communication speed [default: 9600; legal: 4800, 9600] +Speed=9600 + +# set display size [default: 16x2] +Size=16x2 + + + +## ELV ula200 driver ## +[ula200] + +# Select the LCD size [default: 20x4] +Size=20x4 + +# If you have a non standard keypad you can associate any keystrings to keys. +# There are 6 input key in the CwLnx hardware that generate characters +# from 'A' to 'F'. +# +# The following it the built-in default mapping hardcoded in the driver. +# You can leave those unchanged if you have a standard keypad. +# You can change it if you want to report other keystrings or have a non +# standard keypad. +# KeyMap_A=Up +# KeyMap_B=Down +# KeyMap_C=Left +# KeyMap_D=Right +# KeyMap_E=Enter +# KeyMap_F=Escape + + + +## Wirz SLI LCD driver ## +[sli] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the communication speed [default: 19200; legal: 1200, 2400, 9600, 19200, +# 38400, 57600, 115200] +Speed=19200 + + + +## vlsys_m428 for VFD/IR combination in Moneual MonCaso 320 ## +[vlsys_m428] + +# Select the output device to use [default: /dev/ttyUSB0] +#Device=/dev/ttyUSB0 + + + +## OnScreen Display using libxosd ## +[xosd] + +# set display size [default: 20x4] +Size=20x4 + +# Offset in pixels from the top-left corner of the monitor [default: 0x0] +Offset=200x200 + +# X font to use, in XLFD format, as given by "xfontsel" +Font=-*-terminus-*-r-*-*-*-320-*-*-*-*-* + +## Y.A.R.D.2 LCD section +[yard2LCD] +Size=20x4 +# If rendering rate is too high, change in server\main.h #define RENDER_FREQ 8 to "1" + +# EOF diff --git a/data/templates/system-display/lcdproc.conf.tmpl b/data/templates/system-display/lcdproc.conf.tmpl new file mode 100644 index 000000000..92aee8efe --- /dev/null +++ b/data/templates/system-display/lcdproc.conf.tmpl @@ -0,0 +1,173 @@ +### autogenerated by system-display.py ### + +# system display show host (CPU|SMP-CPU|CPU-Graph|Load|Memory|Proc-Size|Disk|Uptime) +# network interface <intName> alias <alias> +# units (bps|Bps|pps) +# clock (big|mini|date-time) + +# LCDproc client configuration file + +## general options ## +[lcdproc] +# address of the LCDd server to connect to +Server=127.0.0.1 + +# Port of the server to connect to +Port=13666 + +# set reporting level +#ReportLevel=2 + +# report to to syslog ? +ReportToSyslog=true + +# run in foreground [default: false; legal: true, false] +#Foreground=true + +# PidFile location when running as daemon [default: /var/run/lcdproc.pid] +#PidFile=/var/run/lcdproc.pid + +# slow down initial announcement of modes (in 1/100s) +#delay=2 + + +## screen specific configuration options ## +{%- if show %} +# display name for the main menu [default: LCDproc HOST] +DisplayName="{%- if show['title'] %}{{ show['title'] }}{%- else %}VyOS{%- endif %}" + +{%- if show['host'] %} + +[CPU] +# Show screen +Active={%- if 'cpu' in show['host'] %}true{%- else %}false{%- endif %} +OnTime=1 +OffTime=2 +ShowInvisible=false + +[SMP-CPU] +# Show screen +Active={%- if 'cpu-all' in show['host'] %}true{%- else %}false{%- endif %} + +[Memory] +# Show screen +Active={%- if 'memory' in show['host'] %}true{%- else %}false{%- endif %} + +[Load] +# Show screen +Active={%- if 'load-hist' in show['host'] %}true{%- else %}false{%- endif %} +# Min Load Avg at which the backlight will be turned off [default: 0.05] +LowLoad=0.05 +# Max Load Avg at which the backlight will start blinking [default: 1.3] +HighLoad=1.3 + +[Uptime] +# Show screen +Active={%- if 'uptime' in show['host'] %}true{%- else %}false{%- endif %} + +[CPUGraph] +# Show screen +Active={%- if 'cpu-hist' in show['host'] %}true{%- else %}false{%- endif %} + +[ProcSize] +# Show screen +Active={%- if 'proc' in show['host'] %}true{%- else %}false{%- endif %} + +[Disk] +# Show screen +Active={%- if 'disk' in show['host'] %}true{%- else %}false{%- endif %} +{%- else %} {# if show['host'] #} +{# Turn off sections that default active #} + +[CPU] +Active=false + +[Memory] +Active=false + +[Load] +Active=false + +{%- endif %} {# if show['host'] #} + +[TimeDate] +# Show screen +Active={%- if show['clock'] == 'date-time' %}true{%- else %}false{%- endif %} +# time format [default: %H:%M:%S; legal: see strftime(3)] +TimeFormat="%H:%M:%S" +# date format [default: %x; legal: see strftime(3)] +DateFormat="%x" + +[BigClock] +# Show screen +Active={%- if show['clock'] == 'big' %}true{%- else %}false{%- endif %} + +[MiniClock] +# Show screen +Active={%- if show['clock'] == 'mini' %}true{%- else %}false{%- endif %} +# time format [default: %H:%M; legal: see strftime(3)] +TimeFormat="%H:%M" + +{%- if show['network'] %} +[Iface] +# Show screen +Active={%- if show['network']['interface'] %}true{%- else %}false{%- endif %} +{%- for i in show['network']['interface'] %} +# Show stats for Interface {{ i }} +Interface{{ loop.index0 }}={{ i }} +{%- if show['network']['interface'][i]['alias'] %} +# Interface alias name to display [default: <interface name>] +Alias{{ loop.index0 }}={{ show['network']['interface'][i]['alias'] }} +{%- endif %} +{%- endfor %} + +# Units to display [default: byte; legal: byte, bit, packet] +{%- if show['network']['units'] == 'bps' %} +unit=bit +{%- elif show['network']['units'] == 'Bps'%} +unit=byte +{%- elif show['network']['units'] == 'pps' %} +unit=packet +{%- else %} +unit=bit +{%- endif %} +# add screen with transferred traffic +#transfer=TRUE +{%- endif %} {# if show['network'] #} + +{%- else %}{# if show #} +{# Turn off sections that default active #} + +[CPU] +Active=false + +[Memory] +Active=false + +[Load] +Active=false + +[TimeDate] +Active=false +{%- endif %}{# if show #} + +[Battery] +# Show screen +Active=false + +[About] +# Show screen +Active=false + +[OldTime] +# Show screen +Active=false +# time format [default: %H:%M:%S; legal: see strftime(3)] +TimeFormat="%H:%M:%S" +# date format [default: %x; legal: see strftime(3)] +DateFormat="%x" +# Display the title bar in two-line mode. Note that with four lines or more +# the title is always shown. [default: true; legal: true, false] +#ShowTitle=false + +# EOF diff --git a/interface-definitions/system-display.xml.in b/interface-definitions/system-display.xml.in new file mode 100644 index 000000000..fbd897996 --- /dev/null +++ b/interface-definitions/system-display.xml.in @@ -0,0 +1,235 @@ +<?xml version="1.0"?> +<interfaceDefinition> + <!-- + system display model (sdec|ezio|test) + system display show host (cpu|cpu-all|cpu-hist|disk|load-hist|memory|proc|uptime) + network interface <intName> alias <alias> + units (bps|Bps|pps) + clock (big|mini|date-time) + title <name> + + system display time <s> + system display hello <string> + system display bye <string> + system display disabled + --> + <node name="system"> + <children> + <node name="display" owner="${vyos_conf_scripts_dir}/system-display.py"> + <properties> + <help>System display LCD/VFD/LED</help> + <priority>400</priority> + </properties> + <children> + <!-- system display model (sdec|ezio) --> + <leafNode name="model"> + <properties> + <help>Model of the display attached to this system [REQUIRED]</help> + <completionHelp> + <list>sdec ezio test</list> + </completionHelp> + <constraint> + <regex>(sdec|ezio|test)</regex> + </constraint> + <constraintErrorMessage>Invalid system display model</constraintErrorMessage> + <valueHelp> + <format>sdec</format> + <description>Display model for Lanner, Watchguard, Nexcom NSA, Sophos UTM appliances with built-in SDEC LCD</description> + </valueHelp> + <valueHelp> + <format>ezio</format> + <description>Display model for Portwell, Caswell appliances with built-in EZIO-100 or EZIO-300 LCD</description> + </valueHelp> + <valueHelp> + <format>test</format> + <description>Test model for USB CrystalFonz CF533</description> + </valueHelp> + </properties> + </leafNode><!--system display model--> + <!-- system display disabled --> + <leafNode name="disabled"> + <properties> + <help>Disable sytem display</help> + <valueless/> + </properties> + </leafNode><!--system display disabled--> + <node name="show"> + <properties> + <help>Select the screens for the system display [REQUIRED]</help> + </properties> + <children> + <!-- system display show host (cpu|cpu-all|cpu-hist|disk|load-hist|memory|proc|uptime) --> + <leafNode name="host"> + <properties> + <multi/> + <help>Select host screens for the system display</help> + <completionHelp> + <list>cpu cpu-all cpu-hist disk load-hist memory proc uptime</list> + </completionHelp> + <constraint> + <regex>(cpu|cpu-all|cpu-hist|disk|load-hist|memory|proc|uptime)</regex> + </constraint> + <constraintErrorMessage>Invalid host screen</constraintErrorMessage> + <valueHelp> + <format>cpu</format> + <description>Detailed CPU usage</description> + </valueHelp> + <valueHelp> + <format>cpu-all</format> + <description>CPU usage overview (one line per CPU)</description> + </valueHelp> + <valueHelp> + <format>cpu-hist</format> + <description>CPU usage histogram</description> + </valueHelp> + <valueHelp> + <format>disk</format> + <description>File systems fill level</description> + </valueHelp> + <valueHelp> + <format>load-hist</format> + <description>Load histogram</description> + </valueHelp> + <valueHelp> + <format>memory</format> + <description>Memory and swap usage</description> + </valueHelp> + <valueHelp> + <format>proc</format> + <description>Top processes by size</description> + </valueHelp> + <valueHelp> + <format>uptime</format> + <description>System uptime</description> + </valueHelp> + </properties> + </leafNode><!--system display show host--> + <!-- system display show network --> + <node name="network"> + <properties> + <help>Network settings for system display</help> + </properties> + <children> + <!-- system display show network interface <interface name> --> + <tagNode name="interface"> + <properties> + <help>Show network traffic on the system display [Max 3 interfaces]</help> + <completionHelp> + <script>${vyos_completion_dir}/list_interfaces.py -b</script> + </completionHelp> + </properties> + <children> + <leafNode name="alias"> + <properties> + <help>Interface alias</help> + <constraint> + <regex>[A-Za-z0-9]{1,10}</regex> + </constraint> + <constraintErrorMessage>Invalid alias, must be 1 to 10 char or digit</constraintErrorMessage> + </properties> + </leafNode> + </children> + </tagNode><!--system display show network interface--> + <!-- system display show network units --> + <leafNode name="units"> + <properties> + <help>Unit for network details</help> + <completionHelp> + <list>bps Bps pps</list> + </completionHelp> + <constraint> + <regex>(bps|Bps|pps)</regex> + </constraint> + <constraintErrorMessage>Invalid network detail unit</constraintErrorMessage> + <valueHelp> + <format>bps</format> + <description>Bit(s) per second</description> + </valueHelp> + <valueHelp> + <format>Bps</format> + <description>Byte(s) per second</description> + </valueHelp> + <valueHelp> + <format>pps</format> + <description>Packet(s) per second</description> + </valueHelp> + </properties> + </leafNode><!--system display show network units--> + </children> + </node><!--system display show network--> + <!-- system display show clock (Big|Mini|Date-Time) --> + <leafNode name="clock"> + <properties> + <!--multi--> + <help>Show a clock on the system display</help> + <completionHelp> + <list>big mini date-time</list> + </completionHelp> + <constraint> + <regex>(big|mini|date-time)</regex> + </constraint> + <constraintErrorMessage>Invalid clock format</constraintErrorMessage> + <valueHelp> + <format>big</format> + <description>Multi-line clock</description> + </valueHelp> + <valueHelp> + <format>mini</format> + <description>Minimal clock</description> + </valueHelp> + <valueHelp> + <format>date-time</format> + <description>Clock with Date and Time </description> + </valueHelp> + </properties> + </leafNode><!--system display show clock--> + <!-- system display show title --> + <leafNode name="title"> + <properties> + <help>Screen title to show on the system display</help> + <constraint> + <regex>[A-Za-z0-9]{1,16}</regex> + </constraint> + <constraintErrorMessage>Invalid title, must be 1 to 16 char or digit</constraintErrorMessage> + </properties> + </leafNode><!--system display show title--> + </children> + </node><!--system display show--> + <!-- system display time --> + <leafNode name="time"> + <properties> + <help>Time in sec to show each screen on the system display</help> + <valueHelp> + <format>1-30</format> + <description>Numer of seconds</description> + </valueHelp> + <constraint> + <validator name="numeric" argument="--range 1-30"/> + </constraint> + </properties> + </leafNode><!--system display time--> + <!-- system display hello --> + <leafNode name="hello"> + <properties> + <help>Message to show when system display first starts</help> + <constraint> + <regex>.{1,16}</regex> + </constraint> + <constraintErrorMessage>Hello message must be 1 to 16 char</constraintErrorMessage> + </properties> + </leafNode><!--system display hello--> + <!-- system display bye --> + <leafNode name="bye"> + <properties> + <help>Message to show when system display stops</help> + <constraint> + <regex>.{1,16}</regex> + </constraint> + <constraintErrorMessage>Bye message must be 1 to 16 char</constraintErrorMessage> + </properties> + </leafNode><!--system display bye--> + </children> + </node><!--system display--> + </children> + </node><!--system--> +</interfaceDefinition> diff --git a/src/conf_mode/system-display.py b/src/conf_mode/system-display.py new file mode 100755 index 000000000..3eafc30c0 --- /dev/null +++ b/src/conf_mode/system-display.py @@ -0,0 +1,98 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2020 Francois Mertz fireboxled at gmail.com +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 or later as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +import os + +from sys import exit + +from vyos.config import Config +from vyos import ConfigError +from vyos.util import run +from vyos.template import render + +from vyos import airbag +airbag.enable() + +def get_config(): + conf = Config() + base = ['system', 'display'] + display = conf.get_config_dict(base, key_mangling=('-', '_'), get_first_key=True) + # Return a (possibly empty) configuration dictionary + return display + +def verify(config_dict): + if not config_dict: + return None + + if 'model' not in config_dict: + raise ConfigError('Display model is [REQUIRED]') + + if ( 'show' not in config_dict + or ( 'clock' not in config_dict['show'] + and 'network' not in config_dict['show'] + and 'host' not in config_dict['show'] + ) + ): + raise ConfigError('Display show must have a clock, host or network') + + if ( 'network' in config_dict['show'] + and 'interface' not in config_dict['show']['network'] + ): + raise ConfigError('Display show network must have an interface') + + if ( 'network' in config_dict['show'] + and 'interface' in config_dict['show']['network'] + and len(config_dict['show']['network']['interface']) > 3 + ): + raise ConfigError('Display show network cannot have > 3 interfaces') + + return None + +def generate(config_dict): + if not config_dict: + return None + # Render config file for daemon LCDd + render('/run/LCDd/LCDd.lo.conf', 'system-display/LCDd.conf.tmpl', config_dict) + # Render config file for client lcdproc + render('/run/lcdproc/lcdproc.lo.conf', 'system-display/lcdproc.conf.tmpl', config_dict) + + return None + +def apply(config_dict): + # Stop client + run('systemctl stop lcdproc@lo.service') + + if not config_dict or 'disabled' in config_dict: + # Stop server + run('systemctl stop LCDd@lo.service') + return None + + # Restart server + run('systemctl restart LCDd@lo.service') + # Start client + run('systemctl start lcdproc@lo.service') + + return None + +if __name__ == '__main__': + try: + config_dict = get_config() + verify(config_dict) + generate(config_dict) + apply(config_dict) + except ConfigError as e: + print(e) + exit(1) diff --git a/src/systemd/LCDd@.service b/src/systemd/LCDd@.service new file mode 100644 index 000000000..a4604cf21 --- /dev/null +++ b/src/systemd/LCDd@.service @@ -0,0 +1,10 @@ +[Unit] +Description=LCD display daemon on %I +Documentation=man:LCDd(8) http://www.lcdproc.org/ + +[Service] +User=root +ExecStart=/usr/sbin/LCDd -s 1 -f -c /run/LCDd/LCDd.%I.conf + +[Install] +WantedBy=multi-user.target
\ No newline at end of file diff --git a/src/systemd/lcdproc@.service b/src/systemd/lcdproc@.service new file mode 100644 index 000000000..9a1723dba --- /dev/null +++ b/src/systemd/lcdproc@.service @@ -0,0 +1,10 @@ +[Unit] +Description=LCDproc system status information viewer on %I +Documentation=man:lcdproc(8) http://www.lcdproc.org/ + +[Service] +User=root +ExecStart=/usr/bin/lcdproc -f -c /run/lcdproc/lcdproc.%I.conf + +[Install] +WantedBy=multi-user.target
\ No newline at end of file |