rofi  1.7.0
rofi.c File Reference
#include "config.h"
#include <errno.h>
#include <gmodule.h>
#include <locale.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sysexits.h>
#include <time.h>
#include <unistd.h>
#include <xcb/xcb.h>
#include <glib-unix.h>
#include <libgwater-xcb.h>
#include "resources.h"
#include "display.h"
#include "rofi.h"
#include "settings.h"
#include "dialogs/dialogs.h"
#include "helper.h"
#include "mode.h"
#include "widgets/textbox.h"
#include "xrmoptions.h"
#include "view-internal.h"
#include "view.h"
#include "rofi-icon-fetcher.h"
#include "theme.h"
#include "timings.h"
#include "mode-private.h"
Include dependency graph for rofi.c:

Go to the source code of this file.

Macros

#define G_LOG_DOMAIN   "Rofi"
 

Functions

static void rofi_collect_modi_destroy (void)
 
void rofi_add_error_message (GString *str)
 
void rofi_clear_error_messages (void)
 
void process_result (RofiViewState *state)
 
void rofi_set_return_code (int code)
 
unsigned int rofi_get_num_enabled_modi (void)
 
const Moderofi_get_mode (unsigned int index)
 
static int switcher_get (const char *name)
 
static void teardown (int pfd)
 
static void run_switcher (ModeMode mode)
 
static void print_list_of_modi (int is_term)
 
static void print_main_application_options (int is_term)
 
static void help (G_GNUC_UNUSED int argc, char **argv)
 
static void help_print_disabled_mode (const char *mode)
 
static void help_print_mode_not_found (const char *mode)
 
static void help_print_no_arguments (void)
 
static void cleanup ()
 
Moderofi_collect_modi_search (const char *name)
 
static gboolean rofi_collect_modi_add (Mode *mode)
 
static void rofi_collect_modi_dir (const char *base_dir)
 
static void rofi_collect_modi (void)
 
static void rofi_collect_modi_setup (void)
 
static int add_mode (const char *token)
 
static gboolean setup_modi (void)
 
void rofi_quit_main_loop (void)
 
static gboolean main_loop_signal_handler_int (G_GNUC_UNUSED gpointer data)
 
static void show_error_dialog ()
 
static gboolean startup (G_GNUC_UNUSED gpointer data)
 
static gboolean record (G_GNUC_UNUSED void *data)
 
int main (int argc, char *argv[])
 
int rofi_theme_rasi_validate (const char *filename)
 

Variables

char * pidfile = NULL
 
const char * cache_dir = NULL
 
GList * list_of_error_msgs = NULL
 
G_MODULE_EXPORT char * config_path = NULL
 
Mode ** modi = NULL
 
Mode ** available_modi = NULL
 
unsigned int num_available_modi = 0
 
unsigned int num_modi = 0
 
unsigned int curr_switcher = 0
 
NkBindings * bindings = NULL
 
GMainLoop * main_loop = NULL
 
static int dmenu_mode = FALSE
 
int return_code = EXIT_SUCCESS
 

Macro Definition Documentation

◆ G_LOG_DOMAIN

#define G_LOG_DOMAIN   "Rofi"

Log domain

Definition at line 30 of file rofi.c.

Function Documentation

◆ add_mode()

static int add_mode ( const char *  token)
static

Parse the switcher string, into internal array of type Mode.

String is split on separator ',' First the three build-in modi are checked: window, run, ssh if that fails, a script-switcher is created.

Definition at line 622 of file rofi.c.

References mode_set_config(), modi, num_modi, rofi_collect_modi_add(), rofi_collect_modi_search(), script_switcher_is_valid(), and script_switcher_parse_setup().

Referenced by setup_modi(), and startup().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cleanup()

static void cleanup ( )
static

Cleanup globally allocated memory.

Definition at line 451 of file rofi.c.

References bindings, config_path, config_xresource_free(), display_cleanup(), main_loop, mode_destroy(), modi, num_modi, rofi_clear_error_messages(), rofi_collect_modi_destroy(), rofi_configuration, rofi_icon_fetcher_destroy(), rofi_theme, rofi_theme_free(), rofi_view_workers_finalize(), and TIMINGS_STOP.

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ help()

static void help ( G_GNUC_UNUSED int  argc,
char **  argv 
)
static

Definition at line 313 of file rofi.c.

References color_bold, color_green, color_red, color_reset, config_path, display_dump_monitor_layout(), find_arg(), print_dmenu_options(), print_list_of_modi(), print_main_application_options(), and print_options().

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ help_print_disabled_mode()

static void help_print_disabled_mode ( const char *  mode)
static

Definition at line 385 of file rofi.c.

References color_green, color_red, color_reset, config, and Settings::modi.

Referenced by startup().

Here is the caller graph for this function:

◆ help_print_mode_not_found()

static void help_print_mode_not_found ( const char *  mode)
static

Definition at line 398 of file rofi.c.

References available_modi, modi, num_available_modi, num_modi, and rofi_add_error_message().

Referenced by setup_modi(), and startup().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ help_print_no_arguments()

static void help_print_no_arguments ( void  )
static

Definition at line 415 of file rofi.c.

References available_modi, color_bold, color_green, color_red, color_reset, modi, num_available_modi, and num_modi.

Referenced by startup().

Here is the caller graph for this function:

◆ main()

◆ main_loop_signal_handler_int()

static gboolean main_loop_signal_handler_int ( G_GNUC_UNUSED gpointer  data)
static

Definition at line 667 of file rofi.c.

References main_loop.

Referenced by main().

Here is the caller graph for this function:

◆ print_list_of_modi()

static void print_list_of_modi ( int  is_term)
static

Help function.

Definition at line 263 of file rofi.c.

References available_modi, color_green, color_red, color_reset, modi, num_available_modi, and num_modi.

Referenced by help().

Here is the caller graph for this function:

◆ print_main_application_options()

static void print_main_application_options ( int  is_term)
static

Definition at line 277 of file rofi.c.

References print_help_msg().

Referenced by help().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ process_result()

void process_result ( RofiViewState state)
Parameters
stateThe Menu Handle

Check if a finalize function is set, and if sets executes it.

Load in the new mode.

Definition at line 202 of file rofi.c.

References curr_switcher, MODE_EXIT, mode_result(), modi, NEXT_DIALOG, num_modi, PREVIOUS_DIALOG, RELOAD_DIALOG, RESET_DIALOG, rofi_view_clear_input(), rofi_view_free(), rofi_view_get_return_value(), rofi_view_get_selected_line(), rofi_view_get_user_input(), rofi_view_remove_active(), rofi_view_switch_mode(), RofiViewState::sw, RofiViewState::text, textbox_cursor_end(), and textbox_text().

Referenced by rofi_view_error_dialog(), and run_switcher().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ record()

static gboolean record ( G_GNUC_UNUSED void *  data)
static

Definition at line 762 of file rofi.c.

References rofi_capture_screenshot().

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rofi_collect_modi()

static void rofi_collect_modi ( void  )
static

Find all available modi.

Definition at line 561 of file rofi.c.

References combi_mode, config, drun_mode, file_browser_mode, find_arg(), find_arg_str(), help_keys_mode, Settings::plugin_path, rofi_collect_modi_add(), rofi_collect_modi_dir(), run_mode, and ssh_mode.

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rofi_collect_modi_add()

static gboolean rofi_collect_modi_add ( Mode mode)
static
Parameters
modeAdd mode to list.
Returns
TRUE when success.

Definition at line 504 of file rofi.c.

References available_modi, rofi_mode::name, num_available_modi, and rofi_collect_modi_search().

Referenced by add_mode(), rofi_collect_modi(), and rofi_collect_modi_dir().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rofi_collect_modi_destroy()

static void rofi_collect_modi_destroy ( void  )
static

Definition at line 599 of file rofi.c.

References available_modi, mode_free(), rofi_mode::module, and num_available_modi.

Referenced by cleanup().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rofi_collect_modi_dir()

static void rofi_collect_modi_dir ( const char *  base_dir)
static

Definition at line 517 of file rofi.c.

References ABI_VERSION, rofi_mode::abi_version, rofi_mode::module, and rofi_collect_modi_add().

Referenced by rofi_collect_modi().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rofi_collect_modi_setup()

static void rofi_collect_modi_setup ( void  )
static

Setup configuration for config.

Definition at line 594 of file rofi.c.

References available_modi, mode_set_config(), and num_available_modi.

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rofi_theme_rasi_validate()

int rofi_theme_rasi_validate ( const char *  filename)
Parameters
filenameThe file to validate.
Returns
the program exit code.

Definition at line 1077 of file rofi.c.

References list_of_error_msgs, and rofi_theme_parse_file().

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ run_switcher()

static void run_switcher ( ModeMode  mode)
static

Definition at line 168 of file rofi.c.

References config, curr_switcher, ERROR_MSG_MARKUP, Settings::filter, find_arg(), find_arg_uint(), main_loop, mode_init(), modi, num_modi, process_result(), rofi_view_create(), rofi_view_error_dialog(), rofi_view_get_active(), rofi_view_set_active(), and rofi_view_set_selected_line().

Referenced by startup().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setup_modi()

static gboolean setup_modi ( void  )
static

Definition at line 644 of file rofi.c.

References add_mode(), config, help_print_mode_not_found(), and Settings::modi.

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ show_error_dialog()

static void show_error_dialog ( )
static

Definition at line 672 of file rofi.c.

References ERROR_MSG_MARKUP, list_of_error_msgs, rofi_set_return_code(), and rofi_view_error_dialog().

Referenced by startup().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ startup()

◆ switcher_get()

static int switcher_get ( const char *  name)
static
Parameters
nameName of the switcher to lookup.

Find the index of the switcher with name.

Returns
index of the switcher in modi, -1 if not found.

Definition at line 144 of file rofi.c.

References mode_get_name(), modi, and num_modi.

Referenced by startup().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ teardown()

static void teardown ( int  pfd)
static

Teardown the gui.

Definition at line 156 of file rofi.c.

References display_early_cleanup(), remove_pid_file(), rofi_view_cleanup(), and textbox_cleanup().

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ available_modi

Mode** available_modi = NULL

◆ bindings

NkBindings* bindings = NULL

Handle to NkBindings object for input devices.

Definition at line 119 of file rofi.c.

Referenced by cleanup(), display_setup(), main(), and parse_keys_abe().

◆ config_path

G_MODULE_EXPORT char* config_path = NULL

Path to the configuration file

Definition at line 104 of file rofi.c.

Referenced by cleanup(), help(), and main().

◆ curr_switcher

unsigned int curr_switcher = 0

Current selected mode

Definition at line 116 of file rofi.c.

Referenced by process_result(), and run_switcher().

◆ dmenu_mode

int dmenu_mode = FALSE
static

Flag indicating we are in dmenu mode.

Definition at line 125 of file rofi.c.

Referenced by main(), and startup().

◆ list_of_error_msgs

GList * list_of_error_msgs = NULL

List of error messages.

Definition at line 86 of file rofi.c.

Referenced by main(), rofi_add_error_message(), rofi_clear_error_messages(), rofi_theme_rasi_validate(), show_error_dialog(), and startup().

◆ main_loop

GMainLoop* main_loop = NULL

Glib main loop.

Definition at line 122 of file rofi.c.

Referenced by cleanup(), display_setup(), main(), main_loop_signal_handler_int(), rofi_quit_main_loop(), run_switcher(), and startup().

◆ modi

Mode** modi = NULL

Path to the configuration file in the new format Array holding all activated modi.

Definition at line 107 of file rofi.c.

Referenced by add_mode(), cleanup(), help_print_mode_not_found(), help_print_no_arguments(), print_list_of_modi(), process_result(), rofi_get_mode(), run_switcher(), and switcher_get().

◆ num_available_modi

◆ num_modi

unsigned int num_modi = 0

◆ pidfile

char* pidfile = NULL

Location of pidfile for this instance.

Definition at line 81 of file rofi.c.

Referenced by create_pid_file(), and main().

◆ return_code

int return_code = EXIT_SUCCESS

Rofi's return code

Definition at line 127 of file rofi.c.

Referenced by main(), and rofi_set_return_code().