Browse Source

add some more options

master
Chris Guillott 8 years ago
parent
commit
6ec7c668cf
  1. 5
      README.md
  2. 28
      i3lock.1
  3. 62
      i3lock.c
  4. 18
      unlock_indicator.c

5
README.md

@ -49,6 +49,11 @@ Many little improvements have been made to i3lock over time:
- `--datecolor=rrggbbaa` -- color of the date string - `--datecolor=rrggbbaa` -- color of the date string
- `--datefont="sans-serif"` -- font used for the date display - `--datefont="sans-serif"` -- font used for the date display
- `--datesize=14` -- font size for the date display - `--datesize=14` -- font size for the date display
- `--veriftext="verifying…" -- text to be shown while verifying
- `--wrongtext="wrong!" -- text to be shown upon an incorrect password being entered
- `--textsize=28` -- font size for the status text
- `--modsize=14` -- font size for the modifier keys listing
- `--radius=90` -- the radius of the circle indicator
- You can specify whether i3lock should bell upon a wrong password. - You can specify whether i3lock should bell upon a wrong password.

28
i3lock.1

@ -194,8 +194,8 @@ Sets the format used for generating the time string. See strftime(3) for a full
Sets the font used to render the time string. Sets the font used to render the time string.
.TP .TP
.B \-\-timesize=32 .B \-\-timesize=number
Sets the font size for rendering the time string. Sets the font size for rendering the time string. Defaults to 32.
.TP .TP
.B \-\-timepos="x position:y position" .B \-\-timepos="x position:y position"
@ -234,8 +234,8 @@ Sets the format used for generating the date string. See strftime(3) for a full
Sets the font used to render the date string. Sets the font used to render the date string.
.TP .TP
.B \-\-datesize=14 .B \-\-datesize=number
Sets the font size for rendering the date string. Sets the font size for rendering the date string. Defaults to 14.
.TP .TP
.B \-\-datepos="x position:y position" .B \-\-datepos="x position:y position"
@ -254,6 +254,26 @@ ty - the computed y value of the timestring, for the current display.
.B \-\-refresh\-rate=seconds .B \-\-refresh\-rate=seconds
The refresh rate of the indicator, given in seconds. This should automatically align itself, but is somewhat buggy currently. The refresh rate of the indicator, given in seconds. This should automatically align itself, but is somewhat buggy currently.
.TP
.B \-\-veriftext="text"
Sets the string to be shown while verifying the password/input/key/etc. Defaults to "verifying…".
.TP
.B \-\-wrongtext="text"
Sets the string to be shown upon entering an incorrect password. Defaults to "wrong!".
.TP
.B \-\-textsize=number
The fontsize of the status text. Defaults to 28.
.TP
.B \-\-modsize=number
The fontsize of the text listing all the active modifiers (caps lock, num lock, etc). Defaults to 14.
.TP
.B \-\-radius
The radius of the circle. Defaults to 90.
.SH DPMS .SH DPMS
The \-d (\-\-dpms) option was removed from i3lock in version 2.8. There were The \-d (\-\-dpms) option was removed from i3lock in version 2.8. There were

62
i3lock.c

@ -96,8 +96,14 @@ char time_y_expr[32] = "iy - (ch / 2)\0";
char date_x_expr[32] = "tx\0"; char date_x_expr[32] = "tx\0";
char date_y_expr[32] = "ty+30\0"; char date_y_expr[32] = "ty+30\0";
double time_size = 32; double time_size = 32.0;
double date_size = 14; double date_size = 14.0;
double text_size = 28.0;
double modifier_size = 14.0;
double circle_radius = 90.0;
char* verif_text = "verifying…";
char* wrong_text = "wrong!";
/* opts for blurring */ /* opts for blurring */
bool blur = false; bool blur = false;
@ -894,7 +900,9 @@ int main(int argc, char *argv[]) {
{"no-unlock-indicator", no_argument, NULL, 'u'}, {"no-unlock-indicator", no_argument, NULL, 'u'},
{"image", required_argument, NULL, 'i'}, {"image", required_argument, NULL, 'i'},
{"tiling", no_argument, NULL, 't'}, {"tiling", no_argument, NULL, 't'},
{"ignore-empty-password", no_argument, NULL, 'e'},
{"inactivity-timeout", required_argument, NULL, 'I'},
{"show-failed-attempts", no_argument, NULL, 'f'},
/* options for unlock indicator colors */ /* options for unlock indicator colors */
// defining a lot of different chars here for the options -- TODO find a nicer way for this, maybe not offering single character options at all // defining a lot of different chars here for the options -- TODO find a nicer way for this, maybe not offering single character options at all
{"insidevercolor", required_argument, NULL, 0}, // --i-v {"insidevercolor", required_argument, NULL, 0}, // --i-v
@ -915,7 +923,7 @@ int main(int argc, char *argv[]) {
/* s for in_s_ide; ideally I'd use -I but that's used for timeout, which should use -T, but compatibility argh /* s for in_s_ide; ideally I'd use -I but that's used for timeout, which should use -T, but compatibility argh
* note: `I` has been deprecated for a while, so I might just remove that and reshuffle that? */ * note: `I` has been deprecated for a while, so I might just remove that and reshuffle that? */
{"screen", required_argument, NULL, 'S'}, {"screen", required_argument, NULL, 'S'},
{"blur", required_argument, NULL, 'B'},
{"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},
@ -930,11 +938,12 @@ int main(int argc, char *argv[]) {
{"timepos", required_argument, NULL, 0}, {"timepos", required_argument, NULL, 0},
{"datepos", required_argument, NULL, 0}, {"datepos", required_argument, NULL, 0},
{"blur", required_argument, NULL, 'B'}, {"veriftext", required_argument, NULL, 0},
{"wrongtext", required_argument, NULL, 0},
{"textsize", required_argument, NULL, 0},
{"modsize", required_argument, NULL, 0},
{"radius", required_argument, NULL, 0},
{"ignore-empty-password", no_argument, NULL, 'e'},
{"inactivity-timeout", required_argument, NULL, 'I'},
{"show-failed-attempts", no_argument, NULL, 'f'},
{NULL, no_argument, NULL, 0}}; {NULL, no_argument, NULL, 0}};
if ((pw = getpwuid(getuid())) == NULL) if ((pw = getpwuid(getuid())) == NULL)
@ -1230,12 +1239,47 @@ int main(int argc, char *argv[]) {
else if (strcmp(longopts[optind].name, "no-composite") == 0) { else if (strcmp(longopts[optind].name, "no-composite") == 0) {
composite = false; composite = false;
} }
else if (strcmp(longopts[optind].name, "veriftext") == 0) {
verif_text = optarg;
}
else if (strcmp(longopts[optind].name, "wrongtext") == 0) {
wrong_text = optarg;
}
else if (strcmp(longopts[optind].name, "textsize") == 0) {
char *arg = optarg;
if (sscanf(arg, "%lf", &text_size) != 1)
errx(1, "textsize must be a number\n");
if (time_size < 1) {
fprintf(stderr, "textsize must be a positive integer; ignoring...\n");
text_size = 28.0;
}
}
else if (strcmp(longopts[optind].name, "modsize") == 0) {
char *arg = optarg;
if (sscanf(arg, "%lf", &modifier_size) != 1)
errx(1, "modsize must be a number\n");
if (modifier_size < 1) {
fprintf(stderr, "modsize must be a positive integer; ignoring...\n");
modifier_size = 14.0;
}
}
else if (strcmp(longopts[optind].name, "radius") == 0) {
char *arg = optarg;
if (sscanf(arg, "%lf", &circle_radius) != 1)
errx(1, "radius must be a number\n");
if (circle_radius < 1) {
fprintf(stderr, "radius must be a positive integer; ignoring...\n");
text_size = 90.0;
}
}
break; break;
case 'f': case 'f':
show_failed_attempts = true; show_failed_attempts = true;
break; break;
default: default:
// TODO: clean this up, use newlines
errx(EXIT_FAILURE, "Syntax: i3lock [-v] [-n] [-b] [-d] [-c color] [-u] [-p win|default]" errx(EXIT_FAILURE, "Syntax: i3lock [-v] [-n] [-b] [-d] [-c color] [-u] [-p win|default]"
" [-i image.png] [-t] [-e] [-f]\n" " [-i image.png] [-t] [-e] [-f]\n"
"Please see the manpage for a full list of arguments."); "Please see the manpage for a full list of arguments.");

18
unlock_indicator.c

@ -25,7 +25,9 @@
/* clock stuff */ /* clock stuff */
#include <time.h> #include <time.h>
#define BUTTON_RADIUS 90 extern double circle_radius;
#define BUTTON_RADIUS (circle_radius)
#define BUTTON_SPACE (BUTTON_RADIUS + 5) #define BUTTON_SPACE (BUTTON_RADIUS + 5)
#define BUTTON_CENTER (BUTTON_RADIUS + 5) #define BUTTON_CENTER (BUTTON_RADIUS + 5)
#define BUTTON_DIAMETER (2 * BUTTON_SPACE) #define BUTTON_DIAMETER (2 * BUTTON_SPACE)
@ -94,6 +96,12 @@ extern char date_y_expr[32];
extern double time_size; extern double time_size;
extern double date_size; extern double date_size;
extern double text_size;
extern double modifier_size;
extern char* verif_text;
extern char* wrong_text;
/* Whether the failed attempts should be displayed. */ /* Whether the failed attempts should be displayed. */
extern bool show_failed_attempts; extern bool show_failed_attempts;
/* Number of failed unlock attempts. */ /* Number of failed unlock attempts. */
@ -394,16 +402,16 @@ xcb_pixmap_t draw_image(uint32_t *resolution) {
cairo_set_source_rgba(ctx, (double)text16[0]/255, (double)text16[1]/255, (double)text16[2]/255, (double)text16[3]/255); cairo_set_source_rgba(ctx, (double)text16[0]/255, (double)text16[1]/255, (double)text16[2]/255, (double)text16[3]/255);
cairo_select_font_face(ctx, "sans-serif", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); cairo_select_font_face(ctx, "sans-serif", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
cairo_set_font_size(ctx, 28.0); cairo_set_font_size(ctx, text_size);
switch (auth_state) { switch (auth_state) {
case STATE_AUTH_VERIFY: case STATE_AUTH_VERIFY:
text = "verifying…"; text = verif_text;
break; break;
case STATE_AUTH_LOCK: case STATE_AUTH_LOCK:
text = "locking…"; text = "locking…";
break; break;
case STATE_AUTH_WRONG: case STATE_AUTH_WRONG:
text = "wrong!"; text = wrong_text;
break; break;
case STATE_I3LOCK_LOCK_FAILED: case STATE_I3LOCK_LOCK_FAILED:
text = "lock failed!"; text = "lock failed!";
@ -439,7 +447,7 @@ xcb_pixmap_t draw_image(uint32_t *resolution) {
cairo_text_extents_t extents; cairo_text_extents_t extents;
double x, y; double x, y;
cairo_set_font_size(ctx, 14.0); cairo_set_font_size(ctx, modifier_size);
cairo_text_extents(ctx, modifier_string, &extents); cairo_text_extents(ctx, modifier_string, &extents);
x = BUTTON_CENTER - ((extents.width / 2) + extents.x_bearing); x = BUTTON_CENTER - ((extents.width / 2) + extents.x_bearing);

Loading…
Cancel
Save