add nopass option
Patch status: rejected
Patch by Travis Cardwell
Long description:
It is sometimes convenient to blank the screen without locking it. For example, one might blank the screen when talking to a coworker, without leaving the desk. It would be nice to have the feature in i3lock for when DPMS is not available. Example configuration: # blank the screen bindsym $mod+z exec i3lock -d -N -c 111111 # lock the screen bindsym $mod+Shift+z exec i3lock -d -c 111111
To apply this patch, use:
curl http://cr.i3wm.org/patch/195/raw.patch | git am
b/i3lock.c
25 |
@@ -49,6 +49,7 @@ bool debug_mode = false; |
26 |
static bool dpms = false; |
27 |
bool unlock_indicator = true; |
28 |
static bool dont_fork = false; |
29 |
+static bool nopass = false; |
30 |
struct ev_loop *main_loop; |
31 |
static struct ev_timer *clear_pam_wrong_timeout; |
32 |
extern unlock_state_t unlock_state; |
33 |
@@ -255,6 +256,9 @@ static void handle_key_press(xcb_key_press_event_t *event) { |
34 |
int n; |
35 |
bool ctrl; |
36 |
|
37 |
+ if (nopass) |
38 |
+ exit(0); |
39 |
+ |
40 |
ksym = xkb_state_key_get_one_sym(xkb_state, event->detail); |
41 |
ctrl = xkb_state_mod_name_is_active(xkb_state, "Control", XKB_STATE_MODS_DEPRESSED); |
42 |
xkb_state_update_key(xkb_state, event->detail, XKB_KEY_DOWN); |
43 |
@@ -524,6 +528,7 @@ int main(int argc, char *argv[]) { |
44 |
struct option longopts[] = { |
45 |
{"version", no_argument, NULL, 'v'}, |
46 |
{"nofork", no_argument, NULL, 'n'}, |
47 |
+ {"nopass", no_argument, NULL, 'N'}, |
48 |
{"beep", no_argument, NULL, 'b'}, |
49 |
{"dpms", no_argument, NULL, 'd'}, |
50 |
{"color", required_argument, NULL, 'c'}, |
51 |
@@ -539,13 +544,16 @@ int main(int argc, char *argv[]) { |
52 |
if ((username = getenv("USER")) == NULL) |
53 |
errx(1, "USER environment variable not set, please set it.\n"); |
54 |
|
55 |
- while ((o = getopt_long(argc, argv, "hvnbdc:p:ui:t", longopts, &optind)) != -1) { |
56 |
+ while ((o = getopt_long(argc, argv, "hvnNbdc:p:ui:t", longopts, &optind)) != -1) { |
57 |
switch (o) { |
58 |
case 'v': |
59 |
errx(EXIT_SUCCESS, "version " VERSION " © 2010-2012 Michael Stapelberg"); |
60 |
case 'n': |
61 |
dont_fork = true; |
62 |
break; |
63 |
+ case 'N': |
64 |
+ nopass = true; |
65 |
+ break; |
66 |
case 'b': |
67 |
beep = true; |
68 |
break; |