Пример #1
0
void fallback_arrange(void)
{
    int clients_len = sglib_client_t_len(client_list);
    if (clients_len == 0)
        return;
    uint16_t screen_width = wm_conf.screen->width_in_pixels;
    uint16_t screen_height = wm_conf.screen->height_in_pixels;
    uint16_t client_width = screen_width / clients_len;
    client_t *client = client_list;
    int i = 0;

    fprintf(stderr, "Fallback window arrangement is being used. You should define arrange-hook.\n");

    while (i < clients_len) {
        client->rect.x = i * client_width;
        client->rect.y = 0;
        client->rect.width = client_width;
        client->rect.height = screen_height;
        client->border_width = 0;
        update_client_geometry(client);
        ++i;
        client = client->next;
    }

    client_t *focus_client = get_focus_client();
    if (focus_client) {
        draw_border(focus_client);
    }
    else if (client_list) {
        set_focus_client(client_list);
        draw_border(client_list);
    }
}
Пример #2
0
static SCM scm_resize_client(SCM client_smob, SCM width, SCM height)
{
    client_t *client = (client_t *)SCM_SMOB_DATA(client_smob);
    client->rect.width = scm_to_uint16(width);
    client->rect.height = scm_to_uint16(height);
    update_client_geometry(client);
    return SCM_UNSPECIFIED;
}
Пример #3
0
static SCM scm_move_client(SCM client_smob, SCM x, SCM y)
{
    client_t *client = (client_t *)SCM_SMOB_DATA(client_smob);
    client->rect.x = scm_to_int16(x);
    client->rect.y = scm_to_int16(y);
    update_client_geometry(client);
    return SCM_UNSPECIFIED;
}
Пример #4
0
client_t *manage_window(xcb_window_t window)
{
    client_t *client = client_init(client_alloc());
    client->window = window;
    sglib_client_t_add(&client_list, client);

    read_client_geometry(client);
    client->border_width = 0;
    update_client_geometry(client);
    xcb_map_window(wm_conf.connection, client->window);

    run_arrange_hook();

    return client;    
}