Preference Settings

The following preference settings are available for the various application features. To use them in your settings file, remember to prefix each setting with the package name.

alarm_logging_preferences.properties

File phoebus/app/alarm/logging-ui/src/main/resources/alarm_logging_preferences.properties:

# location of elastic node/s
es_host=130.199.219.152
es_port=9200
es_index=accelerator_alarms

org.csstudio.archive

File phoebus/services/archive-engine/src/main/resources/archive_preferences.properties:

# ----------------------------
# Package org.csstudio.archive
# ----------------------------

# RDB URL for archived data
#
# Oracle example
# url=jdbc:oracle:thin:user/password@//172.31.73.122:1521/prod
#
# MySQL example
url=jdbc:mysql://localhost/archive?rewriteBatchedStatements=true

# RDB user and password
# Some applications also provide command-line option to override.
user=archive
password=$archive

# Schema name. Used with an added "." as prefix for table names.
# For now this is only used with Oracle URLs and ignored for MySQL
schema=

# Timeout [seconds] for certain SQL queries
# Fundamentally, the SQL queries for data take as long as they take
# and any artificial timeout just breaks queries that would otherwise
# have returned OK  few seconds after the timeout.
# We've seen Oracle lockups, though, that caused JDBC to hang forever
# because the SAMPLE table was locked. No error/exception, just hanging.
# A timeout is used for operations other than getting the actual data,
# for example the channel id-by-name query which _should_ return within
# a shot time, to catch that type of RDB lockup.
# timeout_secs=120
# With PostgreSQL, the setQueryTimeout API is not implemented,
# and calling it results in an exception.
# Setting the timeout to 0 disables calls to setQueryTimeout.
timeout_secs=0

# Use a blob to read/write array samples?
#
# The original SAMPLE table did not contain an ARRAY_VAL column
# for the array blob data, but instead used a separate ARRAY_VAL table.
# When running against an old database, this parameter must be set to false.
use_array_blob=true

# Name of sample table for writing
write_sample_table=sample

# Maximum length of text samples written to SAMPLE.STR_VAL
max_text_sample_length=80

# Use postgres copy instead of insert
use_postgres_copy=false

# Seconds between log messages for Not-a-Number, futuristic, back-in-time values, buffer overruns
# 24h = 24*60*60 = 86400
log_trouble_samples=86400
log_overrun=86400

# Write period in seconds
write_period=30

# Maximum number of repeat counts for scanned channels
max_repeats=60

# Write batch size
batch_size=500

# Buffer reserve (N times what's ideally needed)
buffer_reserve=2.0

# Samples with time stamps this far ahead of the local time
# are ignored
# 24*60*60 = 86400 = 1 day
ignored_future=86400

org.csstudio.display.builder.editor

File phoebus/app/display/editor/src/main/resources/display_editor_preferences.properties:

# ----------------------------------------
# Package org.csstudio.display.builder.editor
# ----------------------------------------

# Widget types to hide from the palette
#
# Comma separated list of widget types that will not be shown
# in the palette.
# Existing displays that use these widgets can still be edited
# and executed, but widgets do not appear in the palette to
# discourage adding them to new displays.

# Hiding widgets where representation has not been imported because of dependencies
hidden_widget_types=meter,linear-meter,knob,gauge,clock,digital_clock

org.csstudio.display.builder.model

File phoebus/app/display/model/src/main/resources/display_model_preferences.properties:

# ----------------------------------------
# Package org.csstudio.display.builder.model
# ----------------------------------------


# Widget classes
# One or more *.bcf files, separated by ';'
# Defaults to built-in copy of examples/classes.bcf
class_files=examples:classes.bcf

# Named colors
# One or more *.def files, separated by ';'
# Defaults to built-in copy of examples/color.def
color_files=examples:color.def

# Named fonts
# One or more *.def files, separated by ';'
# Defaults to built-in copy of examples/font.def
font_files=examples:font.def

# Global macros, used for all displays.
#
# Displays start with these macros,
# and can then add new macros or overwrite
# the values of these macros.
#
# Format:
# Entries where the XML tag name is the macro name,
# and the XML content is the macro value.
# The macro name must be a valid XML tag name:
# * Must start with character
# * May then contain characters or numbers
# * May also contain underscores
#
macros=<EXAMPLE_MACRO>Value from Preferences</EXAMPLE_MACRO><TEST>true</TEST>


# Timeout [ms] for loading files: Displays, but also color, font, widget class files
read_timeout=10000

# Timeout [sec] for caching files loaded from a URL
cache_timeout=60


# 'BOY' *.opi files provide the font size in 'points'.
# All other positions and sizes are in 'pixels'.
# A point is meant to represent 1/72th of an inch.
# The actual on-screen size display settings.
# Plugging a different monitor into the computer can
# potentially change the DPI settings of the graphics driver,
# resulting in different font sizes.
# The display builder uses fonts in pixels to avoid such changes.
#
# When reading legacy display files, we do not know the DPI
# scaling that was used to create the display.
# This factor is used to translate legacy font sizes
# from 'points' into 'pixel':
#
# legacy_points = pixel * legacy_font_calibration
#
# The test program
#   org.csstudio.display.builder.representation.swt.SWTFontCalibation
# can be used to obtain the factor when executed on the original
# platform where the legacy display files were created.
#
# When loading legacy files,
# _increasing_ the legacy_font_calibration will
# result in _smaller_ fonts in the display builder
legacy_font_calibration=1.01

# Maximum re-parse operations
#
# When reading legacy *.opi files and for example
# finding a "TextUpdate" widget that has no <pv_name>,
# it will be changed into a "Label" widget and then re-parsed.
# If more than a certain number of re-parse operations are triggered
# within one 'level' of the file (number of widgets at the root of the display,
# or number of childred for a "Group" widget),
# the parser assumes that it entered an infinite re-parse loop
# and aborts.
max_reparse_iterations=5000

# When writing a display file, skip properties that are still at default values?
skip_defaults=true

org.csstudio.display.builder.representation

File phoebus/app/display/representation/src/main/resources/display_representation_preferences.properties:

# ---------------------------------------------------
# Package org.csstudio.display.builder.representation
# ---------------------------------------------------

## Representation Tuning
#
# The representation 'throttles' updates to widgets.
# When a widget requests an update, a little accumulation time
# allows more updates to accumulate before actually performing
# the queued update requests on the UI thread.
#
# An update delay then suppresses further updates to prevent
# flooding the UI thread.
#
# Update runs that last longer than a threshold can be logged

# Time waited after a trigger to allow for more updates to accumulate
update_accumulation_time = 20

# Pause between updates to prevent flooding the UI thread
update_delay = 100

# Period in seconds for logging update performance
performance_log_period_secs = 5

# UI thread durations above this threshold are logged
performance_log_threshold_ms = 20

# Pause between updates of plots
# Limit to 250ms=4 Hz
plot_update_delay = 250

org.csstudio.display.builder.runtime

File phoebus/app/display/runtime/src/main/resources/display_runtime_preferences.properties:

# --------------------------------------------
# Package org.csstudio.display.builder.runtime
# --------------------------------------------

# Search path for Jython scripts used by the display runtime.
# Note that format depends on the OS.
# On UNIX systems, path entries are separated by ':', on Windows by ';'.
# python_path=/home/controls/displays/scripts:/home/fred/my_scripts
python_path=

# PV Name Patches
#
# Translate PV names based on regular expression pattern and replacement
#
# Format:  pattern@replacement@pattern@replacement
#
# Setting must contain a sequence of pattern & replacement pairs,
# all separated by '@'.
#
# The regular expression for the pattern can includes "( )" groups,
# which are then used in the replacement via "$1", "$2", ..
#
# If the item separator character '@' itself is required within the pattern or replacement,
# use '[@]' to distinguish it from the item separator, i.e.
#
#    [@]work@[@]home
#
# will patch "be@work" -> "be@home"
#
# Patches are applied in the order they're listed in the preference, i.e.
# later patches are applied to names already patched by earlier ones.
#
# Example:
# Remove PVManager's longString modifier,             'some_pv {"longString":true}' -> 'some_pv'
# turn constant formula into constant local variable, '=42'                         -> 'loc://const42(42)'
# as well as constant name into constant local var,   '="Fred"'                     -> 'loc://strFred("Fred")'
pv_name_patches=\\{"longString":true\\}"@@^=([0-9]+)@loc://const$1($1)@^="([a-zA-Z]+)"@loc://str$1("$1")

# PV update throttle in millisecs
# 250ms = 4 Hz
update_throttle=250

org.csstudio.scan.client

File phoebus/app/scan/client/src/main/resources/scan_client_preferences.properties:

# ----------------------------------------
# Package org.csstudio.scan.client
# ----------------------------------------

# Name of host where scan server is running
host=localhost

# TCP port of scan server REST interface
port=4810

# Poll period [millisecs] of the scan client (scan monitor, plot, ...)
poll_period=1000

org.phoebus.app.viewer3d

File phoebus/app/3dViewer/src/main/resources/3d_viewer_preferences.properties:

# --------------------------------
# Package org.phoebus.app.viewer3d
# --------------------------------

# Time out for reading from a URI
read_timeout=10000

# Default directory for the file chooser.
default_dir=$(user.home)

# Cone is approximated with these many faces.
# 3: Triangular base, most minimalistic
# 8: Looks pretty good
# Higher: Approaches circular base,
# but adds CPU & memory usage
# and doesn't really look much better
cone_faces=8

org.phoebus.applications.alarm

File phoebus/app/alarm/model/src/main/resources/alarm_preferences.properties:

# --------------------------------------
# Package org.phoebus.applications.alarm
# --------------------------------------

# Kafka Server host:port
server=localhost:9092

# Name of alarm tree root
config_name=Accelerator

# Names of selectable alarm configurations
# The `config_name` will be used as the default for newly opened tools,
# and if `config_names` is empty, it remains the only option.
# When one or more comma-separated configurations are listed,
# the UI shows the selected name and allows switching
# between them.
config_names=Accelerator, Demo

# Timeout in seconds for initial PV connection
connection_timeout=30


## Area Panel

# Item level for alarm area view:
# 1 - Root element
# 2 - Top-level "area" elements just below root
# 3 - Show all the items at level 3
alarm_area_level=2

# Number of columns in the alarm area view
alarm_area_column_count=3

# Gap between alarm area panel items
alarm_area_gap=5

# Font size for the alarm area view
alarm_area_font_size=15

# Limit for the number of context menu items.
# Separately applied to the number of 'guidance',
# 'display' and 'command' menu entries.
alarm_menu_max_items=10

# Alarm table row limit
# If there are more rows, they're suppressed
alarm_table_max_rows=2500

# Directory used for executing commands
# May use Java system properties like this: $(prop_name)
command_directory=$(user.home)

# The threshold of messages that must accumulate before the annunciator begins to simply state: "There are X Alarm messages."
annunciator_threshold=3

# The number of messages the annunciator will retain before popping messages off the front of the message queue.
annunciator_retention_count=100

# Timeout in seconds at which server sends idle state updates
# for the 'root' element if there's no real traffic.
# Client will wait 3 times this long and then declare a timeout.
idle_timeout=10

# Name of the sender, the 'from' field of automated email actions
automated_email_sender=Alarm Notifier <alarm_server@example.org>

# Comma-separated list of automated actions on which to follow up
# Options include mailto:, cmd:
automated_action_followup=mailto:, cmd:

# Optional heartbeat PV
# When defined, alarm server will set it to 1 every heartbeat_secs
#heartbeat_pv=Demo:AlarmServerHeartbeat
heartbeat_pv=

# Heartbeat PV period in seconds
heartbeat_secs=10

# Period for repeated annunciation
#
# If there are active alarms, i.e. alarms that have not been acknowleded,
# a message "There are 47 active alarms" will be issued
#
# Format is HH:MM:SS, for example 00:15:00 to nag every 15 minutes.
# Set to 0 to disable
nag_period=00:15:00

org.phoebus.applications.filebrowser

File phoebus/app/filebrowser/src/main/resources/filebrowser_preferences.properties:

# --------------------------------------------
# Package org.phoebus.applications.filebrowser
# --------------------------------------------

# Initial root directory for newly opened file browser
# May use system properties like "$(user.home)".
# At runtime, user can select a different base directory,
# but pressing the "Home" button reverts to this one.
default_root=$(user.home)

# Show hidden files (File.isHidden)?
show_hidden=false

org.phoebus.applications.pvtable

File phoebus/app/pvtable/src/main/resources/pv_table_preferences.properties:

# ----------------------------------------
# Package org.phoebus.applications.pvtable
# ----------------------------------------

# Should all BYTE[] values be considered "long strings"
treat_byte_array_as_string=true

# Show the units when displaying values?
show_units=true

# Show a "Description" column that reads xxx.DESC?
show_description=true

# Default tolerance for newly added items
tolerance=0.1

# Maximum update period for PVs in millisecs
max_update_period=500

org.phoebus.applications.pvtree

File phoebus/app/pvtree/src/main/resources/pv_tree_preferences.properties:

# ---------------------------------------
# Package org.phoebus.applications.pvtree
# ---------------------------------------

# The channel access DBR_STRING has a length limit of 40 chars.
# Since EPICS base R3.14.11, reading fields with an added '$' returns
# their value as a char[] without length limitation.
# For older IOCs, this will however fail, so set this option
# only if all IOCs are at least version R3.14.11
read_long_fields=true

# For each record type, list the fields to read and trace as 'links'.
#  Format: record_type (field1, field2) ; record_type (...)
#
# Fields can simply be listed as 'INP', 'DOL'.
# The syntax INPA-L is a shortcut for INPA, INPB, INPC, ..., INPL
# The syntax INP001-128 is a shortcut for INP001, INP002, ..., INP128
# The general syntax is "FIELDxxx-yyy",
# where "xxx" and "yyy" are the initial and final value.
# "xxx" and "yyy" need to be of the same length, i.e. "1-9" or "01-42", NOT "1-42".
# For characters, only single-char "A-Z" is supported, NOT "AA-ZZ",
# where it's also unclear if that should turn into AA, AB, AC, .., AZ, BA, BB, BC, .., ZZ
# or AA, BB, .., ZZ
#
# bigASub is a CSIRO/ASCAP record type, doesn't hurt to add that to the shared configuration
#
# scalcout is a bit unfortunate since there is no shortcut for INAA-INLL.

fields=aai(INP);ai(INP);bi(INP);compress(INP);longin(INP);mbbi(INP);mbbiDirect(INP);mbboDirect(INP);stringin(INP);subArray(INP);waveform(INP);aao(DOL);ao(DOL);bo(DOL);fanout(DOL);longout(DOL);mbbo(DOL);stringout(DOL);sub(INPA-L);genSub(INPA-L);calc(INPA-L);calcout(INPA-L);aSub(INPA-U);seq(SELN);bigASub(INP001-128);scalcout(INPA-L,INAA,INBB,INCC,INDD,INEE,INFF,INGG,INHH,INII,INJJ,INKK,INLL)


# Max update period in seconds
update_period=0.5

org.phoebus.applications.update

File phoebus/app/update/src/main/resources/update_preferences.properties:

# ----------------------------------------
# Package org.phoebus.applications.update
# ----------------------------------------

# Version time/date
#
# If the distribution found at the `update_url`
# is later than this date, an update will be performed.
#
# The updated distribution must contain a new value for
# the org.phoebus.applications.update/current_version setting.
#
# By for example publishing updates with a 'current_version'
# that's one month ahead, you can suppress minor updates
# for a month.
#
# Format: YYYY-MM-DD HH:MM
#current_version=2018-06-18 13:10
current_version=


# Location where updates can be found
#
# The file:, http: or https: URL is checked.
# If it exists, and its modification time is after `current_version`,
# the updated distribution is downloaded
# and the current Locations.install() is replaced.
#
# Location may include system properties
# and $(arch) will be replaced by "linux", "mac" or "win"
# to allow locations specific to each architecture.
#
# Empty: Do not perform any update check
update_url=
# update_url=https://controlssoftware.sns.ornl.gov/css_phoebus/nightly/product-sns-$(arch).zip

org.phoebus.archive.reader.appliance

File phoebus/app/databrowser/src/main/resources/appliance_preferences.properties:

# ----------------------------------------
# Package org.phoebus.archive.reader.appliance
# ----------------------------------------

useStatisticsForOptimizedData=true
useNewOptimizedOperator=true

org.phoebus.archive.reader.rdb

File phoebus/app/databrowser/src/main/resources/archive_reader_rdb_preferences.properties:

---------------------------------------
# Package org.phoebus.archive.reader.rdb
# --------------------------------------

# User and password for reading archived data
user=archive
password=$archive

# Table prefix
# For Oracle, this is typically the schema name,
# including "."
prefix=

# Timeout [seconds] for certain SQL queries
# Fundamentally, the SQL queries for data take as long as they take
# and any artificial timeout just breaks queries that would otherwise
# have returned OK a few seconds after the timeout.
# We've seen Oracle lockups, though, that caused JDBC to hang forever
# because the SAMPLE table was locked. No error/exception, just hanging.
# A timeout is used for operations other than getting the actual data,
# for example the channel id-by-name query which _should_ return within
# a shot time, to catch that type of RDB lockup.
timeout_secs=120
# Setting the timeout to 0 disables calls to setQueryTimeout,
# which may be required for PostgreSQL where the setQueryTimeout API is not implemented.
# timeout_secs=0


# Use a BLOB to read array samples?
#
# The original SAMPLE table did not contain an ARRAY_VAL column
# for the array blob data, but instead used a separate ARRAY_VAL table.
# When running against an old database, this parameter must be set to false.
use_array_blob=true

# Use stored procedures and functions for 'optimized' data readout?
# Set to procedure name, or nothing to disable stored procedure.
stored_procedure=
starttime_function=

# MySQL:
# stored_procedure=archive.get_browser_data

# PostgreSQL
# stored_procedure=public.get_browser_data

# Oracle:
# stored_procedure=chan_arch.archive_reader_pkg.get_browser_data
# starttime_function=SELECT chan_arch.archive_reader_pkg.get_actual_start_time (?, ?, ?)  FROM DUAL


# JDBC Statement 'fetch size':
# Number of samples to read in one network transfer.
#
# For Oracle, the default is 10.
# Tests resulted in a speed increase up to fetch sizes of 1000.
# On the other hand, bigger numbers can result in java.lang.OutOfMemoryError.
fetch_size=1000

org.phoebus.email

File phoebus/core/email/src/main/resources/email_preferences.properties:

# -------------------------
# Package org.phoebus.email
# -------------------------

# smtp host
# When set to "DISABLE", email support is disabled
mailhost=smtp.bnl.gov

# smtp port
mailport=25

# User and password for connecting to the mail host, usually left empty
username=
password=

org.phoebus.framework.workbench

File phoebus/core/framework/src/main/resources/workbench_preferences.properties:

# ---------------------------------------
# Package org.phoebus.framework.workbench
# ---------------------------------------

# External applications
#
# Defines applications to use for specific file extensions
#
# Format:
#
# Each definition consists of name, file extensions, command.
#
# Name is the name of the definition, used to register the application.
# File extensions is a '|'-separated list of file extensions (not including the 'dot').
# Command is the path to the command.
#
# Multiple definitions are separated by ';'
#
# Example:
#
# Start 'gedit' for text files, 'eog' for images, 'firefox' for PDF files
# external_apps=Text Editor,txt|dat|py|ini|db|xml|xsl|css|cmd|sh|st|log|out|md|shp,gedit; Image Viewer,png|jpg|gif|jpeg,eog; PDF Viewer,pdf,firefox


#
# The command will be invoked with the full path to the file.
external_apps=

# Directory where external applications are started
# May use system properties
external_apps_directory=$(user.home)

org.phoebus.logbook.ui

File phoebus/app/logbook/ui/src/main/resources/log_ui_preferences.properties:

# ------------------------------
# Package org.phoebus.logbook.ui
# ------------------------------

# Site specific log book implementation name.
# When empty, logbook submissions are disabled
logbook_factory=inmemory

# Comma-separated list of default logbooks for new log entries.
default_logbooks=Scratch Pad

# Whether or not to save user credentials to file so they only have to be entered once when making log entries.
save_credentials=false

org.phoebus.pv

File phoebus/core/pv/src/main/resources/pv_preferences.properties:

# ----------------------
# Package org.phoebus.pv
# ----------------------

# Default PV Type
default=ca

org.phoebus.pv.ca

File phoebus/core/pv/src/main/resources/pv_ca_preferences.properties:

# -------------------------
# Package org.phoebus.pv.ca
# -------------------------

# Channel Access address list
addr_list=

auto_addr_list=true

max_array_bytes=100000000

server_port=5064

repeater_port=5065

beacon_period=15

connection_timeout=30

# Support variable length arrays?
# auto, true, false
variable_length_array=auto

# Connect at lower priority for arrays
# with more elements than this threshold
large_array_threshold= 100000

# Is the DBE_PROPERTY subscription supported
# to monitor for changes in units, limits etc?
dbe_property_supported=false

# Mask to use for subscriptions
# VALUE, ALARM, ARCHIVE
monitor_mask=VALUE

org.phoebus.pv.mqtt

File phoebus/core/pv/src/main/resources/pv_mqtt_preferences.properties:

# ---------------------------
# Package org.phoebus.pv.mqtt
# ---------------------------

# MQTT Broker
# All "mqtt://some/tag" PVs will use this broker
mqtt_broker=tcp://localhost:1883

org.phoebus.security

File phoebus/core/security/src/main/resources/phoebus_security_preferences.properties:

# ----------------------------
# Package org.phoebus.security
# ----------------------------

# Authorization file
#
# If left empty, the built-in core/security/authorization.conf is used.
#
# When specifying a plain file name like "authorization.conf",
# the install location (Locations.install()) is searched for that file name.
#
# The file name can also be an absolute path like /some/path/auth.conf.
#
# Finally, the file name may use a system property like $(auth_file)
# which in turn could be set to either BUILTIN, a file in the install location,
# or an absolute path.
#
# When set to an invalid file, the user will have no authorizations at all.

# Use built-in core/security/authorization.conf
authorization_file=

# Use authorization.conf in the install location
#authorization_file=authorization.conf

org.phoebus.ui

File phoebus/core/ui/src/main/resources/phoebus_ui_preferences.properties:

# ----------------------
# Package org.phoebus.ui
# ----------------------

# Show the splash screen?
# Can also be set via '-splash' resp. '-nosplash' command line options
splash=true

# Default applications
#
# When there are multiple applications that handle
# a resource, the setting determins the one used by default.
#
# Format is comma-separated list with sub-text of default application names.
# For example, "run, exe" would pick "display_runtime" over "display_editor",
# and "foo_executor" over "foo_creator".
# The patterns "edit, creat" would inversely open the editor-type apps.
#
# This makes the display_runtime and the 3d_viewer default apps,
# using display_editor and a potentially configured text editor for *.shp files secondary
default_apps=run,3d

# Top resources to show in "File" menu and toolbar
#
# Format:
# uri1 | uri2,Display name 2 | uri3,Display name 3
top_resources=examples:/01_main.bob?app=display_runtime,Example Display | pv://?sim://sine&app=probe,Probe Example | pv://?sim://sine&loc://x(10)&app=pv_table,PV Table Example | http://www.google.com?app=web, Google

# Home display file. "Home display" button will navigate to this display.
home_display=examples:/01_main.bob?app=display_runtime,Example Display

# UI Responsiveness Monitor Period
# Period between tests [millisec],
# i.e. the minimum detected UI freeze duration
# Set to 0 to disable
ui_monitor_period=500