Browse Source

Merge pull request #40 from gunslingerfry/ring-width

Added a ring width to customize the width of the ring
master
Chris Guillott 7 years ago
committed by GitHub
parent
commit
12016c01c4
  1. 1
      README.md
  2. 15
      i3lock.c
  3. 10
      unlock_indicator.c

1
README.md

@ -57,6 +57,7 @@ Many little improvements have been made to i3lock over time:
- `--textsize=28` -- font size for the status text - `--textsize=28` -- font size for the status text
- `--modsize=14` -- font size for the modifier keys listing - `--modsize=14` -- font size for the modifier keys listing
- `--radius=90` -- the radius of the circle indicator - `--radius=90` -- the radius of the circle indicator
- `--ring-width=7` -- the width of the indicator ring
- You can specify whether i3lock should bell upon a wrong password. - You can specify whether i3lock should bell upon a wrong password.

15
i3lock.c

@ -104,6 +104,7 @@ double date_size = 14.0;
double text_size = 28.0; double text_size = 28.0;
double modifier_size = 14.0; double modifier_size = 14.0;
double circle_radius = 90.0; double circle_radius = 90.0;
double ring_width = 7.0;
char* verif_text = "verifying…"; char* verif_text = "verifying…";
char* wrong_text = "wrong!"; char* wrong_text = "wrong!";
@ -947,6 +948,7 @@ int main(int argc, char *argv[]) {
{"textsize", required_argument, NULL, 0}, {"textsize", required_argument, NULL, 0},
{"modsize", required_argument, NULL, 0}, {"modsize", required_argument, NULL, 0},
{"radius", required_argument, NULL, 0}, {"radius", required_argument, NULL, 0},
{"ring-width", required_argument, NULL, 0},
{NULL, no_argument, NULL, 0}}; {NULL, no_argument, NULL, 0}};
@ -1289,6 +1291,19 @@ int main(int argc, char *argv[]) {
circle_radius = 90.0; circle_radius = 90.0;
} }
} }
else if (strcmp(longopts[longoptind].name, "ring-width") == 0) {
char *arg = optarg;
double new_width = 0;
if (sscanf(arg, "%lf", &new_width) != 1)
errx(1, "ring-width must be a number\n");
if (new_width < 1) {
fprintf(stderr, "ring-width must be a positive integer; ignoring...\n");
}
else {
ring_width = new_width;
}
}
break; break;
case 'f': case 'f':
show_failed_attempts = true; show_failed_attempts = true;

10
unlock_indicator.c

@ -26,10 +26,12 @@
#include <time.h> #include <time.h>
extern double circle_radius; extern double circle_radius;
extern double ring_width;
#define BUTTON_RADIUS (circle_radius) #define BUTTON_RADIUS (circle_radius)
#define BUTTON_SPACE (BUTTON_RADIUS + 5) #define RING_WIDTH (ring_width)
#define BUTTON_CENTER (BUTTON_RADIUS + 5) #define BUTTON_SPACE (BUTTON_RADIUS + (RING_WIDTH / 2))
#define BUTTON_CENTER (BUTTON_RADIUS + (RING_WIDTH / 2))
#define BUTTON_DIAMETER (2 * BUTTON_SPACE) #define BUTTON_DIAMETER (2 * BUTTON_SPACE)
#define CLOCK_WIDTH 400 #define CLOCK_WIDTH 400
#define CLOCK_HEIGHT 200 #define CLOCK_HEIGHT 200
@ -324,7 +326,7 @@ xcb_pixmap_t draw_image(uint32_t *resolution) {
(unlock_state >= STATE_KEY_PRESSED || auth_state > STATE_AUTH_IDLE || show_indicator)) { (unlock_state >= STATE_KEY_PRESSED || auth_state > STATE_AUTH_IDLE || show_indicator)) {
cairo_scale(ctx, scaling_factor(), scaling_factor()); cairo_scale(ctx, scaling_factor(), scaling_factor());
/* Draw a (centered) circle with transparent background. */ /* Draw a (centered) circle with transparent background. */
cairo_set_line_width(ctx, 7.0); cairo_set_line_width(ctx, RING_WIDTH);
cairo_arc(ctx, cairo_arc(ctx,
BUTTON_CENTER /* x */, BUTTON_CENTER /* x */,
BUTTON_CENTER /* y */, BUTTON_CENTER /* y */,
@ -465,7 +467,7 @@ xcb_pixmap_t draw_image(uint32_t *resolution) {
* keypress. */ * keypress. */
if (unlock_state == STATE_KEY_ACTIVE || if (unlock_state == STATE_KEY_ACTIVE ||
unlock_state == STATE_BACKSPACE_ACTIVE) { unlock_state == STATE_BACKSPACE_ACTIVE) {
cairo_set_line_width(ctx, 7.0); cairo_set_line_width(ctx, RING_WIDTH);
cairo_new_sub_path(ctx); cairo_new_sub_path(ctx);
double highlight_start = (rand() % (int)(2 * M_PI * 100)) / 100.0; double highlight_start = (rand() % (int)(2 * M_PI * 100)) / 100.0;
cairo_arc(ctx, cairo_arc(ctx,

Loading…
Cancel
Save