The work report is the most important report that you will use.
This report shows you your agenda for the day, and the next actions that you can perform in your current context, as well as any warnings that you need to see about the state of your workflow.
Contexts
For context-based work reports, you will first need contexts.
For example, you can use these in your config file:
work:
contexts:
home: 'ancestor:tag:home'
office: 'ancestor:tag:office'
airplane: 'tag:offline'
These specify that, when you're at home, you can only do the tasks that are tagged 'home' or whose parents are tagged as 'home'.
Advanced work reports
You can also configure checks, collumns and a sorter for this report as follows:
work:
checks:
- 'property:timewindow'
columns:
- 'file'
- 'state'
- 'header'
- 'property:timewindow'
sorter: 'reverse:property-as-time:timewindow'
Here we configure smos-query
to warn us if any of the entries that should be reported is missing a timewindow
property.
We also specify that the collumns in the report should be the file, the todo state, the header and the timewindow
property for each entry.
The last line configures smos-query
to sort these entries by their timewindow
property value.
Filters, columns and sorters are all documented on their own pages.
smos-query work [CONTEXT] [TIME_FILTER] [--time-filter PROPERTY_NAME] [[--base-filter FILTER]] [-f|--filter FILTER [-f|--filter FILTER]] [--columns COLUMNS] [--sort SORTER [--sort SORTER]] [--hide-archive | --show-archive|-a] [--waiting-threshold TIME] [--stuck-threshold TIME]
CONTEXT The context that you are in
TIME_FILTER A filter to filter by time
--time-filter The property to use to filter by time
--base-filter The base work filter default: FilterSnd (FilterWithinCursor (FilterEntryTodoState (FilterMaybe False (FilterOr (FilterSub (TodoState {todoStateText = "NEXT"})) (FilterSub (TodoState {todoStateText = "STARTED"}))))))
-f|--filter A filter to filter entries by
-f|--filter A filter to filter entries by
--columns The columns in the report default: OntoFile :| [OntoState,OntoHeader]
--sort A sorter to sort entries by
--sort A sorter to sort entries by
--hide-archive Hide archived files
--show-archive|-a Do not hide archived files
--waiting-threshold The threshold at which to color waiting entries red default: Days 7
--stuck-threshold The threshold at which to color stuck projects red default: Weeks 3
SMOS_WORK_CONTEXT CONTEXT The context that you are in
SMOS_WORK_TIME TIME_FILTER A filter to filter by time
SMOS_WORK_TIME_FILTER PROPERTY_NAME The property to use to filter by time
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_FILTER FILTER A filter to filter entries by
SMOS_WORK_COLUMNS COLUMNS The columns in the report default: OntoFile :| [OntoState,OntoHeader]
SMOS_WORK_SORTER SORTER A sorter to sort entries by
SMOS_WORK_IGNORE_ARCHIVE BOOL Whether to consider archived entries default: HideArchive
SMOS_WAITING_THRESHOLD TIME The threshold at which to color waiting entries red default: Days 7
SMOS_STUCK_THRESHOLD TIME The threshold at which to color stuck projects red default: Weeks 3
The context that you are in
work.context:
# or null
<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>
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>
A filter to filter by time
work.time:
# 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 property to use to filter by time
work.time-filter:
# or null
def: PropertyName
<string>
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>
A filter to filter entries by
work.filter:
# any of
[ 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>
, - ref: EntryFilter
]
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>
A sorter to sort entries by
work.sorter:
# any of
[ 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>
, - ref: Sorter
]
Whether to consider archived entries
default: HideArchive
work.hide-archive:
# or null
<boolean>
The threshold at which to color waiting entries red
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
]
The threshold at which to color stuck projects red
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
]
Usage: smos-query work [CONTEXT] [TIME_FILTER] [--time-filter PROPERTY_NAME] [[--base-filter FILTER]] [-f|--filter FILTER [-f|--filter FILTER]] [--columns COLUMNS] [--sort SORTER [--sort SORTER]] [--hide-archive | --show-archive|-a] [--waiting-threshold TIME] [--stuck-threshold TIME]
Run the work report
Available settings:
Show this help text
switch: -h|--help
The context that you are in
argument: CONTEXT
env: SMOS_WORK_CONTEXT CONTEXT
config:
work.context: # or null
<string>
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 []
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 []
A filter to filter by time
argument: TIME_FILTER
env: SMOS_WORK_TIME TIME_FILTER
config:
work.time: # 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 property to use to filter by time
option: --time-filter PROPERTY_NAME
env: SMOS_WORK_TIME_FILTER PROPERTY_NAME
config:
work.time-filter: # or null
def: PropertyName
<string>
The base work filter
option: --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"}))))))
A filter to filter entries by
option: -f|--filter FILTER
A filter to filter entries by
option: -f|--filter FILTER
A filter to filter entries by
env: SMOS_WORK_FILTER FILTER
config:
work.filter: # any of
[ 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>
, - ref: EntryFilter
]
The columns in the report
option: --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]
A sorter to sort entries by
option: --sort SORTER
A sorter to sort entries by
option: --sort SORTER
A sorter to sort entries by
env: SMOS_WORK_SORTER SORTER
config:
work.sorter: # any of
[ 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>
, - ref: Sorter
]
Hide archived files
switch: --hide-archive
Do not hide archived files
switch: --show-archive|-a
Whether to consider archived entries
env: SMOS_WORK_IGNORE_ARCHIVE BOOL
config:
work.hide-archive: # or null
<boolean>
default: HideArchive
The threshold at which to color waiting entries red
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
The threshold at which to color stuck projects red
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