Browse Source

add a no-composite arg

master
Chris Guillott 8 years ago
parent
commit
d9f2e04bab
  1. 2
      README.md
  2. 4
      i3lock.1
  3. 7
      i3lock.c
  4. 41
      xcb.c

2
README.md

@ -34,6 +34,8 @@ Many little improvements have been made to i3lock over time:
- `-S, --screen` -- specifies which display to draw the unlock indicator on - `-S, --screen` -- specifies which display to draw the unlock indicator on
- `-k, --clock` -- enables the clock display. - `-k, --clock` -- enables the clock display.
- `--indicator` -- forces the indicator to always show, even if there's no activity. - `--indicator` -- forces the indicator to always show, even if there's no activity.
- `--no-composite` -- disables checking for compositors and trying to grab the compositor window, since that causes issues with some compositors.
- **NOTE**: This can potentially allow sensitive information to display over the screen locker, so take care when you use this option.
- `-B=sigma, --blur` -- enables Gaussian blur. Sigma is the blur radius. - `-B=sigma, --blur` -- enables Gaussian blur. Sigma is the blur radius.
- Note: You can still composite images over the blur (but still under the indicator) with -i. - Note: You can still composite images over the blur (but still under the indicator) with -i.
- Eventually there might be an `imagepos` arg, similar to `time` and `datepos`. - Eventually there might be an `imagepos` arg, similar to `time` and `datepos`.

4
i3lock.1

@ -125,6 +125,10 @@ Images may still be overlaid over the blurred screenshot.
.B \-\-indicator .B \-\-indicator
Forces the indicator to always be visible, instead of only showing on activity. Forces the indicator to always be visible, instead of only showing on activity.
.TP
.B \-\-no\-composite
Some compositors have problems with i3lock trying to render over them. If you're having graphical problems, try this arg.
.TP .TP
.B \-\-insidevercolor=rrggbbaa .B \-\-insidevercolor=rrggbbaa
Sets the interior circle color while the password is being verified. Sets the interior circle color while the password is being verified.

7
i3lock.c

@ -80,6 +80,9 @@ int internal_line_source = 0;
bool show_clock = false; bool show_clock = false;
bool show_indicator = false; bool show_indicator = false;
float refresh_rate = 1.0; float refresh_rate = 1.0;
/* there's some issues with compositing currently. Let's supply an arg to disable it. */
bool composite = true;
/* time formatter strings for date/time /* time formatter strings for date/time
I picked 32-length char arrays because some people might want really funky time formatters. I picked 32-length char arrays because some people might want really funky time formatters.
Who am I to judge? Who am I to judge?
@ -916,6 +919,7 @@ int main(int argc, char *argv[]) {
{"clock", no_argument, NULL, 'k'}, {"clock", no_argument, NULL, 'k'},
{"indicator", no_argument, NULL, 0}, {"indicator", no_argument, NULL, 0},
{"refresh-rate", required_argument, NULL, 0}, {"refresh-rate", required_argument, NULL, 0},
{"no-composite", no_argument, NULL, 0},
{"timestr", required_argument, NULL, 0}, {"timestr", required_argument, NULL, 0},
{"datestr", required_argument, NULL, 0}, {"datestr", required_argument, NULL, 0},
@ -1223,6 +1227,9 @@ int main(int argc, char *argv[]) {
refresh_rate = 1.0; refresh_rate = 1.0;
} }
} }
else if (strcmp(longopts[optind].name, "no-composite") == 0) {
composite = false;
}
break; break;
case 'f': case 'f':
show_failed_attempts = true; show_failed_attempts = true;

41
xcb.c

@ -25,6 +25,7 @@
#include "unlock_indicator.h" #include "unlock_indicator.h"
extern auth_state_t auth_state; extern auth_state_t auth_state;
extern bool composite;
xcb_connection_t *conn; xcb_connection_t *conn;
xcb_screen_t *screen; xcb_screen_t *screen;
@ -109,26 +110,28 @@ xcb_window_t open_fullscreen_window(xcb_connection_t *conn, xcb_screen_t *scr, c
xcb_window_t win = xcb_generate_id(conn); xcb_window_t win = xcb_generate_id(conn);
xcb_window_t parent_win = scr->root; xcb_window_t parent_win = scr->root;
/* Check whether the composite extension is available */ if (composite) {
const xcb_query_extension_reply_t *extension_query = NULL; /* Check whether the composite extension is available */
xcb_generic_error_t *error = NULL; const xcb_query_extension_reply_t *extension_query = NULL;
xcb_composite_get_overlay_window_cookie_t cookie; xcb_generic_error_t *error = NULL;
xcb_composite_get_overlay_window_reply_t *composite_reply = NULL; xcb_composite_get_overlay_window_cookie_t cookie;
xcb_composite_get_overlay_window_reply_t *composite_reply = NULL;
extension_query = xcb_get_extension_data(conn, &xcb_composite_id);
if (extension_query && extension_query->present) { extension_query = xcb_get_extension_data(conn, &xcb_composite_id);
/* When composition is used, we need to use the composite overlay if (extension_query && extension_query->present) {
* window instead of the normal root window to be able to cover /* When composition is used, we need to use the composite overlay
* composited windows */ * window instead of the normal root window to be able to cover
cookie = xcb_composite_get_overlay_window(conn, scr->root); * composited windows */
composite_reply = xcb_composite_get_overlay_window_reply(conn, cookie, &error); cookie = xcb_composite_get_overlay_window(conn, scr->root);
composite_reply = xcb_composite_get_overlay_window_reply(conn, cookie, &error);
if (!error && composite_reply) {
parent_win = composite_reply->overlay_win; if (!error && composite_reply) {
parent_win = composite_reply->overlay_win;
}
free(composite_reply);
free(error);
} }
free(composite_reply);
free(error);
} }
if (pixmap == XCB_NONE) { if (pixmap == XCB_NONE) {

Loading…
Cancel
Save