dwm-doublepressquit-6.3.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
dwm-doublepressquit-6.3.diff (1327B)
---
1 From 1ff5d32e691fa8fb001d0619b72da11ef8232009 Mon Sep 17 00:00:00 2001
2 From: Sebastian Karlsen <suckless@karlsen.fr>
3 Date: Tue, 1 Mar 2022 14:49:03 +0100
4 Subject: [PATCH] Only quit dwm if binding is pressed twice quickly
5
6 ---
7 config.def.h | 3 +++
8 dwm.c | 19 ++++++++++++++++++-
9 2 files changed, 21 insertions(+), 1 deletion(-)
10
11 diff --git a/config.def.h b/config.def.h
12 index a2ac963..8123671 100644
13 --- a/config.def.h
14 +++ b/config.def.h
15 @@ -21,6 +21,9 @@ static const char *colors[][3] = {
16 /* tagging */
17 static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
18
19 +/* Lockfile */
20 +static char lockfile[] = "/tmp/dwm.lock";
21 +
22 static const Rule rules[] = {
23 /* xprop(1):
24 * WM_CLASS(STRING) = instance, class
25 diff --git a/dwm.c b/dwm.c
26 index a96f33c..d55f186 100644
27 --- a/dwm.c
28 +++ b/dwm.c
29 @@ -1252,7 +1252,24 @@ propertynotify(XEvent *e)
30 void
31 quit(const Arg *arg)
32 {
33 - running = 0;
34 + FILE *fd = NULL;
35 + struct stat filestat;
36 +
37 + if ((fd = fopen(lockfile, "r")) && stat(lockfile, &filestat) == 0) {
38 + fclose(fd);
39 +
40 + if (filestat.st_ctime <= time(NULL)-2)
41 + remove(lockfile);
42 + }
43 +
44 + if ((fd = fopen(lockfile, "r")) != NULL) {
45 + fclose(fd);
46 + remove(lockfile);
47 + running = 0;
48 + } else {
49 + if ((fd = fopen(lockfile, "a")) != NULL)
50 + fclose(fd);
51 + }
52 }
53
54 Monitor *
55 --
56 2.35.1
57