kbgwm

sucklessy floating window manager
git clone https://git.neuralcrash.com/kbgwm.git
Log | Files | Refs | README | LICENSE

log.c (5422B)


      1 /*
      2  * kbgwm, a sucklessy floating window manager
      3  * Copyright (c) 2020-2021, Kebigon <git@kebigon.xyz>
      4  *
      5  * Permission to use, copy, modify, and/or distribute this software for any
      6  * purpose with or without fee is hereby granted, provided that the above
      7  * copyright notice and this permission notice appear in all copies.
      8  *
      9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
     10  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
     11  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
     12  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     13  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
     14  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
     15  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     16  */
     17 
     18 #include "log.h"
     19 
     20 #if LOG_LEVEL < 4
     21 
     22 void log_debug_globals()
     23 {
     24 }
     25 
     26 void log_debug_event(__attribute__((unused)) xcb_generic_event_t *event)
     27 {
     28 }
     29 
     30 #else
     31 
     32 #include "client.h"
     33 #include "kbgwm.h"
     34 #include "list.h"
     35 
     36 void log_debug_globals()
     37 {
     38     LOG_DEBUG_VA("current_workspace=%d", current_workspace);
     39 
     40     struct item *item;
     41     struct client *client;
     42 
     43     for (uint_fast8_t workspace = 0; workspace != workspaces_length; workspace++)
     44     {
     45         if ((item = list_head(&workspaces[workspace])) != NULL)
     46         {
     47             do
     48             {
     49                 client = item->data;
     50                 LOG_DEBUG_VA("%d\tid=%d x=%d y=%d width=%d height=%d min_width=%d min_height=%d "
     51                              "max_width=%d max_height=%d",
     52                              workspace, client->id, client->x, client->y, client->width,
     53                              client->height, client->min_width, client->min_height,
     54                              client->max_width, client->max_height);
     55             } while ((item = item->next) != NULL);
     56         }
     57         else
     58             LOG_DEBUG_VA("%d\tNULL", workspace);
     59     }
     60 }
     61 
     62 void log_debug_event(xcb_generic_event_t *event)
     63 {
     64     switch (event->response_type & ~0x80)
     65     {
     66     case XCB_KEY_PRESS: {
     67         xcb_key_press_event_t *event2 = (xcb_key_press_event_t *)event;
     68         LOG_DEBUG("=======[ event: XCB_KEY_PRESS ]=======");
     69         LOG_DEBUG_VA("keycode=%d modifiers=%d", event2->detail, event2->state);
     70         log_debug_globals();
     71         break;
     72     }
     73     case XCB_BUTTON_PRESS: {
     74         xcb_button_press_event_t *event2 = (xcb_button_press_event_t *)event;
     75         LOG_DEBUG("=======[ event: XCB_BUTTON_PRESS ]=======");
     76         LOG_DEBUG_VA("window=%d child=%d modifiers=%d button=%d", event2->event, event2->child,
     77                      event2->state, event2->detail);
     78         log_debug_globals();
     79         break;
     80     }
     81     case XCB_BUTTON_RELEASE: {
     82         LOG_DEBUG("=======[ event: XCB_BUTTON_RELEASE ]=======");
     83         log_debug_globals();
     84         break;
     85     }
     86     case XCB_MOTION_NOTIFY: {
     87         xcb_motion_notify_event_t *event2 = (xcb_motion_notify_event_t *)event;
     88         LOG_DEBUG("=======[ event: XCB_MOTION_NOTIFY ]=======");
     89         LOG_DEBUG_VA("root_x=%d root_y=%d event_x=%d event_y=%d", event2->root_x, event2->root_y,
     90                      event2->event_x, event2->event_y);
     91         log_debug_globals();
     92         break;
     93     }
     94     case XCB_DESTROY_NOTIFY: {
     95         xcb_destroy_notify_event_t *event2 = (xcb_destroy_notify_event_t *)event;
     96         LOG_DEBUG("=======[ event: XCB_DESTROY_NOTIFY ]=======");
     97         LOG_DEBUG_VA("window=%d", event2->window);
     98         log_debug_globals();
     99         break;
    100     }
    101     case XCB_UNMAP_NOTIFY: {
    102         xcb_unmap_notify_event_t *event2 = (xcb_unmap_notify_event_t *)event;
    103         LOG_DEBUG("=======[ event: XCB_UNMAP_NOTIFY ]=======");
    104         LOG_DEBUG_VA("window=%d event=%d from_configure=%d send_event=%d", event2->window,
    105                      event2->event, event2->from_configure, event->response_type & 0x80);
    106         log_debug_globals();
    107         break;
    108     }
    109     case XCB_MAP_NOTIFY: {
    110         xcb_map_notify_event_t *event2 = (xcb_map_notify_event_t *)event;
    111         LOG_DEBUG("=======[ event: XCB_MAP_NOTIFY ]=======");
    112         LOG_DEBUG_VA("window=%d", event2->window);
    113         log_debug_globals();
    114         break;
    115     }
    116     case XCB_MAP_REQUEST: {
    117         xcb_map_request_event_t *event2 = (xcb_map_request_event_t *)event;
    118         LOG_DEBUG("=======[ event: XCB_MAP_REQUEST ]=======");
    119         LOG_DEBUG_VA("parent %d window %d", event2->parent, event2->window);
    120         log_debug_globals();
    121         break;
    122     }
    123     case XCB_CONFIGURE_REQUEST: {
    124         xcb_configure_request_event_t *event2 = (xcb_configure_request_event_t *)event;
    125         LOG_DEBUG("=======[ event: XCB_CONFIGURE_REQUEST ]=======");
    126         LOG_DEBUG_VA("parent %d window %d", event2->parent, event2->window);
    127         log_debug_globals();
    128         break;
    129     }
    130     case XCB_MAPPING_NOTIFY: {
    131         xcb_mapping_notify_event_t *event2 = (xcb_mapping_notify_event_t *)event;
    132         LOG_DEBUG("=======[ event: XCB_MAPPING_NOTIFY ]=======");
    133         LOG_DEBUG_VA("sequence %d", event2->sequence);
    134         LOG_DEBUG_VA("request %d", event2->request);
    135         LOG_DEBUG_VA("first_keycode %d", event2->first_keycode);
    136         LOG_DEBUG_VA("count %d", event2->count);
    137         log_debug_globals();
    138         break;
    139     }
    140     default: {
    141         LOG_DEBUG_VA("=======[ event: unlogged, response type %d ]=======",
    142                      event->response_type & ~0x80);
    143         break;
    144     }
    145     }
    146 }
    147 
    148 #endif