--config-file Path to the configuration file
FILE_OR_DIR the file to edit
--workflow-dir The workflow directory
--archive-dir The archive directory
--projects-dir The projects directory
--archived-projects-dir The archived projects directory
--waiting-threshold waiting report threshold to consider waiting entries 'overdue' default: Days 7
--stuck-threshold stuck report threshold to consider stuck projects 'overdue' default: Weeks 3
--work-base-filter The base work filter default: FilterSnd (FilterWithinCursor (FilterEntryTodoState (FilterMaybe False (FilterOr (FilterSub (TodoState {todoStateText = "NEXT"})) (FilterSub (TodoState {todoStateText = "STARTED"}))))))
--work-time-filter The property to use to filter by time
--work-columns The columns in the report default: OntoFile :| [OntoState,OntoHeader]
--work-sorter The sorter to use to sort the rows
--free-earliest the earliest time of day to consider free
--free-latest the latest time of day to consider free
--explainer-mode Activate explainer mode to show what is happening default: False
--explainer-mode Activate sandbox mode to ensure that smos can only edit smos files default: False
SMOS_CONFIG_FILE FILE_PATH Path to the configuration file
SMOS_WORKFLOW_DIR DIRECTORY_PATH The workflow directory
SMOS_ARCHIVE_DIR DIRECTORY_PATH The archive directory
SMOS_PROJECTS_DIR DIRECTORY_PATH The projects directory
SMOS_ARCHIVED_PROJECTS_DIR DIRECTORY_PATH The archived projects directory
SMOS_WAITING_THRESHOLD TIME waiting report threshold to consider waiting entries 'overdue' default: Days 7
SMOS_STUCK_THRESHOLD TIME stuck report threshold to consider stuck projects 'overdue' default: Weeks 3
SMOS_WORK_BASE_FILTER FILTER The base work filter default: FilterSnd (FilterWithinCursor (FilterEntryTodoState (FilterMaybe False (FilterOr (FilterSub (TodoState {todoStateText = "NEXT"})) (FilterSub (TodoState {todoStateText = "STARTED"}))))))
SMOS_WORK_TIME_FILTER PROPERTY_NAME The property to use to filter by time
SMOS_WORK_COLUMNS COLUMNS The columns in the report default: OntoFile :| [OntoState,OntoHeader]
SMOS_WORK_SORTER SORTER The sorter to use to sort the rows
SMOS_FREE_EARLIEST TIME_OF_DAY the earliest time of day to consider free
SMOS_FREE_LATEST TIME_OF_DAY the latest time of day to consider free
SMOS_EXPLAINER_MODE ANY Activate explainer mode to show what is happening default: False
SMOS_EXPLAINER_MODE ANY Activate sandbox mode to ensure that smos can only edit smos files default: False
Whether to reset all keybindings. Set this to false to add keys, set this to true to replace keys.
reset:
# any of
[ null
, null
, <boolean>
]
Keybindings for the file context
file:
# any of
[ null
, null
, # FileKeyConfigs
empty: # optional
# Keybindings for when the file is empty
# or null
def: KeyConfigs
- def: KeyConfig
# KeyConfig
key: # required
# The key to match
<string>
action: # required
# The name of the action to perform when the key is matched
<string>
entry: # optional
# Keybindings for when an entry is selected
# or null
ref: KeyConfigs
header: # optional
# Keybindings for when an header is selected
# or null
ref: KeyConfigs
contents: # optional
# Keybindings for when an contents is selected
# or null
ref: KeyConfigs
timestamps: # optional
# Keybindings for when a timestamps are selected
# or null
ref: KeyConfigs
properties: # optional
# Keybindings for when a properties are selected
# or null
ref: KeyConfigs
state-history: # optional
# Keybindings for when a state history is selected
# or null
ref: KeyConfigs
tags: # optional
# Keybindings for when a tags are selected
# or null
ref: KeyConfigs
logbook: # optional
# Keybindings for when a logbook is selected
# or null
ref: KeyConfigs
any: # optional
# Keybindings that match in any file subcontext
# or null
ref: KeyConfigs
]
Keybindings for the file browser context
browser:
# any of
[ null
, null
, # BrowserKeyConfigs
existent: # optional
# Keybindings for when an existing file or directory is selected
# or null
def: KeyConfigs
- def: KeyConfig
# KeyConfig
key: # required
# The key to match
<string>
action: # required
# The name of the action to perform when the key is matched
<string>
in-progress: # optional
# Keybindings for when an in-progress file or directory is selected
# or null
ref: KeyConfigs
empty: # optional
# Keybindings for when the directory being browsed is empty
# or null
ref: KeyConfigs
filter: # optional
# Keybindings for when file browser's filter bar is selected
# or null
ref: KeyConfigs
any: # optional
# Keybindings for any of the other file browser situations
# or null
ref: KeyConfigs
]
Keybindings for the reports context
reports:
# any of
[ null
, null
, # ReportsKeyConfigs
next-action: # optional
# Keybindings for the interactive next action report
# or null
# NextActionReportKeyConfigs
normal: # optional
# Keybindings for interacting with the next-action report
# or null
def: KeyConfigs
- def: KeyConfig
# KeyConfig
key: # required
# The key to match
<string>
action: # required
# The name of the action to perform when the key is matched
<string>
search: # optional
# Keybindings for the search in the next-action report
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any point in the next-action report
# or null
ref: KeyConfigs
waiting: # optional
# Keybindings for the interactive waiting report
# or null
# WaitingReportKeyConfigs
normal: # optional
# Keybindings for interacting with the waiting report
# or null
ref: KeyConfigs
search: # optional
# Keybindings for the search in the waiting report
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any point in the waiting report
# or null
ref: KeyConfigs
ongoing: # optional
# Keybindings for the interactive ongoing report
# or null
# OngoingReportKeyConfigs
normal: # optional
# Keybindings for interacting with the ongoing report
# or null
ref: KeyConfigs
search: # optional
# Keybindings for the search in the ongoing report
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any point in the ongoing report
# or null
ref: KeyConfigs
timestamps: # optional
# Keybindings for the interactive timestamps report
# or null
# TimestampsReportKeyConfigs
normal: # optional
# Keybindings for interacting with the timestamps report
# or null
ref: KeyConfigs
search: # optional
# Keybindings for the search in the timestamps report
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any point in the timestamps report
# or null
ref: KeyConfigs
stuck: # optional
# Keybindings for the interactive stuck projects report
# or null
# StuckReportKeyConfigs
normal: # optional
# Keybindings for interacting with the stuck report
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any point in the stuck report
# or null
ref: KeyConfigs
work: # optional
# Keybindings for the interactive work report
# or null
# WorkReportKeyConfigs
normal: # optional
# Keybindings for interacting with the work report
# or null
ref: KeyConfigs
search: # optional
# Keybindings for the search in the work report
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any point in the work report
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any point in any report
# or null
ref: KeyConfigs
]
Keybindings for the help context
help:
# any of
[ null
, null
, # HelpKeyConfigs
help: # optional
# Keybindings for when in the help screen
# or null
def: KeyConfigs
- def: KeyConfig
# KeyConfig
key: # required
# The key to match
<string>
action: # required
# The name of the action to perform when the key is matched
<string>
search: # optional
# Keybindings for when the search bar is selected within the help screen
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any time in the help screen
# or null
ref: KeyConfigs
]
Keybindings for any context
any:
# any of
[ null
, null
, def: KeyConfigs
- def: KeyConfig
# KeyConfig
key: # required
# The key to match
<string>
action: # required
# The name of the action to perform when the key is matched
<string>
]
The workflow directory
workflow-dir:
# or null
<string>
The archive directory
archive-dir:
# or null
<string>
The projects directory
projects-dir:
# or null
<string>
The archived projects directory
archived-projects-dir:
# or null
<string>
waiting report threshold to consider waiting entries 'overdue'
default: Days 7
waiting.threshold:
# or null
def: Time
# any of
[ # Time string, for example:
# 2s
# 2 seconds
# 3m
# 3 minutes
# 4h
# 4 hours
# 5d
# 5 days
# 6w
# 6 weeks
# 7mo
# 7 months
# 8y
# 8 years
<string>
, # Interpreted as a number of days
<integer> # 64 bit unsigned integer
]
stuck report threshold to consider stuck projects 'overdue'
default: Weeks 3
stuck.threshold:
# or null
def: Time
# any of
[ # Time string, for example:
# 2s
# 2 seconds
# 3m
# 3 minutes
# 4h
# 4 hours
# 5d
# 5 days
# 6w
# 6 weeks
# 7mo
# 7 months
# 8y
# 8 years
<string>
, # Interpreted as a number of days
<integer> # 64 bit unsigned integer
]
The base work filter
default: FilterSnd (FilterWithinCursor (FilterEntryTodoState (FilterMaybe False (FilterOr (FilterSub (TodoState {todoStateText = "NEXT"})) (FilterSub (TodoState {todoStateText = "STARTED"}))))))
work.base-filter:
# or null
def: EntryFilter
# A filter is a string of one of the following forms:
#
# tag:<tag>
# state:<state>
# file:<file>
# level:<level>
# header:<header>
# property:<property-name>
# property:<property-name>:<property-value>
# property:<property-name>:time:<comparison>:<time>
# parent:<filter>
# ancestor:<filter>
# child:<filter>
# legacy:<filter>
# not:<filter>
# (<filter> and <filter>)
# (<filter> or <filter>)
<string>
Checks for the work report
default: fromList []
work.checks:
# or null
- def: EntryFilter
# A filter is a string of one of the following forms:
#
# tag:<tag>
# state:<state>
# file:<file>
# level:<level>
# header:<header>
# property:<property-name>
# property:<property-name>:<property-value>
# property:<property-name>:time:<comparison>:<time>
# parent:<filter>
# ancestor:<filter>
# child:<filter>
# legacy:<filter>
# not:<filter>
# (<filter> and <filter>)
# (<filter> or <filter>)
<string>
Contexts for the work report
default: fromList []
work.contexts:
# or null
<key>:
def: EntryFilter
# A filter is a string of one of the following forms:
#
# tag:<tag>
# state:<state>
# file:<file>
# level:<level>
# header:<header>
# property:<property-name>
# property:<property-name>:<property-value>
# property:<property-name>:time:<comparison>:<time>
# parent:<filter>
# ancestor:<filter>
# child:<filter>
# legacy:<filter>
# not:<filter>
# (<filter> and <filter>)
# (<filter> or <filter>)
<string>
The property to use to filter by time
work.time-filter:
# or null
def: PropertyName
<string>
The columns in the report
default: OntoFile :| [OntoState,OntoHeader]
work.columns:
# or null
- def: Projection
# A column (projection) is a string of one of the following forms:
#
# file
# state
# header
# tag:<tag-name>
# property:<property-name>
# timestamp:<timestamp-name>
# ancestor:<projection>
<string>
The sorter to use to sort the rows
work.sorter:
# or null
def: Sorter
# A sorter is a string of one of the following forms:
#
# file
# header
# state
# tag:<tag>
# property:<property-name>
# property-as-time:<property-name>
# timestamp:<timestamp-name>
# reverse:<sorter>
# (<sorter> then <sorter>)
<string>
the earliest time of day to consider free
free.earliest:
# or null
# TimeOfDay
<string>
the latest time of day to consider free
free.latest:
# or null
# TimeOfDay
<string>
Activate explainer mode to show what is happening
default: False
explainer-mode:
# or null
<boolean>
Activate sandbox mode to ensure that smos can only edit smos files
default: False
explainer-mode:
# or null
<boolean>
Usage: smos [--config-file FILE_PATH] [FILE_OR_DIR] [--workflow-dir DIRECTORY_PATH] [--archive-dir DIRECTORY_PATH] [--projects-dir DIRECTORY_PATH] [--archived-projects-dir DIRECTORY_PATH] [--waiting-threshold TIME] [--stuck-threshold TIME] [[--work-base-filter FILTER]] [--work-time-filter PROPERTY_NAME] [--work-columns COLUMNS] [--work-sorter SORTER] [--free-earliest TIME_OF_DAY] [--free-latest TIME_OF_DAY] [[--explainer-mode]] [[--explainer-mode]]
All settings:
Show this help text
switch: -h|--help
Output version information
switch: --version
Path to the configuration file
option: --config-file FILE_PATH
env: SMOS_CONFIG_FILE FILE_PATH
the file to edit
argument: FILE_OR_DIR
Whether to reset all keybindings. Set this to false to add keys, set this to true to replace keys.
config:
reset: # any of
[ null
, null
, <boolean>
]
Keybindings for the file context
config:
file: # any of
[ null
, null
, # FileKeyConfigs
empty: # optional
# Keybindings for when the file is empty
# or null
def: KeyConfigs
- def: KeyConfig
# KeyConfig
key: # required
# The key to match
<string>
action: # required
# The name of the action to perform when the key is matched
<string>
entry: # optional
# Keybindings for when an entry is selected
# or null
ref: KeyConfigs
header: # optional
# Keybindings for when an header is selected
# or null
ref: KeyConfigs
contents: # optional
# Keybindings for when an contents is selected
# or null
ref: KeyConfigs
timestamps: # optional
# Keybindings for when a timestamps are selected
# or null
ref: KeyConfigs
properties: # optional
# Keybindings for when a properties are selected
# or null
ref: KeyConfigs
state-history: # optional
# Keybindings for when a state history is selected
# or null
ref: KeyConfigs
tags: # optional
# Keybindings for when a tags are selected
# or null
ref: KeyConfigs
logbook: # optional
# Keybindings for when a logbook is selected
# or null
ref: KeyConfigs
any: # optional
# Keybindings that match in any file subcontext
# or null
ref: KeyConfigs
]
Keybindings for the file browser context
config:
browser: # any of
[ null
, null
, # BrowserKeyConfigs
existent: # optional
# Keybindings for when an existing file or directory is selected
# or null
def: KeyConfigs
- def: KeyConfig
# KeyConfig
key: # required
# The key to match
<string>
action: # required
# The name of the action to perform when the key is matched
<string>
in-progress: # optional
# Keybindings for when an in-progress file or directory is selected
# or null
ref: KeyConfigs
empty: # optional
# Keybindings for when the directory being browsed is empty
# or null
ref: KeyConfigs
filter: # optional
# Keybindings for when file browser's filter bar is selected
# or null
ref: KeyConfigs
any: # optional
# Keybindings for any of the other file browser situations
# or null
ref: KeyConfigs
]
Keybindings for the reports context
config:
reports: # any of
[ null
, null
, # ReportsKeyConfigs
next-action: # optional
# Keybindings for the interactive next action report
# or null
# NextActionReportKeyConfigs
normal: # optional
# Keybindings for interacting with the next-action report
# or null
def: KeyConfigs
- def: KeyConfig
# KeyConfig
key: # required
# The key to match
<string>
action: # required
# The name of the action to perform when the key is matched
<string>
search: # optional
# Keybindings for the search in the next-action report
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any point in the next-action report
# or null
ref: KeyConfigs
waiting: # optional
# Keybindings for the interactive waiting report
# or null
# WaitingReportKeyConfigs
normal: # optional
# Keybindings for interacting with the waiting report
# or null
ref: KeyConfigs
search: # optional
# Keybindings for the search in the waiting report
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any point in the waiting report
# or null
ref: KeyConfigs
ongoing: # optional
# Keybindings for the interactive ongoing report
# or null
# OngoingReportKeyConfigs
normal: # optional
# Keybindings for interacting with the ongoing report
# or null
ref: KeyConfigs
search: # optional
# Keybindings for the search in the ongoing report
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any point in the ongoing report
# or null
ref: KeyConfigs
timestamps: # optional
# Keybindings for the interactive timestamps report
# or null
# TimestampsReportKeyConfigs
normal: # optional
# Keybindings for interacting with the timestamps report
# or null
ref: KeyConfigs
search: # optional
# Keybindings for the search in the timestamps report
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any point in the timestamps report
# or null
ref: KeyConfigs
stuck: # optional
# Keybindings for the interactive stuck projects report
# or null
# StuckReportKeyConfigs
normal: # optional
# Keybindings for interacting with the stuck report
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any point in the stuck report
# or null
ref: KeyConfigs
work: # optional
# Keybindings for the interactive work report
# or null
# WorkReportKeyConfigs
normal: # optional
# Keybindings for interacting with the work report
# or null
ref: KeyConfigs
search: # optional
# Keybindings for the search in the work report
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any point in the work report
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any point in any report
# or null
ref: KeyConfigs
]
Keybindings for the help context
config:
help: # any of
[ null
, null
, # HelpKeyConfigs
help: # optional
# Keybindings for when in the help screen
# or null
def: KeyConfigs
- def: KeyConfig
# KeyConfig
key: # required
# The key to match
<string>
action: # required
# The name of the action to perform when the key is matched
<string>
search: # optional
# Keybindings for when the search bar is selected within the help screen
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any time in the help screen
# or null
ref: KeyConfigs
]
Keybindings for any context
config:
any: # any of
[ null
, null
, def: KeyConfigs
- def: KeyConfig
# KeyConfig
key: # required
# The key to match
<string>
action: # required
# The name of the action to perform when the key is matched
<string>
]
The workflow directory
option: --workflow-dir DIRECTORY_PATH
env: SMOS_WORKFLOW_DIR DIRECTORY_PATH
config:
workflow-dir: # or null
<string>
The archive directory
option: --archive-dir DIRECTORY_PATH
env: SMOS_ARCHIVE_DIR DIRECTORY_PATH
config:
archive-dir: # or null
<string>
The projects directory
option: --projects-dir DIRECTORY_PATH
env: SMOS_PROJECTS_DIR DIRECTORY_PATH
config:
projects-dir: # or null
<string>
The archived projects directory
option: --archived-projects-dir DIRECTORY_PATH
env: SMOS_ARCHIVED_PROJECTS_DIR DIRECTORY_PATH
config:
archived-projects-dir: # or null
<string>
waiting report threshold to consider waiting entries 'overdue'
option: --waiting-threshold TIME
env: SMOS_WAITING_THRESHOLD TIME
config:
waiting.threshold: # or null
def: Time
# any of
[ # Time string, for example:
# 2s
# 2 seconds
# 3m
# 3 minutes
# 4h
# 4 hours
# 5d
# 5 days
# 6w
# 6 weeks
# 7mo
# 7 months
# 8y
# 8 years
<string>
, # Interpreted as a number of days
<integer> # 64 bit unsigned integer
]
default: Days 7
stuck report threshold to consider stuck projects 'overdue'
option: --stuck-threshold TIME
env: SMOS_STUCK_THRESHOLD TIME
config:
stuck.threshold: # or null
def: Time
# any of
[ # Time string, for example:
# 2s
# 2 seconds
# 3m
# 3 minutes
# 4h
# 4 hours
# 5d
# 5 days
# 6w
# 6 weeks
# 7mo
# 7 months
# 8y
# 8 years
<string>
, # Interpreted as a number of days
<integer> # 64 bit unsigned integer
]
default: Weeks 3
The base work filter
option: --work-base-filter FILTER
env: SMOS_WORK_BASE_FILTER FILTER
config:
work.base-filter: # or null
def: EntryFilter
# A filter is a string of one of the following forms:
#
# tag:<tag>
# state:<state>
# file:<file>
# level:<level>
# header:<header>
# property:<property-name>
# property:<property-name>:<property-value>
# property:<property-name>:time:<comparison>:<time>
# parent:<filter>
# ancestor:<filter>
# child:<filter>
# legacy:<filter>
# not:<filter>
# (<filter> and <filter>)
# (<filter> or <filter>)
<string>
default: FilterSnd (FilterWithinCursor (FilterEntryTodoState (FilterMaybe False (FilterOr (FilterSub (TodoState {todoStateText = "NEXT"})) (FilterSub (TodoState {todoStateText = "STARTED"}))))))
Checks for the work report
config:
work.checks: # or null
- def: EntryFilter
# A filter is a string of one of the following forms:
#
# tag:<tag>
# state:<state>
# file:<file>
# level:<level>
# header:<header>
# property:<property-name>
# property:<property-name>:<property-value>
# property:<property-name>:time:<comparison>:<time>
# parent:<filter>
# ancestor:<filter>
# child:<filter>
# legacy:<filter>
# not:<filter>
# (<filter> and <filter>)
# (<filter> or <filter>)
<string>
default: fromList []
Contexts for the work report
config:
work.contexts: # or null
<key>:
def: EntryFilter
# A filter is a string of one of the following forms:
#
# tag:<tag>
# state:<state>
# file:<file>
# level:<level>
# header:<header>
# property:<property-name>
# property:<property-name>:<property-value>
# property:<property-name>:time:<comparison>:<time>
# parent:<filter>
# ancestor:<filter>
# child:<filter>
# legacy:<filter>
# not:<filter>
# (<filter> and <filter>)
# (<filter> or <filter>)
<string>
default: fromList []
The property to use to filter by time
option: --work-time-filter PROPERTY_NAME
env: SMOS_WORK_TIME_FILTER PROPERTY_NAME
config:
work.time-filter: # or null
def: PropertyName
<string>
The columns in the report
option: --work-columns COLUMNS
env: SMOS_WORK_COLUMNS COLUMNS
config:
work.columns: # or null
- def: Projection
# A column (projection) is a string of one of the following forms:
#
# file
# state
# header
# tag:<tag-name>
# property:<property-name>
# timestamp:<timestamp-name>
# ancestor:<projection>
<string>
default: OntoFile :| [OntoState,OntoHeader]
The sorter to use to sort the rows
option: --work-sorter SORTER
env: SMOS_WORK_SORTER SORTER
config:
work.sorter: # or null
def: Sorter
# A sorter is a string of one of the following forms:
#
# file
# header
# state
# tag:<tag>
# property:<property-name>
# property-as-time:<property-name>
# timestamp:<timestamp-name>
# reverse:<sorter>
# (<sorter> then <sorter>)
<string>
the earliest time of day to consider free
option: --free-earliest TIME_OF_DAY
env: SMOS_FREE_EARLIEST TIME_OF_DAY
config:
free.earliest: # or null
# TimeOfDay
<string>
the latest time of day to consider free
option: --free-latest TIME_OF_DAY
env: SMOS_FREE_LATEST TIME_OF_DAY
config:
free.latest: # or null
# TimeOfDay
<string>
Activate explainer mode to show what is happening
switch: --explainer-mode
env: SMOS_EXPLAINER_MODE ANY
config:
explainer-mode: # or null
<boolean>
default: False
Activate sandbox mode to ensure that smos can only edit smos files
switch: --explainer-mode
env: SMOS_EXPLAINER_MODE ANY
config:
explainer-mode: # or null
<boolean>
default: False
Options:
-h|--help Show this help text
--version Output version information
--config-file Path to the configuration file
FILE_OR_DIR the file to edit
--workflow-dir The workflow directory
--archive-dir The archive directory
--projects-dir The projects directory
--archived-projects-dir The archived projects directory
--waiting-threshold waiting report threshold to consider waiting entries 'overdue' default: Days 7
--stuck-threshold stuck report threshold to consider stuck projects 'overdue' default: Weeks 3
--work-base-filter The base work filter default: FilterSnd (FilterWithinCursor (FilterEntryTodoState (FilterMaybe False (FilterOr (FilterSub (TodoState {todoStateText = "NEXT"})) (FilterSub (TodoState {todoStateText = "STARTED"}))))))
--work-time-filter The property to use to filter by time
--work-columns The columns in the report default: OntoFile :| [OntoState,OntoHeader]
--work-sorter The sorter to use to sort the rows
--free-earliest the earliest time of day to consider free
--free-latest the latest time of day to consider free
--explainer-mode Activate explainer mode to show what is happening default: False
--explainer-mode Activate sandbox mode to ensure that smos can only edit smos files default: False
Environment Variables:
SMOS_CONFIG_FILE FILE_PATH Path to the configuration file
SMOS_WORKFLOW_DIR DIRECTORY_PATH The workflow directory
SMOS_ARCHIVE_DIR DIRECTORY_PATH The archive directory
SMOS_PROJECTS_DIR DIRECTORY_PATH The projects directory
SMOS_ARCHIVED_PROJECTS_DIR DIRECTORY_PATH The archived projects directory
SMOS_WAITING_THRESHOLD TIME waiting report threshold to consider waiting entries 'overdue' default: Days 7
SMOS_STUCK_THRESHOLD TIME stuck report threshold to consider stuck projects 'overdue' default: Weeks 3
SMOS_WORK_BASE_FILTER FILTER The base work filter default: FilterSnd (FilterWithinCursor (FilterEntryTodoState (FilterMaybe False (FilterOr (FilterSub (TodoState {todoStateText = "NEXT"})) (FilterSub (TodoState {todoStateText = "STARTED"}))))))
SMOS_WORK_TIME_FILTER PROPERTY_NAME The property to use to filter by time
SMOS_WORK_COLUMNS COLUMNS The columns in the report default: OntoFile :| [OntoState,OntoHeader]
SMOS_WORK_SORTER SORTER The sorter to use to sort the rows
SMOS_FREE_EARLIEST TIME_OF_DAY the earliest time of day to consider free
SMOS_FREE_LATEST TIME_OF_DAY the latest time of day to consider free
SMOS_EXPLAINER_MODE ANY Activate explainer mode to show what is happening default: False
SMOS_EXPLAINER_MODE ANY Activate sandbox mode to ensure that smos can only edit smos files default: False
Configuration Values:
Whether to reset all keybindings. Set this to false to add keys, set this to true to replace keys.
reset:
# any of
[ null
, null
, <boolean>
]
Keybindings for the file context
file:
# any of
[ null
, null
, # FileKeyConfigs
empty: # optional
# Keybindings for when the file is empty
# or null
def: KeyConfigs
- def: KeyConfig
# KeyConfig
key: # required
# The key to match
<string>
action: # required
# The name of the action to perform when the key is matched
<string>
entry: # optional
# Keybindings for when an entry is selected
# or null
ref: KeyConfigs
header: # optional
# Keybindings for when an header is selected
# or null
ref: KeyConfigs
contents: # optional
# Keybindings for when an contents is selected
# or null
ref: KeyConfigs
timestamps: # optional
# Keybindings for when a timestamps are selected
# or null
ref: KeyConfigs
properties: # optional
# Keybindings for when a properties are selected
# or null
ref: KeyConfigs
state-history: # optional
# Keybindings for when a state history is selected
# or null
ref: KeyConfigs
tags: # optional
# Keybindings for when a tags are selected
# or null
ref: KeyConfigs
logbook: # optional
# Keybindings for when a logbook is selected
# or null
ref: KeyConfigs
any: # optional
# Keybindings that match in any file subcontext
# or null
ref: KeyConfigs
]
Keybindings for the file browser context
browser:
# any of
[ null
, null
, # BrowserKeyConfigs
existent: # optional
# Keybindings for when an existing file or directory is selected
# or null
def: KeyConfigs
- def: KeyConfig
# KeyConfig
key: # required
# The key to match
<string>
action: # required
# The name of the action to perform when the key is matched
<string>
in-progress: # optional
# Keybindings for when an in-progress file or directory is selected
# or null
ref: KeyConfigs
empty: # optional
# Keybindings for when the directory being browsed is empty
# or null
ref: KeyConfigs
filter: # optional
# Keybindings for when file browser's filter bar is selected
# or null
ref: KeyConfigs
any: # optional
# Keybindings for any of the other file browser situations
# or null
ref: KeyConfigs
]
Keybindings for the reports context
reports:
# any of
[ null
, null
, # ReportsKeyConfigs
next-action: # optional
# Keybindings for the interactive next action report
# or null
# NextActionReportKeyConfigs
normal: # optional
# Keybindings for interacting with the next-action report
# or null
def: KeyConfigs
- def: KeyConfig
# KeyConfig
key: # required
# The key to match
<string>
action: # required
# The name of the action to perform when the key is matched
<string>
search: # optional
# Keybindings for the search in the next-action report
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any point in the next-action report
# or null
ref: KeyConfigs
waiting: # optional
# Keybindings for the interactive waiting report
# or null
# WaitingReportKeyConfigs
normal: # optional
# Keybindings for interacting with the waiting report
# or null
ref: KeyConfigs
search: # optional
# Keybindings for the search in the waiting report
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any point in the waiting report
# or null
ref: KeyConfigs
ongoing: # optional
# Keybindings for the interactive ongoing report
# or null
# OngoingReportKeyConfigs
normal: # optional
# Keybindings for interacting with the ongoing report
# or null
ref: KeyConfigs
search: # optional
# Keybindings for the search in the ongoing report
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any point in the ongoing report
# or null
ref: KeyConfigs
timestamps: # optional
# Keybindings for the interactive timestamps report
# or null
# TimestampsReportKeyConfigs
normal: # optional
# Keybindings for interacting with the timestamps report
# or null
ref: KeyConfigs
search: # optional
# Keybindings for the search in the timestamps report
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any point in the timestamps report
# or null
ref: KeyConfigs
stuck: # optional
# Keybindings for the interactive stuck projects report
# or null
# StuckReportKeyConfigs
normal: # optional
# Keybindings for interacting with the stuck report
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any point in the stuck report
# or null
ref: KeyConfigs
work: # optional
# Keybindings for the interactive work report
# or null
# WorkReportKeyConfigs
normal: # optional
# Keybindings for interacting with the work report
# or null
ref: KeyConfigs
search: # optional
# Keybindings for the search in the work report
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any point in the work report
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any point in any report
# or null
ref: KeyConfigs
]
Keybindings for the help context
help:
# any of
[ null
, null
, # HelpKeyConfigs
help: # optional
# Keybindings for when in the help screen
# or null
def: KeyConfigs
- def: KeyConfig
# KeyConfig
key: # required
# The key to match
<string>
action: # required
# The name of the action to perform when the key is matched
<string>
search: # optional
# Keybindings for when the search bar is selected within the help screen
# or null
ref: KeyConfigs
any: # optional
# Keybindings for at any time in the help screen
# or null
ref: KeyConfigs
]
Keybindings for any context
any:
# any of
[ null
, null
, def: KeyConfigs
- def: KeyConfig
# KeyConfig
key: # required
# The key to match
<string>
action: # required
# The name of the action to perform when the key is matched
<string>
]
The workflow directory
workflow-dir:
# or null
<string>
The archive directory
archive-dir:
# or null
<string>
The projects directory
projects-dir:
# or null
<string>
The archived projects directory
archived-projects-dir:
# or null
<string>
waiting report threshold to consider waiting entries 'overdue'
default: Days 7
waiting.threshold:
# or null
def: Time
# any of
[ # Time string, for example:
# 2s
# 2 seconds
# 3m
# 3 minutes
# 4h
# 4 hours
# 5d
# 5 days
# 6w
# 6 weeks
# 7mo
# 7 months
# 8y
# 8 years
<string>
, # Interpreted as a number of days
<integer> # 64 bit unsigned integer
]
stuck report threshold to consider stuck projects 'overdue'
default: Weeks 3
stuck.threshold:
# or null
def: Time
# any of
[ # Time string, for example:
# 2s
# 2 seconds
# 3m
# 3 minutes
# 4h
# 4 hours
# 5d
# 5 days
# 6w
# 6 weeks
# 7mo
# 7 months
# 8y
# 8 years
<string>
, # Interpreted as a number of days
<integer> # 64 bit unsigned integer
]
The base work filter
default: FilterSnd (FilterWithinCursor (FilterEntryTodoState (FilterMaybe False (FilterOr (FilterSub (TodoState {todoStateText = "NEXT"})) (FilterSub (TodoState {todoStateText = "STARTED"}))))))
work.base-filter:
# or null
def: EntryFilter
# A filter is a string of one of the following forms:
#
# tag:<tag>
# state:<state>
# file:<file>
# level:<level>
# header:<header>
# property:<property-name>
# property:<property-name>:<property-value>
# property:<property-name>:time:<comparison>:<time>
# parent:<filter>
# ancestor:<filter>
# child:<filter>
# legacy:<filter>
# not:<filter>
# (<filter> and <filter>)
# (<filter> or <filter>)
<string>
Checks for the work report
default: fromList []
work.checks:
# or null
- def: EntryFilter
# A filter is a string of one of the following forms:
#
# tag:<tag>
# state:<state>
# file:<file>
# level:<level>
# header:<header>
# property:<property-name>
# property:<property-name>:<property-value>
# property:<property-name>:time:<comparison>:<time>
# parent:<filter>
# ancestor:<filter>
# child:<filter>
# legacy:<filter>
# not:<filter>
# (<filter> and <filter>)
# (<filter> or <filter>)
<string>
Contexts for the work report
default: fromList []
work.contexts:
# or null
<key>:
def: EntryFilter
# A filter is a string of one of the following forms:
#
# tag:<tag>
# state:<state>
# file:<file>
# level:<level>
# header:<header>
# property:<property-name>
# property:<property-name>:<property-value>
# property:<property-name>:time:<comparison>:<time>
# parent:<filter>
# ancestor:<filter>
# child:<filter>
# legacy:<filter>
# not:<filter>
# (<filter> and <filter>)
# (<filter> or <filter>)
<string>
The property to use to filter by time
work.time-filter:
# or null
def: PropertyName
<string>
The columns in the report
default: OntoFile :| [OntoState,OntoHeader]
work.columns:
# or null
- def: Projection
# A column (projection) is a string of one of the following forms:
#
# file
# state
# header
# tag:<tag-name>
# property:<property-name>
# timestamp:<timestamp-name>
# ancestor:<projection>
<string>
The sorter to use to sort the rows
work.sorter:
# or null
def: Sorter
# A sorter is a string of one of the following forms:
#
# file
# header
# state
# tag:<tag>
# property:<property-name>
# property-as-time:<property-name>
# timestamp:<timestamp-name>
# reverse:<sorter>
# (<sorter> then <sorter>)
<string>
the earliest time of day to consider free
free.earliest:
# or null
# TimeOfDay
<string>
the latest time of day to consider free
free.latest:
# or null
# TimeOfDay
<string>
Activate explainer mode to show what is happening
default: False
explainer-mode:
# or null
<boolean>
Activate sandbox mode to ensure that smos can only edit smos files
default: False
explainer-mode:
# or null
<boolean>