|
rofi 2.1.0
|
#include "config.h"#include "display.h"#include "helper.h"#include "modes/dmenu.h"#include "rofi-icon-fetcher.h"#include "rofi.h"#include "settings.h"#include "view.h"#include "widgets/textbox.h"#include "xrmoptions.h"#include <ctype.h>#include <errno.h>#include <fcntl.h>#include <gio/gio.h>#include <gio/gunixinputstream.h>#include <glib-unix.h>#include <stdint.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <strings.h>#include <sys/stat.h>#include <sys/types.h>#include <unistd.h>#include "modes/dmenuscriptshared.h"#include "mode-private.h"
Go to the source code of this file.
Data Structures | |
| struct | DmenuModePrivateData |
| struct | Block |
Macros | |
| #define | G_LOG_DOMAIN "Modes.DMenu" |
| #define | BLOCK_LINES_SIZE 2048 |
Functions | |
| static int | dmenu_mode_init (Mode *sw) |
| static int | dmenu_token_match (const Mode *sw, rofi_int_matcher **tokens, unsigned int index) |
| static cairo_surface_t * | dmenu_get_icon (const Mode *sw, unsigned int selected_line, unsigned int height) |
| static char * | dmenu_get_message (const Mode *sw) |
| static unsigned int | bitget (uint32_t const *const array, unsigned int index) |
| static void | bittoggle (uint32_t *const array, unsigned int index) |
| static void | read_add_block (DmenuModePrivateData *pd, Block **block, char *data, gsize len) |
| static void | read_add (DmenuModePrivateData *pd, char *data, gsize len) |
| static gboolean | dmenu_async_read_proc (gint fd, GIOCondition condition, gpointer user_data) |
| static void | read_input_sync (DmenuModePrivateData *pd, unsigned int pre_read) |
| static gpointer | read_input_thread (gpointer userdata) |
| static unsigned int | dmenu_mode_get_num_entries (const Mode *sw) |
| static gchar * | dmenu_format_output_string (const DmenuModePrivateData *pd, const char *input, const unsigned int index, gboolean multi_select) |
| static unsigned int | get_index (unsigned int length, int index) |
| static char * | dmenu_get_completion_data (const Mode *data, unsigned int index) |
| static char * | get_display_data (const Mode *data, unsigned int index, int *state, G_GNUC_UNUSED GList **list, int get_entry) |
| static void | dmenu_mode_free (Mode *sw) |
| static void | dmenu_finish (DmenuModePrivateData *pd, RofiViewState *state, int retv) |
| static void | dmenu_print_results (DmenuModePrivateData *pd, const char *input) |
| static void | dmenu_finalize (RofiViewState *state) |
| int | dmenu_mode_dialog (void) |
| void | print_dmenu_options (void) |
Variables | |
| Mode | dmenu_mode |
| #define BLOCK_LINES_SIZE 2048 |
Maximum number of lines rofi parses async before it pushes it to the main thread.
Definition at line 120 of file dmenu.c.
Referenced by read_input_thread().
| #define G_LOG_DOMAIN "Modes.DMenu" |
|
inlinestatic |
Definition at line 65 of file dmenu.c.
References bitget().
Referenced by bitget(), dmenu_finalize(), dmenu_format_output_string(), dmenu_print_results(), and get_display_data().


|
inlinestatic |
Definition at line 72 of file dmenu.c.
References bittoggle().
Referenced by bittoggle(), and dmenu_finalize().


|
static |
This method is called from a GSource that responds to READ available event on the file descriptor of the IPC pipe with the reading thread. This method runs in the same thread as the UI and updates the dmenu mode internal administratinos with new items.
The data is copied not via the pipe, but via the Async Queue. A maximal BLOCK_LINES_SIZE items are added with one block.
Definition at line 205 of file dmenu.c.
References DmenuModePrivateData::async_queue, DmenuModePrivateData::cmd_list, DmenuModePrivateData::cmd_list_length, DmenuModePrivateData::cmd_list_real_length, dmenu_async_read_proc(), Block::length, DmenuModePrivateData::loading, rofi_view_get_active(), rofi_view_reload(), rofi_view_set_overlay(), and Block::values.
Referenced by dmenu_async_read_proc(), and dmenu_mode_init().


|
static |
Select item mode.
Definition at line 831 of file dmenu.c.
References bitget(), bittoggle(), DmenuModePrivateData::cmd_list, DmenuModePrivateData::cmd_list_length, dmenu_finalize(), dmenu_finish(), dmenu_print_results(), DmenuScriptEntry::entry, find_arg(), DmenuModePrivateData::loading, MENU_CANCEL, MENU_CUSTOM_ACTION, MENU_CUSTOM_COMMAND, MENU_CUSTOM_INPUT, MENU_LOWER_MASK, MENU_OK, DmenuModePrivateData::multi_select, DmenuScriptEntry::nonselectable, DmenuModePrivateData::num_selected_list, DmenuModePrivateData::only_selected, rofi_mode::private_data, rofi_view_get_mode(), rofi_view_get_next_position(), rofi_view_get_return_value(), rofi_view_get_selected_line(), rofi_view_get_user_input(), rofi_view_restart(), rofi_view_set_overlay(), rofi_view_set_selected_line(), DmenuModePrivateData::selected_count, DmenuModePrivateData::selected_line, and DmenuModePrivateData::selected_list.
Referenced by dmenu_finalize(), and dmenu_mode_dialog().


|
static |
Definition at line 770 of file dmenu.c.
References DmenuModePrivateData::async_queue, dmenu_finish(), dmenu_mode, DmenuModePrivateData::fd_file, mode_destroy(), DmenuModePrivateData::pipefd, DmenuModePrivateData::reading_thread, rofi_set_return_code(), rofi_view_free(), rofi_view_set_active(), and DmenuModePrivateData::wake_source.
Referenced by dmenu_finalize(), and dmenu_finish().


|
static |
Definition at line 364 of file dmenu.c.
References DmenuModePrivateData::ballot_selected, DmenuModePrivateData::ballot_unselected, bitget(), DmenuModePrivateData::column_separator, DmenuModePrivateData::columns, dmenu_format_output_string(), and DmenuModePrivateData::selected_list.
Referenced by dmenu_format_output_string(), dmenu_get_completion_data(), and get_display_data().


|
static |
Definition at line 425 of file dmenu.c.
References DmenuModePrivateData::cmd_list, dmenu_format_output_string(), dmenu_get_completion_data(), and mode_get_private_data().
Referenced by dmenu_get_completion_data().


|
static |
Definition at line 719 of file dmenu.c.
References DmenuModePrivateData::cmd_list, display_scale(), dmenu_get_icon(), DmenuScriptEntry::icon_fallback_index, DmenuScriptEntry::icon_fetch_scale, DmenuScriptEntry::icon_fetch_size, DmenuScriptEntry::icon_fetch_uid, DmenuScriptEntry::icon_name, mode_get_private_data(), rofi_icon_fetcher_get_ex(), and rofi_icon_fetcher_query().
Referenced by dmenu_get_icon().


|
static |
Definition at line 712 of file dmenu.c.
References dmenu_get_message(), DmenuModePrivateData::message, and mode_get_private_data().
Referenced by dmenu_get_message().


|
static |
Definition at line 483 of file dmenu.c.
References DmenuModePrivateData::active_list, DmenuModePrivateData::cmd_list, DmenuModePrivateData::cmd_list_length, DmenuScriptEntry::display, dmenu_mode_free(), DmenuScriptEntry::entry, DmenuScriptEntry::icon_name, DmenuScriptEntry::info, DmenuScriptEntry::meta, mode_get_private_data(), mode_set_private_data(), DmenuModePrivateData::selected_list, and DmenuModePrivateData::urgent_list.
Referenced by dmenu_mode_dialog(), and dmenu_mode_free().


|
static |
Definition at line 357 of file dmenu.c.
References DmenuModePrivateData::cmd_list_length, dmenu_mode_get_num_entries(), and mode_get_private_data().
Referenced by dmenu_mode_get_num_entries().


|
static |
Dmenu compatibility. -b put on bottom.
Definition at line 528 of file dmenu.c.
References DmenuModePrivateData::active_list, DmenuModePrivateData::async, DmenuModePrivateData::async_queue, Settings::auto_select, Settings::case_sensitive, DmenuModePrivateData::column_separator, DmenuModePrivateData::columns, config, DEFAULT_MENU_LINES, rofi_mode::display_name, dmenu_async_read_proc(), dmenu_mode, dmenu_mode_init(), DmenuModePrivateData::fd, DmenuModePrivateData::fd_file, find_arg(), find_arg_char(), find_arg_str(), find_arg_uint(), DmenuModePrivateData::format, _PropertyValue::i, DmenuModePrivateData::loading, Settings::location, DmenuModePrivateData::message, mode_get_private_data(), mode_set_private_data(), DmenuModePrivateData::multi_select, Property::name, DmenuModePrivateData::num_active_list, DmenuModePrivateData::num_urgent_list, P_INTEGER, parse_ranges(), DmenuModePrivateData::pipefd, DmenuModePrivateData::pipefd2, read_input_sync(), read_input_thread(), DmenuModePrivateData::reading_thread, rofi_expand_path(), rofi_theme, rofi_theme_find_or_create_name(), rofi_theme_property_create(), rofi_theme_property_free(), rofi_theme_widget_add_properties(), rofi_view_error_dialog(), DmenuModePrivateData::selected_line, DmenuModePrivateData::separator, DmenuModePrivateData::urgent_list, Property::value, and DmenuModePrivateData::wake_source.
Referenced by dmenu_mode_init().


|
static |
Definition at line 811 of file dmenu.c.
References bitget(), DmenuModePrivateData::cmd_list, dmenu_print_results(), DmenuScriptEntry::entry, DmenuModePrivateData::format, DmenuModePrivateData::num_selected_list, rofi_output_formatted_line(), DmenuModePrivateData::selected_line, and DmenuModePrivateData::selected_list.
Referenced by dmenu_finalize(), and dmenu_print_results().


|
static |
Strip out the markup when matching.
Definition at line 670 of file dmenu.c.
References DmenuModePrivateData::cmd_list, dmenu_token_match(), DmenuModePrivateData::do_markup, DmenuScriptEntry::entry, helper_token_match(), DmenuScriptEntry::meta, mode_get_private_data(), and DmenuScriptEntry::permanent.
Referenced by dmenu_token_match().


|
static |
Definition at line 436 of file dmenu.c.
References ACTIVE, DmenuScriptEntry::active, DmenuModePrivateData::active_list, bitget(), DmenuModePrivateData::cmd_list, DmenuModePrivateData::cmd_list_length, dmenu_format_output_string(), DmenuModePrivateData::do_markup, get_display_data(), get_index(), MARKUP, mode_get_private_data(), DmenuModePrivateData::multi_select, DmenuModePrivateData::num_active_list, DmenuModePrivateData::num_urgent_list, SELECTED, DmenuModePrivateData::selected_list, rofi_range_pair::start, rofi_range_pair::stop, URGENT, DmenuScriptEntry::urgent, and DmenuModePrivateData::urgent_list.
Referenced by get_display_data().


|
inlinestatic |
Definition at line 414 of file dmenu.c.
References get_index().
Referenced by _get_display_value(), get_display_data(), get_index(), and get_index().


|
static |
Definition at line 161 of file dmenu.c.
References DmenuScriptEntry::active, DmenuModePrivateData::cmd_list, DmenuModePrivateData::cmd_list_length, DmenuModePrivateData::cmd_list_real_length, DmenuScriptEntry::display, dmenuscript_parse_entry_extras(), DmenuScriptEntry::entry, DmenuScriptEntry::icon_fallback_index, DmenuScriptEntry::icon_fetch_scale, DmenuScriptEntry::icon_fetch_size, DmenuScriptEntry::icon_fetch_uid, DmenuScriptEntry::icon_name, DmenuScriptEntry::info, DmenuScriptEntry::meta, DmenuScriptEntry::nonselectable, read_add(), rofi_force_utf8(), and DmenuScriptEntry::urgent.
Referenced by read_add(), and read_input_sync().


|
static |
Definition at line 127 of file dmenu.c.
References dmenuscript_parse_entry_extras(), read_add_block(), and rofi_force_utf8().
Referenced by read_add_block(), and read_input_thread().


|
static |
Definition at line 245 of file dmenu.c.
References DmenuModePrivateData::fd_file, read_add(), read_input_sync(), and DmenuModePrivateData::separator.
Referenced by dmenu_mode_init(), and read_input_sync().


|
static |
Definition at line 261 of file dmenu.c.
References DmenuModePrivateData::async_queue, BLOCK_LINES_SIZE, DmenuModePrivateData::fd, Block::length, DmenuModePrivateData::pipefd, DmenuModePrivateData::pipefd2, read_add_block(), read_input_thread(), and DmenuModePrivateData::separator.
Referenced by dmenu_mode_init(), and read_input_thread().


| Mode dmenu_mode |
dmenu Mode object.
Definition at line 511 of file dmenu.c.
Referenced by dmenu_finish(), dmenu_mode_dialog(), and dmenu_mode_init().