Skip to content

Commit

Permalink
Consolidated X11 based code into the setroot function
Browse files Browse the repository at this point in the history
This is to make it easier to build dwmblocks without xlib so you can
use it on wayland or other x wms.
  • Loading branch information
torrinfail committed Sep 5, 2020
1 parent 13c7700 commit b7d1970
Showing 1 changed file with 25 additions and 9 deletions.
34 changes: 25 additions & 9 deletions dwmblocks.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
#include<string.h>
#include<unistd.h>
#include<signal.h>
#ifndef NO_X
#include<X11/Xlib.h>
#endif
#ifdef __OpenBSD__
#define SIGPLUS SIGUSR1+1
#define SIGMINUS SIGUSR1-1
Expand Down Expand Up @@ -31,20 +33,23 @@ void getsigcmds(unsigned int signal);
void setupsignals();
void sighandler(int signum);
int getstatus(char *str, char *last);
void setroot();
void statusloop();
void termhandler();
void pstdout();
#ifndef NO_X
void setroot();
static void (*writestatus) () = setroot;
#else
static void (*writestatus) () = pstdout;
#endif


#include "blocks.h"

static Display *dpy;
static int screen;
static Window root;
static char statusbar[LENGTH(blocks)][CMDLENGTH] = {0};
static char statusstr[2][STATUSLENGTH];
static int statusContinue = 1;
static void (*writestatus) () = setroot;
static int returnStatus = 0;

//opens process *cmd and stores output in *output
void getcmd(const Block *block, char *output)
Expand Down Expand Up @@ -116,19 +121,27 @@ int getstatus(char *str, char *last)
return strcmp(str, last);//0 if they are the same
}

#ifndef NO_X
void setroot()
{
static Display *dpy;
static int screen;
static Window root;
if (!getstatus(statusstr[0], statusstr[1]))//Only set root if text has changed.
return;
Display *d = XOpenDisplay(NULL);
if (d) {
dpy = d;
dpy = XOpenDisplay(NULL);
if (!dpy) {
fprintf(stderr, "Failed to open display\n");
statusContinue = 0;
returnStatus = 1;
return;
}
screen = DefaultScreen(dpy);
root = RootWindow(dpy, screen);
XStoreName(dpy, root, statusstr[0]);
XCloseDisplay(dpy);
}
#endif

void pstdout()
{
Expand All @@ -144,10 +157,12 @@ void statusloop()
setupsignals();
int i = 0;
getcmds(-1);
while (statusContinue)
while (1)
{
getcmds(i++);
writestatus();
if (!statusContinue)
break;
sleep(1.0);
}
}
Expand Down Expand Up @@ -185,4 +200,5 @@ int main(int argc, char** argv)
signal(SIGTERM, termhandler);
signal(SIGINT, termhandler);
statusloop();
return returnStatus;
}

0 comments on commit b7d1970

Please sign in to comment.