hit it with the knf stick.
This commit is contained in:
parent
a101e9a0c8
commit
26beb05af2
@ -17,7 +17,7 @@ DESCRIPTION
|
||||
base of evilwm did not accomodate well for the new features added.
|
||||
So calmwm was written from scratch.
|
||||
|
||||
Its main goal is to be as efficient as possible, while providing
|
||||
Its main goal is to be as efficient as possible, while providing
|
||||
a very clean, simple & attractive aesthetic.
|
||||
|
||||
cwm has several novel features, including the ability to search
|
||||
|
@ -9,7 +9,7 @@
|
||||
register handlers, with the ability to select, for example,
|
||||
a window, or an event, etc. (no, maybe not...)
|
||||
|
||||
- ignoreq, always lower them. perhaps implement by lowering the entire
|
||||
- ignoreq, always lower them. perhaps implement by lowering the entire
|
||||
queue on each XLower...
|
||||
|
||||
- search window should try to stay inside of the screen boundaries.
|
||||
|
@ -15,7 +15,7 @@
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* $Id: calmwm.c,v 1.15 2008/04/15 18:22:08 okan Exp $
|
||||
* $Id: calmwm.c,v 1.16 2008/04/15 20:24:41 oga Exp $
|
||||
*/
|
||||
|
||||
#include "headers.h"
|
||||
@ -38,7 +38,7 @@ struct client_ctx_q Clientq;
|
||||
int Doshape, Shape_ev;
|
||||
int Starting;
|
||||
struct conf Conf;
|
||||
struct fontdesc *DefaultFont = NULL;
|
||||
struct fontdesc *DefaultFont = NULL;
|
||||
|
||||
/* From TWM */
|
||||
#define gray_width 2
|
||||
@ -46,7 +46,7 @@ struct fontdesc *DefaultFont = NULL;
|
||||
static char gray_bits[] = {0x02, 0x01};
|
||||
|
||||
|
||||
static void _sigchld_cb(int);
|
||||
static void _sigchld_cb(int);
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
@ -72,11 +72,11 @@ main(int argc, char **argv)
|
||||
argv += optind;
|
||||
|
||||
/* Ignore a few signals. */
|
||||
if (signal(SIGPIPE, SIG_IGN) == SIG_ERR)
|
||||
err(1, "signal");
|
||||
if (signal(SIGPIPE, SIG_IGN) == SIG_ERR)
|
||||
err(1, "signal");
|
||||
|
||||
if (signal(SIGCHLD, _sigchld_cb) == SIG_ERR)
|
||||
err(1, "signal");
|
||||
if (signal(SIGCHLD, _sigchld_cb) == SIG_ERR)
|
||||
err(1, "signal");
|
||||
|
||||
group_init();
|
||||
|
||||
@ -176,16 +176,16 @@ x_setupscreen(struct screen_ctx *sc, u_int which)
|
||||
sc->redpixl = sc->redcolor.pixel;
|
||||
sc->cyanpixl = sc->cyancolor.pixel;
|
||||
|
||||
sc->gray = XCreatePixmapFromBitmapData(X_Dpy, sc->rootwin,
|
||||
gray_bits, gray_width, gray_height,
|
||||
sc->blackpixl, sc->whitepixl, DefaultDepth(X_Dpy, sc->which));
|
||||
sc->gray = XCreatePixmapFromBitmapData(X_Dpy, sc->rootwin,
|
||||
gray_bits, gray_width, gray_height,
|
||||
sc->blackpixl, sc->whitepixl, DefaultDepth(X_Dpy, sc->which));
|
||||
|
||||
sc->blue = XCreatePixmapFromBitmapData(X_Dpy, sc->rootwin,
|
||||
gray_bits, gray_width, gray_height,
|
||||
sc->bluepixl, sc->whitepixl, DefaultDepth(X_Dpy, sc->which));
|
||||
sc->blue = XCreatePixmapFromBitmapData(X_Dpy, sc->rootwin,
|
||||
gray_bits, gray_width, gray_height,
|
||||
sc->bluepixl, sc->whitepixl, DefaultDepth(X_Dpy, sc->which));
|
||||
|
||||
sc->red = XCreatePixmapFromBitmapData(X_Dpy, sc->rootwin,
|
||||
gray_bits, gray_width, gray_height,
|
||||
sc->red = XCreatePixmapFromBitmapData(X_Dpy, sc->rootwin,
|
||||
gray_bits, gray_width, gray_height,
|
||||
sc->redpixl, sc->whitepixl, DefaultDepth(X_Dpy, sc->which));
|
||||
|
||||
gv.foreground = sc->blackpixl^sc->whitepixl;
|
||||
@ -216,7 +216,7 @@ x_setupscreen(struct screen_ctx *sc, u_int which)
|
||||
search_init(sc);
|
||||
|
||||
/* Deal with existing clients. */
|
||||
XQueryTree(X_Dpy, sc->rootwin, &w0, &w1, &wins, &nwins);
|
||||
XQueryTree(X_Dpy, sc->rootwin, &w0, &w1, &wins, &nwins);
|
||||
|
||||
for (i = 0; i < nwins; i++) {
|
||||
XGetWindowAttributes(X_Dpy, wins[i], &winattr);
|
||||
@ -287,11 +287,11 @@ x_errorhandler(Display *dpy, XErrorEvent *e)
|
||||
}
|
||||
#endif
|
||||
|
||||
if (Starting &&
|
||||
e->error_code == BadAccess &&
|
||||
e->request_code == X_GrabKey)
|
||||
if (Starting &&
|
||||
e->error_code == BadAccess &&
|
||||
e->request_code == X_GrabKey)
|
||||
errx(1, "root window unavailable - perhaps another "
|
||||
"wm is running?");
|
||||
"wm is running?");
|
||||
|
||||
return (0);
|
||||
}
|
||||
@ -302,9 +302,9 @@ _sigchld_cb(int which)
|
||||
pid_t pid;
|
||||
int status;
|
||||
|
||||
/* Collect dead children. */
|
||||
while ((pid = waitpid(-1, &status, WNOHANG)) > 0 ||
|
||||
(pid < 0 && errno == EINTR))
|
||||
/* Collect dead children. */
|
||||
while ((pid = waitpid(-1, &status, WNOHANG)) > 0 ||
|
||||
(pid < 0 && errno == EINTR))
|
||||
;
|
||||
}
|
||||
|
||||
|
447
app/cwm/calmwm.h
447
app/cwm/calmwm.h
@ -15,7 +15,7 @@
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* $Id: calmwm.h,v 1.29 2008/04/15 18:46:58 oga Exp $
|
||||
* $Id: calmwm.h,v 1.30 2008/04/15 20:24:41 oga Exp $
|
||||
*/
|
||||
|
||||
#ifndef _CALMWM_H_
|
||||
@ -44,15 +44,13 @@ struct client_ctx;
|
||||
|
||||
TAILQ_HEAD(cycle_entry_q, client_ctx);
|
||||
|
||||
/* #define CYCLE_FOREACH_MRU(cy, ctx) TAILQ_FOREACH((ctx), */
|
||||
|
||||
struct screen_ctx;
|
||||
|
||||
struct fontdesc {
|
||||
const char *name;
|
||||
XftFont *fn;
|
||||
struct screen_ctx *sc;
|
||||
HASH_ENTRY(fontdesc) node;
|
||||
const char *name;
|
||||
XftFont *fn;
|
||||
struct screen_ctx *sc;
|
||||
HASH_ENTRY(fontdesc) node;
|
||||
};
|
||||
|
||||
int fontdesc_cmp(struct fontdesc *a, struct fontdesc *b);
|
||||
@ -88,9 +86,9 @@ struct screen_ctx {
|
||||
|
||||
struct client_ctx* cycle_client;
|
||||
|
||||
struct fonthash fonthash;
|
||||
XftDraw *xftdraw;
|
||||
XftColor xftcolor;
|
||||
struct fonthash fonthash;
|
||||
XftDraw *xftdraw;
|
||||
XftColor xftcolor;
|
||||
};
|
||||
|
||||
TAILQ_HEAD(screen_ctx_q, screen_ctx);
|
||||
@ -108,7 +106,7 @@ TAILQ_HEAD(screen_ctx_q, screen_ctx);
|
||||
#define CLIENT_VMAXIMIZED 0x20
|
||||
|
||||
#define CLIENT_HIGHLIGHT_BLUE 1
|
||||
#define CLIENT_HIGHLIGHT_RED 2
|
||||
#define CLIENT_HIGHLIGHT_RED 2
|
||||
|
||||
|
||||
struct winname {
|
||||
@ -128,7 +126,7 @@ struct client_ctx {
|
||||
Window win;
|
||||
XSizeHints *size;
|
||||
|
||||
Colormap cmap;
|
||||
Colormap cmap;
|
||||
|
||||
Window pwin;
|
||||
|
||||
@ -157,13 +155,13 @@ struct client_ctx {
|
||||
int highlight;
|
||||
|
||||
char *matchname;
|
||||
struct group_ctx *group;
|
||||
struct group_ctx *group;
|
||||
|
||||
int stackingorder;
|
||||
int stackingorder;
|
||||
|
||||
char *app_class;
|
||||
char *app_name;
|
||||
char *app_cliarg;
|
||||
char *app_class;
|
||||
char *app_name;
|
||||
char *app_cliarg;
|
||||
};
|
||||
|
||||
TAILQ_HEAD(client_ctx_q, client_ctx);
|
||||
@ -175,14 +173,14 @@ static char *shortcut_to_name[] = {
|
||||
};
|
||||
|
||||
struct group_ctx {
|
||||
TAILQ_ENTRY(group_ctx) entry;
|
||||
struct client_ctx_q clients;
|
||||
char *name;
|
||||
int shortcut;
|
||||
int hidden;
|
||||
int nhidden;
|
||||
int highstack;
|
||||
};
|
||||
TAILQ_ENTRY(group_ctx) entry;
|
||||
struct client_ctx_q clients;
|
||||
char *name;
|
||||
int shortcut;
|
||||
int hidden;
|
||||
int nhidden;
|
||||
int highstack;
|
||||
};
|
||||
|
||||
TAILQ_HEAD(group_ctx_q, group_ctx);
|
||||
|
||||
@ -199,31 +197,31 @@ TAILQ_HEAD(autogroupwin_q, autogroupwin);
|
||||
|
||||
/* NULL/0 values indicate match any. */
|
||||
struct xevent {
|
||||
TAILQ_ENTRY(xevent) entry;
|
||||
Window *xev_win;
|
||||
Window *xev_root;
|
||||
int xev_type;
|
||||
void (*xev_cb)(struct xevent *, XEvent *);
|
||||
void *xev_arg;
|
||||
TAILQ_ENTRY(xevent) entry;
|
||||
Window *xev_win;
|
||||
Window *xev_root;
|
||||
int xev_type;
|
||||
void (*xev_cb)(struct xevent *, XEvent *);
|
||||
void *xev_arg;
|
||||
};
|
||||
|
||||
TAILQ_HEAD(xevent_q, xevent);
|
||||
|
||||
#define CWM_BIGMOVE 0x1000
|
||||
enum directions {
|
||||
CWM_UP=0, CWM_DOWN, CWM_LEFT, CWM_RIGHT,
|
||||
CWM_UP = 0, CWM_DOWN, CWM_LEFT, CWM_RIGHT,
|
||||
};
|
||||
|
||||
/*
|
||||
* Match a window.
|
||||
*/
|
||||
#define CONF_MAX_WINTITLE 256
|
||||
#define CONF_IGNORECASE 0x01
|
||||
#define CONF_MAX_WINTITLE 256
|
||||
#define CONF_IGNORECASE 0x01
|
||||
struct winmatch {
|
||||
TAILQ_ENTRY(winmatch) entry;
|
||||
TAILQ_ENTRY(winmatch) entry;
|
||||
|
||||
char title[CONF_MAX_WINTITLE];
|
||||
int opts;
|
||||
char title[CONF_MAX_WINTITLE];
|
||||
int opts;
|
||||
};
|
||||
|
||||
TAILQ_HEAD(winmatch_q, winmatch);
|
||||
@ -237,21 +235,20 @@ TAILQ_HEAD(winmatch_q, winmatch);
|
||||
#define KBTOGROUP(X) ((X) - 1)
|
||||
|
||||
struct keybinding {
|
||||
int modmask;
|
||||
int keysym;
|
||||
int keycode;
|
||||
int flags;
|
||||
void (*callback)(struct client_ctx *, void *);
|
||||
void *argument;
|
||||
TAILQ_ENTRY(keybinding) entry;
|
||||
int modmask;
|
||||
int keysym;
|
||||
int keycode;
|
||||
int flags;
|
||||
void (*callback)(struct client_ctx *, void *);
|
||||
void *argument;
|
||||
TAILQ_ENTRY(keybinding) entry;
|
||||
};
|
||||
|
||||
struct cmd {
|
||||
TAILQ_ENTRY(cmd) entry;
|
||||
int flags;
|
||||
#define CMD_STATIC 0x01 /* static configuration in conf.c */
|
||||
char image[MAXPATHLEN];
|
||||
char label[256];
|
||||
TAILQ_ENTRY(cmd) entry;
|
||||
int flags;
|
||||
char image[MAXPATHLEN];
|
||||
char label[256];
|
||||
/* (argv) */
|
||||
};
|
||||
|
||||
@ -266,15 +263,15 @@ struct conf {
|
||||
char conf_path[MAXPATHLEN];
|
||||
struct cmd_q cmdq;
|
||||
|
||||
#define CONF_STICKY_GROUPS 0x0001
|
||||
int flags;
|
||||
#define CONF_STICKY_GROUPS 0x0001
|
||||
|
||||
char termpath[MAXPATHLEN];
|
||||
char lockpath[MAXPATHLEN];
|
||||
|
||||
#define DEFAULTFONTNAME "sans-serif:pixelsize=14:bold"
|
||||
#define DEFAULTFONTNAME "sans-serif:pixelsize=14:bold"
|
||||
char *DefaultFontName;
|
||||
int gap_top, gap_bottom, gap_left, gap_right;
|
||||
int gap_top, gap_bottom, gap_left, gap_right;
|
||||
};
|
||||
|
||||
/* Menu stuff */
|
||||
@ -282,13 +279,13 @@ struct conf {
|
||||
#define MENU_MAXENTRY 50
|
||||
|
||||
struct menu {
|
||||
TAILQ_ENTRY(menu) entry;
|
||||
TAILQ_ENTRY(menu) resultentry;
|
||||
TAILQ_ENTRY(menu) entry;
|
||||
TAILQ_ENTRY(menu) resultentry;
|
||||
|
||||
char text[MENU_MAXENTRY + 1];
|
||||
char print[MENU_MAXENTRY + 1];
|
||||
void *ctx;
|
||||
short dummy;
|
||||
char text[MENU_MAXENTRY + 1];
|
||||
char print[MENU_MAXENTRY + 1];
|
||||
void *ctx;
|
||||
short dummy;
|
||||
};
|
||||
|
||||
TAILQ_HEAD(menu_q, menu);
|
||||
@ -302,196 +299,202 @@ enum ctltype {
|
||||
/* MWM hints */
|
||||
|
||||
struct mwm_hints {
|
||||
u_long flags;
|
||||
u_long functions;
|
||||
u_long decorations;
|
||||
u_long flags;
|
||||
u_long functions;
|
||||
u_long decorations;
|
||||
};
|
||||
|
||||
#define MWM_NUMHINTS 3
|
||||
|
||||
#define PROP_MWM_HINTS_ELEMENTS 3
|
||||
#define MWM_HINTS_DECORATIONS (1 << 1)
|
||||
#define MWM_DECOR_ALL (1 << 0)
|
||||
#define MWM_DECOR_BORDER (1 << 1)
|
||||
#define PROP_MWM_HINTS_ELEMENTS 3
|
||||
#define MWM_HINTS_DECORATIONS (1 << 1)
|
||||
#define MWM_DECOR_ALL (1 << 0)
|
||||
#define MWM_DECOR_BORDER (1 << 1)
|
||||
|
||||
int input_keycodetrans(KeyCode, u_int, enum ctltype *, char *, int);
|
||||
int input_keycodetrans(KeyCode, u_int, enum ctltype *,
|
||||
char *, int);
|
||||
|
||||
int x_errorhandler(Display *, XErrorEvent *);
|
||||
void x_setup(char *display_name);
|
||||
char *x_screenname(int);
|
||||
void x_setupscreen(struct screen_ctx *, u_int);
|
||||
__dead void usage(void);
|
||||
int x_errorhandler(Display *, XErrorEvent *);
|
||||
void x_setup(char *display_name);
|
||||
char *x_screenname(int);
|
||||
void x_setupscreen(struct screen_ctx *, u_int);
|
||||
__dead void usage(void);
|
||||
|
||||
struct client_ctx *client_find(Window);
|
||||
void client_setup(void);
|
||||
struct client_ctx *client_new(Window, struct screen_ctx *, int);
|
||||
int client_delete(struct client_ctx *, int, int);
|
||||
void client_setactive(struct client_ctx *, int);
|
||||
void client_gravitate(struct client_ctx *, int);
|
||||
void client_resize(struct client_ctx *);
|
||||
void client_lower(struct client_ctx *);
|
||||
void client_raise(struct client_ctx *);
|
||||
void client_move(struct client_ctx *);
|
||||
void client_leave(struct client_ctx *);
|
||||
void client_send_delete(struct client_ctx *);
|
||||
struct client_ctx *client_current(void);
|
||||
void client_hide(struct client_ctx *);
|
||||
void client_unhide(struct client_ctx *);
|
||||
void client_nocurrent(void);
|
||||
void client_setname(struct client_ctx *);
|
||||
void client_warp(struct client_ctx *);
|
||||
void client_ptrwarp(struct client_ctx *);
|
||||
void client_ptrsave(struct client_ctx *);
|
||||
void client_draw_border(struct client_ctx *);
|
||||
void client_update(struct client_ctx *);
|
||||
void client_cycle(struct client_ctx *);
|
||||
void client_placecalc(struct client_ctx *);
|
||||
void client_maximize(struct client_ctx *);
|
||||
void client_vertmaximize(struct client_ctx *);
|
||||
u_long client_bg_pixel(struct client_ctx *);
|
||||
Pixmap client_bg_pixmap(struct client_ctx *);
|
||||
void client_map(struct client_ctx *cc);
|
||||
void client_mtf(struct client_ctx *cc);
|
||||
struct client_ctx *client_cyclenext(int reverse);
|
||||
void client_altrelease();
|
||||
struct client_ctx *client_mrunext(struct client_ctx *cc);
|
||||
struct client_ctx *client_mruprev(struct client_ctx *cc);
|
||||
void client_gethints(struct client_ctx *cc);
|
||||
void client_freehints(struct client_ctx *cc);
|
||||
struct client_ctx *client_find(Window);
|
||||
void client_setup(void);
|
||||
struct client_ctx *client_new(Window, struct screen_ctx *, int);
|
||||
int client_delete(struct client_ctx *, int, int);
|
||||
void client_setactive(struct client_ctx *, int);
|
||||
void client_gravitate(struct client_ctx *, int);
|
||||
void client_resize(struct client_ctx *);
|
||||
void client_lower(struct client_ctx *);
|
||||
void client_raise(struct client_ctx *);
|
||||
void client_move(struct client_ctx *);
|
||||
void client_leave(struct client_ctx *);
|
||||
void client_send_delete(struct client_ctx *);
|
||||
struct client_ctx *client_current(void);
|
||||
void client_hide(struct client_ctx *);
|
||||
void client_unhide(struct client_ctx *);
|
||||
void client_nocurrent(void);
|
||||
void client_setname(struct client_ctx *);
|
||||
void client_warp(struct client_ctx *);
|
||||
void client_ptrwarp(struct client_ctx *);
|
||||
void client_ptrsave(struct client_ctx *);
|
||||
void client_draw_border(struct client_ctx *);
|
||||
void client_update(struct client_ctx *);
|
||||
void client_cycle(struct client_ctx *);
|
||||
void client_placecalc(struct client_ctx *);
|
||||
void client_maximize(struct client_ctx *);
|
||||
void client_vertmaximize(struct client_ctx *);
|
||||
u_long client_bg_pixel(struct client_ctx *);
|
||||
Pixmap client_bg_pixmap(struct client_ctx *);
|
||||
void client_map(struct client_ctx *cc);
|
||||
void client_mtf(struct client_ctx *cc);
|
||||
struct client_ctx *client_cyclenext(int reverse);
|
||||
void client_altrelease();
|
||||
struct client_ctx *client_mrunext(struct client_ctx *cc);
|
||||
struct client_ctx *client_mruprev(struct client_ctx *cc);
|
||||
void client_gethints(struct client_ctx *cc);
|
||||
void client_freehints(struct client_ctx *cc);
|
||||
|
||||
void xev_handle_maprequest(struct xevent *, XEvent *);
|
||||
void xev_handle_unmapnotify(struct xevent *, XEvent *);
|
||||
void xev_handle_destroynotify(struct xevent *, XEvent *);
|
||||
void xev_handle_configurerequest(struct xevent *, XEvent *);
|
||||
void xev_handle_propertynotify(struct xevent *, XEvent *);
|
||||
void xev_handle_enternotify(struct xevent *, XEvent *);
|
||||
void xev_handle_leavenotify(struct xevent *, XEvent *);
|
||||
void xev_handle_buttonpress(struct xevent *, XEvent *);
|
||||
void xev_handle_buttonrelease(struct xevent *, XEvent *);
|
||||
void xev_handle_keypress(struct xevent *, XEvent *);
|
||||
void xev_handle_keyrelease(struct xevent *, XEvent *);
|
||||
void xev_handle_expose(struct xevent *, XEvent *);
|
||||
void xev_handle_clientmessage(struct xevent *, XEvent *);
|
||||
void xev_handle_maprequest(struct xevent *, XEvent *);
|
||||
void xev_handle_unmapnotify(struct xevent *, XEvent *);
|
||||
void xev_handle_destroynotify(struct xevent *, XEvent *);
|
||||
void xev_handle_configurerequest(struct xevent *, XEvent *);
|
||||
void xev_handle_propertynotify(struct xevent *, XEvent *);
|
||||
void xev_handle_enternotify(struct xevent *, XEvent *);
|
||||
void xev_handle_leavenotify(struct xevent *, XEvent *);
|
||||
void xev_handle_buttonpress(struct xevent *, XEvent *);
|
||||
void xev_handle_buttonrelease(struct xevent *, XEvent *);
|
||||
void xev_handle_keypress(struct xevent *, XEvent *);
|
||||
void xev_handle_keyrelease(struct xevent *, XEvent *);
|
||||
void xev_handle_expose(struct xevent *, XEvent *);
|
||||
void xev_handle_clientmessage(struct xevent *, XEvent *);
|
||||
|
||||
#define XEV_QUICK(a, b, c, d, e) do { \
|
||||
xev_register(xev_new(a, b, c, d, e)); \
|
||||
} while (0)
|
||||
|
||||
void xev_reconfig(struct client_ctx *); /* XXX should be xu_ */
|
||||
/* XXX should be xu_ */
|
||||
void xev_reconfig(struct client_ctx *);
|
||||
|
||||
void xev_init(void);
|
||||
struct xevent *xev_new(Window *, Window *, int, void (*)(struct xevent *, XEvent *), void *);
|
||||
void xev_register(struct xevent *);
|
||||
void xev_loop(void);
|
||||
void xev_init(void);
|
||||
struct xevent *xev_new(Window *, Window *, int,
|
||||
void (*)(struct xevent *, XEvent *), void *);
|
||||
void xev_register(struct xevent *);
|
||||
void xev_loop(void);
|
||||
|
||||
int xu_ptr_grab(Window, int, Cursor);
|
||||
int xu_btn_grab(Window, int, u_int);
|
||||
int xu_ptr_regrab(int, Cursor);
|
||||
void xu_btn_ungrab(Window, int, u_int);
|
||||
void xu_ptr_ungrab(void);
|
||||
void xu_ptr_setpos(Window, int, int);
|
||||
void xu_ptr_getpos(Window, int *, int *);
|
||||
void xu_key_grab(Window, int, int);
|
||||
void xu_sendmsg(struct client_ctx *, Atom, long);
|
||||
int xu_getprop(struct client_ctx *, Atom, Atom, long, u_char **);
|
||||
char *xu_getstrprop(struct client_ctx *, Atom atm);
|
||||
void xu_setstate(struct client_ctx *, int);
|
||||
int xu_getstate(struct client_ctx *, int *);
|
||||
void xu_key_grab_keycode(Window, int, int);
|
||||
int xu_ptr_grab(Window, int, Cursor);
|
||||
int xu_btn_grab(Window, int, u_int);
|
||||
int xu_ptr_regrab(int, Cursor);
|
||||
void xu_btn_ungrab(Window, int, u_int);
|
||||
void xu_ptr_ungrab(void);
|
||||
void xu_ptr_setpos(Window, int, int);
|
||||
void xu_ptr_getpos(Window, int *, int *);
|
||||
void xu_key_grab(Window, int, int);
|
||||
void xu_sendmsg(struct client_ctx *, Atom, long);
|
||||
int xu_getprop(struct client_ctx *, Atom, Atom, long,
|
||||
u_char **);
|
||||
char *xu_getstrprop(struct client_ctx *, Atom atm);
|
||||
void xu_setstate(struct client_ctx *, int);
|
||||
int xu_getstate(struct client_ctx *, int *);
|
||||
void xu_key_grab_keycode(Window, int, int);
|
||||
|
||||
int dirent_exists(char *);
|
||||
int dirent_isdir(char *);
|
||||
int dirent_islink(char *);
|
||||
int u_spawn(char *);
|
||||
void exec_wm(char *);
|
||||
int dirent_exists(char *);
|
||||
int dirent_isdir(char *);
|
||||
int dirent_islink(char *);
|
||||
int u_spawn(char *);
|
||||
void exec_wm(char *);
|
||||
|
||||
void grab_sweep(struct client_ctx *);
|
||||
void grab_drag(struct client_ctx *);
|
||||
void grab_menuinit(struct screen_ctx *);
|
||||
void *grab_menu(XButtonEvent *, struct menu_q *);
|
||||
void grab_label(struct client_ctx *);
|
||||
void grab_sweep(struct client_ctx *);
|
||||
void grab_drag(struct client_ctx *);
|
||||
void grab_menuinit(struct screen_ctx *);
|
||||
void *grab_menu(XButtonEvent *, struct menu_q *);
|
||||
void grab_label(struct client_ctx *);
|
||||
|
||||
void xfree(void *);
|
||||
void *xmalloc(size_t);
|
||||
void *xcalloc(size_t);
|
||||
char *xstrdup(const char *);
|
||||
void xfree(void *);
|
||||
void *xmalloc(size_t);
|
||||
void *xcalloc(size_t);
|
||||
char *xstrdup(const char *);
|
||||
|
||||
#define XMALLOC(p, t) ((p) = (t *)xmalloc(sizeof * (p)))
|
||||
#define XCALLOC(p, t) ((p) = (t *)xcalloc(sizeof * (p)))
|
||||
|
||||
void screen_init(void);
|
||||
struct screen_ctx *screen_fromroot(Window);
|
||||
struct screen_ctx *screen_current(void);
|
||||
void screen_updatestackingorder(void);
|
||||
void screen_infomsg(char *);
|
||||
void screen_init(void);
|
||||
struct screen_ctx *screen_fromroot(Window);
|
||||
struct screen_ctx *screen_current(void);
|
||||
void screen_updatestackingorder(void);
|
||||
void screen_infomsg(char *);
|
||||
|
||||
void conf_setup(struct conf *, const char *);
|
||||
int conf_get_int(struct client_ctx *, enum conftype);
|
||||
void conf_client(struct client_ctx *);
|
||||
void conf_bindkey(struct conf *, void (*)(struct client_ctx *, void *),
|
||||
int, int, int, void *);
|
||||
void conf_bindname(struct conf *, char *, char *);
|
||||
void conf_unbind(struct conf *, struct keybinding *);
|
||||
int conf_changed(char *);
|
||||
void conf_reload(struct conf *c);
|
||||
char *conf_get_str(struct client_ctx *, enum conftype);
|
||||
void conf_setup(struct conf *, const char *);
|
||||
int conf_get_int(struct client_ctx *, enum conftype);
|
||||
void conf_client(struct client_ctx *);
|
||||
void conf_bindkey(struct conf *,
|
||||
void (*)(struct client_ctx *, void *),
|
||||
int, int, int, void *);
|
||||
void conf_bindname(struct conf *, char *, char *);
|
||||
void conf_unbind(struct conf *, struct keybinding *);
|
||||
int conf_changed(char *);
|
||||
void conf_reload(struct conf *);
|
||||
char *conf_get_str(struct client_ctx *, enum conftype);
|
||||
|
||||
void kbfunc_client_lower(struct client_ctx *, void *);
|
||||
void kbfunc_client_raise(struct client_ctx *, void *);
|
||||
void kbfunc_client_search(struct client_ctx *, void *);
|
||||
void kbfunc_client_hide(struct client_ctx *, void *);
|
||||
void kbfunc_client_cycle(struct client_ctx *, void *);
|
||||
void kbfunc_client_rcycle(struct client_ctx *cc, void *arg);
|
||||
void kbfunc_cmdexec(struct client_ctx *, void *);
|
||||
void kbfunc_client_label(struct client_ctx *, void *);
|
||||
void kbfunc_client_delete(struct client_ctx *, void *);
|
||||
void kbfunc_client_group(struct client_ctx *, void *);
|
||||
void kbfunc_client_nextgroup(struct client_ctx *, void *);
|
||||
void kbfunc_client_prevgroup(struct client_ctx *, void *);
|
||||
void kbfunc_client_nogroup(struct client_ctx *, void *);
|
||||
void kbfunc_client_maximize(struct client_ctx *, void *);
|
||||
void kbfunc_client_vmaximize(struct client_ctx *, void *);
|
||||
void kbfunc_quit_wm(struct client_ctx *, void *);
|
||||
void kbfunc_client_move(struct client_ctx *, void *);
|
||||
void kbfunc_client_resize(struct client_ctx *, void *);
|
||||
void kbfunc_menu_search(struct client_ctx *, void *);
|
||||
void kbfunc_exec(struct client_ctx *, void *);
|
||||
void kbfunc_ptrmove(struct client_ctx *, void *);
|
||||
void kbfunc_ssh(struct client_ctx *, void *);
|
||||
void kbfunc_term(struct client_ctx *cc, void *arg);
|
||||
void kbfunc_lock(struct client_ctx *cc, void *arg);
|
||||
void kbfunc_client_lower(struct client_ctx *, void *);
|
||||
void kbfunc_client_raise(struct client_ctx *, void *);
|
||||
void kbfunc_client_search(struct client_ctx *, void *);
|
||||
void kbfunc_client_hide(struct client_ctx *, void *);
|
||||
void kbfunc_client_cycle(struct client_ctx *, void *);
|
||||
void kbfunc_client_rcycle(struct client_ctx *, void *);
|
||||
void kbfunc_cmdexec(struct client_ctx *, void *);
|
||||
void kbfunc_client_label(struct client_ctx *, void *);
|
||||
void kbfunc_client_delete(struct client_ctx *, void *);
|
||||
void kbfunc_client_group(struct client_ctx *, void *);
|
||||
void kbfunc_client_nextgroup(struct client_ctx *, void *);
|
||||
void kbfunc_client_prevgroup(struct client_ctx *, void *);
|
||||
void kbfunc_client_nogroup(struct client_ctx *, void *);
|
||||
void kbfunc_client_maximize(struct client_ctx *, void *);
|
||||
void kbfunc_client_vmaximize(struct client_ctx *, void *);
|
||||
void kbfunc_quit_wm(struct client_ctx *, void *);
|
||||
void kbfunc_client_move(struct client_ctx *, void *);
|
||||
void kbfunc_client_resize(struct client_ctx *, void *);
|
||||
void kbfunc_menu_search(struct client_ctx *, void *);
|
||||
void kbfunc_exec(struct client_ctx *, void *);
|
||||
void kbfunc_ptrmove(struct client_ctx *, void *);
|
||||
void kbfunc_ssh(struct client_ctx *, void *);
|
||||
void kbfunc_term(struct client_ctx *, void *);
|
||||
void kbfunc_lock(struct client_ctx *, void *);
|
||||
|
||||
void search_init(struct screen_ctx *);
|
||||
struct menu *search_start(struct menu_q *menuq,
|
||||
void (*match)(struct menu_q *, struct menu_q *, char *),
|
||||
void (*print)(struct menu *mi, int),
|
||||
char *, int);
|
||||
void search_match_client(struct menu_q *, struct menu_q *, char *);
|
||||
void search_print_client(struct menu *mi, int list);
|
||||
void search_match_text(struct menu_q *, struct menu_q *, char *);
|
||||
void search_match_exec(struct menu_q *, struct menu_q *, char *);
|
||||
void search_init(struct screen_ctx *);
|
||||
struct menu *search_start(struct menu_q *menuq,
|
||||
void (*match)(struct menu_q *, struct menu_q *, char *),
|
||||
void (*print)(struct menu *mi, int),
|
||||
char *, int);
|
||||
void search_match_client(struct menu_q *, struct menu_q *,
|
||||
char *);
|
||||
void search_print_client(struct menu *mi, int list);
|
||||
void search_match_text(struct menu_q *, struct menu_q *,
|
||||
char *);
|
||||
void search_match_exec(struct menu_q *, struct menu_q *,
|
||||
char *);
|
||||
|
||||
void group_init(void);
|
||||
void group_hidetoggle(int);
|
||||
void group_slide(int);
|
||||
void group_sticky(struct client_ctx *);
|
||||
void group_client_delete(struct client_ctx *);
|
||||
void group_menu(XButtonEvent *);
|
||||
void group_alltoggle(void);
|
||||
void group_sticky_toggle_enter(struct client_ctx *);
|
||||
void group_sticky_toggle_exit(struct client_ctx *);
|
||||
void group_autogroup(struct client_ctx *);
|
||||
void group_init(void);
|
||||
void group_hidetoggle(int);
|
||||
void group_slide(int);
|
||||
void group_sticky(struct client_ctx *);
|
||||
void group_client_delete(struct client_ctx *);
|
||||
void group_menu(XButtonEvent *);
|
||||
void group_alltoggle(void);
|
||||
void group_sticky_toggle_enter(struct client_ctx *);
|
||||
void group_sticky_toggle_exit(struct client_ctx *);
|
||||
void group_autogroup(struct client_ctx *);
|
||||
|
||||
void notification_init(struct screen_ctx *);
|
||||
|
||||
void font_init(struct screen_ctx *sc);
|
||||
struct fontdesc *font_get(struct screen_ctx *sc, const char *name);
|
||||
int font_width(struct fontdesc *fdp, const char *text, int len);
|
||||
void font_draw(struct fontdesc *fdp, const char *text, int len,
|
||||
Drawable d, int x, int y);
|
||||
int font_ascent(struct fontdesc *fdp);
|
||||
int font_descent(struct fontdesc *fdp);
|
||||
struct fontdesc *font_getx(struct screen_ctx *sc, const char *name);
|
||||
void font_init(struct screen_ctx *);
|
||||
struct fontdesc *font_get(struct screen_ctx *, const char *);
|
||||
int font_width(struct fontdesc *, const char *, int);
|
||||
void font_draw(struct fontdesc *, const char *, int,
|
||||
Drawable, int, int);
|
||||
int font_ascent(struct fontdesc *);
|
||||
int font_descent(struct fontdesc *);
|
||||
struct fontdesc *font_getx(struct screen_ctx *, const char *);
|
||||
|
||||
#define CCTOSC(cc) (cc->sc)
|
||||
|
||||
@ -514,7 +517,7 @@ extern struct client_ctx_q Clientq;
|
||||
extern int Doshape, Shape_ev;
|
||||
extern struct conf Conf;
|
||||
|
||||
extern struct fontdesc *DefaultFont;
|
||||
extern struct fontdesc *DefaultFont;
|
||||
|
||||
|
||||
#endif /* _CALMWM_H_ */
|
||||
|
@ -15,7 +15,7 @@
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* $Id: client.c,v 1.16 2008/04/15 18:46:58 oga Exp $
|
||||
* $Id: client.c,v 1.17 2008/04/15 20:24:41 oga Exp $
|
||||
*/
|
||||
|
||||
#include "headers.h"
|
||||
@ -23,11 +23,11 @@
|
||||
|
||||
static struct client_ctx *client__cycle(struct client_ctx *cc,
|
||||
struct client_ctx *(*iter)(struct client_ctx *));
|
||||
int _inwindowbounds(struct client_ctx *, int, int);
|
||||
int _inwindowbounds(struct client_ctx *, int, int);
|
||||
|
||||
static char emptystring[] = "";
|
||||
static char emptystring[] = "";
|
||||
|
||||
struct client_ctx *_curcc = NULL;
|
||||
struct client_ctx *_curcc = NULL;
|
||||
|
||||
void
|
||||
client_setup(void)
|
||||
@ -53,7 +53,7 @@ client_new(Window win, struct screen_ctx *sc, int mapped)
|
||||
struct client_ctx *cc;
|
||||
long tmp;
|
||||
XSetWindowAttributes pxattr;
|
||||
XWindowAttributes wattr;
|
||||
XWindowAttributes wattr;
|
||||
int x, y, height, width, state;
|
||||
XWMHints *wmhints;
|
||||
|
||||
@ -67,7 +67,7 @@ client_new(Window win, struct screen_ctx *sc, int mapped)
|
||||
cc->state = mapped ? NormalState : IconicState;
|
||||
cc->sc = sc;
|
||||
cc->win = win;
|
||||
cc->size= XAllocSizeHints();
|
||||
cc->size = XAllocSizeHints();
|
||||
if (cc->size->width_inc == 0)
|
||||
cc->size->width_inc = 1;
|
||||
if (cc->size->height_inc == 0)
|
||||
@ -137,7 +137,7 @@ client_new(Window win, struct screen_ctx *sc, int mapped)
|
||||
ExposureMask|EnterWindowMask;
|
||||
/* pxattr.border_pixel = sc->blackpix; */
|
||||
/* pxattr.background_pixel = sc->whitepix; */
|
||||
|
||||
|
||||
|
||||
/* cc->pwin = XCreateSimpleWindow(X_Dpy, sc->rootwin, */
|
||||
/* x, y, width, height, 1, sc->blackpix, sc->whitepix); */
|
||||
@ -154,7 +154,8 @@ client_new(Window win, struct screen_ctx *sc, int mapped)
|
||||
|
||||
XShapeSelectInput(X_Dpy, cc->win, ShapeNotifyMask);
|
||||
|
||||
r = XShapeGetRectangles(X_Dpy, cc->win, ShapeBounding, &n, &tmp);
|
||||
r = XShapeGetRectangles(X_Dpy, cc->win, ShapeBounding,
|
||||
&n, &tmp);
|
||||
if (n > 1)
|
||||
XShapeCombineShape(X_Dpy, cc->pwin, ShapeBounding,
|
||||
0, 0, /* XXX border */
|
||||
@ -189,7 +190,7 @@ client_new(Window win, struct screen_ctx *sc, int mapped)
|
||||
|
||||
client_gethints(cc);
|
||||
client_update(cc);
|
||||
|
||||
|
||||
if (mapped) {
|
||||
group_autogroup(cc);
|
||||
}
|
||||
@ -308,11 +309,11 @@ client_current(void)
|
||||
void
|
||||
client_gravitate(struct client_ctx *cc, int yes)
|
||||
{
|
||||
int dx = 0, dy = 0, mult = yes ? 1 : -1;
|
||||
int gravity = (cc->size->flags & PWinGravity) ?
|
||||
int dx = 0, dy = 0, mult = yes ? 1 : -1;
|
||||
int gravity = (cc->size->flags & PWinGravity) ?
|
||||
cc->size->win_gravity : NorthWestGravity;
|
||||
|
||||
switch (gravity) {
|
||||
switch (gravity) {
|
||||
case NorthWestGravity:
|
||||
case SouthWestGravity:
|
||||
case NorthEastGravity:
|
||||
@ -321,10 +322,10 @@ client_gravitate(struct client_ctx *cc, int yes)
|
||||
case NorthGravity:
|
||||
dy = cc->bwidth;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
cc->geom.x += mult*dx;
|
||||
cc->geom.y += mult*dy;
|
||||
cc->geom.x += mult*dx;
|
||||
cc->geom.y += mult*dy;
|
||||
}
|
||||
|
||||
void
|
||||
@ -419,10 +420,10 @@ client_ptrsave(struct client_ctx *cc)
|
||||
int x, y;
|
||||
|
||||
xu_ptr_getpos(cc->pwin, &x, &y);
|
||||
if (_inwindowbounds(cc, x, y)) {
|
||||
if (_inwindowbounds(cc, x, y)) {
|
||||
cc->ptr.x = x;
|
||||
cc->ptr.y = y;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
@ -591,7 +592,7 @@ match:
|
||||
cc->nameqlen--;
|
||||
}
|
||||
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -635,7 +636,7 @@ client_cyclenext(int reverse)
|
||||
/* Do the actual warp. */
|
||||
client_ptrsave(cc);
|
||||
client_ptrwarp(sc->cycle_client);
|
||||
sc->altpersist = 1; /* This is reset when alt is let go... */
|
||||
sc->altpersist = 1; /* This is reset when alt is let go... */
|
||||
|
||||
return (sc->cycle_client);
|
||||
}
|
||||
@ -671,7 +672,7 @@ client__cycle(struct client_ctx *cc,
|
||||
break;
|
||||
} while (cc != save);
|
||||
|
||||
return cc != save ? cc : NULL;
|
||||
return (cc != save ? cc : NULL);
|
||||
}
|
||||
|
||||
void
|
||||
@ -764,8 +765,8 @@ client_vertmaximize(struct client_ctx *cc)
|
||||
struct screen_ctx *sc = CCTOSC(cc);
|
||||
int display_height = DisplayHeight(X_Dpy, sc->which) -
|
||||
cc->bwidth*2;
|
||||
|
||||
if (!(cc->flags & CLIENT_MAXIMIZED))
|
||||
|
||||
if (!(cc->flags & CLIENT_MAXIMIZED))
|
||||
cc->savegeom = cc->geom;
|
||||
cc->geom.y = cc->bwidth + Conf.gap_top;
|
||||
cc->geom.height = display_height -
|
||||
@ -831,7 +832,7 @@ client_gethints(struct client_ctx *cc)
|
||||
break;
|
||||
strlcat(buf, argv[i], len);
|
||||
o += strlen(buf);
|
||||
strlcat(buf, ARG_SEP_, len);
|
||||
strlcat(buf, ARG_SEP_, len);
|
||||
o += strlen(ARG_SEP_);
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* $Id: conf.c,v 1.25 2008/04/08 14:12:28 okan Exp $
|
||||
* $Id: conf.c,v 1.26 2008/04/15 20:24:41 oga Exp $
|
||||
*/
|
||||
|
||||
#include "headers.h"
|
||||
@ -23,9 +23,9 @@
|
||||
|
||||
#ifndef timespeccmp
|
||||
#define timespeccmp(tsp, usp, cmp) \
|
||||
(((tsp)->tv_sec == (usp)->tv_sec) ? \
|
||||
((tsp)->tv_nsec cmp (usp)->tv_nsec) : \
|
||||
((tsp)->tv_sec cmp (usp)->tv_sec))
|
||||
(((tsp)->tv_sec == (usp)->tv_sec) ? \
|
||||
((tsp)->tv_nsec cmp (usp)->tv_nsec) : \
|
||||
((tsp)->tv_sec cmp (usp)->tv_sec))
|
||||
#endif
|
||||
|
||||
extern struct screen_ctx *Curscreen;
|
||||
@ -88,7 +88,7 @@ conf_init(struct conf *c)
|
||||
|
||||
TAILQ_INIT(&c->ignoreq);
|
||||
TAILQ_INIT(&c->cmdq);
|
||||
TAILQ_INIT(&c->keybindingq);
|
||||
TAILQ_INIT(&c->keybindingq);
|
||||
TAILQ_INIT(&c->autogroupq);
|
||||
|
||||
conf_bindname(c, "CM-Return", "terminal");
|
||||
@ -166,8 +166,7 @@ conf_setup(struct conf *c, const char *conffile)
|
||||
|
||||
snprintf(c->conf_path, sizeof(c->conf_path), "%s/%s", home,
|
||||
CONFFILE);
|
||||
}
|
||||
else
|
||||
} else
|
||||
snprintf(c->conf_path, sizeof(c->conf_path), "%s", conffile);
|
||||
|
||||
conf_init(c);
|
||||
@ -195,7 +194,7 @@ conf_get_int(struct client_ctx *cc, enum conftype ctype)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} else
|
||||
ignore = 1;
|
||||
|
||||
@ -300,23 +299,23 @@ conf_bindname(struct conf *c, char *name, char *binding)
|
||||
current_binding->modmask |= ControlMask;
|
||||
|
||||
if (strchr(name, 'M') != NULL &&
|
||||
strchr(name, 'M') < strchr(name, '-'))
|
||||
strchr(name, 'M') < strchr(name, '-'))
|
||||
current_binding->modmask |= Mod1Mask;
|
||||
|
||||
if (strchr(name, '2') != NULL &&
|
||||
strchr(name, '2') < strchr(name, '-'))
|
||||
strchr(name, '2') < strchr(name, '-'))
|
||||
current_binding->modmask |= Mod2Mask;
|
||||
|
||||
if (strchr(name, '3') != NULL &&
|
||||
strchr(name, '3') < strchr(name, '-'))
|
||||
strchr(name, '3') < strchr(name, '-'))
|
||||
current_binding->modmask |= Mod3Mask;
|
||||
|
||||
if (strchr(name, '4') != NULL &&
|
||||
strchr(name, '4') < strchr(name, '-'))
|
||||
strchr(name, '4') < strchr(name, '-'))
|
||||
current_binding->modmask |= Mod4Mask;
|
||||
|
||||
if (strchr(name, 'S') != NULL &&
|
||||
strchr(name, 'S') < strchr(name, '-'))
|
||||
strchr(name, 'S') < strchr(name, '-'))
|
||||
current_binding->modmask |= ShiftMask;
|
||||
|
||||
substring = strchr(name, '-') + 1;
|
||||
@ -335,13 +334,13 @@ conf_bindname(struct conf *c, char *name, char *binding)
|
||||
}
|
||||
|
||||
if (current_binding->keysym == NoSymbol &&
|
||||
current_binding->keycode == 0 ) {
|
||||
current_binding->keycode == 0) {
|
||||
xfree(current_binding);
|
||||
return;
|
||||
}
|
||||
|
||||
/* We now have the correct binding, remove duplicates. */
|
||||
conf_unbind(c, current_binding);
|
||||
conf_unbind(c, current_binding);
|
||||
|
||||
if (strcmp("unmap",binding) == 0)
|
||||
return;
|
||||
@ -376,7 +375,7 @@ void conf_unbind(struct conf *c, struct keybinding *unbind)
|
||||
continue;
|
||||
|
||||
if ((key->keycode != 0 && key->keysym == NoSymbol &&
|
||||
key->keycode == unbind->keycode) ||
|
||||
key->keycode == unbind->keycode) ||
|
||||
key->keysym == unbind->keysym)
|
||||
TAILQ_REMOVE(&c->keybindingq, key, entry);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $OpenBSD: cwmrc,v 1.1 2008/03/23 15:09:21 simon Exp $
|
||||
# $OpenBSD: cwmrc,v 1.2 2008/04/15 20:24:41 oga Exp $
|
||||
|
||||
# Makes the Xft(3) font string fontname the default font
|
||||
#fontname "sans-serif:pixelsize=14:bold"
|
||||
@ -25,4 +25,3 @@
|
||||
#bind CM-r "label"
|
||||
#bind CS-Return "xterm -e top"
|
||||
#bind 4-o "unmap"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" $OpenBSD: cwmrc.5,v 1.2 2008/04/15 18:46:58 oga Exp $
|
||||
.\" $OpenBSD: cwmrc.5,v 1.3 2008/04/15 20:24:41 oga Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 2004,2005 Marius Aamodt Eriksen <marius@monkey.org>
|
||||
.\"
|
||||
@ -90,8 +90,8 @@ will cause any instances of
|
||||
to not have borders.
|
||||
.It Ic bind Ar keys Ar command
|
||||
Cause the creation of keyboard shortcuts.
|
||||
The default shortcuts will always be created. In case of conflict,
|
||||
user-defined shortcuts take precidence.
|
||||
The default shortcuts will always be created.
|
||||
In case of conflict, user-defined shortcuts take precidence.
|
||||
The modifier keys come first, followed by a ``-''.
|
||||
The following modifiers are recognised:
|
||||
.Bl -tag -width Ds
|
||||
@ -116,9 +116,9 @@ The command should be either the name of a task from the
|
||||
structure in
|
||||
.Pa conf.c ,
|
||||
or, alternatively it should be the commandline that is wished to be executed.
|
||||
A special case is the ``unmap'' keyword, which causes any bindings using the
|
||||
named shortcut to be removed. This can be used to remove a binding which conflicts
|
||||
with an application.
|
||||
A special case is the ``unmap'' keyword, which causes any bindings using the
|
||||
named shortcut to be removed.
|
||||
This can be used to remove a binding which conflicts with an application.
|
||||
.Pp
|
||||
For example, to cause
|
||||
.Ic C-M-r
|
||||
|
@ -27,7 +27,7 @@ HASH_GENERATE(fonthash, fontdesc, node, fontdesc_cmp);
|
||||
int
|
||||
fontdesc_cmp(struct fontdesc *a, struct fontdesc *b)
|
||||
{
|
||||
return strcmp(a->name, b->name);
|
||||
return (strcmp(a->name, b->name));
|
||||
}
|
||||
|
||||
/*
|
||||
@ -35,24 +35,24 @@ fontdesc_cmp(struct fontdesc *a, struct fontdesc *b)
|
||||
* http://www.isthe.com/chongo/tech/comp/fnv/
|
||||
*/
|
||||
|
||||
#define FNV_P_32 ((unsigned int)0x01000193) /* 16777619 */
|
||||
#define FNV_1_32 ((unsigned int)0x811c9dc5) /* 2166136261 */
|
||||
#define FNV_P_32 ((unsigned int)0x01000193) /* 16777619 */
|
||||
#define FNV_1_32 ((unsigned int)0x811c9dc5) /* 2166136261 */
|
||||
|
||||
unsigned int
|
||||
fontdesc_hash(struct fontdesc *fdp)
|
||||
{
|
||||
const unsigned char *p, *end, *start;
|
||||
unsigned int hash = FNV_1_32;
|
||||
const unsigned char *p, *end, *start;
|
||||
unsigned int hash = FNV_1_32;
|
||||
|
||||
start = fdp->name;
|
||||
end = (const unsigned char *)fdp->name + strlen(fdp->name);
|
||||
|
||||
for (p = start; p < end; p++) {
|
||||
hash *= FNV_P_32;
|
||||
hash ^= (unsigned int)*p;
|
||||
}
|
||||
for (p = start; p < end; p++) {
|
||||
hash *= FNV_P_32;
|
||||
hash ^= (unsigned int)*p;
|
||||
}
|
||||
|
||||
return (hash);
|
||||
return (hash);
|
||||
}
|
||||
|
||||
void
|
||||
@ -111,10 +111,10 @@ font_get(struct screen_ctx *sc, const char *name)
|
||||
int
|
||||
font_width(struct fontdesc *fdp, const char *text, int len)
|
||||
{
|
||||
XGlyphInfo extents;
|
||||
XftTextExtents8(X_Dpy, fdp->fn, (const XftChar8*)text, len, &extents);
|
||||
XGlyphInfo extents;
|
||||
XftTextExtents8(X_Dpy, fdp->fn, (const XftChar8*)text, len, &extents);
|
||||
|
||||
return (extents.xOff);
|
||||
return (extents.xOff);
|
||||
}
|
||||
|
||||
void
|
||||
@ -130,13 +130,13 @@ font_draw(struct fontdesc *fdp, const char *text, int len,
|
||||
int
|
||||
font_ascent(struct fontdesc *fdp)
|
||||
{
|
||||
return fdp->fn->ascent;
|
||||
return (fdp->fn->ascent);
|
||||
}
|
||||
|
||||
int
|
||||
font_descent(struct fontdesc *fdp)
|
||||
{
|
||||
return fdp->fn->descent;
|
||||
return (fdp->fn->descent);
|
||||
}
|
||||
|
||||
static XftFont *
|
||||
@ -156,4 +156,3 @@ _make_font(struct screen_ctx *sc, struct fontdesc *fdp)
|
||||
|
||||
return (fn);
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* $Id: grab.c,v 1.8 2008/01/16 11:39:20 oga Exp $
|
||||
* $Id: grab.c,v 1.9 2008/04/15 20:24:41 oga Exp $
|
||||
*/
|
||||
|
||||
#include "headers.h"
|
||||
@ -83,7 +83,7 @@ grab_sweep(struct client_ctx *cc)
|
||||
break;
|
||||
case MotionNotify:
|
||||
if (_sweepcalc(cc, x0, y0, ev.xmotion.x, ev.xmotion.y))
|
||||
/* Recompute window output */
|
||||
/* Recompute window output */
|
||||
grab_sweep_draw(cc, dx, dy);
|
||||
|
||||
XMoveResizeWindow(X_Dpy, cc->pwin,
|
||||
@ -144,9 +144,9 @@ grab_drag(struct client_ctx *cc)
|
||||
/* NOTREACHED */
|
||||
}
|
||||
|
||||
#define MenuMask (ButtonMask|ButtonMotionMask|ExposureMask)
|
||||
#define MenuGrabMask (ButtonMask|ButtonMotionMask|StructureNotifyMask)
|
||||
#define AllButtonMask (Button1Mask|Button2Mask|Button3Mask|Button4Mask|Button5Mask)
|
||||
#define MenuMask (ButtonMask|ButtonMotionMask|ExposureMask)
|
||||
#define MenuGrabMask (ButtonMask|ButtonMotionMask|StructureNotifyMask)
|
||||
#define AllButtonMask (Button1Mask|Button2Mask|Button3Mask|Button4Mask|Button5Mask)
|
||||
|
||||
void *
|
||||
grab_menu(XButtonEvent *e, struct menu_q *menuq)
|
||||
@ -197,7 +197,7 @@ grab_menu(XButtonEvent *e, struct menu_q *menuq)
|
||||
XMoveResizeWindow(X_Dpy, sc->menuwin, x, y, width, tothigh);
|
||||
XSelectInput(X_Dpy, sc->menuwin, MenuMask);
|
||||
XMapRaised(X_Dpy, sc->menuwin);
|
||||
|
||||
|
||||
if (xu_ptr_grab(sc->menuwin, MenuGrabMask, Cursor_select) < 0) {
|
||||
XUnmapWindow(X_Dpy, sc->menuwin);
|
||||
return (NULL);
|
||||
@ -207,7 +207,7 @@ grab_menu(XButtonEvent *e, struct menu_q *menuq)
|
||||
|
||||
for (;;) {
|
||||
XMaskEvent(X_Dpy, MenuMask, &event);
|
||||
switch (event.type) {
|
||||
switch (event.type) {
|
||||
case Expose:
|
||||
XClearWindow(X_Dpy, sc->menuwin);
|
||||
i = 0;
|
||||
@ -237,7 +237,7 @@ grab_menu(XButtonEvent *e, struct menu_q *menuq)
|
||||
case ButtonRelease:
|
||||
if (event.xbutton.button != e->button)
|
||||
break;
|
||||
entry = menu_calc_entry(event.xbutton.x,
|
||||
entry = menu_calc_entry(event.xbutton.x,
|
||||
event.xbutton.y, width, height, no);
|
||||
xu_ptr_ungrab();
|
||||
XUnmapWindow(X_Dpy, sc->menuwin);
|
||||
@ -247,7 +247,7 @@ grab_menu(XButtonEvent *e, struct menu_q *menuq)
|
||||
if (entry == i++)
|
||||
break;
|
||||
return (mi);
|
||||
default:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -334,7 +334,8 @@ grab_label(struct client_ctx *cc)
|
||||
}
|
||||
|
||||
case Expose:
|
||||
snprintf(dispstr, sizeof(dispstr), "label>%s", labelstr);
|
||||
snprintf(dispstr, sizeof(dispstr), "label>%s",
|
||||
labelstr);
|
||||
dx = font_width(font, dispstr, strlen(dispstr));
|
||||
dy = fontheight;
|
||||
|
||||
@ -397,5 +398,5 @@ menu_calc_entry(int x, int y, int width, int height, int noentries)
|
||||
entry < 0 || entry >= noentries)
|
||||
entry = -1;
|
||||
|
||||
return entry;
|
||||
return (entry);
|
||||
}
|
||||
|
@ -16,7 +16,7 @@
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* $Id: group.c,v 1.8 2008/03/23 15:09:21 simon Exp $
|
||||
* $Id: group.c,v 1.9 2008/04/15 20:24:41 oga Exp $
|
||||
*/
|
||||
|
||||
#include "headers.h"
|
||||
@ -24,18 +24,18 @@
|
||||
|
||||
#define CALMWM_NGROUPS 9
|
||||
|
||||
int Groupnamemode = 0;
|
||||
struct group_ctx *Group_active = NULL;
|
||||
struct group_ctx Groups[CALMWM_NGROUPS];
|
||||
char Group_name[256];
|
||||
int Grouphideall = 0;
|
||||
struct group_ctx_q Groupq;
|
||||
int Groupnamemode = 0;
|
||||
struct group_ctx *Group_active = NULL;
|
||||
struct group_ctx Groups[CALMWM_NGROUPS];
|
||||
char Group_name[256];
|
||||
int Grouphideall = 0;
|
||||
struct group_ctx_q Groupq;
|
||||
|
||||
static void
|
||||
_group_add(struct group_ctx *gc, struct client_ctx *cc)
|
||||
{
|
||||
if (cc == NULL || gc == NULL)
|
||||
errx(1, "_group_add: a ctx is NULL");
|
||||
errx(1, "_group_add: a ctx is NULL");
|
||||
|
||||
if (cc->group == gc)
|
||||
return;
|
||||
@ -51,7 +51,7 @@ static void
|
||||
_group_remove(struct client_ctx *cc)
|
||||
{
|
||||
if (cc == NULL || cc->group == NULL)
|
||||
errx(1, "_group_remove: a ctx is NULL");
|
||||
errx(1, "_group_remove: a ctx is NULL");
|
||||
|
||||
TAILQ_REMOVE(&cc->group->clients, cc, group_entry);
|
||||
cc->group = NULL;
|
||||
@ -62,7 +62,7 @@ _group_remove(struct client_ctx *cc)
|
||||
static void
|
||||
_group_hide(struct group_ctx *gc)
|
||||
{
|
||||
struct client_ctx *cc;
|
||||
struct client_ctx *cc;
|
||||
|
||||
screen_updatestackingorder();
|
||||
|
||||
@ -117,7 +117,7 @@ _group_show(struct group_ctx *gc)
|
||||
void
|
||||
group_init(void)
|
||||
{
|
||||
int i;
|
||||
int i;
|
||||
|
||||
TAILQ_INIT(&Groupq);
|
||||
|
||||
@ -158,7 +158,7 @@ group_sticky_toggle_exit(struct client_ctx *cc)
|
||||
}
|
||||
|
||||
/*
|
||||
* selection list display
|
||||
* selection list display
|
||||
*/
|
||||
|
||||
/* if group_hidetoggle would produce no effect, toggle the group's hidden state
|
||||
@ -166,7 +166,7 @@ group_sticky_toggle_exit(struct client_ctx *cc)
|
||||
void
|
||||
_group_fix_hidden_state(struct group_ctx *gc)
|
||||
{
|
||||
struct client_ctx *cc;
|
||||
struct client_ctx *cc;
|
||||
int same = 0;
|
||||
|
||||
TAILQ_FOREACH(cc, &gc->clients, group_entry) {
|
||||
@ -252,7 +252,7 @@ void
|
||||
group_client_delete(struct client_ctx *cc)
|
||||
{
|
||||
if (cc->group == NULL)
|
||||
return;
|
||||
return;
|
||||
|
||||
TAILQ_REMOVE(&cc->group->clients, cc, group_entry);
|
||||
cc->group = NULL; /* he he */
|
||||
@ -261,10 +261,10 @@ group_client_delete(struct client_ctx *cc)
|
||||
void
|
||||
group_menu(XButtonEvent *e)
|
||||
{
|
||||
struct menu_q menuq;
|
||||
struct menu *mi;
|
||||
int i;
|
||||
struct group_ctx *gc;
|
||||
struct menu_q menuq;
|
||||
struct menu *mi;
|
||||
int i;
|
||||
struct group_ctx *gc;
|
||||
|
||||
TAILQ_INIT(&menuq);
|
||||
|
||||
@ -280,10 +280,10 @@ group_menu(XButtonEvent *e)
|
||||
XCALLOC(mi, struct menu);
|
||||
if (gc->hidden)
|
||||
snprintf(mi->text, sizeof(mi->text), "%d: [%s]",
|
||||
gc->shortcut, gc->name);
|
||||
gc->shortcut, gc->name);
|
||||
else
|
||||
snprintf(mi->text, sizeof(mi->text), "%d: %s",
|
||||
gc->shortcut, gc->name);
|
||||
gc->shortcut, gc->name);
|
||||
mi->ctx = gc;
|
||||
TAILQ_INSERT_TAIL(&menuq, mi, entry);
|
||||
}
|
||||
@ -315,11 +315,11 @@ group_alltoggle(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i=0; i < CALMWM_NGROUPS; i++) {
|
||||
for (i = 0; i < CALMWM_NGROUPS; i++) {
|
||||
if (Grouphideall)
|
||||
_group_show(&Groups[i]);
|
||||
else
|
||||
_group_hide(&Groups[i]);
|
||||
_group_hide(&Groups[i]);
|
||||
}
|
||||
|
||||
if (Grouphideall)
|
||||
|
@ -21,9 +21,9 @@
|
||||
|
||||
#include <sys/tree.h>
|
||||
|
||||
#define HASH_ENTRY SPLAY_ENTRY
|
||||
#define HASH_ENTRY SPLAY_ENTRY
|
||||
|
||||
#define HASH_HEAD(name, type, nbuckets) \
|
||||
#define HASH_HEAD(name, type, nbuckets) \
|
||||
SPLAY_HEAD(name##_HASH_TREE, type); \
|
||||
struct name { \
|
||||
struct name##_HASH_TREE buckets[nbuckets]; \
|
||||
@ -52,7 +52,7 @@ struct type *name##_HASH_TREE_FIND(struct name *head, struct type *find) \
|
||||
{ \
|
||||
struct name##_HASH_TREE *bucket = \
|
||||
&head->buckets[(*head->hashfn)(find) % HASH_NBUCKETS(head)]; \
|
||||
return SPLAY_FIND(name##_HASH_TREE, bucket, find); \
|
||||
return (SPLAY_FIND(name##_HASH_TREE, bucket, find)); \
|
||||
} \
|
||||
void name##_HASH_TREE_INSERT(struct name *head, struct type *insert) \
|
||||
{ \
|
||||
|
@ -15,7 +15,7 @@
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* $Id: headers.h,v 1.4 2008/01/11 16:06:44 oga Exp $
|
||||
* $Id: headers.h,v 1.5 2008/04/15 20:24:41 oga Exp $
|
||||
*/
|
||||
|
||||
#ifndef _CALMWM_HEADERS_H_
|
||||
@ -41,7 +41,7 @@
|
||||
|
||||
#include <X11/cursorfont.h>
|
||||
#include <X11/extensions/shape.h>
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xutil.h>
|
||||
#include <X11/keysym.h>
|
||||
#include <X11/Xatom.h>
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* calmwm - the calm window manager
|
||||
*
|
||||
*
|
||||
* Copyright (c) 2004 Martin Murray <mmurray@monkey.org>
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
@ -15,7 +15,7 @@
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* $Id: kbfunc.c,v 1.19 2008/04/08 17:38:27 oga Exp $
|
||||
* $Id: kbfunc.c,v 1.20 2008/04/15 20:24:41 oga Exp $
|
||||
*/
|
||||
|
||||
#include <paths.h>
|
||||
@ -23,11 +23,11 @@
|
||||
#include "headers.h"
|
||||
#include "calmwm.h"
|
||||
|
||||
#define KNOWN_HOSTS ".ssh/known_hosts"
|
||||
#define HASH_MARKER "|1|"
|
||||
#define MOVE_AMOUNT 1
|
||||
#define KNOWN_HOSTS ".ssh/known_hosts"
|
||||
#define HASH_MARKER "|1|"
|
||||
#define MOVE_AMOUNT 1
|
||||
|
||||
extern int _xev_quit;
|
||||
extern int _xev_quit;
|
||||
|
||||
void
|
||||
kbfunc_client_lower(struct client_ctx *cc, void *arg)
|
||||
@ -57,11 +57,11 @@ kbfunc_client_move(struct client_ctx *cc, void *arg)
|
||||
amt = amt*10;
|
||||
}
|
||||
|
||||
switch(flags) {
|
||||
switch (flags) {
|
||||
case CWM_UP:
|
||||
my -= amt;
|
||||
break;
|
||||
case CWM_DOWN:
|
||||
case CWM_DOWN:
|
||||
my += amt;
|
||||
break;
|
||||
case CWM_RIGHT:
|
||||
@ -97,11 +97,11 @@ kbfunc_client_resize(struct client_ctx *cc, void *arg)
|
||||
amt = amt*10;
|
||||
}
|
||||
|
||||
switch(flags) {
|
||||
switch (flags) {
|
||||
case CWM_UP:
|
||||
my -= amt;
|
||||
break;
|
||||
case CWM_DOWN:
|
||||
case CWM_DOWN:
|
||||
my += amt;
|
||||
break;
|
||||
case CWM_RIGHT:
|
||||
@ -139,11 +139,11 @@ kbfunc_ptrmove(struct client_ctx *cc, void *arg)
|
||||
flags -= CWM_BIGMOVE;
|
||||
amt = amt * 10;
|
||||
}
|
||||
switch(flags) {
|
||||
switch (flags) {
|
||||
case CWM_UP:
|
||||
my -= amt;
|
||||
break;
|
||||
case CWM_DOWN:
|
||||
case CWM_DOWN:
|
||||
my += amt;
|
||||
break;
|
||||
case CWM_RIGHT:
|
||||
@ -167,11 +167,11 @@ void
|
||||
kbfunc_client_search(struct client_ctx *scratch, void *arg)
|
||||
{
|
||||
struct menu_q menuq;
|
||||
struct client_ctx *cc, *old_cc = client_current();
|
||||
struct client_ctx *cc, *old_cc = client_current();
|
||||
struct menu *mi;
|
||||
|
||||
|
||||
TAILQ_INIT(&menuq);
|
||||
|
||||
|
||||
TAILQ_FOREACH(cc, &Clientq, entry) {
|
||||
XCALLOC(mi, struct menu);
|
||||
strlcpy(mi->text, cc->name, sizeof(mi->text));
|
||||
@ -180,8 +180,8 @@ kbfunc_client_search(struct client_ctx *scratch, void *arg)
|
||||
}
|
||||
|
||||
if ((mi = search_start(&menuq,
|
||||
search_match_client, search_print_client,
|
||||
"window", 0)) != NULL) {
|
||||
search_match_client, search_print_client,
|
||||
"window", 0)) != NULL) {
|
||||
cc = (struct client_ctx *)mi->ctx;
|
||||
if (cc->flags & CLIENT_HIDDEN)
|
||||
client_unhide(cc);
|
||||
@ -215,7 +215,7 @@ kbfunc_menu_search(struct client_ctx *scratch, void *arg)
|
||||
}
|
||||
|
||||
if ((mi = search_start(&menuq,
|
||||
search_match_text, NULL, "application", 0)) != NULL)
|
||||
search_match_text, NULL, "application", 0)) != NULL)
|
||||
u_spawn(((struct cmd *)mi->ctx)->image);
|
||||
|
||||
while ((mi = TAILQ_FIRST(&menuq)) != NULL) {
|
||||
@ -278,7 +278,7 @@ kbfunc_exec(struct client_ctx *scratch, void *arg)
|
||||
char *label;
|
||||
|
||||
int cmd = (int)arg;
|
||||
switch(cmd) {
|
||||
switch (cmd) {
|
||||
case CWM_EXEC_PROGRAM:
|
||||
label = "exec";
|
||||
break;
|
||||
@ -353,7 +353,7 @@ kbfunc_exec(struct client_ctx *scratch, void *arg)
|
||||
xfree(path);
|
||||
|
||||
if ((mi = search_start(&menuq,
|
||||
search_match_exec, NULL, label, 1)) != NULL) {
|
||||
search_match_exec, NULL, label, 1)) != NULL) {
|
||||
switch (cmd) {
|
||||
case CWM_EXEC_PROGRAM:
|
||||
u_spawn(mi->text);
|
||||
@ -427,7 +427,7 @@ kbfunc_ssh(struct client_ctx *scratch, void *arg)
|
||||
|
||||
|
||||
if ((mi = search_start(&menuq,
|
||||
search_match_exec, NULL, "ssh", 1)) != NULL) {
|
||||
search_match_exec, NULL, "ssh", 1)) != NULL) {
|
||||
conf_reload(&Conf);
|
||||
l = snprintf(cmd, sizeof(cmd), "%s -e ssh %s", Conf.termpath,
|
||||
mi->text);
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: parse.y,v 1.3 2008/04/15 18:46:58 oga Exp $ */
|
||||
/* $OpenBSD: parse.y,v 1.4 2008/04/15 20:24:41 oga Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2002, 2003, 2004 Henning Brauer <henning@openbsd.org>
|
||||
@ -40,16 +40,17 @@ static struct file {
|
||||
int lineno;
|
||||
int errors;
|
||||
} *file;
|
||||
struct file *pushfile(const char *);
|
||||
int popfile(void);
|
||||
int yyparse(void);
|
||||
int yylex(void);
|
||||
int yyerror(const char *, ...);
|
||||
int kw_cmp(const void *, const void *);
|
||||
int lookup(char *);
|
||||
int lgetc(int);
|
||||
int lungetc(int);
|
||||
int findeol(void);
|
||||
|
||||
struct file *pushfile(const char *);
|
||||
int popfile(void);
|
||||
int yyparse(void);
|
||||
int yylex(void);
|
||||
int yyerror(const char *, ...);
|
||||
int kw_cmp(const void *, const void *);
|
||||
int lookup(char *);
|
||||
int lgetc(int);
|
||||
int lungetc(int);
|
||||
int findeol(void);
|
||||
|
||||
static struct conf *conf;
|
||||
|
||||
@ -97,7 +98,7 @@ string : string STRING {
|
||||
yesno : YES { $$ = 1; }
|
||||
| NO { $$ = 0; }
|
||||
;
|
||||
|
||||
|
||||
main : FONTNAME STRING {
|
||||
if (conf->DefaultFontName != NULL &&
|
||||
conf->DefaultFontName != DEFAULTFONTNAME)
|
||||
@ -178,9 +179,9 @@ struct keywords {
|
||||
int
|
||||
yyerror(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
file->errors++;
|
||||
va_list ap;
|
||||
|
||||
file->errors++;
|
||||
va_start(ap, fmt);
|
||||
fprintf(stderr, "%s:%d: ", file->name, yylval.lineno);
|
||||
vfprintf(stderr, fmt, ap);
|
||||
@ -548,36 +549,42 @@ parse_config(const char *filename, struct conf *xconf)
|
||||
|
||||
xconf->flags = conf->flags;
|
||||
|
||||
for (cmd = TAILQ_FIRST(&conf->cmdq); cmd != NULL; cmd = cmdnext) {
|
||||
for (cmd = TAILQ_FIRST(&conf->cmdq); cmd != NULL;
|
||||
cmd = cmdnext) {
|
||||
cmdnext = TAILQ_NEXT(cmd, entry);
|
||||
|
||||
TAILQ_REMOVE(&conf->cmdq, cmd, entry);
|
||||
TAILQ_INSERT_TAIL(&xconf->cmdq, cmd, entry);
|
||||
}
|
||||
|
||||
for (kb = TAILQ_FIRST(&conf->keybindingq); kb != NULL; kb = kbnext) {
|
||||
for (kb = TAILQ_FIRST(&conf->keybindingq); kb != NULL;
|
||||
kb = kbnext) {
|
||||
kbnext = TAILQ_NEXT(kb, entry);
|
||||
|
||||
TAILQ_REMOVE(&conf->keybindingq, kb, entry);
|
||||
TAILQ_INSERT_TAIL(&xconf->keybindingq, kb, entry);
|
||||
}
|
||||
|
||||
for (ag = TAILQ_FIRST(&conf->autogroupq); ag != NULL; ag = agnext) {
|
||||
for (ag = TAILQ_FIRST(&conf->autogroupq); ag != NULL;
|
||||
ag = agnext) {
|
||||
agnext = TAILQ_NEXT(ag, entry);
|
||||
|
||||
TAILQ_REMOVE(&conf->autogroupq, ag, entry);
|
||||
TAILQ_INSERT_TAIL(&xconf->autogroupq, ag, entry);
|
||||
}
|
||||
|
||||
for (wm = TAILQ_FIRST(&conf->ignoreq); wm != NULL; wm = wmnext) {
|
||||
for (wm = TAILQ_FIRST(&conf->ignoreq); wm != NULL;
|
||||
wm = wmnext) {
|
||||
wmnext = TAILQ_NEXT(wm, entry);
|
||||
|
||||
TAILQ_REMOVE(&conf->ignoreq, wm, entry);
|
||||
TAILQ_INSERT_TAIL(&xconf->ignoreq, wm, entry);
|
||||
}
|
||||
|
||||
strlcpy(xconf->termpath, conf->termpath, sizeof(xconf->termpath));
|
||||
strlcpy(xconf->lockpath, conf->lockpath, sizeof(xconf->lockpath));
|
||||
strlcpy(xconf->termpath, conf->termpath,
|
||||
sizeof(xconf->termpath));
|
||||
strlcpy(xconf->lockpath, conf->lockpath,
|
||||
sizeof(xconf->lockpath));
|
||||
|
||||
xconf->DefaultFontName = conf->DefaultFontName;
|
||||
|
||||
|
@ -15,14 +15,14 @@
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* $Id: screen.c,v 1.3 2008/01/11 16:06:44 oga Exp $
|
||||
* $Id: screen.c,v 1.4 2008/04/15 20:24:41 oga Exp $
|
||||
*/
|
||||
|
||||
#include "headers.h"
|
||||
#include "calmwm.h"
|
||||
|
||||
extern struct screen_ctx_q Screenq;
|
||||
extern struct screen_ctx *Curscreen;
|
||||
extern struct screen_ctx_q Screenq;
|
||||
extern struct screen_ctx *Curscreen;
|
||||
|
||||
static void
|
||||
_clearwindow_cb(int sig)
|
||||
@ -76,7 +76,6 @@ screen_updatestackingorder(void)
|
||||
void
|
||||
screen_init(void)
|
||||
{
|
||||
|
||||
struct screen_ctx *sc = screen_current();
|
||||
|
||||
sc->cycle_client = NULL;
|
||||
|
@ -14,7 +14,7 @@
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* $Id: search.c,v 1.7 2008/03/22 14:09:02 oga Exp $
|
||||
* $Id: search.c,v 1.8 2008/04/15 20:24:41 oga Exp $
|
||||
*/
|
||||
|
||||
#include "headers.h"
|
||||
@ -22,7 +22,7 @@
|
||||
|
||||
#define SearchMask (KeyPressMask|ExposureMask)
|
||||
|
||||
static int _strsubmatch(char *, char *, int);
|
||||
static int _strsubmatch(char *, char *, int);
|
||||
|
||||
void
|
||||
search_init(struct screen_ctx *sc)
|
||||
@ -39,7 +39,7 @@ search_init(struct screen_ctx *sc)
|
||||
|
||||
struct menu *
|
||||
search_start(struct menu_q *menuq,
|
||||
void (*match)(struct menu_q *, struct menu_q *, char *),
|
||||
void (*match)(struct menu_q *, struct menu_q *, char *),
|
||||
void (*print)(struct menu *mi, int print),
|
||||
char *prompt, int dummy)
|
||||
{
|
||||
@ -320,16 +320,16 @@ search_match_client(struct menu_q *menuq, struct menu_q *resultq, char *search)
|
||||
if (cc->label != NULL && _strsubmatch(search, cc->label, 0)) {
|
||||
cc->matchname = cc->label;
|
||||
tier = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Then, on window names. */
|
||||
if (tier < 0) {
|
||||
TAILQ_FOREACH_REVERSE(wn, &cc->nameq, winname_q, entry)
|
||||
if (_strsubmatch(search, wn->name, 0)) {
|
||||
cc->matchname = wn->name;
|
||||
tier = 2;
|
||||
break;
|
||||
}
|
||||
if (_strsubmatch(search, wn->name, 0)) {
|
||||
cc->matchname = wn->name;
|
||||
tier = 2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -15,7 +15,7 @@
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* $Id: util.c,v 1.5 2008/02/20 13:00:18 oga Exp $
|
||||
* $Id: util.c,v 1.6 2008/04/15 20:24:41 oga Exp $
|
||||
*/
|
||||
|
||||
#include "headers.h"
|
||||
@ -65,28 +65,30 @@ exec_wm(char *argstr)
|
||||
warn(args[0]);
|
||||
}
|
||||
|
||||
int dirent_isdir(char *filename) {
|
||||
struct stat buffer;
|
||||
int return_value;
|
||||
int
|
||||
dirent_isdir(char *filename)
|
||||
{
|
||||
struct stat buffer;
|
||||
int return_value;
|
||||
|
||||
return_value = stat(filename, &buffer);
|
||||
return_value = stat(filename, &buffer);
|
||||
|
||||
if(return_value == -1)
|
||||
return 0;
|
||||
else
|
||||
return S_ISDIR(buffer.st_mode);
|
||||
if (return_value == -1)
|
||||
return (0);
|
||||
else
|
||||
return (S_ISDIR(buffer.st_mode));
|
||||
}
|
||||
|
||||
int dirent_islink(char *filename) {
|
||||
struct stat buffer;
|
||||
int return_value;
|
||||
int
|
||||
dirent_islink(char *filename)
|
||||
{
|
||||
struct stat buffer;
|
||||
int return_value;
|
||||
|
||||
return_value = lstat(filename, &buffer);
|
||||
return_value = lstat(filename, &buffer);
|
||||
|
||||
if(return_value == -1)
|
||||
return 0;
|
||||
else
|
||||
return S_ISLNK(buffer.st_mode);
|
||||
if (return_value == -1)
|
||||
return (0);
|
||||
else
|
||||
return (S_ISLNK(buffer.st_mode));
|
||||
}
|
||||
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* $Id: xevents.c,v 1.10 2008/04/08 00:09:50 simon Exp $
|
||||
* $Id: xevents.c,v 1.11 2008/04/15 20:24:41 oga Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -46,13 +46,12 @@ xev_handle_maprequest(struct xevent *xev, XEvent *ee)
|
||||
if (old_cc != NULL)
|
||||
client_ptrsave(old_cc);
|
||||
|
||||
if ((cc = client_find(e->window)) == NULL) {
|
||||
if ((cc = client_find(e->window)) == NULL) {
|
||||
XGetWindowAttributes(X_Dpy, e->window, &xattr);
|
||||
cc = client_new(e->window, screen_fromroot(xattr.root), 1);
|
||||
sc = CCTOSC(cc);
|
||||
} else {
|
||||
} else
|
||||
cc->beepbeep = 1;
|
||||
}
|
||||
|
||||
#ifdef notyet /* XXX - possibly, we shouldn't map if
|
||||
* the window is withdrawn. */
|
||||
@ -80,7 +79,7 @@ xev_handle_unmapnotify(struct xevent *xev, XEvent *ee)
|
||||
#ifdef notyet
|
||||
/* XXX disable the ptrwarp until we handle it
|
||||
* better. */
|
||||
if (!client_delete(cc, e->send_event, 0) && wascurrent)
|
||||
if (!client_delete(cc, e->send_event, 0) && wascurrent)
|
||||
;/* client_ptrwarp(new_cc); */
|
||||
#endif
|
||||
}
|
||||
@ -121,13 +120,13 @@ xev_handle_configurerequest(struct xevent *xev, XEvent *ee)
|
||||
if (e->value_mask & CWY)
|
||||
cc->geom.y = e->y;
|
||||
|
||||
if (cc->geom.x == 0 &&
|
||||
if (cc->geom.x == 0 &&
|
||||
cc->geom.width >= DisplayWidth(X_Dpy, sc->which))
|
||||
cc->geom.x -= cc->bwidth;
|
||||
|
||||
if (cc->geom.y == 0 &&
|
||||
if (cc->geom.y == 0 &&
|
||||
cc->geom.height >= DisplayHeight(X_Dpy, sc->which))
|
||||
cc->geom.y -= cc->bwidth;
|
||||
cc->geom.y -= cc->bwidth;
|
||||
|
||||
client_gravitate(cc, 1);
|
||||
|
||||
@ -164,7 +163,7 @@ xev_handle_propertynotify(struct xevent *xev, XEvent *ee)
|
||||
long tmp;
|
||||
|
||||
if ((cc = client_find(e->window)) != NULL) {
|
||||
switch(e->atom) {
|
||||
switch (e->atom) {
|
||||
case XA_WM_NORMAL_HINTS:
|
||||
XGetWMNormalHints(X_Dpy, cc->win, cc->size, &tmp);
|
||||
break;
|
||||
@ -260,7 +259,7 @@ xev_handle_buttonpress(struct xevent *xev, XEvent *ee)
|
||||
if (cc->label != NULL)
|
||||
wname = cc->label;
|
||||
else
|
||||
wname = cc->name;
|
||||
wname = cc->name;
|
||||
|
||||
if (wname == NULL)
|
||||
continue;
|
||||
@ -370,8 +369,8 @@ xev_handle_keypress(struct xevent *xev, XEvent *ee)
|
||||
|
||||
keysym = XKeycodeToKeysym(X_Dpy, e->keycode, 0);
|
||||
skeysym = XKeycodeToKeysym(X_Dpy, e->keycode, 1);
|
||||
|
||||
TAILQ_FOREACH(kb, &Conf.keybindingq, entry) {
|
||||
|
||||
TAILQ_FOREACH(kb, &Conf.keybindingq, entry) {
|
||||
if (keysym != kb->keysym && skeysym == kb->keysym)
|
||||
modshift = ShiftMask;
|
||||
else
|
||||
@ -381,15 +380,15 @@ xev_handle_keypress(struct xevent *xev, XEvent *ee)
|
||||
continue;
|
||||
|
||||
if ((kb->keycode != 0 && kb->keysym == NoSymbol &&
|
||||
kb->keycode == e->keycode) || kb->keysym ==
|
||||
(modshift == 0 ? keysym : skeysym))
|
||||
kb->keycode == e->keycode) || kb->keysym ==
|
||||
(modshift == 0 ? keysym : skeysym))
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (kb == NULL)
|
||||
goto out;
|
||||
|
||||
if ((kb->flags & (KBFLAG_NEEDCLIENT)) &&
|
||||
if ((kb->flags & (KBFLAG_NEEDCLIENT)) &&
|
||||
(cc = client_find(e->window)) == NULL &&
|
||||
(cc = client_current()) == NULL)
|
||||
if (kb->flags & KBFLAG_NEEDCLIENT)
|
||||
@ -416,7 +415,7 @@ xev_handle_keyrelease(struct xevent *xev, XEvent *ee)
|
||||
goto out;
|
||||
|
||||
sc->altpersist = 0;
|
||||
|
||||
|
||||
/*
|
||||
* XXX - better interface... xevents should not know about
|
||||
* how/when to mtf.
|
||||
@ -449,9 +448,9 @@ out:
|
||||
* X Event handling
|
||||
*/
|
||||
|
||||
static struct xevent_q _xevq, _xevq_putaway;
|
||||
static short _xev_q_lock = 0;
|
||||
volatile sig_atomic_t _xev_quit = 0;
|
||||
static struct xevent_q _xevq, _xevq_putaway;
|
||||
static short _xev_q_lock = 0;
|
||||
volatile sig_atomic_t _xev_quit = 0;
|
||||
|
||||
void
|
||||
xev_init(void)
|
||||
@ -529,7 +528,7 @@ xev_loop(void)
|
||||
#ifdef DIAGNOSTIC
|
||||
if (TAILQ_EMPTY(&_xevq))
|
||||
errx(1, "X event queue empty");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
XNextEvent(X_Dpy, &e);
|
||||
type = e.type;
|
||||
|
@ -15,7 +15,7 @@
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* $Id: xutil.c,v 1.4 2008/01/16 11:39:20 oga Exp $
|
||||
* $Id: xutil.c,v 1.5 2008/04/15 20:24:41 oga Exp $
|
||||
*/
|
||||
|
||||
#include "headers.h"
|
||||
@ -45,7 +45,7 @@ xu_ptr_ungrab(void)
|
||||
int
|
||||
xu_btn_grab(Window win, int mask, u_int btn)
|
||||
{
|
||||
return (XGrabButton(X_Dpy, btn, mask, win,
|
||||
return (XGrabButton(X_Dpy, btn, mask, win,
|
||||
False, ButtonMask, GrabModeAsync,
|
||||
GrabModeSync, None, None) == GrabSuccess ? 0 : -1);
|
||||
}
|
||||
@ -63,7 +63,7 @@ xu_ptr_getpos(Window rootwin, int *x, int *y)
|
||||
u_int tmp2;
|
||||
Window w0, w1;
|
||||
|
||||
XQueryPointer(X_Dpy, rootwin, &w0, &w1, &tmp0, &tmp1, x, y, &tmp2);
|
||||
XQueryPointer(X_Dpy, rootwin, &w0, &w1, &tmp0, &tmp1, x, y, &tmp2);
|
||||
}
|
||||
|
||||
void
|
||||
@ -82,7 +82,7 @@ xu_key_grab(Window win, int mask, int keysym)
|
||||
(XKeycodeToKeysym(X_Dpy, code, 1) == keysym))
|
||||
mask |= ShiftMask;
|
||||
|
||||
XGrabKey(X_Dpy, XKeysymToKeycode(X_Dpy, keysym), mask, win, True,
|
||||
XGrabKey(X_Dpy, XKeysymToKeycode(X_Dpy, keysym), mask, win, True,
|
||||
GrabModeAsync, GrabModeAsync);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user