summaryrefslogtreecommitdiff
path: root/slogin
diff options
context:
space:
mode:
Diffstat (limited to 'slogin')
-rw-r--r--slogin/slogin.c59
1 files changed, 31 insertions, 28 deletions
diff --git a/slogin/slogin.c b/slogin/slogin.c
index 856585b..205fd32 100644
--- a/slogin/slogin.c
+++ b/slogin/slogin.c
@@ -12,11 +12,14 @@
#include <string.h>
#include <unistd.h>
#include <crypt.h>
-#include "../accent.h"
+#include "../core/accent.h"
#define WIDTH 400
#define HEIGHT 100
+static ColorShm *accentshm;
+static char accentcol[8] = "#005577";
+
static int
auth(const char *user, const char *pass)
{
@@ -57,6 +60,17 @@ draw(Display *dpy, Window win, GC gc, const char *prompt,
XFlush(dpy);
}
+static void
+updateaccent(Display *dpy, Colormap cmap, GC gc, Window win)
+{
+ XColor col;
+ readaccent(&accentshm, accentcol);
+ XParseColor(dpy, cmap, accentcol, &col);
+ XAllocColor(dpy, cmap, &col);
+ XSetForeground(dpy, gc, col.pixel);
+ XSetWindowBorder(dpy, win, col.pixel);
+}
+
int
main(void)
{
@@ -66,30 +80,24 @@ main(void)
GC gc;
XFontStruct *font;
int screen;
- Colormap cmap;
- XColor xcol;
- ColorShm *blk = NULL;
- char accent[8] = "#005577";
+ Colormap cmap;
if (!(dpy = XOpenDisplay(NULL))) {
fprintf(stderr, "slogin: cannot open display\n");
return 1;
}
- readaccent(&blk, accent);
- screen = DefaultScreen(dpy);
- cmap = DefaultColormap(dpy, screen);
- XParseColor(dpy, cmap, accent, &xcol);
- XAllocColor(dpy, cmap, &xcol);
- win = XCreateSimpleWindow(dpy, RootWindow(dpy, screen),
- DisplayWidth(dpy, screen)/2 - WIDTH/2,
- DisplayHeight(dpy, screen)/2 - HEIGHT/2,
- WIDTH, HEIGHT, 2, xcol.pixel, BlackPixel(dpy, screen));
- XStoreName(dpy, win, "slogin");
- XSelectInput(dpy, win, ExposureMask | KeyPressMask);
- XMapRaised(dpy, win);
- gc = XCreateGC(dpy, win, 0, NULL);
- XSetForeground(dpy, gc, xcol.pixel);
- font = XLoadQueryFont(dpy, "fixed");
+ screen = DefaultScreen(dpy);
+ cmap = DefaultColormap(dpy, screen);
+ win = XCreateSimpleWindow(dpy, RootWindow(dpy, screen),
+ DisplayWidth(dpy, screen)/2 - WIDTH/2,
+ DisplayHeight(dpy, screen)/2 - HEIGHT/2,
+ WIDTH, HEIGHT, 2, BlackPixel(dpy, screen), BlackPixel(dpy, screen));
+ XStoreName(dpy, win, "slogin");
+ XSelectInput(dpy, win, ExposureMask | KeyPressMask);
+ gc = XCreateGC(dpy, win, 0, NULL);
+ updateaccent(dpy, cmap, gc, win);
+ XMapRaised(dpy, win);
+ font = XLoadQueryFont(dpy, "fixed");
if (font)
XSetFont(dpy, gc, font->fid);
@@ -155,12 +163,7 @@ main(void)
}
}
}
- if (readaccent(&blk, accent)) {
- XParseColor(dpy, cmap, accent, &xcol);
- XAllocColor(dpy, cmap, &xcol);
- XSetForeground(dpy, gc, xcol.pixel);
- XSetWindowBorder(dpy, win, xcol.pixel);
- }
- usleep(20000);
- }
+ updateaccent(dpy, cmap, gc, win);
+ usleep(20000);
+ }
}