rofi 1.7.7
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/stat.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 "helper.h"
#include "mode.h"
#include "modes/modes.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_collectmodes_destroy (void)
 
void rofi_add_error_message (GString *str)
 
void rofi_clear_error_messages (void)
 
void rofi_add_warning_message (GString *str)
 
void rofi_clear_warning_messages (void)
 
void process_result (RofiViewState *state)
 
void rofi_set_return_code (int code)
 
unsigned int rofi_get_num_enabled_modes (void)
 
const Moderofi_get_mode (unsigned int index)
 
static int mode_lookup (const char *name)
 
static const Modemode_available_lookup (const char *name)
 
static void teardown (int pfd)
 
static void run_mode_index (ModeMode mode)
 
static void print_list_of_modes (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 (void)
 
Moderofi_collect_modes_search (const char *name)
 
static gboolean rofi_collectmodes_add (Mode *mode)
 
static void rofi_collectmodes_dir (const char *base_dir)
 
static void rofi_collect_modes (void)
 
static void rofi_collectmodes_setup (void)
 
static int add_mode (const char *token)
 
static gboolean setup_modes (void)
 
void rofi_quit_main_loop (void)
 
static gboolean main_loop_signal_handler_int (G_GNUC_UNUSED gpointer data)
 
static void show_error_dialog (void)
 
static gboolean startup (G_GNUC_UNUSED gpointer data)
 
static gboolean take_screenshot_quit (G_GNUC_UNUSED void *data)
 
static gboolean record (G_GNUC_UNUSED void *data)
 
static void rofi_custom_log_function (const char *log_domain, G_GNUC_UNUSED GLogLevelFlags log_level, const gchar *message, gpointer user_data)
 
int main (int argc, char *argv[])
 
int rofi_theme_rasi_validate (const char *filename)
 
const Moderofi_get_completer (void)
 

Variables

char * pidfile = NULL
 
const char * cache_dir = NULL
 
char * cache_dir_alloc = NULL
 
GList * list_of_error_msgs = NULL
 
GList * list_of_warning_msgs = NULL
 
G_MODULE_EXPORT char * config_path = NULL
 
Mode ** modes = NULL
 
Mode ** available_modes = NULL
 
unsigned int num_available_modes = 0
 
unsigned int num_modes = 0
 
unsigned int curr_mode = 0
 
NkBindings * bindings = NULL
 
GMainLoop * main_loop = NULL
 
int rofi_is_in_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 mode string, into internal array of type Mode.

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

Definition at line 697 of file rofi.c.

References mode_set_config(), modes, num_modes, rofi_collect_modes_search(), rofi_collectmodes_add(), script_mode_is_valid(), and script_mode_parse_setup().

Referenced by setup_modes(), and startup().

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

◆ cleanup()

static void cleanup ( void )
static

◆ help()

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

◆ help_print_disabled_mode()

static void help_print_disabled_mode ( const char * mode)
static

Definition at line 450 of file rofi.c.

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

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 463 of file rofi.c.

References available_modes, modes, num_available_modes, num_modes, and rofi_add_error_message().

Referenced by setup_modes(), 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 480 of file rofi.c.

References available_modes, ERROR_MSG_MARKUP, modes, num_available_modes, num_modes, 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:

◆ main()

int main ( int argc,
char * argv[] )
Parameters
argcnumber of input arguments.
argvarray of the input arguments.

Main application entry point.

Returns
return code of rofi.

default configuration

New format.

New format.

dirty hack for dmenu compatibility

Make small commandline changes to the current theme.

Definition at line 889 of file rofi.c.

References abe_list_all_bindings(), Settings::benchmark_ui, bindings, cache_dir, Settings::cache_dir, cache_dir_alloc, cleanup(), cmd_set_arguments(), color_bold, color_reset, config, config_parse_cmd_options(), config_parse_dump_config_rasi_format(), config_parser_add_option(), config_path, create_pid_file(), display_late_setup(), display_setup(), find_arg(), find_arg_str(), find_arg_strv(), find_arg_uint(), help(), helper_get_theme_path(), list_of_error_msgs, main_loop, main_loop_signal_handler_int(), Settings::monitor, ThemeWidget::num_widgets, parse_keys_abe(), pidfile, record(), return_code, rofi_collect_modes(), rofi_collectmodes_setup(), rofi_configuration, rofi_custom_log_function(), rofi_expand_path(), rofi_icon_fetcher_init(), rofi_is_in_dmenu_mode, rofi_theme, rofi_theme_free(), rofi_theme_parse_file(), rofi_theme_parse_prepare_file(), rofi_theme_parse_process_conditionals(), rofi_theme_parse_process_links(), rofi_theme_parse_string(), rofi_theme_print(), rofi_theme_rasi_validate(), rofi_theme_reset(), rofi_view_workers_initialize(), setup_abe(), setup_modes(), startup(), take_screenshot_quit(), teardown(), textbox_setup(), Settings::theme, TICK, TICK_N, TIMINGS_START, and xrm_String.

Here is the call graph for this function:

◆ main_loop_signal_handler_int()

static gboolean main_loop_signal_handler_int ( G_GNUC_UNUSED gpointer data)
static

Definition at line 742 of file rofi.c.

References main_loop.

Referenced by main().

Here is the caller graph for this function:

◆ mode_available_lookup()

static const Mode * mode_available_lookup ( const char * name)
static
Parameters
nameName of the mode to lookup.

Find the index of the mode with name.

Returns
index of the mode in modes, -1 if not found.

Definition at line 178 of file rofi.c.

References available_modes, mode_get_name(), and num_available_modes.

Referenced by rofi_get_completer().

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

◆ mode_lookup()

static int mode_lookup ( const char * name)
static
Parameters
nameName of the mode to lookup.

Find the index of the mode with name.

Returns
index of the mode in modes, -1 if not found.

Definition at line 163 of file rofi.c.

References mode_get_name(), modes, and num_modes.

Referenced by startup().

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

◆ print_list_of_modes()

static void print_list_of_modes ( int is_term)
static

Help function.

Definition at line 298 of file rofi.c.

References available_modes, color_green, color_red, color_reset, modes, num_available_modes, and num_modes.

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 312 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 237 of file rofi.c.

References curr_mode, MODE_EXIT, mode_result(), modes, NEXT_DIALOG, num_modes, 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_mode_index().

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 870 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_modes()

static void rofi_collect_modes ( void )
static

Find all available modes.

Definition at line 634 of file rofi.c.

References combi_mode, config, file_browser_mode, find_arg(), find_arg_str(), help_keys_mode, Settings::plugin_path, recursive_browser_mode, rofi_collectmodes_add(), rofi_collectmodes_dir(), run_mode, script_mode_gather_user_scripts(), and ssh_mode.

Referenced by main().

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

◆ rofi_collectmodes_add()

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

Definition at line 577 of file rofi.c.

References available_modes, rofi_mode::name, num_available_modes, and rofi_collect_modes_search().

Referenced by add_mode(), rofi_collect_modes(), and rofi_collectmodes_dir().

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

◆ rofi_collectmodes_destroy()

static void rofi_collectmodes_destroy ( void )
static

Definition at line 674 of file rofi.c.

References available_modes, mode_free(), rofi_mode::module, and num_available_modes.

Referenced by cleanup().

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

◆ rofi_collectmodes_dir()

static void rofi_collectmodes_dir ( const char * base_dir)
static

Definition at line 590 of file rofi.c.

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

Referenced by rofi_collect_modes().

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

◆ rofi_collectmodes_setup()

static void rofi_collectmodes_setup ( void )
static

Setup configuration for config.

Definition at line 669 of file rofi.c.

References available_modes, mode_set_config(), and num_available_modes.

Referenced by main().

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

◆ rofi_custom_log_function()

static void rofi_custom_log_function ( const char * log_domain,
G_GNUC_UNUSED GLogLevelFlags log_level,
const gchar * message,
gpointer user_data )
static

Definition at line 874 of file rofi.c.

Referenced by main().

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 1245 of file rofi.c.

References list_of_error_msgs, list_of_warning_msgs, rofi_theme_parse_file(), and rofi_theme_parse_process_links().

Referenced by main().

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

◆ run_mode_index()

static void run_mode_index ( ModeMode mode)
static

Definition at line 203 of file rofi.c.

References config, curr_mode, ERROR_MSG_MARKUP, Settings::filter, find_arg(), find_arg_uint(), main_loop, mode_init(), modes, num_modes, 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_modes()

static gboolean setup_modes ( void )
static

Definition at line 719 of file rofi.c.

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

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 ( void )
static

Definition at line 747 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()

◆ take_screenshot_quit()

static gboolean take_screenshot_quit ( G_GNUC_UNUSED void * data)
static

Definition at line 865 of file rofi.c.

References rofi_capture_screenshot(), and rofi_quit_main_loop().

Referenced by main().

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 190 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_modes

◆ bindings

NkBindings* bindings = NULL

Handle to NkBindings object for input devices.

Definition at line 138 of file rofi.c.

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

◆ cache_dir_alloc

char* cache_dir_alloc = NULL

if the cache_dir string is allocated, keep pointer here so it can be freed.

Definition at line 87 of file rofi.c.

Referenced by cleanup(), and main().

◆ config_path

G_MODULE_EXPORT char* config_path = NULL

Path to the configuration file

Definition at line 123 of file rofi.c.

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

◆ curr_mode

unsigned int curr_mode = 0

Current selected mode

Definition at line 135 of file rofi.c.

Referenced by process_result(), and run_mode_index().

◆ list_of_error_msgs

GList * list_of_error_msgs = NULL

List of error messages.

Definition at line 90 of file rofi.c.

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

◆ list_of_warning_msgs

GList* list_of_warning_msgs = NULL

List of warning messages for the user.

Definition at line 92 of file rofi.c.

Referenced by rofi_add_warning_message(), rofi_clear_warning_messages(), rofi_theme_rasi_validate(), rofi_view_reload_message_bar(), and startup().

◆ main_loop

GMainLoop* main_loop = NULL

Glib main loop.

Definition at line 141 of file rofi.c.

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

◆ modes

Mode** modes = NULL

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

Definition at line 126 of file rofi.c.

Referenced by add_mode(), cleanup(), help_print_mode_not_found(), help_print_no_arguments(), mode_lookup(), print_list_of_modes(), process_result(), rofi_get_mode(), and run_mode_index().

◆ num_available_modes

◆ num_modes

unsigned int num_modes = 0

◆ pidfile

char* pidfile = NULL

Location of pidfile for this instance.

Definition at line 82 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 146 of file rofi.c.

Referenced by main(), and rofi_set_return_code().

◆ rofi_is_in_dmenu_mode

int rofi_is_in_dmenu_mode = FALSE

Flag indicating we are in dmenu mode.

Definition at line 144 of file rofi.c.

Referenced by main(), and startup().