mirror of
https://github.com/Raymo111/i3lock-color.git
synced 2024-11-11 13:50:52 -05:00
Added CLI options for date/time font and clock text color
This commit is contained in:
parent
f0f1a48edf
commit
2193acef3b
2 changed files with 45 additions and 2 deletions
30
i3lock.c
30
i3lock.c
|
@ -66,6 +66,7 @@ char ringwrongcolor[9] = "7d3300ff";
|
|||
char ringcolor[9] = "337d00ff";
|
||||
char linecolor[9] = "000000ff";
|
||||
char textcolor[9] = "000000ff";
|
||||
char clockcolor[9] = "000000ff";
|
||||
char keyhlcolor[9] = "33db00ff";
|
||||
char bshlcolor[9] = "db3300ff";
|
||||
char separatorcolor[9] = "000000ff";
|
||||
|
@ -82,6 +83,8 @@ bool show_clock = false;
|
|||
*/
|
||||
char time_format[32] = "%H:%M:%S\0";
|
||||
char date_format[32] = "%A, %m %Y\0";
|
||||
char time_font[32] = "sans-serif\0";
|
||||
char date_font[32] = "sans-serif\0";
|
||||
|
||||
/* opts for blurring */
|
||||
bool blur = false;
|
||||
|
@ -888,6 +891,7 @@ int main(int argc, char *argv[]) {
|
|||
{"ringcolor", required_argument, NULL, 0}, // --r-c
|
||||
{"linecolor", required_argument, NULL, 0}, // --l-c
|
||||
{"textcolor", required_argument, NULL, 0}, // --t-c
|
||||
{"clockcolor", required_argument, NULL, 0}, // --c-c
|
||||
{"keyhlcolor", required_argument, NULL, 0}, // --k-c
|
||||
{"bshlcolor", required_argument, NULL, 0}, // --b-c
|
||||
{"separatorcolor", required_argument, NULL, 0},
|
||||
|
@ -899,6 +903,8 @@ int main(int argc, char *argv[]) {
|
|||
{"clock", no_argument, NULL, 'k'},
|
||||
{"timestr", required_argument, NULL, 0},
|
||||
{"datestr", required_argument, NULL, 0},
|
||||
{"timefont", required_argument, NULL, 0},
|
||||
{"datefont", required_argument, NULL, 0},
|
||||
|
||||
{"blur", required_argument, NULL, 'B'},
|
||||
|
||||
|
@ -1069,6 +1075,16 @@ int main(int argc, char *argv[]) {
|
|||
if (strlen(arg) != 8 || sscanf(arg, "%08[0-9a-fA-F]", textcolor) != 1)
|
||||
errx(1, "textcolor is invalid, color must be given in 8-byte format: rrggbb\n");
|
||||
}
|
||||
else if (strcmp(longopts[optind].name, "clockcolor") == 0) {
|
||||
char *arg = optarg;
|
||||
|
||||
/* Skip # if present */
|
||||
if (arg[0] == '#')
|
||||
arg++;
|
||||
|
||||
if (strlen(arg) != 8 || sscanf(arg, "%08[0-9a-fA-F]", clockcolor) != 1)
|
||||
errx(1, "clockcolor is invalid, color must be given in 8-byte format: rrggbb\n");
|
||||
}
|
||||
else if (strcmp(longopts[optind].name, "keyhlcolor") == 0) {
|
||||
char *arg = optarg;
|
||||
|
||||
|
@ -1113,6 +1129,20 @@ int main(int argc, char *argv[]) {
|
|||
}
|
||||
strcpy(date_format,optarg);
|
||||
}
|
||||
else if (strcmp(longopts[optind].name, "timefont") == 0) {
|
||||
//read in to time_font
|
||||
if (strlen(optarg) > 31) {
|
||||
errx(1, "time font string can be at most 31 characters");
|
||||
}
|
||||
strcpy(time_font,optarg);
|
||||
}
|
||||
else if (strcmp(longopts[optind].name, "datefont") == 0) {
|
||||
//read in to date_font
|
||||
if (strlen(optarg) > 31) {
|
||||
errx(1, "date font string can be at most 31 characters");
|
||||
}
|
||||
strcpy(date_font,optarg);
|
||||
}
|
||||
break;
|
||||
case 'f':
|
||||
show_failed_attempts = true;
|
||||
|
|
|
@ -67,6 +67,7 @@ extern char ringwrongcolor[9];
|
|||
extern char ringcolor[9];
|
||||
extern char linecolor[9];
|
||||
extern char textcolor[9];
|
||||
extern char clockcolor[9];
|
||||
extern char keyhlcolor[9];
|
||||
extern char bshlcolor[9];
|
||||
extern char separatorcolor[9];
|
||||
|
@ -77,6 +78,8 @@ extern int screen_number;
|
|||
extern bool show_clock;
|
||||
extern char time_format[32];
|
||||
extern char date_format[32];
|
||||
extern char time_font[32];
|
||||
extern char date_font[32];
|
||||
/* Whether the failed attempts should be displayed. */
|
||||
extern bool show_failed_attempts;
|
||||
/* Number of failed unlock attempts. */
|
||||
|
@ -229,6 +232,14 @@ xcb_pixmap_t draw_image(uint32_t *resolution) {
|
|||
(strtol(strgroupst[1], NULL, 16)),
|
||||
(strtol(strgroupst[2], NULL, 16)),
|
||||
(strtol(strgroupst[3], NULL, 16))};
|
||||
char strgroupsc[4][3] = {{clockcolor[0], clockcolor[1], '\0'},
|
||||
{clockcolor[2], clockcolor[3], '\0'},
|
||||
{clockcolor[4], clockcolor[5], '\0'},
|
||||
{clockcolor[6], clockcolor[7], '\0'}};
|
||||
uint32_t clock16[4] = {(strtol(strgroupsc[0], NULL, 16)),
|
||||
(strtol(strgroupsc[1], NULL, 16)),
|
||||
(strtol(strgroupsc[2], NULL, 16)),
|
||||
(strtol(strgroupsc[3], NULL, 16))};
|
||||
char strgroupsk[4][3] = {{keyhlcolor[0], keyhlcolor[1], '\0'},
|
||||
{keyhlcolor[2], keyhlcolor[3], '\0'},
|
||||
{keyhlcolor[4], keyhlcolor[5], '\0'},
|
||||
|
@ -385,6 +396,8 @@ xcb_pixmap_t draw_image(uint32_t *resolution) {
|
|||
cairo_text_extents_t extents;
|
||||
double x, y;
|
||||
|
||||
cairo_select_font_face(ctx, time_font, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
|
||||
cairo_set_source_rgba(ctx, (double)clock16[0]/255, (double)clock16[1]/255, (double)clock16[2]/255, (double)clock16[3]/255);
|
||||
cairo_text_extents(ctx, text, &extents);
|
||||
x = BUTTON_CENTER - ((extents.width / 2) + extents.x_bearing);
|
||||
if (date) {
|
||||
|
@ -402,8 +415,8 @@ xcb_pixmap_t draw_image(uint32_t *resolution) {
|
|||
cairo_text_extents_t extents;
|
||||
double x, y;
|
||||
|
||||
// TODO: different date/time colors
|
||||
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, date_font, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
|
||||
cairo_set_source_rgba(ctx, (double)clock16[0]/255, (double)clock16[1]/255, (double)clock16[2]/255, (double)clock16[3]/255);
|
||||
cairo_set_font_size(ctx, 14.0);
|
||||
|
||||
cairo_text_extents(ctx, date, &extents);
|
||||
|
|
Loading…
Reference in a new issue