rofi/include/rofi.h

229 lines
6.4 KiB
C
Raw Normal View History

#ifndef __SIMPLESWITCHER_H__
#define __SIMPLESWITCHER_H__
#include <X11/X.h>
#include <glib.h>
2014-01-25 22:37:37 +00:00
2014-03-22 20:04:19 +00:00
#define OVERLAP( a, b, c, d ) ( ( ( a ) == ( c ) && ( b ) == ( d ) ) || MIN ( ( a ) + ( b ), ( c ) + ( d ) ) - MAX ( ( a ), ( c ) ) > 0 )
#define INTERSECT( x, y, w, h, x1, y1, w1, h1 ) ( OVERLAP ( ( x ), ( w ), ( x1 ), ( w1 ) ) && OVERLAP ( ( y ), ( h ), ( y1 ), ( h1 ) ) )
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-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,
/** Reload current DIALOG */
2014-11-11 20:50:16 +00:00
RELOAD_DIALOG = 1002,
/** Previous dialog */
PREVIOUS_DIALOG = 1003
} SwitcherMode;
2014-11-25 07:27:08 +00:00
/**
* @param input Pointer to the user input.
* @param data Usr data.
*
* Callback typedef for a switcher
*
* @returns SwitcherMode
*/
typedef SwitcherMode ( *switcher_callback )( char **input, void *data );
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. */
2014-03-22 20:04:19 +00:00
MENU_OK = 0,
2014-06-02 10:54:35 +00:00
/** User canceled the operation. (e.g. pressed escape) */
MENU_CANCEL = -1,
2014-06-02 10:54:35 +00:00
/** User requested a mode switch */
MENU_NEXT = -2,
2014-06-02 10:54:35 +00:00
/** Custom (non-matched) input was entered. */
MENU_CUSTOM_INPUT = -3,
2014-06-02 10:54:35 +00:00
/** User wanted to delete entry from history. */
MENU_ENTRY_DELETE = -4,
2014-11-25 07:27:08 +00:00
/** User wants to jump to another switcher. */
MENU_QUICK_SWITCH = -5,
2014-11-25 07:27:08 +00:00
/** Go to the previous menu. */
2014-11-11 20:50:16 +00:00
MENU_PREVIOUS = -6
} MenuReturn;
2014-01-26 11:59:10 +00:00
2014-06-02 10:54:35 +00:00
/**
2014-11-25 07:27:08 +00:00
* @param tokens List of (input) tokens to match.
* @param input The entry to match against.
* @param index The current selected index.
* @param data User data.
*
2014-06-02 10:54:35 +00:00
* Function prototype for the matching algorithm.
2014-11-25 07:27:08 +00:00
*
* @returns 1 when it matches, 0 if not.
2014-06-02 10:54:35 +00:00
*/
2014-01-21 09:13:42 +00:00
typedef int ( *menu_match_cb )( char **tokens, const char *input, int index, void *data );
2014-06-02 10:54:35 +00:00
/**
* @param lines An array of strings to display.
* @param num_lines Length of the array with strings to display.
2014-06-02 10:54:35 +00:00
* @param input A pointer to a string where the inputted data is placed.
* @param prompt The prompt to show.
* @param time The current time (used for window interaction.)
* @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.
*
* Main menu callback.
*
* @returns The command issued (see MenuReturn)
*/
MenuReturn menu ( char **lines, unsigned int num_lines, char **input, char *prompt,
2014-03-22 20:04:19 +00:00
Time *time, int *shift,
menu_match_cb mmc, void *mmc_data,
2014-08-03 15:05:06 +00:00
int *selected_line, int sorting ) __attribute__ ( ( nonnull ( 1, 3, 4, 9 ) ) );
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
} WindowLocation;
2014-01-23 10:39:12 +00:00
/**
* Settings
*/
2014-03-22 20:04:19 +00:00
typedef struct _Settings
{
2014-11-25 07:27:08 +00:00
/** List of enabled switchers */
char *switchers;
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.) */
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;
2014-11-25 07:27:08 +00:00
/** Foreground color */
2014-03-22 20:04:19 +00:00
char * menu_fg;
2014-11-25 07:27:08 +00:00
/** Background color */
2014-03-22 20:04:19 +00:00
char * menu_bg;
2014-11-25 07:27:08 +00:00
/** Highlight foreground color */
2014-03-22 20:04:19 +00:00
char * menu_hlfg;
2014-11-25 07:27:08 +00:00
/** Highlight background color */
2014-03-22 20:04:19 +00:00
char * menu_hlbg;
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 */
char * ssh_client;
2014-11-25 07:27:08 +00:00
/** Command to execute when ssh session is selected */
char * ssh_command;
2014-11-25 07:27:08 +00:00
/** Command for executing an application */
char * run_command;
2014-11-25 07:27:08 +00:00
/** Command for executing an application in a terminal */
char * run_shell_command;
2014-05-20 09:22:03 +00:00
2014-11-25 07:27:08 +00:00
/** Key to open window switcher */
2014-03-22 20:04:19 +00:00
char * window_key;
2014-11-25 07:27:08 +00:00
/** Key to open run dialog */
2014-03-22 20:04:19 +00:00
char * run_key;
2014-11-25 07:27:08 +00:00
/** Key to open ssh dialog */
2014-03-22 20:04:19 +00:00
char * ssh_key;
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
/** Horizontal mode. */
unsigned int hmode;
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;
2014-11-25 07:27:08 +00:00
/** Use levenshtein sorting when matching */
unsigned int levenshtein_sort;
2014-11-25 07:27:08 +00:00
/** Separator to use for dmenu mode */
2014-10-19 17:42:02 +00:00
char separator;
2014-11-25 07:27:08 +00:00
/** Height of an element in #chars */
2014-10-30 16:53:22 +00:00
int element_height;
2014-11-25 07:27:08 +00:00
/** Sidebar mode, show the switchers */
2014-11-09 12:10:24 +00:00
int sidebar_mode;
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
/**
* @params tokens
* @param tokens List of (input) tokens to match.
* @param input The entry to match against.
* @param index The current selected index.
* @param data User data.
*
* Tokenized match, match tokens to line input.
*
* @returns 1 when matches, 0 otherwise
*/
2014-02-03 21:49:07 +00:00
int token_match ( char **tokens, const char *input,
2014-03-22 20:04:19 +00:00
__attribute__( ( unused ) ) int index,
__attribute__( ( unused ) ) void *data );
2014-05-19 19:02:05 +00:00
2014-11-25 07:27:08 +00:00
/**
* @param msg The error message to show.
*
* The error message to show.
*/
2014-08-27 17:44:15 +00:00
void error_dialog ( char *msg );
2014-11-25 07:27:08 +00:00
#endif