Provided by: wofi_1.3-1_amd64 bug

NAME

       wofi - Mode functions and documentation

DESCRIPTION

       Wofi provides a C API which can be used for developing 3rd party modes. These modes should
       be compiled to a shared object which should be placed in $XDG_CONFIG_HOME/wofi/plugins. If
       $XDG_CONFIG_HOME is not defined then it will default to ~/.config.

       It  is  very  important to note that this API is not stable. It's mostly stable however if
       something comes up that requires  a  substantial  change  things  will  be  changed.  This
       shouldn't happen too much but has happened in the past and might in the future.

HEADER FILES

       There  are  2  header  files  required in order to use the wofi API, wofi_api.h and map.h.
       utils.h might be useful to include if you want a  few  helper  functions  but  it  is  not
       required. utils.h will not be documented here as it's outside the scope of the mode API.

MODE FUNCTIONS

       The following list of functions are the functions which can be defined inside of your mode
       which will be called to do setup, and acquire various pieces of information from the mode.

       void init(struct mode* mode, struct map* config)
              Defining this function is required. This function is called to  setup  your  plugin
              and provide it with several pointers which are described below.

              struct  mode*  mode - used to identify your mode, it is passed to a large number of
              the API functions to identify your mode.

              struct map* config - all of the config options that the user defined for your mode.
              Information on how to access this can be found in wofi-map(3).

       void load(struct mode* mode)
              Defining  this  function is optional. This function is called before ALL others and
              provides your mode pointer as early as possible.

              struct mode* mode - used to identify your mode, it is passed to a large  number  of
              the API functions to identify your mode.

       const char** get_arg_names(void)
              Defining  this  function  is  optional.  This function is called to get an array of
              config options which can be set by the user. All of these options have the name  of
              your  mode  prefixed  on the front so if your array is for example {"opt1", "opt2"}
              the config options defined will be mode-opt1=value and mode-opt2=value  where  mode
              is the name of the shared object.

       size_t get_arg_count(void)
              Defining  this  function  is optional. This function is called to get the number of
              arguments returned by get_arg_names(void).

       void exec(const char* cmd)
              Defining this function is required. This function is called when the  user  selects
              an entry.

              const  char* cmd - The action registered to the selected entry. If your mode allows
              executing searches directly then this will be the search contents  if  no  matching
              entries exist.

       struct widget* get_widget(void)
              Defining  this  function  is  optional. This function is called to request the next
              widget to be added. See wofi_create_widget() in wofi-api(3)  on  how  to  obtain  a
              struct widget*. NULL should be returned to denote no more widgets are available.

       bool no_entry(void)
              Defining  this function is optional. This function is called to find out whether or
              not this mode supports running searches without any matching entries.  The  default
              is  false, if you wish to allow your mode to take searches directly you must define
              this and return true.

                                                                                          wofi(3)