sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

dwm-xcursor-20250909-cf65f6f.diff (2815B)


      1 commit cf65f6f14e8266dd317396fe9a4ad32d768a75e5
      2 Author: iwuvkittens <iwuvkittens@cock.li>
      3 Date:   Tue Sep 9 00:18:08 2025 -0400
      4 
      5     cursor: replace font cursors with xcursor lib
      6 
      7 diff --git a/config.mk b/config.mk
      8 index b469a2b..c57985c 100644
      9 --- a/config.mk
     10 +++ b/config.mk
     11 @@ -23,7 +23,7 @@ FREETYPEINC = /usr/include/freetype2
     12 
     13  # includes and libs
     14  INCS = -I${X11INC} -I${FREETYPEINC}
     15 -LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} ${FREETYPELIBS}
     16 +LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} ${FREETYPELIBS} -lXcursor
     17 
     18  # flags
     19  CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700L -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS}
     20 diff --git a/drw.c b/drw.c
     21 index c41e6af..80d2c2d 100644
     22 --- a/drw.c
     23 +++ b/drw.c
     24 @@ -4,6 +4,7 @@
     25  #include <string.h>
     26  #include <X11/Xlib.h>
     27  #include <X11/Xft/Xft.h>
     28 +#include <X11/Xcursor/Xcursor.h>
     29 
     30  #include "drw.h"
     31  #include "util.h"
     32 @@ -425,14 +426,14 @@ drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned int *w,
     33  }
     34 
     35  Cur *
     36 -drw_cur_create(Drw *drw, int shape)
     37 +drw_cur_create(Drw *drw, const char *shape)
     38  {
     39  	Cur *cur;
     40 
     41  	if (!drw || !(cur = ecalloc(1, sizeof(Cur))))
     42  		return NULL;
     43 
     44 -	cur->cursor = XCreateFontCursor(drw->dpy, shape);
     45 +	cur->cursor = XcursorLibraryLoadCursor(drw->dpy, shape);
     46 
     47  	return cur;
     48  }
     49 diff --git a/drw.h b/drw.h
     50 index 6471431..22295a3 100644
     51 --- a/drw.h
     52 +++ b/drw.h
     53 @@ -43,7 +43,7 @@ void drw_clr_create(Drw *drw, Clr *dest, const char *clrname);
     54  Clr *drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount);
     55 
     56  /* Cursor abstraction */
     57 -Cur *drw_cur_create(Drw *drw, int shape);
     58 +Cur *drw_cur_create(Drw *drw, const char *shape);
     59  void drw_cur_free(Drw *drw, Cur *cursor);
     60 
     61  /* Drawing context manipulation */
     62 diff --git a/dwm.c b/dwm.c
     63 index 4cf07eb..15d53a7 100644
     64 --- a/dwm.c
     65 +++ b/dwm.c
     66 @@ -30,7 +30,6 @@
     67  #include <unistd.h>
     68  #include <sys/types.h>
     69  #include <sys/wait.h>
     70 -#include <X11/cursorfont.h>
     71  #include <X11/keysym.h>
     72  #include <X11/Xatom.h>
     73  #include <X11/Xlib.h>
     74 @@ -40,6 +39,7 @@
     75  #include <X11/extensions/Xinerama.h>
     76  #endif /* XINERAMA */
     77  #include <X11/Xft/Xft.h>
     78 +#include <X11/Xcursor/Xcursor.h>
     79 
     80  #include "drw.h"
     81  #include "util.h"
     82 @@ -1579,9 +1579,9 @@ setup(void)
     83  	netatom[NetWMWindowTypeDialog] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DIALOG", False);
     84  	netatom[NetClientList] = XInternAtom(dpy, "_NET_CLIENT_LIST", False);
     85  	/* init cursors */
     86 -	cursor[CurNormal] = drw_cur_create(drw, XC_left_ptr);
     87 -	cursor[CurResize] = drw_cur_create(drw, XC_sizing);
     88 -	cursor[CurMove] = drw_cur_create(drw, XC_fleur);
     89 +	cursor[CurNormal] = drw_cur_create(drw, "left_ptr");
     90 +	cursor[CurResize] = drw_cur_create(drw, "se-resize");
     91 +	cursor[CurMove]   = drw_cur_create(drw, "fleur");
     92  	/* init appearance */
     93  	scheme = ecalloc(LENGTH(colors), sizeof(Clr *));
     94  	for (i = 0; i < LENGTH(colors); i++)