summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOkan Demirmen <okan@cvs.openbsd.org>2020-04-16 13:32:36 +0000
committerOkan Demirmen <okan@cvs.openbsd.org>2020-04-16 13:32:36 +0000
commit14889442d4c7a62ea5d2585be8b3629d37b0e57e (patch)
tree74ede640513f52fcd2aee9d84d715cbe9ea0e15e
parent651e70633845bd4eff37fdcaef8b969028be002d (diff)
Allow configuring a percentage window size of the master window during
htile/vtile actions. From Uwe Werler, with a few manpage tweaks.
-rw-r--r--app/cwm/calmwm.h4
-rw-r--r--app/cwm/client.c8
-rw-r--r--app/cwm/conf.c4
-rw-r--r--app/cwm/cwmrc.526
-rw-r--r--app/cwm/parse.y20
5 files changed, 51 insertions, 11 deletions
diff --git a/app/cwm/calmwm.h b/app/cwm/calmwm.h
index bd15a877e..a0aeafa8f 100644
--- a/app/cwm/calmwm.h
+++ b/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.
*
- * $OpenBSD: calmwm.h,v 1.374 2020/03/24 14:47:29 okan Exp $
+ * $OpenBSD: calmwm.h,v 1.375 2020/04/16 13:32:35 okan Exp $
*/
#ifndef _CALMWM_H_
@@ -291,6 +291,8 @@ struct conf {
int bwidth;
int mamount;
int snapdist;
+ int htile;
+ int vtile;
struct gap gap;
char *color[CWM_COLOR_NITEMS];
char *font;
diff --git a/app/cwm/client.c b/app/cwm/client.c
index 0884358f5..90ec977c5 100644
--- a/app/cwm/client.c
+++ b/app/cwm/client.c
@@ -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.
*
- * $OpenBSD: client.c,v 1.262 2020/03/24 14:47:29 okan Exp $
+ * $OpenBSD: client.c,v 1.263 2020/04/16 13:32:35 okan Exp $
*/
#include <sys/types.h>
@@ -940,7 +940,8 @@ client_htile(struct client_ctx *cc)
cc->geom.x = area.x;
cc->geom.y = area.y;
cc->geom.w = area.w - (cc->bwidth * 2);
- cc->geom.h = (area.h - (cc->bwidth * 2)) / 2;
+ if (Conf.htile > 0)
+ cc->geom.h = ((area.h - (cc->bwidth * 2)) * Conf.htile) / 100;
client_resize(cc, 1);
client_ptr_warp(cc);
@@ -1007,7 +1008,8 @@ client_vtile(struct client_ctx *cc)
cc->flags &= ~CLIENT_VMAXIMIZED;
cc->geom.x = area.x;
cc->geom.y = area.y;
- cc->geom.w = (area.w - (cc->bwidth * 2)) / 2;
+ if (Conf.vtile > 0)
+ cc->geom.w = ((area.w - (cc->bwidth * 2)) * Conf.vtile) / 100;
cc->geom.h = area.h - (cc->bwidth * 2);
client_resize(cc, 1);
client_ptr_warp(cc);
diff --git a/app/cwm/conf.c b/app/cwm/conf.c
index df6f56d7c..1e95bd9e1 100644
--- a/app/cwm/conf.c
+++ b/app/cwm/conf.c
@@ -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.
*
- * $OpenBSD: conf.c,v 1.251 2020/02/27 14:56:39 okan Exp $
+ * $OpenBSD: conf.c,v 1.252 2020/04/16 13:32:35 okan Exp $
*/
#include <sys/types.h>
@@ -281,6 +281,8 @@ conf_init(struct conf *c)
c->stickygroups = 0;
c->bwidth = 1;
c->mamount = 1;
+ c->htile = 50;
+ c->vtile = 50;
c->snapdist = 0;
c->ngroups = 0;
c->nameqlen = 5;
diff --git a/app/cwm/cwmrc.5 b/app/cwm/cwmrc.5
index a49ee35d5..bca861b0b 100644
--- a/app/cwm/cwmrc.5
+++ b/app/cwm/cwmrc.5
@@ -1,4 +1,4 @@
-.\" $OpenBSD: cwmrc.5,v 1.75 2020/03/13 20:50:07 tim Exp $
+.\" $OpenBSD: cwmrc.5,v 1.76 2020/04/16 13:32:35 okan Exp $
.\"
.\" Copyright (c) 2004,2005 Marius Aamodt Eriksen <marius@monkey.org>
.\"
@@ -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.
.\"
-.Dd $Mdocdate: March 13 2020 $
+.Dd $Mdocdate: April 16 2020 $
.Dt CWMRC 5
.Os
.Sh NAME
@@ -183,6 +183,13 @@ This
can be used for applications such as
.Xr xclock 1 ,
where the user may wish to remain visible.
+.It Ic htile Ar percent
+Set the percentage of screen the master window should occupy
+after calling
+.Ic window-htile .
+If set to 0, the horizontal size of the master window will
+remain unchanged.
+The default is 50.
.It Ic ignore Ar windowname
Ignore, and do not warp to, windows with the name
.Ar windowname
@@ -216,6 +223,13 @@ A special
keyword
.Dq all
can be used to unbind all buttons.
+.It Ic vtile Ar percent
+Set the percentage of screen the master window should occupy
+after calling
+.Ic window-vtile .
+If set to 0, the vertical size of the master window will
+remain unchanged.
+The default is 50.
.It Ic wm Ar name path
Every
.Ar name
@@ -303,11 +317,15 @@ Vertically maximize current window (gap + border honored).
Horizontally maximize current window (gap + border honored).
.It window-htile
Current window is placed at the top of the screen, maximized
-horizontally and resized to half of the vertical screen space.
+horizontally and resized to
+.Ar htile
+(default half) of the vertical screen space.
Other windows in its group share remaining screen space.
.It window-vtile
Current window is placed on the left of the screen, maximized vertically
-and resized to half of the horizontal screen space.
+and resized to
+.Ar vtile
+(default half) of the horizontal screen space.
Other windows in its group share remaining screen space.
.It window-move
Move current window.
diff --git a/app/cwm/parse.y b/app/cwm/parse.y
index ed8048ace..c1bf8c563 100644
--- a/app/cwm/parse.y
+++ b/app/cwm/parse.y
@@ -1,4 +1,4 @@
-/* $OpenBSD: parse.y,v 1.72 2018/11/09 16:00:54 okan Exp $ */
+/* $OpenBSD: parse.y,v 1.73 2020/04/16 13:32:35 okan Exp $ */
/*
* Copyright (c) 2002, 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -71,7 +71,7 @@ typedef struct {
%token BINDKEY UNBINDKEY BINDMOUSE UNBINDMOUSE
%token FONTNAME STICKY GAP
%token AUTOGROUP COMMAND IGNORE WM
-%token YES NO BORDERWIDTH MOVEAMOUNT
+%token YES NO BORDERWIDTH MOVEAMOUNT HTILE VTILE
%token COLOR SNAPDIST
%token ACTIVEBORDER INACTIVEBORDER URGENCYBORDER
%token GROUPBORDER UNGROUPBORDER
@@ -122,6 +122,20 @@ main : FONTNAME STRING {
}
conf->bwidth = $2;
}
+ | HTILE NUMBER {
+ if ($2 < 0 || $2 > 99) {
+ yyerror("invalid htile percent");
+ YYERROR;
+ }
+ conf->htile = $2;
+ }
+ | VTILE NUMBER {
+ if ($2 < 0 || $2 > 99) {
+ yyerror("invalid vtile percent");
+ YYERROR;
+ }
+ conf->vtile = $2;
+ }
| MOVEAMOUNT NUMBER {
if ($2 < 0 || $2 > INT_MAX) {
yyerror("invalid movemount");
@@ -316,6 +330,7 @@ lookup(char *s)
{ "fontname", FONTNAME},
{ "gap", GAP},
{ "groupborder", GROUPBORDER},
+ { "htile", HTILE},
{ "ignore", IGNORE},
{ "inactiveborder", INACTIVEBORDER},
{ "menubg", MENUBG},
@@ -329,6 +344,7 @@ lookup(char *s)
{ "unbind-mouse", UNBINDMOUSE},
{ "ungroupborder", UNGROUPBORDER},
{ "urgencyborder", URGENCYBORDER},
+ { "vtile", VTILE},
{ "wm", WM},
{ "yes", YES}
};