bd9de8189b
Thanks to psychoschlumpf for the hint. Having comments in the headers makes it easier to get the big picture when not being interested in the source. The doxygen file extracts as much as it can into HTML files. Please note that this is not official/supported documentation, but rather being nice to people who have to/want to use doxygen (I don’t). Let me paste the header of the doxygen file: You can use this file with doxygen to create a pseudo-documentation automatically from source. doxygen-comments are not used very extensively in i3, mostly for the reason that it clutters the source code and has no real use (doxygen’s output looks really ugly). So, if you want to use it, here you go. This is however not a supported document, and I recommend you have a look at the docs/ folder or at http://i3.zekjur.net/ for more, real documentation.
120 lines
3.9 KiB
C
120 lines
3.9 KiB
C
/*
|
||
* vim:ts=8:expandtab
|
||
*
|
||
* i3 - an improved dynamic tiling window manager
|
||
*
|
||
* (c) 2009 Michael Stapelberg and contributors
|
||
*
|
||
* See file LICENSE for license information.
|
||
*
|
||
*/
|
||
#ifndef _HANDLERS_H
|
||
#define _HANDLERS_H
|
||
|
||
/**
|
||
* Due to bindings like Mode_switch + <a>, we need to bind some keys in XCB_GRAB_MODE_SYNC.
|
||
* Therefore, we just replay all key presses.
|
||
*
|
||
*/
|
||
int handle_key_release(void *ignored, xcb_connection_t *conn, xcb_key_release_event_t *event);
|
||
|
||
/**
|
||
* There was a key press. We compare this key code with our bindings table and pass
|
||
* the bound action to parse_command().
|
||
*
|
||
*/
|
||
int handle_key_press(void *ignored, xcb_connection_t *conn, xcb_key_press_event_t *event);
|
||
|
||
/**
|
||
* When the user moves the mouse pointer onto a window, this callback gets called.
|
||
*
|
||
*/
|
||
int handle_enter_notify(void *ignored, xcb_connection_t *conn, xcb_enter_notify_event_t *event);
|
||
|
||
/**
|
||
* Checks if the button press was on a stack window, handles focus setting and returns true
|
||
* if so, or false otherwise.
|
||
*
|
||
*/
|
||
int handle_button_press(void *ignored, xcb_connection_t *conn, xcb_button_press_event_t *event);
|
||
|
||
/**
|
||
* A new window appeared on the screen (=was mapped), so let’s manage it.
|
||
*
|
||
*/
|
||
int handle_map_request(void *prophs, xcb_connection_t *conn, xcb_map_request_event_t *event);
|
||
|
||
/**
|
||
* Configuration notifies are only handled because we need to set up ignore for the following
|
||
* enter notify events
|
||
*
|
||
*/
|
||
int handle_configure_event(void *prophs, xcb_connection_t *conn, xcb_configure_notify_event_t *event);
|
||
|
||
/**
|
||
* Configure requests are received when the application wants to resize windows on their own.
|
||
*
|
||
* We generate a synthethic configure notify event to signalize the client its "new" position.
|
||
*
|
||
*/
|
||
int handle_configure_request(void *prophs, xcb_connection_t *conn, xcb_configure_request_event_t *event);
|
||
|
||
/**
|
||
* Our window decorations were unmapped. That means, the window will be killed now,
|
||
* so we better clean up before.
|
||
*
|
||
*/
|
||
int handle_unmap_notify_event(void *data, xcb_connection_t *conn, xcb_unmap_notify_event_t *event);
|
||
|
||
/**
|
||
* Called when a window changes its title
|
||
*
|
||
*/
|
||
int handle_windowname_change(void *data, xcb_connection_t *conn, uint8_t state,
|
||
xcb_window_t window, xcb_atom_t atom, xcb_get_property_reply_t *prop);
|
||
|
||
/**
|
||
* We handle legacy window names (titles) which are in COMPOUND_TEXT encoding. However, we
|
||
* just pass them along, so when containing non-ASCII characters, those will be rendering
|
||
* incorrectly. In order to correctly render unicode window titles in i3, an application
|
||
* has to set _NET_WM_NAME, which is in UTF-8 encoding.
|
||
*
|
||
* On every update, a message is put out to the user, so he may improve the situation and
|
||
* update applications which display filenames in their title to correctly use
|
||
* _NET_WM_NAME and therefore support unicode.
|
||
*
|
||
*/
|
||
int handle_windowname_change_legacy(void *data, xcb_connection_t *conn, uint8_t state,
|
||
xcb_window_t window, xcb_atom_t atom, xcb_get_property_reply_t *prop);
|
||
|
||
/**
|
||
* Expose event means we should redraw our windows (= title bar)
|
||
*
|
||
*/
|
||
int handle_expose_event(void *data, xcb_connection_t *conn, xcb_expose_event_t *event);
|
||
|
||
/**
|
||
* Handle client messages (EWMH)
|
||
*
|
||
*/
|
||
int handle_client_message(void *data, xcb_connection_t *conn, xcb_client_message_event_t *event);
|
||
|
||
/**
|
||
* Handles _NET_WM_WINDOW_TYPE changes
|
||
*
|
||
*/
|
||
int handle_window_type(void *data, xcb_connection_t *conn, uint8_t state, xcb_window_t window,
|
||
xcb_atom_t atom, xcb_get_property_reply_t *property);
|
||
|
||
/**
|
||
* Handles the size hints set by a window, but currently only the part necessary for displaying
|
||
* clients proportionally inside their frames (mplayer for example)
|
||
*
|
||
* See ICCCM 4.1.2.3 for more details
|
||
*
|
||
*/
|
||
int handle_normal_hints(void *data, xcb_connection_t *conn, uint8_t state, xcb_window_t window,
|
||
xcb_atom_t name, xcb_get_property_reply_t *reply);
|
||
|
||
#endif
|