Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
wofi(3) 		    Library Functions Manual			 wofi(3)

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, /lib/wofi/plugins, or /usr/lib/wofi/plugins.
     If $XDG_CONFIG_HOME is not defined then it will default to ~/.config.

     The shared objects will be loaded from the paths  in  the	order  specified
     above,  wofi  will  stop  searching once it finds a plugin with the name in
     question. For example if a plugin called  libtest.so  exists  in  $XDG_CON-
     FIG_HOME it will mask one called libtest.so in /lib.

     It  is very important to note that this API is not stable. It's mostly sta-
     ble 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  in-
     side  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  de-
	    fined  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 re-
	    quest the next widget  to  be  added.  See	wofi_create_widget()  in
	    wofi-api(3)  on  how  to obtain a struct widget*. NULL should be re-
	    turned 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)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=wofi&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help