/* * rofi * * MIT/X11 License * Copyright © 2013-2023 Qball Cow * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #ifndef ROFI_XRMOPTIONS_H #define ROFI_XRMOPTIONS_H #include "theme.h" #include "xcb.h" // Big thanks to Sean Pringle for this code. /** * @defgroup CONFXResources XResources Configuration * @ingroup CONFIGURATION * * Configuration described in Xresource format. This can be loaded from the X * server or file. * * @defgroup CONFXServer XServer Configuration * @ingroup CONFXResources * * Loads the configuration directly from the X server using the XResources * system. * * @defgroup CONFCommandline Commandline Configuration * @ingroup CONFIGURATION * * Modified the configuration based on commandline arguments * * @defgroup CONFFile File Configuration * @ingroup CONFXResources * * Loads the configuration from a config file that uses the XResource file * format. * * @defgroup CONFIGURATION Configuration * * This provides rofi configuration system, supports: * * Compiled defaults. * * XResource parsing * * Config file parsing * * Commandline options. * * @{ */ /** * Type of the config options. */ typedef enum { /** Config option is string */ xrm_String = 0, /** Config option is an unsigned number */ xrm_Number = 1, /** Config option is a signed number */ xrm_SNumber = 2, /** Config option is a boolean (true/false) value*/ xrm_Boolean = 3, /** Config option is a character */ xrm_Char = 4 } XrmOptionType; /** * Parse commandline options. * @ingroup CONFCommandline */ void config_parse_cmd_options(void); /** * Free any allocated memory. * * @ingroup CONFXResources */ void config_xresource_free(void); /** * @param type The type of the value * @param key The key referring to this configuration option * @param value The value to update based [out][in] * @param comment Description of this configuration option * * Add option (at runtime) to the dynamic option parser. */ void config_parser_add_option(XrmOptionType type, const char *key, void **value, const char *comment); /** * Print the current configuration to stdout. Uses bold/italic when printing to * terminal. */ void print_options(void); /** * @param option The name of the option * @param type String describing the type * @param text Description of the option * @param def Current value of the option * @param isatty If printed to a terminal * * Function that does the markup for printing an configuration option to stdout. */ void print_help_msg(const char *option, const char *type, const char *text, const char *def, int isatty); /** * @param length the length of the returned array * * Creates an array with a strings describing each keybinding. * * @returns an array of string with length elements */ char **config_parser_return_display_help(unsigned int *length); /** * @brief Set config option. * * Sets both the static as dynamic config option. * * @param p Property to set * @param error Error msg when not found. * * @returns true when failed to set property. */ gboolean config_parse_set_property(const Property *p, char **error); /** * @param out The destination. * @param changes Only print the changed options. * * @brief Dump configuration in rasi format. */ void config_parse_dump_config_rasi_format(FILE *out, gboolean changes); /** @}*/ #endif