2015-07-27 08:17:12 +00:00
|
|
|
#ifndef ROFI_MAIN_H
|
|
|
|
#define ROFI_MAIN_H
|
2014-01-26 12:29:38 +00:00
|
|
|
#include <X11/X.h>
|
2014-08-07 19:42:16 +00:00
|
|
|
#include <glib.h>
|
2015-09-26 18:34:34 +00:00
|
|
|
#include <string.h>
|
|
|
|
#include <stdlib.h>
|
2016-01-07 12:32:33 +00:00
|
|
|
#include "textbox.h"
|
2015-09-27 10:57:54 +00:00
|
|
|
#include <cairo.h>
|
|
|
|
#include <cairo-xlib.h>
|
2015-11-14 12:47:45 +00:00
|
|
|
#include "timings.h"
|
2015-04-30 19:47:32 +00:00
|
|
|
#include "keyb.h"
|
2014-01-20 22:36:20 +00:00
|
|
|
|
2016-01-07 07:54:24 +00:00
|
|
|
/**
|
|
|
|
* @defgroup Widgets Widgets
|
|
|
|
*/
|
|
|
|
|
2014-11-25 07:27:08 +00:00
|
|
|
/**
|
|
|
|
* Pointer to xdg cache directory.
|
|
|
|
*/
|
2014-01-25 22:37:37 +00:00
|
|
|
extern const char *cache_dir;
|
2014-01-20 22:36:20 +00:00
|
|
|
|
2015-11-25 08:26:38 +00:00
|
|
|
typedef struct _Mode Mode;
|
2014-06-02 10:54:35 +00:00
|
|
|
/**
|
|
|
|
* Enum used to sum the possible states of ROFI.
|
|
|
|
*/
|
2014-03-22 20:04:19 +00:00
|
|
|
typedef enum
|
|
|
|
{
|
2014-06-02 10:54:35 +00:00
|
|
|
/** Exit. */
|
2014-11-11 20:50:16 +00:00
|
|
|
MODE_EXIT = 1000,
|
2014-06-02 10:54:35 +00:00
|
|
|
/** Skip to the next cycle-able dialog. */
|
2014-11-11 20:50:16 +00:00
|
|
|
NEXT_DIALOG = 1001,
|
2014-07-21 19:39:24 +00:00
|
|
|
/** Reload current DIALOG */
|
2014-11-11 20:50:16 +00:00
|
|
|
RELOAD_DIALOG = 1002,
|
|
|
|
/** Previous dialog */
|
|
|
|
PREVIOUS_DIALOG = 1003
|
2015-11-25 08:26:38 +00:00
|
|
|
} ModeMode;
|
2014-01-20 22:36:20 +00:00
|
|
|
|
2014-06-02 10:54:35 +00:00
|
|
|
/**
|
|
|
|
* State returned by the rofi window.
|
|
|
|
*/
|
2014-03-22 20:04:19 +00:00
|
|
|
typedef enum
|
|
|
|
{
|
2014-06-02 10:54:35 +00:00
|
|
|
/** Entry is selected. */
|
2015-05-10 10:08:08 +00:00
|
|
|
MENU_OK = 0x00010000,
|
2014-06-02 10:54:35 +00:00
|
|
|
/** User canceled the operation. (e.g. pressed escape) */
|
2015-05-10 10:08:08 +00:00
|
|
|
MENU_CANCEL = 0x00020000,
|
2014-06-02 10:54:35 +00:00
|
|
|
/** User requested a mode switch */
|
2015-05-10 10:08:08 +00:00
|
|
|
MENU_NEXT = 0x00040000,
|
2014-06-02 10:54:35 +00:00
|
|
|
/** Custom (non-matched) input was entered. */
|
2015-05-10 10:08:08 +00:00
|
|
|
MENU_CUSTOM_INPUT = 0x00080000,
|
2014-06-02 10:54:35 +00:00
|
|
|
/** User wanted to delete entry from history. */
|
2015-05-03 11:04:03 +00:00
|
|
|
MENU_ENTRY_DELETE = 0x00100000,
|
2014-11-25 07:27:08 +00:00
|
|
|
/** User wants to jump to another switcher. */
|
2015-05-03 11:04:03 +00:00
|
|
|
MENU_QUICK_SWITCH = 0x00200000,
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Go to the previous menu. */
|
2015-05-03 11:04:03 +00:00
|
|
|
MENU_PREVIOUS = 0x00400000,
|
2015-03-27 19:28:53 +00:00
|
|
|
/** Modifiers */
|
2015-05-03 11:04:03 +00:00
|
|
|
MENU_SHIFT = 0x10000000,
|
|
|
|
/** Mask */
|
|
|
|
MENU_LOWER_MASK = 0x0000FFFF
|
2014-02-01 13:03:23 +00:00
|
|
|
} MenuReturn;
|
2014-01-20 22:36:20 +00:00
|
|
|
|
2014-11-25 07:27:08 +00:00
|
|
|
/**
|
|
|
|
* @param sig The caught signal
|
|
|
|
*
|
|
|
|
* Catch the exit signal generated by X.
|
|
|
|
*/
|
2014-03-22 20:04:19 +00:00
|
|
|
void catch_exit ( __attribute__( ( unused ) ) int sig );
|
|
|
|
|
2014-11-25 07:27:08 +00:00
|
|
|
/**
|
|
|
|
* Enumeration indicating location or gravity of window.
|
|
|
|
*
|
|
|
|
* WL_NORTH_WEST WL_NORTH WL_NORTH_EAST
|
|
|
|
*
|
|
|
|
* WL_EAST WL_CENTER WL_EAST
|
|
|
|
*
|
|
|
|
* WL_SOUTH_WEST WL_SOUTH WL_SOUTH_EAST
|
|
|
|
*
|
|
|
|
*/
|
2014-03-22 20:04:19 +00:00
|
|
|
typedef enum _WindowLocation
|
|
|
|
{
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Center */
|
2014-03-22 20:04:19 +00:00
|
|
|
WL_CENTER = 0,
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Left top corner. */
|
2014-03-22 20:04:19 +00:00
|
|
|
WL_NORTH_WEST = 1,
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Top middle */
|
2014-03-22 20:04:19 +00:00
|
|
|
WL_NORTH = 2,
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Top right */
|
2014-03-22 20:04:19 +00:00
|
|
|
WL_NORTH_EAST = 3,
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Middle right */
|
2014-03-22 20:04:19 +00:00
|
|
|
WL_EAST = 4,
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Bottom right */
|
2014-03-22 20:04:19 +00:00
|
|
|
WL_EAST_SOUTH = 5,
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Bottom middle */
|
2014-03-22 20:04:19 +00:00
|
|
|
WL_SOUTH = 6,
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Bottom left */
|
2014-03-22 20:04:19 +00:00
|
|
|
WL_SOUTH_WEST = 7,
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Middle left */
|
2014-03-22 20:04:19 +00:00
|
|
|
WL_WEST = 8
|
2014-01-25 23:27:57 +00:00
|
|
|
} WindowLocation;
|
|
|
|
|
2015-11-24 21:02:30 +00:00
|
|
|
/**
|
2015-11-25 08:26:38 +00:00
|
|
|
* @param sw the Mode to show.
|
2015-11-24 21:02:30 +00:00
|
|
|
* @param lines An array of strings to display.
|
|
|
|
* @param num_lines Length of the array with strings to display.
|
|
|
|
* @param input A pointer to a string where the inputted data is placed.
|
|
|
|
* @param prompt The prompt to show.
|
|
|
|
* @param shift pointer to integer that is set to the state of the shift key.
|
|
|
|
* @param mmc Menu menu match callback, used for matching user input.
|
|
|
|
* @param mmc_data data to pass to mmc.
|
|
|
|
* @param selected_line pointer to integer holding the selected line.
|
|
|
|
* @param message Extra message to display.
|
|
|
|
*
|
|
|
|
* Main menu callback.
|
|
|
|
*
|
|
|
|
* @returns The command issued (see MenuReturn)
|
|
|
|
*/
|
2015-11-25 08:26:38 +00:00
|
|
|
MenuReturn menu ( Mode *sw, char **input, char *prompt, unsigned int *selected_line, unsigned int *next_pos, const char *message )
|
2015-11-24 21:02:30 +00:00
|
|
|
__attribute__ ( ( nonnull ( 1, 2, 3, 4 ) ) );
|
2014-01-23 10:39:12 +00:00
|
|
|
/**
|
|
|
|
* Settings
|
|
|
|
*/
|
|
|
|
|
2014-03-22 20:04:19 +00:00
|
|
|
typedef struct _Settings
|
|
|
|
{
|
2015-11-25 08:26:38 +00:00
|
|
|
/** List of enabled modi */
|
|
|
|
char *modi;
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Window settings */
|
2014-03-22 20:04:19 +00:00
|
|
|
unsigned int window_opacity;
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Border width */
|
2014-03-22 20:04:19 +00:00
|
|
|
unsigned int menu_bw;
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Width (0-100 in %, > 100 in pixels, < 0 in char width.) */
|
2014-08-11 18:21:29 +00:00
|
|
|
int menu_width;
|
2014-11-25 07:27:08 +00:00
|
|
|
/** # lines */
|
2014-03-22 20:04:19 +00:00
|
|
|
unsigned int menu_lines;
|
2014-11-25 07:27:08 +00:00
|
|
|
/** # Columns */
|
2014-05-19 07:50:09 +00:00
|
|
|
unsigned int menu_columns;
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Font string (pango format) */
|
2014-03-22 20:04:19 +00:00
|
|
|
char * menu_font;
|
2015-04-06 15:13:26 +00:00
|
|
|
|
|
|
|
/** New row colors */
|
2015-04-11 10:04:14 +00:00
|
|
|
unsigned int color_enabled;
|
2015-04-06 15:13:26 +00:00
|
|
|
char * color_normal;
|
|
|
|
char * color_active;
|
|
|
|
char * color_urgent;
|
|
|
|
char * color_window;
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Foreground color */
|
2014-03-22 20:04:19 +00:00
|
|
|
char * menu_fg;
|
2015-04-03 16:40:07 +00:00
|
|
|
char * menu_fg_urgent;
|
|
|
|
char * menu_fg_active;
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Background color */
|
2014-03-22 20:04:19 +00:00
|
|
|
char * menu_bg;
|
2015-04-06 13:23:58 +00:00
|
|
|
char * menu_bg_urgent;
|
|
|
|
char * menu_bg_active;
|
2015-01-12 18:14:46 +00:00
|
|
|
/** Background color alt */
|
|
|
|
char * menu_bg_alt;
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Highlight foreground color */
|
2014-03-22 20:04:19 +00:00
|
|
|
char * menu_hlfg;
|
2015-04-06 13:23:58 +00:00
|
|
|
char * menu_hlfg_urgent;
|
|
|
|
char * menu_hlfg_active;
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Highlight background color */
|
2014-03-22 20:04:19 +00:00
|
|
|
char * menu_hlbg;
|
2015-04-06 13:23:58 +00:00
|
|
|
char * menu_hlbg_urgent;
|
|
|
|
char * menu_hlbg_active;
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Border color */
|
2014-03-22 20:04:19 +00:00
|
|
|
char * menu_bc;
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Terminal to use */
|
2014-03-22 20:04:19 +00:00
|
|
|
char * terminal_emulator;
|
2014-11-25 07:27:08 +00:00
|
|
|
/** SSH client to use */
|
2014-09-03 11:07:26 +00:00
|
|
|
char * ssh_client;
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Command to execute when ssh session is selected */
|
2014-09-03 11:07:26 +00:00
|
|
|
char * ssh_command;
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Command for executing an application */
|
2014-09-03 11:07:26 +00:00
|
|
|
char * run_command;
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Command for executing an application in a terminal */
|
2014-09-03 11:07:26 +00:00
|
|
|
char * run_shell_command;
|
2015-01-05 20:53:50 +00:00
|
|
|
/** Command for listing executables */
|
|
|
|
char * run_list_command;
|
2014-05-20 09:22:03 +00:00
|
|
|
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Windows location/gravity */
|
2014-03-22 20:04:19 +00:00
|
|
|
WindowLocation location;
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Padding between elements */
|
2014-03-22 20:04:19 +00:00
|
|
|
unsigned int padding;
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Y offset */
|
2014-05-15 14:54:35 +00:00
|
|
|
int y_offset;
|
2014-11-25 07:27:08 +00:00
|
|
|
/** X offset */
|
2014-05-15 19:55:23 +00:00
|
|
|
int x_offset;
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Always should config.menu_lines lines, even if less lines are available */
|
2014-05-17 20:17:07 +00:00
|
|
|
unsigned int fixed_num_lines;
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Do not use history */
|
2014-06-05 19:55:47 +00:00
|
|
|
unsigned int disable_history;
|
2015-10-15 20:33:44 +00:00
|
|
|
/** Use levenshtein sorting when matching */
|
|
|
|
unsigned int levenshtein_sort;
|
2015-01-12 13:13:46 +00:00
|
|
|
/** Search case sensitivity */
|
|
|
|
unsigned int case_sensitive;
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Separator to use for dmenu mode */
|
2014-10-19 17:42:02 +00:00
|
|
|
char separator;
|
2016-01-05 20:19:30 +00:00
|
|
|
/** Height of an element in number of rows */
|
2014-10-30 16:53:22 +00:00
|
|
|
int element_height;
|
2015-11-25 08:26:38 +00:00
|
|
|
/** Sidebar mode, show the modi */
|
2015-02-01 09:43:28 +00:00
|
|
|
unsigned int sidebar_mode;
|
2015-01-18 17:17:09 +00:00
|
|
|
/** Lazy filter limit. */
|
|
|
|
unsigned int lazy_filter_limit;
|
2015-02-24 16:34:25 +00:00
|
|
|
/** Auto select. */
|
|
|
|
unsigned int auto_select;
|
2015-03-29 10:27:00 +00:00
|
|
|
/** Hosts file parsing */
|
|
|
|
unsigned int parse_hosts;
|
2015-10-31 16:26:13 +00:00
|
|
|
/** Knonw_hosts file parsing */
|
|
|
|
unsigned int parse_known_hosts;
|
2015-11-25 08:26:38 +00:00
|
|
|
/** Combi Modes */
|
2015-03-31 20:45:02 +00:00
|
|
|
char *combi_modi;
|
2015-07-01 07:12:22 +00:00
|
|
|
/** Fuzzy match */
|
|
|
|
unsigned int fuzzy;
|
2015-10-02 18:39:57 +00:00
|
|
|
unsigned int glob;
|
2015-10-04 14:37:07 +00:00
|
|
|
unsigned int tokenize;
|
2015-11-17 15:10:14 +00:00
|
|
|
unsigned int regex;
|
2015-08-02 13:45:52 +00:00
|
|
|
/** Monitors */
|
|
|
|
int monitor;
|
2015-08-04 07:42:14 +00:00
|
|
|
/** Line margin */
|
|
|
|
unsigned int line_margin;
|
2015-08-20 19:42:53 +00:00
|
|
|
/** filter */
|
|
|
|
char *filter;
|
2015-08-26 16:11:53 +00:00
|
|
|
/** style */
|
|
|
|
char *separator_style;
|
2015-09-04 19:08:23 +00:00
|
|
|
/** hide scrollbar */
|
|
|
|
unsigned int hide_scrollbar;
|
2015-09-22 20:23:52 +00:00
|
|
|
/** show markup in elements. */
|
|
|
|
unsigned int markup_rows;
|
2015-10-16 18:51:37 +00:00
|
|
|
/** fullscreen */
|
|
|
|
unsigned int fullscreen;
|
2015-10-20 16:41:45 +00:00
|
|
|
/** bg image */
|
|
|
|
unsigned int fake_transparency;
|
2015-10-30 20:32:09 +00:00
|
|
|
/** dpi */
|
2015-11-03 16:34:02 +00:00
|
|
|
int dpi;
|
2015-11-11 23:18:43 +00:00
|
|
|
/** Number threads (1 to disable) */
|
|
|
|
unsigned int threads;
|
2015-12-13 12:51:59 +00:00
|
|
|
unsigned int scrollbar_width;
|
2014-01-23 10:39:12 +00:00
|
|
|
} Settings;
|
|
|
|
|
2014-11-25 07:27:08 +00:00
|
|
|
/** Global Settings structure. */
|
2014-01-23 10:39:12 +00:00
|
|
|
extern Settings config;
|
2014-02-03 21:49:07 +00:00
|
|
|
|
2014-11-25 07:27:08 +00:00
|
|
|
/**
|
|
|
|
* @param msg The error message to show.
|
2015-06-08 21:22:35 +00:00
|
|
|
* @param markup The error message uses pango markup.
|
2014-11-25 07:27:08 +00:00
|
|
|
*
|
|
|
|
* The error message to show.
|
|
|
|
*/
|
2015-06-08 21:22:35 +00:00
|
|
|
void error_dialog ( const char *msg, int markup );
|
2014-11-25 07:27:08 +00:00
|
|
|
|
2015-11-25 08:26:38 +00:00
|
|
|
typedef void ( *switcher_free )( Mode *data );
|
2015-11-24 21:02:30 +00:00
|
|
|
|
2015-11-25 08:26:38 +00:00
|
|
|
typedef char * ( *switcher_get_display_value )( const Mode *sw, unsigned int selected_line, int *state, int get_entry );
|
2015-11-24 21:02:30 +00:00
|
|
|
|
2015-11-25 08:26:38 +00:00
|
|
|
typedef char * ( *switcher_get_completion )( const Mode *sw, unsigned int selected_line );
|
2015-11-24 21:02:30 +00:00
|
|
|
/**
|
|
|
|
* @param tokens List of (input) tokens to match.
|
|
|
|
* @param input The entry to match against.
|
|
|
|
* @param case_sensitive Whether case is significant.
|
|
|
|
* @param index The current selected index.
|
|
|
|
* @param data User data.
|
|
|
|
*
|
|
|
|
* Function prototype for the matching algorithm.
|
|
|
|
*
|
|
|
|
* @returns 1 when it matches, 0 if not.
|
|
|
|
*/
|
2015-11-25 08:26:38 +00:00
|
|
|
typedef int ( *switcher_token_match )( const Mode *data, char **tokens, int not_ascii, int case_sensitive, unsigned int index );
|
2015-11-24 21:02:30 +00:00
|
|
|
|
2015-11-25 08:26:38 +00:00
|
|
|
typedef void ( *switcher_init )( Mode *sw );
|
2015-11-24 21:02:30 +00:00
|
|
|
|
2015-11-25 08:26:38 +00:00
|
|
|
typedef unsigned int ( *switcher_get_num_entries )( const Mode *sw );
|
2015-11-24 21:02:30 +00:00
|
|
|
|
2015-11-25 08:26:38 +00:00
|
|
|
typedef void ( *switcher_destroy )( Mode *sw );
|
2015-11-24 21:02:30 +00:00
|
|
|
|
2015-11-25 08:26:38 +00:00
|
|
|
typedef ModeMode ( *switcher_result )( Mode *sw, int menu_retv, char **input, unsigned int selected_line );
|
2015-11-24 21:02:30 +00:00
|
|
|
|
2015-11-25 08:26:38 +00:00
|
|
|
typedef int ( *switcher_is_not_ascii )( const Mode *sw, unsigned int index );
|
2015-11-24 21:02:30 +00:00
|
|
|
|
2015-03-27 19:28:53 +00:00
|
|
|
/**
|
|
|
|
* Structure defining a switcher.
|
|
|
|
* It consists of a name, callback and if enabled
|
|
|
|
* a textbox for the sidebar-mode.
|
|
|
|
*/
|
2015-11-25 08:26:38 +00:00
|
|
|
struct _Mode
|
2015-03-27 19:28:53 +00:00
|
|
|
{
|
|
|
|
// Name (max 31 char long)
|
|
|
|
char name[32];
|
|
|
|
// Keybindings (keysym and modmask)
|
|
|
|
char * keycfg;
|
|
|
|
char * keystr;
|
|
|
|
KeySym keysym;
|
|
|
|
unsigned int modmask;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* A switcher normally consists of the following parts:
|
|
|
|
*/
|
2015-11-25 08:26:38 +00:00
|
|
|
// Initialize the Mode
|
|
|
|
switcher_init init;
|
2015-11-24 21:02:30 +00:00
|
|
|
// Destroy the switcher, e.g. free all its memory.
|
2015-11-25 08:26:38 +00:00
|
|
|
switcher_destroy destroy;
|
2015-11-24 21:02:30 +00:00
|
|
|
// Get number of entries to display. (unfiltered).
|
2015-11-25 08:26:38 +00:00
|
|
|
switcher_get_num_entries get_num_entries;
|
2015-11-24 21:02:30 +00:00
|
|
|
// Check if the element is ascii.
|
2015-11-25 08:26:38 +00:00
|
|
|
switcher_is_not_ascii is_not_ascii;
|
2015-11-24 21:02:30 +00:00
|
|
|
// Process the result of the user selection.
|
2015-11-25 08:26:38 +00:00
|
|
|
switcher_result result;
|
2015-03-27 19:28:53 +00:00
|
|
|
// Token match.
|
2015-11-25 08:26:38 +00:00
|
|
|
switcher_token_match token_match;
|
2015-11-24 21:02:30 +00:00
|
|
|
// Get the string to display for the entry.
|
|
|
|
switcher_get_display_value mgrv;
|
|
|
|
// Get the 'completed' entry.
|
2015-11-25 08:26:38 +00:00
|
|
|
switcher_get_completion get_completion;
|
2015-11-24 12:59:35 +00:00
|
|
|
|
2015-03-27 19:28:53 +00:00
|
|
|
// Pointer to private data.
|
2015-11-25 08:26:38 +00:00
|
|
|
void *private_data;
|
2015-03-27 19:28:53 +00:00
|
|
|
|
|
|
|
// Free SWitcher
|
2015-11-24 21:02:30 +00:00
|
|
|
// Only to be used when the switcher object itself is dynamic.
|
|
|
|
// And has data in `ed`
|
2015-11-25 08:26:38 +00:00
|
|
|
switcher_free free;
|
2015-11-24 21:02:30 +00:00
|
|
|
// Extra fields for script
|
2015-11-25 08:26:38 +00:00
|
|
|
void *ed;
|
2015-03-27 19:28:53 +00:00
|
|
|
};
|
|
|
|
|
2015-04-05 21:06:39 +00:00
|
|
|
#define color_reset "\033[0m"
|
|
|
|
#define color_bold "\033[1m"
|
2015-10-16 06:42:01 +00:00
|
|
|
#define color_italic "\033[2m"
|
2015-04-05 20:29:26 +00:00
|
|
|
#define color_underline "\033[4m"
|
2015-04-05 21:06:39 +00:00
|
|
|
#define color_black "\033[0;30m"
|
|
|
|
#define color_red "\033[0;31m"
|
|
|
|
#define color_green "\033[0;32m"
|
|
|
|
#define color_yellow "\033[0;33m"
|
|
|
|
#define color_blue "\033[0;34m"
|
|
|
|
#define color_magenta "\033[0;35m"
|
|
|
|
#define color_cyan "\033[0;36m"
|
|
|
|
#define color_white "\033[0;37m"
|
|
|
|
#define color_white_bold "\033[1;37m"
|
|
|
|
#define color_black_bold "\033[1;30m"
|
|
|
|
#define color_red_bold "\033[1;31m"
|
|
|
|
#define color_green_bold "\033[1;32m"
|
|
|
|
#define color_yellow_bold "\033[1;33m"
|
|
|
|
#define color_blue_bold "\033[1;34m"
|
|
|
|
#define color_magenta_bold "\033[1;35m"
|
|
|
|
#define color_cyan_bold "\033[1;36m"
|
2015-07-28 20:22:18 +00:00
|
|
|
|
2015-07-30 06:57:09 +00:00
|
|
|
int show_error_message ( const char *msg, int markup );
|
2014-01-20 22:36:20 +00:00
|
|
|
#endif
|