Introduction
Introduction Statistics Contact Development Disclaimer Help
dwm-exitmenu-6.3.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
dwm-exitmenu-6.3.diff (3498B)
---
1 diff --git a/config.def.h b/config.def.h
2 index a2ac963..92a6a81 100644
3 --- a/config.def.h
4 +++ b/config.def.h
5 @@ -60,6 +60,7 @@ static char dmenumon[2] = "0"; /* component of dmenucm…
6 static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", d…
7 static const char *termcmd[] = { "st", NULL };
8
9 +#include "exitdwm.c"
10 static Key keys[] = {
11 /* modifier key function argu…
12 { MODKEY, XK_p, spawn, {.v …
13 @@ -94,7 +95,7 @@ static Key keys[] = {
14 TAGKEYS( XK_7, 6)
15 TAGKEYS( XK_8, 7)
16 TAGKEYS( XK_9, 8)
17 - { MODKEY|ShiftMask, XK_q, quit, {0} …
18 + { MODKEY|ShiftMask, XK_e, exitdwm, {0} },
19 };
20
21 /* button definitions */
22 diff --git a/exitdwm.c b/exitdwm.c
23 new file mode 100644
24 index 0000000..74c514f
25 --- /dev/null
26 +++ b/exitdwm.c
27 @@ -0,0 +1,87 @@
28 +# include <stdio.h>
29 +# include <string.h>
30 +
31 +void exitdwm ()
32 +{
33 +# if \
34 + defined S_LOCK || \
35 + defined S_RESTART_DWM || \
36 + defined S_OFFSCREEN || \
37 + defined S_EXIT || \
38 + defined S_REBOOT || \
39 + defined S_SHUTDOWN || \
40 + defined S_LOCK_ICON || \
41 + defined S_RESTART_DWM_ICON || \
42 + defined S_OFFSCREEN_ICON || \
43 + defined S_EXIT_ICON || \
44 + defined S_REBOOT_ICON || \
45 + defined S_SHUTDOWN_ICON || \
46 + defined S_FORMAT || \
47 + defined S_FORMAT_CLEAR
48 +# error (conflicting macro names)
49 +# endif
50 +
51 +# define S_LOCK "Lock"
52 +# define S_RESTART_DWM "restart Dwm"
53 +# define S_OFFSCREEN "Off-screen"
54 +# define S_EXIT "Exit"
55 +# define S_REBOOT "Reboot"
56 +# define S_SHUTDOWN "Shutdown"
57 +# define S_LOCK_ICON "\uf023" // <= FontAwesome …
58 +# define S_RESTART_DWM_ICON "\uf01e"
59 +# define S_OFFSCREEN_ICON "\uf108"
60 +# define S_EXIT_ICON "\uf2f5"
61 +# define S_REBOOT_ICON "\uf021"
62 +# define S_SHUTDOWN_ICON "\uf011"
63 +
64 +# define S_FORMAT(ACTION) S_##ACTION##_ICON " " S_##ACTION
65 +# define S_FORMAT_CLEAR "sed 's/^..//'"
66 +
67 + FILE * exit_menu = popen (
68 + "echo \""
69 + S_FORMAT (LOCK) "\n"
70 + S_FORMAT (RESTART_DWM) "\n"
71 + S_FORMAT (OFFSCREEN) "\n"
72 + S_FORMAT (EXIT) "\n"
73 + S_FORMAT (REBOOT) "\n"
74 + S_FORMAT (SHUTDOWN)
75 + "\" | dmenu -p exit: | " S_FORMAT_CLEAR
76 + ,
77 + "r"
78 + );
79 +
80 + char exit_action [16];
81 +
82 + if (
83 + exit_menu == NULL ||
84 + fscanf (exit_menu, "%15[a-zA-Z -]", exit_action) == EOF
85 + ) {
86 + fputs ("Error. Failure in exit_dwm.", stderr);
87 + goto close_streams;
88 + }
89 +
90 + if (strcmp (exit_action, S_LOCK) == 0) system ("slock & sleep .…
91 + else if (strcmp (exit_action, S_RESTART_DWM) == 0) quit (& (con…
92 + else if (strcmp (exit_action, S_OFFSCREEN) == 0) system ("sleep…
93 + else if (strcmp (exit_action, S_EXIT) == 0) quit (& (const Arg)…
94 + else if (strcmp (exit_action, S_REBOOT) == 0) system ("systemct…
95 + else if (strcmp (exit_action, S_SHUTDOWN) == 0) system ("system…
96 +
97 +close_streams:
98 + pclose (exit_menu);
99 +
100 +# undef S_LOCK
101 +# undef S_RESTART_DWM
102 +# undef S_OFFSCREEN
103 +# undef S_EXIT
104 +# undef S_REBOOT
105 +# undef S_SHUTDOWN
106 +# undef S_LOCK_ICON
107 +# undef S_RESTART_DWM_ICON
108 +# undef S_OFFSCREEN_ICON
109 +# undef S_EXIT_ICON
110 +# undef S_REBOOT_ICON
111 +# undef S_SHUTDOWN_ICON
112 +# undef S_FORMAT
113 +# undef S_FORMAT_CLEAR
114 +}
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.