diff options
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | xsetroot.c | 27 |
2 files changed, 28 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac index f34c3d0..13ad662 100644 --- a/configure.ac +++ b/configure.ac @@ -39,7 +39,7 @@ AC_PROG_INSTALL XORG_DEFAULT_OPTIONS # Checks for pkg-config packages -PKG_CHECK_MODULES(XSETROOT, xmuu x11 xbitmaps) +PKG_CHECK_MODULES(XSETROOT, xmuu x11 xbitmaps xcursor) AC_SUBST(XSETROOT_CFLAGS) AC_SUBST(XSETROOT_LIBS) @@ -36,6 +36,7 @@ in this Software without prior written authorization from The Open Group. #include <X11/Xutil.h> #include <X11/Xatom.h> #include <X11/Xmu/CurUtil.h> +#include <X11/Xcursor/Xcursor.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -79,6 +80,7 @@ usage(void) fprintf(stderr, " -name <string>\n"); fprintf(stderr, " -cursor <cursor file> <mask file>\n"); fprintf(stderr, " -cursor_name <cursor-font name>\n"); + fprintf(stderr, " -xcf <ARGB cursor file> <cursor size>\n"); fprintf(stderr, " -solid <color>\n"); fprintf(stderr, " -gray or -grey\n"); fprintf(stderr, " -bitmap <filename>\n"); @@ -100,6 +102,8 @@ main(int argc, char *argv[]) char *cursor_mask = NULL; char *cursor_name = NULL; char *solid_color = NULL; + char *xcf = NULL; + int xcf_size = 32; Cursor cursor; int gray = 0; char *bitmap_file = NULL; @@ -144,6 +148,16 @@ main(int argc, char *argv[]) nonexcl++; continue; } + if (!strcmp("-xcf", argv[i])) { + if (++i>=argc) usage(); + xcf = argv[i]; + if (++i>=argc) usage(); + xcf_size = atoi(argv[i]); + if (xcf_size <= 0) + xcf_size = 32; + nonexcl++; + continue; + } if (!strcmp("-fg",argv[i]) || !strcmp("-foreground",argv[i])) { if (++i>=argc) usage(); fore_color = argv[i]; @@ -223,6 +237,19 @@ main(int argc, char *argv[]) XFreeCursor (dpy, cursor); } } + if (xcf) { + XcursorImages *images = XcursorFilenameLoadImages(xcf, xcf_size); + if (!images) { + fprintf(stderr, "Invalid cursor file \"%s\"\n", xcf); + } else { + cursor = XcursorImagesLoadCursor(dpy, images); + if (cursor) + { + XDefineCursor (dpy, root, cursor); + XFreeCursor (dpy, cursor); + } + } + } /* Handle -gray and -grey options */ if (gray) { bitmap = XCreateBitmapFromData(dpy, root, gray_bits, |