remove wmfs.c
This commit is contained in:
parent
1f3ae53e9d
commit
0886bbbf5e
188
wmfs2/wmfs.c
188
wmfs2/wmfs.c
@ -1,188 +0,0 @@
|
||||
/*
|
||||
* wmfs2 by Martin Duquesnoy <xorg62@gmail.com> { for(i = 2011; i < 2111; ++i) ©(i); }
|
||||
*
|
||||
*/
|
||||
|
||||
/* Standard */
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdbool.h>
|
||||
#include <signal.h>
|
||||
#include <unistd.h>
|
||||
#include <locale.h>
|
||||
#include <sys/queue.h>
|
||||
|
||||
/* Xlib */
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xatom.h>
|
||||
#include <X11/cursorfont.h>
|
||||
|
||||
/* Macro */
|
||||
#define FREE_LIST(type, head) \
|
||||
do { \
|
||||
type *t; \
|
||||
while(!SLIST_EMPTY(&head)) { \
|
||||
t = SLIST_FIRST(&head); \
|
||||
SLIST_REMOVE_HEAD(&head, next); \
|
||||
free(t); \
|
||||
} \
|
||||
} while(/* CONSTCOND */ 0); \
|
||||
|
||||
/* Structure */
|
||||
typedef unsigned int Flags;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int x, y, w, h;
|
||||
} Geo;
|
||||
|
||||
typedef struct Tag
|
||||
{
|
||||
char *name;
|
||||
Screen *screen;
|
||||
Flags flags;
|
||||
Client *sel;
|
||||
SLIST_ENTRY(Tag) next;
|
||||
} Tag;
|
||||
|
||||
typedef struct Screen
|
||||
{
|
||||
Geo geo;
|
||||
Tag *seltag;
|
||||
SLIST_HEAD(, Tag) tags;
|
||||
SLIST_ENTRY(Screen) next;
|
||||
} Screen;
|
||||
|
||||
typedef struct Client
|
||||
{
|
||||
Tag *tag;
|
||||
Screen *screen;
|
||||
Geo *geo;
|
||||
Flags flags;
|
||||
SLIST_ENTRY(Client) next;
|
||||
} Client;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* X11 stuffs */
|
||||
Display *dpy;
|
||||
Window root;
|
||||
int xscreen;
|
||||
GC gc;
|
||||
|
||||
struct
|
||||
{
|
||||
int as, de, width, height;
|
||||
XFontSet fontset;
|
||||
} font;
|
||||
|
||||
/* Lists heads */
|
||||
struct
|
||||
{
|
||||
SLIST_HEAD(, Screen) screen;
|
||||
SLIST_HEAD(, Client) client;
|
||||
} h;
|
||||
|
||||
/*
|
||||
* Selected screen, from what you go everywhere; selected tag,
|
||||
* and then selected client.
|
||||
*/
|
||||
Screen *screen;
|
||||
|
||||
} Wmfs;
|
||||
|
||||
/* Only global variable */
|
||||
Wmfs *W;
|
||||
|
||||
/*
|
||||
* SCREEN
|
||||
*/
|
||||
void
|
||||
screen_init(void)
|
||||
{
|
||||
Geo g;
|
||||
|
||||
g.x = 0;
|
||||
g.y = 0;
|
||||
g.w = DisplayWidth(W->dpy, W->xscreen);
|
||||
g.h = DisplayHeight(W->dpy, W->xscreen);
|
||||
|
||||
SLIST_INIT(&W->h.screen);
|
||||
|
||||
screen_new(g);
|
||||
}
|
||||
|
||||
Screen*
|
||||
screen_new(Geo g)
|
||||
{
|
||||
Screen *s = calloc(sizeof(Screen));
|
||||
|
||||
s->geo = g;
|
||||
s->seltag = NULL;
|
||||
|
||||
SLIST_INIT(&s->tags);
|
||||
|
||||
SLIST_INSERT_HEAD(s, &W->h.screen, next);
|
||||
|
||||
W->screen = s;
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
void
|
||||
screen_free(void)
|
||||
{
|
||||
FREE_LIST(Screen, W->h.screen);
|
||||
}
|
||||
|
||||
/*
|
||||
* INIT
|
||||
*/
|
||||
void
|
||||
init(void)
|
||||
{
|
||||
/* X init */
|
||||
W->xscreen = DefaultScreen(W->dpy);
|
||||
W->gc = DefaultGC(W->dpy, W->xscreen);
|
||||
W->root = RootWindow(dpy, W->xscreen);
|
||||
|
||||
/* Screen init */
|
||||
screen_init();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void
|
||||
quit(void)
|
||||
{
|
||||
/* X stuffs */
|
||||
XCloseDisplay(W->dpy);
|
||||
XFreeGC(W->gc);
|
||||
XFreeFontSet(dpy, W->font.fontset);
|
||||
|
||||
screen_free();
|
||||
|
||||
free(W);
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
|
||||
W = calloc(sizeof(Wmfs));
|
||||
|
||||
|
||||
/* Get X display */
|
||||
if(!(W->dpy = XOpenDisplay(NULL)))
|
||||
{
|
||||
fprintf(stderr, "%s: Can't open X server\n", argv[0]);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
init();
|
||||
|
||||
quit();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user