summaryrefslogtreecommitdiff
path: root/vwm.h
diff options
context:
space:
mode:
authorVito Caputo <vcaputo@gnugeneration.com>2014-09-14 07:16:02 -0700
committerVito Caputo <vcaputo@gnugeneration.com>2014-09-14 09:38:35 -0700
commitc9554e3a6a27802aea1206ec492727d616f23a0a (patch)
tree359abfd4b25a9d3f76453520af2eed57a1d92a2b /vwm.h
parenta4430b79845c0c5417b8725a4272f91e04d42349 (diff)
Import of vwm2 changes from published source tgz
Major changes from vwm1: - GNU screen-based "console" integration for monitored launching of X clients via screen remote commands, replacing the simple double fork approach used in vwm1. Clients exiting with non-zero status retain their screen window in the console for 86400 seconds, facilitating easier debugging and troubleshooting. The console xterm is accessed in the shelf and has a red border by default. - Xinerama/multihead support backported from vwm3, including the "screen fencing" implementation facilitating screen-oriented window focus cycling. Shifting the Mod1-Tab window cycling focuses the next most recently used window on another display. Unshifted stays confined to the current display. - SYNC extension integration for prioritizing the WM over other X clients - setpriority() integration for "nicing" X client processes relative to the WM process - "autoconf" windows, horizontal/vertical halfscreen windows, quarterscreen windows in addition to the full/all screen functions. Mod1-[ and Mod1-] resize the focused window vertically with left and right justification to half the screen in width. Shifting these does the same thing just horizontally. Repeating the operation with a second ] or [ press quarters the window in the respective screen corner, extending upon the repeater pattern established in vwm1 for full/allscreen windows with Mod1-k[k[k]] - Exit now requires 3 consecutive strikes of Mod1-Esc - Introduction of a README file
Diffstat (limited to 'vwm.h')
-rw-r--r--vwm.h28
1 files changed, 15 insertions, 13 deletions
diff --git a/vwm.h b/vwm.h
index 57c2c3b..a5d596e 100644
--- a/vwm.h
+++ b/vwm.h
@@ -8,14 +8,14 @@
#include "list.h"
-#define VWM_ERROR(fmt, args...) fprintf(stderr, "%s:%i\t%s() "fmt"\n", __FILE__, __LINE__, __FUNCTION__, ##args)
-#define VWM_PERROR(fmt, args...) fprintf(stderr, "%s:%i\t%s() "fmt"; %s\n", __FILE__, __LINE__, __FUNCTION__, ##args, strerror(errno))
-#define VWM_BUG(fmt, args...) fprintf(stderr, "BUG %s:%i\t%s() "fmt"; %s\n", __FILE__, __LINE__, __FUNCTION__, ##args, strerror(errno))
+#define VWM_ERROR(fmt, args...) fprintf(stderr, "%s:%i\t%s() "fmt"\n", __FILE__, __LINE__, __FUNCTION__, ##args)
+#define VWM_PERROR(fmt, args...) fprintf(stderr, "%s:%i\t%s() "fmt"; %s\n", __FILE__, __LINE__, __FUNCTION__, ##args, strerror(errno))
+#define VWM_BUG(fmt, args...) fprintf(stderr, "BUG %s:%i\t%s() "fmt"; %s\n", __FILE__, __LINE__, __FUNCTION__, ##args, strerror(errno))
#ifdef TRACE
-#define VWM_TRACE(fmt, args...) fprintf(stderr, "%s:%i\t%s() "fmt"\n", __FILE__, __LINE__, __FUNCTION__, ##args)
+#define VWM_TRACE(fmt, args...) fprintf(stderr, "%s:%i\t%s() "fmt"\n", __FILE__, __LINE__, __FUNCTION__, ##args)
#else
-#define VWM_TRACE(fmt, args...)
+#define VWM_TRACE(fmt, args...) do { } while(0)
#endif
typedef struct _vwm_box_t {
@@ -24,26 +24,28 @@ typedef struct _vwm_box_t {
} vwm_box_t;
typedef struct _vwm_desktop_t {
- list_head_t desktops; /* global list of (virtual) desktops */
- list_head_t desktops_mru; /* global list of (virtual) desktops in MRU order */
- char *name; /* name of the desktop (TODO) */
- struct _vwm_window_t *focused_window; /* the focused window on this virtual desktop */
+ list_head_t desktops; /* global list of (virtual) desktops */
+ list_head_t desktops_mru; /* global list of (virtual) desktops in MRU order */
+ char *name; /* name of the desktop (TODO) */
+ struct _vwm_window_t *focused_window; /* the focused window on this virtual desktop */
} vwm_desktop_t;
typedef struct _vwm_window_t {
list_head_t windows; /* global list of managed client windows */
- struct _vwm_desktop_t *desktop; /* desktop this window belongs to currently */
+ vwm_desktop_t *desktop; /* desktop this window belongs to currently */
char *name; /* client name */
- vwm_box_t client; /* box of the configured client window relative to the root */
+ vwm_box_t client; /* box of the client-configured window relative to the root */
+ vwm_box_t config; /* box for the current window configuration maintained in handling of ConfigureNotify events */
Window window; /* the X window being managed by vwm */
XSizeHints *hints; /* hints the client supplied */
long hints_supplied; /* bitfield reflecting the hints the client supplied */
- unsigned int fullscreened:2; /* is the window fullscreened (1)? is the window "allscreened" with the border obscured (2)? */
- unsigned int mapped:1; /* has mapping been requested on the window? */
+ unsigned int autoconfigured:3; /* autoconfigured window states (none/quarter/half/full/all) */
+ unsigned int unmapping:1; /* is the window being unmapped? (by vwm) */
+ unsigned int configuring:1; /* is the window being configured/placed? (by vwm) */
unsigned int shelved:1; /* is the window shelved? */
} vwm_window_t;
© All Rights Reserved