1
0

Reduce -o | -n to -s

What we really want is to either output to WM_NAME or stdout. If we want
just one single line, we do slstatus | head -n 1.
This commit is contained in:
Laslo Hunhold 2017-08-10 22:22:39 +02:00 committed by Aaron Marcher
parent 4d33c36014
commit c9d47405f4
No known key found for this signature in database
GPG Key ID: 74B048E5C2474F9A
2 changed files with 13 additions and 26 deletions

View File

@ -6,7 +6,7 @@
.Nd suckless status monitor .Nd suckless status monitor
.Sh SYNOPSIS .Sh SYNOPSIS
.Nm .Nm
.Op Fl o | n .Op Fl s
.Sh DESCRIPTION .Sh DESCRIPTION
.Nm .Nm
is a suckless status monitor for window managers that use WM_NAME (e.g. dwm) or is a suckless status monitor for window managers that use WM_NAME (e.g. dwm) or
@ -16,10 +16,8 @@ By default,
outputs to WM_NAME. outputs to WM_NAME.
.Sh OPTIONS .Sh OPTIONS
.Bl -tag -width Ds .Bl -tag -width Ds
.It Fl n .It Fl s
Write to stdout once and exit. Write to stdout instead of WM_NAME.
.It Fl o
Write to stdout continuously.
.El .El
.Sh CUSTOMIZATION .Sh CUSTOMIZATION
.Nm .Nm

View File

@ -75,7 +75,6 @@ static void usage(void);
char *argv0; char *argv0;
static unsigned short int delay = 0; static unsigned short int delay = 0;
static unsigned short int done; static unsigned short int done;
static unsigned short int oflag, nflag;
static Display *dpy; static Display *dpy;
#include "config.h" #include "config.h"
@ -840,41 +839,34 @@ sighandler(const int signo)
static void static void
usage(void) usage(void)
{ {
fprintf(stderr, "usage: %s [-o | -n]\n", argv0); fprintf(stderr, "usage: %s [-s]\n", argv0);
exit(1); exit(1);
} }
int int
main(int argc, char *argv[]) main(int argc, char *argv[])
{ {
unsigned short int i;
char status_string[MAXLEN];
char *element;
struct arg argument; struct arg argument;
struct sigaction act; struct sigaction act;
size_t len; size_t i, len;
int sflag = 0;
char status_string[MAXLEN];
char *element;
ARGBEGIN { ARGBEGIN {
case 'o': case 's':
oflag = 1; sflag = 1;
break;
case 'n':
nflag = 1;
break; break;
default: default:
usage(); usage();
} ARGEND } ARGEND
if (oflag && nflag) {
usage();
}
memset(&act, 0, sizeof(act)); memset(&act, 0, sizeof(act));
act.sa_handler = sighandler; act.sa_handler = sighandler;
sigaction(SIGINT, &act, 0); sigaction(SIGINT, &act, 0);
sigaction(SIGTERM, &act, 0); sigaction(SIGTERM, &act, 0);
if (!oflag) { if (!sflag) {
dpy = XOpenDisplay(NULL); dpy = XOpenDisplay(NULL);
} }
@ -896,11 +888,8 @@ main(int argc, char *argv[])
} }
} }
if (oflag) { if (sflag) {
printf("%s\n", status_string); printf("%s\n", status_string);
} else if (nflag) {
printf("%s\n", status_string);
done = 1;
} else { } else {
XStoreName(dpy, DefaultRootWindow(dpy), status_string); XStoreName(dpy, DefaultRootWindow(dpy), status_string);
XSync(dpy, False); XSync(dpy, False);
@ -915,7 +904,7 @@ main(int argc, char *argv[])
} }
} }
if (!oflag) { if (!sflag) {
XStoreName(dpy, DefaultRootWindow(dpy), NULL); XStoreName(dpy, DefaultRootWindow(dpy), NULL);
XCloseDisplay(dpy); XCloseDisplay(dpy);
} }