rofi  1.7.0
xcb.c File Reference
#include "config.h"
#include <cairo-xcb.h>
#include <cairo.h>
#include <glib.h>
#include <math.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <xcb/randr.h>
#include <xcb/xcb.h>
#include <xcb/xcb_aux.h>
#include <xcb/xcb_cursor.h>
#include <xcb/xcb_ewmh.h>
#include <xcb/xinerama.h>
#include <xcb/xkb.h>
#include <xcb/xproto.h>
#include <xkbcommon/xkbcommon-x11.h>
#include <xkbcommon/xkbcommon.h>
#include "display.h"
#include "helper.h"
#include "rofi-types.h"
#include "settings.h"
#include "timings.h"
#include "xcb-internal.h"
#include "xcb.h"
#include <libsn/sn.h>
#include <rofi.h>
Include dependency graph for xcb.c:

Go to the source code of this file.

Macros

#define G_LOG_DOMAIN   "X11Helper"
 
#define SN_API_NOT_YET_FROZEN
 
#define sn_launcher_context_set_application_id   sn_launcher_set_application_id
 
#define RANDR_PREF_MAJOR_VERSION   1
 
#define RANDR_PREF_MINOR_VERSION   5
 
#define INTERSECT(x, y, x1, y1, w1, h1)    ((((x) >= (x1)) && ((x) < (x1 + w1))) && (((y) >= (y1)) && ((y) < (y1 + h1))))
 

Functions

static xcb_visualtype_t * lookup_visual (xcb_screen_t *s, xcb_visualid_t visual)
 
static uint32_t * create_kernel (double radius, double deviation, uint32_t *sum2)
 
void cairo_image_surface_blur (cairo_surface_t *surface, double radius, double deviation)
 
cairo_surface_t * x11_helper_get_screenshot_surface_window (xcb_window_t window, int size)
 
cairo_surface_t * x11_helper_get_screenshot_surface (void)
 
static xcb_pixmap_t get_root_pixmap (xcb_connection_t *c, xcb_screen_t *screen, xcb_atom_t atom)
 
cairo_surface_t * x11_helper_get_bg_surface (void)
 
char * window_get_text_prop (xcb_window_t w, xcb_atom_t atom)
 
void window_set_atom_prop (xcb_window_t w, xcb_atom_t prop, xcb_atom_t *atoms, int count)
 
static void x11_monitor_free (workarea *m)
 
static void x11_monitors_free (void)
 
static workareax11_get_monitor_from_output (xcb_randr_output_t out)
 
static int x11_is_extension_present (const char *extension)
 
static void x11_build_monitor_layout_xinerama ()
 
static void x11_build_monitor_layout ()
 
void display_dump_monitor_layout (void)
 
void display_startup_notification (RofiHelperExecuteContext *context, GSpawnChildSetupFunc *child_setup, gpointer *user_data)
 
static int monitor_get_dimension (int monitor_id, workarea *mon)
 
static void monitor_dimensions (int x, int y, workarea *mon)
 
static int pointer_get (xcb_window_t root, int *x, int *y)
 
static int monitor_active_from_winid (xcb_drawable_t id, workarea *mon)
 
static int monitor_active_from_id_focused (int mon_id, workarea *mon)
 
static int monitor_active_from_id (int mon_id, workarea *mon)
 
int monitor_active (workarea *mon)
 
static void rofi_view_paste (RofiViewState *state, xcb_selection_notify_event_t *xse)
 
static gboolean x11_button_to_nk_bindings_button (guint32 x11_button, NkBindingsMouseButton *button)
 
static gboolean x11_button_to_nk_bindings_scroll (guint32 x11_button, NkBindingsScrollAxis *axis, gint32 *steps)
 
static void main_loop_x11_event_handler_view (xcb_generic_event_t *event)
 
static gboolean main_loop_x11_event_handler (xcb_generic_event_t *ev, G_GNUC_UNUSED gpointer user_data)
 
void rofi_xcb_set_input_focus (xcb_window_t w)
 
void rofi_xcb_revert_input_focus (void)
 
static int take_pointer (xcb_window_t w, int iters)
 
static int take_keyboard (xcb_window_t w, int iters)
 
static void release_keyboard (void)
 
static void release_pointer (void)
 
static void error_trap_push (G_GNUC_UNUSED SnDisplay *display, G_GNUC_UNUSED xcb_connection_t *xdisplay)
 
static void error_trap_pop (G_GNUC_UNUSED SnDisplay *display, xcb_connection_t *xdisplay)
 
static void x11_create_frequently_used_atoms (void)
 
static void x11_helper_discover_window_manager (void)
 
gboolean display_setup (GMainLoop *main_loop, NkBindings *bindings)
 
static void x11_create_visual_and_colormap (void)
 
static void x11_lookup_cursors (void)
 
static gboolean lazy_grab_pointer (G_GNUC_UNUSED gpointer data)
 
static gboolean lazy_grab_keyboard (G_GNUC_UNUSED gpointer data)
 
gboolean display_late_setup (void)
 
xcb_window_t xcb_stuff_get_root_window (void)
 
void display_early_cleanup (void)
 
void display_cleanup (void)
 
void x11_disable_decoration (xcb_window_t window)
 
void x11_set_cursor (xcb_window_t window, X11CursorType type)
 

Variables

WindowManagerQuirk current_window_manager = WM_EWHM
 
struct _xcb_stuff xcb_int
 
xcb_stuffxcb = &xcb_int
 
xcb_depth_t * depth = NULL
 
xcb_visualtype_t * visual = NULL
 
xcb_colormap_t map = XCB_COLORMAP_NONE
 
static xcb_visualtype_t * root_visual = NULL
 
xcb_atom_t netatoms [NUM_NETATOMS]
 
const char * netatom_names [] = {EWMH_ATOMS(ATOM_CHAR)}
 
xcb_cursor_t cursors [NUM_CURSORS]
 
struct {
   const char *   css_name
 
   const char *   traditional_name
 
cursor_names []
 
static int error_trap_depth = 0
 
unsigned int lazy_grab_retry_count_kb = 0
 
unsigned int lazy_grab_retry_count_pt = 0
 

Macro Definition Documentation

◆ G_LOG_DOMAIN

#define G_LOG_DOMAIN   "X11Helper"

Log domain for this module

Definition at line 30 of file xcb.c.

◆ INTERSECT

#define INTERSECT (   x,
  y,
  x1,
  y1,
  w1,
  h1 
)     ((((x) >= (x1)) && ((x) < (x1 + w1))) && (((y) >= (y1)) && ((y) < (y1 + h1))))

Checks if the if x and y is inside rectangle.

Definition at line 74 of file xcb.c.

◆ RANDR_PREF_MAJOR_VERSION

#define RANDR_PREF_MAJOR_VERSION   1

Minimal randr preferred for running rofi (1.5) (Major version number)

Definition at line 69 of file xcb.c.

◆ RANDR_PREF_MINOR_VERSION

#define RANDR_PREF_MINOR_VERSION   5

Minimal randr preferred for running rofi (1.5) (Minor version number)

Definition at line 71 of file xcb.c.

◆ SN_API_NOT_YET_FROZEN

#define SN_API_NOT_YET_FROZEN

Indicate that we know the startup notification api is not yet stable.

Definition at line 53 of file xcb.c.

◆ sn_launcher_context_set_application_id

#define sn_launcher_context_set_application_id   sn_launcher_set_application_id

This function is declared as sn_launcher_context_set_application_id but implemented as sn_launcher_set_application_id. Quick Fix.

Definition at line 56 of file xcb.c.

Function Documentation

◆ cairo_image_surface_blur()

void cairo_image_surface_blur ( cairo_surface_t *  surface,
double  radius,
double  deviation 
)
Parameters
surface
radius
deviationBlur the content of the surface with radius and deviation.

Definition at line 164 of file xcb.c.

References create_kernel(), TICK, and TICK_N.

Referenced by rofi_view_setup_fake_transparency().

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

◆ create_kernel()

static uint32_t* create_kernel ( double  radius,
double  deviation,
uint32_t *  sum2 
)
static

Definition at line 136 of file xcb.c.

Referenced by cairo_image_surface_blur().

Here is the caller graph for this function:

◆ display_cleanup()

void display_cleanup ( void  )

Cleanup any remaining display related stuff

Definition at line 1642 of file xcb.c.

References _xcb_stuff::bindings_seat, _xcb_stuff::connection, _xcb_stuff::ewmh, _xcb_stuff::screen, _xcb_stuff::screen_nbr, _xcb_stuff::sncontext, _xcb_stuff::sndisplay, _xcb_stuff::source, x11_monitors_free(), and xcb.

Referenced by cleanup().

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

◆ display_dump_monitor_layout()

void display_dump_monitor_layout ( void  )

Dumps the display layout for -help output

Definition at line 663 of file xcb.c.

References color_bold, color_reset, _xcb_stuff::monitors, _workarea::next, and xcb.

Referenced by help().

Here is the caller graph for this function:

◆ display_early_cleanup()

void display_early_cleanup ( void  )

Do some early cleanup, like unmapping the surface

Definition at line 1636 of file xcb.c.

References _xcb_stuff::connection, release_keyboard(), release_pointer(), and xcb.

Referenced by rofi_view_hide(), and teardown().

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

◆ display_late_setup()

gboolean display_late_setup ( void  )

Do some late setup of the display backend

Returns
Whether the setup succeeded or not

Create window (without showing)

Definition at line 1601 of file xcb.c.

References find_arg(), lazy_grab_keyboard(), lazy_grab_pointer(), take_keyboard(), take_pointer(), x11_create_visual_and_colormap(), x11_lookup_cursors(), and xcb_stuff_get_root_window().

Referenced by main().

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

◆ display_setup()

gboolean display_setup ( GMainLoop *  main_loop,
NkBindings *  bindings 
)
Parameters
main_loopThe GMainLoop
bindingsThe bindings object

Setup the display backend

Returns
Whether the setup succeeded or not

Definition at line 1383 of file xcb.c.

References bindings, _xcb_stuff::bindings_seat, _xcb_stuff::connection, _xcb_stuff::device_id, error_trap_pop(), error_trap_push(), _xcb_stuff::ewmh, find_arg_str(), _xcb_stuff::first_event, _xcb_stuff::main_loop, main_loop, main_loop_x11_event_handler(), _xcb_stuff::screen, _xcb_stuff::screen_nbr, _xcb_stuff::sncontext, _xcb_stuff::sndisplay, _xcb_stuff::source, TICK_N, x11_build_monitor_layout(), x11_create_frequently_used_atoms(), x11_helper_discover_window_manager(), xcb, and _xcb_stuff::xkb.

Referenced by main().

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

◆ display_startup_notification()

void display_startup_notification ( RofiHelperExecuteContext context,
GSpawnChildSetupFunc *  child_setup,
gpointer *  user_data 
)
Parameters
contextThe startup notification context for the application to launch
child_setupA pointer to return the child setup function
user_dataA pointer to return the child setup function user_data

Provides the needed child setup function

Definition at line 689 of file xcb.c.

References RofiHelperExecuteContext::app_id, RofiHelperExecuteContext::binary, RofiHelperExecuteContext::command, RofiHelperExecuteContext::description, _xcb_stuff::ewmh, RofiHelperExecuteContext::icon, _xcb_stuff::last_timestamp, RofiHelperExecuteContext::name, _xcb_stuff::screen_nbr, sn_launcher_context_set_application_id, _xcb_stuff::sndisplay, RofiHelperExecuteContext::wmclass, and xcb.

Referenced by helper_execute().

Here is the caller graph for this function:

◆ error_trap_pop()

static void error_trap_pop ( G_GNUC_UNUSED SnDisplay *  display,
xcb_connection_t *  xdisplay 
)
static

Definition at line 1331 of file xcb.c.

References error_trap_depth.

Referenced by display_setup().

Here is the caller graph for this function:

◆ error_trap_push()

static void error_trap_push ( G_GNUC_UNUSED SnDisplay *  display,
G_GNUC_UNUSED xcb_connection_t *  xdisplay 
)
static

Definition at line 1326 of file xcb.c.

References error_trap_depth.

Referenced by display_setup().

Here is the caller graph for this function:

◆ get_root_pixmap()

static xcb_pixmap_t get_root_pixmap ( xcb_connection_t *  c,
xcb_screen_t *  screen,
xcb_atom_t  atom 
)
static

Definition at line 340 of file xcb.c.

Referenced by x11_helper_get_bg_surface().

Here is the caller graph for this function:

◆ lazy_grab_keyboard()

static gboolean lazy_grab_keyboard ( G_GNUC_UNUSED gpointer  data)
static

Definition at line 1586 of file xcb.c.

References lazy_grab_retry_count_kb, _xcb_stuff::main_loop, take_keyboard(), xcb, and xcb_stuff_get_root_window().

Referenced by display_late_setup().

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

◆ lazy_grab_pointer()

static gboolean lazy_grab_pointer ( G_GNUC_UNUSED gpointer  data)
static

Definition at line 1573 of file xcb.c.

References lazy_grab_retry_count_pt, take_pointer(), and xcb_stuff_get_root_window().

Referenced by display_late_setup().

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

◆ lookup_visual()

static xcb_visualtype_t* lookup_visual ( xcb_screen_t *  s,
xcb_visualid_t  visual 
)
static

Definition at line 118 of file xcb.c.

References visual.

Referenced by x11_helper_get_screenshot_surface_window().

Here is the caller graph for this function:

◆ main_loop_x11_event_handler()

static gboolean main_loop_x11_event_handler ( xcb_generic_event_t *  ev,
G_GNUC_UNUSED gpointer  user_data 
)
static

Definition at line 1182 of file xcb.c.

References _xcb_stuff::bindings_seat, _xcb_stuff::connection, _xcb_stuff::device_id, _xcb_stuff::first_event, _xcb_stuff::main_loop, main_loop_x11_event_handler_view(), rofi_view_get_active(), rofi_view_maybe_update(), _xcb_stuff::sndisplay, xcb, and _xcb_stuff::xkb.

Referenced by display_setup().

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

◆ main_loop_x11_event_handler_view()

static void main_loop_x11_event_handler_view ( xcb_generic_event_t *  event)
static

◆ monitor_active()

int monitor_active ( workarea mon)
Parameters
monworkarea to be filled in.

Fills in mon with the information about the monitor rofi should show on.

Returns
TRUE if monitor is found, FALSE if no monitor could be detected.

Definition at line 937 of file xcb.c.

References config, mon, Settings::monitor, monitor_active_from_id(), monitor_active_from_winid(), monitor_dimensions(), monitor_get_dimension(), _xcb_stuff::monitors, _workarea::next, and xcb.

Referenced by __create_window(), config_sanity_check(), and rofi_theme_parse_process_conditionals().

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

◆ monitor_active_from_id()

static int monitor_active_from_id ( int  mon_id,
workarea mon 
)
static

Definition at line 874 of file xcb.c.

References _xcb_stuff::ewmh, mon, monitor_active_from_id_focused(), monitor_dimensions(), pointer_get(), _xcb_stuff::screen, _xcb_stuff::screen_nbr, _workarea::x, xcb, and _workarea::y.

Referenced by monitor_active().

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

◆ monitor_active_from_id_focused()

static int monitor_active_from_id_focused ( int  mon_id,
workarea mon 
)
static

Definition at line 810 of file xcb.c.

References _xcb_stuff::connection, current_window_manager, _xcb_stuff::ewmh, _workarea::h, mon, monitor_dimensions(), _xcb_stuff::screen_nbr, _workarea::w, WM_ROOT_WINDOW_OFFSET, _workarea::x, xcb, and _workarea::y.

Referenced by monitor_active_from_id().

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

◆ monitor_active_from_winid()

static int monitor_active_from_winid ( xcb_drawable_t  id,
workarea mon 
)
static

Definition at line 784 of file xcb.c.

References _xcb_stuff::connection, _workarea::h, mon, _xcb_stuff::screen, _workarea::w, _workarea::x, xcb, and _workarea::y.

Referenced by monitor_active().

Here is the caller graph for this function:

◆ monitor_dimensions()

static void monitor_dimensions ( int  x,
int  y,
workarea mon 
)
static

Definition at line 746 of file xcb.c.

References _workarea::h, INTERSECT, mon, _xcb_stuff::monitors, _workarea::next, _xcb_stuff::screen, _workarea::w, and xcb.

Referenced by monitor_active(), monitor_active_from_id(), and monitor_active_from_id_focused().

Here is the caller graph for this function:

◆ monitor_get_dimension()

static int monitor_get_dimension ( int  monitor_id,
workarea mon 
)
static

Definition at line 731 of file xcb.c.

References _workarea::h, mon, _workarea::monitor_id, _xcb_stuff::monitors, _workarea::next, _xcb_stuff::screen, _workarea::w, and xcb.

Referenced by monitor_active().

Here is the caller graph for this function:

◆ pointer_get()

static int pointer_get ( xcb_window_t  root,
int *  x,
int *  y 
)
static
Parameters
rootThe X11 window used to find the pointer position. Usually the root window.
xThe x position of the mouse [out]
yThe y position of the mouse [out]

find mouse pointer location

Returns
TRUE when found, FALSE otherwise

Definition at line 769 of file xcb.c.

References _xcb_stuff::connection, and xcb.

Referenced by monitor_active_from_id().

Here is the caller graph for this function:

◆ release_keyboard()

static void release_keyboard ( void  )
static

Definition at line 1317 of file xcb.c.

References _xcb_stuff::connection, and xcb.

Referenced by display_early_cleanup().

Here is the caller graph for this function:

◆ release_pointer()

static void release_pointer ( void  )
static

Definition at line 1320 of file xcb.c.

References _xcb_stuff::connection, and xcb.

Referenced by display_early_cleanup().

Here is the caller graph for this function:

◆ rofi_view_paste()

static void rofi_view_paste ( RofiViewState state,
xcb_selection_notify_event_t *  xse 
)
static
Parameters
stateInternal state of the menu.
xseX selection event.

Handle paste event.

Definition at line 990 of file xcb.c.

References _xcb_stuff::ewmh, rofi_view_handle_text(), window_get_text_prop(), and xcb.

Referenced by main_loop_x11_event_handler_view().

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

◆ rofi_xcb_revert_input_focus()

void rofi_xcb_revert_input_focus ( void  )

IF set, revert the focus back to the original applications.

Definition at line 1250 of file xcb.c.

References _xcb_stuff::connection, _xcb_stuff::focus_revert, and xcb.

Referenced by rofi_view_cleanup(), and rofi_view_hide().

Here is the caller graph for this function:

◆ rofi_xcb_set_input_focus()

void rofi_xcb_set_input_focus ( xcb_window_t  w)
Parameters
wrofis window

Stores old input focus for reverting and set focus to rofi.

Definition at line 1227 of file xcb.c.

References config, _xcb_stuff::connection, _xcb_stuff::focus_revert, Settings::steal_focus, and xcb.

Referenced by rofi_view_create().

Here is the caller graph for this function:

◆ take_keyboard()

static int take_keyboard ( xcb_window_t  w,
int  iters 
)
static

Definition at line 1289 of file xcb.c.

References _xcb_stuff::connection, and xcb.

Referenced by display_late_setup(), and lazy_grab_keyboard().

Here is the caller graph for this function:

◆ take_pointer()

static int take_pointer ( xcb_window_t  w,
int  iters 
)
static

Definition at line 1260 of file xcb.c.

References _xcb_stuff::connection, and xcb.

Referenced by display_late_setup(), and lazy_grab_pointer().

Here is the caller graph for this function:

◆ window_get_text_prop()

char* window_get_text_prop ( xcb_window_t  w,
xcb_atom_t  atom 
)
Parameters
wThe xcb_window_t to read property from.
atomThe property identifier

Get text property defined by atom from window. Support utf8.

Returns
a newly allocated string with the result or NULL

Definition at line 374 of file xcb.c.

References _xcb_stuff::connection, netatoms, rofi_latin_to_utf8_strdup(), and xcb.

Referenced by rofi_view_paste().

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

◆ window_set_atom_prop()

void window_set_atom_prop ( xcb_window_t  w,
xcb_atom_t  prop,
xcb_atom_t *  atoms,
int  count 
)
Parameters
wThe xcb_window_t to set property on
propAtom of the property to change
atomsList of atoms to change the property too
countThe length of the atoms list.

Set property on window.

Definition at line 400 of file xcb.c.

References _xcb_stuff::connection, count, and xcb.

Referenced by __create_window().

Here is the caller graph for this function:

◆ x11_build_monitor_layout()

static void x11_build_monitor_layout ( )
static

◆ x11_build_monitor_layout_xinerama()

static void x11_build_monitor_layout_xinerama ( )
static

Definition at line 531 of file xcb.c.

References _xcb_stuff::connection, _workarea::h, _workarea::monitor_id, _xcb_stuff::monitors, _workarea::next, _workarea::w, _workarea::x, xcb, and _workarea::y.

Referenced by x11_build_monitor_layout().

Here is the caller graph for this function:

◆ x11_button_to_nk_bindings_button()

static gboolean x11_button_to_nk_bindings_button ( guint32  x11_button,
NkBindingsMouseButton *  button 
)
static

Definition at line 1013 of file xcb.c.

Referenced by main_loop_x11_event_handler_view().

Here is the caller graph for this function:

◆ x11_button_to_nk_bindings_scroll()

static gboolean x11_button_to_nk_bindings_scroll ( guint32  x11_button,
NkBindingsScrollAxis *  axis,
gint32 *  steps 
)
static

Definition at line 1042 of file xcb.c.

Referenced by main_loop_x11_event_handler_view().

Here is the caller graph for this function:

◆ x11_create_frequently_used_atoms()

static void x11_create_frequently_used_atoms ( void  )
static

Fill in the list of frequently used X11 Atoms.

Definition at line 1345 of file xcb.c.

References _xcb_stuff::connection, netatom_names, netatoms, NUM_NETATOMS, and xcb.

Referenced by display_setup().

Here is the caller graph for this function:

◆ x11_create_visual_and_colormap()

static void x11_create_visual_and_colormap ( void  )
static

Definition at line 1507 of file xcb.c.

References _xcb_stuff::connection, depth, map, root_visual, _xcb_stuff::screen, visual, and xcb.

Referenced by display_late_setup().

Here is the caller graph for this function:

◆ x11_disable_decoration()

void x11_disable_decoration ( xcb_window_t  window)
Parameters
windowThe X11 window to modify

Set the right hints to disable the window decoration. (Set MOTIF_WM_HINTS, decoration field)

Definition at line 1669 of file xcb.c.

References _xcb_stuff::connection, flags, netatoms, and xcb.

Referenced by __create_window().

Here is the caller graph for this function:

◆ x11_get_monitor_from_output()

static workarea* x11_get_monitor_from_output ( xcb_randr_output_t  out)
static

Create monitor based on output id

Definition at line 429 of file xcb.c.

References _xcb_stuff::connection, _workarea::h, _workarea::mh, _workarea::mw, _workarea::name, _workarea::w, _workarea::x, xcb, and _workarea::y.

Referenced by x11_build_monitor_layout().

Here is the caller graph for this function:

◆ x11_helper_discover_window_manager()

static void x11_helper_discover_window_manager ( void  )
static

Definition at line 1359 of file xcb.c.

References current_window_manager, _xcb_stuff::ewmh, WM_DO_NOT_CHANGE_CURRENT_DESKTOP, WM_PANGO_WORKSPACE_NAMES, WM_ROOT_WINDOW_OFFSET, xcb, and xcb_stuff_get_root_window().

Referenced by display_setup().

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

◆ x11_helper_get_bg_surface()

cairo_surface_t* x11_helper_get_bg_surface ( void  )

Gets a surface containing the background image of the desktop.

Returns
a cairo surface with the background image of the desktop.

Definition at line 360 of file xcb.c.

References _xcb_stuff::connection, get_root_pixmap(), netatoms, root_visual, _xcb_stuff::screen, and xcb.

Referenced by rofi_view_setup_fake_transparency().

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

◆ x11_helper_get_screenshot_surface()

cairo_surface_t* x11_helper_get_screenshot_surface ( void  )

Holds for each supported modifier the possible modifier mask. Check x11_mod_masks[MODIFIER]&mask != 0 to see if MODIFIER is activated.

Definition at line 334 of file xcb.c.

References _xcb_stuff::connection, root_visual, _xcb_stuff::screen, xcb, and xcb_stuff_get_root_window().

Referenced by rofi_view_setup_fake_transparency().

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

◆ x11_helper_get_screenshot_surface_window()

cairo_surface_t* x11_helper_get_screenshot_surface_window ( xcb_window_t  window,
int  size 
)
Parameters
windowthe window the screenshot
sizeSize of the thumbnail

Creates a thumbnail of the window.

Returns
NULL if window was not found, or unmapped, otherwise returns a cairo_surface.

Definition at line 273 of file xcb.c.

References _xcb_stuff::connection, lookup_visual(), _xcb_stuff::screen, and xcb.

Here is the call graph for this function:

◆ x11_is_extension_present()

static int x11_is_extension_present ( const char *  extension)
static

Definition at line 517 of file xcb.c.

References _xcb_stuff::connection, and xcb.

Referenced by x11_build_monitor_layout().

Here is the caller graph for this function:

◆ x11_lookup_cursors()

static void x11_lookup_cursors ( void  )
static

Definition at line 1550 of file xcb.c.

References _xcb_stuff::connection, css_name, cursor_names, cursors, NUM_CURSORS, _xcb_stuff::screen, traditional_name, and xcb.

Referenced by display_late_setup().

Here is the caller graph for this function:

◆ x11_monitor_free()

static void x11_monitor_free ( workarea m)
static

Free monitor structure.

Definition at line 413 of file xcb.c.

References _workarea::name.

Referenced by x11_monitors_free().

Here is the caller graph for this function:

◆ x11_monitors_free()

static void x11_monitors_free ( void  )
static

Definition at line 418 of file xcb.c.

References _xcb_stuff::monitors, _workarea::next, x11_monitor_free(), and xcb.

Referenced by display_cleanup().

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

◆ x11_set_cursor()

void x11_set_cursor ( xcb_window_t  window,
X11CursorType  type 
)
Parameters
window
typeChange mouse cursor

Definition at line 1693 of file xcb.c.

References _xcb_stuff::connection, cursors, NUM_CURSORS, and xcb.

Referenced by rofi_view_set_cursor().

Here is the caller graph for this function:

◆ xcb_stuff_get_root_window()

xcb_window_t xcb_stuff_get_root_window ( void  )

Get the root window.

Returns
the root window.

Definition at line 1634 of file xcb.c.

References _xcb_stuff::screen, and xcb.

Referenced by __create_window(), display_late_setup(), lazy_grab_keyboard(), lazy_grab_pointer(), x11_helper_discover_window_manager(), and x11_helper_get_screenshot_surface().

Here is the caller graph for this function:

Variable Documentation

◆ css_name

const char* css_name

Theme name

Definition at line 112 of file xcb.c.

Referenced by x11_lookup_cursors().

◆ current_window_manager

WindowManagerQuirk current_window_manager = WM_EWHM

Indicates the current window manager. This is used for work-arounds.

Definition at line 77 of file xcb.c.

Referenced by monitor_active_from_id_focused(), and x11_helper_discover_window_manager().

◆ 

const { ... } cursor_names[]
Initial value:
= {
{"default", "left_ptr"}, {"pointer", "hand"}, {"text", "xterm"}}

Mapping between theme name and system name for mouse cursor.

Referenced by x11_lookup_cursors().

◆ cursors

xcb_cursor_t cursors[NUM_CURSORS]
Initial value:
= {XCB_CURSOR_NONE, XCB_CURSOR_NONE,
XCB_CURSOR_NONE}

Cached X11 cursors.

Definition at line 106 of file xcb.c.

Referenced by x11_lookup_cursors(), and x11_set_cursor().

◆ depth

◆ error_trap_depth

int error_trap_depth = 0
static

X server error depth. to handle nested errors.

Definition at line 1325 of file xcb.c.

Referenced by error_trap_pop(), and error_trap_push().

◆ lazy_grab_retry_count_kb

unsigned int lazy_grab_retry_count_kb = 0

Retry count of grabbing keyboard.

Definition at line 1570 of file xcb.c.

Referenced by lazy_grab_keyboard().

◆ lazy_grab_retry_count_pt

unsigned int lazy_grab_retry_count_pt = 0

Retry count of grabbing pointer.

Definition at line 1572 of file xcb.c.

Referenced by lazy_grab_pointer().

◆ map

xcb_colormap_t map = XCB_COLORMAP_NONE

Color map to use for creating window

Definition at line 95 of file xcb.c.

Referenced by __create_window(), rofi_view_cleanup(), and x11_create_visual_and_colormap().

◆ netatom_names

const char* netatom_names[] = {EWMH_ATOMS(ATOM_CHAR)}

atoms as string

Definition at line 101 of file xcb.c.

Referenced by x11_create_frequently_used_atoms().

◆ netatoms

◆ root_visual

xcb_visualtype_t* root_visual = NULL
static

Visual of the root window.

Definition at line 99 of file xcb.c.

Referenced by x11_create_visual_and_colormap(), x11_helper_get_bg_surface(), and x11_helper_get_screenshot_surface().

◆ traditional_name

const char* traditional_name

System name

Definition at line 114 of file xcb.c.

Referenced by x11_lookup_cursors().

◆ visual

xcb_visualtype_t* visual = NULL

Visual to use for creating window

Definition at line 94 of file xcb.c.

Referenced by __create_window(), lookup_visual(), rofi_view_temp_configure_notify(), rofi_view_window_update_size(), and x11_create_visual_and_colormap().

◆ xcb

◆ xcb_int

struct _xcb_stuff xcb_int
Initial value:
= {.connection = NULL,
.screen = NULL,
.screen_nbr = -1,
.sndisplay = NULL,
.sncontext = NULL,
.monitors = NULL}

Structure holding xcb objects needed to function.

Definition at line 77 of file xcb.c.