summaryrefslogtreecommitdiff
path: root/2bwm/resc
diff options
context:
space:
mode:
Diffstat (limited to '2bwm/resc')
-rw-r--r--2bwm/resc/2bwm/PKGBUILD9
-rw-r--r--2bwm/resc/2bwm/config.h2
-rw-r--r--2bwm/resc/2bwm/lastws.patch40
3 files changed, 48 insertions, 3 deletions
diff --git a/2bwm/resc/2bwm/PKGBUILD b/2bwm/resc/2bwm/PKGBUILD
index 5d2376b..4dcdbac 100644
--- a/2bwm/resc/2bwm/PKGBUILD
+++ b/2bwm/resc/2bwm/PKGBUILD
@@ -9,14 +9,17 @@ license=('ISC')
depends=('xcb-util-wm' 'xcb-util-keysyms' 'xcb-util-xrm')
conflicts=('2bwm-git' 'mcwm' 'mcwm-git') # due to /usr/bin/hidden program
makedepends=('git' 'xcb-util')
-source=("$pkgname::git+https://github.com/bbidulock/2bwm.git#tag=v${pkgver}" '2bwm.desktop' '2bwm.copying' 'config.h')
+source=("$pkgname::git+https://github.com/bbidulock/2bwm.git#tag=v${pkgver}" '2bwm.desktop' '2bwm.copying' 'config.h' 'lastws.patch')
md5sums=('SKIP'
'4342d9210effbe4bfb58722f4275aa5c'
'adaee5c7e455ba15e0ca9a2692464253'
- 'SKIP')
+ 'SKIP'
+ 'e553c0ed17e19743305358ba50139b05')
prepare() {
- cp $srcdir/config.h $pkgname/config.h -v
+ cd "$pkgname"
+ patch < $srcdir/lastws.patch
+ cp $srcdir/config.h config.h -v
}
build() {
diff --git a/2bwm/resc/2bwm/config.h b/2bwm/resc/2bwm/config.h
index 7d4340b..b587cd5 100644
--- a/2bwm/resc/2bwm/config.h
+++ b/2bwm/resc/2bwm/config.h
@@ -149,6 +149,8 @@ static key keys[] = {
// Next/Previous workspace
{ MOD , XK_v, nextworkspace, {}},
{ MOD , XK_c, prevworkspace, {}},
+ // Last visisted workspace
+ { MOD , XK_space, lastworkspace, {}},
// Move to Next/Previous workspace
{ MOD |SHIFT , XK_v, sendtonextworkspace,{}},
{ MOD |SHIFT , XK_c, sendtoprevworkspace,{}},
diff --git a/2bwm/resc/2bwm/lastws.patch b/2bwm/resc/2bwm/lastws.patch
new file mode 100644
index 0000000..6ebd557
--- /dev/null
+++ b/2bwm/resc/2bwm/lastws.patch
@@ -0,0 +1,40 @@
+diff '--color=auto' --unified --recursive --text --color 2bwm.orig/2bwm.c 2bwm.new/2bwm.c
+--- 2bwm.orig/2bwm.c 2022-12-15 15:59:21.739548339 +0100
++++ 2bwm.new/2bwm.c 2022-12-15 15:59:15.602734354 +0100
+@@ -42,6 +42,7 @@
+ xcb_screen_t *screen = NULL; // Our current screen.
+ int randrbase = 0; // Beginning of RANDR extension events.
+ static uint8_t curws = 0; // Current workspace.
++static uint8_t lstws = 0; // Last workspace
+ struct client *focuswin = NULL; // Current focus window.
+ static xcb_drawable_t top_win=0; // Window always on top.
+ static struct item *winlist = NULL; // Global list of all client windows.
+@@ -86,6 +87,7 @@
+ static void arrangewindows(void);
+ static void prevworkspace();
+ static void nextworkspace();
++static void lastworkspace();
+ static void getrandr(void);
+ static void raise_current_window(void);
+ static void raiseorlower();
+@@ -214,6 +216,12 @@
+ : changeworkspace_helper(WORKSPACES-1);}
+
+ void
++lastworkspace()
++{
++ changeworkspace_helper(lstws);
++}
++
++void
+ twobwm_exit()
+ {
+ exit(EXIT_SUCCESS);
+@@ -503,6 +511,7 @@
+ xcb_map_window(conn, client->id);
+ }
+
++ lstws = curws;
+ curws = ws;
+ pointer = xcb_query_pointer_reply(conn, xcb_query_pointer(conn,
+ screen->root), 0);