Smos Logo Smos

A comprehensive self-management system

Work report

Documentation about the smos-query work command, for the contextual work report

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.


For context-based work reports, you will first need contexts. For example, you can use these in your config file:

    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:

    - 'property:timewindow'
    - '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.



Usage: smos-query work [CONTEXT] [TIME_FILTER] [-f|--filter FILTER] 
                       [--add-column|--project PROJECTION] [--sort SORTER] 
                       [--hide-archived | (-a|--show-archived)] 
                       [--waiting-threshold TIME] [--stuck-threshold TIME]

  Show the work overview

Available options:
  CONTEXT                  The context that you are in
  TIME_FILTER              A filter to filter by time
  -f,--filter FILTER       A filter to filter entries by
  --add-column,--project PROJECTION
                           A projection to project entries onto fields
  --sort SORTER            A sorter to sort entries by
  --hide-archived          ignore archived files.
  -a,--show-archived       Don't ignore archived files.
  --waiting-threshold TIME The threshold at which to color waiting entries red
  --stuck-threshold TIME   The threshold at which to color stuck projects red
  -h,--help                Show this help text

Global options:
  --config-file FILE_PATH  The config file to use
  --workflow-dir DIRECTORY_PATH
                           The workflow directory to use
  --archive-dir DIRECTORY_PATH
                           The archive directory to use
  --projects-dir DIRECTORY_PATH
                           The projects directory to use
  --archived-projects-dir DIRECTORY_PATHPATH
                           The archived projects directory to use


This command does not use any extra environment variables.


# Configuration
work: # optional
  # WorkReportConfiguration
  base-filter: # optional
    # The base work 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>)
  checks: # optional
    # Checks for the work report
    # or null
    - ref: EntryFilter
  contexts: # optional
    # Contexts for the work report
    # or null
      ref: EntryFilter
  time-filter: # optional
    # The property to use to filter by time
    # or null
    def: PropertyName
  columns: # optional
    # The columns in the report
    # 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>
  sorter: # optional
    # The sorter to use to sort the rows
    # 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>)