Provided by: wofi_1.4.1-1build2_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)