URI:
       dwm: actualfullscreen: support overlay application - sites - public wiki contents of suckless.org
  HTML git clone git://git.suckless.org/sites
   DIR Log
   DIR Files
   DIR Refs
       ---
   DIR commit 58ddd53a24f0d5c6d4a5bee948c419671f9f62d7
   DIR parent 88acfba0ad6896bd3e0ad80bf7cc20ac77b514a4
  HTML Author: Sourav Nayak <nonameblank007@gmail.com>
       Date:   Thu,  2 Jul 2026 23:50:56 +0530
       
       dwm: actualfullscreen: support overlay application
       
       Patch now enables support for overlay requiring application to have fullscreen on startup.
       
       Diffstat:
         A dwm.suckless.org/patches/actualful… |     120 +++++++++++++++++++++++++++++++
         M dwm.suckless.org/patches/actualful… |       2 ++
       
       2 files changed, 122 insertions(+), 0 deletions(-)
       ---
   DIR diff --git a/dwm.suckless.org/patches/actualfullscreen/dwm-actualfullscreen-6.8.diff b/dwm.suckless.org/patches/actualfullscreen/dwm-actualfullscreen-6.8.diff
       @@ -0,0 +1,120 @@
       +From 12e0fc50ff6b02ac926b77b7d16601ef8051309b Mon Sep 17 00:00:00 2001
       +From: Sourav Nayak <nonameblank007@gmail.com>
       +Date: Thu, 2 Jul 2026 23:01:18 +0530
       +Subject: [PATCH] Fullscreen current window and overlay application
       +
       +This actually fullscreens a window, instead of just hiding the statusbar
       +and applying the monocle layout with [Alt]+[Shift]+[f].
       +
       +Addition to this patch now supports overlay apllication through config rules,
       +that require fullscreen on run. e.g., KDE Presentation Mode, Quickshell custom overlays... etc.
       +
       +Note: If using a compositor like picom, do disable blur for those applications
       +---
       + config.def.h |  7 ++++---
       + dwm.1        |  3 +++
       + dwm.c        | 14 ++++++++++++++
       + 3 files changed, 21 insertions(+), 3 deletions(-)
       +
       +diff --git a/config.def.h b/config.def.h
       +index 81c3fc0..03edae9 100644
       +--- a/config.def.h
       ++++ b/config.def.h
       +@@ -26,9 +26,9 @@ static const Rule rules[] = {
       +          *        WM_CLASS(STRING) = instance, class
       +          *        WM_NAME(STRING) = title
       +          */
       +-        /* class      instance    title       tags mask     isfloating   monitor */
       +-        { "Gimp",     NULL,       NULL,       0,            1,           -1 },
       +-        { "Firefox",  NULL,       NULL,       1 << 8,       0,           -1 },
       ++        /* class      instance    title       tags mask     isfloating   isfullscreen   monitor */
       ++        { "Gimp",     NULL,       NULL,       0,            1,           0,             -1 },
       ++        { "Firefox",  NULL,       NULL,       1 << 8,       0,           0,             -1 },
       + };
       + 
       + /* layout(s) */
       +@@ -80,6 +80,7 @@ static const Key keys[] = {
       +         { MODKEY,                       XK_m,      setlayout,      {.v = &layouts[2]} },
       +         { MODKEY,                       XK_space,  setlayout,      {0} },
       +         { MODKEY|ShiftMask,             XK_space,  togglefloating, {0} },
       ++        { MODKEY|ShiftMask,             XK_f,      togglefullscr,  {0} },
       +         { MODKEY,                       XK_0,      view,           {.ui = ~0 } },
       +         { MODKEY|ShiftMask,             XK_0,      tag,            {.ui = ~0 } },
       +         { MODKEY,                       XK_comma,  focusmon,       {.i = -1 } },
       +diff --git a/dwm.1 b/dwm.1
       +index ddc8321..3d310ac 100644
       +--- a/dwm.1
       ++++ b/dwm.1
       +@@ -116,6 +116,9 @@ Zooms/cycles focused window to/from master area (tiled layouts only).
       + .B Mod1\-Shift\-c
       + Close focused window.
       + .TP
       ++.B Mod1\-Shift\-f
       ++Toggle fullscreen for focused window.
       ++.TP
       + .B Mod1\-Shift\-space
       + Toggle focused window between tiled and floating state.
       + .TP
       +diff --git a/dwm.c b/dwm.c
       +index 53b393e..228c9b3 100644
       +--- a/dwm.c
       ++++ b/dwm.c
       +@@ -137,6 +137,7 @@ typedef struct {
       +         const char *title;
       +         unsigned int tags;
       +         int isfloating;
       ++        int isfullscreen;
       +         int monitor;
       + } Rule;
       + 
       +@@ -210,6 +211,7 @@ static void tagmon(const Arg *arg);
       + static void tile(Monitor *m);
       + static void togglebar(const Arg *arg);
       + static void togglefloating(const Arg *arg);
       ++static void togglefullscr(const Arg *arg);
       + static void toggletag(const Arg *arg);
       + static void toggleview(const Arg *arg);
       + static void unfocus(Client *c, int setfocus);
       +@@ -284,6 +286,7 @@ applyrules(Client *c)
       +         XClassHint ch = { NULL, NULL };
       + 
       +         /* rule matching */
       ++        int isfullscreen = 0;
       +         c->isfloating = 0;
       +         c->tags = 0;
       +         XGetClassHint(dpy, c->win, &ch);
       +@@ -296,6 +299,8 @@ applyrules(Client *c)
       +                 && (!r->class || strstr(class, r->class))
       +                 && (!r->instance || strstr(instance, r->instance)))
       +                 {
       ++                        isfullscreen = r->isfullscreen;
       ++                        
       +                         c->isfloating = r->isfloating;
       +                         c->tags |= r->tags;
       +                         for (m = mons; m && m->num != r->monitor; m = m->next);
       +@@ -307,6 +312,8 @@ applyrules(Client *c)
       +                 XFree(ch.res_class);
       +         if (ch.res_name)
       +                 XFree(ch.res_name);
       ++        if (isfullscreen)
       ++                setfullscreen(c, 1);
       +         c->tags = c->tags & TAGMASK ? c->tags & TAGMASK : c->mon->tagset[c->mon->seltags];
       + }
       + 
       +@@ -1735,6 +1742,13 @@ togglefloating(const Arg *arg)
       +         arrange(selmon);
       + }
       + 
       ++void
       ++togglefullscr(const Arg *arg)
       ++{
       ++  if(selmon->sel)
       ++    setfullscreen(selmon->sel, !selmon->sel->isfullscreen);
       ++}
       ++
       + void
       + toggletag(const Arg *arg)
       + {
       +-- 
       +2.54.0
       +
   DIR diff --git a/dwm.suckless.org/patches/actualfullscreen/index.md b/dwm.suckless.org/patches/actualfullscreen/index.md
       @@ -10,7 +10,9 @@ Download
        --------
        * [dwm-actualfullscreen-20191112-cb3f58a.diff](dwm-actualfullscreen-20191112-cb3f58a.diff) (1.8K) (2019-11-12)
        * [dwm-actualfullscreen-20211013-cb3f58a.diff](dwm-actualfullscreen-20211013-cb3f58a.diff) (2.1K) (2021-10-13)
       +* [dwm-actualfullscreen-6.8](dwm-actualfullscreen-6.8.diff) (4.0K) (2026-07-02)
        
        Author
        ------
        * Sönke Lambert - <soelam@live.de>
       +* Sourav Nayak - <nonameblank007@gmail.com>