You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
3.7 KiB
98 lines
3.7 KiB
# Adapted from: https://github.com/chrjguill/i3lock-color/commit/d9f2e04bab3c5f2bed674edd085355da255f892b
|
|
|
|
+++ i3lock.1
|
|
@@ -110,6 +110,10 @@
|
|
Enables debug logging.
|
|
Note, that this will log the password used for authentication to stdout.
|
|
|
|
+.TP
|
|
+.B \-\-no-composite
|
|
+Some compositors have problems with i3lock trying to render over them. If you're having graphical problems, try this arg.
|
|
+
|
|
.SH DPMS
|
|
|
|
The \-d (\-\-dpms) option was removed from i3lock in version 2.8. There were
|
|
+++ i3lock.c
|
|
@@ -90,6 +90,9 @@
|
|
bool ignore_empty_password = false;
|
|
bool skip_repeated_empty_password = false;
|
|
|
|
+/* there's some issues with compositing currently. Let's supply an arg to disable it. */
|
|
+bool composite = true;
|
|
+
|
|
/* isutf, u8_dec © 2005 Jeff Bezanson, public domain */
|
|
#define isutf(c) (((c)&0xC0) != 0x80)
|
|
|
|
@@ -835,6 +838,7 @@
|
|
{"ignore-empty-password", no_argument, NULL, 'e'},
|
|
{"inactivity-timeout", required_argument, NULL, 'I'},
|
|
{"show-failed-attempts", no_argument, NULL, 'f'},
|
|
+ {"no-composite", no_argument, NULL, 0},
|
|
{NULL, no_argument, NULL, 0}};
|
|
|
|
if ((pw = getpwuid(getuid())) == NULL)
|
|
@@ -896,6 +900,8 @@
|
|
case 0:
|
|
if (strcmp(longopts[optind].name, "debug") == 0)
|
|
debug_mode = true;
|
|
+ else if (strcmp(longopts[optind].name, "no-composite") == 0)
|
|
+ composite = false;
|
|
break;
|
|
case 'f':
|
|
show_failed_attempts = true;
|
|
+++ xcb.c
|
|
@@ -25,6 +25,7 @@
|
|
#include "unlock_indicator.h"
|
|
|
|
extern auth_state_t auth_state;
|
|
+extern bool composite;
|
|
|
|
xcb_connection_t *conn;
|
|
xcb_screen_t *screen;
|
|
@@ -109,26 +110,28 @@
|
|
xcb_window_t win = xcb_generate_id(conn);
|
|
xcb_window_t parent_win = scr->root;
|
|
|
|
- /* Check whether the composite extension is available */
|
|
- const xcb_query_extension_reply_t *extension_query = NULL;
|
|
- xcb_generic_error_t *error = 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) {
|
|
- /* When composition is used, we need to use the composite overlay
|
|
- * window instead of the normal root window to be able to cover
|
|
- * composited windows */
|
|
- cookie = xcb_composite_get_overlay_window(conn, scr->root);
|
|
- composite_reply = xcb_composite_get_overlay_window_reply(conn, cookie, &error);
|
|
+ if (composite) {
|
|
+ /* Check whether the composite extension is available */
|
|
+ const xcb_query_extension_reply_t *extension_query = NULL;
|
|
+ xcb_generic_error_t *error = 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) {
|
|
+ /* When composition is used, we need to use the composite overlay
|
|
+ * window instead of the normal root window to be able to cover
|
|
+ * composited windows */
|
|
+ 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) {
|
|
|