aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorokan2019-02-25 16:40:49 +0000
committerokan2019-02-25 16:40:49 +0000
commit8f7c934cef0f223e5fc0d06b2f0cba386b5b8fd8 (patch)
tree9b2063e8cccf02d9d7066bc7d2109a74f2805f3e
parentcd6bd49abd762f448b4b352b69e2cc9f9ca5dfef (diff)
downloadcwm-8f7c934cef0f223e5fc0d06b2f0cba386b5b8fd8.tar.gz
Add 'group-close-[n]' action to close all windows within specified group.
heavily based on a diff from Nam Nguyen.
-rw-r--r--calmwm.h4
-rw-r--r--conf.c11
-rw-r--r--cwmrc.56
-rw-r--r--group.c19
-rw-r--r--kbfunc.c8
5 files changed, 42 insertions, 6 deletions
diff --git a/calmwm.h b/calmwm.h
index c5521d9..aac949d 100644
--- a/calmwm.h
+++ b/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.363 2019/02/22 19:40:32 okan Exp $
+ * $OpenBSD: calmwm.h,v 1.364 2019/02/25 16:40:49 okan Exp $
*/
#ifndef _CALMWM_H_
@@ -451,6 +451,7 @@ int group_holds_only_sticky(struct group_ctx *);
void group_init(struct screen_ctx *, int);
void group_movetogroup(struct client_ctx *, int);
void group_only(struct screen_ctx *, int);
+void group_close(struct screen_ctx *, int);
int group_restore(struct client_ctx *);
void group_show(struct group_ctx *);
void group_toggle_membership(struct client_ctx *);
@@ -508,6 +509,7 @@ void kbfunc_client_toggle_group(void *, struct cargs *);
void kbfunc_client_movetogroup(void *, struct cargs *);
void kbfunc_group_toggle(void *, struct cargs *);
void kbfunc_group_only(void *, struct cargs *);
+void kbfunc_group_close(void *, struct cargs *);
void kbfunc_group_cycle(void *, struct cargs *);
void kbfunc_group_alltoggle(void *, struct cargs *);
void kbfunc_menu_client(void *, struct cargs *);
diff --git a/conf.c b/conf.c
index dde35ab..2d3f931 100644
--- a/conf.c
+++ b/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.244 2019/02/22 19:40:33 okan Exp $
+ * $OpenBSD: conf.c,v 1.245 2019/02/25 16:40:49 okan Exp $
*/
#include <sys/types.h>
@@ -143,6 +143,15 @@ static const struct {
{ FUNC_SC(group-only-7, group_only, 7) },
{ FUNC_SC(group-only-8, group_only, 8) },
{ FUNC_SC(group-only-9, group_only, 9) },
+ { FUNC_SC(group-close-1, group_close, 1) },
+ { FUNC_SC(group-close-2, group_close, 2) },
+ { FUNC_SC(group-close-3, group_close, 3) },
+ { FUNC_SC(group-close-4, group_close, 4) },
+ { FUNC_SC(group-close-5, group_close, 5) },
+ { FUNC_SC(group-close-6, group_close, 6) },
+ { FUNC_SC(group-close-7, group_close, 7) },
+ { FUNC_SC(group-close-8, group_close, 8) },
+ { FUNC_SC(group-close-9, group_close, 9) },
{ FUNC_SC(pointer-move-up, ptrmove, (CWM_UP)) },
{ FUNC_SC(pointer-move-down, ptrmove, (CWM_DOWN)) },
diff --git a/cwmrc.5 b/cwmrc.5
index ffcf64f..0d2e43b 100644
--- a/cwmrc.5
+++ b/cwmrc.5
@@ -1,4 +1,4 @@
-.\" $OpenBSD: cwmrc.5,v 1.71 2019/02/22 19:40:33 okan Exp $
+.\" $OpenBSD: cwmrc.5,v 1.72 2019/02/25 16:40:49 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: February 22 2019 $
+.Dd $Mdocdate: February 25 2019 $
.Dt CWMRC 5
.Os
.Sh NAME
@@ -288,6 +288,8 @@ menu.
Toggle visibility of group n, where n is 1-9.
.It group-only-[n]
Show only group n, where n is 1-9, hiding other groups.
+.It group-close-[n]
+Close all windows in group n, where n is 1-9.
.It group-toggle-all
Toggle visibility of all groups.
.It window-group
diff --git a/group.c b/group.c
index 106ee0a..c07d2d3 100644
--- a/group.c
+++ b/group.c
@@ -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.
*
- * $OpenBSD: group.c,v 1.128 2018/01/23 13:48:49 okan Exp $
+ * $OpenBSD: group.c,v 1.129 2019/02/25 16:40:49 okan Exp $
*/
#include <sys/types.h>
@@ -250,6 +250,23 @@ group_only(struct screen_ctx *sc, int idx)
}
void
+group_close(struct screen_ctx *sc, int idx)
+{
+ struct group_ctx *gc;
+ struct client_ctx *cc;
+
+ if (idx < 0 || idx >= Conf.ngroups)
+ return;
+
+ TAILQ_FOREACH(gc, &sc->groupq, entry) {
+ if (gc->num == idx) {
+ TAILQ_FOREACH(cc, &gc->clientq, group_entry)
+ client_close(cc);
+ }
+ }
+}
+
+void
group_cycle(struct screen_ctx *sc, int flags)
{
struct group_ctx *newgc, *oldgc, *showgroup = NULL;
diff --git a/kbfunc.c b/kbfunc.c
index cb6c65d..699676e 100644
--- a/kbfunc.c
+++ b/kbfunc.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: kbfunc.c,v 1.161 2019/02/22 19:40:33 okan Exp $
+ * $OpenBSD: kbfunc.c,v 1.162 2019/02/25 16:40:49 okan Exp $
*/
#include <sys/types.h>
@@ -441,6 +441,12 @@ kbfunc_group_only(void *ctx, struct cargs *cargs)
}
void
+kbfunc_group_close(void *ctx, struct cargs *cargs)
+{
+ group_close(ctx, cargs->flag);
+}
+
+void
kbfunc_group_cycle(void *ctx, struct cargs *cargs)
{
group_cycle(ctx, cargs->flag);