summaryrefslogtreecommitdiff
path: root/core/slogin/slogin.c
diff options
context:
space:
mode:
authorauric <104602845+ihateamongus@users.noreply.github.com>2025-09-08 23:22:42 -0500
committerGitHub <noreply@github.com>2025-09-08 23:22:42 -0500
commit7d56609c0b4a8ed13566cdbebd0f5828bce649e9 (patch)
tree13ce27df23dd1b3d2bc6ba70b1b91de75df44d70 /core/slogin/slogin.c
parent98dc628eee06c8929e596eb3d4c60528b5ab6b3f (diff)
parent1488b0cc488b919aa7e8f99c0ca1d49a40c8f15c (diff)
Merge pull request #21 from ihateamongus/codex/create-suckless-style-login-manager-for-x11
Add accent-aware X11 login manager
Diffstat (limited to 'core/slogin/slogin.c')
-rw-r--r--core/slogin/slogin.c57
1 files changed, 30 insertions, 27 deletions
diff --git a/core/slogin/slogin.c b/core/slogin/slogin.c
index 856585b..6a8d5fa 100644
--- a/core/slogin/slogin.c
+++ b/core/slogin/slogin.c
@@ -17,6 +17,9 @@
#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);
+ }
}