Browse Source

2023-09-27

master
RinRi 7 months ago
parent
commit
d1c6077584
16 changed files with 402 additions and 148 deletions
  1. +2
    -2
      .gitignore
  2. +19
    -15
      config.def.h
  3. +16
    -12
      config.def.h.orig
  4. +10
    -11
      config.def.h.rej
  5. +19
    -15
      config.h
  6. +2
    -0
      drw.c
  7. BIN
      drw.o
  8. BIN
      dwm
  9. +68
    -0
      dwm-actualfullscreen-20211013-cb3f58a.diff
  10. +3
    -0
      dwm.1
  11. +191
    -0
      dwm.1.orig
  12. +27
    -16
      dwm.c
  13. +35
    -26
      dwm.c.orig
  14. +10
    -51
      dwm.c.rej
  15. BIN
      dwm.o
  16. BIN
      util.o

+ 2
- 2
.gitignore View File

@@ -1,2 +1,2 @@
./dwm
./*.o
dwm
*.o

+ 19
- 15
config.def.h View File

@@ -20,13 +20,13 @@ enum showtab_modes { showtab_never, showtab_auto, showtab_nmodes, showtab_always
static const int showtab = showtab_auto; /* Default tab bar show mode */
static const Bool toptab = False; /* False means bottom tab bar */

static const char *fonts[] = { "fontawesome:size=15", "DejaVuSansMono Nerd Font Mono:size=13"} ;
static const char col_gray1[] = "#222222";
static const char *fonts[] = { "fontawesome:size=15", "DejaVuSansM Nerd Font:size=13"};
static const char col_gray1[] = "#1e1e2e";
static const char col_gray2[] = "#666666";
static const char col_gray3[] = "#bbbbbb";
static const char col_gray4[] = "#eeeeee";
static const char col_cyan[] = "#7733ee";
static const char col_borderbar[] = "#222222";
static const char col_borderbar[] = "#1e1e2e";
static const char *colors[][3] = {
/* fg bg border */
[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
@@ -73,11 +73,13 @@ static const Rule rules[] = {

/* class instance title tags mask iscentered isfloating isterminal noswallow monitor */
{ "Gimp", NULL, NULL, 1 << 7, 0, 1, 0, 0, -1 },
{ "librewolf", NULL, NULL, 1 << 2, 0, 0, 0, -1, -1 },
{ "LibreWolf", NULL, NULL, 1 << 2, 0, 0, 0, -1, -1 },
{ "firefox", NULL, NULL, 1 << 2, 0, 0, 0, -1, -1 },
{ "Brave-browser", NULL, NULL, 1 << 2, 0, 0, 0, -1, -1 },
{ "St", NULL, NULL, 0, 0, 0, 1, 0, -1 },
{ "zoom", NULL, NULL, 1 << 1, 0, 0, 0, -1, -1 },
{ NULL, NULL, "Zoom Meeting", 1 << 1, 0, 1, 0, -1, -1 },
{ NULL, NULL, "Zoom Cloud Meetings", 1 << 1, 0, 1, 0, -1, -1 },
{ "cmus", NULL, NULL, 1 << 3, 0, 0, 0, -1, -1 },
{ "TelegramDesktop", NULL, NULL, 1 << 4, 0, 0, 0, -1, -1 },
{ "Discord", NULL, NULL, 1 << 4, 0, 0, 0, -1, -1 },
@@ -122,31 +124,32 @@ static Key keys[] = {
/* modifier key function argument */
{ 0, XK_Print, spawn, SHCMD("~/scripts/screenshot.sh") },
{ 0, XF86XK_PowerOff, spawn, SHCMD("~/scripts/poweroff.sh") },
{ 0, XF86XK_AudioMute, spawn, SHCMD("pulsemixer --toggle-mute") },
{ 0, XF86XK_AudioMute, spawn, SHCMD("~/scripts/mute.sh 1") },
{ 0, XF86XK_AudioRaiseVolume, spawn, SHCMD("amixer set Master 1%+") },
{ 0, XF86XK_AudioLowerVolume, spawn, SHCMD("amixer set Master 1%-") },
{ 0, XF86XK_AudioPrev, spawn, SHCMD("cmus-remote --prev") },
{ 0, XF86XK_AudioNext, spawn, SHCMD("cmus-remote --next") },
{ 0, XF86XK_AudioPause, spawn, SHCMD("cmus-remote --pause") },
{ 0, XF86XK_AudioPlay, spawn, SHCMD("cmus-remote --pause") },
{ 0, XF86XK_AudioStop, spawn, SHCMD("cmus-remote --stop") },
{ 0, XF86XK_AudioRewind, spawn, SHCMD("cmus-remote --seek -10") },
{ 0, XF86XK_AudioForward, spawn, SHCMD("cmus-remote --seek +10") },
{ 0, XF86XK_AudioPrev, spawn, SHCMD("~/scripts/playmus.sh 3") },
{ 0, XF86XK_AudioNext, spawn, SHCMD("~/scripts/playmus.sh 2") },
{ 0, XF86XK_AudioPause, spawn, SHCMD("~/scripts/playmus.sh 1") },
{ 0, XF86XK_AudioPlay, spawn, SHCMD("~/scripts/playmus.sh 1") },
{ 0, XF86XK_AudioStop, spawn, SHCMD("~/scripts/playmus.sh 1") },
{ 0, XF86XK_MonBrightnessUp, spawn, SHCMD("brightnessctl s +5%")},
{ 0, XF86XK_MonBrightnessDown, spawn, SHCMD("brightnessctl s 5%-")},
{ ControlMask, XK_space, spawn, SHCMD("dunstctl close") },
{ ControlMask|ShiftMask, XK_space, spawn, SHCMD("dunstctl close-all") },
{ ControlMask|ShiftMask, XK_space, spawn, SHCMD("dunstctl close") },
{ Mod1Mask|ShiftMask, NULL, spawn, SHCMD("~/scripts/switch-input.sh") },
{ MODKEY|ShiftMask, XK_space, togglealwaysontop, {0} },
{ MODKEY, XK_w, spawn, SHCMD("firefox") },
{ MODKEY, XK_w, spawn, SHCMD("librewolf") },
{ MODKEY, XK_c, spawn, SHCMD("~/scripts/showcal.sh") },
{ MODKEY|ShiftMask, XK_l, spawn, SHCMD("slock.sh") },
{ MODKEY|ShiftMask, XK_d, spawn, SHCMD("killall Discord") },
{ MODKEY|ShiftMask, XK_e, spawn, SHCMD("emacsclient --create-frame") },
{ MODKEY|ShiftMask, XK_m, spawn, SHCMD("~/scripts/autostart.sh") },
{ MODKEY|ShiftMask, XK_j, spawn, SHCMD("screenkey.sh") },
{ MODKEY|ShiftMask, XK_k, spawn, SHCMD("killall screenkey") },
{ MODKEY|ShiftMask, XK_s, spawn, SHCMD("~/scripts/screenshot.sh 1") },
{ MODKEY|ShiftMask, XK_n, spawn, SHCMD("~/scripts/network.sh") },
{ MODKEY|ShiftMask, XK_x, spawn, SHCMD("mixer.sh") },
{ MODKEY|ShiftMask, XK_t, spawn, SHCMD("telegram-desktop") },
{ MODKEY|ShiftMask, XK_a, spawn, SHCMD("~/scripts/start-jack.sh 1") },
{ MODKEY, XK_p, spawn, {.v = dmenucmd } },
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
{ MODKEY, XK_b, togglebar, {0} },
@@ -167,6 +170,7 @@ static Key keys[] = {
{ MODKEY, XK_o, setlayout, {.v = &layouts[4]} },
{ 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 } },


+ 16
- 12
config.def.h.orig View File

@@ -7,6 +7,8 @@ static const unsigned int snap = 32; /* snap pixel */
static const int swallowfloating = 0; /* 1 means swallow floating windows by default */
static const int showbar = 1; /* 0 means no bar */
static const int topbar = 1; /* 0 means bottom bar */
static const int vertpad = 10; /* vertical padding of bar */
static const int sidepad = 10; /* horizontal padding of bar */
static const int user_bh = 0; /* 0 means that dwm will calculate bar height, >= 1 means dwm will user_bh as bar height */
static const int horizpadbar = 10; /* horizontal padding for statusbar */
static const int vertpadbar = 10; /* vertical padding for statusbar */
@@ -18,7 +20,7 @@ enum showtab_modes { showtab_never, showtab_auto, showtab_nmodes, showtab_always
static const int showtab = showtab_auto; /* Default tab bar show mode */
static const Bool toptab = False; /* False means bottom tab bar */

static const char *fonts[] = { "fontawesome:size=15", "DejaVuSansMono Nerd Font Mono:size=13"} ;
static const char *fonts[] = { "fontawesome:size=15", "DejaVuSansMono Nerd Font Mono:size=13"};
static const char col_gray1[] = "#222222";
static const char col_gray2[] = "#666666";
static const char col_gray3[] = "#bbbbbb";
@@ -75,7 +77,8 @@ static const Rule rules[] = {
{ "firefox", NULL, NULL, 1 << 2, 0, 0, 0, -1, -1 },
{ "Brave-browser", NULL, NULL, 1 << 2, 0, 0, 0, -1, -1 },
{ "St", NULL, NULL, 0, 0, 0, 1, 0, -1 },
{ "zoom", NULL, NULL, 1 << 1, 0, 0, 0, -1, -1 },
{ NULL, NULL, "Zoom Meeting", 1 << 1, 0, 1, 0, -1, -1 },
{ NULL, NULL, "Zoom Cloud Meetings", 1 << 1, 0, 1, 0, -1, -1 },
{ "cmus", NULL, NULL, 1 << 3, 0, 0, 0, -1, -1 },
{ "TelegramDesktop", NULL, NULL, 1 << 4, 0, 0, 0, -1, -1 },
{ "Discord", NULL, NULL, 1 << 4, 0, 0, 0, -1, -1 },
@@ -120,31 +123,32 @@ static Key keys[] = {
/* modifier key function argument */
{ 0, XK_Print, spawn, SHCMD("~/scripts/screenshot.sh") },
{ 0, XF86XK_PowerOff, spawn, SHCMD("~/scripts/poweroff.sh") },
{ 0, XF86XK_AudioMute, spawn, SHCMD("pulsemixer --toggle-mute") },
{ 0, XF86XK_AudioMute, spawn, SHCMD("~/scripts/mute.sh 1") },
{ 0, XF86XK_AudioRaiseVolume, spawn, SHCMD("amixer set Master 1%+") },
{ 0, XF86XK_AudioLowerVolume, spawn, SHCMD("amixer set Master 1%-") },
{ 0, XF86XK_AudioPrev, spawn, SHCMD("cmus-remote --prev") },
{ 0, XF86XK_AudioNext, spawn, SHCMD("cmus-remote --next") },
{ 0, XF86XK_AudioPause, spawn, SHCMD("cmus-remote --pause") },
{ 0, XF86XK_AudioPlay, spawn, SHCMD("cmus-remote --pause") },
{ 0, XF86XK_AudioStop, spawn, SHCMD("cmus-remote --stop") },
{ 0, XF86XK_AudioRewind, spawn, SHCMD("cmus-remote --seek -10") },
{ 0, XF86XK_AudioForward, spawn, SHCMD("cmus-remote --seek +10") },
{ 0, XF86XK_AudioPrev, spawn, SHCMD("~/scripts/playmus.sh 3") },
{ 0, XF86XK_AudioNext, spawn, SHCMD("~/scripts/playmus.sh 2") },
{ 0, XF86XK_AudioPause, spawn, SHCMD("~/scripts/playmus.sh 1") },
{ 0, XF86XK_AudioPlay, spawn, SHCMD("~/scripts/playmus.sh 1") },
{ 0, XF86XK_AudioStop, spawn, SHCMD("~/scripts/playmus.sh 1") },
{ 0, XF86XK_MonBrightnessUp, spawn, SHCMD("brightnessctl s +5%")},
{ 0, XF86XK_MonBrightnessDown, spawn, SHCMD("brightnessctl s 5%-")},
{ ControlMask, XK_space, spawn, SHCMD("dunstctl close") },
{ ControlMask|ShiftMask, XK_space, spawn, SHCMD("dunstctl close-all") },
{ ControlMask|ShiftMask, XK_space, spawn, SHCMD("dunstctl close") },
{ Mod1Mask|ShiftMask, NULL, spawn, SHCMD("~/scripts/switch-input.sh") },
{ MODKEY|ShiftMask, XK_space, togglealwaysontop, {0} },
{ MODKEY, XK_w, spawn, SHCMD("firefox") },
{ MODKEY, XK_c, spawn, SHCMD("~/scripts/showcal.sh") },
{ MODKEY|ShiftMask, XK_l, spawn, SHCMD("slock.sh") },
{ MODKEY|ShiftMask, XK_d, spawn, SHCMD("killall Discord") },
{ MODKEY|ShiftMask, XK_e, spawn, SHCMD("emacsclient --create-frame") },
{ MODKEY|ShiftMask, XK_m, spawn, SHCMD("~/scripts/autostart.sh") },
{ MODKEY|ShiftMask, XK_j, spawn, SHCMD("screenkey.sh") },
{ MODKEY|ShiftMask, XK_k, spawn, SHCMD("killall screenkey") },
{ MODKEY|ShiftMask, XK_s, spawn, SHCMD("~/scripts/screenshot.sh 1") },
{ MODKEY|ShiftMask, XK_n, spawn, SHCMD("~/scripts/network.sh") },
{ MODKEY|ShiftMask, XK_x, spawn, SHCMD("mixer.sh") },
{ MODKEY|ShiftMask, XK_t, spawn, SHCMD("telegram-desktop") },
{ MODKEY|ShiftMask, XK_a, spawn, SHCMD("~/scripts/start-jack.sh 1") },
{ MODKEY, XK_p, spawn, {.v = dmenucmd } },
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
{ MODKEY, XK_b, togglebar, {0} },


+ 10
- 11
config.def.h.rej View File

@@ -1,11 +1,10 @@
--- config.def.h 2019-12-10 17:24:37.944708263 +1300
+++ config.def.h 2019-12-10 17:44:38.447670711 +1300
@@ -5,6 +5,8 @@ static const unsigned int borderpx = 1;
static const unsigned int snap = 32; /* snap pixel */
static const int showbar = 1; /* 0 means no bar */
static const int topbar = 1; /* 0 means bottom bar */
+static const int vertpad = 10; /* vertical padding of bar */
+static const int sidepad = 10; /* horizontal padding of bar */
static const char *fonts[] = { "monospace:size=10" };
static const char dmenufont[] = "monospace:size=10";
static const char col_gray1[] = "#222222";
--- config.def.h
+++ config.def.h
@@ -78,6 +78,7 @@ static 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 } },

+ 19
- 15
config.h View File

@@ -20,13 +20,13 @@ enum showtab_modes { showtab_never, showtab_auto, showtab_nmodes, showtab_always
static const int showtab = showtab_auto; /* Default tab bar show mode */
static const Bool toptab = False; /* False means bottom tab bar */

static const char *fonts[] = { "fontawesome:size=15", "DejaVuSansMono Nerd Font Mono:size=13"} ;
static const char col_gray1[] = "#222222";
static const char *fonts[] = { "fontawesome:size=15", "DejaVuSansM Nerd Font:size=13"};
static const char col_gray1[] = "#1e1e2e";
static const char col_gray2[] = "#666666";
static const char col_gray3[] = "#bbbbbb";
static const char col_gray4[] = "#eeeeee";
static const char col_cyan[] = "#7733ee";
static const char col_borderbar[] = "#222222";
static const char col_borderbar[] = "#1e1e2e";
static const char *colors[][3] = {
/* fg bg border */
[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
@@ -73,11 +73,13 @@ static const Rule rules[] = {

/* class instance title tags mask iscentered isfloating isterminal noswallow monitor */
{ "Gimp", NULL, NULL, 1 << 7, 0, 1, 0, 0, -1 },
{ "librewolf", NULL, NULL, 1 << 2, 0, 0, 0, -1, -1 },
{ "LibreWolf", NULL, NULL, 1 << 2, 0, 0, 0, -1, -1 },
{ "firefox", NULL, NULL, 1 << 2, 0, 0, 0, -1, -1 },
{ "Brave-browser", NULL, NULL, 1 << 2, 0, 0, 0, -1, -1 },
{ "St", NULL, NULL, 0, 0, 0, 1, 0, -1 },
{ "zoom", NULL, NULL, 1 << 1, 0, 0, 0, -1, -1 },
{ NULL, NULL, "Zoom Meeting", 1 << 1, 0, 1, 0, -1, -1 },
{ NULL, NULL, "Zoom Cloud Meetings", 1 << 1, 0, 1, 0, -1, -1 },
{ "cmus", NULL, NULL, 1 << 3, 0, 0, 0, -1, -1 },
{ "TelegramDesktop", NULL, NULL, 1 << 4, 0, 0, 0, -1, -1 },
{ "Discord", NULL, NULL, 1 << 4, 0, 0, 0, -1, -1 },
@@ -122,31 +124,32 @@ static Key keys[] = {
/* modifier key function argument */
{ 0, XK_Print, spawn, SHCMD("~/scripts/screenshot.sh") },
{ 0, XF86XK_PowerOff, spawn, SHCMD("~/scripts/poweroff.sh") },
{ 0, XF86XK_AudioMute, spawn, SHCMD("pulsemixer --toggle-mute") },
{ 0, XF86XK_AudioMute, spawn, SHCMD("~/scripts/mute.sh 1") },
{ 0, XF86XK_AudioRaiseVolume, spawn, SHCMD("amixer set Master 1%+") },
{ 0, XF86XK_AudioLowerVolume, spawn, SHCMD("amixer set Master 1%-") },
{ 0, XF86XK_AudioPrev, spawn, SHCMD("cmus-remote --prev") },
{ 0, XF86XK_AudioNext, spawn, SHCMD("cmus-remote --next") },
{ 0, XF86XK_AudioPause, spawn, SHCMD("cmus-remote --pause") },
{ 0, XF86XK_AudioPlay, spawn, SHCMD("cmus-remote --pause") },
{ 0, XF86XK_AudioStop, spawn, SHCMD("cmus-remote --stop") },
{ 0, XF86XK_AudioRewind, spawn, SHCMD("cmus-remote --seek -10") },
{ 0, XF86XK_AudioForward, spawn, SHCMD("cmus-remote --seek +10") },
{ 0, XF86XK_AudioPrev, spawn, SHCMD("~/scripts/playmus.sh 3") },
{ 0, XF86XK_AudioNext, spawn, SHCMD("~/scripts/playmus.sh 2") },
{ 0, XF86XK_AudioPause, spawn, SHCMD("~/scripts/playmus.sh 1") },
{ 0, XF86XK_AudioPlay, spawn, SHCMD("~/scripts/playmus.sh 1") },
{ 0, XF86XK_AudioStop, spawn, SHCMD("~/scripts/playmus.sh 1") },
{ 0, XF86XK_MonBrightnessUp, spawn, SHCMD("brightnessctl s +5%")},
{ 0, XF86XK_MonBrightnessDown, spawn, SHCMD("brightnessctl s 5%-")},
{ ControlMask, XK_space, spawn, SHCMD("dunstctl close") },
{ ControlMask|ShiftMask, XK_space, spawn, SHCMD("dunstctl close-all") },
{ ControlMask|ShiftMask, XK_space, spawn, SHCMD("dunstctl close") },
{ Mod1Mask|ShiftMask, NULL, spawn, SHCMD("~/scripts/switch-input.sh") },
{ MODKEY|ShiftMask, XK_space, togglealwaysontop, {0} },
{ MODKEY, XK_w, spawn, SHCMD("firefox") },
{ MODKEY, XK_w, spawn, SHCMD("librewolf") },
{ MODKEY, XK_c, spawn, SHCMD("~/scripts/showcal.sh") },
{ MODKEY|ShiftMask, XK_l, spawn, SHCMD("slock.sh") },
{ MODKEY|ShiftMask, XK_d, spawn, SHCMD("killall Discord") },
{ MODKEY|ShiftMask, XK_e, spawn, SHCMD("emacsclient --create-frame") },
{ MODKEY|ShiftMask, XK_m, spawn, SHCMD("~/scripts/autostart.sh") },
{ MODKEY|ShiftMask, XK_j, spawn, SHCMD("screenkey.sh") },
{ MODKEY|ShiftMask, XK_k, spawn, SHCMD("killall screenkey") },
{ MODKEY|ShiftMask, XK_s, spawn, SHCMD("~/scripts/screenshot.sh 1") },
{ MODKEY|ShiftMask, XK_n, spawn, SHCMD("~/scripts/network.sh") },
{ MODKEY|ShiftMask, XK_x, spawn, SHCMD("mixer.sh") },
{ MODKEY|ShiftMask, XK_t, spawn, SHCMD("telegram-desktop") },
{ MODKEY|ShiftMask, XK_a, spawn, SHCMD("~/scripts/start-jack.sh 1") },
{ MODKEY, XK_p, spawn, {.v = dmenucmd } },
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
{ MODKEY, XK_b, togglebar, {0} },
@@ -167,6 +170,7 @@ static Key keys[] = {
{ MODKEY, XK_o, setlayout, {.v = &layouts[4]} },
{ 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 } },


+ 2
- 0
drw.c View File

@@ -202,6 +202,8 @@ drw_clr_create(Drw *drw, Clr *dest, const char *clrname)
DefaultColormap(drw->dpy, drw->screen),
clrname, dest))
die("error, cannot allocate color '%s'", clrname);

dest->pixel |= 0xff << 24;
}

/* Wrapper to create color schemes. The caller has to call free(3) on the


BIN
drw.o View File


BIN
dwm View File


+ 68
- 0
dwm-actualfullscreen-20211013-cb3f58a.diff View File

@@ -0,0 +1,68 @@
From eea13010ffc3983392857ee1e3804e3aa1064d7a Mon Sep 17 00:00:00 2001
From: Soenke Lambert <s.lambert@mittwald.de>
Date: Wed, 13 Oct 2021 18:21:09 +0200
Subject: [PATCH] Fullscreen current window with [Alt]+[Shift]+[f]

This actually fullscreens a window, instead of just hiding the statusbar
and applying the monocle layout.
---
config.def.h | 1 +
dwm.1 | 3 +++
dwm.c | 8 ++++++++
3 files changed, 12 insertions(+)

diff --git a/config.def.h b/config.def.h
index 1c0b587..8cd3204 100644
--- a/config.def.h
+++ b/config.def.h
@@ -78,6 +78,7 @@ static 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 13b3729..a368d05 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 4465af1..c1b899a 100644
--- a/dwm.c
+++ b/dwm.c
@@ -211,6 +211,7 @@ static void tagmon(const Arg *arg);
static void tile(Monitor *);
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);
@@ -1719,6 +1720,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.30.2


+ 3
- 0
dwm.1 View File

@@ -131,6 +131,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


+ 191
- 0
dwm.1.orig View File

@@ -0,0 +1,191 @@
.TH DWM 1 dwm\-VERSION
.SH NAME
dwm \- dynamic window manager
.SH SYNOPSIS
.B dwm
.RB [ \-v ]
.SH DESCRIPTION
dwm is a dynamic window manager for X. It manages windows in tiled, monocle
and floating layouts. Either layout can be applied dynamically, optimising the
environment for the application in use and the task performed.
.P
In tiled layouts windows are managed in a master and stacking area. The master
area on the left contains one window by default, and the stacking area on the
right contains all other windows. The number of master area windows can be
adjusted from zero to an arbitrary number. In monocle layout all windows are
maximised to the screen size. In floating layout windows can be resized and
moved freely. Dialog windows are always managed floating, regardless of the
layout applied.
.P
Windows are grouped by tags. Each window can be tagged with one or multiple
tags. Selecting certain tags displays all windows with these tags.
.P
Each screen contains two small status bars.
.P
One bar displays all available tags, the layout, the title of the focused
window, and the text read from the root window name property, if the screen is
focused. A floating window is indicated with an empty square and a maximised
floating window is indicated with a filled square before the windows title. The
selected tags are indicated with a different color. The tags of the focused
window are indicated with a filled square in the top left corner. The tags
which are applied to one or more windows are indicated with an empty square in
the top left corner.
.P
Another bar contains a tab for each window of the current view and allows
navigation between windows, especially in the monocle mode. The different
display modes of this bar are described under the Mod1\-w Keybord command
section. When a single tag is selected, that tag is indicated in the left corner
of the tab bar.
.P
dwm draws a small border around windows to indicate the focus state.
.SH OPTIONS
.TP
.B \-v
prints version information to standard output, then exits.
.SH USAGE
.SS Status bar
.TP
.B X root window name
is read and displayed in the status text area. It can be set with the
.BR xsetroot (1)
command.
.TP
.B Button1
click on a tag label to display all windows with that tag, click on the layout
label toggles between tiled and floating layout, click on a window name in the
tab bar brings focus to that window.
.TP
.B Button3
click on a tag label adds/removes all windows with that tag to/from the view.
.TP
.B Mod1\-Button1
click on a tag label applies that tag to the focused window.
.TP
.B Mod1\-Button3
click on a tag label adds/removes that tag to/from the focused window.
.SS Keyboard commands
.TP
.B Mod1\-Shift\-Return
Start
.BR st(1).
.TP
.B Mod1\-p
Spawn
.BR dmenu(1)
for launching other programs.
.TP
.B Mod1\-,
Focus previous screen, if any.
.TP
.B Mod1\-.
Focus next screen, if any.
.TP
.B Mod1\-Shift\-,
Send focused window to previous screen, if any.
.TP
.B Mod1\-Shift\-.
Send focused window to next screen, if any.
.TP
.B Mod1\-b
Toggles bar on and off.
.TP
.B Mod1\-t
Sets tiled layout.
.TP
.B Mod1\-f
Sets floating layout.
.TP
.B Mod1\-m
Sets monocle layout.
.TP
.B Mod1\-space
Toggles between current and previous layout.
.TP
.B Mod1\-j
Focus next window.
.TP
.B Mod1\-k
Focus previous window.
.TP
.B Mod1\-i
Increase number of windows in master area.
.TP
.B Mod1\-d
Decrease number of windows in master area.
.TP
.B Mod1\-l
Increase master area size.
.TP
.B Mod1\-h
Decrease master area size.
.TP
.B Mod1\-w
Cycle over the tab bar display modes: never displayed, always displayed,
displayed only in monocle mode when the view contains than one window (auto
mode). Some display modes can be disabled in the configuration, config.h. In
the default configuration only "never" and "auto" display modes are enabled.
.TP
.B Mod1\-Return
Zooms/cycles focused window to/from master area (tiled layouts only).
.TP
.B Mod1\-Shift\-c
Close focused window.
.TP
.B Mod1\-Shift\-space
Toggle focused window between tiled and floating state.
.TP
.B Mod1\-Tab
Toggles to the previously selected tags.
.TP
.B Mod1\-Shift\-[1..n]
Apply nth tag to focused window.
.TP
.B Mod1\-Shift\-0
Apply all tags to focused window.
.TP
.B Mod1\-Control\-Shift\-[1..n]
Add/remove nth tag to/from focused window.
.TP
.B Mod1\-[1..n]
View all windows with nth tag.
.TP
.B Mod1\-0
View all windows with any tag.
.TP
.B Mod1\-Control\-[1..n]
Add/remove all windows with nth tag to/from the view.
.TP
.B Mod1\-Shift\-q
Quit dwm.
.SS Mouse commands
.TP
.B Mod1\-Button1
Move focused window while dragging. Tiled windows will be toggled to the floating state.
.TP
.B Mod1\-Button2
Toggles focused window between floating and tiled state.
.TP
.B Mod1\-Button3
Resize focused window while dragging. Tiled windows will be toggled to the floating state.
.SH CUSTOMIZATION
dwm is customized by creating a custom config.h and (re)compiling the source
code. This keeps it fast, secure and simple.
.SH SEE ALSO
.BR dmenu (1),
.BR st (1)
.SH ISSUES
Java applications which use the XToolkit/XAWT backend may draw grey windows
only. The XToolkit/XAWT backend breaks ICCCM-compliance in recent JDK 1.5 and early
JDK 1.6 versions, because it assumes a reparenting window manager. Possible workarounds
are using JDK 1.4 (which doesn't contain the XToolkit/XAWT backend) or setting the
environment variable
.BR AWT_TOOLKIT=MToolkit
(to use the older Motif backend instead) or running
.B xprop -root -f _NET_WM_NAME 32a -set _NET_WM_NAME LG3D
or
.B wmname LG3D
(to pretend that a non-reparenting window manager is running that the
XToolkit/XAWT backend can recognize) or when using OpenJDK setting the environment variable
.BR _JAVA_AWT_WM_NONREPARENTING=1 .
.SH BUGS
Send all bug reports with a patch to hackers@suckless.org.

+ 27
- 16
dwm.c View File

@@ -64,7 +64,7 @@
#define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad)

/* enums */
enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */
enum { CurNormal, CurResize, CurMove, CurHand, CurLast }; /* cursor */
enum { SchemeNorm, SchemeSel, SchemeDis}; /* color schemes */
enum { NetSupported, NetWMName, NetWMState, NetWMCheck,
NetWMFullscreen, NetActiveWindow, NetWMWindowType,
@@ -239,6 +239,7 @@ static void tagmon(const Arg *arg);
static void tile(Monitor *);
static void togglebar(const Arg *arg);
static void togglefloating(const Arg *arg);
static void togglefullscr(const Arg *arg);
static void togglealwaysontop(const Arg *arg);
static void toggletag(const Arg *arg);
static void toggleview(const Arg *arg);
@@ -1016,7 +1017,7 @@ drawbar(Monitor *m)
x += w;
}
w = blw = TEXTW(m->ltsymbol);
drw_setscheme(drw, scheme[SchemeNorm]);
drw_setscheme(drw, scheme[SchemeDis]);
x = drw_text(drw, x, y, w, th, lrpad / 2, m->ltsymbol, 0);

if ((w = mw - sw - stw - x) > th) {
@@ -1062,7 +1063,7 @@ drawtab(Monitor *m) {
int sorted_label_widths[MAXTABS];
int tot_width;
int maxsize = bh;
int x = 0;
int x = borderpx, y = borderpx;
int w = 0;

//view_info: indicate the tag which is displayed in the view
@@ -1114,7 +1115,7 @@ drawtab(Monitor *m) {
if(m->tab_widths[i] > maxsize) m->tab_widths[i] = maxsize;
w = m->tab_widths[i];
drw_setscheme(drw, (c == m->sel) ? scheme[SchemeSel] : scheme[SchemeNorm]);
drw_text(drw, x, 0, w, th, lrpad / 2, c->name, 0);
drw_text(drw, x, y, w, th - borderpx * 2, lrpad / 2, c->name, 0);
x += w;
++i;
}
@@ -1123,12 +1124,12 @@ drawtab(Monitor *m) {

/* cleans interspace between window names and current viewed tag label */
w = m->ww - view_info_w - x;
drw_text(drw, x, 0, w, th, lrpad / 2, "", 0);
drw_text(drw, x, y, w, th - borderpx * 2, lrpad / 2, "", 0);

/* view info */
x += w;
w = view_info_w;
drw_text(drw, x, 0, w, th, lrpad / 2, view_info, 0);
drw_text(drw, x, y, w, th - borderpx * 2, lrpad / 2, view_info, 0);

drw_map(drw, m->tabwin, 0, 0, m->ww, th);
}
@@ -2011,6 +2012,7 @@ setup(void)
cursor[CurNormal] = drw_cur_create(drw, XC_left_ptr);
cursor[CurResize] = drw_cur_create(drw, XC_sizing);
cursor[CurMove] = drw_cur_create(drw, XC_fleur);
cursor[CurHand] = drw_cur_create(drw, XC_hand2);
/* init appearance */
if (LENGTH(tags) > LENGTH(tagsel))
die("too few color schemes for the tags");
@@ -2225,6 +2227,13 @@ togglealwaysontop(const Arg *arg)
arrange(selmon);
}

void
togglefullscr(const Arg *arg)
{
if(selmon->sel)
setfullscreen(selmon->sel, !selmon->sel->isfullscreen);
}

void
toggletag(const Arg *arg)
{
@@ -2352,18 +2361,20 @@ updatebars(void)
};
XClassHint ch = {"dwm", "dwm"};
for (m = mons; m; m = m->next) {
if (!m->tabwin) {
m->tabwin = XCreateWindow(dpy, root, m->wx + sp, m->ty + (m->toptab ? vp : -vp), m->ww - 2 * sp, th, 0, DefaultDepth(dpy, screen),
CopyFromParent, DefaultVisual(dpy, screen),
CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa);
XDefineCursor(dpy, m->tabwin, cursor[CurNormal]->cursor);
XMapRaised(dpy, m->tabwin);
}
if (m->barwin)
continue;
m->barwin = XCreateWindow(dpy, root, m->wx + sp, m->by + vp, m->ww - 2 * sp, bh, 0, DefaultDepth(dpy, screen),
CopyFromParent, DefaultVisual(dpy, screen),
CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa);
XDefineCursor(dpy, m->barwin, cursor[CurNormal]->cursor);
XDefineCursor(dpy, m->barwin, cursor[CurHand]->cursor);
XMapRaised(dpy, m->barwin);
m->tabwin = XCreateWindow(dpy, root, m->wx, m->ty, m->ww, th, 0, DefaultDepth(dpy, screen),
CopyFromParent, DefaultVisual(dpy, screen),
CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa);
XDefineCursor(dpy, m->tabwin, cursor[CurNormal]->cursor);
XMapRaised(dpy, m->tabwin);
XSetClassHint(dpy, m->barwin, &ch);
}
}
@@ -2391,12 +2402,12 @@ updatebarpos(Monitor *m)

if(m->showtab == showtab_always
|| ((m->showtab == showtab_auto) && (nvis > 1) && (m->lt[m->sellt]->arrange == monocle))){
m->wh -= th;
m->ty = m->toptab ? m->wy : m->wy + m->wh;
m->wh = m->wh - vertpad - th;
m->ty = m->toptab ? m->wy : m->wy + m->wh + vertpad;
if ( m->toptab )
m->wy += th;
m->wy += th + vp;
} else {
m->ty = -th;
m->ty = -th - vp;
}
}



+ 35
- 26
dwm.c.orig View File

@@ -64,7 +64,7 @@
#define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad)

/* enums */
enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */
enum { CurNormal, CurResize, CurMove, CurHand, CurLast }; /* cursor */
enum { SchemeNorm, SchemeSel, SchemeDis}; /* color schemes */
enum { NetSupported, NetWMName, NetWMState, NetWMCheck,
NetWMFullscreen, NetActiveWindow, NetWMWindowType,
@@ -280,6 +280,8 @@ static int sw, sh; /* X display screen geometry width, height */
static int bh, blw = 0; /* bar geometry */
static int th = 0; /* tab bar geometry */
static int lrpad; /* sum of left and right padding for text */
static int vp; /* vertical padding for bar */
static int sp; /* side padding for bar */
static int (*xerrorxlib)(Display *, XErrorEvent *);
static unsigned int numlockmask = 0;
static void (*handler[LASTEvent]) (XEvent *) = {
@@ -718,7 +720,7 @@ configurenotify(XEvent *e)
//refreshing display of status bar. The tab bar is handled by the arrange()
//method, which is called below
for (m = mons; m; m = m->next){
XMoveResizeWindow(dpy, m->barwin, m->wx, m->by, m->ww, bh);
XMoveResizeWindow(dpy, m->barwin, m->wx + sp, m->by + vp, m->ww - 2 * sp, bh);
}
focus(NULL);
arrange(NULL);
@@ -911,12 +913,12 @@ drawstatusbar(Monitor *m, int bh, char* stext) {
text = p;

w += horizpadbar;
ret = x = m->ww - borderpx - w;
ret = x = m->ww - borderpx - w - 2 * sp;

drw_setscheme(drw, scheme[LENGTH(colors)]);
drw->scheme[ColFg] = scheme[SchemeNorm][ColFg];
drw->scheme[ColBg] = scheme[SchemeNorm][ColBg];
drw_rect(drw, x, borderpx, w, bh, 1, 1);
drw_rect(drw, x, borderpx, w - 2 * sp, bh, 1, 1);
x += horizpadbar / 2;

/* process status text */
@@ -1014,12 +1016,12 @@ drawbar(Monitor *m)
x += w;
}
w = blw = TEXTW(m->ltsymbol);
drw_setscheme(drw, scheme[SchemeNorm]);
drw_setscheme(drw, scheme[SchemeDis]);
x = drw_text(drw, x, y, w, th, lrpad / 2, m->ltsymbol, 0);

if ((w = mw - sw - stw - x) > th) {
drw_setscheme(drw, scheme[SchemeNorm]);
drw_rect(drw, x, y, w, th, 1, 1);
drw_rect(drw, x, y, w - 2 * sp, th, 1, 1);
}
drw_map(drw, m->barwin, 0, 0, m->ww, bh);
}
@@ -1060,7 +1062,7 @@ drawtab(Monitor *m) {
int sorted_label_widths[MAXTABS];
int tot_width;
int maxsize = bh;
int x = 0;
int x = borderpx, y = borderpx;
int w = 0;

//view_info: indicate the tag which is displayed in the view
@@ -1112,7 +1114,7 @@ drawtab(Monitor *m) {
if(m->tab_widths[i] > maxsize) m->tab_widths[i] = maxsize;
w = m->tab_widths[i];
drw_setscheme(drw, (c == m->sel) ? scheme[SchemeSel] : scheme[SchemeNorm]);
drw_text(drw, x, 0, w, th, lrpad / 2, c->name, 0);
drw_text(drw, x, y, w, th - borderpx * 2, lrpad / 2, c->name, 0);
x += w;
++i;
}
@@ -1121,12 +1123,12 @@ drawtab(Monitor *m) {

/* cleans interspace between window names and current viewed tag label */
w = m->ww - view_info_w - x;
drw_text(drw, x, 0, w, th, lrpad / 2, "", 0);
drw_text(drw, x, y, w, th - borderpx * 2, lrpad / 2, "", 0);

/* view info */
x += w;
w = view_info_w;
drw_text(drw, x, 0, w, th, lrpad / 2, view_info, 0);
drw_text(drw, x, y, w, th - borderpx * 2, lrpad / 2, view_info, 0);

drw_map(drw, m->tabwin, 0, 0, m->ww, th);
}
@@ -1987,6 +1989,9 @@ setup(void)
bh = user_bh ? user_bh : drw->fonts->h + 2 + vertpadbar + borderpx * 2;
th = bh;
updategeom();
sp = sidepad;
vp = (topbar == 1) ? vertpad : - vertpad;

/* init atoms */
utf8string = XInternAtom(dpy, "UTF8_STRING", False);
wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
@@ -2006,6 +2011,7 @@ setup(void)
cursor[CurNormal] = drw_cur_create(drw, XC_left_ptr);
cursor[CurResize] = drw_cur_create(drw, XC_sizing);
cursor[CurMove] = drw_cur_create(drw, XC_fleur);
cursor[CurHand] = drw_cur_create(drw, XC_hand2);
/* init appearance */
if (LENGTH(tags) > LENGTH(tagsel))
die("too few color schemes for the tags");
@@ -2020,6 +2026,7 @@ setup(void)
/* init bars */
updatebars();
updatestatus();
updatebarpos(selmon);
/* supporting window for NetWMCheck */
wmcheckwin = XCreateSimpleWindow(dpy, root, 0, 0, 1, 1, 0, 0, 0);
XChangeProperty(dpy, wmcheckwin, netatom[NetWMCheck], XA_WINDOW, 32,
@@ -2164,7 +2171,7 @@ togglebar(const Arg *arg)
{
selmon->showbar = selmon->pertag->showbars[selmon->pertag->curtag] = !selmon->showbar;
updatebarpos(selmon);
XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon->ww, bh);
XMoveResizeWindow(dpy, selmon->barwin, selmon->wx + sp, selmon->by + vp, selmon->ww - 2 * sp, bh);
arrange(selmon);
}

@@ -2346,18 +2353,20 @@ updatebars(void)
};
XClassHint ch = {"dwm", "dwm"};
for (m = mons; m; m = m->next) {
if (!m->tabwin) {
m->tabwin = XCreateWindow(dpy, root, m->wx + sp, m->ty + (m->toptab ? vp : -vp), m->ww - 2 * sp, th, 0, DefaultDepth(dpy, screen),
CopyFromParent, DefaultVisual(dpy, screen),
CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa);
XDefineCursor(dpy, m->tabwin, cursor[CurNormal]->cursor);
XMapRaised(dpy, m->tabwin);
}
if (m->barwin)
continue;
m->barwin = XCreateWindow(dpy, root, m->wx, m->by, m->ww, bh, 0, DefaultDepth(dpy, screen),
m->barwin = XCreateWindow(dpy, root, m->wx + sp, m->by + vp, m->ww - 2 * sp, bh, 0, DefaultDepth(dpy, screen),
CopyFromParent, DefaultVisual(dpy, screen),
CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa);
XDefineCursor(dpy, m->barwin, cursor[CurNormal]->cursor);
XDefineCursor(dpy, m->barwin, cursor[CurHand]->cursor);
XMapRaised(dpy, m->barwin);
m->tabwin = XCreateWindow(dpy, root, m->wx, m->ty, m->ww, th, 0, DefaultDepth(dpy, screen),
CopyFromParent, DefaultVisual(dpy, screen),
CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa);
XDefineCursor(dpy, m->tabwin, cursor[CurNormal]->cursor);
XMapRaised(dpy, m->tabwin);
XSetClassHint(dpy, m->barwin, &ch);
}
}
@@ -2371,12 +2380,12 @@ updatebarpos(Monitor *m)
m->wy = m->my;
m->wh = m->mh;
if (m->showbar) {
m->wh -= bh;
m->by = m->topbar ? m->wy : m->wy + m->wh;
m->wh = m->wh - vertpad - bh;
m->by = m->topbar ? m->wy : m->wy + m->wh + vertpad;
if ( m->topbar )
m->wy += bh;
m->wy += bh + vp;
} else {
m->by = -bh;
m->by = -bh - vp;
}

for(c = m->clients; c; c = c->next){
@@ -2385,12 +2394,12 @@ updatebarpos(Monitor *m)

if(m->showtab == showtab_always
|| ((m->showtab == showtab_auto) && (nvis > 1) && (m->lt[m->sellt]->arrange == monocle))){
m->wh -= th;
m->ty = m->toptab ? m->wy : m->wy + m->wh;
m->wh = m->wh - vertpad - th;
m->ty = m->toptab ? m->wy : m->wy + m->wh + vertpad;
if ( m->toptab )
m->wy += th;
m->wy += th + vp;
} else {
m->ty = -th;
m->ty = -th - vp;
}
}



+ 10
- 51
dwm.c.rej View File

@@ -1,51 +1,10 @@
--- dwm.c 2019-12-10 17:24:37.945708263 +1300
+++ dwm.c 2019-12-10 17:41:46.192676099 +1300
@@ -569,7 +571,7 @@ configurenotify(XEvent *e)
for (c = m->clients; c; c = c->next)
if (c->isfullscreen)
resizeclient(c, m->mx, m->my, m->mw, m->mh);
- XMoveResizeWindow(dpy, m->barwin, m->wx, m->by, m->ww, bh);
+ XMoveResizeWindow(dpy, m->barwin, m->wx + sp, m->by + vp, m->ww - 2 * sp, bh);
}
focus(NULL);
arrange(NULL);
@@ -707,7 +709,7 @@ drawbar(Monitor *m)
if (m == selmon) { /* status is only drawn on selected monitor */
drw_setscheme(drw, scheme[SchemeNorm]);
sw = TEXTW(stext) - lrpad + 2; /* 2px right padding */
- drw_text(drw, m->ww - sw, 0, sw, bh, 0, stext, 0);
+ drw_text(drw, m->ww - sw - 2 * sp, 0, sw, bh, 0, stext, 0);
}
for (c = m->clients; c; c = c->next) {
@@ -733,12 +735,12 @@ drawbar(Monitor *m)
if ((w = m->ww - sw - x) > bh) {
if (m->sel) {
drw_setscheme(drw, scheme[m == selmon ? SchemeSel : SchemeNorm]);
- drw_text(drw, x, 0, w, bh, lrpad / 2, m->sel->name, 0);
+ drw_text(drw, x, 0, w - 2 * sp, bh, lrpad / 2, m->sel->name, 0);
if (m->sel->isfloating)
drw_rect(drw, x + boxs, boxs, boxw, boxw, m->sel->isfixed, 0);
} else {
drw_setscheme(drw, scheme[SchemeNorm]);
- drw_rect(drw, x, 0, w, bh, 1, 1);
+ drw_rect(drw, x, 0, w - 2 * sp, bh, 1, 1);
}
}
drw_map(drw, m->barwin, 0, 0, m->ww, bh);
@@ -1832,11 +1838,11 @@ updatebarpos(Monitor *m)
m->wy = m->my;
m->wh = m->mh;
if (m->showbar) {
- m->wh -= bh;
- m->by = m->topbar ? m->wy : m->wy + m->wh;
- m->wy = m->topbar ? m->wy + bh : m->wy;
+ m->wh = m->wh - vertpad - bh;
+ m->by = m->topbar ? m->wy : m->wy + m->wh + vertpad;
+ m->wy = m->topbar ? m->wy + bh + vp : m->wy;
} else
- m->by = -bh;
+ m->by = -bh - vp;
}
void
--- dwm.c
+++ dwm.c
@@ -211,6 +211,7 @@ static void tagmon(const Arg *arg);
static void tile(Monitor *);
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);

BIN
dwm.o View File


BIN
util.o View File


Loading…
Cancel
Save