Remove status and datetime modules
This commit is contained in:
parent
e4b0adecb7
commit
77616c75b2
4
Makefile
4
Makefile
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
include config.mk
|
include config.mk
|
||||||
|
|
||||||
SRC = atoms.c datetime.c drw.c dwm.c settings.c status.c tags.c util.c
|
SRC = atoms.c drw.c dwm.c settings.c tags.c util.c
|
||||||
OBJ = ${SRC:.c=.o}
|
OBJ = ${SRC:.c=.o}
|
||||||
|
|
||||||
all: options dwm
|
all: options dwm
|
||||||
|
@ -17,7 +17,7 @@ options:
|
||||||
%.o: %.c
|
%.o: %.c
|
||||||
${CC} -c $< -o $@ ${CFLAGS}
|
${CC} -c $< -o $@ ${CFLAGS}
|
||||||
|
|
||||||
${OBJ}: atoms.h datetime.h drw.h config.def.h config.mk settings.h status.h tags.h util.h
|
${OBJ}: atoms.h drw.h config.def.h config.mk settings.h tags.h util.h
|
||||||
|
|
||||||
dwm: ${OBJ}
|
dwm: ${OBJ}
|
||||||
${CC} -o $@ ${OBJ} ${LDFLAGS}
|
${CC} -o $@ ${OBJ} ${LDFLAGS}
|
||||||
|
|
1
atoms.c
1
atoms.c
|
@ -26,7 +26,6 @@ Atoms atoms_create(Display *const dpy)
|
||||||
atoms->netatom[NetWMWindowType] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False);
|
atoms->netatom[NetWMWindowType] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False);
|
||||||
atoms->netatom[NetWMWindowTypeDialog] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DIALOG", False);
|
atoms->netatom[NetWMWindowTypeDialog] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DIALOG", False);
|
||||||
atoms->netatom[NetClientList] = XInternAtom(dpy, "_NET_CLIENT_LIST", False);
|
atoms->netatom[NetClientList] = XInternAtom(dpy, "_NET_CLIENT_LIST", False);
|
||||||
atoms->netatom[NetStatusUpdate] = XInternAtom(dpy, "_NET_STATUS_UPDATE", False);
|
|
||||||
|
|
||||||
atoms->xatom[Manager] = XInternAtom(dpy, "MANAGER", False);
|
atoms->xatom[Manager] = XInternAtom(dpy, "MANAGER", False);
|
||||||
atoms->xatom[Xembed] = XInternAtom(dpy, "_XEMBED", False);
|
atoms->xatom[Xembed] = XInternAtom(dpy, "_XEMBED", False);
|
||||||
|
|
2
atoms.h
2
atoms.h
|
@ -8,7 +8,7 @@ enum {
|
||||||
NetSupported, NetWMName, NetWMState, NetWMCheck, NetSystemTray,
|
NetSupported, NetWMName, NetWMState, NetWMCheck, NetSystemTray,
|
||||||
NetSystemTrayOP, NetSystemTrayOrientation, NetSystemTrayOrientationHorz,
|
NetSystemTrayOP, NetSystemTrayOrientation, NetSystemTrayOrientationHorz,
|
||||||
NetWMFullscreen, NetActiveWindow, NetWMWindowType, NetWMWindowTypeDialog,
|
NetWMFullscreen, NetActiveWindow, NetWMWindowType, NetWMWindowTypeDialog,
|
||||||
NetClientList, NetStatusUpdate, NetLast,
|
NetClientList, NetLast,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Xembed atoms */
|
/* Xembed atoms */
|
||||||
|
|
|
@ -32,7 +32,7 @@ FREETYPEINC = /usr/include/freetype2
|
||||||
|
|
||||||
# includes and libs
|
# includes and libs
|
||||||
INCS = -I${X11INC} -I${FREETYPEINC}
|
INCS = -I${X11INC} -I${FREETYPEINC}
|
||||||
LIBS = -L${X11LIB} -lX11 -lpthread ${XINERAMALIBS} ${FREETYPELIBS}
|
LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} ${FREETYPELIBS}
|
||||||
|
|
||||||
# flags
|
# flags
|
||||||
CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_POSIX_C_SOURCE=200809L -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS}
|
CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_POSIX_C_SOURCE=200809L -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS}
|
||||||
|
|
81
datetime.c
81
datetime.c
|
@ -1,81 +0,0 @@
|
||||||
#include "datetime.h"
|
|
||||||
|
|
||||||
#include "atoms.h"
|
|
||||||
#include "status.h"
|
|
||||||
|
|
||||||
#include <pthread.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
static void datetime_lock();
|
|
||||||
static void datetime_unlock();
|
|
||||||
static void *run(void *vargp);
|
|
||||||
|
|
||||||
static const char *const default_text = "date & time";
|
|
||||||
|
|
||||||
static pthread_mutex_t mutex;
|
|
||||||
static bool running = false;
|
|
||||||
|
|
||||||
static pthread_t thread;
|
|
||||||
static bool thread_created = false;
|
|
||||||
|
|
||||||
static char buffer[DATETIME_BUFFER_SIZE];
|
|
||||||
|
|
||||||
void datetime_lock()
|
|
||||||
{
|
|
||||||
pthread_mutex_lock(&mutex);
|
|
||||||
}
|
|
||||||
|
|
||||||
void datetime_unlock()
|
|
||||||
{
|
|
||||||
pthread_mutex_unlock(&mutex);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool datetime_start()
|
|
||||||
{
|
|
||||||
datetime_lock();
|
|
||||||
|
|
||||||
if (running) return false;
|
|
||||||
|
|
||||||
running = true;
|
|
||||||
strcpy(buffer, default_text);
|
|
||||||
|
|
||||||
thread_created = pthread_create(&thread, NULL, run, NULL) == 0;
|
|
||||||
|
|
||||||
datetime_unlock();
|
|
||||||
|
|
||||||
return thread_created;
|
|
||||||
}
|
|
||||||
|
|
||||||
void datetime_stop()
|
|
||||||
{
|
|
||||||
datetime_lock();
|
|
||||||
|
|
||||||
if (!running) return;
|
|
||||||
|
|
||||||
running = false;
|
|
||||||
if (thread_created) pthread_join(thread, NULL);
|
|
||||||
|
|
||||||
datetime_unlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
void *run(void *vargp)
|
|
||||||
{
|
|
||||||
while (running) {
|
|
||||||
time_t raw_time;
|
|
||||||
time(&raw_time);
|
|
||||||
|
|
||||||
const struct tm *const time_info = localtime(&raw_time);
|
|
||||||
|
|
||||||
datetime_lock();
|
|
||||||
strftime(buffer, sizeof(buffer), "%a, %e %b %Y, %H:%M:%S", time_info);
|
|
||||||
datetime_unlock();
|
|
||||||
|
|
||||||
status_set_datetime(buffer);
|
|
||||||
|
|
||||||
sleep(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
11
datetime.h
11
datetime.h
|
@ -1,11 +0,0 @@
|
||||||
#ifndef _DATETIME_H
|
|
||||||
#define _DATETIME_H
|
|
||||||
|
|
||||||
#include <stdbool.h>
|
|
||||||
|
|
||||||
#define DATETIME_BUFFER_SIZE 32
|
|
||||||
|
|
||||||
bool datetime_start();
|
|
||||||
void datetime_stop();
|
|
||||||
|
|
||||||
#endif // _DATETIME_H
|
|
43
dwm.c
43
dwm.c
|
@ -42,10 +42,8 @@
|
||||||
#include <X11/Xft/Xft.h>
|
#include <X11/Xft/Xft.h>
|
||||||
|
|
||||||
#include "atoms.h"
|
#include "atoms.h"
|
||||||
#include "datetime.h"
|
|
||||||
#include "drw.h"
|
#include "drw.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
#include "status.h"
|
|
||||||
#include "tags.h"
|
#include "tags.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
|
@ -255,7 +253,6 @@ static int updategeom(void);
|
||||||
static void updatenumlockmask(void);
|
static void updatenumlockmask(void);
|
||||||
static void updatesizehints(Client *c);
|
static void updatesizehints(Client *c);
|
||||||
static void updatestatus(void);
|
static void updatestatus(void);
|
||||||
static void updatestatusexternal(void);
|
|
||||||
static void updatesystray(void);
|
static void updatesystray(void);
|
||||||
static void updatesystrayicongeom(Client *i, int w, int h);
|
static void updatesystrayicongeom(Client *i, int w, int h);
|
||||||
static void updatesystrayiconstate(Client *i, XPropertyEvent *ev);
|
static void updatesystrayiconstate(Client *i, XPropertyEvent *ev);
|
||||||
|
@ -692,11 +689,6 @@ clientmessage(XEvent *e)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cme->message_type == atoms->netatom[NetStatusUpdate]) {
|
|
||||||
updatestatus(); // TODO: maybe we need some filtering
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!c) return;
|
if (!c) return;
|
||||||
|
|
||||||
if (cme->message_type == atoms->netatom[NetWMState]) {
|
if (cme->message_type == atoms->netatom[NetWMState]) {
|
||||||
|
@ -1593,7 +1585,7 @@ propertynotify(XEvent *e)
|
||||||
updatesystray();
|
updatesystray();
|
||||||
}
|
}
|
||||||
if ((ev->window == root) && (ev->atom == XA_WM_NAME))
|
if ((ev->window == root) && (ev->atom == XA_WM_NAME))
|
||||||
updatestatusexternal();
|
updatestatus();
|
||||||
else if (ev->state == PropertyDelete)
|
else if (ev->state == PropertyDelete)
|
||||||
return; /* ignore */
|
return; /* ignore */
|
||||||
else if ((c = wintoclient(ev->window))) {
|
else if ((c = wintoclient(ev->window))) {
|
||||||
|
@ -2002,6 +1994,7 @@ setup(void)
|
||||||
updategeom();
|
updategeom();
|
||||||
/* init atoms */
|
/* init atoms */
|
||||||
atoms = atoms_create(dpy);
|
atoms = atoms_create(dpy);
|
||||||
|
if (atoms == NULL) die("dwm: fatal: cannot allocate atoms");
|
||||||
/* init cursors */
|
/* init cursors */
|
||||||
cursor[CurNormal] = drw_cur_create(drw, XC_left_ptr);
|
cursor[CurNormal] = drw_cur_create(drw, XC_left_ptr);
|
||||||
cursor[CurResize] = drw_cur_create(drw, XC_sizing);
|
cursor[CurResize] = drw_cur_create(drw, XC_sizing);
|
||||||
|
@ -2014,7 +2007,7 @@ setup(void)
|
||||||
updatesystray();
|
updatesystray();
|
||||||
/* init bars */
|
/* init bars */
|
||||||
updatebars();
|
updatebars();
|
||||||
updatestatusexternal();
|
updatestatus();
|
||||||
/* supporting window for NetWMCheck */
|
/* supporting window for NetWMCheck */
|
||||||
wmcheckwin = XCreateSimpleWindow(dpy, root, 0, 0, 1, 1, 0, 0, 0);
|
wmcheckwin = XCreateSimpleWindow(dpy, root, 0, 0, 1, 1, 0, 0, 0);
|
||||||
XChangeProperty(dpy, wmcheckwin, atoms->netatom[NetWMCheck], XA_WINDOW, 32,
|
XChangeProperty(dpy, wmcheckwin, atoms->netatom[NetWMCheck], XA_WINDOW, 32,
|
||||||
|
@ -2490,9 +2483,9 @@ updatesizehints(Client *c)
|
||||||
void
|
void
|
||||||
updatestatus(void)
|
updatestatus(void)
|
||||||
{
|
{
|
||||||
status_lock();
|
if (!gettextprop(root, XA_WM_NAME, stext, sizeof(stext))) {
|
||||||
sprintf(stext, "%s", status_get());
|
strcpy(stext, "dwm-"VERSION);
|
||||||
status_unlock();
|
}
|
||||||
|
|
||||||
for (Monitor *m = mons; m; m = m->next) {
|
for (Monitor *m = mons; m; m = m->next) {
|
||||||
drawbar(m);
|
drawbar(m);
|
||||||
|
@ -2501,18 +2494,6 @@ updatestatus(void)
|
||||||
updatesystray();
|
updatesystray();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
updatestatusexternal(void)
|
|
||||||
{
|
|
||||||
char buffer[256];
|
|
||||||
|
|
||||||
if (!gettextprop(root, XA_WM_NAME, buffer, sizeof(buffer))) {
|
|
||||||
sprintf(buffer, "dwm-"VERSION);
|
|
||||||
}
|
|
||||||
|
|
||||||
status_set_external(buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
updatesystrayicongeom(Client *i, int w, int h)
|
updatesystrayicongeom(Client *i, int w, int h)
|
||||||
{
|
{
|
||||||
|
@ -2881,16 +2862,6 @@ main(int argc, char *argv[])
|
||||||
|
|
||||||
checkotherwm();
|
checkotherwm();
|
||||||
|
|
||||||
if (!status_start()) {
|
|
||||||
status_stop();
|
|
||||||
die("dwm: cannot start status service");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!datetime_start()) {
|
|
||||||
datetime_stop();
|
|
||||||
die("dwm: cannot start datetime service");
|
|
||||||
}
|
|
||||||
|
|
||||||
setup();
|
setup();
|
||||||
|
|
||||||
#ifdef __OpenBSD__
|
#ifdef __OpenBSD__
|
||||||
|
@ -2902,8 +2873,6 @@ main(int argc, char *argv[])
|
||||||
scan();
|
scan();
|
||||||
run();
|
run();
|
||||||
cleanup();
|
cleanup();
|
||||||
datetime_stop();
|
|
||||||
status_stop();
|
|
||||||
XCloseDisplay(dpy);
|
XCloseDisplay(dpy);
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
|
|
120
status.c
120
status.c
|
@ -1,120 +0,0 @@
|
||||||
#include "status.h"
|
|
||||||
|
|
||||||
#include "atoms.h"
|
|
||||||
#include "datetime.h"
|
|
||||||
|
|
||||||
#include <pthread.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <X11/Xlib.h>
|
|
||||||
|
|
||||||
#define EXTERNAL_BUFFER_SIZE 256
|
|
||||||
|
|
||||||
#define BUFFER_SIZE (EXTERNAL_BUFFER_SIZE + 3 + DATETIME_BUFFER_SIZE)
|
|
||||||
|
|
||||||
static void update();
|
|
||||||
|
|
||||||
static pthread_mutex_t mutex;
|
|
||||||
static bool running = false;
|
|
||||||
|
|
||||||
static Display *display = None;
|
|
||||||
static Atoms atoms = NULL;
|
|
||||||
|
|
||||||
static char buffer[BUFFER_SIZE];
|
|
||||||
static char external_buffer[EXTERNAL_BUFFER_SIZE];
|
|
||||||
static char datetime_buffer[DATETIME_BUFFER_SIZE];
|
|
||||||
|
|
||||||
void status_lock()
|
|
||||||
{
|
|
||||||
pthread_mutex_lock(&mutex);
|
|
||||||
}
|
|
||||||
|
|
||||||
void status_unlock()
|
|
||||||
{
|
|
||||||
pthread_mutex_unlock(&mutex);
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *status_get()
|
|
||||||
{
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool status_start()
|
|
||||||
{
|
|
||||||
status_lock();
|
|
||||||
|
|
||||||
if (running) return false;
|
|
||||||
|
|
||||||
running = true;
|
|
||||||
|
|
||||||
memset(buffer, 0, sizeof(buffer));
|
|
||||||
memset(external_buffer, 0, sizeof(external_buffer));
|
|
||||||
memset(datetime_buffer, 0, sizeof(datetime_buffer));
|
|
||||||
|
|
||||||
if ((display = XOpenDisplay(NULL)) == NULL) return false;
|
|
||||||
if ((atoms = atoms_create(display)) == NULL) return false;
|
|
||||||
|
|
||||||
status_unlock();
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void status_stop()
|
|
||||||
{
|
|
||||||
status_lock();
|
|
||||||
|
|
||||||
if (!running) return;
|
|
||||||
|
|
||||||
running = false;
|
|
||||||
if (atoms != NULL) atoms_destroy(atoms);
|
|
||||||
if (display != None) XCloseDisplay(display);
|
|
||||||
|
|
||||||
status_unlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
void status_set_external(const char *const text)
|
|
||||||
{
|
|
||||||
status_lock();
|
|
||||||
|
|
||||||
strncpy(external_buffer, text, EXTERNAL_BUFFER_SIZE);
|
|
||||||
external_buffer[EXTERNAL_BUFFER_SIZE - 1] = '\0';
|
|
||||||
update();
|
|
||||||
|
|
||||||
status_unlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
void status_set_datetime(const char *const text)
|
|
||||||
{
|
|
||||||
status_lock();
|
|
||||||
|
|
||||||
strncpy(datetime_buffer, text, DATETIME_BUFFER_SIZE);
|
|
||||||
datetime_buffer[DATETIME_BUFFER_SIZE - 1] = '\0';
|
|
||||||
update();
|
|
||||||
|
|
||||||
status_unlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void update()
|
|
||||||
{
|
|
||||||
sprintf(buffer, "%s | %s", external_buffer, datetime_buffer);
|
|
||||||
|
|
||||||
XEvent event;
|
|
||||||
memset(&event, 0, sizeof(event));
|
|
||||||
event.xclient.type = ClientMessage;
|
|
||||||
event.xclient.serial = 0;
|
|
||||||
event.xclient.send_event = True;
|
|
||||||
event.xclient.display = display;
|
|
||||||
event.xclient.window = DefaultRootWindow(display);
|
|
||||||
event.xclient.message_type = atoms->netatom[NetStatusUpdate];
|
|
||||||
event.xclient.format = 32;
|
|
||||||
|
|
||||||
XSendEvent(
|
|
||||||
display,
|
|
||||||
event.xclient.window,
|
|
||||||
False,
|
|
||||||
SubstructureRedirectMask | SubstructureNotifyMask,
|
|
||||||
&event
|
|
||||||
);
|
|
||||||
|
|
||||||
XFlush(display);
|
|
||||||
}
|
|
15
status.h
15
status.h
|
@ -1,15 +0,0 @@
|
||||||
#ifndef _STATUS_H
|
|
||||||
#define _STATUS_H
|
|
||||||
|
|
||||||
#include <stdbool.h>
|
|
||||||
|
|
||||||
bool status_start();
|
|
||||||
void status_stop();
|
|
||||||
void status_lock();
|
|
||||||
void status_unlock();
|
|
||||||
const char *status_get();
|
|
||||||
|
|
||||||
void status_set_external(const char *text);
|
|
||||||
void status_set_datetime(const char *text);
|
|
||||||
|
|
||||||
#endif // _STATUS_H
|
|
Loading…
Reference in New Issue