st-fullscreen-0.8.5.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
st-fullscreen-0.8.5.diff (2110B)
---
1 diff -r -u a/config.def.h b/config.def.h
2 --- a/config.def.h 2022-01-07 06:41:35.000000000 -0500
3 +++ b/config.def.h 2022-01-15 13:32:01.644320198 -0500
4 @@ -201,6 +201,8 @@
5 { TERMMOD, XK_Y, selpaste, {.i = 0} },
6 { ShiftMask, XK_Insert, selpaste, {.i = 0} },
7 { TERMMOD, XK_Num_Lock, numlock, {.i = 0} },
8 + { XK_NO_MOD, XK_F11, fullscreen, {.i = 0} },
9 + { MODKEY, XK_Return, fullscreen, {.i = 0} },
10 };
11
12 /*
13 diff -r -u a/st.h b/st.h
14 --- a/st.h 2022-01-07 06:41:35.000000000 -0500
15 +++ b/st.h 2022-01-15 13:32:40.084320514 -0500
16 @@ -81,6 +81,7 @@
17 void redraw(void);
18 void draw(void);
19
20 +void fullscreen(const Arg *);
21 void printscreen(const Arg *);
22 void printsel(const Arg *);
23 void sendbreak(const Arg *);
24 diff -r -u a/x.c b/x.c
25 --- a/x.c 2022-01-07 06:41:35.000000000 -0500
26 +++ b/x.c 2022-01-15 13:50:28.164329295 -0500
27 @@ -94,6 +94,7 @@
28 Drawable buf;
29 GlyphFontSpec *specbuf; /* font spec buffer used for rendering */
30 Atom xembed, wmdeletewin, netwmname, netwmiconname, netwmpid;
31 + Atom netwmstate, netwmfullscreen;
32 struct {
33 XIM xim;
34 XIC xic;
35 @@ -744,6 +745,24 @@
36 xw.specbuf = xrealloc(xw.specbuf, col * sizeof(GlyphFontSpec));
37 }
38
39 +void
40 +fullscreen(const Arg *arg)
41 +{
42 + XEvent ev;
43 +
44 + memset(&ev, 0, sizeof(ev));
45 +
46 + ev.xclient.type = ClientMessage;
47 + ev.xclient.message_type = xw.netwmstate;
48 + ev.xclient.display = xw.dpy;
49 + ev.xclient.window = xw.win;
50 + ev.xclient.format = 32;
51 + ev.xclient.data.l[0] = 2; /* _NET_WM_STATE_TOGGLE */
52 + ev.xclient.data.l[1] = xw.netwmfullscreen;
53 +
54 + XSendEvent(xw.dpy, DefaultRootWindow(xw.dpy), False, SubstructureNotifyMask|SubstructureRedirectMask, &ev);
55 +}
56 +
57 ushort
58 sixd_to_16bit(int x)
59 {
60 @@ -1208,6 +1227,9 @@
61 XChangeProperty(xw.dpy, xw.win, xw.netwmpid, XA_CARDINAL, 32,
62 PropModeReplace, (uchar *)&thispid, 1);
63
64 + xw.netwmstate = XInternAtom(xw.dpy, "_NET_WM_STATE", False);
65 + xw.netwmfullscreen = XInternAtom(xw.dpy, "_NET_WM_STATE_FULLSCREEN", False);
66 +
67 win.mode = MODE_NUMLOCK;
68 resettitle();
69 xhints();