rofi 1.7.5
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 "mode.h"
#include "modes/window.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 void x11_workarea_fix_rotation (workarea *w)
 
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 [] 
 
gboolean mon_set = FALSE
 
workarea mon_cache
 
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 77 of file xcb.c.

Referenced by monitor_dimensions().

◆ RANDR_PREF_MAJOR_VERSION

#define RANDR_PREF_MAJOR_VERSION   1

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

Definition at line 72 of file xcb.c.

Referenced by x11_build_monitor_layout().

◆ RANDR_PREF_MINOR_VERSION

#define RANDR_PREF_MINOR_VERSION   5

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

Definition at line 74 of file xcb.c.

Referenced by x11_build_monitor_layout().

◆ 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.

Referenced by display_startup_notification().

Function Documentation

◆ cairo_image_surface_blur()

void cairo_image_surface_blur ( cairo_surface_t * surface,
double radius,
double deviation )
Parameters
surface
radius
deviation

Blur the content of the surface with radius and deviation.

Definition at line 167 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 139 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 1755 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 685 of file xcb.c.

References color_bold, color_reset, _xcb_stuff::monitors, 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 1749 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 1714 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 1491 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, xcb_stuff_get_root_window(), 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 711 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 1439 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 1434 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 343 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 1699 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 1686 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 121 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 1288 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()

◆ 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 992 of file xcb.c.

References config, mon, mon_cache, mon_set, Settings::monitor, monitor_active_from_id(), monitor_active_from_winid(), monitor_dimensions(), monitor_get_dimension(), _xcb_stuff::monitors, 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 911 of file xcb.c.

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

Referenced by monitor_active(), and monitor_active_from_id().

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 841 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 811 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 768 of file xcb.c.

References _workarea::h, INTERSECT, mon, _xcb_stuff::monitors, _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 753 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 795 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 1425 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 1428 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 1069 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 1358 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 1335 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 1397 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 1368 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 377 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 403 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 553 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 1092 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 1121 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 1453 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 1620 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 1782 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 449 of file xcb.c.

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

Referenced by x11_build_monitor_layout().

Here is the call graph for this function:
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 1467 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 363 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 337 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 276 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 539 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 1663 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 416 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 421 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
type

Change mouse cursor

Definition at line 1806 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:

◆ x11_workarea_fix_rotation()

static void x11_workarea_fix_rotation ( workarea * w)
static

Quick function that tries to fix the size (for dpi calculation) when monitor is rotate. This assumes the density is kinda equal in both X/Y direction.

Definition at line 434 of file xcb.c.

References _workarea::h, _workarea::mh, _workarea::mw, and _workarea::w.

Referenced by x11_get_monitor_from_output().

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 1747 of file xcb.c.

References _xcb_stuff::screen, and xcb.

Referenced by __create_window(), display_late_setup(), display_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 115 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 80 of file xcb.c.

Referenced by monitor_active_from_id_focused(), and x11_helper_discover_window_manager().

◆ [struct]

const struct { ... } 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 109 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 1433 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 1683 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 1685 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 98 of file xcb.c.

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

◆ mon_cache

workarea mon_cache
Initial value:
= {
0,
}

Definition at line 989 of file xcb.c.

Referenced by monitor_active().

◆ mon_set

gboolean mon_set = FALSE

Definition at line 988 of file xcb.c.

Referenced by monitor_active().

◆ netatom_names

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

atoms as string

Definition at line 104 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 102 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 117 of file xcb.c.

Referenced by x11_lookup_cursors().

◆ visual

xcb_visualtype_t* visual = NULL

Visual to use for creating window

Definition at line 97 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 85 of file xcb.c.