Compare commits
3 Commits
7125ea2fc1
...
13c15025df
Author | SHA1 | Date |
---|---|---|
Martin J. Klöckner | 13c15025df | |
James Pilcher | 46aa0b3719 | |
mjkloeckner | 9b5cfe7df5 |
|
@ -158,7 +158,7 @@ A FreeBSD port is available on freshports: [x11/i3lock-color/](https://www.fresh
|
|||
## Running i3lock-color
|
||||
Simply invoke the 'i3lock' command. To get out of it, enter your password and press enter.
|
||||
|
||||
A [sample script](examples/lock.sh) is included in this repository. [See the script in action](https://streamable.com/fpl46)
|
||||
A [sample script](examples/lock.sh) is included in this repository.
|
||||
|
||||
On OpenBSD the `i3lock` binary needs to be setgid `auth` to call the authentication helpers, e.g. `/usr/libexec/auth/login_passwd`.
|
||||
|
||||
|
|
28
i3lock.c
28
i3lock.c
|
@ -110,6 +110,7 @@ int internal_line_source = 0;
|
|||
float refresh_rate = 1.0;
|
||||
|
||||
bool show_clock = false;
|
||||
bool update_greeter = false;
|
||||
bool slideshow_enabled = false;
|
||||
bool always_show_clock = false;
|
||||
bool show_indicator = false;
|
||||
|
@ -198,6 +199,7 @@ char* lock_failed_text = "lock failed!";
|
|||
int keylayout_mode = -1;
|
||||
char* layout_text = NULL;
|
||||
char* greeter_text = "";
|
||||
char* greeter_cmd = "";
|
||||
|
||||
/* opts for blurring */
|
||||
bool blur = false;
|
||||
|
@ -1603,6 +1605,7 @@ int main(int argc, char *argv[]) {
|
|||
{"indicator", no_argument, NULL, 401},
|
||||
{"radius", required_argument, NULL, 402},
|
||||
{"ring-width", required_argument, NULL, 403},
|
||||
{"greeter-cmd", required_argument, NULL, 404},
|
||||
|
||||
// alignment
|
||||
{"time-align", required_argument, NULL, 500},
|
||||
|
@ -1940,6 +1943,10 @@ int main(int argc, char *argv[]) {
|
|||
fprintf(stderr, "ring-width must be a positive float; ignoring...\n");
|
||||
ring_width = 7.0;
|
||||
}
|
||||
break;
|
||||
case 404:
|
||||
update_greeter = true;
|
||||
greeter_cmd = optarg;
|
||||
break;
|
||||
|
||||
// Alignment stuff
|
||||
|
@ -2014,6 +2021,9 @@ int main(int argc, char *argv[]) {
|
|||
lock_failed_text = optarg;
|
||||
break;
|
||||
case 518:
|
||||
if (greeter_cmd) {
|
||||
errx(EXIT_FAILURE, "i3lock-color: Options greeter-text and greeter-cmd conflict.");
|
||||
}
|
||||
greeter_text = optarg;
|
||||
break;
|
||||
case 519:
|
||||
|
@ -2626,7 +2636,7 @@ int main(int argc, char *argv[]) {
|
|||
* file descriptor becomes readable). */
|
||||
ev_invoke(main_loop, xcb_check, 0);
|
||||
|
||||
if (show_clock || bar_enabled || slideshow_enabled) {
|
||||
if (show_clock || bar_enabled || slideshow_enabled || update_greeter) {
|
||||
if (redraw_thread) {
|
||||
struct timespec ts;
|
||||
double s;
|
||||
|
@ -2659,3 +2669,19 @@ int main(int argc, char *argv[]) {
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void update_greeter_text() {
|
||||
FILE *fp;
|
||||
static char file_text[128];
|
||||
|
||||
memset(file_text,0,sizeof(file_text));
|
||||
|
||||
DEBUG("greeter_cmd is: [%s]\n", greeter_cmd);
|
||||
if((fp = popen(greeter_cmd, "r")) == NULL)
|
||||
return;
|
||||
|
||||
fread(file_text, sizeof(char), sizeof(file_text), fp);
|
||||
pclose(fp);
|
||||
|
||||
greeter_text = file_text;
|
||||
}
|
||||
|
|
|
@ -109,6 +109,7 @@ extern int screen_number;
|
|||
extern float refresh_rate;
|
||||
|
||||
extern bool show_clock;
|
||||
extern bool update_greeter;
|
||||
extern bool always_show_clock;
|
||||
extern bool show_indicator;
|
||||
extern int verif_align;
|
||||
|
@ -920,6 +921,9 @@ void render_lock(uint32_t *resolution, xcb_drawable_t drawable) {
|
|||
}
|
||||
|
||||
if (greeter_text) {
|
||||
if(update_greeter) {
|
||||
update_greeter_text();
|
||||
}
|
||||
draw_data.greeter_text.show = true;
|
||||
strncpy(draw_data.greeter_text.str, greeter_text, sizeof(draw_data.greeter_text.str) - 1);
|
||||
draw_data.greeter_text.size = greeter_size;
|
||||
|
|
Loading…
Reference in New Issue